diff --git a/Cargo.lock b/Cargo.lock index b5974d5..b6ecfff 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -4,9 +4,9 @@ version = 3 [[package]] name = "ab_glyph" -version = "0.2.25" +version = "0.2.28" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6f90148830dac590fac7ccfe78ec4a8ea404c60f75a24e16407a71f0f40de775" +checksum = "79faae4620f45232f599d9bc7b290f88247a0834162c4495ab2f02d60004adfb" dependencies = [ "ab_glyph_rasterizer", "owned_ttf_parser", @@ -23,6 +23,10 @@ name = "accesskit" version = "0.12.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "74a4b14f3d99c1255dcba8f45621ab1a2e7540a0009652d33989005a4d0bfc6b" +dependencies = [ + "enumn", + "serde", +] [[package]] name = "accesskit_consumer" @@ -91,9 +95,9 @@ dependencies = [ [[package]] name = "addr2line" -version = "0.21.0" +version = "0.24.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8a30b2e23b9e17a9f90641c7ab1549cd9b44f296d3ccbf309d2863cfe398a0cb" +checksum = "f5fb1d8e4442bd405fdfd1dacb42792696b0cf9cb15882e5d097b742a676d375" dependencies = [ "gimli", ] @@ -104,6 +108,12 @@ version = "1.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f26201604c87b1e01bd3d98f8d5d9a8fcbb815e8cedb41ffccbeb4bf593a35fe" +[[package]] +name = "adler2" +version = "2.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "512761e0bb2578dd7380c6baaa0f4ce03e84f95e960231d1dec8bf4d7d6e2627" + [[package]] name = "aes" version = "0.8.4" @@ -124,6 +134,7 @@ dependencies = [ "cfg-if", "getrandom", "once_cell", + "serde", "version_check", "zerocopy", ] @@ -150,7 +161,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ee91c0c2905bae44f84bfa4e044536541df26b7703fd0888deeb9060fcc44289" dependencies = [ "android-properties", - "bitflags 2.5.0", + "bitflags 2.6.0", "cc", "cesu8", "jni", @@ -181,47 +192,48 @@ dependencies = [ [[package]] name = "anstream" -version = "0.6.13" +version = "0.6.15" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d96bd03f33fe50a863e394ee9718a706f988b9079b20c3784fb726e7678b62fb" +checksum = "64e15c1ab1f89faffbf04a634d5e1962e9074f2741eef6d97f3c4e322426d526" dependencies = [ "anstyle", "anstyle-parse", "anstyle-query", "anstyle-wincon", "colorchoice", + "is_terminal_polyfill", "utf8parse", ] [[package]] name = "anstyle" -version = "1.0.6" +version = "1.0.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8901269c6307e8d93993578286ac0edf7f195079ffff5ebdeea6a59ffb7e36bc" +checksum = "1bec1de6f59aedf83baf9ff929c98f2ad654b97c9510f4e70cf6f661d49fd5b1" [[package]] name = "anstyle-parse" -version = "0.2.3" +version = "0.2.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c75ac65da39e5fe5ab759307499ddad880d724eed2f6ce5b5e8a26f4f387928c" +checksum = "eb47de1e80c2b463c735db5b217a0ddc39d612e7ac9e2e96a5aed1f57616c1cb" dependencies = [ "utf8parse", ] [[package]] name = "anstyle-query" -version = "1.0.2" +version = "1.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e28923312444cdd728e4738b3f9c9cac739500909bb3d3c94b43551b16517648" +checksum = "6d36fc52c7f6c869915e99412912f22093507da8d9e942ceaf66fe4b7c14422a" dependencies = [ "windows-sys 0.52.0", ] [[package]] name = "anstyle-wincon" -version = "3.0.2" +version = "3.0.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1cd54b81ec8d6180e24654d0b371ad22fc3dd083b6ff8ba325b72e00c87660a7" +checksum = "5bf74e1b6e971609db8ca7a9ce79fd5768ab6ae46441c572e46cf596f59e57f8" dependencies = [ "anstyle", "windows-sys 0.52.0", @@ -229,37 +241,36 @@ dependencies = [ [[package]] name = "anyhow" -version = "1.0.81" +version = "1.0.88" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0952808a6c2afd1aa8947271f3a60f1a6763c7b912d210184c5149b5cf147247" +checksum = "4e1496f8fb1fbf272686b8d37f523dab3e4a7443300055e74cdaa449f3114356" [[package]] name = "arboard" -version = "3.3.2" +version = "3.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a2041f1943049c7978768d84e6d0fd95de98b76d6c4727b09e78ec253d29fa58" +checksum = "df099ccb16cd014ff054ac1bf392c67feeef57164b05c42f037cd40f5d4357f4" dependencies = [ "clipboard-win", "log", - "objc", - "objc-foundation", - "objc_id", + "objc2 0.5.2", + "objc2-app-kit", + "objc2-foundation", "parking_lot", - "thiserror", "x11rb", ] [[package]] name = "arrayref" -version = "0.3.7" +version = "0.3.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6b4930d2cb77ce62f89ee5d5289b4ac049559b1c45539271f5ed4fdc7db34545" +checksum = "9d151e35f61089500b617991b791fc8bfd237ae50cd5950803758a179b41e67a" [[package]] name = "arrayvec" -version = "0.7.4" +version = "0.7.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "96d30a06541fbafbc7f82ed10c06164cfbd2c401138f6addd8404629c4b16711" +checksum = "7c02d123df017efcdfbd739ef81735b36c5ba83ec3c59c80a9d7ecc718f92e50" [[package]] name = "as-raw-xcb-connection" @@ -288,26 +299,25 @@ dependencies = [ [[package]] name = "async-channel" -version = "2.2.1" +version = "2.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "136d4d23bcc79e27423727b36823d86233aad06dfea531837b038394d11e9928" +checksum = "89b47800b0be77592da0afd425cc03468052844aff33b84e33cc696f64e77b6a" dependencies = [ "concurrent-queue", - "event-listener 5.3.0", - "event-listener-strategy 0.5.1", + "event-listener-strategy", "futures-core", "pin-project-lite", ] [[package]] name = "async-executor" -version = "1.11.0" +version = "1.13.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b10202063978b3351199d68f8b22c4e47e4b1b822f8d43fd862d5ea8c006b29a" +checksum = "30ca9a001c1e8ba5149f91a74362376cc6bc5b919d92d988668657bd570bdcec" dependencies = [ "async-task", "concurrent-queue", - "fastrand 2.0.2", + "fastrand 2.1.1", "futures-lite 2.3.0", "slab", ] @@ -346,21 +356,21 @@ dependencies = [ [[package]] name = "async-io" -version = "2.3.2" +version = "2.3.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dcccb0f599cfa2f8ace422d3555572f47424da5648a4382a9dd0310ff8210884" +checksum = "444b0228950ee6501b3568d3c93bf1176a1fdbc3b758dcd9475046d30f4dc7e8" dependencies = [ - "async-lock 3.3.0", + "async-lock 3.4.0", "cfg-if", "concurrent-queue", "futures-io", "futures-lite 2.3.0", "parking", - "polling 3.6.0", - "rustix 0.38.32", + "polling 3.7.3", + "rustix 0.38.37", "slab", "tracing", - "windows-sys 0.52.0", + "windows-sys 0.59.0", ] [[package]] @@ -374,12 +384,12 @@ dependencies = [ [[package]] name = "async-lock" -version = "3.3.0" +version = "3.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d034b430882f8381900d3fe6f0aaa3ad94f2cb4ac519b429692a1bc2dda4ae7b" +checksum = "ff6e472cdea888a4bd64f342f09b3f50e1886d32afe8df3d663c01140b811b18" dependencies = [ - "event-listener 4.0.3", - "event-listener-strategy 0.4.0", + "event-listener 5.3.1", + "event-listener-strategy", "pin-project-lite", ] @@ -402,54 +412,54 @@ dependencies = [ "cfg-if", "event-listener 3.1.0", "futures-lite 1.13.0", - "rustix 0.38.32", + "rustix 0.38.37", "windows-sys 0.48.0", ] [[package]] name = "async-recursion" -version = "1.1.0" +version = "1.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "30c5ef0ede93efbf733c1a727f3b6b5a1060bbedd5600183e66f6e4be4af0ec5" +checksum = "3b43422f69d8ff38f95f1b2bb76517c91589a924d1559a0e935d7c8ce0274c11" dependencies = [ "proc-macro2", "quote", - "syn 2.0.58", + "syn 2.0.77", ] [[package]] name = "async-signal" -version = "0.2.6" +version = "0.2.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "afe66191c335039c7bb78f99dc7520b0cbb166b3a1cb33a03f53d8a1c6f2afda" +checksum = "637e00349800c0bdf8bfc21ebbc0b6524abea702b0da4168ac00d070d0c0b9f3" dependencies = [ - "async-io 2.3.2", - "async-lock 3.3.0", + "async-io 2.3.4", + "async-lock 3.4.0", "atomic-waker", "cfg-if", "futures-core", "futures-io", - "rustix 0.38.32", + "rustix 0.38.37", "signal-hook-registry", "slab", - "windows-sys 0.52.0", + "windows-sys 0.59.0", ] [[package]] name = "async-task" -version = "4.7.0" +version = "4.7.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fbb36e985947064623dbd357f727af08ffd077f93d696782f3c56365fa2e2799" +checksum = "8b75356056920673b02621b35afd0f7dda9306d03c79a30f5c56c44cf256e3de" [[package]] name = "async-trait" -version = "0.1.80" +version = "0.1.82" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c6fa2087f2753a7da8cc1c0dbfcf89579dd57458e36769de5ac750b4671737ca" +checksum = "a27b8a3a6e1a44fa4c8baf1f653e4172e81486d4941f2237e20dc2d0cf4ddff1" dependencies = [ "proc-macro2", "quote", - "syn 2.0.58", + "syn 2.0.77", ] [[package]] @@ -508,30 +518,30 @@ dependencies = [ [[package]] name = "autocfg" -version = "1.2.0" +version = "1.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f1fdabc7756949593fe60f30ec81974b613357de856987752631dea1e3394c80" +checksum = "0c4b4d0bd25bd0b74681c0ad21497610ce1b7c91b1022cd21c80c6fbdd9476b0" [[package]] name = "backtrace" -version = "0.3.71" +version = "0.3.74" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "26b05800d2e817c8b3b4b54abd461726265fa9789ae34330622f2db9ee696f9d" +checksum = "8d82cb332cdfaed17ae235a638438ac4d4839913cc2af585c3c6746e8f8bee1a" dependencies = [ "addr2line", - "cc", "cfg-if", "libc", - "miniz_oxide", + "miniz_oxide 0.8.0", "object", "rustc-demangle", + "windows-targets 0.52.6", ] [[package]] name = "base64" -version = "0.22.0" +version = "0.22.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9475866fec1451be56a3c2400fd081ff546538961565ccb5b7142cbd22bc7a51" +checksum = "72b3254f16251a8381aa12e40e3c4d2f0199f8c6508fbecb9d91f575e0fbb8c6" [[package]] name = "base64ct" @@ -562,9 +572,9 @@ checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a" [[package]] name = "bitflags" -version = "2.5.0" +version = "2.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cf4b9d6a944f767f8e5e0db018570623c85f3d925ac718db4e06d0187adb21c1" +checksum = "b048fb63fd8b5923fc5aa7b340d8e156aec7ec02f0c78fa8a6ddc2613f6f71de" [[package]] name = "block" @@ -596,7 +606,7 @@ version = "0.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ae85a0696e7ea3b835a453750bf002770776609115e6d25c6d2ff28a8200f7e7" dependencies = [ - "objc-sys 0.3.3", + "objc-sys 0.3.5", ] [[package]] @@ -620,19 +630,25 @@ dependencies = [ ] [[package]] -name = "blocking" -version = "1.5.1" +name = "block2" +version = "0.5.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6a37913e8dc4ddcc604f0c6d3bf2887c995153af3611de9e23c352b44c1b9118" +checksum = "2c132eebf10f5cad5289222520a4a058514204aed6d791f1cf4fe8088b82d15f" +dependencies = [ + "objc2 0.5.2", +] + +[[package]] +name = "blocking" +version = "1.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "703f41c54fc768e63e091340b424302bb1c29ef4aa0c7f10fe849dfb114d29ea" dependencies = [ "async-channel", - "async-lock 3.3.0", "async-task", - "fastrand 2.0.2", "futures-io", "futures-lite 2.3.0", "piper", - "tracing", ] [[package]] @@ -643,22 +659,22 @@ checksum = "79296716171880943b8470b5f8d03aa55eb2e645a4874bdbb28adb49162e012c" [[package]] name = "bytemuck" -version = "1.15.0" +version = "1.18.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5d6d68c57235a3a081186990eca2867354726650f42f7516ca50c28d6281fd15" +checksum = "94bbb0ad554ad961ddc5da507a12a29b14e4ae5bda06b19f575a3e6079d2e2ae" dependencies = [ "bytemuck_derive", ] [[package]] name = "bytemuck_derive" -version = "1.6.0" +version = "1.7.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4da9a32f3fed317401fa3c862968128267c3106685286e15d5aaa3d7389c2f60" +checksum = "0cc8b54b395f2fcfbb3d90c47b01c7f444d94d05bdeb775811dec868ac3bbc26" dependencies = [ "proc-macro2", "quote", - "syn 2.0.58", + "syn 2.0.77", ] [[package]] @@ -669,9 +685,9 @@ checksum = "1fd0f2584146f6f2ef48085050886acf353beff7305ebd1ae69500e27c67f64b" [[package]] name = "bytes" -version = "1.6.0" +version = "1.7.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "514de17de45fdb8dc022b1a7975556c53c86f9f0aa5f534b98977b171857c2c9" +checksum = "8318a53db07bb3f8dca91a600466bdb3f2eaadeedfdbcf02e1accbad9271ba50" [[package]] name = "bzip2" @@ -700,10 +716,24 @@ version = "0.12.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "fba7adb4dd5aa98e5553510223000e7148f621165ec5f9acd7113f6ca4995298" dependencies = [ - "bitflags 2.5.0", + "bitflags 2.6.0", "log", - "polling 3.6.0", - "rustix 0.38.32", + "polling 3.7.3", + "rustix 0.38.37", + "slab", + "thiserror", +] + +[[package]] +name = "calloop" +version = "0.13.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b99da2f8558ca23c71f4fd15dc57c906239752dd27ff3c00a1d56b685b7cbfec" +dependencies = [ + "bitflags 2.6.0", + "log", + "polling 3.7.3", + "rustix 0.38.37", "slab", "thiserror", ] @@ -714,26 +744,39 @@ version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0f0ea9b9476c7fad82841a8dbb380e2eae480c21910feba80725b46931ed8f02" dependencies = [ - "calloop", - "rustix 0.38.32", + "calloop 0.12.4", + "rustix 0.38.37", + "wayland-backend", + "wayland-client", +] + +[[package]] +name = "calloop-wayland-source" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "95a66a987056935f7efce4ab5668920b5d0dac4a7c99991a67395f13702ddd20" +dependencies = [ + "calloop 0.13.0", + "rustix 0.38.37", "wayland-backend", "wayland-client", ] [[package]] name = "camino" -version = "1.1.6" +version = "1.1.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c59e92b5a388f549b863a7bea62612c09f24c8393560709a54558a9abdfb3b9c" +checksum = "8b96ec4966b5813e2c0507c1f86115c8c5abaadc3980879c3424042a02fd1ad3" [[package]] name = "cc" -version = "1.0.91" +version = "1.1.18" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1fd97381a8cc6493395a5afc4c691c1084b3768db713b73aa215217aa245d153" +checksum = "b62ac837cdb5cb22e10a256099b4fc502b1dfe560cb282963a974d7abd80e476" dependencies = [ "jobserver", "libc", + "shlex", ] [[package]] @@ -775,9 +818,9 @@ dependencies = [ [[package]] name = "clap" -version = "4.5.4" +version = "4.5.17" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "90bc066a67923782aa8515dbaea16946c5bcc5addbd668bb80af688e53e548a0" +checksum = "3e5a21b8495e732f1b3c364c9949b201ca7bae518c502c80256c96ad79eaf6ac" dependencies = [ "clap_builder", "clap_derive", @@ -785,9 +828,9 @@ dependencies = [ [[package]] name = "clap_builder" -version = "4.5.2" +version = "4.5.17" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ae129e2e766ae0ec03484e609954119f123cc1fe650337e155d03b022f24f7b4" +checksum = "8cf2dd12af7a047ad9d6da2b6b249759a22a7abc0f474c1dae1777afa4b21a73" dependencies = [ "anstream", "anstyle", @@ -797,27 +840,27 @@ dependencies = [ [[package]] name = "clap_derive" -version = "4.5.4" +version = "4.5.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "528131438037fd55894f62d6e9f068b8f45ac57ffa77517819645d10aed04f64" +checksum = "501d359d5f3dcaf6ecdeee48833ae73ec6e42723a1e52419c79abf9507eec0a0" dependencies = [ "heck", "proc-macro2", "quote", - "syn 2.0.58", + "syn 2.0.77", ] [[package]] name = "clap_lex" -version = "0.7.0" +version = "0.7.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "98cc8fbded0c607b7ba9dd60cd98df59af97e84d24e49c8557331cfc26d301ce" +checksum = "1462739cb27611015575c0c11df5df7601141071f07518d56fcc1be504cbec97" [[package]] name = "clipboard-win" -version = "5.3.1" +version = "5.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "79f4473f5144e20d9aceaf2972478f06ddf687831eafeeb434fbaf0acc4144ad" +checksum = "15efe7a882b08f34e38556b14f2fb3daa98769d06c7f0c1b076dfd0d983bc892" dependencies = [ "error-code", ] @@ -870,9 +913,9 @@ checksum = "3d7b894f5411737b7867f4827955924d7c254fc9f4d91a6aad6b097804b1018b" [[package]] name = "colorchoice" -version = "1.0.0" +version = "1.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "acbf1af155f9b9ef647e42cdc158db4b64a1b61f743629225fde6f3e0be2a7c7" +checksum = "d3fd119d74b830634cea2a0f58bbd0d54540518a14397557951e79340abc28c0" [[package]] name = "com" @@ -917,9 +960,9 @@ dependencies = [ [[package]] name = "concurrent-queue" -version = "2.4.0" +version = "2.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d16048cd947b08fa32c24458a22f5dc5e835264f689f4f5653210c69fd107363" +checksum = "4ca0197aee26d1ae37445ee532fefce43251d24cc7c166799f4d46817f1d3973" dependencies = [ "crossbeam-utils", ] @@ -942,9 +985,9 @@ dependencies = [ [[package]] name = "core-foundation-sys" -version = "0.8.6" +version = "0.8.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "06ea2b9bc92be3c2baa9334a323ebca2d6f074ff852cd1d7b11064035cd3868f" +checksum = "773648b94d0e5d620f64f280777445740e61fe701025087ec8b57f45c791888b" [[package]] name = "core-graphics" @@ -972,27 +1015,27 @@ dependencies = [ [[package]] name = "cpufeatures" -version = "0.2.12" +version = "0.2.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "53fe5e26ff1b7aef8bca9c6080520cfb8d9333c7568e1829cef191a9723e5504" +checksum = "608697df725056feaccfa42cffdaeeec3fccc4ffc38358ecd19b243e716a78e0" dependencies = [ "libc", ] [[package]] name = "crc32fast" -version = "1.4.0" +version = "1.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b3855a8a784b474f333699ef2bbca9db2c4a1f6d9088a90a2d25b1eb53111eaa" +checksum = "a97769d94ddab943e4510d138150169a2758b5ef3eb191a9ee688de3e23ef7b3" dependencies = [ "cfg-if", ] [[package]] name = "crossbeam-utils" -version = "0.8.19" +version = "0.8.20" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "248e3bacc7dc6baa3b21e405ee045c3047101a49145e7e9eca583ab4c2ca5345" +checksum = "22ec99545bb0ed0ea7bb9b8e1e9122ea386ff8a48c0922e43f36d45ab09e0e80" [[package]] name = "crypto-common" @@ -1053,14 +1096,14 @@ version = "0.5.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "330c60081dcc4c72131f8eb70510f1ac07223e5d4163db481a04a0befcffa412" dependencies = [ - "libloading 0.8.3", + "libloading 0.8.5", ] [[package]] name = "document-features" -version = "0.2.8" +version = "0.2.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ef5282ad69563b5fc40319526ba27e0e7363d552a896f0297d54f767717f9b95" +checksum = "cb6969eaabd2421f8a2775cfd2471a2b634372b4a25d41e3bd647b79912850a0" dependencies = [ "litrs", ] @@ -1078,6 +1121,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "20930a432bbd57a6d55e07976089708d4893f3d556cf42a0d79e9e321fa73b10" dependencies = [ "bytemuck", + "serde", ] [[package]] @@ -1103,7 +1147,7 @@ dependencies = [ "parking_lot", "percent-encoding", "raw-window-handle 0.5.2", - "raw-window-handle 0.6.1", + "raw-window-handle 0.6.2", "static_assertions", "thiserror", "wasm-bindgen", @@ -1125,6 +1169,7 @@ dependencies = [ "epaint", "log", "nohash-hasher", + "serde", ] [[package]] @@ -1155,13 +1200,26 @@ dependencies = [ "arboard", "egui", "log", - "raw-window-handle 0.6.1", + "raw-window-handle 0.6.2", "smithay-clipboard", "web-time", "webbrowser", "winit", ] +[[package]] +name = "egui_extras" +version = "0.27.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1b78779f35ded1a853786c9ce0b43fe1053e10a21ea3b23ebea411805ce41593" +dependencies = [ + "egui", + "enum-map", + "log", + "mime_guess2", + "serde", +] + [[package]] name = "egui_glow" version = "0.27.2" @@ -1185,6 +1243,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e4c3a552cfca14630702449d35f41c84a0d15963273771c6059175a803620f3f" dependencies = [ "bytemuck", + "serde", ] [[package]] @@ -1197,10 +1256,31 @@ dependencies = [ ] [[package]] -name = "enumflags2" -version = "0.7.9" +name = "enum-map" +version = "2.7.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3278c9d5fb675e0a51dabcf4c0d355f692b064171535ba72361be1528a9d8e8d" +checksum = "6866f3bfdf8207509a033af1a75a7b08abda06bbaaeae6669323fd5a097df2e9" +dependencies = [ + "enum-map-derive", + "serde", +] + +[[package]] +name = "enum-map-derive" +version = "0.17.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f282cfdfe92516eb26c2af8589c274c7c17681f5ecc03c18255fe741c6aa64eb" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.77", +] + +[[package]] +name = "enumflags2" +version = "0.7.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d232db7f5956f3f14313dc2f87985c58bd2c695ce124c8cdd984e08e15ac133d" dependencies = [ "enumflags2_derive", "serde", @@ -1208,20 +1288,31 @@ dependencies = [ [[package]] name = "enumflags2_derive" -version = "0.7.9" +version = "0.7.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5c785274071b1b420972453b306eeca06acf4633829db4223b58a2a8c5953bc4" +checksum = "de0d48a183585823424a4ce1aa132d174a6a81bd540895822eb4c8373a8e49e8" dependencies = [ "proc-macro2", "quote", - "syn 2.0.58", + "syn 2.0.77", +] + +[[package]] +name = "enumn" +version = "0.1.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2f9ed6b3789237c8a0c1c505af1c7eb2c560df6186f01b098c3a1064ea532f38" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.77", ] [[package]] name = "env_filter" -version = "0.1.0" +version = "0.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a009aa4810eb158359dda09d0c87378e4bbb89b5a801f016885a4707ba24f7ea" +checksum = "4f2c92ceda6ceec50f43169f9ee8424fe2db276791afde7b2cd8bc084cb376ab" dependencies = [ "log", "regex", @@ -1229,9 +1320,9 @@ dependencies = [ [[package]] name = "env_logger" -version = "0.11.3" +version = "0.11.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "38b35839ba51819680ba087cd351788c9a3c476841207e0b8cee0b04722343b9" +checksum = "e13fa619b91fb2381732789fc5de83b45675e882f66623b7d8cb4f643017018d" dependencies = [ "anstream", "anstyle", @@ -1254,6 +1345,7 @@ dependencies = [ "log", "nohash-hasher", "parking_lot", + "serde", ] [[package]] @@ -1264,9 +1356,9 @@ checksum = "5443807d6dff69373d433ab9ef5378ad8df50ca6298caf15de6e52e24aaf54d5" [[package]] name = "errno" -version = "0.3.8" +version = "0.3.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a258e46cdc063eb8519c00b9fc845fc47bcfca4130e2f08e88665ceda8474245" +checksum = "534c5cf6194dfab3db3242765c03bbe257cf92f22b38f6bc0c58d59108a820ba" dependencies = [ "libc", "windows-sys 0.52.0", @@ -1274,9 +1366,9 @@ dependencies = [ [[package]] name = "error-code" -version = "3.2.0" +version = "3.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a0474425d51df81997e2f90a21591180b38eccf27292d755f3e30750225c175b" +checksum = "a5d9305ccc6942a704f4335694ecd3de2ea531b114ac2d51f5f843750787a92f" [[package]] name = "event-listener" @@ -1297,20 +1389,9 @@ dependencies = [ [[package]] name = "event-listener" -version = "4.0.3" +version = "5.3.1" 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 = "6d9944b8ca13534cdfb2800775f8dd4902ff3fc75a50101466decadfdf322a24" +checksum = "6032be9bd27023a771701cc49f9f053c751055f71efb2e0ae5c15809093675ba" dependencies = [ "concurrent-queue", "parking", @@ -1319,21 +1400,11 @@ dependencies = [ [[package]] name = "event-listener-strategy" -version = "0.4.0" +version = "0.5.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "958e4d70b6d5e81971bebec42271ec641e7ff4e170a6fa605f2b8a8b65cb97d3" +checksum = "0f214dc438f977e6d4e3500aaa277f5ad94ca83fbbd9b1a15713ce2344ccc5a1" 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 = "332f51cb23d20b0de8458b86580878211da09bcd4503cb579c225b3d124cabb3" -dependencies = [ - "event-listener 5.3.0", + "event-listener 5.3.1", "pin-project-lite", ] @@ -1348,9 +1419,9 @@ dependencies = [ [[package]] name = "fastrand" -version = "2.0.2" +version = "2.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "658bd65b1cf4c852a3cc96f18a8ce7b5640f6b703f905c7d74532294c2a63984" +checksum = "e8c02a5121d4ea3eb16a80748c74f5549a5665e4c21333c6098f283870fbdea6" [[package]] name = "fdeflate" @@ -1363,12 +1434,12 @@ dependencies = [ [[package]] name = "flate2" -version = "1.0.28" +version = "1.0.33" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "46303f565772937ffe1d394a4fac6f411c6013172fadde9dcdb1e147a086940e" +checksum = "324a1be68054ef05ad64b861cc9eaf1d623d2d8cb25b4bf2cb9cdd902b4bf253" dependencies = [ "crc32fast", - "miniz_oxide", + "miniz_oxide 0.8.0", ] [[package]] @@ -1404,7 +1475,7 @@ checksum = "1a5c6c585bc94aaf2c7b51dd4c2ba22680844aba4c687be581871a6f518c5742" dependencies = [ "proc-macro2", "quote", - "syn 2.0.58", + "syn 2.0.77", ] [[package]] @@ -1428,6 +1499,21 @@ dependencies = [ "percent-encoding", ] +[[package]] +name = "futures" +version = "0.3.30" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "645c6916888f6cb6350d2550b80fb63e734897a8498abe35cfb732b6487804b0" +dependencies = [ + "futures-channel", + "futures-core", + "futures-executor", + "futures-io", + "futures-sink", + "futures-task", + "futures-util", +] + [[package]] name = "futures-channel" version = "0.3.30" @@ -1435,6 +1521,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "eac8f7d7865dcb88bd4373ab671c8cf4508703796caa2b1985a9ca867b3fcb78" dependencies = [ "futures-core", + "futures-sink", ] [[package]] @@ -1443,6 +1530,17 @@ version = "0.3.30" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "dfc6580bb841c5a68e9ef15c77ccc837b40a7504914d52e47b8b0e9bbda25a1d" +[[package]] +name = "futures-executor" +version = "0.3.30" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a576fc72ae164fca6b9db127eaa9a9dda0d61316034f33a0a0d4eda41f02b01d" +dependencies = [ + "futures-core", + "futures-task", + "futures-util", +] + [[package]] name = "futures-io" version = "0.3.30" @@ -1470,13 +1568,24 @@ version = "2.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "52527eb5074e35e9339c6b4e8d12600c7128b68fb25dcb9fa9dec18f7c25f3a5" dependencies = [ - "fastrand 2.0.2", + "fastrand 2.1.1", "futures-core", "futures-io", "parking", "pin-project-lite", ] +[[package]] +name = "futures-macro" +version = "0.3.30" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "87750cf4b7a4c0625b1529e4c543c2182106e4dedc60a2a6455e00d212c489ac" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.77", +] + [[package]] name = "futures-sink" version = "0.3.30" @@ -1495,8 +1604,10 @@ version = "0.3.30" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3d6401deb83407ab3da39eba7e33987a73c3df0c82b4bb5813ee871c19c41d48" dependencies = [ + "futures-channel", "futures-core", "futures-io", + "futures-macro", "futures-sink", "futures-task", "memchr", @@ -1527,9 +1638,9 @@ dependencies = [ [[package]] name = "getrandom" -version = "0.2.14" +version = "0.2.15" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "94b22e06ecb0110981051723910cbf0b5f5e09a2062dd7663334ee79a9d1286c" +checksum = "c4567c8db10ae91089c99af84c68c38da3ec2f087c3f82960bcdbf3656b6f4d7" dependencies = [ "cfg-if", "libc", @@ -1538,9 +1649,9 @@ dependencies = [ [[package]] name = "gimli" -version = "0.28.1" +version = "0.31.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4271d37baee1b8c7e4b708028c57d816cf9d2434acb33a549475f78c181f6253" +checksum = "32085ea23f3234fc7846555e85283ba4de91e21016dc0455a16286d87a292d64" [[package]] name = "gl_generator" @@ -1571,7 +1682,7 @@ version = "0.31.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "18fcd4ae4e86d991ad1300b8f57166e5be0c95ef1f63f3f5b827f8a164548746" dependencies = [ - "bitflags 2.5.0", + "bitflags 2.6.0", "cfg_aliases", "cgl", "core-foundation", @@ -1580,7 +1691,7 @@ dependencies = [ "glutin_glx_sys", "glutin_wgl_sys", "icrate", - "libloading 0.8.3", + "libloading 0.8.5", "objc2 0.4.1", "once_cell", "raw-window-handle 0.5.2", @@ -1636,7 +1747,7 @@ version = "0.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "fbcd2dba93594b227a1f57ee09b8b9da8892c34d55aa332e034a228d0fe6a171" dependencies = [ - "bitflags 2.5.0", + "bitflags 2.6.0", "gpu-alloc-types", ] @@ -1646,7 +1757,7 @@ version = "0.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "98ff03b468aa837d70984d55f5d3f846f6ec31fe34bbb97c4f85219caeee1ca4" dependencies = [ - "bitflags 2.5.0", + "bitflags 2.6.0", ] [[package]] @@ -1668,7 +1779,7 @@ version = "0.2.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "cc11df1ace8e7e564511f53af41f3e42ddc95b56fd07b3f4445d2a6048bc682c" dependencies = [ - "bitflags 2.5.0", + "bitflags 2.6.0", "gpu-descriptor-types", "hashbrown", ] @@ -1679,20 +1790,20 @@ version = "0.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6bf0b36e6f090b7e1d8a4b49c0cb81c1f8376f72198c65dd3ad9ff3556b8b78c" dependencies = [ - "bitflags 2.5.0", + "bitflags 2.6.0", ] [[package]] name = "h2" -version = "0.4.4" +version = "0.4.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "816ec7294445779408f36fe57bc5b7fc1cf59664059096c65f905c1c61f58069" +checksum = "524e8ac6999421f49a846c2d4411f337e53497d8ec55d67753beffa43c5d9205" dependencies = [ + "atomic-waker", "bytes", "fnv", "futures-core", "futures-sink", - "futures-util", "http", "indexmap", "slab", @@ -1703,9 +1814,9 @@ dependencies = [ [[package]] name = "hashbrown" -version = "0.14.3" +version = "0.14.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "290f1a1d9242c78d09ce40a5e87e7554ee637af1351968159f4952f028f75604" +checksum = "e5274423e17b7c9fc20b6e7e208532f9b19825d82dfd615708b70edd83df41f1" dependencies = [ "ahash", "allocator-api2", @@ -1717,10 +1828,10 @@ version = "0.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "af2a7e73e1f34c48da31fb668a907f250794837e08faa144fd24f0b8b741e890" dependencies = [ - "bitflags 2.5.0", + "bitflags 2.6.0", "com", "libc", - "libloading 0.8.3", + "libloading 0.8.5", "thiserror", "widestring", "winapi", @@ -1738,6 +1849,12 @@ version = "0.3.9" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d231dfb89cfffdbc30e7fc41579ed6066ad03abda9e567ccafae602b97ec5024" +[[package]] +name = "hermit-abi" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fbf6a919d6cf397374f7dfeeea91d974c7c0a7221d0d0f4f20d859d329e53fcc" + [[package]] name = "hex" version = "0.4.3" @@ -1781,9 +1898,9 @@ dependencies = [ [[package]] name = "http-body" -version = "1.0.0" +version = "1.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1cac85db508abc24a2e48553ba12a996e87244a0395ce011e62b37158745d643" +checksum = "1efedce1fb8e6913f23e0c92de8e62cd5b772a67e7b3946df930a62566c93184" dependencies = [ "bytes", "http", @@ -1791,12 +1908,12 @@ dependencies = [ [[package]] name = "http-body-util" -version = "0.1.1" +version = "0.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0475f8b2ac86659c21b64320d5d653f9efe42acd2a4e560073ec61a155a34f1d" +checksum = "793429d76616a256bcb62c2a2ec2bed781c8307e797e2598c50010f2bee2544f" dependencies = [ "bytes", - "futures-core", + "futures-util", "http", "http-body", "pin-project-lite", @@ -1804,9 +1921,9 @@ dependencies = [ [[package]] name = "httparse" -version = "1.8.0" +version = "1.9.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d897f394bad6a705d5f4104762e116a75639e470d80901eed05a860a95cb1904" +checksum = "0fcc0b4a115bf80b728eb8ea024ad5bd707b615bfed49e0665b6e0f86fd082d9" [[package]] name = "humantime" @@ -1816,9 +1933,9 @@ checksum = "9a3a5bfb195931eeb336b2a7b4d761daec841b97f947d34394601737a7bba5e4" [[package]] name = "hyper" -version = "1.2.0" +version = "1.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "186548d73ac615b32a73aafe38fb4f56c0d340e110e5a200bcadbaf2e199263a" +checksum = "50dfd22e0e76d0f662d429a5f80fcaf3855009297eab6a0a9f8543834744ba05" dependencies = [ "bytes", "futures-channel", @@ -1834,6 +1951,23 @@ dependencies = [ "want", ] +[[package]] +name = "hyper-rustls" +version = "0.27.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "08afdbb5c31130e3034af566421053ab03787c640246a446327f550d11bcb333" +dependencies = [ + "futures-util", + "http", + "hyper", + "hyper-util", + "rustls", + "rustls-pki-types", + "tokio", + "tokio-rustls", + "tower-service", +] + [[package]] name = "hyper-tls" version = "0.6.0" @@ -1852,9 +1986,9 @@ dependencies = [ [[package]] name = "hyper-util" -version = "0.1.3" +version = "0.1.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ca38ef113da30126bbff9cd1705f9273e15d45498615d138b0c20279ac7a76aa" +checksum = "da62f120a8a37763efb0cf8fdf264b884c7b8b9ac8660b900c8661030c00e6ba" dependencies = [ "bytes", "futures-channel", @@ -1863,7 +1997,7 @@ dependencies = [ "http-body", "hyper", "pin-project-lite", - "socket2 0.5.6", + "socket2 0.5.7", "tokio", "tower", "tower-service", @@ -1906,9 +2040,9 @@ dependencies = [ [[package]] name = "indexmap" -version = "2.2.6" +version = "2.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "168fb715dda47215e360912c096649d23d58bf392ac62f73919e831745e40f26" +checksum = "68b900aa2f7301e21c36462b170ee99994de34dff39a4a6a528e80e7376d07e5" dependencies = [ "equivalent", "hashbrown", @@ -1925,9 +2059,9 @@ dependencies = [ [[package]] name = "instant" -version = "0.1.12" +version = "0.1.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7a5bbe824c507c5da5956355e86a746d82e0e1464f65d862cc5e71da70e94b2c" +checksum = "e0242819d153cba4b4b05a5a8f2a7e9bbf97b6055b2a002b395c96b5ff3c0222" dependencies = [ "cfg-if", ] @@ -1938,16 +2072,22 @@ version = "1.0.11" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "eae7b9aee968036d54dce06cebaefd919e4472e753296daccd6d344e3e2df0c2" dependencies = [ - "hermit-abi", + "hermit-abi 0.3.9", "libc", "windows-sys 0.48.0", ] [[package]] name = "ipnet" -version = "2.9.0" +version = "2.10.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8f518f335dce6725a761382244631d86cf0ccb2863413590b31338feb467f9c3" +checksum = "187674a687eed5fe42285b40c6291f9a01517d415fad1c3cbc6a9f778af7fcd4" + +[[package]] +name = "is_terminal_polyfill" +version = "1.70.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7943c866cc5cd64cbc25b2e01621d07fa8eb2a1a23160ee81ce38704e97b8ecf" [[package]] name = "itoa" @@ -1979,18 +2119,18 @@ checksum = "8eaf4bc02d17cbdd7ff4c7438cafcdf7fb9a4613313ad11b4f8fefe7d3fa0130" [[package]] name = "jobserver" -version = "0.1.30" +version = "0.1.32" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "685a7d121ee3f65ae4fddd72b25a04bb36b6af81bc0828f7d5434c0fe60fa3a2" +checksum = "48d1dbcbbeb6a7fec7e059840aa538bd62aaccf972c7346c4d9d2059312853d0" dependencies = [ "libc", ] [[package]] name = "js-sys" -version = "0.3.69" +version = "0.3.70" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "29c15563dc2726973df627357ce0c9ddddbea194836909d655df6a75d2cf296d" +checksum = "1868808506b929d7b0cfa8f75951347aa71bb21144b7791bae35d9bccfcfe37a" dependencies = [ "wasm-bindgen", ] @@ -2002,7 +2142,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6aae1df220ece3c0ada96b8153459b67eebe9ae9212258bb0134ae60416fdf76" dependencies = [ "libc", - "libloading 0.8.3", + "libloading 0.8.5", "pkg-config", ] @@ -2014,15 +2154,15 @@ checksum = "e2db585e1d738fc771bf08a151420d3ed193d9d895a36df7f6f8a9456b911ddc" [[package]] name = "lazy_static" -version = "1.4.0" +version = "1.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e2abad23fbc42b3700f2f279844dc832adb2b2eb069b2df918f455c4e18cc646" +checksum = "bbd2bcb4c963f2ddae06a2efc7e9f3591312473c50c6685e1f298068316e66fe" [[package]] name = "libc" -version = "0.2.153" +version = "0.2.158" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9c198f91728a82281a64e1f4f9eeb25d82cb32a5de251c6bd1b5154d63a8e7bd" +checksum = "d8adc4bb1803a324070e64a98ae98f38934d91957a99cfb3a43dcbc01bc56439" [[package]] name = "libloading" @@ -2036,12 +2176,12 @@ dependencies = [ [[package]] name = "libloading" -version = "0.8.3" +version = "0.8.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0c2a198fb6b0eada2a8df47933734e6d35d350665a33a3593d7164fa52c75c19" +checksum = "4979f22fdb869068da03c9f7528f8297c6fd2606bc3a4affe42e6a823fdb8da4" dependencies = [ "cfg-if", - "windows-targets 0.52.5", + "windows-targets 0.52.6", ] [[package]] @@ -2050,7 +2190,7 @@ version = "0.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3af92c55d7d839293953fcd0fda5ecfe93297cfde6ffbdec13b41d99c0ba6607" dependencies = [ - "bitflags 2.5.0", + "bitflags 2.6.0", "libc", "redox_syscall 0.4.1", ] @@ -2063,9 +2203,9 @@ checksum = "ef53942eb7bf7ff43a617b3e2c1c4a5ecf5944a7c1bc12d7ee39bbb15e5c1519" [[package]] name = "linux-raw-sys" -version = "0.4.13" +version = "0.4.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "01cda141df6706de531b6c46c3a33ecca755538219bd484262fa09410c13539c" +checksum = "78b3ae25bc7c8c38cec158d1f2757ee79e9b3740fbc7ccf0e59e4b08d793fa89" [[package]] name = "litrs" @@ -2075,9 +2215,9 @@ checksum = "b4ce301924b7887e9d637144fdade93f9dfff9b60981d4ac161db09720d39aa5" [[package]] name = "lock_api" -version = "0.4.11" +version = "0.4.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3c168f8615b12bc01f9c17e2eb0cc07dcae1940121185446edc3744920e8ef45" +checksum = "07af8b9cdd281b7915f413fa73f29ebd5d55d0d3f0155584dade1ff18cea1b17" dependencies = [ "autocfg", "scopeguard", @@ -2085,9 +2225,9 @@ dependencies = [ [[package]] name = "log" -version = "0.4.21" +version = "0.4.22" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "90ed8c1e510134f979dbc4f070f87d4313098b704861a105fe34231c70a3901c" +checksum = "a7a70ba024b9dc04c27ea2f0c0548feb474ec5c54bba33a7f72f873a39d07b24" [[package]] name = "malloc_buf" @@ -2108,7 +2248,9 @@ dependencies = [ "clap", "eframe", "egui", + "egui_extras", "env_logger", + "futures", "lazy_static", "libc", "log", @@ -2123,15 +2265,15 @@ dependencies = [ [[package]] name = "memchr" -version = "2.7.2" +version = "2.7.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6c8640c5d730cb13ebd907d8d04b52f55ac9a2eec55b440c8892f40d56c76c1d" +checksum = "78ca9ab1a0babb1e7d5695e3530886289c18cf2f87ec19a575a0abdce112e3a3" [[package]] name = "memmap2" -version = "0.9.4" +version = "0.9.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fe751422e4a8caa417e13c3ea66452215d7d63e19e604f4980461212f3ae1322" +checksum = "fd3f7eed9d3848f8b98834af67102b720745c4ec028fcd0aa0239277e7de374f" dependencies = [ "libc", ] @@ -2160,7 +2302,7 @@ version = "0.27.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c43f73953f8cbe511f021b58f18c3ce1c3d1ae13fe953293e13345bf83217f25" dependencies = [ - "bitflags 2.5.0", + "bitflags 2.6.0", "block", "core-graphics-types", "foreign-types 0.5.0", @@ -2176,24 +2318,44 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6877bb514081ee2a7ff5ef9de3281f14a4dd4bceac4c09388074a6b5df8a139a" [[package]] -name = "miniz_oxide" -version = "0.7.2" +name = "mime_guess2" +version = "2.0.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9d811f3e15f28568be3407c8e7fdb6514c1cda3cb30683f15b6a1a1dc4ea14a7" +checksum = "25a3333bb1609500601edc766a39b4c1772874a4ce26022f4d866854dc020c41" +dependencies = [ + "mime", + "unicase", +] + +[[package]] +name = "miniz_oxide" +version = "0.7.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b8a240ddb74feaf34a79a7add65a741f3167852fba007066dcac1ca548d89c08" dependencies = [ "adler", "simd-adler32", ] [[package]] -name = "mio" -version = "0.8.11" +name = "miniz_oxide" +version = "0.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a4a650543ca06a924e8b371db273b2756685faae30f8487da1b56505a8f78b0c" +checksum = "e2d80299ef12ff69b16a84bb182e3b9df68b5a91574d3d4fa6e41b65deec4df1" dependencies = [ + "adler2", +] + +[[package]] +name = "mio" +version = "1.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "80e04d1dcff3aae0704555fe5fee3bcfaf3d1fdf8a7e521d5b9d2b42acb52cec" +dependencies = [ + "hermit-abi 0.3.9", "libc", "wasi", - "windows-sys 0.48.0", + "windows-sys 0.52.0", ] [[package]] @@ -2203,7 +2365,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "50e3524642f53d9af419ab5e8dd29d3ba155708267667c2f3f06c88c9e130843" dependencies = [ "bit-set", - "bitflags 2.5.0", + "bitflags 2.6.0", "codespan-reporting", "hexf-parse", "indexmap", @@ -2218,11 +2380,10 @@ dependencies = [ [[package]] name = "native-tls" -version = "0.2.11" +version = "0.2.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "07226173c32f2926027b63cce4bcd8076c3552846cbe7925f3aaffeac0a3b92e" +checksum = "a8614eb2c83d59d1c8cc974dd3f920198647674a0a035e1af1fa58707e317466" dependencies = [ - "lazy_static", "libc", "log", "openssl", @@ -2240,13 +2401,13 @@ version = "0.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "2076a31b7010b17a38c01907c45b945e8f11495ee4dd588309718901b1f7a5b7" dependencies = [ - "bitflags 2.5.0", + "bitflags 2.6.0", "jni-sys", "log", "ndk-sys", "num_enum", "raw-window-handle 0.5.2", - "raw-window-handle 0.6.1", + "raw-window-handle 0.6.2", "thiserror", ] @@ -2291,42 +2452,32 @@ checksum = "51d515d32fb182ee37cda2ccdcb92950d6a3c2893aa280e540671c2cd0f3b1d9" [[package]] name = "num-traits" -version = "0.2.18" +version = "0.2.19" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "da0df0e5185db44f69b44f26786fe401b6c293d1907744beaa7fa62b2e5a517a" +checksum = "071dfc062690e90b734c0b2273ce72ad0ffa95f0c74596bc250dcfd960262841" dependencies = [ "autocfg", ] -[[package]] -name = "num_cpus" -version = "1.16.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4161fcb6d602d4d2081af7c3a45852d875a03dd337a6bfdd6e06407b61342a43" -dependencies = [ - "hermit-abi", - "libc", -] - [[package]] name = "num_enum" -version = "0.7.2" +version = "0.7.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "02339744ee7253741199f897151b38e72257d13802d4ee837285cc2990a90845" +checksum = "4e613fc340b2220f734a8595782c551f1250e969d87d3be1ae0579e8d4065179" dependencies = [ "num_enum_derive", ] [[package]] name = "num_enum_derive" -version = "0.7.2" +version = "0.7.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "681030a937600a36906c185595136d26abfebb4aa9c65701cefcaf8578bb982b" +checksum = "af1844ef2428cc3e1cb900be36181049ef3d3193c63e43026cfe202983b27a56" dependencies = [ - "proc-macro-crate 3.1.0", + "proc-macro-crate 3.2.0", "proc-macro2", "quote", - "syn 2.0.58", + "syn 2.0.77", ] [[package]] @@ -2339,17 +2490,6 @@ dependencies = [ "objc_exception", ] -[[package]] -name = "objc-foundation" -version = "0.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1add1b659e36c9607c7aab864a76c7a4c2760cd0cd2e120f3fb8b952c7e22bf9" -dependencies = [ - "block", - "objc", - "objc_id", -] - [[package]] name = "objc-sys" version = "0.2.0-beta.2" @@ -2358,9 +2498,9 @@ checksum = "df3b9834c1e95694a05a828b59f55fa2afec6288359cda67146126b3f90a55d7" [[package]] name = "objc-sys" -version = "0.3.3" +version = "0.3.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "da284c198fb9b7b0603f8635185e85fbd5b64ee154b1ed406d489077de2d6d60" +checksum = "cdb91bdd390c7ce1a8607f35f3ca7151b65afc0ff5ff3b34fa350f7d7c7e4310" [[package]] name = "objc2" @@ -2379,10 +2519,60 @@ version = "0.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "559c5a40fdd30eb5e344fbceacf7595a81e242529fb4e21cf5f43fb4f11ff98d" dependencies = [ - "objc-sys 0.3.3", + "objc-sys 0.3.5", "objc2-encode 3.0.0", ] +[[package]] +name = "objc2" +version = "0.5.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "46a785d4eeff09c14c487497c162e92766fbb3e4059a71840cecc03d9a50b804" +dependencies = [ + "objc-sys 0.3.5", + "objc2-encode 4.0.3", +] + +[[package]] +name = "objc2-app-kit" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e4e89ad9e3d7d297152b17d39ed92cd50ca8063a89a9fa569046d41568891eff" +dependencies = [ + "bitflags 2.6.0", + "block2 0.5.1", + "libc", + "objc2 0.5.2", + "objc2-core-data", + "objc2-core-image", + "objc2-foundation", + "objc2-quartz-core", +] + +[[package]] +name = "objc2-core-data" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "617fbf49e071c178c0b24c080767db52958f716d9eabdf0890523aeae54773ef" +dependencies = [ + "bitflags 2.6.0", + "block2 0.5.1", + "objc2 0.5.2", + "objc2-foundation", +] + +[[package]] +name = "objc2-core-image" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "55260963a527c99f1819c4f8e3b47fe04f9650694ef348ffd2227e8196d34c80" +dependencies = [ + "block2 0.5.1", + "objc2 0.5.2", + "objc2-foundation", + "objc2-metal", +] + [[package]] name = "objc2-encode" version = "2.0.0-pre.2" @@ -2398,6 +2588,49 @@ version = "3.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d079845b37af429bfe5dfa76e6d087d788031045b25cfc6fd898486fd9847666" +[[package]] +name = "objc2-encode" +version = "4.0.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7891e71393cd1f227313c9379a26a584ff3d7e6e7159e988851f0934c993f0f8" + +[[package]] +name = "objc2-foundation" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0ee638a5da3799329310ad4cfa62fbf045d5f56e3ef5ba4149e7452dcf89d5a8" +dependencies = [ + "bitflags 2.6.0", + "block2 0.5.1", + "libc", + "objc2 0.5.2", +] + +[[package]] +name = "objc2-metal" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dd0cba1276f6023976a406a14ffa85e1fdd19df6b0f737b063b95f6c8c7aadd6" +dependencies = [ + "bitflags 2.6.0", + "block2 0.5.1", + "objc2 0.5.2", + "objc2-foundation", +] + +[[package]] +name = "objc2-quartz-core" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e42bee7bff906b14b167da2bac5efe6b6a07e6f7c0a21a7308d40c960242dc7a" +dependencies = [ + "bitflags 2.6.0", + "block2 0.5.1", + "objc2 0.5.2", + "objc2-foundation", + "objc2-metal", +] + [[package]] name = "objc_exception" version = "0.1.2" @@ -2407,37 +2640,28 @@ dependencies = [ "cc", ] -[[package]] -name = "objc_id" -version = "0.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c92d4ddb4bd7b50d730c215ff871754d0da6b2178849f8a2a2ab69712d0c073b" -dependencies = [ - "objc", -] - [[package]] name = "object" -version = "0.32.2" +version = "0.36.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a6a622008b6e321afc04970976f62ee297fdbaa6f95318ca343e3eebb9648441" +checksum = "084f1a5821ac4c651660a94a7153d27ac9d8a53736203f58b31945ded098070a" dependencies = [ "memchr", ] [[package]] name = "once_cell" -version = "1.19.0" +version = "1.20.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3fdb12b2476b595f9358c5161aa467c2438859caa136dec86c26fdd2efe17b92" +checksum = "33ea5043e58958ee56f3e15a90aee535795cd7dfd319846288d93c5b57d85cbe" [[package]] name = "openssl" -version = "0.10.64" +version = "0.10.66" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "95a0481286a310808298130d22dd1fef0fa571e05a8f44ec801801e84b216b1f" +checksum = "9529f4786b70a3e8c61e11179af17ab6188ad8d0ded78c5529441ed39d4bd9c1" dependencies = [ - "bitflags 2.5.0", + "bitflags 2.6.0", "cfg-if", "foreign-types 0.3.2", "libc", @@ -2454,7 +2678,7 @@ checksum = "a948666b637a0f465e8564c73e89d4dde00d72d4d473cc972f390fc3dcee7d9c" dependencies = [ "proc-macro2", "quote", - "syn 2.0.58", + "syn 2.0.77", ] [[package]] @@ -2465,9 +2689,9 @@ checksum = "ff011a302c396a5197692431fc1948019154afc178baf7d8e37367442a4601cf" [[package]] name = "openssl-sys" -version = "0.9.102" +version = "0.9.103" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c597637d56fbc83893a35eb0dd04b2b8e7a50c91e64e9493e398b5df4fb45fa2" +checksum = "7f9e8deee91df40a943c71b917e5874b951d32a802526c85721ce3b776c929d6" dependencies = [ "cc", "libc", @@ -2496,24 +2720,24 @@ dependencies = [ [[package]] name = "owned_ttf_parser" -version = "0.20.0" +version = "0.24.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d4586edfe4c648c71797a74c84bacb32b52b212eff5dfe2bb9f2c599844023e7" +checksum = "490d3a563d3122bf7c911a59b0add9389e5ec0f5f0c3ac6b91ff235a0e6a7f90" dependencies = [ "ttf-parser", ] [[package]] name = "parking" -version = "2.2.0" +version = "2.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bb813b8af86854136c6922af0598d719255ecb2179515e6e7730d468f05c9cae" +checksum = "f38d5652c16fde515bb1ecef450ab0f6a219d619a7274976324d5e377f7dceba" [[package]] name = "parking_lot" -version = "0.12.1" +version = "0.12.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3742b2c103b9f06bc9fff0a37ff4912935851bee6d36f3c02bcc755bcfec228f" +checksum = "f1bf18183cf54e8d6059647fc3063646a1801cf30896933ec2311622cc4b9a27" dependencies = [ "lock_api", "parking_lot_core", @@ -2521,15 +2745,15 @@ dependencies = [ [[package]] name = "parking_lot_core" -version = "0.9.9" +version = "0.9.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4c42a9226546d68acdd9c0a280d17ce19bfe27a46bf68784e4066115788d008e" +checksum = "1e401f977ab385c9e4e3ab30627d6f26d00e2c73eef317493c4ec6d468726cf8" dependencies = [ "cfg-if", "libc", - "redox_syscall 0.4.1", + "redox_syscall 0.5.4", "smallvec", - "windows-targets 0.48.5", + "windows-targets 0.52.6", ] [[package]] @@ -2545,9 +2769,9 @@ dependencies = [ [[package]] name = "paste" -version = "1.0.14" +version = "1.0.15" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "de3145af08024dea9fa9914f381a17b8fc6034dfb00f3a84013f7ff43f29ed4c" +checksum = "57c0d7b74b563b49d38dae00a0c37d4d6de9b432382b2892f0574ddcae73fd0a" [[package]] name = "pbkdf2" @@ -2584,7 +2808,7 @@ checksum = "2f38a4412a78282e09a2cf38d195ea5420d15ba0602cb375210efbc877243965" dependencies = [ "proc-macro2", "quote", - "syn 2.0.58", + "syn 2.0.77", ] [[package]] @@ -2601,12 +2825,12 @@ checksum = "8b870d8c151b6f2fb93e84a13146138f05d02ed11c7e7c54f8826aaaf7c9f184" [[package]] name = "piper" -version = "0.2.1" +version = "0.2.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "668d31b1c4eba19242f2088b2bf3316b82ca31082a8335764db4e083db7485d4" +checksum = "96c8c490f422ef9a4efd2cb5b42b76c8613d7e7dfc1caf667b8a3350a5acc066" dependencies = [ "atomic-waker", - "fastrand 2.0.2", + "fastrand 2.1.1", "futures-io", ] @@ -2626,7 +2850,7 @@ dependencies = [ "crc32fast", "fdeflate", "flate2", - "miniz_oxide", + "miniz_oxide 0.7.4", ] [[package]] @@ -2647,17 +2871,17 @@ dependencies = [ [[package]] name = "polling" -version = "3.6.0" +version = "3.7.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e0c976a60b2d7e99d6f229e414670a9b85d13ac305cc6d1e9c134de58c5aaaf6" +checksum = "cc2790cd301dec6cd3b7a025e4815cf825724a51c98dccfe6a3e55f05ffb6511" dependencies = [ "cfg-if", "concurrent-queue", - "hermit-abi", + "hermit-abi 0.4.0", "pin-project-lite", - "rustix 0.38.32", + "rustix 0.38.37", "tracing", - "windows-sys 0.52.0", + "windows-sys 0.59.0", ] [[package]] @@ -2668,9 +2892,12 @@ checksum = "439ee305def115ba05938db6eb1644ff94165c5ab5e9420d1c1bcedbba909391" [[package]] name = "ppv-lite86" -version = "0.2.17" +version = "0.2.20" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5b40af805b3121feab8a3c29f04d8ad262fa8e0561883e7653e024ae4479e6de" +checksum = "77957b295656769bb8ad2b6a6b09d897d94f05c41b069aede1fcdaa675eaea04" +dependencies = [ + "zerocopy", +] [[package]] name = "presser" @@ -2690,18 +2917,18 @@ dependencies = [ [[package]] name = "proc-macro-crate" -version = "3.1.0" +version = "3.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6d37c51ca738a55da99dc0c4a34860fd675453b8b36209178c2249bb13651284" +checksum = "8ecf48c7ca261d60b74ab1a7b20da18bede46776b2e55535cb958eb595c5fa7b" dependencies = [ - "toml_edit 0.21.1", + "toml_edit 0.22.20", ] [[package]] name = "proc-macro2" -version = "1.0.79" +version = "1.0.86" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e835ff2298f5721608eb1a980ecaee1aef2c132bf95ecc026a11b7bf3c01c02e" +checksum = "5e719e8df665df0d1c8fbfd238015744736151d4445ec0836b8e628aae103b77" dependencies = [ "unicode-ident", ] @@ -2714,18 +2941,18 @@ checksum = "43d84d1d7a6ac92673717f9f6d1518374ef257669c24ebc5ac25d5033828be58" [[package]] name = "quick-xml" -version = "0.31.0" +version = "0.36.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1004a344b30a54e2ee58d66a71b32d2db2feb0a31f9a2d302bf0536f15de2a33" +checksum = "96a05e2e8efddfa51a84ca47cec303fac86c8541b686d37cac5efc0e094417bc" dependencies = [ "memchr", ] [[package]] name = "quote" -version = "1.0.35" +version = "1.0.37" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "291ec9ab5efd934aaf503a6466c5d5251535d108ee747472c3977cc5acc868ef" +checksum = "b5b9d34b8991d19d98081b46eacdd8eb58c6f2b201139f7c5f643cc155a633af" dependencies = [ "proc-macro2", ] @@ -2768,9 +2995,9 @@ checksum = "f2ff9a1f06a88b01621b7ae906ef0211290d1c8a168a15542486a8f61c0833b9" [[package]] name = "raw-window-handle" -version = "0.6.1" +version = "0.6.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8cc3bcbdb1ddfc11e700e62968e6b4cc9c75bb466464ad28fb61c5b2c964418b" +checksum = "20675572f6f24e9e76ef639bc5552774ed45f1c30e2951e1e99c59888861c539" [[package]] name = "redox_syscall" @@ -2791,10 +3018,19 @@ dependencies = [ ] [[package]] -name = "regex" -version = "1.10.4" +name = "redox_syscall" +version = "0.5.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c117dbdfde9c8308975b6a18d71f3f385c89461f7b3fb054288ecf2a2058ba4c" +checksum = "0884ad60e090bf1345b93da0a5de8923c93884cd03f40dfcfddd3b4bee661853" +dependencies = [ + "bitflags 2.6.0", +] + +[[package]] +name = "regex" +version = "1.10.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4219d74c6b67a3654a9fbebc4b419e22126d13d2f3c4a07ee0cb61ff79a79619" dependencies = [ "aho-corasick", "memchr", @@ -2804,9 +3040,9 @@ dependencies = [ [[package]] name = "regex-automata" -version = "0.4.6" +version = "0.4.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "86b83b8b9847f9bf95ef68afb0b8e6cdb80f498442f5179a29fad448fcc1eaea" +checksum = "38caf58cc5ef2fed281f89292ef23f6365465ed9a41b7a7754eb4e26496c92df" dependencies = [ "aho-corasick", "memchr", @@ -2815,9 +3051,9 @@ dependencies = [ [[package]] name = "regex-syntax" -version = "0.8.3" +version = "0.8.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "adad44e29e4c806119491a7f06f03de4d1af22c3a680dd47f1e6e179439d1f56" +checksum = "7a66a03ae7c801facd77a29370b4faec201768915ac14a721ba36f20bc9c209b" [[package]] name = "renderdoc-sys" @@ -2827,9 +3063,9 @@ checksum = "19b30a45b0cd0bcca8037f3d0dc3421eaf95327a17cad11964fb8179b4fc4832" [[package]] name = "reqwest" -version = "0.12.3" +version = "0.12.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3e6cc1e89e689536eb5aeede61520e874df5a4707df811cd5da4aa5fbb2aae19" +checksum = "f8f4955649ef5c38cc7f9e8aa41761d48fb9677197daea9984dc54f56aad5e63" dependencies = [ "base64", "bytes", @@ -2841,6 +3077,7 @@ dependencies = [ "http-body", "http-body-util", "hyper", + "hyper-rustls", "hyper-tls", "hyper-util", "ipnet", @@ -2864,14 +3101,29 @@ dependencies = [ "wasm-bindgen", "wasm-bindgen-futures", "web-sys", - "winreg", + "windows-registry", +] + +[[package]] +name = "ring" +version = "0.17.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c17fa4cb658e3583423e915b9f3acc01cceaee1860e33d59ebae66adc3a2dc0d" +dependencies = [ + "cc", + "cfg-if", + "getrandom", + "libc", + "spin", + "untrusted", + "windows-sys 0.52.0", ] [[package]] name = "rustc-demangle" -version = "0.1.23" +version = "0.1.24" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d626bb9dae77e28219937af045c257c28bfd3f69333c512553507f5f9798cb76" +checksum = "719b953e2095829ee67db738b3bfa9fa368c94900df327b3f07fe6e794d2fe1f" [[package]] name = "rustc-hash" @@ -2895,22 +3147,35 @@ dependencies = [ [[package]] name = "rustix" -version = "0.38.32" +version = "0.38.37" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "65e04861e65f21776e67888bfbea442b3642beaa0138fdb1dd7a84a52dffdb89" +checksum = "8acb788b847c24f28525660c4d7758620a7210875711f79e7f663cc152726811" dependencies = [ - "bitflags 2.5.0", + "bitflags 2.6.0", "errno", "libc", - "linux-raw-sys 0.4.13", + "linux-raw-sys 0.4.14", "windows-sys 0.52.0", ] [[package]] -name = "rustls-pemfile" -version = "2.1.2" +name = "rustls" +version = "0.23.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "29993a25686778eb88d4189742cd713c9bce943bc54251a33509dc63cbacf73d" +checksum = "f2dabaac7466917e566adb06783a81ca48944c6898a1b08b9374106dd671f4c8" +dependencies = [ + "once_cell", + "rustls-pki-types", + "rustls-webpki", + "subtle", + "zeroize", +] + +[[package]] +name = "rustls-pemfile" +version = "2.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "196fe16b00e106300d3e45ecfcb764fa292a535d7326a29a5875c579c7417425" dependencies = [ "base64", "rustls-pki-types", @@ -2918,15 +3183,26 @@ dependencies = [ [[package]] name = "rustls-pki-types" -version = "1.4.1" +version = "1.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ecd36cc4259e3e4514335c4a138c6b43171a8d61d8f5c9348f9fc7529416f247" +checksum = "fc0a2ce646f8655401bb81e7927b812614bd5d91dbc968696be50603510fcaf0" + +[[package]] +name = "rustls-webpki" +version = "0.102.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "64ca1bc8749bd4cf37b5ce386cc146580777b4e8572c7b97baf22c83f444bee9" +dependencies = [ + "ring", + "rustls-pki-types", + "untrusted", +] [[package]] name = "ryu" -version = "1.0.17" +version = "1.0.18" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e86697c916019a8588c99b5fac3cead74ec0b4b819707a682fd4d23fa0ce1ba1" +checksum = "f3cb5ba0dc43242ce17de99c180e96db90b235b8a9fdc9543c96d2209116bd9f" [[package]] name = "same-file" @@ -2939,11 +3215,11 @@ dependencies = [ [[package]] name = "schannel" -version = "0.1.23" +version = "0.1.24" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fbc91545643bcf3a0bbb6569265615222618bdf33ce4ffbbd13c4bbd4c093534" +checksum = "e9aaafd5a2b6e3d657ff009d82fbd630b6bd54dd4eb06f21693925cdf80f9b8b" dependencies = [ - "windows-sys 0.52.0", + "windows-sys 0.59.0", ] [[package]] @@ -2960,24 +3236,24 @@ checksum = "94143f37725109f92c262ed2cf5e59bce7498c01bcc1502d7b9afe439a4e9f49" [[package]] name = "sctk-adwaita" -version = "0.8.1" +version = "0.8.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "82b2eaf3a5b264a521b988b2e73042e742df700c4f962cde845d1541adb46550" +checksum = "70b31447ca297092c5a9916fc3b955203157b37c19ca8edde4f52e9843e602c7" dependencies = [ "ab_glyph", "log", "memmap2", - "smithay-client-toolkit", + "smithay-client-toolkit 0.18.1", "tiny-skia", ] [[package]] name = "security-framework" -version = "2.10.0" +version = "2.11.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "770452e37cad93e0a50d5abc3990d2bc351c36d0328f86cefec2f2fb206eaef6" +checksum = "897b2245f0b511c87893af39b033e5ca9cce68824c4d7e7630b5a1d339658d02" dependencies = [ - "bitflags 1.3.2", + "bitflags 2.6.0", "core-foundation", "core-foundation-sys", "libc", @@ -2986,9 +3262,9 @@ dependencies = [ [[package]] name = "security-framework-sys" -version = "2.10.0" +version = "2.11.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "41f3cc463c0ef97e11c3461a9d3787412d30e8e7eb907c79180c4a57bf7c04ef" +checksum = "75da29fe9b9b08fe9d6b22b5b4bcbc75d8db3aa31e639aa56bb62e9d46bfceaf" dependencies = [ "core-foundation-sys", "libc", @@ -2996,31 +3272,32 @@ dependencies = [ [[package]] name = "serde" -version = "1.0.197" +version = "1.0.210" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3fb1c873e1b9b056a4dc4c0c198b24c3ffa059243875552b2bd0933b1aee4ce2" +checksum = "c8e3592472072e6e22e0a54d5904d9febf8508f65fb8552499a1abc7d1078c3a" dependencies = [ "serde_derive", ] [[package]] name = "serde_derive" -version = "1.0.197" +version = "1.0.210" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7eb0b34b42edc17f6b7cac84a52a1c5f0e1bb2227e997ca9011ea3dd34e8610b" +checksum = "243902eda00fad750862fc144cea25caca5e20d615af0a81bee94ca738f1df1f" dependencies = [ "proc-macro2", "quote", - "syn 2.0.58", + "syn 2.0.77", ] [[package]] name = "serde_json" -version = "1.0.115" +version = "1.0.128" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "12dc5c46daa8e9fdf4f5e71b6cf9a53f2487da0e86e55808e2d35539666497dd" +checksum = "6ff5456707a1de34e7e37f2a6fd3d3f808c318259cbd01ab6377795054b483d8" dependencies = [ "itoa", + "memchr", "ryu", "serde", ] @@ -3033,7 +3310,7 @@ checksum = "6c64451ba24fc7a6a2d60fc75dd9c83c90903b19028d4eff35e88fc1e86564e9" dependencies = [ "proc-macro2", "quote", - "syn 2.0.58", + "syn 2.0.77", ] [[package]] @@ -3071,10 +3348,16 @@ dependencies = [ ] [[package]] -name = "signal-hook-registry" -version = "1.4.1" +name = "shlex" +version = "1.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d8229b473baa5980ac72ef434c4415e70c4b5e71b423043adb4ba059f89c99a1" +checksum = "0fda2ff0d084019ba4d7c6f371c95d8fd75ce3524c3cb8fb653a3023f6323e64" + +[[package]] +name = "signal-hook-registry" +version = "1.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a9e9e0b4211b72e7b8b6e85c807d36c212bdb33ea8587f7569562a84df5465b1" dependencies = [ "libc", ] @@ -3115,41 +3398,66 @@ version = "0.18.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "922fd3eeab3bd820d76537ce8f582b1cf951eceb5475c28500c7457d9d17f53a" dependencies = [ - "bitflags 2.5.0", - "calloop", - "calloop-wayland-source", + "bitflags 2.6.0", + "calloop 0.12.4", + "calloop-wayland-source 0.2.0", "cursor-icon", "libc", "log", "memmap2", - "rustix 0.38.32", + "rustix 0.38.37", "thiserror", "wayland-backend", "wayland-client", "wayland-csd-frame", "wayland-cursor", - "wayland-protocols", - "wayland-protocols-wlr", + "wayland-protocols 0.31.2", + "wayland-protocols-wlr 0.2.0", + "wayland-scanner", + "xkeysym", +] + +[[package]] +name = "smithay-client-toolkit" +version = "0.19.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3457dea1f0eb631b4034d61d4d8c32074caa6cd1ab2d59f2327bd8461e2c0016" +dependencies = [ + "bitflags 2.6.0", + "calloop 0.13.0", + "calloop-wayland-source 0.3.0", + "cursor-icon", + "libc", + "log", + "memmap2", + "rustix 0.38.37", + "thiserror", + "wayland-backend", + "wayland-client", + "wayland-csd-frame", + "wayland-cursor", + "wayland-protocols 0.32.4", + "wayland-protocols-wlr 0.3.4", "wayland-scanner", "xkeysym", ] [[package]] name = "smithay-clipboard" -version = "0.7.1" +version = "0.7.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c091e7354ea8059d6ad99eace06dd13ddeedbb0ac72d40a9a6e7ff790525882d" +checksum = "cc8216eec463674a0e90f29e0ae41a4db573ec5b56b1c6c1c71615d249b6d846" dependencies = [ "libc", - "smithay-client-toolkit", + "smithay-client-toolkit 0.19.2", "wayland-backend", ] [[package]] name = "smol_str" -version = "0.2.1" +version = "0.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e6845563ada680337a52d43bb0b29f396f2d911616f6573012645b9e3d048a49" +checksum = "dd538fb6910ac1099850255cf94a94df6551fbdd602454387d0adb2d1ca6dead" dependencies = [ "serde", ] @@ -3166,21 +3474,27 @@ dependencies = [ [[package]] name = "socket2" -version = "0.5.6" +version = "0.5.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "05ffd9c0a93b7543e062e759284fcf5f5e3b098501104bfbdde4d404db792871" +checksum = "ce305eb0b4296696835b71df73eb912e0f1ffd2556a501fcede6e0c50349191c" dependencies = [ "libc", "windows-sys 0.52.0", ] +[[package]] +name = "spin" +version = "0.9.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6980e8d7511241f8acf4aebddbb1ff938df5eebe98691418c4468d0b72a96a67" + [[package]] name = "spirv" version = "0.3.0+sdk-1.3.268.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "eda41003dc44290527a59b13432d4a0379379fa074b70174882adfbdfd917844" dependencies = [ - "bitflags 2.5.0", + "bitflags 2.6.0", ] [[package]] @@ -3203,9 +3517,9 @@ checksum = "7da8b5736845d9f2fcb837ea5d9e2628564b3b043a70948a3f0b778838c5fb4f" [[package]] name = "subtle" -version = "2.5.0" +version = "2.6.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "81cdd64d312baedb58e21336b31bc043b77e01cc99033ce76ef539f78e965ebc" +checksum = "13c2bddecc57b384dee18652358fb23172facb8a2c51ccc10d74c157bdea3292" [[package]] name = "syn" @@ -3220,9 +3534,9 @@ dependencies = [ [[package]] name = "syn" -version = "2.0.58" +version = "2.0.77" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "44cfb93f38070beee36b3fef7d4f5a16f27751d94b187b666a5cc5e9b0d30687" +checksum = "9f35bcdf61fd8e7be6caf75f429fdca8beb3ed76584befb503b1569faee373ed" dependencies = [ "proc-macro2", "quote", @@ -3231,26 +3545,29 @@ dependencies = [ [[package]] name = "sync_wrapper" -version = "0.1.2" +version = "1.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2047c6ded9c721764247e62cd3b03c09ffc529b2ba5b10ec482ae507a4a70160" +checksum = "a7065abeca94b6a8a577f9bd45aa0867a2238b74e8eb67cf10d492bc39351394" +dependencies = [ + "futures-core", +] [[package]] name = "system-configuration" -version = "0.5.1" +version = "0.6.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ba3a3adc5c275d719af8cb4272ea1c4a6d668a777f37e115f6d11ddbc1c8e0e7" +checksum = "3c879d448e9d986b661742763247d3693ed13609438cf3d006f51f5368a5ba6b" dependencies = [ - "bitflags 1.3.2", + "bitflags 2.6.0", "core-foundation", "system-configuration-sys", ] [[package]] name = "system-configuration-sys" -version = "0.5.0" +version = "0.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a75fb188eb626b924683e3b95e3a48e63551fcfb51949de2f06a9d91dbee93c9" +checksum = "8e1d1b10ced5ca923a1fcb8d03e96b8d3268065d724548c0211415ff6ac6bac4" dependencies = [ "core-foundation-sys", "libc", @@ -3258,14 +3575,15 @@ dependencies = [ [[package]] name = "tempfile" -version = "3.10.1" +version = "3.12.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "85b77fafb263dd9d05cbeac119526425676db3784113aa9295c88498cbf8bff1" +checksum = "04cbcdd0c794ebb0d4cf35e88edd2f7d2c4c3e9a5a6dab322839b321c6a87a64" dependencies = [ "cfg-if", - "fastrand 2.0.2", - "rustix 0.38.32", - "windows-sys 0.52.0", + "fastrand 2.1.1", + "once_cell", + "rustix 0.38.37", + "windows-sys 0.59.0", ] [[package]] @@ -3279,22 +3597,22 @@ dependencies = [ [[package]] name = "thiserror" -version = "1.0.59" +version = "1.0.63" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f0126ad08bff79f29fc3ae6a55cc72352056dfff61e3ff8bb7129476d44b23aa" +checksum = "c0342370b38b6a11b6cc11d6a805569958d54cfa061a29969c3b5ce2ea405724" dependencies = [ "thiserror-impl", ] [[package]] name = "thiserror-impl" -version = "1.0.59" +version = "1.0.63" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d1cd413b5d558b4c5bf3680e324a6fa5014e7b7c067a51e69dbdf47eb7148b66" +checksum = "a4558b58466b9ad7ca0f102865eccc95938dca1a74a856f2b57b6629050da261" dependencies = [ "proc-macro2", "quote", - "syn 2.0.58", + "syn 2.0.77", ] [[package]] @@ -3343,9 +3661,9 @@ dependencies = [ [[package]] name = "tinyvec" -version = "1.6.0" +version = "1.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "87cc5ceb3875bb20c2890005a4e226a4651264a5c75edb2421b52861a0a0cb50" +checksum = "445e881f4f6d382d5f27c034e25eb92edd7c784ceab92a0937db7f2e9471b938" dependencies = [ "tinyvec_macros", ] @@ -3358,31 +3676,30 @@ checksum = "1f3ccbac311fea05f86f61904b462b55fb3df8837a366dfc601a0161d0532f20" [[package]] name = "tokio" -version = "1.37.0" +version = "1.40.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1adbebffeca75fcfd058afa480fb6c0b81e165a0323f9c9d39c9697e37c46787" +checksum = "e2b070231665d27ad9ec9b8df639893f46727666c6767db40317fbe920a5d998" dependencies = [ "backtrace", "bytes", "libc", "mio", - "num_cpus", "pin-project-lite", "signal-hook-registry", - "socket2 0.5.6", + "socket2 0.5.7", "tokio-macros", - "windows-sys 0.48.0", + "windows-sys 0.52.0", ] [[package]] name = "tokio-macros" -version = "2.2.0" +version = "2.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5b8a1e28f2deaa14e508979454cb3a223b10b938b45af148bc0986de36f1923b" +checksum = "693d596312e88961bc67d7f1f97af8a70227d9f90c31bba5806eec004978d752" dependencies = [ "proc-macro2", "quote", - "syn 2.0.58", + "syn 2.0.77", ] [[package]] @@ -3396,24 +3713,34 @@ dependencies = [ ] [[package]] -name = "tokio-util" -version = "0.7.10" +name = "tokio-rustls" +version = "0.26.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5419f34732d9eb6ee4c3578b7989078579b7f039cbbb9ca2c4da015749371e15" +checksum = "0c7bc40d0e5a97695bb96e27995cd3a08538541b0a846f65bba7a359f36700d4" +dependencies = [ + "rustls", + "rustls-pki-types", + "tokio", +] + +[[package]] +name = "tokio-util" +version = "0.7.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "61e7c3654c13bcd040d4a03abee2c75b1d14a37b423cf5a813ceae1cc903ec6a" dependencies = [ "bytes", "futures-core", "futures-sink", "pin-project-lite", "tokio", - "tracing", ] [[package]] name = "toml_datetime" -version = "0.6.5" +version = "0.6.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3550f4e9685620ac18a50ed434eb3aec30db8ba93b0287467bca5826ea25baf1" +checksum = "0dd7358ecb8fc2f8d014bf86f6f638ce72ba252a2c3a2572f2a795f1d23efb41" [[package]] name = "toml_edit" @@ -3423,18 +3750,18 @@ checksum = "1b5bb770da30e5cbfde35a2d7b9b8a2c4b8ef89548a7a6aeab5c9a576e3e7421" dependencies = [ "indexmap", "toml_datetime", - "winnow", + "winnow 0.5.40", ] [[package]] name = "toml_edit" -version = "0.21.1" +version = "0.22.20" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6a8534fd7f78b5405e860340ad6575217ce99f38d4d5c8f2442cb5ecb50090e1" +checksum = "583c44c02ad26b0c3f3066fe629275e50627026c51ac2e595cca4c230ce1ce1d" dependencies = [ "indexmap", "toml_datetime", - "winnow", + "winnow 0.6.18", ] [[package]] @@ -3450,20 +3777,19 @@ dependencies = [ "tokio", "tower-layer", "tower-service", - "tracing", ] [[package]] name = "tower-layer" -version = "0.3.2" +version = "0.3.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c20c8dbed6283a09604c3e69b4b7eeb54e298b8a600d4d5ecb5ad39de609f1d0" +checksum = "121c2a6cda46980bb0fcd1647ffaf6cd3fc79a013de288782836f6df9c48780e" [[package]] name = "tower-service" -version = "0.3.2" +version = "0.3.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b6bc1c9ce2b5135ac7f93c72918fc37feb872bdc6a5533a8b85eb4b86bfdae52" +checksum = "8df9b6e13f2d32c91b9bd719c00d1958837bc7dec474d94952798cc8e69eeec3" [[package]] name = "tracing" @@ -3471,7 +3797,6 @@ 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", @@ -3485,7 +3810,7 @@ checksum = "34704c8d6ebcbc939824180af020566b01a7c01f80641264eba0999f6c2b6be7" dependencies = [ "proc-macro2", "quote", - "syn 2.0.58", + "syn 2.0.77", ] [[package]] @@ -3505,9 +3830,9 @@ checksum = "e421abadd41a4225275504ea4d6566923418b7f05506fbc9c0fe86ba7396114b" [[package]] name = "ttf-parser" -version = "0.20.0" +version = "0.24.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "17f77d76d837a7830fe1d4f12b7b4ba4192c1888001c7164257e4bc6d21d96b4" +checksum = "5be21190ff5d38e8b4a2d3b6a3ae57f612cc39c96e83cedeaf7abc338a8bac4a" [[package]] name = "type-map" @@ -3535,6 +3860,15 @@ dependencies = [ "winapi", ] +[[package]] +name = "unicase" +version = "2.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f7d2d4dafb69621809a81864c9c1b864479e1235c0dd4e199924b9742439ed89" +dependencies = [ + "version_check", +] + [[package]] name = "unicode-bidi" version = "0.3.15" @@ -3543,9 +3877,9 @@ checksum = "08f95100a766bf4f8f28f90d77e0a5461bbdb219042e7679bebe79004fed8d75" [[package]] name = "unicode-ident" -version = "1.0.12" +version = "1.0.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3354b9ac3fae1ff6755cb6db53683adb661634f67557942dea4facebec0fee4b" +checksum = "e91b56cd4cadaeb79bbf1a5645f6b4f8dc5bde8834ad5894a8db35fda9efa1fe" [[package]] name = "unicode-normalization" @@ -3558,27 +3892,33 @@ dependencies = [ [[package]] name = "unicode-segmentation" -version = "1.11.0" +version = "1.12.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d4c87d22b6e3f4a18d4d40ef354e97c90fcb14dd91d7dc0aa9d8a1172ebf7202" +checksum = "f6ccf251212114b54433ec949fd6a7841275f9ada20dddd2f29e9ceea4501493" [[package]] name = "unicode-width" -version = "0.1.11" +version = "0.1.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e51733f11c9c4f72aa0c160008246859e340b00807569a0da0e7a1079b27ba85" +checksum = "0336d538f7abc86d282a4189614dfaa90810dfc2c6f6427eaf88e16311dd225d" [[package]] name = "unicode-xid" -version = "0.2.4" +version = "0.2.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f962df74c8c05a667b5ee8bcf162993134c104e96440b663c8daa176dc772d8c" +checksum = "229730647fbc343e3a80e463c1db7f78f3855d3f3739bee0dda773c9a037c90a" + +[[package]] +name = "untrusted" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8ecb6da28b8a351d773b68d5825ac39017e680750f980f3a1a85cd8dd28a47c1" [[package]] name = "url" -version = "2.5.0" +version = "2.5.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "31e6302e3bb753d46e83516cae55ae196fc0c309407cf11ab35cc51a4c2a4633" +checksum = "22784dbdf76fdde8af1aeda5622b546b422b6fc585325248a2bf9f5e41e94d6c" dependencies = [ "form_urlencoded", "idna", @@ -3587,9 +3927,9 @@ dependencies = [ [[package]] name = "utf8parse" -version = "0.2.1" +version = "0.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "711b9620af191e0cdc7468a8d14e709c3dcdb115b36f838e601583af800a370a" +checksum = "06abde3611657adf66d383f00b093d7faecc7fa57071cce2578660c9f1010821" [[package]] name = "vcpkg" @@ -3599,15 +3939,15 @@ checksum = "accd4ea62f7bb7a82fe23066fb0957d48ef677f6eeb8215f372f52e48bb32426" [[package]] name = "version_check" -version = "0.9.4" +version = "0.9.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "49874b5167b65d7193b8aba1567f5c7d93d001cafc34600cee003eda787e483f" +checksum = "0b928f33d975fc6ad9f86c8f283853ad26bdd5b10b7f1542aa2fa15e2289105a" [[package]] name = "waker-fn" -version = "1.1.1" +version = "1.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f3c4517f54858c779bbcbf228f4fca63d121bf85fbecb2dc578cdf4a39395690" +checksum = "317211a0dc0ceedd78fb2ca9a44aed3d7b9b26f81870d485c07122b4350673b7" [[package]] name = "walkdir" @@ -3636,34 +3976,35 @@ checksum = "9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423" [[package]] name = "wasm-bindgen" -version = "0.2.92" +version = "0.2.93" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4be2531df63900aeb2bca0daaaddec08491ee64ceecbee5076636a3b026795a8" +checksum = "a82edfc16a6c469f5f44dc7b571814045d60404b55a0ee849f9bcfa2e63dd9b5" dependencies = [ "cfg-if", + "once_cell", "wasm-bindgen-macro", ] [[package]] name = "wasm-bindgen-backend" -version = "0.2.92" +version = "0.2.93" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "614d787b966d3989fa7bb98a654e369c762374fd3213d212cfc0251257e747da" +checksum = "9de396da306523044d3302746f1208fa71d7532227f15e347e2d93e4145dd77b" dependencies = [ "bumpalo", "log", "once_cell", "proc-macro2", "quote", - "syn 2.0.58", + "syn 2.0.77", "wasm-bindgen-shared", ] [[package]] name = "wasm-bindgen-futures" -version = "0.4.42" +version = "0.4.43" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "76bc14366121efc8dbb487ab05bcc9d346b3b5ec0eaa76e46594cabbe51762c0" +checksum = "61e9300f63a621e96ed275155c108eb6f843b6a26d053f122ab69724559dc8ed" dependencies = [ "cfg-if", "js-sys", @@ -3673,9 +4014,9 @@ dependencies = [ [[package]] name = "wasm-bindgen-macro" -version = "0.2.92" +version = "0.2.93" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a1f8823de937b71b9460c0c34e25f3da88250760bec0ebac694b49997550d726" +checksum = "585c4c91a46b072c92e908d99cb1dcdf95c5218eeb6f3bf1efa991ee7a68cccf" dependencies = [ "quote", "wasm-bindgen-macro-support", @@ -3683,32 +4024,32 @@ dependencies = [ [[package]] name = "wasm-bindgen-macro-support" -version = "0.2.92" +version = "0.2.93" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e94f17b526d0a461a191c78ea52bbce64071ed5c04c9ffe424dcb38f74171bb7" +checksum = "afc340c74d9005395cf9dd098506f7f44e38f2b4a21c6aaacf9a105ea5e1e836" dependencies = [ "proc-macro2", "quote", - "syn 2.0.58", + "syn 2.0.77", "wasm-bindgen-backend", "wasm-bindgen-shared", ] [[package]] name = "wasm-bindgen-shared" -version = "0.2.92" +version = "0.2.93" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "af190c94f2773fdb3729c55b007a722abb5384da03bc0986df4c289bf5567e96" +checksum = "c62a0a307cb4a311d3a07867860911ca130c3494e8c2719593806c08bc5d0484" [[package]] name = "wayland-backend" -version = "0.3.3" +version = "0.3.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9d50fa61ce90d76474c87f5fc002828d81b32677340112b4ef08079a9d459a40" +checksum = "056535ced7a150d45159d3a8dc30f91a2e2d588ca0b23f70e56033622b8016f6" dependencies = [ "cc", "downcast-rs", - "rustix 0.38.32", + "rustix 0.38.37", "scoped-tls", "smallvec", "wayland-sys", @@ -3716,12 +4057,12 @@ dependencies = [ [[package]] name = "wayland-client" -version = "0.31.2" +version = "0.31.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "82fb96ee935c2cea6668ccb470fb7771f6215d1691746c2d896b447a00ad3f1f" +checksum = "e3f45d1222915ef1fd2057220c1d9d9624b7654443ea35c3877f7a52bd0a5a2d" dependencies = [ - "bitflags 2.5.0", - "rustix 0.38.32", + "bitflags 2.6.0", + "rustix 0.38.37", "wayland-backend", "wayland-scanner", ] @@ -3732,18 +4073,18 @@ version = "0.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "625c5029dbd43d25e6aa9615e88b829a5cad13b2819c4ae129fdbb7c31ab4c7e" dependencies = [ - "bitflags 2.5.0", + "bitflags 2.6.0", "cursor-icon", "wayland-backend", ] [[package]] name = "wayland-cursor" -version = "0.31.1" +version = "0.31.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "71ce5fa868dd13d11a0d04c5e2e65726d0897be8de247c0c5a65886e283231ba" +checksum = "3a94697e66e76c85923b0d28a0c251e8f0666f58fc47d316c0f4da6da75d37cb" dependencies = [ - "rustix 0.38.32", + "rustix 0.38.37", "wayland-client", "xcursor", ] @@ -3754,7 +4095,19 @@ version = "0.31.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8f81f365b8b4a97f422ac0e8737c438024b5951734506b0e1d775c73030561f4" dependencies = [ - "bitflags 2.5.0", + "bitflags 2.6.0", + "wayland-backend", + "wayland-client", + "wayland-scanner", +] + +[[package]] +name = "wayland-protocols" +version = "0.32.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2b5755d77ae9040bb872a25026555ce4cb0ae75fd923e90d25fba07d81057de0" +dependencies = [ + "bitflags 2.6.0", "wayland-backend", "wayland-client", "wayland-scanner", @@ -3766,10 +4119,10 @@ version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "23803551115ff9ea9bce586860c5c5a971e360825a0309264102a9495a5ff479" dependencies = [ - "bitflags 2.5.0", + "bitflags 2.6.0", "wayland-backend", "wayland-client", - "wayland-protocols", + "wayland-protocols 0.31.2", "wayland-scanner", ] @@ -3779,18 +4132,31 @@ version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ad1f61b76b6c2d8742e10f9ba5c3737f6530b4c243132c2a2ccc8aa96fe25cd6" dependencies = [ - "bitflags 2.5.0", + "bitflags 2.6.0", "wayland-backend", "wayland-client", - "wayland-protocols", + "wayland-protocols 0.31.2", + "wayland-scanner", +] + +[[package]] +name = "wayland-protocols-wlr" +version = "0.3.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dad87b5fd1b1d3ca2f792df8f686a2a11e3fe1077b71096f7a175ab699f89109" +dependencies = [ + "bitflags 2.6.0", + "wayland-backend", + "wayland-client", + "wayland-protocols 0.32.4", "wayland-scanner", ] [[package]] name = "wayland-scanner" -version = "0.31.1" +version = "0.31.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "63b3a62929287001986fb58c789dce9b67604a397c15c611ad9f747300b6c283" +checksum = "597f2001b2e5fc1121e3d5b9791d3e78f05ba6bfa4641053846248e3a13661c3" dependencies = [ "proc-macro2", "quick-xml", @@ -3799,9 +4165,9 @@ dependencies = [ [[package]] name = "wayland-sys" -version = "0.31.1" +version = "0.31.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "15a0c8eaff5216d07f226cb7a549159267f3467b289d9a2e52fd3ef5aae2b7af" +checksum = "efa8ac0d8e8ed3e3b5c9fc92c7881406a268e11555abe36493efabe649a29e09" dependencies = [ "dlib", "log", @@ -3811,9 +4177,9 @@ dependencies = [ [[package]] name = "web-sys" -version = "0.3.69" +version = "0.3.70" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "77afa9a11836342370f4817622a2f0f418b134426d91a82dfb48f532d2ec13ef" +checksum = "26fdeaafd9bd129f65e7c031593c24d62186301e0c72c8978fa1678be7d532c0" dependencies = [ "js-sys", "wasm-bindgen", @@ -3859,7 +4225,7 @@ dependencies = [ "log", "parking_lot", "profiling", - "raw-window-handle 0.6.1", + "raw-window-handle 0.6.2", "smallvec", "static_assertions", "wasm-bindgen", @@ -3878,7 +4244,7 @@ checksum = "28b94525fc99ba9e5c9a9e24764f2bc29bad0911a7446c12f446a8277369bf3a" dependencies = [ "arrayvec", "bit-vec", - "bitflags 2.5.0", + "bitflags 2.6.0", "cfg_aliases", "codespan-reporting", "indexmap", @@ -3887,7 +4253,7 @@ dependencies = [ "once_cell", "parking_lot", "profiling", - "raw-window-handle 0.6.1", + "raw-window-handle 0.6.2", "rustc-hash", "smallvec", "thiserror", @@ -3898,14 +4264,14 @@ dependencies = [ [[package]] name = "wgpu-hal" -version = "0.19.4" +version = "0.19.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fc1a4924366df7ab41a5d8546d6534f1f33231aa5b3f72b9930e300f254e39c3" +checksum = "bfabcfc55fd86611a855816326b2d54c3b2fd7972c27ce414291562650552703" dependencies = [ "android_system_properties", "arrayvec", "ash", - "bitflags 2.5.0", + "bitflags 2.6.0", "cfg_aliases", "core-graphics-types", "glow", @@ -3917,7 +4283,7 @@ dependencies = [ "js-sys", "khronos-egl", "libc", - "libloading 0.8.3", + "libloading 0.8.5", "log", "metal", "naga", @@ -3926,7 +4292,7 @@ dependencies = [ "once_cell", "parking_lot", "profiling", - "raw-window-handle 0.6.1", + "raw-window-handle 0.6.2", "renderdoc-sys", "rustc-hash", "smallvec", @@ -3943,7 +4309,7 @@ version = "0.19.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b671ff9fb03f78b46ff176494ee1ebe7d603393f42664be55b64dc8d53969805" dependencies = [ - "bitflags 2.5.0", + "bitflags 2.6.0", "js-sys", "web-sys", ] @@ -3972,11 +4338,11 @@ checksum = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6" [[package]] name = "winapi-util" -version = "0.1.6" +version = "0.1.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f29e6f9198ba0d26b4c9f07dbe6f9ed633e1f3d5b8b414090084349e46a52596" +checksum = "cf221c93e13a30d793f7645a0e7762c55d169dbb0a49671918a2319d289b10bb" dependencies = [ - "winapi", + "windows-sys 0.59.0", ] [[package]] @@ -4003,7 +4369,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e48a53791691ab099e5e2ad123536d0fff50652600abaf43bbf952894110d0be" dependencies = [ "windows-core 0.52.0", - "windows-targets 0.52.5", + "windows-targets 0.52.6", ] [[package]] @@ -4013,7 +4379,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1de69df01bdf1ead2f4ac895dc77c9351aefff65b2f3db429a343f9cbf05e132" dependencies = [ "windows-core 0.56.0", - "windows-targets 0.52.5", + "windows-targets 0.52.6", ] [[package]] @@ -4022,7 +4388,7 @@ version = "0.52.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "33ab640c8d7e35bf8ba19b884ba838ceb4fba93a4e8c65a9059d08afcfc683d9" dependencies = [ - "windows-targets 0.52.5", + "windows-targets 0.52.6", ] [[package]] @@ -4033,8 +4399,8 @@ checksum = "4698e52ed2d08f8658ab0c39512a7c00ee5fe2688c65f8c0a4f06750d729f2a6" dependencies = [ "windows-implement 0.56.0", "windows-interface 0.56.0", - "windows-result", - "windows-targets 0.52.5", + "windows-result 0.1.2", + "windows-targets 0.52.6", ] [[package]] @@ -4056,7 +4422,7 @@ checksum = "f6fc35f58ecd95a9b71c4f2329b911016e6bec66b3f2e6a4aad86bd2e99e2f9b" dependencies = [ "proc-macro2", "quote", - "syn 2.0.58", + "syn 2.0.77", ] [[package]] @@ -4078,16 +4444,46 @@ checksum = "08990546bf4edef8f431fa6326e032865f27138718c587dc21bc0265bbcb57cc" dependencies = [ "proc-macro2", "quote", - "syn 2.0.58", + "syn 2.0.77", +] + +[[package]] +name = "windows-registry" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e400001bb720a623c1c69032f8e3e4cf09984deec740f007dd2b03ec864804b0" +dependencies = [ + "windows-result 0.2.0", + "windows-strings", + "windows-targets 0.52.6", ] [[package]] name = "windows-result" -version = "0.1.1" +version = "0.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "749f0da9cc72d82e600d8d2e44cadd0b9eedb9038f71a1c58556ac1c5791813b" +checksum = "5e383302e8ec8515204254685643de10811af0ed97ea37210dc26fb0032647f8" dependencies = [ - "windows-targets 0.52.5", + "windows-targets 0.52.6", +] + +[[package]] +name = "windows-result" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1d1043d8214f791817bab27572aaa8af63732e11bf84aa21a45a78d6c317ae0e" +dependencies = [ + "windows-targets 0.52.6", +] + +[[package]] +name = "windows-strings" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4cd9b125c486025df0eabcb585e62173c6c9eddcec5d117d3b6e8c30e2ee4d10" +dependencies = [ + "windows-result 0.2.0", + "windows-targets 0.52.6", ] [[package]] @@ -4114,7 +4510,16 @@ version = "0.52.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "282be5f36a8ce781fad8c8ae18fa3f9beff57ec1b52cb3de0789201425d9a33d" dependencies = [ - "windows-targets 0.52.5", + "windows-targets 0.52.6", +] + +[[package]] +name = "windows-sys" +version = "0.59.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1e38bc4d79ed67fd075bcc251a1c39b32a1776bbe92e5bef1f0bf1f8c531853b" +dependencies = [ + "windows-targets 0.52.6", ] [[package]] @@ -4149,18 +4554,18 @@ dependencies = [ [[package]] name = "windows-targets" -version = "0.52.5" +version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6f0713a46559409d202e70e28227288446bf7841d3211583a4b53e3f6d96e7eb" +checksum = "9b724f72796e036ab90c1021d4780d4d3d648aca59e491e6b98e725b84e99973" dependencies = [ - "windows_aarch64_gnullvm 0.52.5", - "windows_aarch64_msvc 0.52.5", - "windows_i686_gnu 0.52.5", + "windows_aarch64_gnullvm 0.52.6", + "windows_aarch64_msvc 0.52.6", + "windows_i686_gnu 0.52.6", "windows_i686_gnullvm", - "windows_i686_msvc 0.52.5", - "windows_x86_64_gnu 0.52.5", - "windows_x86_64_gnullvm 0.52.5", - "windows_x86_64_msvc 0.52.5", + "windows_i686_msvc 0.52.6", + "windows_x86_64_gnu 0.52.6", + "windows_x86_64_gnullvm 0.52.6", + "windows_x86_64_msvc 0.52.6", ] [[package]] @@ -4177,9 +4582,9 @@ checksum = "2b38e32f0abccf9987a4e3079dfb67dcd799fb61361e53e2882c3cbaf0d905d8" [[package]] name = "windows_aarch64_gnullvm" -version = "0.52.5" +version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7088eed71e8b8dda258ecc8bac5fb1153c5cffaf2578fc8ff5d61e23578d3263" +checksum = "32a4622180e7a0ec044bb555404c800bc9fd9ec262ec147edd5989ccd0c02cd3" [[package]] name = "windows_aarch64_msvc" @@ -4195,9 +4600,9 @@ checksum = "dc35310971f3b2dbbf3f0690a219f40e2d9afcf64f9ab7cc1be722937c26b4bc" [[package]] name = "windows_aarch64_msvc" -version = "0.52.5" +version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9985fd1504e250c615ca5f281c3f7a6da76213ebd5ccc9561496568a2752afb6" +checksum = "09ec2a7bb152e2252b53fa7803150007879548bc709c039df7627cabbd05d469" [[package]] name = "windows_i686_gnu" @@ -4213,15 +4618,15 @@ checksum = "a75915e7def60c94dcef72200b9a8e58e5091744960da64ec734a6c6e9b3743e" [[package]] name = "windows_i686_gnu" -version = "0.52.5" +version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "88ba073cf16d5372720ec942a8ccbf61626074c6d4dd2e745299726ce8b89670" +checksum = "8e9b5ad5ab802e97eb8e295ac6720e509ee4c243f69d781394014ebfe8bbfa0b" [[package]] name = "windows_i686_gnullvm" -version = "0.52.5" +version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "87f4261229030a858f36b459e748ae97545d6f1ec60e5e0d6a3d32e0dc232ee9" +checksum = "0eee52d38c090b3caa76c563b86c3a4bd71ef1a819287c19d586d7334ae8ed66" [[package]] name = "windows_i686_msvc" @@ -4237,9 +4642,9 @@ checksum = "8f55c233f70c4b27f66c523580f78f1004e8b5a8b659e05a4eb49d4166cca406" [[package]] name = "windows_i686_msvc" -version = "0.52.5" +version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "db3c2bf3d13d5b658be73463284eaf12830ac9a26a90c717b7f771dfe97487bf" +checksum = "240948bc05c5e7c6dabba28bf89d89ffce3e303022809e73deaefe4f6ec56c66" [[package]] name = "windows_x86_64_gnu" @@ -4255,9 +4660,9 @@ checksum = "53d40abd2583d23e4718fddf1ebec84dbff8381c07cae67ff7768bbf19c6718e" [[package]] name = "windows_x86_64_gnu" -version = "0.52.5" +version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4e4246f76bdeff09eb48875a0fd3e2af6aada79d409d33011886d3e1581517d9" +checksum = "147a5c80aabfbf0c7d901cb5895d1de30ef2907eb21fbbab29ca94c5b08b1a78" [[package]] name = "windows_x86_64_gnullvm" @@ -4273,9 +4678,9 @@ checksum = "0b7b52767868a23d5bab768e390dc5f5c55825b6d30b86c844ff2dc7414044cc" [[package]] name = "windows_x86_64_gnullvm" -version = "0.52.5" +version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "852298e482cd67c356ddd9570386e2862b5673c85bd5f88df9ab6802b334c596" +checksum = "24d5b23dc417412679681396f2b49f3de8c1473deb516bd34410872eff51ed0d" [[package]] name = "windows_x86_64_msvc" @@ -4291,9 +4696,9 @@ checksum = "ed94fce61571a4006852b7389a063ab983c02eb1bb37b47f8272ce92d06d9538" [[package]] name = "windows_x86_64_msvc" -version = "0.52.5" +version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bec47e5bfd1bff0eeaf6d8b485cc1074891a197ab4225d504cb7a1ab88b02bf0" +checksum = "589f6da84c646204747d1270a2a5661ea66ed1cced2631d546fdfb155959f9ec" [[package]] name = "winit" @@ -4304,9 +4709,9 @@ dependencies = [ "ahash", "android-activity", "atomic-waker", - "bitflags 2.5.0", + "bitflags 2.6.0", "bytemuck", - "calloop", + "calloop 0.12.4", "cfg_aliases", "core-foundation", "core-graphics", @@ -4323,18 +4728,18 @@ dependencies = [ "orbclient", "percent-encoding", "raw-window-handle 0.5.2", - "raw-window-handle 0.6.1", + "raw-window-handle 0.6.2", "redox_syscall 0.3.5", - "rustix 0.38.32", + "rustix 0.38.37", "sctk-adwaita", - "smithay-client-toolkit", + "smithay-client-toolkit 0.18.1", "smol_str", "unicode-segmentation", "wasm-bindgen", "wasm-bindgen-futures", "wayland-backend", "wayland-client", - "wayland-protocols", + "wayland-protocols 0.31.2", "wayland-protocols-plasma", "web-sys", "web-time", @@ -4354,13 +4759,12 @@ dependencies = [ ] [[package]] -name = "winreg" -version = "0.52.0" +name = "winnow" +version = "0.6.18" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a277a57398d4bfa075df44f501a17cfdf8542d224f0d36095a2adc7aee4ef0a5" +checksum = "68a9bda4691f099d435ad181000724da8e5899daa10713c2d432552b9ccd3a6f" dependencies = [ - "cfg-if", - "windows-sys 0.48.0", + "memchr", ] [[package]] @@ -4376,39 +4780,39 @@ dependencies = [ [[package]] name = "x11rb" -version = "0.13.0" +version = "0.13.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f8f25ead8c7e4cba123243a6367da5d3990e0d3affa708ea19dce96356bd9f1a" +checksum = "5d91ffca73ee7f68ce055750bf9f6eca0780b8c85eff9bc046a3b0da41755e12" dependencies = [ "as-raw-xcb-connection", "gethostname", "libc", - "libloading 0.8.3", + "libloading 0.8.5", "once_cell", - "rustix 0.38.32", + "rustix 0.38.37", "x11rb-protocol", ] [[package]] name = "x11rb-protocol" -version = "0.13.0" +version = "0.13.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e63e71c4b8bd9ffec2c963173a4dc4cbde9ee96961d4fcb4429db9929b606c34" +checksum = "ec107c4503ea0b4a98ef47356329af139c0a4f7750e621cf2973cd3385ebcb3d" [[package]] name = "xcursor" -version = "0.3.5" +version = "0.3.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6a0ccd7b4a5345edfcd0c3535718a4e9ff7798ffc536bb5b5a0e26ff84732911" +checksum = "0ef33da6b1660b4ddbfb3aef0ade110c8b8a781a3b6382fa5f2b5b040fd55f61" [[package]] name = "xdg-home" -version = "1.1.0" +version = "1.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "21e5a325c3cb8398ad6cf859c1135b25dd29e186679cf2da7581d9679f63b38e" +checksum = "ec1cdab258fb55c0da61328dc52c8764709b249011b2cad0454c72f0bf10a1f6" dependencies = [ "libc", - "winapi", + "windows-sys 0.59.0", ] [[package]] @@ -4417,7 +4821,7 @@ version = "0.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d039de8032a9a8856a6be89cea3e5d12fdd82306ab7c94d74e6deab2460651c5" dependencies = [ - "bitflags 2.5.0", + "bitflags 2.6.0", "dlib", "log", "once_cell", @@ -4426,15 +4830,15 @@ dependencies = [ [[package]] name = "xkeysym" -version = "0.2.0" +version = "0.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "054a8e68b76250b253f671d1268cb7f1ae089ec35e195b2efb2a4e9a836d0621" +checksum = "b9cc00251562a284751c9973bace760d86c0276c471b4be569fe6b068ee97a56" [[package]] name = "xml-rs" -version = "0.8.20" +version = "0.8.22" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "791978798f0597cfc70478424c2b4fdc2b7a8024aaff78497ef00f24ef674193" +checksum = "af4e2e2f7cba5a093896c1e150fbfe177d1883e7448200efb81d40b9d339ef26" [[package]] name = "zbus" @@ -4504,24 +4908,31 @@ dependencies = [ [[package]] name = "zerocopy" -version = "0.7.32" +version = "0.7.35" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "74d4d3961e53fa4c9a25a8637fc2bfaf2595b3d3ae34875568a5cf64787716be" +checksum = "1b9b4fd18abc82b8136838da5d50bae7bdea537c574d8dc1a34ed098d6c166f0" dependencies = [ + "byteorder", "zerocopy-derive", ] [[package]] name = "zerocopy-derive" -version = "0.7.32" +version = "0.7.35" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9ce1b18ccd8e73a9321186f97e46f9f04b778851177567b1975109d26a08d2a6" +checksum = "fa4f8080344d4671fb4e831a13ad1e68092748387dfc4f55e356242fae12ce3e" dependencies = [ "proc-macro2", "quote", - "syn 2.0.58", + "syn 2.0.77", ] +[[package]] +name = "zeroize" +version = "1.8.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ced3678a2879b30306d323f4542626697a464a97c0a07c9aebf7ebca65cd4dde" + [[package]] name = "zip" version = "0.6.6" @@ -4572,9 +4983,9 @@ dependencies = [ [[package]] name = "zstd-sys" -version = "2.0.10+zstd.1.5.6" +version = "2.0.13+zstd.1.5.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c253a4914af5bafc8fa8c86ee400827e83cf6ec01195ec1f1ed8441bf00d65aa" +checksum = "38ff0f21cfee8f97d94cef41359e0c89aa6113028ab0291aa8ca0038995a95aa" dependencies = [ "cc", "pkg-config", diff --git a/Cargo.toml b/Cargo.toml index 686cd9d..69b2651 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -12,7 +12,9 @@ camino = "1.1.6" clap = { version = "4.5.4", features = ["derive"] } eframe = "0.27.2" egui = "0.27.2" +egui_extras = "0.27.2" env_logger = "0.11.3" +futures = "0.3.30" lazy_static = "1.4.0" libc = "0.2.153" log = "0.4.21" diff --git a/manifest.json b/manifest.json index 361f48b..ebba660 100644 --- a/manifest.json +++ b/manifest.json @@ -1,644 +1,676 @@ { "format": "m4a", - "genres": { + "playlists": { "electronic": { - "Zombie Nation - Kernkraft 400": { - "url": "https://www.youtube.com/watch?v=z5LW07FTJbI", - "typ": "Youtube" - }, - "Benny Benassi - Satisfaction": { - "url": "https://www.youtube.com/watch?v=a0fkNdPiIL4", - "typ": "Youtube" - }, - "MONEY ON THE DASH": { - "url": "https://open.spotify.com/track/6nVEV8CIU4dw12oVZbKJtl", - "typ": "Spotify" - } - }, - "lietuviskos": { - "Grupiokai - Degtine": { - "url": "https://www.youtube.com/watch?v=8SqbG2VmEFw", - "typ": "Youtube" - }, - "Patruliai - Kur Tu": { - "url": "https://www.youtube.com/watch?v=OPWhiu3cvj0", - "typ": "Youtube" - }, - "Andzikas - Virs debesu": { - "url": "https://www.youtube.com/watch?v=PHJcVGhxra8", - "typ": "Youtube" - }, - "Elektra - Juda Tavo rankos": { - "url": "https://www.youtube.com/watch?v=k2RuDoudnOE", - "typ": "Youtube" - }, - "69 Danguje - Gyvenu": { - "url": "https://www.youtube.com/watch?v=HMXlhmAoux4", - "typ": "Youtube" - }, - "PROFLAME - biznis": { - "url": "https://www.youtube.com/watch?v=t139Vd83pgs", - "typ": "Youtube" - }, - "Eugenijus Ostapenko - Dviratukas": { - "url": "https://www.youtube.com/watch?v=ILFHZQK33Mw", - "typ": "Youtube" - }, - "SADBOY - Blizgantys Naikai": { - "url": "https://www.youtube.com/watch?v=p5KsYJGcfOM", - "typ": "Youtube" - }, - "16Hz - Baliavojam": { - "url": "https://www.youtube.com/watch?v=Ia-qERX8WLs", - "typ": "Youtube" - }, - "Wenona Waves - Topine Panele": { - "url": "https://www.youtube.com/watch?v=MPHuhmUomfE", - "typ": "Youtube" - }, - "Adomas Vysniauskas - As Judu": { - "url": "https://www.youtube.com/watch?v=dMm16TzZrjg", - "typ": "Youtube" - }, - "Zilvinas Zvagulis - Amerikonas grizo sunus": { - "url": "https://www.youtube.com/watch?v=UvzJEz5ADY8", - "typ": "Youtube" - }, - "MC ENDRAY - AUDI": { - "url": "https://www.youtube.com/watch?v=oIjNoMGEuRg", - "typ": "Youtube" - }, - "Rondo - Margarita": { - "url": "https://www.youtube.com/watch?v=rF4w-Rxsiv4", - "typ": "Youtube" - }, - "Tipo grupe - Lovoj Vezi": { - "url": "https://www.youtube.com/watch?v=M3zVMzWCy_c", - "typ": "Youtube" - }, - "Zas - Myliu kina": { - "url": "https://www.youtube.com/watch?v=ImFrfmi-qT8", - "typ": "Youtube" - }, - "Jovani, Karaliska Erdve - Is Leto Leidziasi Saule": { - "url": "https://www.youtube.com/watch?v=VqSu8iG1_DE", - "typ": "Youtube" - }, - "Nezinau, Kodel...": { - "url": "https://www.youtube.com/watch?v=A-i2CkCnPoc", - "typ": "Youtube" - }, - "MAMA MANE RODYS PER FARUS": { - "url": "https://www.youtube.com/watch?v=F5HqXYRDZaE", - "typ": "Youtube" - }, - "Depresinis & MERAKI2004 - VASARA ZJBS": { - "url": "https://www.youtube.com/watch?v=BD-pBjRy-5A", - "typ": "Youtube" - }, - "Ganja - Truputi": { - "url": "https://www.youtube.com/watch?v=Pxve7CwiCHM", - "typ": "Youtube" - }, - "Robertas Kupstas - Cia Mano Rojus": { - "url": "https://www.youtube.com/watch?v=xij_YeEInr8", - "typ": "Youtube" - }, - "Parnesk alaus OG": { - "url": "https://www.youtube.com/watch?v=e7cB1JIlZ2k", - "typ": "Youtube" - }, - "NIERKA - PENKTADIENIS": { - "url": "https://www.youtube.com/watch?v=h3TuZj_OAf0", - "typ": "Youtube" - }, - "Kastaneda - Kelyje": { - "url": "https://www.youtube.com/watch?v=JVE6NQqKPL4", - "typ": "Youtube" - }, - "AVA - Eik Tu NA": { - "url": "https://www.youtube.com/watch?v=yRf3ijaIgOg", - "typ": "Youtube" - }, - "NL - Juodas Golfas": { - "url": "https://www.youtube.com/watch?v=f2-ZmElSvPc", - "typ": "Youtube" - }, - "Andzikas - I gamta": { - "url": "https://www.youtube.com/watch?v=UyLdjC-hihM", - "typ": "Youtube" - }, - "Grupe MX - 1.9 TDI": { - "url": "https://www.youtube.com/watch?v=8FBr5GQXsI8", - "typ": "Youtube" - }, - "Tweaxx - Mersas": { - "url": "https://www.youtube.com/watch?v=7ljAzgALPdA", - "typ": "Youtube" - }, - "Funky - Be taves": { - "url": "https://www.youtube.com/watch?v=heTDrDukLWU", - "typ": "Youtube" - }, - "Tipo Grupe - tipo daina": { - "url": "https://www.youtube.com/watch?v=PTIOaSjEgIU", - "typ": "Youtube" - }, - "DJ Dalgis - Negeriau": { - "url": "https://www.youtube.com/watch?v=c89YvG3MCcs", - "typ": "Youtube" - }, - "MG INTERNATIONAL - JUODA ORCHIDEJA": { - "url": "https://www.youtube.com/watch?v=HQvceFRBq9M", - "typ": "Youtube" - }, - "VAIKAI PO LELIJOM (REMIX)": { - "url": "https://www.youtube.com/watch?v=k1amBbsAZuo", - "typ": "Youtube" - }, - "Kastanenda - Sombrero": { - "url": "https://www.youtube.com/watch?v=3Z3_4TknCfQ", - "typ": "Youtube" - }, - "Karaliska Erdve - Vakareja": { - "url": "https://www.youtube.com/watch?v=g0HmrlJ7fhE", - "typ": "Youtube" - }, - "Vitalija Katunskyte - Robinzonas": { - "url": "https://www.youtube.com/watch?v=erDHG-QpbPY", - "typ": "Youtube" - }, - "69 Danguje - 16 metu": { - "url": "https://www.youtube.com/watch?v=nwjoqPcUPrw", - "typ": "Youtube" - }, - "Vaidas Baumila - Apzavai": { - "url": "https://www.youtube.com/watch?v=H8uGi4ZMgHA", - "typ": "Youtube" - }, - "Depresinis - Volkswagina": { - "url": "https://www.youtube.com/watch?v=1lZR1VKsQHo", - "typ": "Youtube" - }, - "Depresinis feat. Deivas - 0,7": { - "url": "https://www.youtube.com/watch?v=rjwFjBgTzAA", - "typ": "Youtube" - }, - "Vytautas siskauskas - Lietuva (Nebelinksmas musu kaimas)": { - "url": "https://www.youtube.com/watch?v=31UkGzde14c", - "typ": "Youtube" - }, - "Vilija ir Marijonas mikutavicius - Dabar Geriausi Musu Vakarai": { - "url": "https://www.youtube.com/watch?v=MPnZkEscWo0", - "typ": "Youtube" - }, - "SixthBoi - Nevaidink": { - "url": "https://www.youtube.com/watch?v=nOTNnnrqTII", - "typ": "Youtube" - }, - "morre - Kaip Diena": { - "url": "https://www.youtube.com/watch?v=6LDgLWCQSSM", - "typ": "Youtube" - }, - "Deivas - Klaipeda On Top": { - "url": "https://www.youtube.com/watch?v=g_h2M3e2OYU", - "typ": "Youtube" - }, - "Mercy Dance - I Pajuri": { - "url": "https://www.youtube.com/watch?v=RPpkMh47l9w", - "typ": "Youtube" - }, - "Rytis Cicinas - Ne, nereikia asaru": { - "url": "https://www.youtube.com/watch?v=48GSg1q2kPE", - "typ": "Youtube" - }, - "Depresinis feat. Deivas - Pavasaris": { - "url": "https://www.youtube.com/watch?v=yWWAucfQdN4", - "typ": "Youtube" - }, - "Depresinis - LEDINE": { - "url": "https://www.youtube.com/watch?v=qugvChkXMLk", - "typ": "Youtube" - }, - "SADBOY - Kaifuok": { - "url": "https://www.youtube.com/watch?v=vclryWgfy8I", - "typ": "Youtube" - }, - "NL - Pasitusinam": { - "url": "https://www.youtube.com/watch?v=WhSFudvloog", - "typ": "Youtube" - }, - "Zilviokas - Ryk Zuvedra ryk": { - "url": "https://www.youtube.com/watch?v=eN6BOI7UlSE", - "typ": "Youtube" - }, - "DJ Dalgis - Kauniete": { - "url": "https://www.youtube.com/watch?v=b3xPE9Iyuzc", - "typ": "Youtube" - }, - "Mr.Bullet - UZ MUS IR JUS": { - "url": "https://www.youtube.com/watch?v=85q_7jXEgH8", - "typ": "Youtube" - }, - "Ciulpuoneliai - Jau Nutilo Sirgaliai": { - "url": "https://www.youtube.com/watch?v=s8qIVA1U0C0", - "typ": "Youtube" - }, - "Dzordana Butkute - Nebenoriu Laukt": { - "url": "https://www.youtube.com/watch?v=_AozFrAqNMk", - "typ": "Youtube" - }, - "Raketa - I Kluba": { - "url": "https://www.youtube.com/watch?v=FkSjtpYN3EI", - "typ": "Youtube" - }, - "Tipo grupe ir Kastaneda - Po stikliuka": { - "url": "https://www.youtube.com/watch?v=EtmE60nE7fI", - "typ": "Youtube" - }, - "Vairas - Svajoklis": { - "url": "https://www.youtube.com/watch?v=hs8_KTV0Vrw", - "typ": "Youtube" - }, - "16Hz - Autostrada Vilnius - Kaunas": { - "url": "https://www.youtube.com/watch?v=ANS2TSegr40", - "typ": "Youtube" - }, - "Rycka klipas": { - "url": "https://www.youtube.com/watch?v=nuTUDSQ3BBI", - "typ": "Youtube" - }, - "NL - R1": { - "url": "https://www.youtube.com/watch?v=hSgav4fYnZ8", - "typ": "Youtube" - }, - "RADVIS - KINO FILMAI": { - "url": "https://www.youtube.com/watch?v=vhAEkC3xNMo", - "typ": "Youtube" - }, - "Zas - Zalias Pasas": { - "url": "https://www.youtube.com/watch?v=SZA7IjlCfyI", - "typ": "Youtube" - }, - "Ka Tu Ka Vakare": { - "url": "https://www.youtube.com/watch?v=6SOS4ljHbJY", - "typ": "Youtube" - }, - "Depresinis, Jypas - O Mazuti": { - "url": "https://www.youtube.com/watch?v=4t_DPbe2r3M", - "typ": "Youtube" - }, - "Judam Lietuvoj": { - "url": "https://www.youtube.com/watch?v=WDzWSEgSy5U", - "typ": "Youtube" - }, - "L1GHT CASH - Whiskey Cola Lietuviskai (sultys degtinele) remix": { - "url": "https://www.youtube.com/watch?v=YVaqDaf1KXU", - "typ": "Youtube" - }, - "Riaukenzo - Trys Trys Trys": { - "url": "https://www.youtube.com/watch?v=qJv6GRQCnCk", - "typ": "Youtube" - }, - "Depresinis feat. Deivas - LEDUKAI": { - "url": "https://www.youtube.com/watch?v=R2-MtpkKgGI", - "typ": "Youtube" - }, - "Juodas Garvezys (Remix)": { - "url": "https://www.youtube.com/watch?v=D-7qQbXHSAw", - "typ": "Youtube" - }, - "Dove - Naktinis Tusas": { - "url": "https://www.youtube.com/watch?v=pz-HEAwFEnk", - "typ": "Youtube" - }, - "SADBOY - Deginam": { - "url": "https://www.youtube.com/watch?v=w3R0Aq1EGXg", - "typ": "Youtube" - }, - "DJ Dalgis - Zalia Siera": { - "url": "https://www.youtube.com/watch?v=nfentq_pez4", - "typ": "Youtube" - }, - "nemuno krantai - rytmecio rasos": { - "url": "https://www.youtube.com/watch?v=2-fGbsrofv4", - "typ": "Youtube" - }, - "SADBOY - 1001 Naktis": { - "url": "https://www.youtube.com/watch?v=mLJIjGvWmKI", - "typ": "Youtube" - }, - "Radvis - TU ESI MELAGIS (Techno Extended)": { - "url": "https://www.youtube.com/watch?v=kmvvP7GW_bw", - "typ": "Youtube" - }, - "Tnn - Parukom": { - "url": "https://www.youtube.com/watch?v=v9pBZK2RIPI", - "typ": "Youtube" - } - }, - "techno": { - "Dance For Me": { - "url": "https://www.youtube.com/watch?v=5DTSvGO_944", - "typ": "Youtube" - }, - "Nicolas Julian - Applause": { - "url": "https://www.youtube.com/watch?v=9qHLELnq1B0", - "typ": "Youtube" - }, - "Beggin' (Techno)": { - "url": "https://www.youtube.com/watch?v=tXPs1FwW6lk", - "typ": "Youtube" - }, - "MUTA - Party maker": { - "url": "https://www.youtube.com/watch?v=LT9VNK1aCXY", - "typ": "Youtube" - }, - "Restricted - Big Jet Plane": { - "url": "https://www.youtube.com/watch?v=NpVF0z5N-tE", - "typ": "Youtube" - }, - "Give It To Me": { - "url": "https://www.youtube.com/watch?v=upQe8EeSyZU", - "typ": "Youtube" - }, - "Knock2 - dashstar": { - "url": "https://www.youtube.com/watch?v=58ml5b_On6w", - "typ": "Youtube" - }, - "$UICIDEBOY$ - PARIS (TECHNO)": { - "url": "https://www.youtube.com/watch?v=YYDJmGDkEyw", - "typ": "Youtube" - }, - "08 Blumchen - Blaue Augen": { - "url": "https://www.youtube.com/watch?v=mE4PZcUfiwE", - "typ": "Youtube" - }, - "Lily Allen - Not Fair": { - "url": "https://www.youtube.com/watch?v=WON_YIbeLis", - "typ": "Youtube" - }, - "Raffaella Carra - Pedro (Jaxomy & Agatino Romero Remix)": { - "url": "https://www.youtube.com/watch?v=AIGnRc7F86Q", - "typ": "Youtube" - }, - "Gigi D'Agostino - Bla Bla Bla": { - "url": "https://www.youtube.com/watch?v=yKapqR2XRJE", - "typ": "Youtube" - }, - "Empire Of The Sun, southstar - We Are The People": { - "url": "https://www.youtube.com/watch?v=qguEGR5BK2k", - "typ": "Youtube" - }, - "Manian - Welcome To The Club": { - "url": "https://www.youtube.com/watch?v=7F9xDewtgNA", - "typ": "Youtube" - }, - "I WAS MADE FOR LOVIN' YOU (TECHNO)": { - "url": "https://www.youtube.com/watch?v=asVznhccYao", - "typ": "Youtube" + "songs": { + "Zombie Nation - Kernkraft 400": { + "url": "https://www.youtube.com/watch?v=z5LW07FTJbI", + "typ": "Youtube" + }, + "MONEY ON THE DASH": { + "url": "https://open.spotify.com/track/6nVEV8CIU4dw12oVZbKJtl", + "typ": "Spotify" + }, + "Benny Benassi - Satisfaction": { + "url": "https://www.youtube.com/watch?v=a0fkNdPiIL4", + "typ": "Youtube" + } } }, "rusiskos": { - "Kanikuli": { - "url": "https://www.youtube.com/watch?v=GNMiDZTL7jo", - "typ": "Youtube" - }, - "Arash - Temptation": { - "url": "https://www.youtube.com/watch?v=6X3ZJh762-I", - "typ": "Youtube" - }, - "Topolini puh": { - "url": "https://www.youtube.com/watch?v=UUryvYF8tUs", - "typ": "Youtube" - }, - "Pimp Schwab - vse shto nas ne Ubivaet": { - "url": "https://www.youtube.com/watch?v=NTEXFyUE9Ww", - "typ": "Youtube" - }, - "Eldzej and Feduk - Rozovoe vino": { - "url": "https://www.youtube.com/watch?v=S9oXj3a4gZ4", - "typ": "Youtube" - }, - "Ruki Verch - 18 mne uze": { - "url": "https://www.youtube.com/watch?v=Hxab_Sr132o", - "typ": "Youtube" - }, - "Katja lel - moi marmeladni (paprobui mua mua)": { - "url": "https://www.youtube.com/watch?v=0JMdXFHo5SY", - "typ": "Youtube" - }, - "Dzaro and hansa - Visky Kola karaleva trans pola": { - "url": "https://www.youtube.com/watch?v=fflrMvZ2HtA", - "typ": "Youtube" - }, - "Raim & Artur feat. Zhenis - Diskoteka is 90 hit": { - "url": "https://www.youtube.com/watch?v=GfBhxlNhrn0", - "typ": "Youtube" - } - }, - "noclue": { - "Bad Boys": { - "url": "https://www.youtube.com/watch?v=NTC7RD8xzCY", - "typ": "Youtube" - }, - "Discobitch - C'est Beau La Bourgeoisie": { - "url": "https://www.youtube.com/watch?v=RCeQN2aEWxo", - "typ": "Youtube" - }, - "Maco Mamuko - Whiskey, Cola i Tequila": { - "url": "https://www.youtube.com/watch?v=aBrN0k0Phtc", - "typ": "Youtube" - }, - "DR. VODKA - DZIEWCZYNO Z TIKTOKA": { - "url": "https://www.youtube.com/watch?v=HLbw1WQt64o", - "typ": "Youtube" - } - }, - "lietuviskos/rave": { - "VainHouse - Malunas Prie Kelio": { - "url": "https://www.youtube.com/watch?v=bbwuNjDXCiM", - "typ": "Youtube" - }, - "Sokoledas - Mano Skonis Sokolado (Matuze & Arnisxd Remix)": { - "url": "https://www.youtube.com/watch?v=hb41bfQxiM0", - "typ": "Youtube" + "songs": { + "Eldzej and Feduk - Rozovoe vino": { + "url": "https://www.youtube.com/watch?v=S9oXj3a4gZ4", + "typ": "Youtube" + }, + "Katja lel - moi marmeladni (paprobui mua mua)": { + "url": "https://www.youtube.com/watch?v=0JMdXFHo5SY", + "typ": "Youtube" + }, + "Dzaro and hansa - Visky Kola karaleva trans pola": { + "url": "https://www.youtube.com/watch?v=fflrMvZ2HtA", + "typ": "Youtube" + }, + "Raim & Artur feat. Zhenis - Diskoteka is 90 hit": { + "url": "https://www.youtube.com/watch?v=GfBhxlNhrn0", + "typ": "Youtube" + }, + "Topolini puh": { + "url": "https://www.youtube.com/watch?v=UUryvYF8tUs", + "typ": "Youtube" + }, + "Ruki Verch - 18 mne uze": { + "url": "https://www.youtube.com/watch?v=Hxab_Sr132o", + "typ": "Youtube" + }, + "Arash - Temptation": { + "url": "https://www.youtube.com/watch?v=6X3ZJh762-I", + "typ": "Youtube" + }, + "Kanikuli": { + "url": "https://www.youtube.com/watch?v=GNMiDZTL7jo", + "typ": "Youtube" + }, + "Pimp Schwab - vse shto nas ne Ubivaet": { + "url": "https://www.youtube.com/watch?v=NTEXFyUE9Ww", + "typ": "Youtube" + } } }, "reggea": { - "Shaggy - It Wasn't Me": { - "url": "https://www.youtube.com/watch?v=ssVj50ombaM", - "typ": "Youtube" - } - }, - "house": { - "Unknown Artist - Kcik 23": { - "url": "https://www.youtube.com/watch?v=SnnqDdZJpzA", - "typ": "Youtube" - }, - "Bauhouse - After Marvins Dance (Marvin Gaye's 'After The Dance' Edit)": { - "url": "https://www.youtube.com/watch?v=J-cgyYiExh8", - "typ": "Youtube" - }, - "THEOS - Rhodes Trip": { - "url": "https://www.youtube.com/watch?v=m7guRO0Uz_c", - "typ": "Youtube" - }, - "Men I Trust - Tailwhip (Lewii Edit)": { - "url": "https://www.youtube.com/watch?v=XhyM-JUWwWQ", - "typ": "Youtube" - }, - "Baltra - Tears Drop": { - "url": "https://www.youtube.com/watch?v=EXXMtKPfuzY", - "typ": "Youtube" - }, - "Billie Eilish - Bossa Nova (Lewii Edit)": { - "url": "https://www.youtube.com/watch?v=gNawHj2NCxA", - "typ": "Youtube" - }, - "Fidde - I Only See Things I Dont Have": { - "url": "https://www.youtube.com/watch?v=vX_Ye_ZzI-Y", - "typ": "Youtube" - }, - "Ralph Castelli - Morning Sex (Mochakk Remix)": { - "url": "https://www.youtube.com/watch?v=6bCwJ_TIDG4", - "typ": "Youtube" - }, - "Sweely - Le Son Dancefloor": { - "url": "https://www.youtube.com/watch?v=5uEvZgmoG6Y", - "typ": "Youtube" - }, - "Fidde - If Theres A Heaven I Wanna See It": { - "url": "https://www.youtube.com/watch?v=l2Nw7cIh7qg", - "typ": "Youtube" + "songs": { + "Shaggy - It Wasn't Me": { + "url": "https://www.youtube.com/watch?v=ssVj50ombaM", + "typ": "Youtube" + } } }, "alt": { - "ROMANCEPLANET - FALL FROM THE SKY": { - "url": "https://www.youtube.com/watch?v=HMhzxzXBisw", - "typ": "Youtube" - }, - "ROMANCEPLANET - PLAIN WHITE TEE": { - "url": "https://www.youtube.com/watch?v=tdVQbNwjGac", - "typ": "Youtube" - }, - "Artemas - i like the way you kiss me": { - "url": "https://www.youtube.com/watch?v=ODDRRXMi22E", - "typ": "Youtube" - }, - "ROMANCEPLANET - DANCE": { - "url": "https://www.youtube.com/watch?v=ircOfMb4gEw", - "typ": "Youtube" - } - }, - "rave": { - "EVERYTHING WHAT": { - "url": "https://www.youtube.com/watch?v=Gjdsq4kc5cA", - "typ": "Youtube" - }, - "Tricky Disco": { - "url": "https://www.youtube.com/watch?v=t78qVdbAiXw", - "typ": "Youtube" - }, - "DR. VODKA - Tricky Disco": { - "url": "https://www.youtube.com/watch?v=IknAUhl3i2o", - "typ": "Youtube" - }, - "Mason - Perfect remix 1991": { - "url": "https://open.spotify.com/track/1VKWQgq0g2uKtgNfL0ceNM?si=b3f1dc504ddb41ed", - "typ": "Spotify" - } - }, - "rock": { - "Black Sabbath": { - "url": "https://www.youtube.com/watch?v=BOTIIw76qiE", - "typ": "Youtube" - } - }, - "hip-hop": { - "Afroman - Because I Got High": { - "url": "https://www.youtube.com/watch?v=WeYsTmIzjkw", - "typ": "Youtube" - }, - "Drenchill - Freed from Desire": { - "url": "https://www.youtube.com/watch?v=6b6FBneAENQ", - "typ": "Youtube" - } - }, - "lietuviskos/sel": { - "SEL - Uzmerkiu akis": { - "url": "https://youtu.be/SdWj06XRZms?si=9TNGzjK9ITom-jaD", - "typ": "Youtube" - }, - "SEL - Ten kur sapnai": { - "url": "https://youtu.be/GDj3NgjDbRo", - "typ": "Youtube" - }, - "SEL - Nes as tik vejas": { - "url": "https://youtu.be/acMG37IZ6z8", - "typ": "Youtube" - }, - "SEL - Tarp amzinybes": { - "url": "https://youtu.be/UfPj-0QpGFA", - "typ": "Youtube" - }, - "SEL - Tik Tok": { - "url": "https://youtu.be/RkaIUateIxg", - "typ": "Youtube" - }, - "SEL - Skrendu": { - "url": "https://youtu.be/G5Q_asvrXlA", - "typ": "Youtube" - }, - "SEL - Leisk": { - "url": "https://youtu.be/DDPmFMrffXQ", - "typ": "Youtube" - }, - "SEL - Ten kazkur giliai": { - "url": "https://youtu.be/N7YNlegeiqs?si=9BBH6hjrgOjJ01Nz", - "typ": "Youtube" - }, - "SEL - Lyja": { - "url": "https://www.youtube.com/watch?v=KL6JBWnXCxw", - "typ": "Youtube" - }, - "SEL - Gyvenimo man vieno neuztenka": { - "url": "https://youtu.be/7Gd9XaEG5o4", - "typ": "Youtube" - }, - "SEL - As ziuriu i tave pasauli": { - "url": "https://youtu.be/_SPDjl80kKw", - "typ": "Youtube" + "songs": { + "ROMANCEPLANET - PLAIN WHITE TEE": { + "url": "https://www.youtube.com/watch?v=tdVQbNwjGac", + "typ": "Youtube" + }, + "ROMANCEPLANET - FALL FROM THE SKY": { + "url": "https://www.youtube.com/watch?v=HMhzxzXBisw", + "typ": "Youtube" + }, + "ROMANCEPLANET - DANCE": { + "url": "https://www.youtube.com/watch?v=ircOfMb4gEw", + "typ": "Youtube" + }, + "Artemas - i like the way you kiss me": { + "url": "https://www.youtube.com/watch?v=ODDRRXMi22E", + "typ": "Youtube" + } } }, "pop": { - "Icona Pop - I Love It": { - "url": "https://www.youtube.com/watch?v=UxxajLWwzqY", - "typ": "Youtube" - }, - "Pitbul - Fireball": { - "url": "https://www.youtube.com/watch?v=HMqgVXSvwGo", - "typ": "Youtube" - }, - "Mr President - Coco Jumbo": { - "url": "https://www.youtube.com/watch?v=cOrc37wNUqU", - "typ": "Youtube" - }, - "LT United - We are the winners": { - "url": "https://www.youtube.com/watch?v=DBAdOlQPbwg", - "typ": "Youtube" - }, - "Green Day - Basket Case": { - "url": "https://www.youtube.com/watch?v=wZ8eZRxFA-0", - "typ": "Youtube" - }, - "Cheri cheri lady": { - "url": "https://www.youtube.com/watch?v=lrIKt5uDWZo", - "typ": "Youtube" - }, - "Modern Talking - You're My Heart, You're My Soul": { - "url": "https://www.youtube.com/watch?v=4kHl4FoK1Ys", - "typ": "Youtube" + "songs": { + "Modern Talking - You're My Heart, You're My Soul": { + "url": "https://www.youtube.com/watch?v=4kHl4FoK1Ys", + "typ": "Youtube" + }, + "Icona Pop - I Love It": { + "url": "https://www.youtube.com/watch?v=UxxajLWwzqY", + "typ": "Youtube" + }, + "Mr President - Coco Jumbo": { + "url": "https://www.youtube.com/watch?v=cOrc37wNUqU", + "typ": "Youtube" + }, + "Cheri cheri lady": { + "url": "https://www.youtube.com/watch?v=lrIKt5uDWZo", + "typ": "Youtube" + }, + "LT United - We are the winners": { + "url": "https://www.youtube.com/watch?v=DBAdOlQPbwg", + "typ": "Youtube" + }, + "Pitbul - Fireball": { + "url": "https://www.youtube.com/watch?v=HMqgVXSvwGo", + "typ": "Youtube" + }, + "Green Day - Basket Case": { + "url": "https://www.youtube.com/watch?v=wZ8eZRxFA-0", + "typ": "Youtube" + } + } + }, + "rave": { + "songs": { + "Mason - Perfect remix 1991": { + "url": "https://open.spotify.com/track/1VKWQgq0g2uKtgNfL0ceNM?si=b3f1dc504ddb41ed", + "typ": "Spotify" + }, + "Tricky Disco": { + "url": "https://www.youtube.com/watch?v=t78qVdbAiXw", + "typ": "Youtube" + }, + "DR. VODKA - Tricky Disco": { + "url": "https://www.youtube.com/watch?v=IknAUhl3i2o", + "typ": "Youtube" + }, + "EVERYTHING WHAT": { + "url": "https://www.youtube.com/watch?v=Gjdsq4kc5cA", + "typ": "Youtube" + } + } + }, + "lietuviskos/rave": { + "songs": { + "Sokoledas - Mano Skonis Sokolado (Matuze & Arnisxd Remix)": { + "url": "https://www.youtube.com/watch?v=hb41bfQxiM0", + "typ": "Youtube" + }, + "VainHouse - Malunas Prie Kelio": { + "url": "https://www.youtube.com/watch?v=bbwuNjDXCiM", + "typ": "Youtube" + } + } + }, + "house": { + "songs": { + "Ralph Castelli - Morning Sex (Mochakk Remix)": { + "url": "https://www.youtube.com/watch?v=6bCwJ_TIDG4", + "typ": "Youtube" + }, + "Men I Trust - Tailwhip (Lewii Edit)": { + "url": "https://www.youtube.com/watch?v=XhyM-JUWwWQ", + "typ": "Youtube" + }, + "Bauhouse - After Marvins Dance (Marvin Gaye's 'After The Dance' Edit)": { + "url": "https://www.youtube.com/watch?v=J-cgyYiExh8", + "typ": "Youtube" + }, + "Sweely - Le Son Dancefloor": { + "url": "https://www.youtube.com/watch?v=5uEvZgmoG6Y", + "typ": "Youtube" + }, + "THEOS - Rhodes Trip": { + "url": "https://www.youtube.com/watch?v=m7guRO0Uz_c", + "typ": "Youtube" + }, + "Unknown Artist - Kcik 23": { + "url": "https://www.youtube.com/watch?v=SnnqDdZJpzA", + "typ": "Youtube" + }, + "Billie Eilish - Bossa Nova (Lewii Edit)": { + "url": "https://www.youtube.com/watch?v=gNawHj2NCxA", + "typ": "Youtube" + }, + "Fidde - I Only See Things I Dont Have": { + "url": "https://www.youtube.com/watch?v=vX_Ye_ZzI-Y", + "typ": "Youtube" + }, + "Fidde - If Theres A Heaven I Wanna See It": { + "url": "https://www.youtube.com/watch?v=l2Nw7cIh7qg", + "typ": "Youtube" + }, + "Baltra - Tears Drop": { + "url": "https://www.youtube.com/watch?v=EXXMtKPfuzY", + "typ": "Youtube" + } + } + }, + "hip-hop": { + "songs": { + "Afroman - Because I Got High": { + "url": "https://www.youtube.com/watch?v=WeYsTmIzjkw", + "typ": "Youtube" + }, + "Drenchill - Freed from Desire": { + "url": "https://www.youtube.com/watch?v=6b6FBneAENQ", + "typ": "Youtube" + } + } + }, + "techno": { + "songs": { + "Give It To Me": { + "url": "https://www.youtube.com/watch?v=upQe8EeSyZU", + "typ": "Youtube" + }, + "MUTA - Party maker": { + "url": "https://www.youtube.com/watch?v=LT9VNK1aCXY", + "typ": "Youtube" + }, + "Raffaella Carra - Pedro (Jaxomy & Agatino Romero Remix)": { + "url": "https://www.youtube.com/watch?v=AIGnRc7F86Q", + "typ": "Youtube" + }, + "I WAS MADE FOR LOVIN' YOU (TECHNO)": { + "url": "https://www.youtube.com/watch?v=asVznhccYao", + "typ": "Youtube" + }, + "Empire Of The Sun, southstar - We Are The People": { + "url": "https://www.youtube.com/watch?v=qguEGR5BK2k", + "typ": "Youtube" + }, + "The Love Parade ( Bounce Invaderz )": { + "url": "https://www.youtube.com/watch?v=xogT6KBWjCU3", + "typ": "Youtube" + }, + "Manian - Welcome To The Club": { + "url": "https://www.youtube.com/watch?v=7F9xDewtgNA", + "typ": "Youtube" + }, + "Restricted - Big Jet Plane": { + "url": "https://www.youtube.com/watch?v=NpVF0z5N-tE", + "typ": "Youtube" + }, + "$UICIDEBOY$ - PARIS (TECHNO)": { + "url": "https://www.youtube.com/watch?v=YYDJmGDkEyw", + "typ": "Youtube" + }, + "Gigi D'Agostino - Bla Bla Bla": { + "url": "https://www.youtube.com/watch?v=yKapqR2XRJE", + "typ": "Youtube" + }, + "Nicolas Julian - Applause": { + "url": "https://www.youtube.com/watch?v=9qHLELnq1B0", + "typ": "Youtube" + }, + "08 Blumchen - Blaue Augen": { + "url": "https://www.youtube.com/watch?v=mE4PZcUfiwE", + "typ": "Youtube" + }, + "Lily Allen - Not Fair": { + "url": "https://www.youtube.com/watch?v=WON_YIbeLis", + "typ": "Youtube" + }, + "Knock2 - dashstar": { + "url": "https://www.youtube.com/watch?v=58ml5b_On6w", + "typ": "Youtube" + }, + "Beggin' (Techno)": { + "url": "https://www.youtube.com/watch?v=tXPs1FwW6lk", + "typ": "Youtube" + }, + "Dance For Me": { + "url": "https://www.youtube.com/watch?v=5DTSvGO_944", + "typ": "Youtube" + } + } + }, + "noclue": { + "songs": { + "Maco Mamuko - Whiskey, Cola i Tequila": { + "url": "https://www.youtube.com/watch?v=aBrN0k0Phtc", + "typ": "Youtube" + }, + "DR. VODKA - DZIEWCZYNO Z TIKTOKA": { + "url": "https://www.youtube.com/watch?v=HLbw1WQt64o", + "typ": "Youtube" + }, + "Discobitch - C'est Beau La Bourgeoisie": { + "url": "https://www.youtube.com/watch?v=RCeQN2aEWxo", + "typ": "Youtube" + }, + "Bad Boys": { + "url": "https://www.youtube.com/watch?v=NTC7RD8xzCY", + "typ": "Youtube" + } + } + }, + "lietuviskos": { + "songs": { + "16Hz - Autostrada Vilnius - Kaunas": { + "url": "https://www.youtube.com/watch?v=ANS2TSegr40", + "typ": "Youtube" + }, + "Dzordana Butkute - Nebenoriu Laukt": { + "url": "https://www.youtube.com/watch?v=_AozFrAqNMk", + "typ": "Youtube" + }, + "PROFLAME - biznis": { + "url": "https://www.youtube.com/watch?v=t139Vd83pgs", + "typ": "Youtube" + }, + "Patruliai - Kur Tu": { + "url": "https://www.youtube.com/watch?v=OPWhiu3cvj0", + "typ": "Youtube" + }, + "Ganja - Truputi": { + "url": "https://www.youtube.com/watch?v=Pxve7CwiCHM", + "typ": "Youtube" + }, + "SADBOY - Kaifuok": { + "url": "https://www.youtube.com/watch?v=vclryWgfy8I", + "typ": "Youtube" + }, + "Depresinis - LEDINE": { + "url": "https://www.youtube.com/watch?v=qugvChkXMLk", + "typ": "Youtube" + }, + "MAMA MANE RODYS PER FARUS": { + "url": "https://www.youtube.com/watch?v=F5HqXYRDZaE", + "typ": "Youtube" + }, + "SADBOY - Blizgantys Naikai": { + "url": "https://www.youtube.com/watch?v=p5KsYJGcfOM", + "typ": "Youtube" + }, + "16Hz - Baliavojam": { + "url": "https://www.youtube.com/watch?v=Ia-qERX8WLs", + "typ": "Youtube" + }, + "RADVIS - KINO FILMAI": { + "url": "https://www.youtube.com/watch?v=vhAEkC3xNMo", + "typ": "Youtube" + }, + "Grupe MX - 1.9 TDI": { + "url": "https://www.youtube.com/watch?v=8FBr5GQXsI8", + "typ": "Youtube" + }, + "Depresinis feat. Deivas - LEDUKAI": { + "url": "https://www.youtube.com/watch?v=R2-MtpkKgGI", + "typ": "Youtube" + }, + "Kastaneda - Kelyje": { + "url": "https://www.youtube.com/watch?v=JVE6NQqKPL4", + "typ": "Youtube" + }, + "69 Danguje - Gyvenu": { + "url": "https://www.youtube.com/watch?v=HMXlhmAoux4", + "typ": "Youtube" + }, + "Vitalija Katunskyte - Robinzonas": { + "url": "https://www.youtube.com/watch?v=erDHG-QpbPY", + "typ": "Youtube" + }, + "DJ Dalgis - Kauniete": { + "url": "https://www.youtube.com/watch?v=b3xPE9Iyuzc", + "typ": "Youtube" + }, + "NL - Juodas Golfas": { + "url": "https://www.youtube.com/watch?v=f2-ZmElSvPc", + "typ": "Youtube" + }, + "Depresinis, Jypas - O Mazuti": { + "url": "https://www.youtube.com/watch?v=4t_DPbe2r3M", + "typ": "Youtube" + }, + "Zas - Myliu kina": { + "url": "https://www.youtube.com/watch?v=ImFrfmi-qT8", + "typ": "Youtube" + }, + "Adomas Vysniauskas - As Judu": { + "url": "https://www.youtube.com/watch?v=dMm16TzZrjg", + "typ": "Youtube" + }, + "Tipo grupe ir Kastaneda - Po stikliuka": { + "url": "https://www.youtube.com/watch?v=EtmE60nE7fI", + "typ": "Youtube" + }, + "SADBOY - 1001 Naktis": { + "url": "https://www.youtube.com/watch?v=mLJIjGvWmKI", + "typ": "Youtube" + }, + "Rondo - Margarita": { + "url": "https://www.youtube.com/watch?v=rF4w-Rxsiv4", + "typ": "Youtube" + }, + "Zas - Zalias Pasas": { + "url": "https://www.youtube.com/watch?v=SZA7IjlCfyI", + "typ": "Youtube" + }, + "Tweaxx - Mersas": { + "url": "https://www.youtube.com/watch?v=7ljAzgALPdA", + "typ": "Youtube" + }, + "morre - Kaip Diena": { + "url": "https://www.youtube.com/watch?v=6LDgLWCQSSM", + "typ": "Youtube" + }, + "L1GHT CASH - Whiskey Cola Lietuviskai (sultys degtinele) remix": { + "url": "https://www.youtube.com/watch?v=YVaqDaf1KXU", + "typ": "Youtube" + }, + "NL - R1": { + "url": "https://www.youtube.com/watch?v=hSgav4fYnZ8", + "typ": "Youtube" + }, + "Juodas Garvezys (Remix)": { + "url": "https://www.youtube.com/watch?v=D-7qQbXHSAw", + "typ": "Youtube" + }, + "Rycka klipas": { + "url": "https://www.youtube.com/watch?v=nuTUDSQ3BBI", + "typ": "Youtube" + }, + "Riaukenzo - Trys Trys Trys": { + "url": "https://www.youtube.com/watch?v=qJv6GRQCnCk", + "typ": "Youtube" + }, + "Karaliska Erdve - Vakareja": { + "url": "https://www.youtube.com/watch?v=g0HmrlJ7fhE", + "typ": "Youtube" + }, + "Judam Lietuvoj": { + "url": "https://www.youtube.com/watch?v=WDzWSEgSy5U", + "typ": "Youtube" + }, + "Eugenijus Ostapenko - Dviratukas": { + "url": "https://www.youtube.com/watch?v=ILFHZQK33Mw", + "typ": "Youtube" + }, + "Wenona Waves - Topine Panele": { + "url": "https://www.youtube.com/watch?v=MPHuhmUomfE", + "typ": "Youtube" + }, + "SixthBoi - Nevaidink": { + "url": "https://www.youtube.com/watch?v=nOTNnnrqTII", + "typ": "Youtube" + }, + "NL - Pasitusinam": { + "url": "https://www.youtube.com/watch?v=WhSFudvloog", + "typ": "Youtube" + }, + "Jovani, Karaliska Erdve - Is Leto Leidziasi Saule": { + "url": "https://www.youtube.com/watch?v=VqSu8iG1_DE", + "typ": "Youtube" + }, + "Nezinau, Kodel...": { + "url": "https://www.youtube.com/watch?v=A-i2CkCnPoc", + "typ": "Youtube" + }, + "Funky - Be taves": { + "url": "https://www.youtube.com/watch?v=heTDrDukLWU", + "typ": "Youtube" + }, + "Kastanenda - Sombrero": { + "url": "https://www.youtube.com/watch?v=3Z3_4TknCfQ", + "typ": "Youtube" + }, + "Elektra - Juda Tavo rankos": { + "url": "https://www.youtube.com/watch?v=k2RuDoudnOE", + "typ": "Youtube" + }, + "Vairas - Svajoklis": { + "url": "https://www.youtube.com/watch?v=hs8_KTV0Vrw", + "typ": "Youtube" + }, + "Robertas Kupstas - Cia Mano Rojus": { + "url": "https://www.youtube.com/watch?v=xij_YeEInr8", + "typ": "Youtube" + }, + "Depresinis feat. Deivas - 0,7": { + "url": "https://www.youtube.com/watch?v=rjwFjBgTzAA", + "typ": "Youtube" + }, + "VAIKAI PO LELIJOM (REMIX)": { + "url": "https://www.youtube.com/watch?v=k1amBbsAZuo", + "typ": "Youtube" + }, + "SADBOY - Deginam": { + "url": "https://www.youtube.com/watch?v=w3R0Aq1EGXg", + "typ": "Youtube" + }, + "Rytis Cicinas - Ne, nereikia asaru": { + "url": "https://www.youtube.com/watch?v=48GSg1q2kPE", + "typ": "Youtube" + }, + "nemuno krantai - rytmecio rasos": { + "url": "https://www.youtube.com/watch?v=2-fGbsrofv4", + "typ": "Youtube" + }, + "MC ENDRAY - AUDI": { + "url": "https://www.youtube.com/watch?v=oIjNoMGEuRg", + "typ": "Youtube" + }, + "Vilija ir Marijonas mikutavicius - Dabar Geriausi Musu Vakarai": { + "url": "https://www.youtube.com/watch?v=MPnZkEscWo0", + "typ": "Youtube" + }, + "Andzikas - Virs debesu": { + "url": "https://www.youtube.com/watch?v=PHJcVGhxra8", + "typ": "Youtube" + }, + "Deivas - Klaipeda On Top": { + "url": "https://www.youtube.com/watch?v=g_h2M3e2OYU", + "typ": "Youtube" + }, + "Tipo grupe - Lovoj Vezi": { + "url": "https://www.youtube.com/watch?v=M3zVMzWCy_c", + "typ": "Youtube" + }, + "Radvis - TU ESI MELAGIS (Techno Extended)": { + "url": "https://www.youtube.com/watch?v=kmvvP7GW_bw", + "typ": "Youtube" + }, + "Depresinis feat. Deivas - Pavasaris": { + "url": "https://www.youtube.com/watch?v=yWWAucfQdN4", + "typ": "Youtube" + }, + "Mercy Dance - I Pajuri": { + "url": "https://www.youtube.com/watch?v=RPpkMh47l9w", + "typ": "Youtube" + }, + "Ka Tu Ka Vakare": { + "url": "https://www.youtube.com/watch?v=6SOS4ljHbJY", + "typ": "Youtube" + }, + "Mr.Bullet - UZ MUS IR JUS": { + "url": "https://www.youtube.com/watch?v=85q_7jXEgH8", + "typ": "Youtube" + }, + "NIERKA - PENKTADIENIS": { + "url": "https://www.youtube.com/watch?v=h3TuZj_OAf0", + "typ": "Youtube" + }, + "MG INTERNATIONAL - JUODA ORCHIDEJA": { + "url": "https://www.youtube.com/watch?v=HQvceFRBq9M", + "typ": "Youtube" + }, + "Raketa - I Kluba": { + "url": "https://www.youtube.com/watch?v=FkSjtpYN3EI", + "typ": "Youtube" + }, + "AVA - Eik Tu NA": { + "url": "https://www.youtube.com/watch?v=yRf3ijaIgOg", + "typ": "Youtube" + }, + "69 Danguje - 16 metu": { + "url": "https://www.youtube.com/watch?v=nwjoqPcUPrw", + "typ": "Youtube" + }, + "Vytautas siskauskas - Lietuva (Nebelinksmas musu kaimas)": { + "url": "https://www.youtube.com/watch?v=31UkGzde14c", + "typ": "Youtube" + }, + "Zilvinas Zvagulis - Amerikonas grizo sunus": { + "url": "https://www.youtube.com/watch?v=UvzJEz5ADY8", + "typ": "Youtube" + }, + "Tipo Grupe - tipo daina": { + "url": "https://www.youtube.com/watch?v=PTIOaSjEgIU", + "typ": "Youtube" + }, + "Ciulpuoneliai - Jau Nutilo Sirgaliai": { + "url": "https://www.youtube.com/watch?v=s8qIVA1U0C0", + "typ": "Youtube" + }, + "Grupiokai - Degtine": { + "url": "https://www.youtube.com/watch?v=8SqbG2VmEFw", + "typ": "Youtube" + }, + "Depresinis & MERAKI2004 - VASARA ZJBS": { + "url": "https://www.youtube.com/watch?v=BD-pBjRy-5A", + "typ": "Youtube" + }, + "Vaidas Baumila - Apzavai": { + "url": "https://www.youtube.com/watch?v=H8uGi4ZMgHA", + "typ": "Youtube" + }, + "Parnesk alaus OG": { + "url": "https://www.youtube.com/watch?v=e7cB1JIlZ2k", + "typ": "Youtube" + }, + "Tnn - Parukom": { + "url": "https://www.youtube.com/watch?v=v9pBZK2RIPI", + "typ": "Youtube" + }, + "DJ Dalgis - Negeriau": { + "url": "https://www.youtube.com/watch?v=c89YvG3MCcs", + "typ": "Youtube" + }, + "Dove - Naktinis Tusas": { + "url": "https://www.youtube.com/watch?v=pz-HEAwFEnk", + "typ": "Youtube" + }, + "Depresinis - Volkswagina": { + "url": "https://www.youtube.com/watch?v=1lZR1VKsQHo", + "typ": "Youtube" + }, + "Zilviokas - Ryk Zuvedra ryk": { + "url": "https://www.youtube.com/watch?v=eN6BOI7UlSE", + "typ": "Youtube" + }, + "DJ Dalgis - Zalia Siera": { + "url": "https://www.youtube.com/watch?v=nfentq_pez4", + "typ": "Youtube" + }, + "Andzikas - I gamta": { + "url": "https://www.youtube.com/watch?v=UyLdjC-hihM", + "typ": "Youtube" + } + } + }, + "rock": { + "songs": { + "Black Sabbath": { + "url": "https://www.youtube.com/watch?v=BOTIIw76qiE", + "typ": "Youtube" + } + } + }, + "lietuviskos/sel": { + "songs": { + "SEL - As ziuriu i tave pasauli": { + "url": "https://youtu.be/_SPDjl80kKw", + "typ": "Youtube" + }, + "SEL - Ten kur sapnai": { + "url": "https://youtu.be/GDj3NgjDbRo", + "typ": "Youtube" + }, + "SEL - Gyvenimo man vieno neuztenka": { + "url": "https://youtu.be/7Gd9XaEG5o4", + "typ": "Youtube" + }, + "SEL - Ten kazkur giliai": { + "url": "https://youtu.be/N7YNlegeiqs?si=9BBH6hjrgOjJ01Nz", + "typ": "Youtube" + }, + "SEL - Lyja": { + "url": "https://www.youtube.com/watch?v=KL6JBWnXCxw", + "typ": "Youtube" + }, + "SEL - Skrendu": { + "url": "https://youtu.be/G5Q_asvrXlA", + "typ": "Youtube" + }, + "SEL - Nes as tik vejas": { + "url": "https://youtu.be/acMG37IZ6z8", + "typ": "Youtube" + }, + "SEL - Tarp amzinybes": { + "url": "https://youtu.be/UfPj-0QpGFA", + "typ": "Youtube" + }, + "SEL - Tik Tok": { + "url": "https://youtu.be/RkaIUateIxg", + "typ": "Youtube" + }, + "SEL - Leisk": { + "url": "https://youtu.be/DDPmFMrffXQ", + "typ": "Youtube" + }, + "SEL - Uzmerkiu akis": { + "url": "https://youtu.be/SdWj06XRZms?si=9TNGzjK9ITom-jaD", + "typ": "Youtube" + } } } } diff --git a/src/commands/add.rs b/src/commands/add.rs index a32a4af..94ad653 100644 --- a/src/commands/add.rs +++ b/src/commands/add.rs @@ -4,19 +4,19 @@ use crate::{config::ConfigWrapper, downloader::Downloader, manifest::{song::Song -pub async fn add(cfg: &ConfigWrapper, manifest: &mut Manifest, downloader: &mut Downloader, url: &Option, name: &Option, genre: &Option) -> anyhow::Result<()> { +pub async fn add(cfg: &ConfigWrapper, manifest: &mut Manifest, downloader: &mut Downloader, url: &Option, name: &Option, playlist: &Option) -> anyhow::Result<()> { - log::debug!("Genre: {genre:?}"); + log::debug!("Playlist: {playlist:?}"); log::debug!("url: {url:?}"); log::debug!("name: {name:?}"); - let mut genres = manifest.get_playlists().keys().map(|f| f.clone()).collect::>(); + let mut playlists = manifest.get_playlists().keys().map(|f| f.clone()).collect::>(); - genres.sort(); + playlists.sort(); - let genre = genre.clone().unwrap_or_else( || { - let g = crate::prompt::prompt_with_list_or_str("Enter song genre", &genres); - log::info!("Genre: {g}"); + let playlist = playlist.clone().unwrap_or_else( || { + let g = crate::prompt::prompt_with_list_or_str("Enter song playlist", &playlists); + log::info!("Playlist: {g}"); g }); @@ -36,14 +36,14 @@ pub async fn add(cfg: &ConfigWrapper, manifest: &mut Manifest, downloader: &mut ); let song = Song::from_url_str(url)?; - manifest.add_song(genre.clone(), name.clone(), song.clone()); + manifest.add_song(playlist.clone(), name.clone(), song.clone()); manifest.save(None)?; let should_download = crate::prompt::prompt_bool("Download song now?", Some(false)); if should_download { - downloader.download_song(cfg, &name, &song, &genre, manifest.get_format()).await?; - crate::process_manager::wait_for_procs_untill(0).await?; + downloader.download_song(cfg, &name, &song, &playlist, manifest.get_format())?; + crate::process_manager::wait_for_procs_untill(0)?; } Ok(()) diff --git a/src/commands/gui/mod.rs b/src/commands/gui/mod.rs index 068c64b..287fefa 100644 --- a/src/commands/gui/mod.rs +++ b/src/commands/gui/mod.rs @@ -1,33 +1,44 @@ mod nav_bar; mod song_edit_window; -use egui::{Color32, Label, Sense}; -use crate::manifest::Manifest; +use egui::{Color32, Label, Sense}; +use egui_extras::{Column, TableBuilder}; + +use crate::{config::{Config, ConfigWrapper}, downloader::Downloader, manifest::{song::SongType, Manifest}}; use self::song_edit_window::GuiSongEditor; - +#[derive(Debug)] pub struct Gui { manifest: Manifest, - song_editor: GuiSongEditor + song_editor: GuiSongEditor, + filter: String, + downloader: Downloader, + cfg: ConfigWrapper } impl Gui { - fn new(_: &eframe::CreationContext<'_>, manifest: Manifest) -> Self { + fn new(_: &eframe::CreationContext<'_>, manifest: Manifest, downloader: Downloader, cfg: ConfigWrapper) -> Self { Self { manifest, song_editor: GuiSongEditor { + is_new_open: false, is_open: false, song: Default::default(), ed_url: String::new(), ed_name: String::new(), + ed_playlist: Some(String::new()), + ed_type: SongType::Youtube }, + filter: String::new(), + downloader, + cfg, } } - pub fn start(manifest: Manifest) -> anyhow::Result<()> { + pub fn start(manifest: Manifest, downloader: Downloader, cfg: ConfigWrapper) -> anyhow::Result<()> { let native_options = eframe::NativeOptions { viewport: egui::ViewportBuilder::default() .with_inner_size([400.0, 300.0]) @@ -43,7 +54,7 @@ impl Gui { if let Err(e) = eframe::run_native( "eframe template", native_options, - Box::new(|cc| Box::new(Gui::new(cc, manifest))), + Box::new(|cc| Box::new(Gui::new(cc, manifest, downloader, cfg))), ) { log::error!("Failed to create window: {e}"); }; @@ -56,46 +67,129 @@ impl eframe::App for Gui { fn update(&mut self, ctx: &egui::Context, frame: &mut eframe::Frame) { self.draw_nav(ctx, frame); self.draw_song_edit_window(ctx, frame); + self.draw_new_song_window(ctx, frame); egui::CentralPanel::default().show(ctx, |ui| { // The central panel the region left after adding TopPanel's and SidePanel's - ui.heading(format!("Songs ({})", self.manifest.get_song_count())); + //ui.heading(format!("Songs ({})", self.manifest.get_song_count())); + + let fltr_by; + let filter_clean; + if self.filter.starts_with("playlist:") { + fltr_by = "playlist"; + filter_clean = self.filter.strip_prefix("playlist:").unwrap_or("").to_string().to_lowercase(); + } else if self.filter.starts_with("source:") { + fltr_by = "source"; + filter_clean = self.filter.strip_prefix("source:").unwrap_or("").to_string().to_lowercase(); + } else if self.filter.starts_with("url:") { + fltr_by = "url"; + filter_clean = self.filter.strip_prefix("url:").unwrap_or("").to_string(); + } else { + fltr_by = ""; + filter_clean = self.filter.clone(); + } - egui::ScrollArea::vertical() - .max_width(f32::INFINITY) - .auto_shrink(false) - .show(ui, |ui| { - for (genre, songs) in self.manifest.get_playlists() { - for (song_name, song) in songs { - ui.horizontal(|ui| { - ui.spacing_mut().item_spacing.x = 0.0; - ui.label("["); - ui.hyperlink_to("link", song.get_url().unwrap()); - ui.label("] "); - ui.colored_label(Color32::LIGHT_BLUE, genre); - ui.label(": "); - if ui.add(Label::new(song_name).sense(Sense::click())).clicked() { - self.song_editor.song = ( - genre.clone(), - song_name.clone(), - ); - log::debug!("Label pressed"); - self.song_editor.is_open = true; - self.song_editor.ed_name = song_name.clone(); - self.song_editor.ed_url = song.get_url_str().clone(); - } - }); - // ui.label(RichText::new("")) - } - } + ui.vertical(|ui| { + ui.horizontal(|ui| { + ui.colored_label(Color32::BLUE, "Filter: "); + ui.text_edit_singleline(&mut self.filter); + }); }); + + ui.vertical(|ui| { + let available_height = ui.available_height(); + let table = TableBuilder::new(ui) + .striped(true) + .cell_layout(egui::Layout::left_to_right(egui::Align::Center)) + .resizable(true) + .column(Column::auto()) + .column(Column::auto()) + //.column( + // Column::remainder() + // .at_least(40.0) + // .clip(true) + // .resizable(true), + //) + .column(Column::auto()) + .column(Column::remainder()) + //.column(Column::remainder()) + .min_scrolled_height(0.0) + .max_scroll_height(available_height) + .sense(egui::Sense::click()); + + let playlists = self.manifest.get_playlists().clone(); + let songs = { + let mut songs = Vec::new(); + for (pname, p) in playlists { + for (sname, s) in p { + songs.push((pname.clone(), sname, s)) + } + } + songs + }; + + table.header(20.0, |mut header| { + header.col(|_|{}); + header.col(|ui| { + ui.strong("Playlist"); + }); + header.col(|ui| { + ui.strong("Source"); + }); + header.col(|ui| { + ui.strong("Name"); + }); + }).body(|mut body| { + for (pname, sname, s) in songs { + if fltr_by == "playlist" && !filter_clean.is_empty() { + if !pname.to_lowercase().contains(&filter_clean) { + continue; + } + } else if fltr_by == "type" && !filter_clean.is_empty(){ + if !s.get_type().to_string().to_lowercase().contains(&filter_clean) { + continue; + } + } else if fltr_by == "url" && !filter_clean.is_empty(){ + if !s.get_url_str().contains(&filter_clean) { + continue; + } + } else if !filter_clean.is_empty() { + if !sname.to_lowercase().contains(&filter_clean) { + continue; + } + } + + body.row(18.0, |mut row| { + row.col(|ui| { + if ui.add(Label::new("[edit]").sense(Sense::click())).clicked() { + self.song_editor.song = ( + pname.clone(), + sname.clone(), + ); + log::debug!("Label pressed"); + self.song_editor.is_open = true; + self.song_editor.ed_name = sname.clone(); + self.song_editor.ed_url = s.get_url_str().clone(); + } + + }); + + row.col(|ui| { + ui.label(pname.clone()); + }); + row.col(|ui| { + ui.label(s.get_type().to_string()); + }); + row.col(|ui| { + ui.hyperlink_to(sname.clone(), s.get_url_str()); + }); + }) + } + }); + }); ui.separator(); - ui.add(egui::github_link_file!( - "https://github.com/emilk/eframe_template/blob/main/", - "Source code." - )); ui.with_layout(egui::Layout::bottom_up(egui::Align::LEFT), |ui| { egui::warn_if_debug_build(ui); diff --git a/src/commands/gui/nav_bar.rs b/src/commands/gui/nav_bar.rs index 4799a33..2a3caa3 100644 --- a/src/commands/gui/nav_bar.rs +++ b/src/commands/gui/nav_bar.rs @@ -1,3 +1,5 @@ +use egui::Hyperlink; + use super::Gui; @@ -8,20 +10,45 @@ impl Gui { // The top panel is often a good place for a menu bar: egui::menu::bar(ui, |ui| { ui.menu_button("File", |ui| { - if ui.button("Quit").clicked() { - ctx.send_viewport_cmd(egui::ViewportCommand::Close); + if ui.button("Source").clicked() { + ctx.open_url(egui::OpenUrl::new_tab("https://git.mcorangehq.xyz/XOR64/music")); } if ui.button("Save").clicked() { if let Err(e) = self.manifest.save(None) { log::error!("Failed to save manifest: {e}"); } } + if ui.button("Quit").clicked() { + ctx.send_viewport_cmd(egui::ViewportCommand::Close); + } + + }); + + ui.menu_button("Song", |ui| { + if ui.button("Add New").clicked() { + log::debug!("NEW SONG"); + self.song_editor.is_new_open = true; + } + }); + + ui.menu_button("Downloader", |ui| { + if ui.button("Download All").clicked() { + if let Err(e) = self.downloader.download_all_nb(&self.manifest, &self.cfg) { + log::error!("Err: {e}"); + } + } }); ui.add_space(16.0); ui.with_layout(egui::Layout::bottom_up(egui::Align::RIGHT), |ui| { - egui::widgets::global_dark_light_mode_buttons(ui); + ui.horizontal(|ui| { + if self.downloader.get_songs_left_nb() > 0 { + ui.label(format!("Downloading: {}/{}", self.downloader.get_songs_left_nb(), self.downloader.get_initial_song_count_nb())); + } + let _ = self.downloader.download_all_nb_poll(&self.cfg); + egui::widgets::global_dark_light_mode_buttons(ui); + }); }); }); }); } -} \ No newline at end of file +} diff --git a/src/commands/gui/song_edit_window.rs b/src/commands/gui/song_edit_window.rs index c479b3e..a51212d 100644 --- a/src/commands/gui/song_edit_window.rs +++ b/src/commands/gui/song_edit_window.rs @@ -1,28 +1,34 @@ -use egui::Color32; +use egui::{Color32, TextBuffer}; -use crate::manifest::{GenreName, SongName}; + +use crate::manifest::{playlist::Playlist, song::{Song, SongType}}; use super::Gui; +#[derive(Debug)] pub struct GuiSongEditor { pub is_open: bool, - pub song: (GenreName, SongName), + pub is_new_open: bool, + pub song: (String, String), pub ed_url: String, pub ed_name: String, + pub ed_playlist: Option, + pub ed_type: SongType, } + impl Gui { pub fn draw_song_edit_window(&mut self, ctx: &egui::Context, _: &mut eframe::Frame) { let mut save = false; - let (genre, song_name) = self.song_editor.song.clone(); + let (playlist, song_name) = self.song_editor.song.clone(); - let Some(song) = self.manifest.get_song(genre.clone(), &song_name) else { + let Some(song) = self.manifest.get_song(playlist.clone(), &song_name) else { return; }; let song = song.clone(); - + egui::Window::new("Song editor") .open(&mut self.song_editor.is_open) .show(ctx, @@ -33,7 +39,7 @@ impl Gui { ui.label("["); ui.hyperlink_to("link", song.get_url().unwrap()); ui.label("] "); - ui.colored_label(Color32::LIGHT_BLUE, &genre); + ui.colored_label(Color32::LIGHT_BLUE, &playlist); ui.label(": "); ui.label(&song_name) }); @@ -59,21 +65,81 @@ impl Gui { if save { { - let Some(song) = self.manifest.get_song_mut(genre.clone(), &song_name) else { + let Some(song) = self.manifest.get_song_mut(playlist.clone(), &song_name) else { return; }; *song.get_url_str_mut() = self.song_editor.ed_url.clone(); } - let Some(genre) = self.manifest.get_playlist_mut(genre.clone()) else { + let Some(playlist) = self.manifest.get_playlist_mut(playlist.clone()) else { return; }; - genre.remove(&song_name); - genre.insert(self.song_editor.ed_name.clone(), song); + playlist.remove_song(&song_name); + playlist.add_song(self.song_editor.ed_name.clone(), song); let _ = self.manifest.save(None); } } + + pub fn draw_new_song_window(&mut self, ctx: &egui::Context, _: &mut eframe::Frame) { + let mut save = false; + egui::Window::new("New song") + .open(&mut self.song_editor.is_new_open) + .show(ctx, |ui| { + ui.horizontal(|ui| { + ui.label("Type: "); + egui::ComboBox::from_id_source("new_song_window_type") + .selected_text(format!("{:?}", self.song_editor.ed_type)) + .show_ui(ui, |ui| { + ui.selectable_value(&mut self.song_editor.ed_type, SongType::Youtube, "Youtube"); + ui.selectable_value(&mut self.song_editor.ed_type, SongType::Spotify, "Spotify"); + ui.selectable_value(&mut self.song_editor.ed_type, SongType::Soundcloud, "Soundcloud"); + } + ); + }); + + ui.horizontal(|ui| { + ui.label("Name: "); + ui.text_edit_singleline(&mut self.song_editor.ed_name); + }); + ui.horizontal(|ui| { + ui.label("Playlist: "); + egui::ComboBox::from_id_source("new_song_window_playlist") + .selected_text(format!("{}", self.song_editor.ed_playlist.clone().unwrap())) + .show_ui(ui, |ui| { + for p in self.manifest.get_playlists().keys() { + ui.selectable_value(&mut self.song_editor.ed_playlist, Option::Some(p.clone()), p.as_str()); + } + } + ); + }); + ui.horizontal(|ui| { + ui.label("Url: "); + ui.text_edit_singleline(&mut self.song_editor.ed_url); + }); + + if ui.button("Save").clicked() { + save = true; + } + }); + + if save { + let Some(playlist) = self.manifest.get_playlist_mut(self.song_editor.ed_playlist.clone().unwrap()) else { + panic!("couldnt find playlist from a preset playlist list????????????"); + }; + + playlist.add_song( + self.song_editor.ed_name.clone(), + Song::from_url_str(self.song_editor.ed_url.clone()).unwrap().set_type(self.song_editor.ed_type.clone()).clone() + ); + + + let _ = self.manifest.save(None); + save = false; + self.song_editor.is_new_open = false; + } + } + } diff --git a/src/commands/mod.rs b/src/commands/mod.rs index a578d47..9e0dac4 100644 --- a/src/commands/mod.rs +++ b/src/commands/mod.rs @@ -23,20 +23,20 @@ pub async fn command_run(cfg: &ConfigWrapper, manifest: &mut Manifest) -> anyhow (Some(c), _) => { match c { CliCommand::Download => unreachable!(), - CliCommand::Add { url, name, genre } => { - if let Err(e) = add::add(cfg, manifest, &mut downloader, url, name, genre).await { + CliCommand::Add { url, name, playlist } => { + if let Err(e) = add::add(cfg, manifest, &mut downloader, url, name, playlist).await { log::error!("Failed to run 'add' command: {e}"); } } CliCommand::Gui => { - gui::Gui::start(manifest.clone())?; + gui::Gui::start(manifest.clone(), downloader, cfg.clone())?; }, } } (None, false) => { - gui::Gui::start(manifest.clone())?; + gui::Gui::start(manifest.clone(), downloader, cfg.clone())?; }, } Ok(()) -} \ No newline at end of file +} diff --git a/src/config/cli.rs b/src/config/cli.rs index 57e9bea..4683a28 100644 --- a/src/config/cli.rs +++ b/src/config/cli.rs @@ -2,7 +2,7 @@ use camino::Utf8PathBuf; use clap::{Parser, Subcommand}; -#[derive(Debug, Parser, Default)] +#[derive(Debug, Parser, Default, Clone)] pub struct CliArgs { /// Show more info #[arg(long, short)] @@ -25,7 +25,7 @@ pub struct CliArgs { } -#[derive(Debug, Subcommand)] +#[derive(Debug, Subcommand, Clone)] pub enum CliCommand { Download, Add { @@ -34,7 +34,7 @@ pub enum CliCommand { #[arg(long, short)] name: Option, #[arg(long, short)] - genre: Option + playlist: Option }, Gui } diff --git a/src/config/mod.rs b/src/config/mod.rs index 3c2ebcf..869fee5 100644 --- a/src/config/mod.rs +++ b/src/config/mod.rs @@ -12,25 +12,25 @@ use self::cli::CliArgs; // const YTDLP_DL_URL: &'static str = "https://github.com/yt-dlp/yt-dlp/archive/refs/heads/master.zip"; // const SPOTDL_DL_URL: &'static str = "https://github.com/spotDL/spotify-downloader/archive/refs/heads/master.zip"; -#[derive(Debug, Default)] +#[derive(Debug, Default, Clone)] pub struct ConfigWrapper { pub cfg: Config, pub cli: cli::CliArgs, pub isatty: bool } -#[derive(Debug, Serialize, Deserialize, Default)] +#[derive(Debug, Serialize, Deserialize, Default, Clone)] pub struct Config { pub ytdlp: ConfigYtdlp, pub spotdl: ConfigSpotdl, } -#[derive(Debug, Serialize, Deserialize, Default)] +#[derive(Debug, Serialize, Deserialize, Default, Clone)] pub struct ConfigYtdlp { pub path: PathBuf, } -#[derive(Debug, Serialize, Deserialize, Default)] +#[derive(Debug, Serialize, Deserialize, Default, Clone)] pub struct ConfigSpotdl { pub path: PathBuf, } diff --git a/src/downloader.rs b/src/downloader.rs index 8bcbb72..80639f0 100644 --- a/src/downloader.rs +++ b/src/downloader.rs @@ -18,32 +18,66 @@ lazy_static!( static ref PROCESSES: Mutex>> = Mutex::new(RwLock::new(HashMap::new())); ); +#[derive(Debug, Default)] pub struct Downloader { count: usize, + nb_initial_song_count: usize, + nb_cache: Vec<(String, String, Song, Format)> } impl Downloader { pub fn new() -> Self { Self { - count: 0, + ..Default::default() } } + pub fn get_initial_song_count_nb(&self) -> usize { + self.nb_initial_song_count + } + + pub fn get_songs_left_nb(&self) -> usize { + self.nb_cache.len() + } + + pub fn download_all_nb(&mut self, manifest: &Manifest, cfg: &ConfigWrapper) -> anyhow::Result { + for (pname, playlist) in manifest.get_playlists() { + for (sname, song) in playlist.get_songs() { + self.nb_cache.push((pname.clone(), sname.clone(), song.clone(), manifest.get_format().clone())); + } + } + self.nb_initial_song_count = self.nb_cache.len(); + + self.download_all_nb_poll(cfg) + } + + pub fn download_all_nb_poll(&mut self, cfg: &ConfigWrapper) -> anyhow::Result { + if !crate::process_manager::is_proc_queue_full(10) { + if let Some((pname, sname, song, format)) = self.nb_cache.pop() { + self.download_song(cfg, &sname, &song, &pname, &format)?; + } + } + + Ok(crate::process_manager::purge_done_procs()) + } + + + pub async fn download_all(&mut self, manifest: &Manifest, cfg: &ConfigWrapper) -> anyhow::Result { let format = manifest.get_format(); - for (genre, songs) in manifest.get_playlists() { - for (song_name, song) in songs { - self.download_song(cfg, song_name, song, &genre, format).await?; - self.count += crate::process_manager::wait_for_procs_untill(10).await?; + for (name, playlist) in manifest.get_playlists() { + for (song_name, song) in playlist.get_songs() { + self.download_song(cfg, song_name, song, &name, format)?; + self.count += crate::process_manager::wait_for_procs_untill(10)?; } } - self.count += crate::process_manager::wait_for_procs_untill(0).await?; + self.count += crate::process_manager::wait_for_procs_untill(0)?; Ok(self.count) } - pub async fn download_song(&mut self, cfg: &ConfigWrapper, name: &String, song: &Song, genre: &String, format: &Format) -> anyhow::Result<()> { - let dl_dir = format!("{}/{genre}", cfg.cli.output); + pub fn download_song(&mut self, cfg: &ConfigWrapper, name: &String, song: &Song, playlist: &String, format: &Format) -> anyhow::Result<()> { + let dl_dir = format!("{}/{playlist}", cfg.cli.output); let dl_file = format!("{dl_dir}/{}.{}", name, &format); if PathBuf::from(&dl_file).exists() { @@ -89,7 +123,7 @@ impl Downloader { cmd.stdout(Stdio::null()).stderr(Stdio::null()); }; - crate::process_manager::add_proc(cmd, format!("Downloaded {dl_file}")).await?; + crate::process_manager::add_proc(cmd, format!("Downloaded {dl_file}"))?; Ok(()) } } diff --git a/src/manifest/mod.rs b/src/manifest/mod.rs index bea936f..99f4e13 100644 --- a/src/manifest/mod.rs +++ b/src/manifest/mod.rs @@ -1,6 +1,7 @@ // pub mod v1; pub mod song; +pub mod playlist; use song::Song; use std::{collections::HashMap, fmt::{Debug, Display}, path::PathBuf}; @@ -11,7 +12,7 @@ use serde::{Deserialize, Serialize}; const DEFAULT_MANIFEST: &'static str = include_str!("../../manifest.default.json"); -pub type GenreName = String; + pub type SongName = String; pub type Genre = HashMap; @@ -31,36 +32,39 @@ pub struct Manifest { #[serde(skip)] path: PathBuf, format: Format, - playlists: HashMap + playlists: HashMap, } + + + #[allow(dead_code)] impl Manifest { pub fn get_format(&self) -> &Format { &self.format } - pub fn add_song(&mut self, genre: GenreName, name: SongName, song: Song) -> Option { - self.get_playlist_mut(genre)?.insert(name, song) + pub fn add_song(&mut self, playlist_name: String, name: SongName, song: Song) -> Option { + self.get_playlist_mut(playlist_name)?.add_song(name, song) } - pub fn get_song(&self, genre: GenreName, name: &SongName) -> Option<&Song> { - self.get_playlist(genre)?.get(name) + pub fn get_song(&self, playlist_name: String, name: &String) -> Option<&Song> { + self.get_playlist(playlist_name)?.get_song(name) } - pub fn get_song_mut(&mut self, genre: GenreName, name: &SongName) -> Option<&mut Song> { - self.get_playlist_mut(genre)?.get_mut(name) + pub fn get_song_mut(&mut self, playlist_name: String, name: &String) -> Option<&mut Song> { + self.get_playlist_mut(playlist_name)?.get_song_mut(name) } - pub fn add_playlist(&mut self, name: GenreName) { - self.playlists.insert(name, Default::default()); + pub fn add_playlist(&mut self, playlist_name: String) { + self.playlists.insert(playlist_name, Default::default()); } - pub fn get_playlist(&self, name: GenreName) -> Option<&Genre> { - self.playlists.get(&name) + pub fn get_playlist(&self, playlist_name: String) -> Option<&playlist::Playlist> { + self.playlists.get(&playlist_name) } - pub fn get_playlist_mut(&mut self, name: GenreName) -> Option<&mut Genre> { - self.playlists.get_mut(&name) + pub fn get_playlist_mut(&mut self, playlist_name: String) -> Option<&mut playlist::Playlist> { + self.playlists.get_mut(&playlist_name) } - pub fn get_playlists(&self) -> &HashMap { + pub fn get_playlists(&self) -> &HashMap { &self.playlists } - pub fn get_playlists_mut(&mut self) -> &mut HashMap { + pub fn get_playlists_mut(&mut self) -> &mut HashMap { &mut self.playlists } pub fn get_song_count(&self) -> usize { diff --git a/src/manifest/playlist.rs b/src/manifest/playlist.rs new file mode 100644 index 0000000..1dc1153 --- /dev/null +++ b/src/manifest/playlist.rs @@ -0,0 +1,56 @@ +use egui::ahash::HashMap; +use serde::{Deserialize, Serialize}; + +use super::song::Song; + + + +#[derive(Debug, Serialize, Deserialize, Clone, Default)] +pub struct Playlist { + songs: HashMap +} + + + +impl Playlist { + pub fn new() -> Self { + Self { ..Default::default() } + } + + pub fn add_song(&mut self, name: String, song: Song) -> Option { + self.songs.insert(name, song) + } + + pub fn remove_song(&mut self, name: &String) -> Option { + self.songs.remove(name) + } + + pub fn get_song(&self, name: &String) -> Option<&Song> { + self.songs.get(name) + } + + pub fn get_songs(&self) -> &HashMap { + &self.songs + } + + pub fn get_songs_mut(&mut self) -> &mut HashMap { + &mut self.songs + } + + pub fn get_song_mut(&mut self, name: &String) -> Option<&mut Song> { + self.songs.get_mut(name) + } + + pub fn len(&self) -> usize { + self.songs.len() + } +} + +impl IntoIterator for Playlist { + type Item = (String, Song); + type IntoIter = std::collections::hash_map::IntoIter; + fn into_iter(self) -> Self::IntoIter { + self.songs.into_iter() + } +} + diff --git a/src/manifest/song.rs b/src/manifest/song.rs index 1be037d..f206317 100644 --- a/src/manifest/song.rs +++ b/src/manifest/song.rs @@ -4,7 +4,7 @@ use anyhow::{bail, Result}; use serde::{Deserialize, Serialize}; -#[derive(Debug, Serialize, Deserialize, Clone)] +#[derive(Debug, Serialize, Deserialize, Clone, PartialEq, Eq)] pub enum SongType { Youtube, Spotify, @@ -33,13 +33,17 @@ impl Song { pub fn from_url_str(url: String) -> Result { Self::from_url(url::Url::from_str(url.as_str())?) } - pub fn from_url(url: url::Url) -> Result { Ok(Self { url: url.to_string(), typ: url.try_into()?, }) } + + pub fn set_type(&mut self, typ: SongType) -> &mut Self { + self.typ = typ; + self + } pub fn get_url(&self) -> Result { Ok(url::Url::from_str(&self.url)?) } diff --git a/src/process_manager.rs b/src/process_manager.rs index 4fcee17..9615d43 100644 --- a/src/process_manager.rs +++ b/src/process_manager.rs @@ -1,6 +1,6 @@ -use std::{collections::HashMap, sync::atomic::{AtomicUsize, Ordering}}; +use std::{collections::HashMap, sync::{atomic::{AtomicUsize, Ordering}, Mutex, RwLock}}; -use tokio::{process::Command, sync::{Mutex, RwLock}}; +use tokio::process::Command; @@ -19,7 +19,7 @@ static PROC_INC: AtomicUsize = AtomicUsize::new(0); -pub async fn add_proc(mut cmd: Command, msg: String) -> anyhow::Result<()> { +pub fn add_proc(mut cmd: Command, msg: String) -> anyhow::Result<()> { let mut proc = cmd.spawn()?; let id = PROC_INC.fetch_add(1, Ordering::AcqRel); @@ -27,10 +27,10 @@ pub async fn add_proc(mut cmd: Command, msg: String) -> anyhow::Result<()> { let id = id; proc.wait().await .expect("child process encountered an error"); - PROCESSES.lock().await.write().await.get_mut(&id).unwrap().finished = true; + PROCESSES.lock().unwrap().write().unwrap().get_mut(&id).unwrap().finished = true; }); - PROCESSES.lock().await.write().await.insert(id, Proc { + PROCESSES.lock().unwrap().write().unwrap().insert(id, Proc { finished: false, msg, }); @@ -38,30 +38,39 @@ pub async fn add_proc(mut cmd: Command, msg: String) -> anyhow::Result<()> { Ok(()) } + +pub fn is_proc_queue_full(max: usize) -> bool { + let proc_cnt = PROCESSES.lock().unwrap().read().unwrap().len(); + proc_cnt >= max +} + +pub fn purge_done_procs() -> usize { + let mut finish_count = 0; + let procs = { + PROCESSES.lock().unwrap().read().unwrap().clone() + }; + + for (idx, proc) in procs { + if proc.finished { + { + PROCESSES.lock().unwrap().write().unwrap().remove(&idx); + } + log::info!("{}", proc.msg); + finish_count += 1; + } + } + finish_count +} + /// Waits for processes to finish untill the proc count is lower or equal to `max` -pub async fn wait_for_procs_untill(max: usize) -> anyhow::Result { +pub fn wait_for_procs_untill(max: usize) -> anyhow::Result { // NOTE: This looks really fucked because i dont want to deadlock the processes so i lock PROCESSES for as little as possible // NOTE: So its also kinda really slow let mut finish_count = 0; loop { - { - if PROCESSES.lock().await.read().await.len() <= max { - return Ok(finish_count); - } - } - - let procs = { - PROCESSES.lock().await.read().await.clone() - }; - - for (idx, proc) in procs { - if proc.finished { - { - PROCESSES.lock().await.write().await.remove(&idx); - } - log::info!("{}", proc.msg); - finish_count += 1; - } + if !is_proc_queue_full(max) { + return Ok(finish_count); } + finish_count += purge_done_procs(); } -} \ No newline at end of file +}