diff --git a/Cargo.lock b/Cargo.lock index a3784d9762d8df41af068e955587ac6cde999eef..9c1c833a9786d84349a41d92b0c1c5e70a5caf86 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -4,9 +4,9 @@ version = 3 [[package]] name = "ab_glyph" -version = "0.2.23" +version = "0.2.24" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "80179d7dd5d7e8c285d67c4a1e652972a92de7475beddfb92028c76463b13225" +checksum = "8e08104bebc65a46f8bc7aa733d39ea6874bfa7156f41a46b805785e3af1587d" dependencies = [ "ab_glyph_rasterizer", "owned_ttf_parser", @@ -35,9 +35,9 @@ checksum = "f26201604c87b1e01bd3d98f8d5d9a8fcbb815e8cedb41ffccbeb4bf593a35fe" [[package]] name = "ahash" -version = "0.8.6" +version = "0.8.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "91429305e9f0a25f6205c5b8e0d2db09e0708a7a6df0f42212bb56c32c8ac97a" +checksum = "e89da841a80418a9b391ebaea17f5c112ffaaa96f621d2c285b5174da76b9011" dependencies = [ "cfg-if", "once_cell", @@ -47,9 +47,9 @@ dependencies = [ [[package]] name = "aho-corasick" -version = "1.1.2" +version = "1.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b2969dcb958b36655471fc61f7e416fa76033bdd4bfed0678d8fee1e2d07a1f0" +checksum = "8e60d3430d3a69478ad0993f19238d2df97c507009a52b3c10addcd7f6bcb916" dependencies = [ "memchr", ] @@ -74,7 +74,7 @@ dependencies = [ "async-trait", "chrono", "futures", - "hashbrown 0.14.2", + "hashbrown 0.14.3", "iced", "iced_aw", "image", @@ -130,15 +130,15 @@ dependencies = [ [[package]] name = "anstyle" -version = "1.0.4" +version = "1.0.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7079075b41f533b8c61d2a4d073c4676e1f8b249ff94a393b0595db304e0dd87" +checksum = "8901269c6307e8d93993578286ac0edf7f195079ffff5ebdeea6a59ffb7e36bc" [[package]] name = "anyhow" -version = "1.0.75" +version = "1.0.81" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a4668cab20f66d8d020e1fbc0ebe47217433c1b6c8f2040faf858554e394ace6" +checksum = "0952808a6c2afd1aa8947271f3a60f1a6763c7b912d210184c5149b5cf147247" [[package]] name = "approx" @@ -172,63 +172,46 @@ dependencies = [ [[package]] name = "async-broadcast" -version = "0.5.1" +version = "0.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7c48ccdbf6ca6b121e0f586cbc0e73ae440e56c67c30fa0873b4e110d9c26d2b" +checksum = "258b52a1aa741b9f09783b2d86cf0aeeb617bbf847f6933340a39644227acbdb" dependencies = [ - "event-listener 2.5.3", + "event-listener 5.3.0", + "event-listener-strategy 0.5.1", "futures-core", + "pin-project-lite", ] [[package]] name = "async-channel" -version = "1.9.0" +version = "2.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "81953c529336010edd6d8e358f886d9581267795c61b19475b71314bffa46d35" +checksum = "f28243a43d821d11341ab73c80bed182dc015c514b951616cf79bd4af39af0c3" dependencies = [ "concurrent-queue", - "event-listener 2.5.3", + "event-listener 5.3.0", + "event-listener-strategy 0.5.1", "futures-core", + "pin-project-lite", ] [[package]] name = "async-io" -version = "1.13.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0fc5b45d93ef0529756f812ca52e44c221b35341892d3dcc34132ac02f3dd2af" -dependencies = [ - "async-lock 2.8.0", - "autocfg", - "cfg-if", - "concurrent-queue", - "futures-lite 1.13.0", - "log", - "parking", - "polling 2.8.0", - "rustix 0.37.27", - "slab", - "socket2 0.4.10", - "waker-fn", -] - -[[package]] -name = "async-io" -version = "2.2.0" +version = "2.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "41ed9d5715c2d329bf1b4da8d60455b99b187f27ba726df2883799af9af60997" +checksum = "dcccb0f599cfa2f8ace422d3555572f47424da5648a4382a9dd0310ff8210884" dependencies = [ - "async-lock 3.0.0", + "async-lock 3.3.0", "cfg-if", "concurrent-queue", "futures-io", - "futures-lite 2.0.1", + "futures-lite", "parking", - "polling 3.3.0", - "rustix 0.38.21", + "polling", + "rustix", "slab", "tracing", - "waker-fn", - "windows-sys 0.48.0", + "windows-sys 0.52.0", ] [[package]] @@ -242,41 +225,44 @@ dependencies = [ [[package]] name = "async-lock" -version = "3.0.0" +version = "3.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "45e900cdcd39bb94a14487d3f7ef92ca222162e6c7c3fe7cb3550ea75fb486ed" +checksum = "d034b430882f8381900d3fe6f0aaa3ad94f2cb4ac519b429692a1bc2dda4ae7b" dependencies = [ - "event-listener 3.0.1", - "event-listener-strategy", + "event-listener 4.0.3", + "event-listener-strategy 0.4.0", "pin-project-lite", ] [[package]] name = "async-process" -version = "1.8.1" +version = "2.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ea6438ba0a08d81529c69b36700fa2f95837bfe3e776ab39cde9c14d9149da88" +checksum = "d999d925640d51b662b7b4e404224dd81de70f4aa4a199383c2c5e5b86885fa3" dependencies = [ - "async-io 1.13.0", - "async-lock 2.8.0", + "async-channel", + "async-io", + "async-lock 3.3.0", "async-signal", + "async-task", "blocking", "cfg-if", - "event-listener 3.0.1", - "futures-lite 1.13.0", - "rustix 0.38.21", - "windows-sys 0.48.0", + "event-listener 5.3.0", + "futures-lite", + "rustix", + "tracing", + "windows-sys 0.52.0", ] [[package]] name = "async-recursion" -version = "1.0.5" +version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5fd55a5ba1179988837d24ab4c7cc8ed6efdeff578ede0416b4225a5fca35bd0" +checksum = "30c5ef0ede93efbf733c1a727f3b6b5a1060bbedd5600183e66f6e4be4af0ec5" dependencies = [ "proc-macro2", "quote", - "syn 2.0.39", + "syn 2.0.58", ] [[package]] @@ -285,13 +271,13 @@ version = "0.2.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9e47d90f65a225c4527103a8d747001fc56e375203592b25ad103e1ca13124c5" dependencies = [ - "async-io 2.2.0", + "async-io", "async-lock 2.8.0", "atomic-waker", "cfg-if", "futures-core", "futures-io", - "rustix 0.38.21", + "rustix", "signal-hook-registry", "slab", "windows-sys 0.48.0", @@ -299,19 +285,19 @@ dependencies = [ [[package]] name = "async-task" -version = "4.5.0" +version = "4.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b4eb2cdb97421e01129ccb49169d8279ed21e829929144f4a22a6e54ac549ca1" +checksum = "fbb36e985947064623dbd357f727af08ffd077f93d696782f3c56365fa2e2799" [[package]] name = "async-trait" -version = "0.1.74" +version = "0.1.79" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a66537f1bb974b254c98ed142ff995236e81b9d0fe4db0575f46612cb15eb0f9" +checksum = "a507401cad91ec6a857ed5513a2073c82a9b9048762b885bb98655b306964681" dependencies = [ "proc-macro2", "quote", - "syn 2.0.39", + "syn 2.0.58", ] [[package]] @@ -322,25 +308,26 @@ checksum = "1505bd5d3d116872e7271a6d4e16d81d0c8570876c8de68093a09ac269d8aac0" [[package]] name = "autocfg" -version = "1.1.0" +version = "1.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d468802bab17cbc0cc575e9b053f41e72aa36bfa6b7f55e3529ffa43161b97fa" +checksum = "f1fdabc7756949593fe60f30ec81974b613357de856987752631dea1e3394c80" [[package]] name = "axum" -version = "0.6.20" +version = "0.7.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3b829e4e32b91e643de6eafe82b1d90675f5874230191a4ffbc1b336dec4d6bf" +checksum = "3a6c9af12842a67734c9a2e355436e5d03b22383ed60cf13cd0c18fbfe3dcbcf" dependencies = [ "async-trait", "axum-core", "axum-macros", - "bitflags 1.3.2", "bytes", "futures-util", "http", "http-body", + "http-body-util", "hyper", + "hyper-util", "itoa", "matchit", "memchr", @@ -351,7 +338,7 @@ dependencies = [ "serde", "serde_json", "serde_path_to_error", - "sync_wrapper", + "sync_wrapper 1.0.1", "tokio", "tower", "tower-layer", @@ -360,38 +347,41 @@ dependencies = [ [[package]] name = "axum-core" -version = "0.3.4" +version = "0.4.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "759fa577a247914fd3f7f76d62972792636412fbfd634cd452f6a385a74d2d2c" +checksum = "a15c63fd72d41492dc4f497196f5da1fb04fb7529e631d73630d1b491e47a2e3" dependencies = [ "async-trait", "bytes", "futures-util", "http", "http-body", + "http-body-util", "mime", + "pin-project-lite", "rustversion", + "sync_wrapper 0.1.2", "tower-layer", "tower-service", ] [[package]] name = "axum-macros" -version = "0.3.8" +version = "0.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cdca6a10ecad987bda04e95606ef85a5417dcaac1a78455242d72e031e2b6b62" +checksum = "00c055ee2d014ae5981ce1016374e8213682aa14d9bf40e48ab48b5f3ef20eaa" dependencies = [ - "heck", + "heck 0.4.1", "proc-macro2", "quote", - "syn 2.0.39", + "syn 2.0.58", ] [[package]] name = "backtrace" -version = "0.3.69" +version = "0.3.71" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2089b7e3f35b9dd2d0ed921ead4f6d318c27680d4a5bd167b3ee120edb105837" +checksum = "26b05800d2e817c8b3b4b54abd461726265fa9789ae34330622f2db9ee696f9d" dependencies = [ "addr2line", "cc", @@ -404,9 +394,9 @@ dependencies = [ [[package]] name = "base64" -version = "0.21.5" +version = "0.22.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "35636a1494ede3b646cc98f74f8e62c773a38a659ebc777a2cf26b9b74171df9" +checksum = "9475866fec1451be56a3c2400fd081ff546538961565ccb5b7142cbd22bc7a51" [[package]] name = "bit-set" @@ -437,9 +427,9 @@ checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a" [[package]] name = "bitflags" -version = "2.4.1" +version = "2.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "327762f6e5a765692301e5bb513e0d9fef63be86bbc14528052b1cd3e6f03e07" +checksum = "cf4b9d6a944f767f8e5e0db018570623c85f3d925ac718db4e06d0187adb21c1" [[package]] name = "block" @@ -477,44 +467,44 @@ dependencies = [ [[package]] name = "blocking" -version = "1.4.1" +version = "1.5.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8c36a4d0d48574b3dd360b4b7d95cc651d2b6557b6402848a27d4b228a473e2a" +checksum = "6a37913e8dc4ddcc604f0c6d3bf2887c995153af3611de9e23c352b44c1b9118" dependencies = [ "async-channel", - "async-lock 2.8.0", + "async-lock 3.3.0", "async-task", - "fastrand 2.0.1", + "fastrand 2.0.2", "futures-io", - "futures-lite 1.13.0", + "futures-lite", "piper", "tracing", ] [[package]] name = "bumpalo" -version = "3.14.0" +version = "3.16.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7f30e7476521f6f8af1a1c4c0b8cc94f0bee37d91763d0ca2665f299b6cd8aec" +checksum = "79296716171880943b8470b5f8d03aa55eb2e645a4874bdbb28adb49162e012c" [[package]] name = "bytemuck" -version = "1.14.0" +version = "1.15.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "374d28ec25809ee0e23827c2ab573d729e293f281dfe393500e7ad618baa61c6" +checksum = "5d6d68c57235a3a081186990eca2867354726650f42f7516ca50c28d6281fd15" dependencies = [ "bytemuck_derive", ] [[package]] name = "bytemuck_derive" -version = "1.5.0" +version = "1.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "965ab7eb5f8f97d2a083c799f3a1b994fc397b2fe2da5d1da1626ce15a39f2b1" +checksum = "4da9a32f3fed317401fa3c862968128267c3106685286e15d5aaa3d7389c2f60" dependencies = [ "proc-macro2", "quote", - "syn 2.0.39", + "syn 2.0.58", ] [[package]] @@ -525,9 +515,9 @@ checksum = "1fd0f2584146f6f2ef48085050886acf353beff7305ebd1ae69500e27c67f64b" [[package]] name = "bytes" -version = "1.5.0" +version = "1.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a2bd12c1caf447e69cd4528f47f94d203fd2582878ecb9e9465484c4148a8223" +checksum = "514de17de45fdb8dc022b1a7975556c53c86f9f0aa5f534b98977b171857c2c9" [[package]] name = "calloop" @@ -543,11 +533,37 @@ dependencies = [ "vec_map", ] +[[package]] +name = "calloop" +version = "0.12.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fba7adb4dd5aa98e5553510223000e7148f621165ec5f9acd7113f6ca4995298" +dependencies = [ + "bitflags 2.5.0", + "log", + "polling", + "rustix", + "slab", + "thiserror", +] + +[[package]] +name = "calloop-wayland-source" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0f0ea9b9476c7fad82841a8dbb380e2eae480c21910feba80725b46931ed8f02" +dependencies = [ + "calloop 0.12.4", + "rustix", + "wayland-backend 0.3.3", + "wayland-client 0.31.2", +] + [[package]] name = "cc" -version = "1.0.83" +version = "1.0.92" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f1174fb0b6ec23863f8b971027804a42614e347eafb0a95bf0b12cdae21fc4d0" +checksum = "2678b2e3449475e95b0aa6f9b506a28e61b3dc8996592b983695e8ebb58a8b41" dependencies = [ "jobserver", "libc", @@ -567,21 +583,21 @@ checksum = "fd16c4719339c4530435d38e511904438d07cce7950afa3718a84ac36c10e89e" [[package]] name = "chrono" -version = "0.4.31" +version = "0.4.37" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7f2c685bad3eb3d45a01354cedb7d5faa66194d1d58ba6e267a8de788f79db38" +checksum = "8a0d04d43504c61aa6c7531f1871dd0d418d91130162063b789da00fd7057a5e" dependencies = [ "android-tzdata", "iana-time-zone", "num-traits", - "windows-targets 0.48.5", + "windows-targets 0.52.4", ] [[package]] name = "clap" -version = "4.4.7" +version = "4.5.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ac495e00dcec98c83465d5ad66c5c4fabd652fd6686e7c6269b117e729a6f17b" +checksum = "90bc066a67923782aa8515dbaea16946c5bcc5addbd668bb80af688e53e548a0" dependencies = [ "clap_builder", "clap_derive", @@ -589,9 +605,9 @@ dependencies = [ [[package]] name = "clap_builder" -version = "4.4.7" +version = "4.5.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c77ed9a32a62e6ca27175d00d29d05ca32e396ea1eb5fb01d8256b669cec7663" +checksum = "ae129e2e766ae0ec03484e609954119f123cc1fe650337e155d03b022f24f7b4" dependencies = [ "anstyle", "clap_lex", @@ -600,30 +616,30 @@ dependencies = [ [[package]] name = "clap_complete" -version = "4.4.4" +version = "4.5.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bffe91f06a11b4b9420f62103854e90867812cd5d01557f853c5ee8e791b12ae" +checksum = "885e4d7d5af40bfb99ae6f9433e292feac98d452dcb3ec3d25dfe7552b77da8c" dependencies = [ "clap", ] [[package]] name = "clap_derive" -version = "4.4.7" +version = "4.5.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cf9804afaaf59a91e75b022a30fb7229a7901f60c755489cc61c9b423b836442" +checksum = "528131438037fd55894f62d6e9f068b8f45ac57ffa77517819645d10aed04f64" dependencies = [ - "heck", + "heck 0.5.0", "proc-macro2", "quote", - "syn 2.0.39", + "syn 2.0.58", ] [[package]] name = "clap_lex" -version = "0.6.0" +version = "0.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "702fc72eb24e5a1e48ce58027a675bc24edd52096d5397d4aea7c6dd9eca0bd1" +checksum = "98cc8fbded0c607b7ba9dd60cd98df59af97e84d24e49c8557331cfc26d301ce" [[package]] name = "clipboard-win" @@ -649,21 +665,21 @@ dependencies = [ [[package]] name = "clipboard_wayland" -version = "0.2.0" +version = "0.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6f6364a9f7a66f2ac1a1a098aa1c7f6b686f2496c6ac5e5c0d773445df912747" +checksum = "003f886bc4e2987729d10c1db3424e7f80809f3fc22dbc16c685738887cb37b8" dependencies = [ "smithay-clipboard", ] [[package]] name = "clipboard_x11" -version = "0.4.0" +version = "0.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "983a7010836ecd04dde2c6d27a0cb56ec5d21572177e782bdcb24a600124e921" +checksum = "4274ea815e013e0f9f04a2633423e14194e408a0576c943ce3d14ca56c50031c" dependencies = [ "thiserror", - "x11rb 0.9.0", + "x11rb 0.13.0", ] [[package]] @@ -720,18 +736,18 @@ checksum = "bf43edc576402991846b093a7ca18a3477e0ef9c588cde84964b5d3e43016642" [[package]] name = "concurrent-queue" -version = "2.3.0" +version = "2.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f057a694a54f12365049b0958a1685bb52d567f5593b355fbf685838e873d400" +checksum = "d16048cd947b08fa32c24458a22f5dc5e835264f689f4f5653210c69fd107363" dependencies = [ "crossbeam-utils", ] [[package]] name = "core-foundation" -version = "0.9.3" +version = "0.9.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "194a7a9e6de53fa55116934067c844d9d749312f75c6f6d0980e8c252f8c2146" +checksum = "91e195e091a93c46f7102ec7818a2aa394e1e1771c3ab4825963fa03e45afb8f" dependencies = [ "core-foundation-sys", "libc", @@ -739,9 +755,9 @@ dependencies = [ [[package]] name = "core-foundation-sys" -version = "0.8.4" +version = "0.8.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e496a50fda8aacccc86d7529e2c1e0892dbd0f898a6b5645b5561b89c3210efa" +checksum = "06ea2b9bc92be3c2baa9334a323ebca2d6f074ff852cd1d7b11064035cd3868f" [[package]] name = "core-graphics" @@ -758,9 +774,9 @@ dependencies = [ [[package]] name = "core-graphics-types" -version = "0.1.2" +version = "0.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2bb142d41022986c1d8ff29103a1411c8a3dfad3552f87a4f8dc50d61d4f4e33" +checksum = "45390e6114f68f718cc7a830514a96f903cccd70d02a8f6d9f643ac4ba45afaf" dependencies = [ "bitflags 1.3.2", "core-foundation", @@ -789,54 +805,46 @@ dependencies = [ [[package]] name = "cpufeatures" -version = "0.2.11" +version = "0.2.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ce420fe07aecd3e67c5f910618fe65e94158f6dcc0adf44e00d69ce2bdfe0fd0" +checksum = "53fe5e26ff1b7aef8bca9c6080520cfb8d9333c7568e1829cef191a9723e5504" dependencies = [ "libc", ] [[package]] name = "crc32fast" -version = "1.3.2" +version = "1.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b540bd8bc810d3885c6ea91e2018302f68baba2129ab3e88f32389ee9370880d" +checksum = "b3855a8a784b474f333699ef2bbca9db2c4a1f6d9088a90a2d25b1eb53111eaa" dependencies = [ "cfg-if", ] [[package]] name = "crossbeam-deque" -version = "0.8.3" +version = "0.8.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ce6fd6f855243022dcecf8702fef0c297d4338e226845fe067f6341ad9fa0cef" +checksum = "613f8cc01fe9cf1a3eb3d7f488fd2fa8388403e97039e2f73692932e291a770d" dependencies = [ - "cfg-if", "crossbeam-epoch", "crossbeam-utils", ] [[package]] name = "crossbeam-epoch" -version = "0.9.15" +version = "0.9.18" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ae211234986c545741a7dc064309f67ee1e5ad243d0e48335adc0484d960bcc7" +checksum = "5b82ac4a3c2ca9c3460964f020e1402edd5753411d7737aa39c3714ad1b5420e" dependencies = [ - "autocfg", - "cfg-if", "crossbeam-utils", - "memoffset 0.9.0", - "scopeguard", ] [[package]] name = "crossbeam-utils" -version = "0.8.16" +version = "0.8.19" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5a22b2d63d4d1dc0b7f1b6b2747dd0088008a9be28b6ddf0b1e7d335e3037294" -dependencies = [ - "cfg-if", -] +checksum = "248e3bacc7dc6baa3b21e405ee045c3047101a49145e7e9eca583ab4c2ca5345" [[package]] name = "crunchy" @@ -854,6 +862,12 @@ dependencies = [ "typenum", ] +[[package]] +name = "cursor-icon" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "96a6ac251f4a2aca6b3f91340350eab87ae57c3f127ffeb585e92bd336717991" + [[package]] name = "d3d12" version = "0.6.0" @@ -919,35 +933,32 @@ version = "0.5.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "330c60081dcc4c72131f8eb70510f1ac07223e5d4163db481a04a0befcffa412" dependencies = [ - "libloading 0.8.1", + "libloading 0.8.3", ] [[package]] name = "downcast-rs" -version = "1.2.0" +version = "1.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9ea835d29036a4087793836fa931b08837ad5e957da9e23886b29586fb9b6650" +checksum = "75b325c5dbd37f80359721ad39aca5a29fb04c89279657cffdda8736d0c0b9d2" [[package]] name = "either" -version = "1.9.0" +version = "1.10.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a26ae43d7bcc3b814de94796a5e736d4029efb0ee900c12e2d54c993ad1a1e07" +checksum = "11157ac094ffbdde99aa67b23417ebdd801842852b500e395a45a9c0aac03e4a" [[package]] -name = "encoding_rs" -version = "0.8.33" +name = "endi" +version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7268b386296a025e474d5140678f75d6de9493ae55a5d709eeb9dd08149945e1" -dependencies = [ - "cfg-if", -] +checksum = "a3d8a32ae18130a3c84dd492d4215c3d913c3b07c6b63c2eb3eb7ff1101ab7bf" [[package]] name = "enumflags2" -version = "0.7.8" +version = "0.7.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5998b4f30320c9d93aed72f63af821bfdac50465b75428fce77b48ec482c3939" +checksum = "3278c9d5fb675e0a51dabcf4c0d355f692b064171535ba72361be1528a9d8e8d" dependencies = [ "enumflags2_derive", "serde", @@ -955,13 +966,13 @@ dependencies = [ [[package]] name = "enumflags2_derive" -version = "0.7.8" +version = "0.7.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f95e2801cd355d4a1a3e3953ce6ee5ae9603a5c833455343a8bfe3f44d418246" +checksum = "5c785274071b1b420972453b306eeca06acf4633829db4223b58a2a8c5953bc4" dependencies = [ "proc-macro2", "quote", - "syn 2.0.39", + "syn 2.0.58", ] [[package]] @@ -972,12 +983,12 @@ checksum = "5443807d6dff69373d433ab9ef5378ad8df50ca6298caf15de6e52e24aaf54d5" [[package]] name = "errno" -version = "0.3.5" +version = "0.3.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ac3e13f66a2f95e32a39eaa81f6b95d42878ca0e1db0c7543723dfe12557e860" +checksum = "a258e46cdc063eb8519c00b9fc845fc47bcfca4130e2f08e88665ceda8474245" dependencies = [ "libc", - "windows-sys 0.48.0", + "windows-sys 0.52.0", ] [[package]] @@ -992,9 +1003,9 @@ dependencies = [ [[package]] name = "etagere" -version = "0.2.9" +version = "0.2.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5bf70b9ea3a235a7432b4f481854815e2d4fb2fe824c1f5fb09b8985dd06b3e9" +checksum = "306960881d6c46bd0dd6b7f07442a441418c08d0d3e63d8d080b0f64c6343e4e" dependencies = [ "euclid", "svg_fmt", @@ -1017,9 +1028,20 @@ checksum = "0206175f82b8d6bf6652ff7d71a1e27fd2e4efde587fd368662814d6ec1d9ce0" [[package]] name = "event-listener" -version = "3.0.1" +version = "4.0.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "67b215c49b2b248c855fb73579eb1f4f26c38ffdc12973e20e07b91d78d5646e" +dependencies = [ + "concurrent-queue", + "parking", + "pin-project-lite", +] + +[[package]] +name = "event-listener" +version = "5.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "01cec0252c2afff729ee6f00e903d479fba81784c8e2bd77447673471fdfaea1" +checksum = "6d9944b8ca13534cdfb2800775f8dd4902ff3fc75a50101466decadfdf322a24" dependencies = [ "concurrent-queue", "parking", @@ -1028,19 +1050,29 @@ dependencies = [ [[package]] name = "event-listener-strategy" -version = "0.3.0" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "958e4d70b6d5e81971bebec42271ec641e7ff4e170a6fa605f2b8a8b65cb97d3" +dependencies = [ + "event-listener 4.0.3", + "pin-project-lite", +] + +[[package]] +name = "event-listener-strategy" +version = "0.5.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d96b852f1345da36d551b9473fa1e2b1eb5c5195585c6c018118bc92a8d91160" +checksum = "332f51cb23d20b0de8458b86580878211da09bcd4503cb579c225b3d124cabb3" dependencies = [ - "event-listener 3.0.1", + "event-listener 5.3.0", "pin-project-lite", ] [[package]] name = "exr" -version = "1.6.4" +version = "1.72.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "279d3efcc55e19917fff7ab3ddd6c14afb6a90881a0078465196fe2f99d08c56" +checksum = "887d93f60543e9a9362ef8a21beedd0a833c5d9610e18c67abe15a5963dcb1a4" dependencies = [ "bit_field", "flume", @@ -1069,15 +1101,15 @@ dependencies = [ [[package]] name = "fastrand" -version = "2.0.1" +version = "2.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "25cbce373ec4653f1a01a31e8a5e5ec0c622dc27ff9c4e6606eefef5cbbed4a5" +checksum = "658bd65b1cf4c852a3cc96f18a8ce7b5640f6b703f905c7d74532294c2a63984" [[package]] name = "fdeflate" -version = "0.3.1" +version = "0.3.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "64d6dafc854908ff5da46ff3f8f473c6984119a2876a383a860246dd7841a868" +checksum = "4f9bfee30e4dedf0ab8b422f03af778d9612b63f502710fc500a334ebe2de645" dependencies = [ "simd-adler32", ] @@ -1094,14 +1126,10 @@ dependencies = [ [[package]] name = "flume" -version = "0.10.14" +version = "0.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1657b4441c3403d9f7b3409e47575237dac27b1b5726df654a6ecbf92f0f7577" +checksum = "55ac459de2512911e4b674ce33cf20befaba382d05b62b008afc1c8b57cbf181" dependencies = [ - "futures-core", - "futures-sink", - "nanorand", - "pin-project", "spin", ] @@ -1111,6 +1139,15 @@ version = "1.0.7" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1" +[[package]] +name = "font-types" +version = "0.5.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bd6784a76a9c2b136ea3b8462391e9328252e938eb706eb44d752723b4c3a533" +dependencies = [ + "bytemuck", +] + [[package]] name = "fontdb" version = "0.14.1" @@ -1141,18 +1178,18 @@ checksum = "00b0228411908ca8685dba7fc2cdd70ec9990a6e753e89b6ac91a84c40fbaf4b" [[package]] name = "form_urlencoded" -version = "1.2.0" +version = "1.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a62bc1cf6f830c2ec14a513a9fb124d0a213a629668a4186f329db21fe045652" +checksum = "e13624c2627564efccf4934284bdd98cbaa14e79b0b5a141218e507b3a823456" dependencies = [ "percent-encoding", ] [[package]] name = "futures" -version = "0.3.29" +version = "0.3.30" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "da0290714b38af9b4a7b094b8a37086d1b4e61f2df9122c3cad2577669145335" +checksum = "645c6916888f6cb6350d2550b80fb63e734897a8498abe35cfb732b6487804b0" dependencies = [ "futures-channel", "futures-core", @@ -1165,9 +1202,9 @@ dependencies = [ [[package]] name = "futures-channel" -version = "0.3.29" +version = "0.3.30" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ff4dd66668b557604244583e3e1e1eada8c5c2e96a6d0d6653ede395b78bbacb" +checksum = "eac8f7d7865dcb88bd4373ab671c8cf4508703796caa2b1985a9ca867b3fcb78" dependencies = [ "futures-core", "futures-sink", @@ -1175,15 +1212,15 @@ dependencies = [ [[package]] name = "futures-core" -version = "0.3.29" +version = "0.3.30" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "eb1d22c66e66d9d72e1758f0bd7d4fd0bee04cad842ee34587d68c07e45d088c" +checksum = "dfc6580bb841c5a68e9ef15c77ccc837b40a7504914d52e47b8b0e9bbda25a1d" [[package]] name = "futures-executor" -version = "0.3.29" +version = "0.3.30" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0f4fb8693db0cf099eadcca0efe2a5a22e4550f98ed16aba6c48700da29597bc" +checksum = "a576fc72ae164fca6b9db127eaa9a9dda0d61316034f33a0a0d4eda41f02b01d" dependencies = [ "futures-core", "futures-task", @@ -1193,63 +1230,51 @@ dependencies = [ [[package]] name = "futures-io" -version = "0.3.29" +version = "0.3.30" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8bf34a163b5c4c52d0478a4d757da8fb65cabef42ba90515efee0f6f9fa45aaa" +checksum = "a44623e20b9681a318efdd71c299b6b222ed6f231972bfe2f224ebad6311f0c1" [[package]] name = "futures-lite" -version = "1.13.0" +version = "2.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "49a9d51ce47660b1e808d3c990b4709f2f415d928835a17dfd16991515c46bce" +checksum = "52527eb5074e35e9339c6b4e8d12600c7128b68fb25dcb9fa9dec18f7c25f3a5" dependencies = [ - "fastrand 1.9.0", + "fastrand 2.0.2", "futures-core", "futures-io", - "memchr", "parking", "pin-project-lite", - "waker-fn", -] - -[[package]] -name = "futures-lite" -version = "2.0.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d3831c2651acb5177cbd83943f3d9c8912c5ad03c76afcc0e9511ba568ec5ebb" -dependencies = [ - "futures-core", - "pin-project-lite", ] [[package]] name = "futures-macro" -version = "0.3.29" +version = "0.3.30" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "53b153fd91e4b0147f4aced87be237c98248656bb01050b96bf3ee89220a8ddb" +checksum = "87750cf4b7a4c0625b1529e4c543c2182106e4dedc60a2a6455e00d212c489ac" dependencies = [ "proc-macro2", "quote", - "syn 2.0.39", + "syn 2.0.58", ] [[package]] name = "futures-sink" -version = "0.3.29" +version = "0.3.30" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e36d3378ee38c2a36ad710c5d30c2911d752cb941c00c72dbabfb786a7970817" +checksum = "9fb8e00e87438d937621c1c6269e53f536c14d3fbd6a042bb24879e57d474fb5" [[package]] name = "futures-task" -version = "0.3.29" +version = "0.3.30" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "efd193069b0ddadc69c46389b740bbccdd97203899b48d09c5f7969591d6bae2" +checksum = "38d84fa142264698cdce1a9f9172cf383a0c82de1bddcf3092901442c4097004" [[package]] name = "futures-util" -version = "0.3.29" +version = "0.3.30" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a19526d624e703a3179b3d322efec918b6246ea0fa51d41124525f00f1cc8104" +checksum = "3d6401deb83407ab3da39eba7e33987a73c3df0c82b4bb5813ee871c19c41d48" dependencies = [ "futures-channel", "futures-core", @@ -1283,24 +1308,32 @@ dependencies = [ "winapi", ] +[[package]] +name = "gethostname" +version = "0.4.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0176e0459c2e4a1fe232f984bca6890e681076abb9934f6cea7c326f3fc47818" +dependencies = [ + "libc", + "windows-targets 0.48.5", +] + [[package]] name = "getrandom" -version = "0.2.10" +version = "0.2.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "be4136b2a15dd319360be1c07d9933517ccf0be8f16bf62a3bee4f0d618df427" +checksum = "94b22e06ecb0110981051723910cbf0b5f5e09a2062dd7663334ee79a9d1286c" dependencies = [ "cfg-if", - "js-sys", "libc", "wasi", - "wasm-bindgen", ] [[package]] name = "gif" -version = "0.12.0" +version = "0.13.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "80792593675e051cf94a4b111980da2ba60d4a83e43e0048c5693baab3977045" +checksum = "3fb2d69b19215e18bb912fa30f7ce15846e301408695e44e0ef719f1da9e19f2" dependencies = [ "color_quant", "weezl", @@ -1308,9 +1341,9 @@ dependencies = [ [[package]] name = "gimli" -version = "0.28.0" +version = "0.28.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6fb8d784f27acf97159b40fc4db5ecd8aa23b9ad5ef69cdd136d3bc80665f0c0" +checksum = "4271d37baee1b8c7e4b708028c57d816cf9d2434acb33a549475f78c181f6253" [[package]] name = "glam" @@ -1380,9 +1413,9 @@ version = "0.2.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "cc11df1ace8e7e564511f53af41f3e42ddc95b56fd07b3f4445d2a6048bc682c" dependencies = [ - "bitflags 2.4.1", + "bitflags 2.5.0", "gpu-descriptor-types", - "hashbrown 0.14.2", + "hashbrown 0.14.3", ] [[package]] @@ -1391,7 +1424,7 @@ version = "0.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6bf0b36e6f090b7e1d8a4b49c0cb81c1f8376f72198c65dd3ad9ff3556b8b78c" dependencies = [ - "bitflags 2.4.1", + "bitflags 2.5.0", ] [[package]] @@ -1406,9 +1439,9 @@ dependencies = [ [[package]] name = "h2" -version = "0.3.21" +version = "0.4.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "91fc23aa11be92976ef4729127f1a74adf36d8436f7816b185d18df956790833" +checksum = "816ec7294445779408f36fe57bc5b7fc1cf59664059096c65f905c1c61f58069" dependencies = [ "bytes", "fnv", @@ -1416,7 +1449,7 @@ dependencies = [ "futures-sink", "futures-util", "http", - "indexmap 1.9.3", + "indexmap 2.2.6", "slab", "tokio", "tokio-util", @@ -1425,9 +1458,9 @@ dependencies = [ [[package]] name = "half" -version = "2.3.1" +version = "2.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bc52e53916c08643f1b56ec082790d1e86a32e58dc5268f897f313fbae7b4872" +checksum = "6dd08c532ae367adf81c312a4580bc67f1d0fe8bc9c460520283f4c0ff277888" dependencies = [ "cfg-if", "crunchy", @@ -1441,9 +1474,9 @@ checksum = "8a9ee70c43aaf417c914396645a0fa852624801b24ebb7ae78fe8272889ac888" [[package]] name = "hashbrown" -version = "0.14.2" +version = "0.14.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f93e7192158dbcda357bdec5fb5788eebf8bbac027f3f33e719d29135ae84156" +checksum = "290f1a1d9242c78d09ce40a5e87e7554ee637af1351968159f4952f028f75604" dependencies = [ "ahash", "allocator-api2", @@ -1471,11 +1504,17 @@ 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.3.3" +version = "0.3.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d77f7ec81a6d05a3abb01ab6eb7590f6083d08449fe5a1c8b1e620283546ccb7" +checksum = "d231dfb89cfffdbc30e7fc41579ed6066ad03abda9e567ccafae602b97ec5024" [[package]] name = "hex" @@ -1491,9 +1530,9 @@ checksum = "dfa686283ad6dd069f105e5ab091b04c62850d3e4cf5d67debad1933f55023df" [[package]] name = "http" -version = "0.2.9" +version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bd6effc99afb63425aff9b05836f029929e345a6148a14b7ecd5ab67af944482" +checksum = "21b9ddb458710bc376481b842f5da65cdf31522de232c1ca8146abce2a358258" dependencies = [ "bytes", "fnv", @@ -1502,12 +1541,24 @@ dependencies = [ [[package]] name = "http-body" -version = "0.4.5" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1cac85db508abc24a2e48553ba12a996e87244a0395ce011e62b37158745d643" +dependencies = [ + "bytes", + "http", +] + +[[package]] +name = "http-body-util" +version = "0.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d5f38f16d184e36f2408a55281cd658ecbd3ca05cce6d6510a176eca393e26d1" +checksum = "0475f8b2ac86659c21b64320d5d653f9efe42acd2a4e560073ec61a155a34f1d" dependencies = [ "bytes", + "futures-core", "http", + "http-body", "pin-project-lite", ] @@ -1525,13 +1576,12 @@ checksum = "df3b46402a9d5adb4c86a0cf463f42e19994e3ee891101b1841f30a545cb49a9" [[package]] name = "hyper" -version = "0.14.27" +version = "1.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ffb1cfd654a8219eaef89881fdb3bb3b1cdc5fa75ded05d6933b2b382e395468" +checksum = "186548d73ac615b32a73aafe38fb4f56c0d340e110e5a200bcadbaf2e199263a" dependencies = [ "bytes", "futures-channel", - "futures-core", "futures-util", "h2", "http", @@ -1540,32 +1590,53 @@ dependencies = [ "httpdate", "itoa", "pin-project-lite", - "socket2 0.4.10", + "smallvec", "tokio", - "tower-service", - "tracing", "want", ] [[package]] name = "hyper-rustls" -version = "0.24.2" +version = "0.26.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ec3efd23720e2049821a693cbc7e65ea87c72f1c58ff2f9522ff332b1491e590" +checksum = "a0bea761b46ae2b24eb4aef630d8d1c398157b6fc29e6350ecf090a0b70c952c" dependencies = [ "futures-util", "http", "hyper", + "hyper-util", "rustls", + "rustls-pki-types", "tokio", "tokio-rustls", + "tower-service", +] + +[[package]] +name = "hyper-util" +version = "0.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ca38ef113da30126bbff9cd1705f9273e15d45498615d138b0c20279ac7a76aa" +dependencies = [ + "bytes", + "futures-channel", + "futures-util", + "http", + "http-body", + "hyper", + "pin-project-lite", + "socket2", + "tokio", + "tower", + "tower-service", + "tracing", ] [[package]] name = "iana-time-zone" -version = "0.1.58" +version = "0.1.60" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8326b86b6cff230b97d0d312a6c40a60726df3332e721f72a1b035f451663b20" +checksum = "e7ffbb5a1b541ea2561f8c41c087286cc091e21e556a4f09a8f6cbf17b69b141" dependencies = [ "android_system_properties", "core-foundation-sys", @@ -1764,9 +1835,9 @@ dependencies = [ [[package]] name = "idna" -version = "0.4.0" +version = "0.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7d20d6b07bfbc108882d88ed8e37d39636dcc260e15e30c45e6ba089610b917c" +checksum = "634d9b1461af396cad843f47fdba5597a4f9e6ddd4bfb6ff5d85028c25cb12f6" dependencies = [ "unicode-bidi", "unicode-normalization", @@ -1774,9 +1845,9 @@ dependencies = [ [[package]] name = "image" -version = "0.24.7" +version = "0.24.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6f3dfdbdd72063086ff443e297b61695500514b1e41095b6fb9a5ab48a70a711" +checksum = "5690139d2f55868e080017335e4b94cb7414274c74f1669c84fb5feba2c9f69d" dependencies = [ "bytemuck", "byteorder", @@ -1784,7 +1855,6 @@ dependencies = [ "exr", "gif", "jpeg-decoder", - "num-rational", "num-traits", "png", "qoi", @@ -1803,12 +1873,12 @@ dependencies = [ [[package]] name = "indexmap" -version = "2.1.0" +version = "2.2.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d530e1a18b1cb4c484e6e34556a0d948706958449fca0cab753d649f2bce3d1f" +checksum = "168fb715dda47215e360912c096649d23d58bf392ac62f73919e831745e40f26" dependencies = [ "equivalent", - "hashbrown 0.14.2", + "hashbrown 0.14.3", ] [[package]] @@ -1842,9 +1912,9 @@ checksum = "8f518f335dce6725a761382244631d86cf0ccb2863413590b31338feb467f9c3" [[package]] name = "itoa" -version = "1.0.9" +version = "1.0.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "af150ab688ff2122fcef229be89cb50dd66af9e01a4ff320cc137eecc9bacc38" +checksum = "49f1f14873335454500d59611f1cf4a4b0f786f9ac11f4312a78e4cf2566695b" [[package]] name = "jni-sys" @@ -1854,27 +1924,27 @@ checksum = "8eaf4bc02d17cbdd7ff4c7438cafcdf7fb9a4613313ad11b4f8fefe7d3fa0130" [[package]] name = "jobserver" -version = "0.1.27" +version = "0.1.28" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8c37f63953c4c63420ed5fd3d6d398c719489b9f872b9fa683262f8edd363c7d" +checksum = "ab46a6e9526ddef3ae7f787c06f0f2600639ba80ea3eade3d8e670a2230f51d6" dependencies = [ "libc", ] [[package]] name = "jpeg-decoder" -version = "0.3.0" +version = "0.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bc0000e42512c92e31c2252315bda326620a4e034105e900c98ec492fa077b3e" +checksum = "f5d4a7da358eff58addd2877a45865158f0d78c911d43a5784ceb7bbf52833b0" dependencies = [ "rayon", ] [[package]] name = "js-sys" -version = "0.3.65" +version = "0.3.69" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "54c0c35952f67de54bb584e9fd912b3023117cbafc0a77d8f3dee1fb5f572fe8" +checksum = "29c15563dc2726973df627357ce0c9ddddbea194836909d655df6a75d2cf296d" dependencies = [ "wasm-bindgen", ] @@ -1912,7 +1982,7 @@ dependencies = [ name = "kurisu_api" version = "3.0.1" dependencies = [ - "hashbrown 0.14.2", + "hashbrown 0.14.3", "lektor_utils", "serde", "serde_json", @@ -1950,7 +2020,7 @@ dependencies = [ name = "lektor_mpris" version = "3.0.1" dependencies = [ - "hashbrown 0.14.2", + "hashbrown 0.14.3", "lektor_procmacros", "lektor_utils", "serde", @@ -1966,7 +2036,7 @@ dependencies = [ "async-trait", "chrono", "futures", - "hashbrown 0.14.2", + "hashbrown 0.14.3", "kurisu_api", "lektor_procmacros", "lektor_utils", @@ -2001,7 +2071,7 @@ dependencies = [ "proc-macro-error", "proc-macro2", "quote", - "syn 2.0.39", + "syn 2.0.58", ] [[package]] @@ -2010,7 +2080,7 @@ version = "3.0.1" dependencies = [ "anyhow", "futures", - "hashbrown 0.14.2", + "hashbrown 0.14.3", "kurisu_api", "lektor_nkdb", "lektor_utils", @@ -2045,7 +2115,9 @@ dependencies = [ "axum", "clap", "futures", + "hashbrown 0.14.3", "hyper", + "hyper-util", "lektor_mpris", "lektor_nkdb", "lektor_payloads", @@ -2055,13 +2127,15 @@ dependencies = [ "serde", "serde_json", "tokio", + "tokio-stream", + "tower", ] [[package]] name = "libc" -version = "0.2.150" +version = "0.2.153" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "89d92a4743f9a61002fae18374ed11e7973f530cb3a3255fb354818118b2203c" +checksum = "9c198f91728a82281a64e1f4f9eeb25d82cb32a5de251c6bd1b5154d63a8e7bd" [[package]] name = "libloading" @@ -2075,12 +2149,12 @@ dependencies = [ [[package]] name = "libloading" -version = "0.8.1" +version = "0.8.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c571b676ddfc9a8c12f1f3d3085a7b163966a8fd8098a90640953ce5f6170161" +checksum = "0c2a198fb6b0eada2a8df47933734e6d35d350665a33a3593d7164fa52c75c19" dependencies = [ "cfg-if", - "windows-sys 0.48.0", + "windows-targets 0.52.4", ] [[package]] @@ -2091,37 +2165,30 @@ checksum = "4ec2a862134d2a7d32d7983ddcdd1c4923530833c9f2ea1a44fc5fa473989058" [[package]] name = "libredox" -version = "0.0.1" +version = "0.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "85c833ca1e66078851dba29046874e38f08b2c883700aa29a03ddd3b23814ee8" +checksum = "3af92c55d7d839293953fcd0fda5ecfe93297cfde6ffbdec13b41d99c0ba6607" dependencies = [ - "bitflags 2.4.1", + "bitflags 2.5.0", "libc", "redox_syscall 0.4.1", ] [[package]] name = "libredox" -version = "0.0.2" +version = "0.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3af92c55d7d839293953fcd0fda5ecfe93297cfde6ffbdec13b41d99c0ba6607" +checksum = "c0ff37bd590ca25063e35af745c343cb7a0271906fb7b37e4813e8f79f00268d" dependencies = [ - "bitflags 2.4.1", + "bitflags 2.5.0", "libc", - "redox_syscall 0.4.1", ] [[package]] name = "linux-raw-sys" -version = "0.3.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ef53942eb7bf7ff43a617b3e2c1c4a5ecf5944a7c1bc12d7ee39bbb15e5c1519" - -[[package]] -name = "linux-raw-sys" -version = "0.4.10" +version = "0.4.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "da2479e8c062e40bf0066ffa0bc823de0a9368974af99c9f6df941d2c231e03f" +checksum = "01cda141df6706de531b6c46c3a33ecca755538219bd484262fa09410c13539c" [[package]] name = "lkt" @@ -2155,9 +2222,9 @@ dependencies = [ [[package]] name = "log" -version = "0.4.20" +version = "0.4.21" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b5e6163cb8c49088c2c36f57875e58ccd8c87c7427f7fbd50ea6710b2f3f2e8f" +checksum = "90ed8c1e510134f979dbc4f070f87d4313098b704861a105fe34231c70a3901c" [[package]] name = "lru" @@ -2165,7 +2232,7 @@ version = "0.11.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a4a83fb7698b3643a0e34f9ae6f2e8f0178c0fd42f8b59d493aa271ff3a5bf21" dependencies = [ - "hashbrown 0.14.2", + "hashbrown 0.14.3", ] [[package]] @@ -2185,9 +2252,9 @@ checksum = "0e7465ac9959cc2b1404e8e2367b43684a6d13790fe23056cc8c6c5a6b7bcb94" [[package]] name = "memchr" -version = "2.6.4" +version = "2.7.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f665ee40bc4a3c5590afb1e9677db74a508659dfd71e126420da8274909a0167" +checksum = "6c8640c5d730cb13ebd907d8d04b52f55ac9a2eec55b440c8892f40d56c76c1d" [[package]] name = "memmap2" @@ -2207,6 +2274,15 @@ dependencies = [ "libc", ] +[[package]] +name = "memmap2" +version = "0.9.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fe751422e4a8caa417e13c3ea66452215d7d63e19e604f4980461212f3ae1322" +dependencies = [ + "libc", +] + [[package]] name = "memoffset" version = "0.6.5" @@ -2227,9 +2303,9 @@ dependencies = [ [[package]] name = "memoffset" -version = "0.9.0" +version = "0.9.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5a634b1c61a95585bd15607c6ab0c4e5b226e695ff2800ba0cdccddf208c406c" +checksum = "488016bfae457b036d996092f6cb448677611ce4449e970ceaf42695203f218a" dependencies = [ "autocfg", ] @@ -2254,17 +2330,11 @@ 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.7.1" +version = "0.7.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e7810e0be55b428ada41041c41f32c9f1a42817901b4ccf45fa3d4b6561e74c7" +checksum = "9d811f3e15f28568be3407c8e7fdb6514c1cda3cb30683f15b6a1a1dc4ea14a7" dependencies = [ "adler", "simd-adler32", @@ -2272,9 +2342,9 @@ dependencies = [ [[package]] name = "mio" -version = "0.8.9" +version = "0.8.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3dce281c5e46beae905d4de1870d8b1509a9142b62eedf18b443b011ca8343d0" +checksum = "a4a650543ca06a924e8b371db273b2756685faae30f8487da1b56505a8f78b0c" dependencies = [ "libc", "log", @@ -2309,19 +2379,10 @@ dependencies = [ ] [[package]] -name = "nanorand" +name = "ndk" version = "0.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6a51313c5820b0b02bd422f4b44776fbf47961755c74ce64afc73bfad10226c3" -dependencies = [ - "getrandom", -] - -[[package]] -name = "ndk" -version = "0.7.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "451422b7e4718271c8b5b3aadf5adedba43dc76312454b387e98fae0fc951aa0" +checksum = "451422b7e4718271c8b5b3aadf5adedba43dc76312454b387e98fae0fc951aa0" dependencies = [ "bitflags 1.3.2", "jni-sys", @@ -2346,19 +2407,6 @@ dependencies = [ "jni-sys", ] -[[package]] -name = "nix" -version = "0.22.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e4916f159ed8e5de0082076562152a76b7a1f64a01fd9d1e0fea002c37624faf" -dependencies = [ - "bitflags 1.3.2", - "cc", - "cfg-if", - "libc", - "memoffset 0.6.5", -] - [[package]] name = "nix" version = "0.24.3" @@ -2398,13 +2446,16 @@ dependencies = [ ] [[package]] -name = "nom" -version = "7.1.3" +name = "nix" +version = "0.28.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d273983c5a657a70a3e8f2a01329822f3b8c8172b73826411a55751e404a0a4a" +checksum = "ab2156c4fce2f8df6c499cc1c763e4394b7482525bf2a9701c9d79d215f519e4" dependencies = [ - "memchr", - "minimal-lexical", + "bitflags 2.5.0", + "cfg-if", + "cfg_aliases", + "libc", + "memoffset 0.9.1", ] [[package]] @@ -2416,32 +2467,11 @@ dependencies = [ "winapi", ] -[[package]] -name = "num-integer" -version = "0.1.45" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "225d3389fb3509a24c93f5c29eb6bde2586b98d9f016636dff58d7c6f7569cd9" -dependencies = [ - "autocfg", - "num-traits", -] - -[[package]] -name = "num-rational" -version = "0.4.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0638a1c9d0a3c0914158145bc76cff373a75a627e6ecbfb71cbe6f453a5a19b0" -dependencies = [ - "autocfg", - "num-integer", - "num-traits", -] - [[package]] name = "num-traits" -version = "0.2.17" +version = "0.2.18" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "39e3200413f237f41ab11ad6d161bc7239c84dcb631773ccd7de3dfe4b5c267c" +checksum = "da0df0e5185db44f69b44f26786fe401b6c293d1907744beaa7fa62b2e5a517a" dependencies = [ "autocfg", ] @@ -2480,7 +2510,7 @@ version = "0.5.11" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "dcbff9bc912032c62bf65ef1d5aea88983b420f4f839db1e9b0c281a25c9c799" dependencies = [ - "proc-macro-crate", + "proc-macro-crate 1.3.1", "proc-macro2", "quote", "syn 1.0.109", @@ -2492,10 +2522,10 @@ version = "0.6.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "96667db765a921f7b295ffee8b60472b686a51d4f21c2ee4ffdb94c7013b65a6" dependencies = [ - "proc-macro-crate", + "proc-macro-crate 1.3.1", "proc-macro2", "quote", - "syn 2.0.39", + "syn 2.0.58", ] [[package]] @@ -2565,18 +2595,18 @@ dependencies = [ [[package]] name = "object" -version = "0.32.1" +version = "0.32.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9cf5f9dd3933bd50a9e1f149ec995f39ae2c496d31fd772c1fd45ebc27e902b0" +checksum = "a6a622008b6e321afc04970976f62ee297fdbaa6f95318ca343e3eebb9648441" dependencies = [ "memchr", ] [[package]] name = "once_cell" -version = "1.18.0" +version = "1.19.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dd8b5dd2ae5ed71462c540258bedcb51965123ad7e7ccf4b9a8cafaa4a63576d" +checksum = "3fdb12b2476b595f9358c5161aa467c2438859caa136dec86c26fdd2efe17b92" [[package]] name = "option-ext" @@ -2614,9 +2644,9 @@ dependencies = [ [[package]] name = "palette" -version = "0.7.3" +version = "0.7.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b2e2f34147767aa758aa649415b50a69eeb46a67f9dc7db8011eeb3d84b351dc" +checksum = "ebfc23a4b76642983d57e4ad00bb4504eb30a8ce3c70f4aee1f725610e36d97a" dependencies = [ "approx", "fast-srgb8", @@ -2626,13 +2656,13 @@ dependencies = [ [[package]] name = "palette_derive" -version = "0.7.3" +version = "0.7.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b7db010ec5ff3d4385e4f133916faacd9dad0f6a09394c92d825b3aed310fa0a" +checksum = "e8890702dbec0bad9116041ae586f84805b13eecd1d8b1df27c29998a9969d6d" dependencies = [ "proc-macro2", "quote", - "syn 2.0.39", + "syn 2.0.58", ] [[package]] @@ -2691,9 +2721,9 @@ dependencies = [ [[package]] name = "percent-encoding" -version = "2.3.0" +version = "2.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9b2a4787296e9989611394c33f193f676704af1686e70b8f8033ab5ba9a35a94" +checksum = "e3148f5046208a5d56bcfc03053e3ca6334e51da8dfb19b6cdc8b306fae3283e" [[package]] name = "phf" @@ -2725,7 +2755,7 @@ dependencies = [ "phf_shared", "proc-macro2", "quote", - "syn 2.0.39", + "syn 2.0.58", ] [[package]] @@ -2739,29 +2769,29 @@ dependencies = [ [[package]] name = "pin-project" -version = "1.1.3" +version = "1.1.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fda4ed1c6c173e3fc7a83629421152e01d7b1f9b7f65fb301e490e8cfc656422" +checksum = "b6bf43b791c5b9e34c3d182969b4abb522f9343702850a2e57f460d00d09b4b3" dependencies = [ "pin-project-internal", ] [[package]] name = "pin-project-internal" -version = "1.1.3" +version = "1.1.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4359fd9c9171ec6e8c62926d6faaf553a8dc3f64e1507e76da7911b4f6a04405" +checksum = "2f38a4412a78282e09a2cf38d195ea5420d15ba0602cb375210efbc877243965" dependencies = [ "proc-macro2", "quote", - "syn 2.0.39", + "syn 2.0.58", ] [[package]] name = "pin-project-lite" -version = "0.2.13" +version = "0.2.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8afb450f006bf6385ca15ef45d71d2288452bc3683ce2e2cacc0d18e4be60b58" +checksum = "bda66fc9667c18cb2758a2ac84d1167245054bcf85d5d1aaa6923f45801bdd02" [[package]] name = "pin-utils" @@ -2776,21 +2806,21 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "668d31b1c4eba19242f2088b2bf3316b82ca31082a8335764db4e083db7485d4" dependencies = [ "atomic-waker", - "fastrand 2.0.1", + "fastrand 2.0.2", "futures-io", ] [[package]] name = "pkg-config" -version = "0.3.27" +version = "0.3.30" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "26072860ba924cbfa98ea39c8c19b4dd6a4a25423dbdf219c1eca91aa0cf6964" +checksum = "d231b230927b5e4ad203db57bbcbee2802f6bce620b1e4a9024a07d94e2907ec" [[package]] name = "png" -version = "0.17.10" +version = "0.17.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dd75bf2d8dd3702b9707cdbc56a5b9ef42cec752eb8b3bafc01234558442aa64" +checksum = "06e4b0d3d1312775e782c86c91a111aa1f910cbb65e1337f9975b5f9a554b5e1" dependencies = [ "bitflags 1.3.2", "crc32fast", @@ -2801,32 +2831,17 @@ dependencies = [ [[package]] name = "polling" -version = "2.8.0" +version = "3.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4b2d323e8ca7996b3e23126511a523f7e62924d93ecd5ae73b333815b0eb3dce" -dependencies = [ - "autocfg", - "bitflags 1.3.2", - "cfg-if", - "concurrent-queue", - "libc", - "log", - "pin-project-lite", - "windows-sys 0.48.0", -] - -[[package]] -name = "polling" -version = "3.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e53b6af1f60f36f8c2ac2aad5459d75a5a9b4be1e8cdd40264f315d78193e531" +checksum = "e0c976a60b2d7e99d6f229e414670a9b85d13ac305cc6d1e9c134de58c5aaaf6" dependencies = [ "cfg-if", "concurrent-queue", + "hermit-abi", "pin-project-lite", - "rustix 0.38.21", + "rustix", "tracing", - "windows-sys 0.48.0", + "windows-sys 0.52.0", ] [[package]] @@ -2845,6 +2860,15 @@ dependencies = [ "toml_edit 0.19.15", ] +[[package]] +name = "proc-macro-crate" +version = "3.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6d37c51ca738a55da99dc0c4a34860fd675453b8b36209178c2249bb13651284" +dependencies = [ + "toml_edit 0.21.1", +] + [[package]] name = "proc-macro-error" version = "1.0.4" @@ -2870,18 +2894,18 @@ dependencies = [ [[package]] name = "proc-macro2" -version = "1.0.69" +version = "1.0.79" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "134c189feb4956b20f6f547d2cf727d4c0fe06722b20a0eec87ed445a97f92da" +checksum = "e835ff2298f5721608eb1a980ecaee1aef2c132bf95ecc026a11b7bf3c01c02e" dependencies = [ "unicode-ident", ] [[package]] name = "profiling" -version = "1.0.11" +version = "1.0.15" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f89dff0959d98c9758c88826cc002e2c3d0b9dfac4139711d1f30de442f1139b" +checksum = "43d84d1d7a6ac92673717f9f6d1518374ef257669c24ebc5ac25d5033828be58" [[package]] name = "qoi" @@ -2901,11 +2925,20 @@ dependencies = [ "memchr", ] +[[package]] +name = "quick-xml" +version = "0.31.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1004a344b30a54e2ee58d66a71b32d2db2feb0a31f9a2d302bf0536f15de2a33" +dependencies = [ + "memchr", +] + [[package]] name = "quote" -version = "1.0.33" +version = "1.0.35" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5267fca4496028628a95160fc423a33e8b2e6af8a5302579e322e4b520293cae" +checksum = "291ec9ab5efd934aaf503a6466c5d5251535d108ee747472c3977cc5acc868ef" dependencies = [ "proc-macro2", ] @@ -2948,9 +2981,9 @@ checksum = "9c8a99fddc9f0ba0a85884b8d14e3592853e787d581ca1816c91349b10e4eeab" [[package]] name = "rangemap" -version = "1.4.0" +version = "1.5.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "977b1e897f9d764566891689e642653e5ed90c6895106acd005eb4c1d0203991" +checksum = "f60fcc7d6849342eff22c4350c8b9a989ee8ceabc4b481253e8946b9fe83d684" [[package]] name = "raw-window-handle" @@ -2960,9 +2993,9 @@ checksum = "f2ff9a1f06a88b01621b7ae906ef0211290d1c8a168a15542486a8f61c0833b9" [[package]] name = "rayon" -version = "1.8.0" +version = "1.10.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9c27db03db7734835b3f53954b534c91069375ce6ccaa2e065441e07d9b6cdb1" +checksum = "b418a60154510ca1a002a752ca9714984e21e4241e804d32555251faf8b78ffa" dependencies = [ "either", "rayon-core", @@ -2970,14 +3003,24 @@ dependencies = [ [[package]] name = "rayon-core" -version = "1.12.0" +version = "1.12.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5ce3fb6ad83f861aac485e76e1985cd109d9a3713802152be56c3b1f0e0658ed" +checksum = "1465873a3dfdaa8ae7cb14b4383657caab0b3e8a0aa9ae8e04b044854c8dfce2" dependencies = [ "crossbeam-deque", "crossbeam-utils", ] +[[package]] +name = "read-fonts" +version = "0.19.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ea75b5ec052843434d263ef7a4c31cf86db5908c729694afb1ad3c884252a1b6" +dependencies = [ + "bytemuck", + "font-types", +] + [[package]] name = "redox_syscall" version = "0.2.16" @@ -3007,20 +3050,20 @@ dependencies = [ [[package]] name = "redox_users" -version = "0.4.4" +version = "0.4.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a18479200779601e498ada4e8c1e1f50e3ee19deb0259c25825a98b5603b2cb4" +checksum = "bd283d9651eeda4b2a83a43c1c91b266c40fd76ecd39a50a8c630ae69dc72891" dependencies = [ "getrandom", - "libredox 0.0.1", + "libredox 0.1.3", "thiserror", ] [[package]] name = "regex" -version = "1.10.2" +version = "1.10.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "380b951a9c5e80ddfd6136919eef32310721aa4aacd4889a8d39124b026ab343" +checksum = "c117dbdfde9c8308975b6a18d71f3f385c89461f7b3fb054288ecf2a2058ba4c" dependencies = [ "aho-corasick", "memchr", @@ -3030,9 +3073,9 @@ dependencies = [ [[package]] name = "regex-automata" -version = "0.4.3" +version = "0.4.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5f804c7828047e88b2d32e2d7fe5a105da8ee3264f01902f796c8e067dc2483f" +checksum = "86b83b8b9847f9bf95ef68afb0b8e6cdb80f498442f5179a29fad448fcc1eaea" dependencies = [ "aho-corasick", "memchr", @@ -3041,32 +3084,32 @@ dependencies = [ [[package]] name = "regex-syntax" -version = "0.8.2" +version = "0.8.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c08c74e62047bb2de4ff487b251e4a92e24f48745648451635cec7d591162d9f" +checksum = "adad44e29e4c806119491a7f06f03de4d1af22c3a680dd47f1e6e179439d1f56" [[package]] name = "renderdoc-sys" -version = "1.0.0" +version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "216080ab382b992234dda86873c18d4c48358f5cfcb70fd693d7f6f2131b628b" +checksum = "19b30a45b0cd0bcca8037f3d0dc3421eaf95327a17cad11964fb8179b4fc4832" [[package]] name = "reqwest" -version = "0.11.22" +version = "0.12.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "046cd98826c46c2ac8ddecae268eb5c2e58628688a5fc7a2643704a73faba95b" +checksum = "3e6cc1e89e689536eb5aeede61520e874df5a4707df811cd5da4aa5fbb2aae19" dependencies = [ "base64", "bytes", - "encoding_rs", "futures-core", "futures-util", - "h2", "http", "http-body", + "http-body-util", "hyper", "hyper-rustls", + "hyper-util", "ipnet", "js-sys", "log", @@ -3076,10 +3119,11 @@ dependencies = [ "pin-project-lite", "rustls", "rustls-pemfile", + "rustls-pki-types", "serde", "serde_json", "serde_urlencoded", - "system-configuration", + "sync_wrapper 0.1.2", "tokio", "tokio-rustls", "tower-service", @@ -3093,16 +3137,17 @@ dependencies = [ [[package]] name = "ring" -version = "0.17.5" +version = "0.17.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fb0205304757e5d899b9c2e448b867ffd03ae7f988002e47cd24954391394d0b" +checksum = "c17fa4cb658e3583423e915b9f3acc01cceaee1860e33d59ebae66adc3a2dc0d" dependencies = [ "cc", + "cfg-if", "getrandom", "libc", "spin", "untrusted", - "windows-sys 0.48.0", + "windows-sys 0.52.0", ] [[package]] @@ -3125,67 +3170,63 @@ checksum = "08d43f7aa6b08d49f382cde6a7982047c3426db949b1424bc4b7ec9ae12c6ce2" [[package]] name = "rustix" -version = "0.37.27" +version = "0.38.32" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fea8ca367a3a01fe35e6943c400addf443c0f57670e6ec51196f71a4b8762dd2" +checksum = "65e04861e65f21776e67888bfbea442b3642beaa0138fdb1dd7a84a52dffdb89" dependencies = [ - "bitflags 1.3.2", + "bitflags 2.5.0", "errno", - "io-lifetimes", "libc", - "linux-raw-sys 0.3.8", - "windows-sys 0.48.0", -] - -[[package]] -name = "rustix" -version = "0.38.21" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2b426b0506e5d50a7d8dafcf2e81471400deb602392c7dd110815afb4eaf02a3" -dependencies = [ - "bitflags 2.4.1", - "errno", - "libc", - "linux-raw-sys 0.4.10", - "windows-sys 0.48.0", + "linux-raw-sys", + "windows-sys 0.52.0", ] [[package]] name = "rustls" -version = "0.21.8" +version = "0.22.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "446e14c5cda4f3f30fe71863c34ec70f5ac79d6087097ad0bb433e1be5edf04c" +checksum = "99008d7ad0bbbea527ec27bddbc0e432c5b87d8175178cee68d2eec9c4a1813c" dependencies = [ "log", "ring", + "rustls-pki-types", "rustls-webpki", - "sct", + "subtle", + "zeroize", ] [[package]] name = "rustls-pemfile" -version = "1.0.3" +version = "2.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2d3987094b1d07b653b7dfdc3f70ce9a1da9c51ac18c1b06b662e4f9a0e9f4b2" +checksum = "29993a25686778eb88d4189742cd713c9bce943bc54251a33509dc63cbacf73d" dependencies = [ "base64", + "rustls-pki-types", ] +[[package]] +name = "rustls-pki-types" +version = "1.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ecd36cc4259e3e4514335c4a138c6b43171a8d61d8f5c9348f9fc7529416f247" + [[package]] name = "rustls-webpki" -version = "0.101.7" +version = "0.102.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8b6275d1ee7a1cd780b64aca7726599a1dbc893b1e64144529e55c3c2f745765" +checksum = "faaa0a62740bedb9b2ef5afa303da42764c012f743917351dc9a237ea1663610" dependencies = [ "ring", + "rustls-pki-types", "untrusted", ] [[package]] name = "rustversion" -version = "1.0.14" +version = "1.0.15" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7ffc183a10b4478d04cbbbfc96d0873219d962dd5accaff2ffbd4ceb7df837f4" +checksum = "80af6f9131f277a45a3fba6ce8e2258037bb0477a67e610d3c1fe046ab31de47" [[package]] name = "rustybuzz" @@ -3206,9 +3247,9 @@ dependencies = [ [[package]] name = "ryu" -version = "1.0.15" +version = "1.0.17" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1ad4cc8da4ef723ed60bced201181d83791ad433213d8c24efffda1eec85d741" +checksum = "e86697c916019a8588c99b5fac3cead74ec0b4b819707a682fd4d23fa0ce1ba1" [[package]] name = "scoped-tls" @@ -3222,16 +3263,6 @@ version = "1.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "94143f37725109f92c262ed2cf5e59bce7498c01bcc1502d7b9afe439a4e9f49" -[[package]] -name = "sct" -version = "0.7.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "da046153aa2352493d6cb7da4b6e5c0c057d8a1d0a9aa8560baffdd945acd414" -dependencies = [ - "ring", - "untrusted", -] - [[package]] name = "sctk-adwaita" version = "0.5.4" @@ -3241,37 +3272,37 @@ dependencies = [ "ab_glyph", "log", "memmap2 0.5.10", - "smithay-client-toolkit", + "smithay-client-toolkit 0.16.1", "tiny-skia 0.8.4", ] [[package]] name = "serde" -version = "1.0.192" +version = "1.0.197" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bca2a08484b285dcb282d0f67b26cadc0df8b19f8c12502c13d966bf9482f001" +checksum = "3fb1c873e1b9b056a4dc4c0c198b24c3ffa059243875552b2bd0933b1aee4ce2" dependencies = [ "serde_derive", ] [[package]] name = "serde_derive" -version = "1.0.192" +version = "1.0.197" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d6c7207fbec9faa48073f3e3074cbe553af6ea512d7c21ba46e434e70ea9fbc1" +checksum = "7eb0b34b42edc17f6b7cac84a52a1c5f0e1bb2227e997ca9011ea3dd34e8610b" dependencies = [ "proc-macro2", "quote", - "syn 2.0.39", + "syn 2.0.58", ] [[package]] name = "serde_json" -version = "1.0.108" +version = "1.0.115" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3d1c7e3eac408d115102c4c24ad393e0821bb3a5df4d506a80f85f7a742a526b" +checksum = "12dc5c46daa8e9fdf4f5e71b6cf9a53f2487da0e86e55808e2d35539666497dd" dependencies = [ - "indexmap 2.1.0", + "indexmap 2.2.6", "itoa", "ryu", "serde", @@ -3279,9 +3310,9 @@ dependencies = [ [[package]] name = "serde_path_to_error" -version = "0.1.14" +version = "0.1.16" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4beec8bce849d58d06238cb50db2e1c417cfeafa4c63f692b15c82b7c80f8335" +checksum = "af99884400da37c88f5e9146b7f1fd0fbcae8f6eec4e9da38b67d05486f814a6" dependencies = [ "itoa", "serde", @@ -3289,20 +3320,20 @@ dependencies = [ [[package]] name = "serde_repr" -version = "0.1.17" +version = "0.1.19" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3081f5ffbb02284dda55132aa26daecedd7372a42417bbbab6f14ab7d6bb9145" +checksum = "6c64451ba24fc7a6a2d60fc75dd9c83c90903b19028d4eff35e88fc1e86564e9" dependencies = [ "proc-macro2", "quote", - "syn 2.0.39", + "syn 2.0.58", ] [[package]] name = "serde_spanned" -version = "0.6.4" +version = "0.6.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "12022b835073e5b11e90a14f86838ceb1c8fb0325b72416845c487ac0fa95e80" +checksum = "eb3622f419d1296904700073ea6cc23ad690adbd66f13ea683df73298736f0c1" dependencies = [ "serde", ] @@ -3343,9 +3374,9 @@ dependencies = [ [[package]] name = "sha256" -version = "1.4.0" +version = "1.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7895c8ae88588ccead14ff438b939b0c569cd619116f14b4d13fdff7b8333386" +checksum = "18278f6a914fa3070aa316493f7d2ddfb9ac86ebc06fa3b83bffda487e9065b0" dependencies = [ "async-trait", "bytes", @@ -3386,18 +3417,18 @@ dependencies = [ [[package]] name = "slotmap" -version = "1.0.6" +version = "1.0.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e1e08e261d0e8f5c43123b7adf3e4ca1690d655377ac93a03b2c9d3e98de1342" +checksum = "dbff4acf519f630b3a3ddcfaea6c06b42174d9a44bc70c620e9ed1649d58b82a" dependencies = [ "version_check", ] [[package]] name = "smallvec" -version = "1.11.1" +version = "1.13.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "942b4a808e05215192e39f4ab80813e599068285906cc91aa64f923db842bd5a" +checksum = "3c5e1a9a646d36c3599cd173a41282daf47c44583ad367b8e6837255952e5c67" [[package]] name = "smithay-client-toolkit" @@ -3406,7 +3437,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "870427e30b8f2cbe64bf43ec4b86e88fe39b0a84b3f15efd9c9c2d020bc86eb9" dependencies = [ "bitflags 1.3.2", - "calloop", + "calloop 0.10.6", "dlib", "lazy_static", "log", @@ -3414,38 +3445,54 @@ dependencies = [ "nix 0.24.3", "pkg-config", "wayland-client 0.29.5", - "wayland-cursor", - "wayland-protocols", + "wayland-cursor 0.29.5", + "wayland-protocols 0.29.5", ] [[package]] -name = "smithay-clipboard" -version = "0.6.6" +name = "smithay-client-toolkit" +version = "0.18.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0a345c870a1fae0b1b779085e81b51e614767c239e93503588e54c5b17f4b0e8" +checksum = "922fd3eeab3bd820d76537ce8f582b1cf951eceb5475c28500c7457d9d17f53a" dependencies = [ - "smithay-client-toolkit", - "wayland-client 0.29.5", + "bitflags 2.5.0", + "calloop 0.12.4", + "calloop-wayland-source", + "cursor-icon", + "libc", + "log", + "memmap2 0.9.4", + "rustix", + "thiserror", + "wayland-backend 0.3.3", + "wayland-client 0.31.2", + "wayland-csd-frame", + "wayland-cursor 0.31.1", + "wayland-protocols 0.31.2", + "wayland-protocols-wlr", + "wayland-scanner 0.31.1", + "xkeysym", ] [[package]] -name = "socket2" -version = "0.4.10" +name = "smithay-clipboard" +version = "0.7.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9f7916fc008ca5542385b89a3d3ce689953c143e9304a9bf8beec1de48994c0d" +checksum = "c091e7354ea8059d6ad99eace06dd13ddeedbb0ac72d40a9a6e7ff790525882d" dependencies = [ "libc", - "winapi", + "smithay-client-toolkit 0.18.1", + "wayland-backend 0.3.3", ] [[package]] name = "socket2" -version = "0.5.5" +version = "0.5.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7b5fac59a5cb5dd637972e5fca70daf0523c9067fcdc4842f053dae04a18f8e9" +checksum = "05ffd9c0a93b7543e062e759284fcf5f5e3b098501104bfbdde4d404db792871" dependencies = [ "libc", - "windows-sys 0.48.0", + "windows-sys 0.52.0", ] [[package]] @@ -3467,7 +3514,7 @@ dependencies = [ "redox_syscall 0.3.5", "thiserror", "wasm-bindgen", - "wayland-backend", + "wayland-backend 0.1.2", "wayland-client 0.30.2", "wayland-sys 0.30.1", "web-sys", @@ -3513,18 +3560,25 @@ version = "0.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6637bab7722d379c8b41ba849228d680cc12d0a45ba1fa2b48f2a30577a06731" +[[package]] +name = "subtle" +version = "2.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "81cdd64d312baedb58e21336b31bc043b77e01cc99033ce76ef539f78e965ebc" + [[package]] name = "svg_fmt" -version = "0.4.1" +version = "0.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8fb1df15f412ee2e9dfc1c504260fa695c1c3f10fe9f4a6ee2d2184d7d6450e2" +checksum = "f83ba502a3265efb76efb89b0a2f7782ad6f2675015d4ce37e4b547dda42b499" [[package]] name = "swash" -version = "0.1.8" +version = "0.1.15" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3b7c73c813353c347272919aa1af2885068b05e625e5532b43049e4f641ae77f" +checksum = "06ec889a8e0a6fcb91041996c8f1f6be0fe1a09e94478785e07c32ce2bca2d2b" dependencies = [ + "read-fonts", "yazi", "zeno", ] @@ -3542,9 +3596,9 @@ dependencies = [ [[package]] name = "syn" -version = "2.0.39" +version = "2.0.58" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "23e78b90f2fcf45d3e842032ce32e3f2d1545ba6636271dcbf24fa306d87be7a" +checksum = "44cfb93f38070beee36b3fef7d4f5a16f27751d94b187b666a5cc5e9b0d30687" dependencies = [ "proc-macro2", "quote", @@ -3557,6 +3611,12 @@ version = "0.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "2047c6ded9c721764247e62cd3b03c09ffc529b2ba5b10ec482ae507a4a70160" +[[package]] +name = "sync_wrapper" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a7065abeca94b6a8a577f9bd45aa0867a2238b74e8eb67cf10d492bc39351394" + [[package]] name = "sys-locale" version = "0.3.1" @@ -3581,45 +3641,23 @@ dependencies = [ "winapi", ] -[[package]] -name = "system-configuration" -version = "0.5.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ba3a3adc5c275d719af8cb4272ea1c4a6d668a777f37e115f6d11ddbc1c8e0e7" -dependencies = [ - "bitflags 1.3.2", - "core-foundation", - "system-configuration-sys", -] - -[[package]] -name = "system-configuration-sys" -version = "0.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a75fb188eb626b924683e3b95e3a48e63551fcfb51949de2f06a9d91dbee93c9" -dependencies = [ - "core-foundation-sys", - "libc", -] - [[package]] name = "tempfile" -version = "3.8.1" +version = "3.10.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7ef1adac450ad7f4b3c28589471ade84f25f731a7a0fe30d71dfa9f60fd808e5" +checksum = "85b77fafb263dd9d05cbeac119526425676db3784113aa9295c88498cbf8bff1" dependencies = [ "cfg-if", - "fastrand 2.0.1", - "redox_syscall 0.4.1", - "rustix 0.38.21", - "windows-sys 0.48.0", + "fastrand 2.0.2", + "rustix", + "windows-sys 0.52.0", ] [[package]] name = "termcolor" -version = "1.3.0" +version = "1.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6093bad37da69aab9d123a8091e4be0aa4a03e4d601ec641c327398315f62b64" +checksum = "06794f8f6c5c898b3275aebefa6b8a1cb24cd2c6c79397ab15774837a0bc5755" dependencies = [ "winapi-util", ] @@ -3630,35 +3668,35 @@ version = "0.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "21bebf2b7c9e0a515f6e0f8c51dc0f8e4696391e6f1ff30379559f8365fb0df7" dependencies = [ - "rustix 0.38.21", + "rustix", "windows-sys 0.48.0", ] [[package]] name = "thiserror" -version = "1.0.50" +version = "1.0.58" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f9a7210f5c9a7156bb50aa36aed4c95afb51df0df00713949448cf9e97d382d2" +checksum = "03468839009160513471e86a034bb2c5c0e4baae3b43f79ffc55c4a5427b3297" dependencies = [ "thiserror-impl", ] [[package]] name = "thiserror-impl" -version = "1.0.50" +version = "1.0.58" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "266b2e40bc00e5a6c09c3584011e08b06f123c00362c92b975ba9843aaaa14b8" +checksum = "c61f3ba182994efc43764a46c018c347bc492c79f024e705f46567b418f6d4f7" dependencies = [ "proc-macro2", "quote", - "syn 2.0.39", + "syn 2.0.58", ] [[package]] name = "tiff" -version = "0.9.0" +version = "0.9.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6d172b0f4d3fba17ba89811858b9d3d97f928aece846475bbda076ca46736211" +checksum = "ba1310fcea54c6a9a4fd1aad794ecc02c31682f6bfbecdf460bf19533eed1e3e" dependencies = [ "flate2", "jpeg-decoder", @@ -3733,9 +3771,9 @@ checksum = "1f3ccbac311fea05f86f61904b462b55fb3df8837a366dfc601a0161d0532f20" [[package]] name = "tokio" -version = "1.33.0" +version = "1.37.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4f38200e3ef7995e5ef13baec2f432a6da0aa9ac495b2c0e8f3b7eec2c92d653" +checksum = "1adbebffeca75fcfd058afa480fb6c0b81e165a0323f9c9d39c9697e37c46787" dependencies = [ "backtrace", "bytes", @@ -3744,7 +3782,7 @@ dependencies = [ "num_cpus", "pin-project-lite", "signal-hook-registry", - "socket2 0.5.5", + "socket2", "tokio-macros", "tracing", "windows-sys 0.48.0", @@ -3752,30 +3790,31 @@ dependencies = [ [[package]] name = "tokio-macros" -version = "2.1.0" +version = "2.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "630bdcf245f78637c13ec01ffae6187cca34625e8c63150d424b59e55af2675e" +checksum = "5b8a1e28f2deaa14e508979454cb3a223b10b938b45af148bc0986de36f1923b" dependencies = [ "proc-macro2", "quote", - "syn 2.0.39", + "syn 2.0.58", ] [[package]] name = "tokio-rustls" -version = "0.24.1" +version = "0.25.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c28327cf380ac148141087fbfb9de9d7bd4e84ab5d2c28fbc911d753de8a7081" +checksum = "775e0c0f0adb3a2f22a00c4745d728b479985fc15ee7ca6a2608388c5569860f" dependencies = [ "rustls", + "rustls-pki-types", "tokio", ] [[package]] name = "tokio-stream" -version = "0.1.14" +version = "0.1.15" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "397c988d37662c7dda6d2208364a706264bf3d6138b11d436cbac0ad38832842" +checksum = "267ac89e0bec6e691e5813911606935d77c476ff49024f98abcea3e7b15e37af" dependencies = [ "futures-core", "pin-project-lite", @@ -3798,15 +3837,15 @@ dependencies = [ [[package]] name = "toml" -version = "0.8.8" +version = "0.8.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a1a195ec8c9da26928f773888e0742ca3ca1040c6cd859c919c9f59c1954ab35" +checksum = "e9dd1545e8208b4a5af1aa9bbd0b4cf7e9ea08fabc5d0a5c67fcaafa17433aa3" dependencies = [ - "indexmap 2.1.0", + "indexmap 2.2.6", "serde", "serde_spanned", "toml_datetime", - "toml_edit 0.21.0", + "toml_edit 0.22.9", ] [[package]] @@ -3824,22 +3863,33 @@ version = "0.19.15" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1b5bb770da30e5cbfde35a2d7b9b8a2c4b8ef89548a7a6aeab5c9a576e3e7421" dependencies = [ - "indexmap 2.1.0", + "indexmap 2.2.6", "toml_datetime", - "winnow", + "winnow 0.5.40", ] [[package]] name = "toml_edit" -version = "0.21.0" +version = "0.21.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6a8534fd7f78b5405e860340ad6575217ce99f38d4d5c8f2442cb5ecb50090e1" +dependencies = [ + "indexmap 2.2.6", + "toml_datetime", + "winnow 0.5.40", +] + +[[package]] +name = "toml_edit" +version = "0.22.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d34d383cd00a163b4a5b85053df514d45bc330f6de7737edfe0a93311d1eaa03" +checksum = "8e40bb779c5187258fd7aad0eb68cb8706a0a81fa712fbea808ab43c4b8374c4" dependencies = [ - "indexmap 2.1.0", + "indexmap 2.2.6", "serde", "serde_spanned", "toml_datetime", - "winnow", + "winnow 0.6.5", ] [[package]] @@ -3855,6 +3905,7 @@ dependencies = [ "tokio", "tower-layer", "tower-service", + "tracing", ] [[package]] @@ -3875,6 +3926,7 @@ version = "0.1.40" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c3523ab5a71916ccf420eebdf5521fcef02141234bbc0b8a49f2fdc4544364ef" dependencies = [ + "log", "pin-project-lite", "tracing-attributes", "tracing-core", @@ -3888,7 +3940,7 @@ checksum = "34704c8d6ebcbc939824180af020566b01a7c01f80641264eba0999f6c2b6be7" dependencies = [ "proc-macro2", "quote", - "syn 2.0.39", + "syn 2.0.58", ] [[package]] @@ -3902,9 +3954,9 @@ dependencies = [ [[package]] name = "try-lock" -version = "0.2.4" +version = "0.2.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3528ecfd12c466c6f163363caf2d02a71161dd5e1cc6ae7b34207ea2d42d81ed" +checksum = "e421abadd41a4225275504ea4d6566923418b7f05506fbc9c0fe86ba7396114b" [[package]] name = "ttf-parser" @@ -3937,19 +3989,20 @@ checksum = "42ff0bf0c66b8238c6f3b578df37d0b7848e55df8577b3f74f92a69acceeb825" [[package]] name = "uds_windows" -version = "1.0.2" +version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ce65604324d3cce9b966701489fbd0cf318cb1f7bd9dd07ac9a4ee6fb791930d" +checksum = "89daebc3e6fd160ac4aa9fc8b3bf71e1f74fbf92367ae71fb83a037e8bf164b9" dependencies = [ + "memoffset 0.9.1", "tempfile", "winapi", ] [[package]] name = "unicode-bidi" -version = "0.3.13" +version = "0.3.15" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "92888ba5573ff080736b3648696b70cafad7d250551175acbaa4e0385b3e1460" +checksum = "08f95100a766bf4f8f28f90d77e0a5461bbdb219042e7679bebe79004fed8d75" [[package]] name = "unicode-bidi-mirroring" @@ -3983,24 +4036,24 @@ checksum = "3b09c83c3c29d37506a3e260c08c03743a6bb66a9cd432c6934ab501a190571f" [[package]] name = "unicode-normalization" -version = "0.1.22" +version = "0.1.23" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5c5713f0fc4b5db668a2ac63cdb7bb4469d8c9fed047b1d0292cc7b0ce2ba921" +checksum = "a56d1686db2308d901306f92a263857ef59ea39678a5458e7cb17f01415101f5" dependencies = [ "tinyvec", ] [[package]] name = "unicode-script" -version = "0.5.5" +version = "0.5.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7d817255e1bed6dfd4ca47258685d14d2bdcfbc64fdc9e3819bd5848057b8ecc" +checksum = "ad8d71f5726e5f285a935e9fe8edfd53f0491eb6e9a5774097fdabee7cd8c9cd" [[package]] name = "unicode-segmentation" -version = "1.10.1" +version = "1.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1dd624098567895118886609431a7c3b8f516e41d30e0643f03d94592a147e36" +checksum = "d4c87d22b6e3f4a18d4d40ef354e97c90fcb14dd91d7dc0aa9d8a1172ebf7202" [[package]] name = "unicode-width" @@ -4022,9 +4075,9 @@ checksum = "8ecb6da28b8a351d773b68d5825ac39017e680750f980f3a1a85cd8dd28a47c1" [[package]] name = "url" -version = "2.4.1" +version = "2.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "143b538f18257fac9cad154828a57c6bf5157e1aa604d4816b5995bf6de87ae5" +checksum = "31e6302e3bb753d46e83516cae55ae196fc0c309407cf11ab35cc51a4c2a4633" dependencies = [ "form_urlencoded", "idna", @@ -4043,12 +4096,6 @@ version = "0.9.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "49874b5167b65d7193b8aba1567f5c7d93d001cafc34600cee003eda787e483f" -[[package]] -name = "waker-fn" -version = "1.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f3c4517f54858c779bbcbf228f4fca63d121bf85fbecb2dc578cdf4a39395690" - [[package]] name = "want" version = "0.3.1" @@ -4066,9 +4113,9 @@ checksum = "9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423" [[package]] name = "wasm-bindgen" -version = "0.2.88" +version = "0.2.92" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7daec296f25a1bae309c0cd5c29c4b260e510e6d813c286b19eaadf409d40fce" +checksum = "4be2531df63900aeb2bca0daaaddec08491ee64ceecbee5076636a3b026795a8" dependencies = [ "cfg-if", "wasm-bindgen-macro", @@ -4076,24 +4123,24 @@ dependencies = [ [[package]] name = "wasm-bindgen-backend" -version = "0.2.88" +version = "0.2.92" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e397f4664c0e4e428e8313a469aaa58310d302159845980fd23b0f22a847f217" +checksum = "614d787b966d3989fa7bb98a654e369c762374fd3213d212cfc0251257e747da" dependencies = [ "bumpalo", "log", "once_cell", "proc-macro2", "quote", - "syn 2.0.39", + "syn 2.0.58", "wasm-bindgen-shared", ] [[package]] name = "wasm-bindgen-futures" -version = "0.4.38" +version = "0.4.42" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9afec9963e3d0994cac82455b2b3502b81a7f40f9a0d32181f7528d9f4b43e02" +checksum = "76bc14366121efc8dbb487ab05bcc9d346b3b5ec0eaa76e46594cabbe51762c0" dependencies = [ "cfg-if", "js-sys", @@ -4103,9 +4150,9 @@ dependencies = [ [[package]] name = "wasm-bindgen-macro" -version = "0.2.88" +version = "0.2.92" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5961017b3b08ad5f3fe39f1e79877f8ee7c23c5e5fd5eb80de95abc41f1f16b2" +checksum = "a1f8823de937b71b9460c0c34e25f3da88250760bec0ebac694b49997550d726" dependencies = [ "quote", "wasm-bindgen-macro-support", @@ -4113,22 +4160,22 @@ dependencies = [ [[package]] name = "wasm-bindgen-macro-support" -version = "0.2.88" +version = "0.2.92" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c5353b8dab669f5e10f5bd76df26a9360c748f054f862ff5f3f8aae0c7fb3907" +checksum = "e94f17b526d0a461a191c78ea52bbce64071ed5c04c9ffe424dcb38f74171bb7" dependencies = [ "proc-macro2", "quote", - "syn 2.0.39", + "syn 2.0.58", "wasm-bindgen-backend", "wasm-bindgen-shared", ] [[package]] name = "wasm-bindgen-shared" -version = "0.2.88" +version = "0.2.92" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0d046c5d029ba91a1ed14da14dca44b68bf2f124cfbaf741c54151fdb3e0750b" +checksum = "af190c94f2773fdb3729c55b007a722abb5384da03bc0986df4c289bf5567e96" [[package]] name = "wasm-timer" @@ -4160,6 +4207,20 @@ dependencies = [ "wayland-sys 0.30.1", ] +[[package]] +name = "wayland-backend" +version = "0.3.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9d50fa61ce90d76474c87f5fc002828d81b32677340112b4ef08079a9d459a40" +dependencies = [ + "cc", + "downcast-rs", + "rustix", + "scoped-tls", + "smallvec", + "wayland-sys 0.31.1", +] + [[package]] name = "wayland-client" version = "0.29.5" @@ -4184,10 +4245,22 @@ checksum = "489c9654770f674fc7e266b3c579f4053d7551df0ceb392f153adb1f9ed06ac8" dependencies = [ "bitflags 1.3.2", "nix 0.26.4", - "wayland-backend", + "wayland-backend 0.1.2", "wayland-scanner 0.30.1", ] +[[package]] +name = "wayland-client" +version = "0.31.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "82fb96ee935c2cea6668ccb470fb7771f6215d1691746c2d896b447a00ad3f1f" +dependencies = [ + "bitflags 2.5.0", + "rustix", + "wayland-backend 0.3.3", + "wayland-scanner 0.31.1", +] + [[package]] name = "wayland-commons" version = "0.29.5" @@ -4200,6 +4273,17 @@ dependencies = [ "wayland-sys 0.29.5", ] +[[package]] +name = "wayland-csd-frame" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "625c5029dbd43d25e6aa9615e88b829a5cad13b2819c4ae129fdbb7c31ab4c7e" +dependencies = [ + "bitflags 2.5.0", + "cursor-icon", + "wayland-backend 0.3.3", +] + [[package]] name = "wayland-cursor" version = "0.29.5" @@ -4211,6 +4295,17 @@ dependencies = [ "xcursor", ] +[[package]] +name = "wayland-cursor" +version = "0.31.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "71ce5fa868dd13d11a0d04c5e2e65726d0897be8de247c0c5a65886e283231ba" +dependencies = [ + "rustix", + "wayland-client 0.31.2", + "xcursor", +] + [[package]] name = "wayland-protocols" version = "0.29.5" @@ -4223,6 +4318,31 @@ dependencies = [ "wayland-scanner 0.29.5", ] +[[package]] +name = "wayland-protocols" +version = "0.31.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8f81f365b8b4a97f422ac0e8737c438024b5951734506b0e1d775c73030561f4" +dependencies = [ + "bitflags 2.5.0", + "wayland-backend 0.3.3", + "wayland-client 0.31.2", + "wayland-scanner 0.31.1", +] + +[[package]] +name = "wayland-protocols-wlr" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ad1f61b76b6c2d8742e10f9ba5c3737f6530b4c243132c2a2ccc8aa96fe25cd6" +dependencies = [ + "bitflags 2.5.0", + "wayland-backend 0.3.3", + "wayland-client 0.31.2", + "wayland-protocols 0.31.2", + "wayland-scanner 0.31.1", +] + [[package]] name = "wayland-scanner" version = "0.29.5" @@ -4241,7 +4361,18 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b9b873b257fbc32ec909c0eb80dea312076a67014e65e245f5eb69a6b8ab330e" dependencies = [ "proc-macro2", - "quick-xml", + "quick-xml 0.28.2", + "quote", +] + +[[package]] +name = "wayland-scanner" +version = "0.31.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "63b3a62929287001986fb58c789dce9b67604a397c15c611ad9f747300b6c283" +dependencies = [ + "proc-macro2", + "quick-xml 0.31.0", "quote", ] @@ -4268,11 +4399,23 @@ dependencies = [ "pkg-config", ] +[[package]] +name = "wayland-sys" +version = "0.31.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "15a0c8eaff5216d07f226cb7a549159267f3467b289d9a2e52fd3ef5aae2b7af" +dependencies = [ + "dlib", + "log", + "once_cell", + "pkg-config", +] + [[package]] name = "web-sys" -version = "0.3.65" +version = "0.3.69" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5db499c5f66323272151db0e666cd34f78617522fb0c1604d31a27c50c206a85" +checksum = "77afa9a11836342370f4817622a2f0f418b134426d91a82dfb48f532d2ec13ef" dependencies = [ "js-sys", "wasm-bindgen", @@ -4280,15 +4423,18 @@ dependencies = [ [[package]] name = "webpki-roots" -version = "0.25.2" +version = "0.26.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "14247bb57be4f377dfb94c72830b8ce8fc6beac03cf4bf7b9732eadd414123fc" +checksum = "b3de34ae270483955a94f4b21bdaaeb83d508bb84a01435f393818edb0012009" +dependencies = [ + "rustls-pki-types", +] [[package]] name = "weezl" -version = "0.1.7" +version = "0.1.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9193164d4de03a926d909d3bc7c30543cecb35400c02114792c2cae20d5e2dbb" +checksum = "53a85b86a771b1c87058196170769dd264f66c0782acf1ae6cc51bfd64b39082" [[package]] name = "wgpu" @@ -4322,7 +4468,7 @@ checksum = "8f478237b4bf0d5b70a39898a66fa67ca3a007d79f2520485b8b0c3dfc46f8c2" dependencies = [ "arrayvec", "bit-vec", - "bitflags 2.4.1", + "bitflags 2.5.0", "codespan-reporting", "log", "naga", @@ -4347,7 +4493,7 @@ dependencies = [ "arrayvec", "ash", "bit-set", - "bitflags 2.4.1", + "bitflags 2.5.0", "block", "core-graphics-types", "d3d12", @@ -4360,7 +4506,7 @@ dependencies = [ "js-sys", "khronos-egl", "libc", - "libloading 0.8.1", + "libloading 0.8.3", "log", "metal", "naga", @@ -4385,16 +4531,16 @@ version = "0.16.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d0c153280bb108c2979eb5c7391cb18c56642dd3c072e55f52065e13e2a1252a" dependencies = [ - "bitflags 2.4.1", + "bitflags 2.5.0", "js-sys", "web-sys", ] [[package]] name = "widestring" -version = "1.0.2" +version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "653f141f39ec16bba3c5abe400a0c60da7468261cc2cbf36805022876bc721a8" +checksum = "7219d36b6eac893fa81e84ebe06485e7dcbb616177469b142df14f1f4deb1311" [[package]] name = "winapi" @@ -4423,9 +4569,9 @@ dependencies = [ [[package]] name = "winapi-wsapoll" -version = "0.1.1" +version = "0.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "44c17110f57155602a80dca10be03852116403c9ff3cd25b079d666f2aa3df6e" +checksum = "1eafc5f679c576995526e81635d0cf9695841736712b4e892f87abbe6fed3f28" dependencies = [ "winapi", ] @@ -4461,11 +4607,11 @@ dependencies = [ [[package]] name = "windows-core" -version = "0.51.1" +version = "0.52.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f1f8cf84f35d2db49a46868f947758c7a1138116f7fac3bc844f43ade1292e64" +checksum = "33ab640c8d7e35bf8ba19b884ba838ceb4fba93a4e8c65a9059d08afcfc683d9" dependencies = [ - "windows-targets 0.48.5", + "windows-targets 0.52.4", ] [[package]] @@ -4486,6 +4632,15 @@ dependencies = [ "windows-targets 0.48.5", ] +[[package]] +name = "windows-sys" +version = "0.52.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "282be5f36a8ce781fad8c8ae18fa3f9beff57ec1b52cb3de0789201425d9a33d" +dependencies = [ + "windows-targets 0.52.4", +] + [[package]] name = "windows-targets" version = "0.42.2" @@ -4516,6 +4671,21 @@ dependencies = [ "windows_x86_64_msvc 0.48.5", ] +[[package]] +name = "windows-targets" +version = "0.52.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7dd37b7e5ab9018759f893a1952c9420d060016fc19a472b4bb20d1bdd694d1b" +dependencies = [ + "windows_aarch64_gnullvm 0.52.4", + "windows_aarch64_msvc 0.52.4", + "windows_i686_gnu 0.52.4", + "windows_i686_msvc 0.52.4", + "windows_x86_64_gnu 0.52.4", + "windows_x86_64_gnullvm 0.52.4", + "windows_x86_64_msvc 0.52.4", +] + [[package]] name = "windows_aarch64_gnullvm" version = "0.42.2" @@ -4528,6 +4698,12 @@ version = "0.48.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "2b38e32f0abccf9987a4e3079dfb67dcd799fb61361e53e2882c3cbaf0d905d8" +[[package]] +name = "windows_aarch64_gnullvm" +version = "0.52.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bcf46cf4c365c6f2d1cc93ce535f2c8b244591df96ceee75d8e83deb70a9cac9" + [[package]] name = "windows_aarch64_msvc" version = "0.42.2" @@ -4540,6 +4716,12 @@ version = "0.48.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "dc35310971f3b2dbbf3f0690a219f40e2d9afcf64f9ab7cc1be722937c26b4bc" +[[package]] +name = "windows_aarch64_msvc" +version = "0.52.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "da9f259dd3bcf6990b55bffd094c4f7235817ba4ceebde8e6d11cd0c5633b675" + [[package]] name = "windows_i686_gnu" version = "0.42.2" @@ -4552,6 +4734,12 @@ version = "0.48.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a75915e7def60c94dcef72200b9a8e58e5091744960da64ec734a6c6e9b3743e" +[[package]] +name = "windows_i686_gnu" +version = "0.52.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b474d8268f99e0995f25b9f095bc7434632601028cf86590aea5c8a5cb7801d3" + [[package]] name = "windows_i686_msvc" version = "0.42.2" @@ -4564,6 +4752,12 @@ version = "0.48.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8f55c233f70c4b27f66c523580f78f1004e8b5a8b659e05a4eb49d4166cca406" +[[package]] +name = "windows_i686_msvc" +version = "0.52.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1515e9a29e5bed743cb4415a9ecf5dfca648ce85ee42e15873c3cd8610ff8e02" + [[package]] name = "windows_x86_64_gnu" version = "0.42.2" @@ -4576,6 +4770,12 @@ 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.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5eee091590e89cc02ad514ffe3ead9eb6b660aedca2183455434b93546371a03" + [[package]] name = "windows_x86_64_gnullvm" version = "0.42.2" @@ -4588,6 +4788,12 @@ 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.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "77ca79f2451b49fa9e2af39f0747fe999fcda4f5e241b2898624dca97a1f2177" + [[package]] name = "windows_x86_64_msvc" version = "0.42.2" @@ -4600,6 +4806,12 @@ 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.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "32b752e52a2da0ddfbdbcc6fceadfeede4c939ed16d13e648833a61dfb611ed8" + [[package]] name = "winit" version = "0.28.7" @@ -4624,11 +4836,11 @@ dependencies = [ "raw-window-handle", "redox_syscall 0.3.5", "sctk-adwaita", - "smithay-client-toolkit", + "smithay-client-toolkit 0.16.1", "wasm-bindgen", "wayland-client 0.29.5", "wayland-commons", - "wayland-protocols", + "wayland-protocols 0.29.5", "wayland-scanner 0.29.5", "web-sys", "windows-sys 0.45.0", @@ -4637,18 +4849,27 @@ dependencies = [ [[package]] name = "winnow" -version = "0.5.19" +version = "0.5.40" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "829846f3e3db426d4cee4510841b71a8e58aa2a76b1132579487ae430ccd9c7b" +checksum = "f593a95398737aeed53e489c785df13f3618e41dbcd6718c6addbf1395aa6876" +dependencies = [ + "memchr", +] + +[[package]] +name = "winnow" +version = "0.6.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dffa400e67ed5a4dd237983829e66475f0a4a26938c4b04c21baede6262215b8" dependencies = [ "memchr", ] [[package]] name = "winreg" -version = "0.50.0" +version = "0.52.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "524e57b2c537c0f9b1e69f1965311ec12182b4122e45035b1508cd24d2adadb1" +checksum = "a277a57398d4bfa075df44f501a17cfdf8542d224f0d36095a2adc7aee4ef0a5" dependencies = [ "cfg-if", "windows-sys 0.48.0", @@ -4665,32 +4886,31 @@ dependencies = [ "pkg-config", ] -[[package]] -name = "x11rb" -version = "0.9.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6e99be55648b3ae2a52342f9a870c0e138709a3493261ce9b469afe6e4df6d8a" -dependencies = [ - "gethostname", - "nix 0.22.3", - "winapi", - "winapi-wsapoll", -] - [[package]] name = "x11rb" version = "0.11.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "cdf3c79412dd91bae7a7366b8ad1565a85e35dd049affc3a6a2c549e97419617" dependencies = [ - "gethostname", + "gethostname 0.2.3", "libc", "libloading 0.7.4", "nix 0.25.1", "once_cell", "winapi", "winapi-wsapoll", - "x11rb-protocol", + "x11rb-protocol 0.11.1", +] + +[[package]] +name = "x11rb" +version = "0.13.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f8f25ead8c7e4cba123243a6367da5d3990e0d3affa708ea19dce96356bd9f1a" +dependencies = [ + "gethostname 0.4.3", + "rustix", + "x11rb-protocol 0.13.0", ] [[package]] @@ -4702,30 +4922,39 @@ dependencies = [ "nix 0.25.1", ] +[[package]] +name = "x11rb-protocol" +version = "0.13.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e63e71c4b8bd9ffec2c963173a4dc4cbde9ee96961d4fcb4429db9929b606c34" + [[package]] name = "xcursor" -version = "0.3.4" +version = "0.3.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "463705a63313cd4301184381c5e8042f0a7e9b4bb63653f216311d4ae74690b7" -dependencies = [ - "nom", -] +checksum = "6a0ccd7b4a5345edfcd0c3535718a4e9ff7798ffc536bb5b5a0e26ff84732911" [[package]] name = "xdg-home" -version = "1.0.0" +version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2769203cd13a0c6015d515be729c526d041e9cf2c0cc478d57faee85f40c6dcd" +checksum = "21e5a325c3cb8398ad6cf859c1135b25dd29e186679cf2da7581d9679f63b38e" dependencies = [ - "nix 0.26.4", + "libc", "winapi", ] +[[package]] +name = "xkeysym" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "054a8e68b76250b253f671d1268cb7f1ae089ec35e195b2efb2a4e9a836d0621" + [[package]] name = "xml-rs" -version = "0.8.19" +version = "0.8.20" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0fcb9cbac069e033553e8bb871be2fbdffcab578eb25bd0f7c508cedc6dcd75a" +checksum = "791978798f0597cfc70478424c2b4fdc2b7a8024aaff78497ef00f24ef674193" [[package]] name = "yazi" @@ -4735,24 +4964,22 @@ checksum = "c94451ac9513335b5e23d7a8a2b61a7102398b8cca5160829d313e84c9d98be1" [[package]] name = "zbus" -version = "3.14.1" +version = "4.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "31de390a2d872e4cd04edd71b425e29853f786dc99317ed72d73d6fcf5ebb948" +checksum = "c9ff46f2a25abd690ed072054733e0bc3157e3d4c45f41bd183dce09c2ff8ab9" dependencies = [ "async-broadcast", "async-process", "async-recursion", "async-trait", - "byteorder", "derivative", "enumflags2", - "event-listener 2.5.3", + "event-listener 5.3.0", "futures-core", "futures-sink", "futures-util", "hex", - "nix 0.26.4", - "once_cell", + "nix 0.28.0", "ordered-stream", "rand", "serde", @@ -4762,7 +4989,7 @@ dependencies = [ "tokio", "tracing", "uds_windows", - "winapi", + "windows-sys 0.52.0", "xdg-home", "zbus_macros", "zbus_names", @@ -4771,11 +4998,11 @@ dependencies = [ [[package]] name = "zbus_macros" -version = "3.14.1" +version = "4.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "41d1794a946878c0e807f55a397187c11fc7a038ba5d868e7db4f3bd7760bc9d" +checksum = "4e0e3852c93dcdb49c9462afe67a2a468f7bd464150d866e861eaf06208633e0" dependencies = [ - "proc-macro-crate", + "proc-macro-crate 3.1.0", "proc-macro2", "quote", "regex", @@ -4785,9 +5012,9 @@ dependencies = [ [[package]] name = "zbus_names" -version = "2.6.0" +version = "3.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fb80bb776dbda6e23d705cf0123c3b95df99c4ebeaec6c2599d4a5419902b4a9" +checksum = "4b9b1fef7d021261cc16cba64c351d291b715febe0fa10dc3a443ac5a5022e6c" dependencies = [ "serde", "static_assertions", @@ -4802,24 +5029,30 @@ checksum = "dd15f8e0dbb966fd9245e7498c7e9e5055d9e5c8b676b95bd67091cd11a1e697" [[package]] name = "zerocopy" -version = "0.7.25" +version = "0.7.32" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8cd369a67c0edfef15010f980c3cbe45d7f651deac2cd67ce097cd801de16557" +checksum = "74d4d3961e53fa4c9a25a8637fc2bfaf2595b3d3ae34875568a5cf64787716be" dependencies = [ "zerocopy-derive", ] [[package]] name = "zerocopy-derive" -version = "0.7.25" +version = "0.7.32" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c2f140bda219a26ccc0cdb03dba58af72590c53b22642577d88a927bc5c87d6b" +checksum = "9ce1b18ccd8e73a9321186f97e46f9f04b778851177567b1975109d26a08d2a6" dependencies = [ "proc-macro2", "quote", - "syn 2.0.39", + "syn 2.0.58", ] +[[package]] +name = "zeroize" +version = "1.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "525b4ec142c6b68a2d10f01f7bbf6755599ca3f81ea53b8431b7dd348f5fdb2d" + [[package]] name = "zune-inflate" version = "0.2.54" @@ -4831,13 +5064,12 @@ dependencies = [ [[package]] name = "zvariant" -version = "3.15.0" +version = "4.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "44b291bee0d960c53170780af148dca5fa260a63cdd24f1962fa82e03e53338c" +checksum = "2c1b3ca6db667bfada0f1ebfc94b2b1759ba25472ee5373d4551bb892616389a" dependencies = [ - "byteorder", + "endi", "enumflags2", - "libc", "serde", "static_assertions", "zvariant_derive", @@ -4845,11 +5077,11 @@ dependencies = [ [[package]] name = "zvariant_derive" -version = "3.15.0" +version = "4.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "934d7a7dfc310d6ee06c87ffe88ef4eca7d3e37bb251dece2ef93da8f17d8ecd" +checksum = "b7a4b236063316163b69039f77ce3117accb41a09567fd24c168e43491e521bc" dependencies = [ - "proc-macro-crate", + "proc-macro-crate 3.1.0", "proc-macro2", "quote", "syn 1.0.109", @@ -4858,9 +5090,9 @@ dependencies = [ [[package]] name = "zvariant_utils" -version = "1.0.1" +version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7234f0d811589db492d16893e3f21e8e2fd282e6d01b0cddee310322062cc200" +checksum = "00bedb16a193cc12451873fee2a1bc6550225acece0e36f333e68326c73c8172" dependencies = [ "proc-macro2", "quote", diff --git a/Cargo.toml b/Cargo.toml index 240d3d4d8132ab9f32f17323474a990397fa9389..42bd06177e1d06d9a1cd35c12a988888de66503a 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -39,76 +39,73 @@ opt-level = "s" panic = 'unwind' [workspace.dependencies] -url = { version = "2", default-features = false } -zbus = { version = "3", default-features = false, features = ["tokio"] } -chrono = { version = "0.4", default-features = false, features = ["clock"] } -sha256 = { version = "1", default-features = false, features = ["async"] } -anyhow = { version = "1", default-features = false, features = ["std"] } -regex = { version = "1.9", default-features = false, features = [ - "std", - "perf", -] } -log = "0.4" +url = { version = "*", default-features = false } +zbus = { version = "*", default-features = false, features = ["tokio"] } +chrono = { version = "*", default-features = false, features = ["clock"] } +sha256 = { version = "*", default-features = false, features = ["async"] } +anyhow = { version = "*", default-features = false, features = ["std"] } +regex = { version = "*", default-features = false, features = ["std", "perf"] } +log = "*" rand = "*" base64 = "*" -dirs = "5" +dirs = "*" # Data Structures -hashbrown = { version = "0.14", features = ["serde"] } +hashbrown = { version = "*", features = ["serde"] } # Serialization & Deserialization -serde_json = { version = "1", default-features = false, features = [ +serde_json = { version = "*", default-features = false, features = [ "std", "preserve_order", ] } -toml = { version = "0.8", default-features = false, features = [ +toml = { version = "*", default-features = false, features = [ "preserve_order", "display", "parse", ] } -serde = { version = "1", default-features = false, features = [ +serde = { version = "*", default-features = false, features = [ "rc", "std", "derive", ] } # Async stuff -async-trait = "0.1" -futures = { version = "0.3", default-features = false, features = [ +async-trait = "*" +futures = { version = "*", default-features = false, features = [ "std", "async-await", ] } -tokio = { version = "1", default-features = false, features = [ +tokio = { version = "*", default-features = false, features = [ "macros", "rt-multi-thread", "sync", "fs", "signal", ] } -tokio-stream = { version = "0.1", default-features = false } +tokio-stream = { version = "*", default-features = false, features = ["net"] } # Web stuff -reqwest = { version = "0.11", default-features = false, features = [ +reqwest = { version = "*", default-features = false, features = [ "rustls-tls", "json", ] } -axum = { version = "0.6", default-features = false, features = [ +axum = { version = "*", default-features = false, features = [ "http1", "json", "macros", "tokio", ] } -hyper = { version = "0.14", default-features = false, features = [ +tower = { version = "*", features = ["util"] } +hyper-util = { version = "*", features = ["tokio", "server-auto", "http1"] } +hyper = { version = "*", default-features = false, features = [ "http1", "server", - "runtime", - "tcp", ] } # Arguments -roff = "0.2" -clap_complete = { version = "4", default-features = false } -clap = { version = "4", default-features = false, features = [ +roff = "*" +clap_complete = { version = "*", default-features = false } +clap = { version = "*", default-features = false, features = [ "usage", "help", "std", @@ -116,10 +113,10 @@ clap = { version = "4", default-features = false, features = [ "derive", ] } -# GUI +# GUI, keep in mind that we must use the same version of image as ixed! image = { version = "0.24", default-features = false, features = ["png"] } -iced = { version = "0.10", features = ["tokio", "system", "advanced", "image"] } -iced_aw = { version = "0.7", default-features = false, features = [ +iced = { version = "*", features = ["tokio", "system", "advanced", "image"] } +iced_aw = { version = "*", default-features = false, features = [ "split", "wrap", "badge", @@ -129,7 +126,7 @@ iced_aw = { version = "0.7", default-features = false, features = [ ] } # Proc macro things -syn = "2" -quote = { version = "1", default-features = false } -proc-macro2 = { version = "1", default-features = false } -proc-macro-error = { version = "1.0", default-features = false } +syn = "*" +quote = { version = "*", default-features = false } +proc-macro2 = { version = "*", default-features = false } +proc-macro-error = { version = "*", default-features = false } diff --git a/amadeus/src/app.rs b/amadeus/src/app.rs index 262a7dd4b4398625359a7fb0b83e762ce4c4477f..1392f672f41ebef3df1fc94c1dd57e47f82cf692 100644 --- a/amadeus/src/app.rs +++ b/amadeus/src/app.rs @@ -132,15 +132,11 @@ impl Amadeus { /// Commands to issue to clear data from the [Amadeus] application. fn clear() -> Command<Message> { Message::from_iter([ - Message::ConfigMessage(config::Message::Infos(None)), - Message::MainPanelMessage(mainpanel::Message::Queue(mainpanel::queue::Message::Clear)), - Message::MainPanelMessage(mainpanel::Message::History( - mainpanel::history::Message::Clear, - )), - Message::MainPanelMessage(mainpanel::Message::Playlists( - mainpanel::playlists::Message::Clear, - )), - Message::SidebarMessage(sidebar::Message::ClearPlaylists), + Message::Config(config::Message::Infos(None)), + Message::MainPanel(mainpanel::Message::Queue(queue::Message::Clear)), + Message::MainPanel(mainpanel::Message::History(history::Message::Clear)), + Message::MainPanel(mainpanel::Message::Playlists(playlists::Message::Clear)), + Message::Sidebar(sidebar::Message::ClearPlaylists), ]) .perform() } @@ -197,12 +193,12 @@ impl Amadeus { Message::from_err_ors( res.map(|info| { Message::from_iter([ - Message::ConfigMessage(config::Message::Infos(Some(info))), + Message::Config(config::Message::Infos(Some(info))), Message::ConnectionStatus(true), ]) }), [ - Message::ConfigMessage(config::Message::Infos(None)), + Message::Config(config::Message::Infos(None)), Message::ConnectionStatus(false), ], ) @@ -450,12 +446,12 @@ impl Amadeus { Message::from_err_or_elses( res.map(|infos| { Message::from_iter([ - Message::ConfigMessage(config::Message::Infos(Some(infos))), + Message::Config(config::Message::Infos(Some(infos))), Message::ConnectionStatus(true), ]) }), || { - [Message::ConfigMessage(config::Message::Infos(None))] + [Message::Config(config::Message::Infos(None))] .into_iter() .chain(flag.then_some(Message::MainPanelDisplay(MainPanelDisplay::Config))) }, @@ -646,7 +642,7 @@ impl Application for Amadeus { Message::ConnectionStatus(true), Message::DatabaseEpoch(epoch), Message::RefreshRequest(RefreshRequest::Playlists), - Message::ConfigMessage(config::Message::Infos(Some(Infos { + Message::Config(config::Message::Infos(Some(Infos { version, last_epoch: Some(epoch), }))), @@ -654,7 +650,7 @@ impl Application for Amadeus { Ok(infos) => Message::from_iter([ Message::ConnectionStatus(true), Message::RefreshRequest(RefreshRequest::Playlists), - Message::ConfigMessage(config::Message::Infos(Some(infos))), + Message::Config(config::Message::Infos(Some(infos))), ]), Err(_) => Message::ConnectionStatus(false), }) @@ -664,18 +660,16 @@ impl Application for Amadeus { let queue = Command::perform(self.get_queue(), |res| { res.map(|queue| { - Message::MainPanelMessage(mainpanel::Message::Queue( - queue::Message::Reload(queue), - )) + Message::MainPanel(mainpanel::Message::Queue(queue::Message::Reload(queue))) }) .unwrap_or(Message::ConnectionStatus(false)) }); let history = Command::perform(self.get_history(), |res| { res.map(|history| { - Message::MainPanelMessage(mainpanel::Message::History( - history::Message::Reload(history), - )) + Message::MainPanel(mainpanel::Message::History(history::Message::Reload( + history, + ))) }) .unwrap_or(Message::ConnectionStatus(false)) }); @@ -705,7 +699,7 @@ impl Application for Amadeus { } // Config changed - Message::ConfigMessage(config) => self.handle_config_message(config), + Message::Config(config) => self.handle_config_message(config), Message::ConfigLoaded => self.command_init_ping(), Message::ReconnectToLektord => Command::batch([ send(KaraStore::into_clear(self.kara_store.clone())), @@ -723,7 +717,7 @@ impl Application for Amadeus { }, // Change what the main panel displays + We have informations to pass to it - Message::MainPanelMessage(message) => self.mainpanel.update(message).map(Message::from), + Message::MainPanel(message) => self.mainpanel.update(message).map(Message::from), Message::MainPanelDisplay(MainPanelDisplay::Config) => { self.show_main_panel = false; Command::none() @@ -736,7 +730,7 @@ impl Application for Amadeus { } // A message for the side panel. - Message::SidebarMessage(message) => self.sidebar.update(message), + Message::Sidebar(message) => self.sidebar.update(message), Message::SideBarResize(size) => { self.sidebar_size = Some(size); Command::none() diff --git a/amadeus/src/components/config/mod.rs b/amadeus/src/components/config/mod.rs index e0ef98f6b7e434d97f7d25ff8622dee2a7e6e769..2f43feff33aa7107bb2081fb733685a682b4a7ab 100644 --- a/amadeus/src/components/config/mod.rs +++ b/amadeus/src/components/config/mod.rs @@ -232,7 +232,7 @@ mod serde_utils { fn visit_u16<E: serde::de::Error>(self, v: u16) -> Result<Self::Value, E> { Ok(super::clamp_time_interval(v as i64)) } fn visit_i8 <E: serde::de::Error>(self, v: i8 ) -> Result<Self::Value, E> { Ok(super::clamp_time_interval(v as i64)) } fn visit_u8 <E: serde::de::Error>(self, v: u8 ) -> Result<Self::Value, E> { Ok(super::clamp_time_interval(v as i64)) } - fn visit_i64<E: serde::de::Error>(self, v: i64) -> Result<Self::Value, E> { Ok(super::clamp_time_interval(v as i64)) } + fn visit_i64<E: serde::de::Error>(self, v: i64) -> Result<Self::Value, E> { Ok(super::clamp_time_interval(v)) } fn visit_u64<E: serde::de::Error>(self, v: u64) -> Result<Self::Value, E> { Ok(super::clamp_time_interval(v.clamp(0, i64::MAX as u64) as i64)) } @@ -548,7 +548,7 @@ impl State { input!(text! "User", "user", &self.config.connect.user.user => UserChanged), input!(password! "Token", "token", &self.config.connect.user.token => TokenChanged), input!(password! "Kurisu Token" token_link, KURISU_TOKEN_LINK, - self.config.connect.kurisu_token.as_ref().map(|token| token.as_str()).unwrap_or_default() + self.config.connect.kurisu_token.as_deref().unwrap_or_default() => KurisuTokenChanged ), ]], diff --git a/amadeus/src/main.rs b/amadeus/src/main.rs index d5ff63038bf992f27d1ed9d0cdec24d6491f05b8..948df8f3829aaa21911c76255fd3d890cfdb1287 100644 --- a/amadeus/src/main.rs +++ b/amadeus/src/main.rs @@ -38,7 +38,6 @@ mod style_sheet; use crate::{app::Amadeus, components::config::AmadeusConfig}; use anyhow::{Context, Result}; use lektor_utils::*; -use style_sheet::sizes::SIZE_FONT_NORMAL; fn main() -> Result<()> { logger::init(Some(log::Level::Debug)).expect("failed to install logger"); @@ -53,7 +52,7 @@ fn main() -> Result<()> { id: Some("Amadeus".to_string()), flags: config, default_font: iced::font::Font::DEFAULT, - default_text_size: SIZE_FONT_NORMAL.into(), + default_text_size: style_sheet::sizes::SIZE_FONT_NORMAL.into(), antialiasing: false, exit_on_close_request: false, diff --git a/amadeus/src/message.rs b/amadeus/src/message.rs index 53bf7889c271dd01b1b8289357fd7a18b06e8ce0..142cee24f30a69f43a6e1973b6027bb2789bae47 100644 --- a/amadeus/src/message.rs +++ b/amadeus/src/message.rs @@ -67,7 +67,7 @@ pub enum Message { /// Got a message from the config componenent, the config could be changed, or we try to get /// informations on the server. - ConfigMessage(config::Message), + Config(config::Message), /// The config was loaded, can start rendering the application. ConfigLoaded, @@ -98,7 +98,7 @@ pub enum Message { MainPanelRequest(mainpanel::Request), /// Message for the main panel, response to a request that was made by the main panel. - MainPanelMessage(mainpanel::Message), + MainPanel(mainpanel::Message), /// Request to refresh some informations from lektord. RefreshRequest(RefreshRequest), @@ -107,7 +107,7 @@ pub enum Message { KaraRequest(kara::Request), /// A message for the sidebar. - SidebarMessage(sidebar::Message), + Sidebar(sidebar::Message), /// Toggle fullscreen. ToggleFullScreen, @@ -285,7 +285,7 @@ impl From<topbar::Request> for Message { impl From<mainpanel::Message> for Message { fn from(value: mainpanel::Message) -> Self { - Message::MainPanelMessage(value) + Message::MainPanel(value) } } @@ -305,7 +305,7 @@ impl From<sidebar::Request> for Message { ShowHistory => Message::MainPanelDisplay(MainPanel(mainpanel::Show::History)), ShowSettings => Message::MainPanelDisplay(Config), RefreshPlaylists => Message::RefreshRequest(RefreshRequest::Playlists), - Scrolled(x) => Message::SidebarMessage(sidebar::Message::Scrolled(x)), + Scrolled(x) => Message::Sidebar(sidebar::Message::Scrolled(x)), ShowPlaylist(x) => Message::from_iter([ Message::RefreshRequest(RefreshRequest::Playlist(x.clone())), Message::MainPanelDisplay(MainPanel(mainpanel::Show::Playlist(x))), @@ -316,7 +316,7 @@ impl From<sidebar::Request> for Message { impl From<sidebar::Message> for Message { fn from(value: sidebar::Message) -> Self { - Message::SidebarMessage(value) + Message::Sidebar(value) } } @@ -342,14 +342,14 @@ impl From<config::Message> for Message { match value { config::Message::None => Message::None, config::Message::OpenLinkInBrowser(x) => Message::OpenLinkInBrowser(x), - value => Message::ConfigMessage(value), + value => Message::Config(value), } } } impl From<history::Message> for Message { fn from(value: history::Message) -> Self { - Self::MainPanelMessage(mainpanel::Message::History(value)) + Self::MainPanel(mainpanel::Message::History(value)) } } @@ -361,7 +361,7 @@ impl From<history::Request> for Message { impl From<queue::Message> for Message { fn from(value: queue::Message) -> Self { - Self::MainPanelMessage(mainpanel::Message::Queue(value)) + Self::MainPanel(mainpanel::Message::Queue(value)) } } @@ -373,7 +373,7 @@ impl From<queue::Request> for Message { impl From<search::Message> for Message { fn from(value: search::Message) -> Self { - Self::MainPanelMessage(mainpanel::Message::Search(value)) + Self::MainPanel(mainpanel::Message::Search(value)) } } @@ -385,7 +385,7 @@ impl From<search::Request> for Message { impl From<playlists::Message> for Message { fn from(value: playlists::Message) -> Self { - Self::MainPanelMessage(mainpanel::Message::Playlists(value)) + Self::MainPanel(mainpanel::Message::Playlists(value)) } } diff --git a/build/.gitignore b/build/.gitignore deleted file mode 100644 index d6b7ef32c8478a48c3994dcadc86837f4371184d..0000000000000000000000000000000000000000 --- a/build/.gitignore +++ /dev/null @@ -1,2 +0,0 @@ -* -!.gitignore diff --git a/lektor_mpris/src/server.rs b/lektor_mpris/src/server.rs index e0200030a767de26dd8e6b54cadb2ed5599b4096..cc12e6b32c94f1c9b19c9fbac8e0e047c09fb195 100644 --- a/lektor_mpris/src/server.rs +++ b/lektor_mpris/src/server.rs @@ -3,7 +3,7 @@ use crate::{types::*, AsMpris}; use lektor_utils::log; -use zbus::{dbus_interface, Connection, ConnectionBuilder, SignalContext as ZSignalCtx}; +use zbus::{Connection, ConnectionBuilder, SignalContext}; /// The adapter for MPRIS. #[derive(Debug)] @@ -81,62 +81,62 @@ struct Main { desktop_entry: String, } -#[dbus_interface(name = "org.mpris.MediaPlayer2")] +#[zbus::interface(name = "org.mpris.MediaPlayer2")] impl Main { /// Quit method - #[dbus_interface(name = "Quit")] + #[zbus(name = "Quit")] fn quit(&self) {} /// Raise method - #[dbus_interface(name = "Raise")] + #[zbus(name = "Raise")] fn raise(&self) {} /// CanQuit property - #[dbus_interface(property, name = "CanQuit")] + #[zbus(property, name = "CanQuit")] fn can_quit(&self) -> bool { false } /// CanRaise property - #[dbus_interface(property, name = "CanRaise")] + #[zbus(property, name = "CanRaise")] fn can_raise(&self) -> bool { false } /// CanSetFullscreen property - #[dbus_interface(property, name = "CanSetFullscreen")] + #[zbus(property, name = "CanSetFullscreen")] fn can_set_fullscreen(&self) -> bool { false } /// DesktopEntry property - #[dbus_interface(property, name = "DesktopEntry")] + #[zbus(property, name = "DesktopEntry")] fn desktop_entry(&self) -> &str { &self.desktop_entry } /// Fullscreen property - #[dbus_interface(property, name = "Fullscreen")] + #[zbus(property, name = "Fullscreen")] fn fullscreen(&self) -> bool { false } - #[dbus_interface(property, name = "Fullscreen")] + #[zbus(property, name = "Fullscreen")] fn set_fullscreen(&self, _value: bool) {} /// HasTrackList property - #[dbus_interface(property, name = "HasTrackList")] + #[zbus(property, name = "HasTrackList")] fn has_track_list(&self) -> bool { true } /// Identity property - #[dbus_interface(property, name = "Identity")] + #[zbus(property, name = "Identity")] fn identity(&self) -> &str { &self.identity } /// SupportedMimeTypes property - #[dbus_interface(property, name = "SupportedMimeTypes")] + #[zbus(property, name = "SupportedMimeTypes")] fn supported_mime_types(&self) -> Vec<&str> { vec!["video/mkv"] } @@ -144,138 +144,138 @@ impl Main { /// SupportedUriSchemes property. It should be `id` and `file` for lektord. /// Here we support `file` for only files in the database to enable the user /// to search the kara folder and drop the files to play them imediatly. - #[dbus_interface(property, name = "SupportedUriSchemes")] + #[zbus(property, name = "SupportedUriSchemes")] fn supported_uri_schemes(&self) -> Vec<&str> { vec!["id", "file"] } } -#[dbus_interface(name = "org.mpris.MediaPlayer2.Player")] +#[zbus::interface(name = "org.mpris.MediaPlayer2.Player")] impl<T: AsMpris + Send + Sync + Clone + 'static> Player<T> { /// Next method - #[dbus_interface(name = "Next")] + #[zbus(name = "Next")] fn next(&self) { self.0.play_next() } /// Pause method - #[dbus_interface(name = "Pause")] + #[zbus(name = "Pause")] fn pause(&self) { self.0.set_playback_status(PlaybackStatus::Paused.into()) } /// Play method - #[dbus_interface(name = "Play")] + #[zbus(name = "Play")] fn play(&self) { self.0.set_playback_status(PlaybackStatus::Playing.into()) } /// OpenUri method - #[dbus_interface(name = "OpenUri")] + #[zbus(name = "OpenUri")] fn open_uri(&self, uri: &str) { self.0.play_file(uri) } /// Toggle play pause status. - #[dbus_interface(name = "PlayPause")] + #[zbus(name = "PlayPause")] fn play_pause(&self) { self.0.toggle_playback_status() } /// Previous method - #[dbus_interface(name = "Previous")] + #[zbus(name = "Previous")] fn previous(&self) { self.0.play_previous() } /// Seek method - #[dbus_interface(name = "Seek")] + #[zbus(name = "Seek")] fn seek(&self, offset: TimeMicroSec) { let position = self.0.position().into() + offset; self.0.seek(None, position.into()); } /// SetPosition method - #[dbus_interface(name = "SetPosition")] + #[zbus(name = "SetPosition")] fn set_position(&self, track_id: ObjectPath, position: TimeMicroSec) { self.0.seek(Some(track_id.into()), position.into()); } /// Stop method - #[dbus_interface(name = "Stop")] + #[zbus(name = "Stop")] fn stop(&self) { log::warn!("ignore stop command") } /// CanControl property - #[dbus_interface(property, name = "CanControl")] + #[zbus(property, name = "CanControl")] fn can_control(&self) -> bool { true } /// CanPause property - #[dbus_interface(property, name = "CanPause")] + #[zbus(property, name = "CanPause")] fn can_pause(&self) -> bool { true } /// CanPlay property - #[dbus_interface(property, name = "CanPlay")] + #[zbus(property, name = "CanPlay")] fn can_play(&self) -> bool { true } /// CanSeek property - #[dbus_interface(property, name = "CanSeek")] + #[zbus(property, name = "CanSeek")] fn can_seek(&self) -> bool { false } /// LoopStatus property - #[dbus_interface(property, name = "LoopStatus")] + #[zbus(property, name = "LoopStatus")] fn loop_status(&self) -> LoopStatus { LoopStatus::None } - #[dbus_interface(property, name = "LoopStatus")] + #[zbus(property, name = "LoopStatus")] fn set_loop_status(&self, loop_status: LoopStatus) { log::warn!("ignore loop status {loop_status:?}") } - #[rustfmt::skip] #[dbus_interface(property, name = "MaximumRate")] fn maximum_rate(&self) -> f64 { 1.0 } - #[rustfmt::skip] #[dbus_interface(property, name = "MinimumRate")] fn minimum_rate(&self) -> f64 { 1.0 } - #[rustfmt::skip] #[dbus_interface(property, name = "MaximumRate")] fn set_maximum_rate(&self, rate: f64) { log::warn!("ignore rate {rate}") } - #[rustfmt::skip] #[dbus_interface(property, name = "MinimumRate")] fn set_minimum_rate(&self, rate: f64) { log::warn!("ignore rate {rate}") } - #[rustfmt::skip] #[dbus_interface(property, name = "Rate" )] fn rate(&self) -> f64 { 1.0 } - #[rustfmt::skip] #[dbus_interface(property, name = "Rate" )] fn set_rate(&self, rate: f64) { log::warn!("ignore rate {rate}") } + #[rustfmt::skip] #[zbus(property, name = "MaximumRate")] fn maximum_rate(&self) -> f64 { 1.0 } + #[rustfmt::skip] #[zbus(property, name = "MinimumRate")] fn minimum_rate(&self) -> f64 { 1.0 } + #[rustfmt::skip] #[zbus(property, name = "MaximumRate")] fn set_maximum_rate(&self, rate: f64) { log::warn!("ignore rate {rate}") } + #[rustfmt::skip] #[zbus(property, name = "MinimumRate")] fn set_minimum_rate(&self, rate: f64) { log::warn!("ignore rate {rate}") } + #[rustfmt::skip] #[zbus(property, name = "Rate" )] fn rate(&self) -> f64 { 1.0 } + #[rustfmt::skip] #[zbus(property, name = "Rate" )] fn set_rate(&self, rate: f64) { log::warn!("ignore rate {rate}") } /// Shuffle property - #[dbus_interface(property, name = "Shuffle")] + #[zbus(property, name = "Shuffle")] fn shuffle(&self) -> bool { self.0.shuffle() } - #[dbus_interface(property, name = "Shuffle")] + #[zbus(property, name = "Shuffle")] fn set_shuffle(&self, shuffle: bool) { self.0.set_shuffle(shuffle); } /// Volume property - #[dbus_interface(property, name = "Volume")] + #[zbus(property, name = "Volume")] fn volume(&self) -> f64 { self.0.volume() } - #[dbus_interface(property, name = "Volume")] + #[zbus(property, name = "Volume")] fn set_volume(&self, volume: f64) { self.0.set_volume(volume) } /// PlaybackStatus property - #[dbus_interface(property, name = "PlaybackStatus")] + #[zbus(property, name = "PlaybackStatus")] fn playback_status(&self) -> PlaybackStatus { self.0.get_playback_status().into() } /// Position property - #[dbus_interface(property, name = "Position")] + #[zbus(property, name = "Position")] fn position(&self) -> TimeMicroSec { self.0.position().into() } @@ -283,22 +283,22 @@ impl<T: AsMpris + Send + Sync + Clone + 'static> Player<T> { /// Metadata property. If there is a current kara playing, there must be at /// least a `mpris:trackid` value of type `o` which is the object path of /// the current kara id. - #[dbus_interface(property, name = "Metadata")] + #[zbus(property, name = "Metadata")] fn metadata(&self) -> TrackMetadata { self.0.get_current_metadata().into() } } -#[dbus_interface(name = "org.mpris.MediaPlayer2.TrackList")] +#[zbus::interface(name = "org.mpris.MediaPlayer2.TrackList")] impl<T: AsMpris + Send + Sync + Clone + 'static> TrackList<T> { /// AddTrack method - #[dbus_interface(name = "AddTrack")] + #[zbus(name = "AddTrack")] fn add_track(&self, uri: &str, after: ObjectPath, set_as_current: bool) { self.0.add_track(uri, after.into(), set_as_current) } /// GetTracksMetadata method - #[dbus_interface(name = "GetTracksMetadata")] + #[zbus(name = "GetTracksMetadata")] fn get_tracks_metadata(&self, tracks_ids: Vec<ObjectPath>) -> Vec<TrackMetadata> { let tracks = tracks_ids.into_iter().map(From::from).collect(); self.0 @@ -309,25 +309,25 @@ impl<T: AsMpris + Send + Sync + Clone + 'static> TrackList<T> { } /// GoTo method - #[dbus_interface(name = "GoTo")] + #[zbus(name = "GoTo")] fn go_to(&self, track_id: ObjectPath) { self.0.go_to(track_id.into()) } /// RemoveTrack method - #[dbus_interface(name = "RemoveTrack")] + #[zbus(name = "RemoveTrack")] fn remove_track(&self, track_id: ObjectPath) { self.0.remove_track(track_id.into()) } /// CanEditTracks property - #[dbus_interface(property, name = "CanEditTracks")] + #[zbus(property, name = "CanEditTracks")] fn can_edit_tracks(&self) -> bool { true } /// Tracks property - #[dbus_interface(property, name = "Tracks")] + #[zbus(property, name = "Tracks")] fn tracks(&self) -> Vec<ObjectPath> { self.0 .get_queue_content() @@ -337,33 +337,33 @@ impl<T: AsMpris + Send + Sync + Clone + 'static> TrackList<T> { } /// TrackAdded signal - #[dbus_interface(signal, name = "TrackAdded")] + #[zbus(signal, name = "TrackAdded")] async fn track_added( - #[zbus(signal_context)] ctxt: ZSignalCtx<'_>, + #[zbus(signal_context)] ctxt: SignalContext<'_>, metadata: TrackMetadata, after: ObjectPath, ) -> zbus::Result<()>; /// TrackListReplaced signal - #[dbus_interface(signal, name = "TrackListReplaced")] + #[zbus(signal, name = "TrackListReplaced")] async fn track_list_replaced( - #[zbus(signal_context)] ctxt: ZSignalCtx<'_>, + #[zbus(signal_context)] ctxt: SignalContext<'_>, tracks: Vec<ObjectPath>, current: ObjectPath, ) -> zbus::Result<()>; /// TrackMetadataChanged signal - #[dbus_interface(signal, name = "TrackMetadataChanged")] + #[zbus(signal, name = "TrackMetadataChanged")] async fn track_metadata_changed( - #[zbus(signal_context)] ctxt: ZSignalCtx<'_>, + #[zbus(signal_context)] ctxt: SignalContext<'_>, track_id: ObjectPath, metadata: TrackMetadata, ) -> zbus::Result<()>; /// TrackRemoved signal - #[dbus_interface(signal, name = "TrackRemoved")] + #[zbus(signal, name = "TrackRemoved")] async fn track_removed( - #[zbus(signal_context)] ctxt: ZSignalCtx<'_>, + #[zbus(signal_context)] ctxt: SignalContext<'_>, track_id: ObjectPath, ) -> zbus::Result<()>; } diff --git a/lektor_mpris/src/types.rs b/lektor_mpris/src/types.rs index 350c0b18b16810554d9e7f81cfb7473c1dd7d552..93afd3dee889d203d5cdcfb421841721eb1f0e3a 100644 --- a/lektor_mpris/src/types.rs +++ b/lektor_mpris/src/types.rs @@ -66,6 +66,12 @@ pub enum ObjectPath { // Implementations +impl TimeMicroSec { + pub fn as_micro_sec(&self) -> i64 { + self.0 + } +} + impl FromIterator<(String, String)> for TrackMetadata { fn from_iter<T: IntoIterator<Item = (String, String)>>(iter: T) -> Self { Self(iter.into_iter().collect()) @@ -130,34 +136,23 @@ impl From<ZValue<'_>> for ObjectPath { impl From<ObjectPath> for ZValue<'_> { fn from(value: ObjectPath) -> Self { - let string = 'string: { - use ObjectPath::*; - return ZValue::ObjectPath( - match value { - // Static things - NoTrack => ZObjectPath::try_from("/org/mpris/MediaPlayer2/TrackList/NoTrack"), - None => ZObjectPath::try_from("/org/lektor/MPRIS/None"), - - // Formated as strings - Id(id) => break 'string format!("/org/lektor/MPRIS/Id/{id}"), - Position(position) => { - break 'string format!("/org/lektor/MPRIS/Position/{position}") - } - } - .expect("incorrect serialization"), - ); + use ObjectPath::*; + let path = match value { + None => "/org/lektor/MPRIS/None".try_into(), + NoTrack => "/org/mpris/MediaPlayer2/TrackList/NoTrack".try_into(), + Id(id) => format!("/org/lektor/MPRIS/Id/{id}").try_into(), + Position(position) => format!("/org/lektor/MPRIS/Position/{position}").try_into(), }; - ZValue::ObjectPath(ZObjectPath::try_from(string).expect("incorrect serialization")) + ZValue::ObjectPath(path.expect("incorrect serialization")) } } impl From<LoopStatus> for ZValue<'_> { fn from(value: LoopStatus) -> Self { - use LoopStatus::*; match value { - None => "None", - Track => "Track", - Playlist => "Playlist", + LoopStatus::None => "None", + LoopStatus::Track => "Track", + LoopStatus::Playlist => "Playlist", } .into() } @@ -165,11 +160,10 @@ impl From<LoopStatus> for ZValue<'_> { impl From<PlaybackStatus> for ZValue<'_> { fn from(value: PlaybackStatus) -> Self { - use PlaybackStatus::*; match value { - Paused => "Paused", - Playing => "Playing", - Stopped => "Stopped", + PlaybackStatus::Paused => "Paused", + PlaybackStatus::Playing => "Playing", + PlaybackStatus::Stopped => "Stopped", } .into() } diff --git a/lektor_utils/src/logger.rs b/lektor_utils/src/logger.rs index 2d8b74a95623290b8987a1e69359f216f5aae9c6..4807d78175e4b4e3bc16dea72e7d0dd993a08d84 100644 --- a/lektor_utils/src/logger.rs +++ b/lektor_utils/src/logger.rs @@ -1,30 +1,50 @@ -use log::{Level, Metadata, Record, SetLoggerError}; -use std::{borrow::Cow, sync::atomic::AtomicU8}; +//! Small and simple implementation of a logger, don't need too much stuff like tracing and +//! others... -struct SimpleLogger { - level: AtomicU8, -} +use anyhow::anyhow; +use log::{Level, LevelFilter, Metadata, Record}; +use std::{ + borrow::Cow, + sync::atomic::{AtomicU8, Ordering}, +}; +/// Simple logger! +/// +/// We will print to stdout and filter levels by their assigned number. #[repr(transparent)] -struct SimpleLoggerRef { - pub inner: SimpleLogger, -} +struct SimpleLogger(AtomicU8); -static LOGGER: SimpleLoggerRef = SimpleLoggerRef { - inner: SimpleLogger { - level: AtomicU8::new(0), - }, -}; +/// Ze logger! +static LOGGER: SimpleLogger = SimpleLogger(AtomicU8::new(0)); impl SimpleLogger { - fn level(&self) -> Level { - // Always display errors and warnings. - match self.level.load(std::sync::atomic::Ordering::SeqCst) { + /// Get the level filter for the logger. + fn level(&self) -> LevelFilter { + match self.0.load(Ordering::SeqCst) { 0 => Level::Warn, 1 => Level::Info, 2 => Level::Debug, _ => Level::Trace, } + .to_level_filter() + } + + /// Set the level by a flag. + fn set_enum(&self, lvl: Level) -> LevelFilter { + self.set_int(match lvl { + Level::Trace => 3, + Level::Debug => 2, + Level::Info => 1, + Level::Warn | Level::Error => 0, + }) + } + + /// Set the level by a verbose count. + fn set_int(&self, lvl: u8) -> LevelFilter { + self.0.store(lvl, Ordering::SeqCst); + let lvl = self.level(); + log::set_max_level(lvl); + lvl } } @@ -58,29 +78,20 @@ impl log::Log for SimpleLogger { fn flush(&self) {} } +/// Set the log level with a flag. pub fn level(lvl: Level) { - level_int(match lvl { - Level::Trace => 3, - Level::Debug => 2, - Level::Info => 1, - Level::Warn | Level::Error => 0, - }) + LOGGER.set_enum(lvl); } -pub fn level_int(lvl: u8) { - let seqcst = std::sync::atomic::Ordering::SeqCst; - LOGGER.inner.level.store(lvl, seqcst); - log::set_max_level(LOGGER.inner.level().to_level_filter()); +/// Same as [self::level], but as a verbose level. +pub fn verbose(lvl: u8) { + LOGGER.set_int(lvl); } -pub fn init(lvl: Option<Level>) -> Result<(), SetLoggerError> { - log::set_logger(&LOGGER.inner).map(|()| { - log::set_max_level(match lvl { - None => LOGGER.inner.level().to_level_filter(), - Some(lvl) => { - level(lvl); - lvl.to_level_filter() - } - }); - }) +/// Init the logger. +pub fn init(lvl: Option<Level>) -> anyhow::Result<()> { + log::set_logger(&LOGGER).map_err(|err| anyhow!("failed to install logger: {err}"))?; + lvl.map(level) + .unwrap_or_else(|| log::set_max_level(LOGGER.level())); + Ok(()) } diff --git a/lektord/Cargo.toml b/lektord/Cargo.toml index b5c77dff441279ac718ffc4cde4477a3c3569635..682aeef6b66033d11f270a6bf1e7268708c9a36b 100644 --- a/lektord/Cargo.toml +++ b/lektord/Cargo.toml @@ -13,12 +13,17 @@ serde_json.workspace = true rand.workspace = true anyhow.workspace = true +hashbrown.workspace = true futures.workspace = true +async-trait.workspace = true + axum.workspace = true tokio.workspace = true +tokio-stream.workspace = true hyper.workspace = true -async-trait.workspace = true +hyper-util.workspace = true +tower.workspace = true clap.workspace = true diff --git a/lektord/build.rs b/lektord/build.rs index eb01e8cce5495cd9aa2afcc6e7bb20afbadcf500..819be18a7585d179dcca23957eda8431ed875bdc 100644 --- a/lektord/build.rs +++ b/lektord/build.rs @@ -19,9 +19,8 @@ macro_rules! cmd { "command failed with:\n{}", std::str::from_utf8(&stderr[..]).unwrap().trim() ); - } else { - (stdout, stderr) } + (stdout, stderr) }}; } diff --git a/lektord/src/app/mod.rs b/lektord/src/app/mod.rs index 74cfc9dd26de33342af7a7bb7b9c8d9fbb69596f..b0c20a484a8a8a03f8862041ca4bd8c04334ee42 100644 --- a/lektord/src/app/mod.rs +++ b/lektord/src/app/mod.rs @@ -8,14 +8,12 @@ mod routes; use crate::LektorConfig; use anyhow::{anyhow, Context, Result}; use axum::{ - http::{Request, StatusCode}, + extract::Request, + http::{response, StatusCode}, middleware::Next, - response::IntoResponse, - response::Response, + response::{IntoResponse, Response}, routing::{delete, get, post, put}, - Router, }; -use hyper::body::HttpBody; use lektor_mpris::MPRISAdapter; use lektor_nkdb::{Database, DatabaseDiskStorage}; use lektor_payloads::LektorUser; @@ -26,14 +24,17 @@ use tokio::sync::{oneshot::Sender, RwLock}; /// Create the application to serve. Place it into a different function to be able to test it with /// the tokio test framework. -pub async fn app(config: LektorConfig) -> Result<(Router, tokio::sync::oneshot::Receiver<()>)> { +pub async fn app( + config: LektorConfig, +) -> Result<(axum::Router, tokio::sync::oneshot::Receiver<()>)> { /// Try to declare the routes in a more legible way without having an ugly formating. macro_rules! router { ( $($str: literal -> $($what: ident: $func: path),+);+ ) => { router! { - Router::new(); $($str -> $($what: $func),+);+ + axum::Router::new(); + $($str -> $($what: $func),+);+ } }; @@ -117,21 +118,23 @@ pub async fn app(config: LektorConfig) -> Result<(Router, tokio::sync::oneshot:: } /// Log requests and their responsces if they failed. -async fn log_requests<B>(request: Request<B>, next: Next<B>) -> Response { - let msg = format!("{}@{}", request.method(), request.uri()); - log::trace!("got request: {msg}"); - let mut response = next.run(request).await; - if !response.status().is_success() { - match response.body_mut().data().await { - Some(Ok(data)) => match std::str::from_utf8(&data) { - Ok(data) => log::warn!("request {msg} failed with: {data}"), - Err(_) => log::warn!("request {msg} failed with {}B non utf8 data", data.len()), - }, - Some(Err(err)) => log::warn!("request {msg} failed with error: {err:?}"), - None => log::warn!("request {msg} failed without any additional informations"), - } +async fn log_requests(request: Request, next: Next) -> Response { + let msg = format!("request {}@{}", request.method(), request.uri()); + log::trace!("got {msg}"); + + let (parts @ response::Parts { status, .. }, body) = next.run(request).await.into_parts(); + if status.is_success() { + return Response::from_parts(parts, body); + } + + match axum::body::to_bytes(body, usize::MAX).await { + Err(error) => log::warn!("{msg} failed with {status}: {error}"), + Ok(data) => match std::str::from_utf8(&data) { + Ok(error) => log::warn!("{msg} failed with {status}: {error}"), + Err(_) => log::warn!("{msg} failed with {status} and non-utf8 data blob"), + }, } - response + StatusCode::BAD_REQUEST.into_response() } /// The state of the internal server diff --git a/lektord/src/app/mpris.rs b/lektord/src/app/mpris.rs index 27e25be74c9de2902018024720dc623de0d68a43..aca188775853274ae671f8e1e21ca7f4b60d9024 100644 --- a/lektord/src/app/mpris.rs +++ b/lektord/src/app/mpris.rs @@ -1,8 +1,7 @@ -use std::sync::Arc; - use crate::LektorStateWeakPtr; use lektor_mpris::AsMpris; use lektor_nkdb::Kara; +use std::sync::Arc; /// The play state, convertible to the thing liked by MPRIS. pub struct PlayState(lektor_nkdb::PlayState); @@ -96,33 +95,62 @@ impl AsMpris for LektorStateWeakPtr { } } +impl From<PlayState> for lektor_nkdb::PlayState { + fn from(PlayState(value): PlayState) -> Self { + value + } +} + impl From<lektor_mpris::types::PlaybackStatus> for PlayState { - fn from(_value: lektor_mpris::types::PlaybackStatus) -> Self { - todo!() + fn from(value: lektor_mpris::types::PlaybackStatus) -> Self { + use {lektor_mpris::types::PlaybackStatus, lektor_nkdb::PlayState}; + match value { + PlaybackStatus::Stopped => Self(PlayState::Stop), + PlaybackStatus::Playing => Self(PlayState::Play), + PlaybackStatus::Paused => Self(PlayState::Pause), + } } } impl From<PlayState> for lektor_mpris::types::PlaybackStatus { - fn from(_value: PlayState) -> Self { - todo!() + fn from(PlayState(value): PlayState) -> Self { + match value { + lektor_nkdb::PlayState::Stop => Self::Stopped, + lektor_nkdb::PlayState::Play => Self::Playing, + lektor_nkdb::PlayState::Pause => Self::Paused, + } } } impl From<lektor_mpris::types::TimeMicroSec> for Time { - fn from(_value: lektor_mpris::types::TimeMicroSec) -> Self { - todo!() + fn from(value: lektor_mpris::types::TimeMicroSec) -> Self { + Time(value.as_micro_sec().clamp(0, i64::MAX) as u64) } } impl From<Time> for lektor_mpris::types::TimeMicroSec { - fn from(_value: Time) -> Self { - todo!() + fn from(value: Time) -> Self { + (value.0.clamp(0, i64::MAX as u64) as i64).into() } } impl From<TrackMdt> for lektor_mpris::types::TrackMetadata { - fn from(_value: TrackMdt) -> Self { - todo!() + fn from(TrackMdt(kara): TrackMdt) -> Self { + let mut kara_makers: Vec<_> = kara.kara_makers.iter().cloned().collect(); + kara_makers.sort(); + let kara_makers = kara_makers.join(", "); + + let mut language: Vec<_> = kara.language.iter().cloned().collect(); + language.sort(); + let language = language.join(", "); + + lektor_mpris::types::TrackMetadata::from_iter([ + ("Song Title".to_string(), kara.song_title.clone()), + ("Song Source".to_string(), kara.song_source.clone()), + ("Sont Type".to_string(), kara.song_type.to_string()), + ("Kara Makers".to_string(), kara_makers), + ("Languages".to_string(), language), + ]) } } diff --git a/lektord/src/app/routes.rs b/lektord/src/app/routes.rs index 5b8d0d9b79871c2235437f133bb1f296fc267d2a..5c4364e0f3ee98de587fe9931cf7d74a703cbce8 100644 --- a/lektord/src/app/routes.rs +++ b/lektord/src/app/routes.rs @@ -9,11 +9,10 @@ use crate::*; use anyhow::{anyhow, Error}; use axum::{ extract::{Path, State}, - http::{HeaderValue, StatusCode}, + http::{header::CONTENT_TYPE, HeaderValue, StatusCode}, response::{IntoResponse, Response}, Json, }; -use hyper::header::CONTENT_TYPE; use lektor_nkdb::*; use lektor_payloads::*; use lektor_utils::{decode_base64_json, log}; diff --git a/lektord/src/listen.rs b/lektord/src/listen.rs deleted file mode 100644 index c359694e6c8cee5cf63540cafc93b44d9dffc5a9..0000000000000000000000000000000000000000 --- a/lektord/src/listen.rs +++ /dev/null @@ -1,59 +0,0 @@ -//! Stuff to listen from multiple addresses. Only TCP for now, see latter how to do UNIX domain -//! sockets... - -#![forbid(unsafe_code)] - -use anyhow::Result; -use hyper::server::{accept::Accept, conn::AddrIncoming}; -use lektor_utils::*; -use std::{ - net::SocketAddr, - pin::Pin, - task::{Context, Poll}, -}; - -/// Get the addr list to listen to, can be dirrectly passed to the bind function of the axum -/// server struct. -#[derive(Debug)] -pub struct AddrIncomingCombined(Vec<AddrIncoming>); - -impl<'a> FromIterator<&'a SocketAddr> for AddrIncomingCombined { - fn from_iter<T: IntoIterator<Item = &'a SocketAddr>>(iter: T) -> Self { - let print_err = |err| log::error!("failed to bind address: {err}"); - let iter = iter - .into_iter() - .flat_map(|addr| AddrIncoming::bind(addr).map_err(print_err).ok()); - Self(iter.collect()) - } -} - -impl AddrIncomingCombined { - pub fn err(self) -> Result<Self> { - match &self.0[..] { - [] => anyhow::bail!("no address to listen to"), - addrs => { - let sockets: Vec<_> = addrs.iter().map(|addr| addr.local_addr()).collect(); - log::debug!("listening on {sockets:?}"); - Ok(self) - } - } - } -} - -impl Accept for AddrIncomingCombined { - type Conn = <AddrIncoming as Accept>::Conn; - type Error = <AddrIncoming as Accept>::Error; - - fn poll_accept( - mut self: Pin<&mut Self>, - cx: &mut Context<'_>, - ) -> std::task::Poll<Option<Result<Self::Conn, Self::Error>>> { - for conn in &mut self.0 { - if let Poll::Ready(Some(value)) = Pin::new(conn).poll_accept(cx) { - return Poll::Ready(Some(value)); - } - } - - Poll::Pending - } -} diff --git a/lektord/src/main.rs b/lektord/src/main.rs index 1c698749fe2508faed212daf9038ee8b20b20b59..f1d72a3278a4744a679baa16c6e69cf732f88e30 100644 --- a/lektord/src/main.rs +++ b/lektord/src/main.rs @@ -3,27 +3,37 @@ pub mod c_wrapper; mod cmd; mod config; mod error; -mod listen; include!(concat!(env!("OUT_DIR"), "/lektord_build_infos.rs")); -use crate::{app::*, config::*, error::*, listen::*}; +use crate::{app::*, config::*, error::*}; use anyhow::{Context, Result}; use cmd::SubCommand; +use futures::{stream::FuturesUnordered, TryStreamExt as _}; use lektor_utils::*; + +// Server things + +use hyper::service::service_fn; +use hyper_util::{ + rt::{TokioExecutor, TokioIo}, + server::conn::auto::Builder as ServerBuilder, +}; +use std::net::SocketAddr; use std::sync::atomic::{AtomicU64, Ordering}; -use tokio::{signal, sync::oneshot::Receiver}; +use tokio::{net::TcpListener, signal, sync::oneshot::Receiver}; +use tower::Service; fn main() -> Result<()> { - logger::init(Some(log::Level::Debug)).expect("failed to install logger"); + logger::init(Some(log::Level::Debug))?; #[cfg(target_os = "linux")] appimage::detect_appimage()?; let config = lektor_utils::config::get_or_write_default_config::<LektorConfig>("lektord")?; let args = <cmd::Args as clap::Parser>::parse(); - lektor_utils::logger::level(config.log); + logger::level(config.log); if args.verbose != 0 { - lektor_utils::logger::level_int(args.verbose); + logger::verbose(args.verbose); } match args.action.unwrap_or_default() { @@ -39,41 +49,79 @@ fn main() -> Result<()> { args => unreachable!("{args:#?}"), }, - SubCommand::Start => { - log::info!("starting the lektord daemon"); - tokio::runtime::Builder::new_multi_thread() - .worker_threads(config.workers) // Thread count from the config file. - .thread_name_fn(|| { - static COUNT: AtomicU64 = AtomicU64::new(0); - format!("lektord-{}", COUNT.fetch_add(1, Ordering::SeqCst)) - }) - .enable_all() - .thread_stack_size(3 * 1024 * 1024) // 3Mio for each thread, should be enaugh - .build()? - .block_on(async move { - lektor_utils::config::write_config_async("lektord", config.clone()).await?; // Write to apply changes... - let addrs = AddrIncomingCombined::from_iter(&config.listen).err()?; - let (app, shutdown) = app(config) - .await - .with_context(|| "failed to build service")?; - hyper::Server::builder(addrs) - .serve(app.into_make_service()) - .with_graceful_shutdown(shutdown_signal(shutdown)) - .await?; - Ok(()) - }) - } + SubCommand::Start => tokio::runtime::Builder::new_multi_thread() + .worker_threads(config.workers) // Thread count from the config file. + .thread_name_fn(|| { + static COUNT: AtomicU64 = AtomicU64::new(0); + format!("lektord-{}", COUNT.fetch_add(1, Ordering::SeqCst)) + }) + .enable_all() + .thread_stack_size(3 * 1024 * 1024) // 3Mio for each thread, should be enaugh + .build()? + .block_on(launch_server(config)), args => unreachable!("{args:?}"), } } +/// Launches the server, for each socket to listen to we have one task. We do that to be able to +/// handle each sockets in a concurrent way. +async fn launch_server(config: LektorConfig) -> Result<()> { + // Write to apply any changes... + log::info!("starting the lektord daemon"); + lektor_utils::config::write_config_async("lektord", config.clone()).await?; + + // Init the application. + let addrs = config.listen.clone(); + let (app, shutdown) = app(config).await.context("failed to build service")?; + + // Launch an instance for each socket to listen to. + FuturesUnordered::from_iter(addrs.into_iter().map(|listen| async move { + TcpListener::bind(listen) + .await + .map(|socket| (listen, socket)) + .with_context(|| format!("failed to bind to {listen}")) + })) + .try_collect::<Vec<_>>() + .await? + .into_iter() + .for_each(|(addr, socket)| { + tokio::spawn(server_instance(addr, socket, app.clone())); + }); + + // Wait for terminazon... + shutdown_signal(shutdown).await; + Ok(()) +} + +/// Have the instance of the server for one socket that we listen to. For each client we will +/// create a new task to be able to handle clients concurrently for one socket. +async fn server_instance(addr: SocketAddr, socket: TcpListener, app: axum::Router) { + loop { + let Ok((stream, client)) = socket.accept().await else { + log::error!("failed to accept socket at {addr}"); + return; + }; + let app = app.clone(); // One thread per client, they all share the same state! + tokio::spawn(async move { + ServerBuilder::new(TokioExecutor::new()) + .serve_connection( + TokioIo::new(stream), + service_fn(move |req| app.clone().call(req)), + ) + .await + .inspect_err(|err| log::error!("failed to serve {client} from {addr}: {err}")) + }); + } +} + /// Gracefull ctrl+c handling. async fn shutdown_signal(shutdown: Receiver<()>) { let shutdown = async { let _ = shutdown.await; log::info!("shutdown signal!") }; + let ctrl_c = async { signal::ctrl_c() .await diff --git a/lkt/src/main.rs b/lkt/src/main.rs index 4d550b13e27a88d1eaa268bc794d8d6b79b49f52..07f68aa916b35f667a381085b83985bec7b1a038 100644 --- a/lkt/src/main.rs +++ b/lkt/src/main.rs @@ -38,8 +38,8 @@ fn main() -> Result<()> { } let config = lektor_utils::config::get_or_write_default_config::<LktConfig>("lkt")?; - lektor_utils::logger::level(config.log); - lektor_utils::logger::level_int(args.verbose); + logger::level(config.log); + logger::verbose(args.verbose); tokio::runtime::Builder::new_current_thread() .enable_all() .build()? diff --git a/utils/scripts/docker/setup_cross.bash b/utils/scripts/docker/setup_cross.bash index a56aeffcb0bed8a424c4231cebd8ad649919decd..116c8f1a89a65e640501a00706cdfe58b90e8497 100755 --- a/utils/scripts/docker/setup_cross.bash +++ b/utils/scripts/docker/setup_cross.bash @@ -4,10 +4,11 @@ set -xe PKG_BASE="imagemagick make ninja git binutils patch base-devel unzip protobuf" PKG_MINGW="mingw-w64-binutils mingw-w64-crt mingw-w64-gcc mingw-w64-headers mingw-w64-winpthreads" -AUR_BOOTSTRAP_MINGW="mingw-w64-x264-bootstrap mingw-w64-headers-bootstrap mingw-w64-freetype2-bootstrap mingw-w64-cairo-bootstrap " +AUR_BOOTSTRAP_MINGW="mingw-w64-headers-bootstrap mingw-w64-freetype2-bootstrap mingw-w64-cairo-bootstrap " AUR_BOOTSTRAP_MINGW+="mingw-w64-cmake mingw-w64-extra-cmake-modules mingw-w64-make mingw-w64-configure mingw-w64-meson mingw-w64-pkg-config " +AUR_BOOTSTRAP_MINGW+="mingw-w64-spirv-headers mingw-w64-spirv-tools " -AUR_MINGW="mingw-w64-mpv mingw-w64-bzip2 mingw-w64-expat mingw-w64-fontconfig mingw-w64-freeglut mingw-w64-freetype2 " +AUR_MINGW="mingw-w64-x264 mingw-w64-mpv mingw-w64-bzip2 mingw-w64-expat mingw-w64-fontconfig mingw-w64-freeglut mingw-w64-freetype2 " AUR_MINGW+="mingw-w64-libdbus mingw-w64-libiconv mingw-w64-libjpeg-turbo mingw-w64-libpng mingw-w64-libtiff mingw-w64-libxml2 " AUR_MINGW+="mingw-w64-openssl mingw-w64-openjpeg mingw-w64-openjpeg2 mingw-w64-pcre mingw-w64-pdcurses mingw-w64-protobuf " AUR_MINGW+="mingw-w64-readline mingw-w64-sdl2 mingw-w64-termcap mingw-w64-tools mingw-w64-zlib mingw-w64-gettext "