diff --git a/Cargo.lock b/Cargo.lock index 2d0019f..b4bc05f 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -29,18 +29,6 @@ version = "1.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "aae1277d39aeec15cb388266ecc24b11c80469deae6067e17a1a7aa9e5c1f234" -[[package]] -name = "ahash" -version = "0.8.11" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e89da841a80418a9b391ebaea17f5c112ffaaa96f621d2c285b5174da76b9011" -dependencies = [ - "cfg-if", - "once_cell", - "version_check 0.9.5", - "zerocopy", -] - [[package]] name = "aho-corasick" version = "1.1.3" @@ -137,16 +125,6 @@ version = "1.0.95" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "34ac096ce696dc2fcabef30516bb13c0a68a11d30131d3df6f04711467681b04" -[[package]] -name = "assert-json-diff" -version = "2.0.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "47e4f2b81832e72834d7518d8487a0396a28cc408186a2e8854c0f98011faf12" -dependencies = [ - "serde 1.0.217", - "serde_json", -] - [[package]] name = "async-channel" version = "1.9.0" @@ -293,7 +271,7 @@ dependencies = [ "base64ct", "clap", "cool_asserts", - "serde 1.0.217", + "serde 1.0.218", "sha2", "sqlx", "thiserror 1.0.69", @@ -301,12 +279,6 @@ dependencies = [ "uuid 0.4.0", ] -[[package]] -name = "auto-future" -version = "1.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3c1e7e457ea78e524f48639f551fd79703ac3f2237f5ecccdf4708f8a75ad373" - [[package]] name = "autocfg" version = "0.1.8" @@ -322,103 +294,6 @@ version = "1.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ace50bade8e6234aa140d9a2f552bbee1db4d353f69b8217bc503490fc1a9f26" -[[package]] -name = "axum" -version = "0.7.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "edca88bc138befd0323b20752846e6587272d3b03b0343c8ea28a6f819e6e71f" -dependencies = [ - "async-trait", - "axum-core", - "axum-macros", - "bytes", - "futures-util", - "http 1.2.0", - "http-body 1.0.1", - "http-body-util", - "hyper 1.5.2", - "hyper-util", - "itoa", - "matchit", - "memchr", - "mime 0.3.17", - "percent-encoding 2.3.1", - "pin-project-lite", - "rustversion", - "serde 1.0.217", - "serde_json", - "serde_path_to_error", - "serde_urlencoded", - "sync_wrapper 1.0.2", - "tokio", - "tower", - "tower-layer", - "tower-service", - "tracing", -] - -[[package]] -name = "axum-core" -version = "0.4.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "09f2bd6146b97ae3359fa0cc6d6b376d9539582c7b4220f041a33ec24c226199" -dependencies = [ - "async-trait", - "bytes", - "futures-util", - "http 1.2.0", - "http-body 1.0.1", - "http-body-util", - "mime 0.3.17", - "pin-project-lite", - "rustversion", - "sync_wrapper 1.0.2", - "tower-layer", - "tower-service", - "tracing", -] - -[[package]] -name = "axum-macros" -version = "0.4.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "57d123550fa8d071b7255cb0cc04dc302baa6c8c4a79f55701552684d8399bce" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.96", -] - -[[package]] -name = "axum-test" -version = "16.4.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "63e3a443d2608936a02a222da7b746eb412fede7225b3030b64fe9be99eab8dc" -dependencies = [ - "anyhow", - "assert-json-diff", - "auto-future", - "axum", - "bytes", - "bytesize", - "cookie 0.18.1", - "http 1.2.0", - "http-body-util", - "hyper 1.5.2", - "hyper-util", - "mime 0.3.17", - "pretty_assertions", - "reserve-port", - "rust-multipart-rfc7578_2", - "serde 1.0.217", - "serde_json", - "serde_urlencoded", - "smallvec", - "tokio", - "tower", - "url 2.5.4", -] - [[package]] name = "az" version = "1.2.1" @@ -522,7 +397,7 @@ version = "2.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8f68f53c83ab957f72c32642f3868eec03eb974d1fb82e453128456482613d36" dependencies = [ - "serde 1.0.217", + "serde 1.0.218", ] [[package]] @@ -577,12 +452,6 @@ version = "1.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "325918d6fe32f23b19878fe4b34794ae41fc19ddbe53b10571a4874d44ffd39b" -[[package]] -name = "bytesize" -version = "1.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a3e368af43e418a04d52505cf3dbc23dda4e3407ae2fa99fd0e4f308ce546acc" - [[package]] name = "cairo-rs" version = "0.18.5" @@ -659,7 +528,7 @@ dependencies = [ "iana-time-zone", "js-sys", "num-traits", - "serde 1.0.217", + "serde 1.0.218", "wasm-bindgen", "windows-targets 0.52.6", ] @@ -673,7 +542,7 @@ dependencies = [ "chrono", "chrono-tz-build", "phf 0.11.3", - "serde 1.0.217", + "serde 1.0.218", ] [[package]] @@ -700,9 +569,9 @@ dependencies = [ [[package]] name = "clap" -version = "4.5.26" +version = "4.5.30" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a8eb5e908ef3a6efbe1ed62520fb7287959888c88485abe072543190ecc66783" +checksum = "92b7b18d71fad5313a1e320fa9897994228ce274b60faa4d694fe0ea89cd9e6d" dependencies = [ "clap_builder", "clap_derive", @@ -710,9 +579,9 @@ dependencies = [ [[package]] name = "clap_builder" -version = "4.5.26" +version = "4.5.30" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "96b01801b5fc6a0a232407abc821660c9c6d25a1cafc0d4f85f29fb8d9afc121" +checksum = "a35db2071778a7344791a4fb4f95308b5673d219dee3ae348b86642574ecc90c" dependencies = [ "anstream", "anstyle", @@ -722,9 +591,9 @@ dependencies = [ [[package]] name = "clap_derive" -version = "4.5.24" +version = "4.5.28" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "54b755194d6389280185988721fffba69495eed5ee9feeee9a599b53db80318c" +checksum = "bf4ced95c6f4a675af3da73304b9ac4ed991640c36374e4b46795c49e17cf1ed" dependencies = [ "heck 0.5.0", "proc-macro2", @@ -774,7 +643,7 @@ version = "0.1.0" dependencies = [ "config-derive", "cool_asserts", - "serde 1.0.217", + "serde 1.0.218", "serde_json", "thiserror 1.0.69", ] @@ -812,16 +681,6 @@ dependencies = [ "version_check 0.9.5", ] -[[package]] -name = "cookie" -version = "0.18.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4ddef33a339a91ea89fb53151bd0a4689cfce27055c291dfa69945475d22c747" -dependencies = [ - "time 0.3.37", - "version_check 0.9.5", -] - [[package]] name = "cookie-factory" version = "0.3.3" @@ -958,7 +817,7 @@ dependencies = [ "gio", "glib", "gtk4", - "serde 1.0.217", + "serde 1.0.218", "serde_yml", ] @@ -1004,7 +863,7 @@ dependencies = [ "libadwaita", "memorycache", "reqwest", - "serde 1.0.217", + "serde 1.0.218", "serde_json", "tokio", "unic-langid", @@ -1046,12 +905,6 @@ dependencies = [ "powerfmt", ] -[[package]] -name = "diff" -version = "0.1.13" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "56254986775e3233ffa9c4d7d3faaf6d36a2c09d30b20687e9f88bc8bafc16c8" - [[package]] name = "digest" version = "0.10.7" @@ -1072,7 +925,7 @@ checksum = "2517b0555262aeeda0d107a40ecfbbcf185921180ffb4acf316ebe0887467e26" dependencies = [ "generic-array 0.11.2", "num-traits", - "serde 1.0.217", + "serde 1.0.218", "typenum", ] @@ -1084,7 +937,7 @@ checksum = "a0b0a86c5d31c93238ff4b694fa31f3acdf67440770dc314c57d90e433914397" dependencies = [ "generic-array 0.14.7", "num-traits", - "serde 1.0.217", + "serde 1.0.218", "typenum", ] @@ -1111,7 +964,7 @@ version = "1.13.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "60b1af1c220855b6ceac025d3f6ecdd2b7c4894bfe9cd9bda4fbb4bc7c0d4cf0" dependencies = [ - "serde 1.0.217", + "serde 1.0.218", ] [[package]] @@ -1121,7 +974,7 @@ dependencies = [ "chrono", "chrono-tz", "dimensioned 0.7.0", - "serde 1.0.217", + "serde 1.0.218", "serde_derive", "serde_json", "tempfile", @@ -1220,18 +1073,6 @@ dependencies = [ "zune-inflate", ] -[[package]] -name = "fallible-iterator" -version = "0.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2acce4a10f12dc2fb14a218589d4f1f62ef011b2d0cc4b3cb1bba8e94da14649" - -[[package]] -name = "fallible-streaming-iterator" -version = "0.1.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7360491ce676a36bf9bb3c56c1aa791658183a54d2744120f27285738d90465a" - [[package]] name = "fastrand" version = "2.3.0" @@ -1267,7 +1108,7 @@ dependencies = [ "bytes", "chrono", "clap", - "cookie 0.17.0", + "cookie", "cool_asserts", "futures-util", "hex-string", @@ -1278,7 +1119,7 @@ dependencies = [ "mime 0.3.17", "mime_guess 2.0.5", "pretty_env_logger", - "serde 1.0.217", + "serde 1.0.218", "serde_json", "sha2", "tempdir", @@ -1440,7 +1281,7 @@ dependencies = [ "chrono-tz", "dimensioned 0.8.0", "emseries", - "serde 1.0.217", + "serde 1.0.218", "serde_json", "tempfile", ] @@ -1656,6 +1497,18 @@ dependencies = [ "wasi 0.11.0+wasi-snapshot-preview1", ] +[[package]] +name = "getrandom" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "43a49c392881ce6d5c3b8cb70f98717b7c07aabbdff06687b9030dbfbe2725f8" +dependencies = [ + "cfg-if", + "libc", + "wasi 0.13.3+wasi-0.2.2", + "windows-targets 0.52.6", +] + [[package]] name = "gif" version = "0.11.4" @@ -1762,7 +1615,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0bb0228f477c0900c880fd78c8759b95c7636dbd7842707f49e132378aa2acdc" dependencies = [ "heck 0.4.1", - "proc-macro-crate 2.0.2", + "proc-macro-crate 2.0.0", "proc-macro-error", "proc-macro2", "quote", @@ -1810,7 +1663,7 @@ dependencies = [ "glib-build-tools 0.16.3", "gtk4", "libadwaita", - "serde 1.0.217", + "serde 1.0.218", "serde_json", "tokio", ] @@ -1820,7 +1673,7 @@ name = "gm-dash" version = "0.1.0" dependencies = [ "pipewire", - "serde 1.0.217", + "serde 1.0.218", "serde_json", "tokio", "warp", @@ -1983,15 +1836,6 @@ dependencies = [ "crunchy", ] -[[package]] -name = "hashbrown" -version = "0.14.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e5274423e17b7c9fc20b6e7e208532f9b19825d82dfd615708b70edd83df41f1" -dependencies = [ - "ahash", -] - [[package]] name = "hashbrown" version = "0.15.2" @@ -2003,22 +1847,13 @@ dependencies = [ "foldhash", ] -[[package]] -name = "hashlink" -version = "0.9.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6ba4ff7128dee98c7dc9794b6a411377e1404dba1c97deb8d1a55297bd25d8af" -dependencies = [ - "hashbrown 0.14.5", -] - [[package]] name = "hashlink" version = "0.10.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7382cf6263419f2d8df38c55d7da83da5c18aef87fc7a7fc1fb1e344edfe14c1" dependencies = [ - "hashbrown 0.15.2", + "hashbrown", ] [[package]] @@ -2154,29 +1989,6 @@ dependencies = [ "pin-project-lite", ] -[[package]] -name = "http-body" -version = "1.0.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1efedce1fb8e6913f23e0c92de8e62cd5b772a67e7b3946df930a62566c93184" -dependencies = [ - "bytes", - "http 1.2.0", -] - -[[package]] -name = "http-body-util" -version = "0.1.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "793429d76616a256bcb62c2a2ec2bed781c8307e797e2598c50010f2bee2544f" -dependencies = [ - "bytes", - "futures-util", - "http 1.2.0", - "http-body 1.0.1", - "pin-project-lite", -] - [[package]] name = "httparse" version = "1.9.5" @@ -2226,7 +2038,7 @@ dependencies = [ "futures-util", "h2", "http 0.2.12", - "http-body 0.4.6", + "http-body", "httparse", "httpdate", "itoa", @@ -2238,26 +2050,6 @@ dependencies = [ "want", ] -[[package]] -name = "hyper" -version = "1.5.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "256fb8d4bd6413123cc9d91832d78325c48ff41677595be797d90f42969beae0" -dependencies = [ - "bytes", - "futures-channel", - "futures-util", - "http 1.2.0", - "http-body 1.0.1", - "httparse", - "httpdate", - "itoa", - "pin-project-lite", - "smallvec", - "tokio", - "want", -] - [[package]] name = "hyper-tls" version = "0.5.0" @@ -2271,25 +2063,6 @@ dependencies = [ "tokio-native-tls", ] -[[package]] -name = "hyper-util" -version = "0.1.10" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "df2dcfbe0677734ab2f3ffa7fa7bfd4706bfdc1ef393f2ee30184aed67e631b4" -dependencies = [ - "bytes", - "futures-channel", - "futures-util", - "http 1.2.0", - "http-body 1.0.1", - "hyper 1.5.2", - "pin-project-lite", - "socket2", - "tokio", - "tower-service", - "tracing", -] - [[package]] name = "iana-time-zone" version = "0.1.61" @@ -2343,6 +2116,7 @@ checksum = "13acbb8371917fc971be86fc8057c41a64b521c184808a698c02acc242dbf637" dependencies = [ "displaydoc", "litemap", + "serde 1.0.218", "tinystr", "writeable", "zerovec", @@ -2510,25 +2284,6 @@ dependencies = [ "tiff 0.9.1", ] -[[package]] -name = "include_dir" -version = "0.7.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "923d117408f1e49d914f1a379a309cffe4f18c05cf4e3d12e613a15fc81bd0dd" -dependencies = [ - "include_dir_macros", -] - -[[package]] -name = "include_dir_macros" -version = "0.7.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7cab85a7ed0bd5f0e76d93846e0147172bed2e2d3f859bcc33a8d9699cad1a75" -dependencies = [ - "proc-macro2", - "quote", -] - [[package]] name = "indent_write" version = "2.2.0" @@ -2542,7 +2297,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "62f822373a4fe84d4bb149bf54e584a7f4abec90e072ed49cda0edea5b95471f" dependencies = [ "equivalent", - "hashbrown 0.15.2", + "hashbrown", ] [[package]] @@ -2655,6 +2410,21 @@ dependencies = [ "log 0.4.25", ] +[[package]] +name = "l10n-db" +version = "0.1.0" +dependencies = [ + "chrono", + "clap", + "icu_locid", + "serde 1.0.218", + "serde_json", + "tempfile", + "thiserror 2.0.11", + "toml", + "xml-rs", +] + [[package]] name = "language-tags" version = "0.2.2" @@ -2850,12 +2620,6 @@ version = "0.1.10" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "2532096657941c2fea9c289d370a250971c689d4f143798ff67113ec042024a5" -[[package]] -name = "matchit" -version = "0.7.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0e7465ac9959cc2b1404e8e2367b43684a6d13790fe23056cc8c6c5a6b7bcb94" - [[package]] name = "md-5" version = "0.10.6" @@ -2887,7 +2651,7 @@ version = "0.1.0" dependencies = [ "chrono", "futures", - "serde 1.0.217", + "serde 1.0.218", "serde_derive", "tokio", ] @@ -3205,7 +2969,7 @@ dependencies = [ "cool_asserts", "grid", "nary_tree", - "serde 1.0.217", + "serde 1.0.218", "serde_json", "sgf", "thiserror 1.0.69", @@ -3555,16 +3319,6 @@ dependencies = [ "zerocopy", ] -[[package]] -name = "pretty_assertions" -version = "1.4.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3ae130e2f271fbc2ac3a40fb1d07180839cdbbe443c7a27e1e3c13c5cac0116d" -dependencies = [ - "diff", - "yansi", -] - [[package]] name = "pretty_env_logger" version = "0.5.0" @@ -3587,11 +3341,10 @@ dependencies = [ [[package]] name = "proc-macro-crate" -version = "2.0.2" +version = "2.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b00f26d3400549137f92511a46ac1cd8ce37cb5598a96d382381458b992a5d24" +checksum = "7e8366a6159044a37876a2b9817124296703c586a5c92e2c53751fa06d8d43e8" dependencies = [ - "toml_datetime", "toml_edit 0.20.2", ] @@ -3766,7 +3519,7 @@ version = "0.6.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ec0be4795e2f6a28069bec0b5ff3e2ac9bafc99e6a9a7dc3547996c5c816922c" dependencies = [ - "getrandom", + "getrandom 0.2.15", ] [[package]] @@ -3929,7 +3682,7 @@ dependencies = [ "futures-util", "h2", "http 0.2.12", - "http-body 0.4.6", + "http-body", "hyper 0.14.32", "hyper-tls", "ipnet", @@ -3941,10 +3694,10 @@ dependencies = [ "percent-encoding 2.3.1", "pin-project-lite", "rustls-pemfile", - "serde 1.0.217", + "serde 1.0.218", "serde_json", "serde_urlencoded", - "sync_wrapper 0.1.2", + "sync_wrapper", "system-configuration", "tokio", "tokio-native-tls", @@ -3956,16 +3709,6 @@ dependencies = [ "winreg", ] -[[package]] -name = "reserve-port" -version = "2.0.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9838134a2bfaa8e1f40738fcc972ac799de6e0e06b5157acb95fc2b05a0ea283" -dependencies = [ - "lazy_static", - "thiserror 1.0.69", -] - [[package]] name = "result-extended" version = "0.1.0" @@ -3993,47 +3736,6 @@ dependencies = [ "zeroize", ] -[[package]] -name = "rusqlite" -version = "0.32.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7753b721174eb8ff87a9a0e799e2d7bc3749323e773db92e0984debb00019d6e" -dependencies = [ - "bitflags 2.8.0", - "fallible-iterator", - "fallible-streaming-iterator", - "hashlink 0.9.1", - "libsqlite3-sys", - "smallvec", -] - -[[package]] -name = "rusqlite_migration" -version = "1.3.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "923b42e802f7dc20a0a6b5e097ba7c83fe4289da07e49156fecf6af08aa9cd1c" -dependencies = [ - "include_dir", - "log 0.4.25", - "rusqlite", -] - -[[package]] -name = "rust-multipart-rfc7578_2" -version = "0.6.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "03b748410c0afdef2ebbe3685a6a862e2ee937127cdaae623336a459451c8d57" -dependencies = [ - "bytes", - "futures-core", - "futures-util", - "http 0.2.12", - "mime 0.3.17", - "mime_guess 2.0.5", - "rand 0.8.5", - "thiserror 1.0.69", -] - [[package]] name = "rustc-demangle" version = "0.1.24" @@ -4195,18 +3897,18 @@ checksum = "34b623917345a631dc9608d5194cc206b3fe6c3554cd1c75b937e55e285254af" [[package]] name = "serde" -version = "1.0.217" +version = "1.0.218" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "02fc4265df13d6fa1d00ecff087228cc0a2b5f3c0e87e258d8b94a156e984c70" +checksum = "e8dfc9d19bdbf6d17e22319da49161d5d0108e4188e8b680aef6299eed22df60" dependencies = [ "serde_derive", ] [[package]] name = "serde_derive" -version = "1.0.217" +version = "1.0.218" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5a9bf7cf98d04a2b28aead066b7496853d4779c9cc183c440dbac457641e19a0" +checksum = "f09503e191f4e797cb8aac08e9a4a4695c5edf6a2e70e376d961ddd5c969f82b" dependencies = [ "proc-macro2", "quote", @@ -4215,24 +3917,14 @@ dependencies = [ [[package]] name = "serde_json" -version = "1.0.136" +version = "1.0.139" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "336a0c23cf42a38d9eaa7cd22c7040d04e1228a19a933890805ffd00a16437d2" +checksum = "44f86c3acccc9c65b153fe1b85a3be07fe5515274ec9f0653b4a0875731c72a6" dependencies = [ "itoa", "memchr", "ryu", - "serde 1.0.217", -] - -[[package]] -name = "serde_path_to_error" -version = "0.1.16" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "af99884400da37c88f5e9146b7f1fd0fbcae8f6eec4e9da38b67d05486f814a6" -dependencies = [ - "itoa", - "serde 1.0.217", + "serde 1.0.218", ] [[package]] @@ -4241,7 +3933,7 @@ version = "0.6.8" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "87607cb1398ed59d48732e575a4c28a7a8ebf2454b964fe3f224f2afc07909e1" dependencies = [ - "serde 1.0.217", + "serde 1.0.218", ] [[package]] @@ -4253,7 +3945,7 @@ dependencies = [ "form_urlencoded", "itoa", "ryu", - "serde 1.0.217", + "serde 1.0.218", ] [[package]] @@ -4267,10 +3959,14 @@ dependencies = [ "libyml", "memchr", "ryu", - "serde 1.0.217", + "serde 1.0.218", "version_check 0.9.5", ] +[[package]] +name = "server" +version = "0.1.0" + [[package]] name = "sgf" version = "0.1.0" @@ -4279,7 +3975,7 @@ dependencies = [ "cool_asserts", "nary_tree", "nom", - "serde 1.0.217", + "serde 1.0.218", "thiserror 1.0.69", "typeshare", "uuid 0.8.2", @@ -4380,7 +4076,7 @@ version = "1.13.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3c5e1a9a646d36c3599cd173a41282daf47c44583ad367b8e6837255952e5c67" dependencies = [ - "serde 1.0.217", + "serde 1.0.218", ] [[package]] @@ -4446,14 +4142,14 @@ dependencies = [ "futures-intrusive", "futures-io", "futures-util", - "hashbrown 0.15.2", - "hashlink 0.10.0", + "hashbrown", + "hashlink", "indexmap", "log 0.4.25", "memchr", "once_cell", "percent-encoding 2.3.1", - "serde 1.0.217", + "serde 1.0.218", "serde_json", "sha2", "smallvec", @@ -4490,7 +4186,7 @@ dependencies = [ "once_cell", "proc-macro2", "quote", - "serde 1.0.217", + "serde 1.0.218", "serde_json", "sha2", "sqlx-core", @@ -4534,7 +4230,7 @@ dependencies = [ "percent-encoding 2.3.1", "rand 0.8.5", "rsa", - "serde 1.0.217", + "serde 1.0.218", "sha1", "sha2", "smallvec", @@ -4571,7 +4267,7 @@ dependencies = [ "memchr", "once_cell", "rand 0.8.5", - "serde 1.0.217", + "serde 1.0.218", "serde_json", "sha2", "smallvec", @@ -4598,7 +4294,7 @@ dependencies = [ "libsqlite3-sys", "log 0.4.25", "percent-encoding 2.3.1", - "serde 1.0.217", + "serde 1.0.218", "serde_urlencoded", "sqlx-core", "tracing", @@ -4662,12 +4358,6 @@ version = "0.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "2047c6ded9c721764247e62cd3b03c09ffc529b2ba5b10ec482ae507a4a70160" -[[package]] -name = "sync_wrapper" -version = "1.0.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0bf256ce5efdfa370213c1dabab5935a12e49f2c58d15e9eac2870d3b4f27263" - [[package]] name = "synstructure" version = "0.13.1" @@ -4731,13 +4421,13 @@ dependencies = [ [[package]] name = "tempfile" -version = "3.15.0" +version = "3.17.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9a8a559c81686f576e8cd0290cd2a24a2a9ad80c98b3478856500fcbd7acd704" +checksum = "22e5a0acb1f3f55f65cc4a866c361b2fb2a0ff6366785ae6fbb5f85df07ba230" dependencies = [ "cfg-if", "fastrand", - "getrandom", + "getrandom 0.3.1", "once_cell", "rustix", "windows-sys 0.59.0", @@ -4835,7 +4525,7 @@ dependencies = [ "itoa", "num-conv", "powerfmt", - "serde 1.0.217", + "serde 1.0.218", "time-core", "time-macros", ] @@ -4871,6 +4561,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9117f5d4db391c1cf6927e7bea3db74b9a1c1add8f7eda9ffd5364f40f57b82f" dependencies = [ "displaydoc", + "serde 1.0.218", "zerovec", ] @@ -4966,23 +4657,23 @@ dependencies = [ [[package]] name = "toml" -version = "0.8.2" +version = "0.8.20" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "185d8ab0dfbb35cf1399a6344d8484209c088f75f8f68230da55d48d95d43e3d" +checksum = "cd87a5cdd6ffab733b2f74bc4fd7ee5fff6634124999ac278c35fc78c6120148" dependencies = [ - "serde 1.0.217", + "serde 1.0.218", "serde_spanned", "toml_datetime", - "toml_edit 0.20.2", + "toml_edit 0.22.24", ] [[package]] name = "toml_datetime" -version = "0.6.3" +version = "0.6.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7cda73e2f1397b1262d6dfdcef8aafae14d1de7748d66822d3bfeeb6d03e5e4b" +checksum = "0dd7358ecb8fc2f8d014bf86f6f638ce72ba252a2c3a2572f2a795f1d23efb41" dependencies = [ - "serde 1.0.217", + "serde 1.0.218", ] [[package]] @@ -4993,7 +4684,7 @@ checksum = "1b5bb770da30e5cbfde35a2d7b9b8a2c4b8ef89548a7a6aeab5c9a576e3e7421" dependencies = [ "indexmap", "toml_datetime", - "winnow", + "winnow 0.5.40", ] [[package]] @@ -5003,48 +4694,23 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "396e4d48bbb2b7554c944bde63101b5ae446cff6ec4a24227428f15eb72ef338" dependencies = [ "indexmap", - "serde 1.0.217", + "toml_datetime", + "winnow 0.5.40", +] + +[[package]] +name = "toml_edit" +version = "0.22.24" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "17b4795ff5edd201c7cd6dca065ae59972ce77d1b80fa0a84d94950ece7d1474" +dependencies = [ + "indexmap", + "serde 1.0.218", "serde_spanned", "toml_datetime", - "winnow", + "winnow 0.7.3", ] -[[package]] -name = "tower" -version = "0.5.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d039ad9159c98b70ecfd540b2573b97f7f52c3e8d9f8ad57a24b916a536975f9" -dependencies = [ - "futures-core", - "futures-util", - "pin-project-lite", - "sync_wrapper 1.0.2", - "tokio", - "tower-layer", - "tower-service", - "tracing", -] - -[[package]] -name = "tower-http" -version = "0.6.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "403fa3b783d4b626a8ad51d766ab03cb6d2dbfc46b1c5d4448395e6628dc9697" -dependencies = [ - "bitflags 2.8.0", - "bytes", - "http 1.2.0", - "pin-project-lite", - "tower-layer", - "tower-service", -] - -[[package]] -name = "tower-layer" -version = "0.3.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "121c2a6cda46980bb0fcd1647ffaf6cd3fc79a013de288782836f6df9c48780e" - [[package]] name = "tower-service" version = "0.3.3" @@ -5155,7 +4821,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "19be0f411120091e76e13e5a0186d8e2bcc3e7e244afdb70152197f1a8486ceb" dependencies = [ "chrono", - "serde 1.0.217", + "serde 1.0.218", "serde_json", "typeshare-annotation", ] @@ -5279,12 +4945,6 @@ dependencies = [ "percent-encoding 2.3.1", ] -[[package]] -name = "urlencoding" -version = "2.1.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "daf8dba3b7eb870caf1ddeed7bc9d2a049f3cfdfae7cb521b087cc33ae4c49da" - [[package]] name = "utf-8" version = "0.7.6" @@ -5325,8 +4985,8 @@ version = "0.8.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "bc5cf98d8186244414c848017f0e2676b3fcb46807f6668a97dfe67359a3c4b7" dependencies = [ - "getrandom", - "serde 1.0.217", + "getrandom 0.2.15", + "serde 1.0.218", ] [[package]] @@ -5335,7 +4995,7 @@ version = "1.12.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "744018581f9a3454a9e15beb8a33b017183f1e7c0cd170232a2d1453b23a51c4" dependencies = [ - "getrandom", + "getrandom 0.2.15", ] [[package]] @@ -5368,37 +5028,6 @@ version = "0.9.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0b928f33d975fc6ad9f86c8f283853ad26bdd5b10b7f1542aa2fa15e2289105a" -[[package]] -name = "visions" -version = "0.1.0" -dependencies = [ - "async-std", - "async-trait", - "authdb", - "axum", - "axum-test", - "chrono", - "cool_asserts", - "futures", - "include_dir", - "lazy_static", - "mime 0.3.17", - "mime_guess 2.0.5", - "pretty_env_logger", - "result-extended", - "rusqlite", - "rusqlite_migration", - "serde 1.0.217", - "serde_json", - "thiserror 2.0.11", - "tokio", - "tokio-stream", - "tower-http", - "typeshare", - "urlencoding", - "uuid 1.12.0", -] - [[package]] name = "wait-timeout" version = "0.2.0" @@ -5436,7 +5065,7 @@ dependencies = [ "percent-encoding 2.3.1", "pin-project", "scoped-tls", - "serde 1.0.217", + "serde 1.0.218", "serde_json", "serde_urlencoded", "tokio", @@ -5458,6 +5087,15 @@ version = "0.11.0+wasi-snapshot-preview1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423" +[[package]] +name = "wasi" +version = "0.13.3+wasi-0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "26816d2e1a4a36a2940b96c5296ce403917633dff8f3440e9b236ed6f6bacad2" +dependencies = [ + "wit-bindgen-rt", +] + [[package]] name = "wasite" version = "0.1.0" @@ -5758,6 +5396,15 @@ dependencies = [ "memchr", ] +[[package]] +name = "winnow" +version = "0.7.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0e7f4ea97f6f78012141bcdb6a216b2609f0979ada50b20ca5b52dde2eac2bb1" +dependencies = [ + "memchr", +] + [[package]] name = "winreg" version = "0.50.0" @@ -5768,6 +5415,15 @@ dependencies = [ "windows-sys 0.48.0", ] +[[package]] +name = "wit-bindgen-rt" +version = "0.33.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3268f3d866458b787f390cf61f4bbb563b922d091359f9608842999eaee3943c" +dependencies = [ + "bitflags 2.8.0", +] + [[package]] name = "write16" version = "1.0.0" @@ -5781,10 +5437,10 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1e9df38ee2d2c3c5948ea468a8406ff0db0b29ae1ffde1bcf20ef305bcc95c51" [[package]] -name = "yansi" -version = "1.0.1" +name = "xml-rs" +version = "0.8.25" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cfe53a6657fd280eaa890a3bc59152892ffa3e30101319d168b781ed6529b049" +checksum = "c5b940ebc25896e71dd073bad2dbaa2abfe97b0a391415e22ad1326d9c54e3c4" [[package]] name = "yansi-term" @@ -5801,7 +5457,7 @@ version = "0.7.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "120e6aef9aa629e3d4f52dc8cc43a015c7724194c97dfaf45180d2daf2b77f40" dependencies = [ - "serde 1.0.217", + "serde 1.0.218", "stable_deref_trait", "yoke-derive", "zerofrom", diff --git a/Cargo.nix b/Cargo.nix index 5e3a985..5af2594 100644 --- a/Cargo.nix +++ b/Cargo.nix @@ -225,6 +225,16 @@ rec { # File a bug if you depend on any for non-debug work! debug = internal.debugCrate { inherit packageId; }; }; + "l10n-db" = rec { + packageId = "l10n-db"; + build = internal.buildRustCrateWithFeatures { + packageId = "l10n-db"; + }; + + # Debug support which might change between releases. + # File a bug if you depend on any for non-debug work! + debug = internal.debugCrate { inherit packageId; }; + }; "lights-core" = rec { packageId = "lights-core"; build = internal.buildRustCrateWithFeatures { @@ -295,6 +305,16 @@ rec { # File a bug if you depend on any for non-debug work! debug = internal.debugCrate { inherit packageId; }; }; + "server" = rec { + packageId = "server"; + build = internal.buildRustCrateWithFeatures { + packageId = "server"; + }; + + # Debug support which might change between releases. + # File a bug if you depend on any for non-debug work! + debug = internal.debugCrate { inherit packageId; }; + }; "sgf" = rec { packageId = "sgf"; build = internal.buildRustCrateWithFeatures { @@ -331,16 +351,6 @@ rec { packageId = "tree"; }; - # Debug support which might change between releases. - # File a bug if you depend on any for non-debug work! - debug = internal.debugCrate { inherit packageId; }; - }; - "visions" = rec { - packageId = "visions"; - build = internal.buildRustCrateWithFeatures { - packageId = "visions"; - }; - # Debug support which might change between releases. # File a bug if you depend on any for non-debug work! debug = internal.debugCrate { inherit packageId; }; @@ -448,49 +458,6 @@ rec { }; resolvedDefaultFeatures = [ "default" "std" ]; }; - "ahash" = rec { - crateName = "ahash"; - version = "0.8.11"; - edition = "2018"; - sha256 = "04chdfkls5xmhp1d48gnjsmglbqibizs3bpbj6rsj604m10si7g8"; - authors = [ - "Tom Kaitchuck " - ]; - dependencies = [ - { - name = "cfg-if"; - packageId = "cfg-if"; - } - { - name = "once_cell"; - packageId = "once_cell"; - usesDefaultFeatures = false; - target = { target, features }: (!(("arm" == target."arch") && ("none" == target."os"))); - features = [ "alloc" ]; - } - { - name = "zerocopy"; - packageId = "zerocopy"; - usesDefaultFeatures = false; - features = [ "simd" ]; - } - ]; - buildDependencies = [ - { - name = "version_check"; - packageId = "version_check 0.9.5"; - } - ]; - features = { - "atomic-polyfill" = [ "dep:atomic-polyfill" "once_cell/atomic-polyfill" ]; - "compile-time-rng" = [ "const-random" ]; - "const-random" = [ "dep:const-random" ]; - "default" = [ "std" "runtime-rng" ]; - "getrandom" = [ "dep:getrandom" ]; - "runtime-rng" = [ "getrandom" ]; - "serde" = [ "dep:serde" ]; - }; - }; "aho-corasick" = rec { crateName = "aho-corasick"; version = "1.1.3"; @@ -721,34 +688,6 @@ rec { }; resolvedDefaultFeatures = [ "default" "std" ]; }; - "assert-json-diff" = rec { - crateName = "assert-json-diff"; - version = "2.0.2"; - edition = "2018"; - sha256 = "04mg3w0rh3schpla51l18362hsirl23q93aisws2irrj32wg5r27"; - libName = "assert_json_diff"; - authors = [ - "David Pedersen " - ]; - dependencies = [ - { - name = "serde"; - packageId = "serde 1.0.217"; - } - { - name = "serde_json"; - packageId = "serde_json"; - } - ]; - devDependencies = [ - { - name = "serde"; - packageId = "serde 1.0.217"; - features = [ "derive" ]; - } - ]; - - }; "async-channel 1.9.0" = rec { crateName = "async-channel"; version = "1.9.0"; @@ -1267,7 +1206,7 @@ rec { } { name = "serde"; - packageId = "serde 1.0.217"; + packageId = "serde 1.0.218"; features = [ "derive" ]; } { @@ -1301,17 +1240,6 @@ rec { } ]; - }; - "auto-future" = rec { - crateName = "auto-future"; - version = "1.0.0"; - edition = "2021"; - sha256 = "0wykbakzh227vz6frx9p48zsq0wpswgmb7v3917m53m7gr2pw7iw"; - libName = "auto_future"; - authors = [ - "Joseph Lenton " - ]; - }; "autocfg 0.1.8" = rec { crateName = "autocfg"; @@ -1339,429 +1267,6 @@ rec { ]; }; - "axum" = rec { - crateName = "axum"; - version = "0.7.9"; - edition = "2021"; - sha256 = "07z7wqczi9i8xb4460rvn39p4wjqwr32hx907crd1vwb2fy8ijpd"; - dependencies = [ - { - name = "async-trait"; - packageId = "async-trait"; - } - { - name = "axum-core"; - packageId = "axum-core"; - } - { - name = "axum-macros"; - packageId = "axum-macros"; - optional = true; - } - { - name = "bytes"; - packageId = "bytes"; - } - { - name = "futures-util"; - packageId = "futures-util"; - usesDefaultFeatures = false; - features = [ "alloc" ]; - } - { - name = "http"; - packageId = "http 1.2.0"; - } - { - name = "http-body"; - packageId = "http-body 1.0.1"; - } - { - name = "http-body-util"; - packageId = "http-body-util"; - } - { - name = "hyper"; - packageId = "hyper 1.5.2"; - optional = true; - } - { - name = "hyper-util"; - packageId = "hyper-util"; - optional = true; - features = [ "tokio" "server" "service" ]; - } - { - name = "itoa"; - packageId = "itoa"; - } - { - name = "matchit"; - packageId = "matchit"; - } - { - name = "memchr"; - packageId = "memchr"; - } - { - name = "mime"; - packageId = "mime 0.3.17"; - } - { - name = "percent-encoding"; - packageId = "percent-encoding 2.3.1"; - } - { - name = "pin-project-lite"; - packageId = "pin-project-lite"; - } - { - name = "rustversion"; - packageId = "rustversion"; - } - { - name = "serde"; - packageId = "serde 1.0.217"; - } - { - name = "serde_json"; - packageId = "serde_json"; - optional = true; - features = [ "raw_value" ]; - } - { - name = "serde_path_to_error"; - packageId = "serde_path_to_error"; - optional = true; - } - { - name = "serde_urlencoded"; - packageId = "serde_urlencoded"; - optional = true; - } - { - name = "sync_wrapper"; - packageId = "sync_wrapper 1.0.2"; - } - { - name = "tokio"; - packageId = "tokio"; - rename = "tokio"; - optional = true; - features = [ "time" ]; - } - { - name = "tower"; - packageId = "tower"; - usesDefaultFeatures = false; - features = [ "util" ]; - } - { - name = "tower-layer"; - packageId = "tower-layer"; - } - { - name = "tower-service"; - packageId = "tower-service"; - } - { - name = "tracing"; - packageId = "tracing"; - optional = true; - usesDefaultFeatures = false; - } - ]; - devDependencies = [ - { - name = "axum-macros"; - packageId = "axum-macros"; - features = [ "__private" ]; - } - { - name = "serde"; - packageId = "serde 1.0.217"; - features = [ "derive" ]; - } - { - name = "serde_json"; - packageId = "serde_json"; - features = [ "raw_value" ]; - } - { - name = "tokio"; - packageId = "tokio"; - rename = "tokio"; - features = [ "macros" "rt" "rt-multi-thread" "net" "test-util" ]; - } - { - name = "tower"; - packageId = "tower"; - rename = "tower"; - features = [ "util" "timeout" "limit" "load-shed" "steer" "filter" ]; - } - { - name = "tracing"; - packageId = "tracing"; - } - ]; - features = { - "__private_docs" = [ "axum-core/__private_docs" "tower/full" "dep:tower-http" ]; - "default" = [ "form" "http1" "json" "matched-path" "original-uri" "query" "tokio" "tower-log" "tracing" ]; - "form" = [ "dep:serde_urlencoded" ]; - "http1" = [ "dep:hyper" "hyper?/http1" "hyper-util?/http1" ]; - "http2" = [ "dep:hyper" "hyper?/http2" "hyper-util?/http2" ]; - "json" = [ "dep:serde_json" "dep:serde_path_to_error" ]; - "macros" = [ "dep:axum-macros" ]; - "multipart" = [ "dep:multer" ]; - "query" = [ "dep:serde_urlencoded" ]; - "tokio" = [ "dep:hyper-util" "dep:tokio" "tokio/net" "tokio/rt" "tower/make" "tokio/macros" ]; - "tower-log" = [ "tower/log" ]; - "tracing" = [ "dep:tracing" "axum-core/tracing" ]; - "ws" = [ "dep:hyper" "tokio" "dep:tokio-tungstenite" "dep:sha1" "dep:base64" ]; - }; - resolvedDefaultFeatures = [ "default" "form" "http1" "json" "macros" "matched-path" "original-uri" "query" "tokio" "tower-log" "tracing" ]; - }; - "axum-core" = rec { - crateName = "axum-core"; - version = "0.4.5"; - edition = "2021"; - sha256 = "16b1496c4gm387q20hkv5ic3k5bd6xmnvk50kwsy6ymr8rhvvwh9"; - libName = "axum_core"; - dependencies = [ - { - name = "async-trait"; - packageId = "async-trait"; - } - { - name = "bytes"; - packageId = "bytes"; - } - { - name = "futures-util"; - packageId = "futures-util"; - usesDefaultFeatures = false; - features = [ "alloc" ]; - } - { - name = "http"; - packageId = "http 1.2.0"; - } - { - name = "http-body"; - packageId = "http-body 1.0.1"; - } - { - name = "http-body-util"; - packageId = "http-body-util"; - } - { - name = "mime"; - packageId = "mime 0.3.17"; - } - { - name = "pin-project-lite"; - packageId = "pin-project-lite"; - } - { - name = "rustversion"; - packageId = "rustversion"; - } - { - name = "sync_wrapper"; - packageId = "sync_wrapper 1.0.2"; - } - { - name = "tower-layer"; - packageId = "tower-layer"; - } - { - name = "tower-service"; - packageId = "tower-service"; - } - { - name = "tracing"; - packageId = "tracing"; - optional = true; - usesDefaultFeatures = false; - } - ]; - devDependencies = [ - { - name = "futures-util"; - packageId = "futures-util"; - usesDefaultFeatures = false; - features = [ "alloc" ]; - } - ]; - features = { - "__private_docs" = [ "dep:tower-http" ]; - "tracing" = [ "dep:tracing" ]; - }; - resolvedDefaultFeatures = [ "tracing" ]; - }; - "axum-macros" = rec { - crateName = "axum-macros"; - version = "0.4.2"; - edition = "2021"; - sha256 = "1klv77c889jm05bzayaaiinalarhvh2crc2w4nvp3l581xaj7lap"; - procMacro = true; - libName = "axum_macros"; - dependencies = [ - { - name = "proc-macro2"; - packageId = "proc-macro2"; - } - { - name = "quote"; - packageId = "quote"; - } - { - name = "syn"; - packageId = "syn 2.0.96"; - features = [ "full" "parsing" "extra-traits" ]; - } - ]; - devDependencies = [ - { - name = "syn"; - packageId = "syn 2.0.96"; - features = [ "full" "extra-traits" ]; - } - ]; - features = { - "__private" = [ "syn/visit-mut" ]; - }; - resolvedDefaultFeatures = [ "default" ]; - }; - "axum-test" = rec { - crateName = "axum-test"; - version = "16.4.1"; - edition = "2021"; - sha256 = "1p5qxacvxsagnqq30nr2wznjyhgb8svsfb925ah3d2b0s91s9qv3"; - libName = "axum_test"; - authors = [ - "Joseph Lenton " - ]; - dependencies = [ - { - name = "anyhow"; - packageId = "anyhow"; - } - { - name = "assert-json-diff"; - packageId = "assert-json-diff"; - } - { - name = "auto-future"; - packageId = "auto-future"; - } - { - name = "axum"; - packageId = "axum"; - } - { - name = "bytes"; - packageId = "bytes"; - } - { - name = "bytesize"; - packageId = "bytesize"; - } - { - name = "cookie"; - packageId = "cookie 0.18.1"; - } - { - name = "http"; - packageId = "http 1.2.0"; - } - { - name = "http-body-util"; - packageId = "http-body-util"; - } - { - name = "hyper"; - packageId = "hyper 1.5.2"; - features = [ "http1" ]; - } - { - name = "hyper-util"; - packageId = "hyper-util"; - features = [ "client" "http1" "client-legacy" ]; - } - { - name = "mime"; - packageId = "mime 0.3.17"; - } - { - name = "pretty_assertions"; - packageId = "pretty_assertions"; - optional = true; - } - { - name = "reserve-port"; - packageId = "reserve-port"; - } - { - name = "rust-multipart-rfc7578_2"; - packageId = "rust-multipart-rfc7578_2"; - } - { - name = "serde"; - packageId = "serde 1.0.217"; - } - { - name = "serde_json"; - packageId = "serde_json"; - } - { - name = "serde_urlencoded"; - packageId = "serde_urlencoded"; - } - { - name = "smallvec"; - packageId = "smallvec"; - } - { - name = "tokio"; - packageId = "tokio"; - features = [ "rt" ]; - } - { - name = "tower"; - packageId = "tower"; - features = [ "util" "make" ]; - } - { - name = "url"; - packageId = "url 2.5.4"; - } - ]; - devDependencies = [ - { - name = "axum"; - packageId = "axum"; - features = [ "multipart" "tokio" "ws" ]; - } - { - name = "tokio"; - packageId = "tokio"; - features = [ "rt" "rt-multi-thread" "sync" "time" "macros" ]; - } - ]; - features = { - "all" = [ "pretty-assertions" "yaml" "msgpack" "reqwest" "shuttle" "typed-routing" "ws" ]; - "default" = [ "pretty-assertions" ]; - "msgpack" = [ "dep:rmp-serde" ]; - "pretty-assertions" = [ "dep:pretty_assertions" ]; - "reqwest" = [ "dep:reqwest" ]; - "shuttle" = [ "dep:shuttle-axum" ]; - "typed-routing" = [ "dep:axum-extra" ]; - "ws" = [ "axum/ws" "tokio/time" "dep:uuid" "dep:base64" "dep:tokio-tungstenite" "dep:futures-util" ]; - "yaml" = [ "dep:serde_yaml" ]; - }; - resolvedDefaultFeatures = [ "default" "pretty-assertions" ]; - }; "az" = rec { crateName = "az"; version = "1.2.1"; @@ -2055,7 +1560,7 @@ rec { dependencies = [ { name = "serde"; - packageId = "serde 1.0.217"; + packageId = "serde 1.0.218"; optional = true; usesDefaultFeatures = false; } @@ -2199,19 +1704,6 @@ rec { }; resolvedDefaultFeatures = [ "default" "std" ]; }; - "bytesize" = rec { - crateName = "bytesize"; - version = "1.3.0"; - edition = "2015"; - sha256 = "1k3aak70iwz4s2gsjbxf0ws4xnixqbdz6p2ha96s06748fpniqx3"; - authors = [ - "Hyunsik Choi " - ]; - features = { - "serde" = [ "dep:serde" ]; - }; - resolvedDefaultFeatures = [ "default" ]; - }; "cairo-rs" = rec { crateName = "cairo-rs"; version = "0.18.5"; @@ -2434,7 +1926,7 @@ rec { } { name = "serde"; - packageId = "serde 1.0.217"; + packageId = "serde 1.0.218"; optional = true; usesDefaultFeatures = false; } @@ -2494,7 +1986,7 @@ rec { } { name = "serde"; - packageId = "serde 1.0.217"; + packageId = "serde 1.0.218"; optional = true; usesDefaultFeatures = false; } @@ -2615,10 +2107,10 @@ rec { }; "clap" = rec { crateName = "clap"; - version = "4.5.26"; + version = "4.5.30"; edition = "2021"; crateBin = []; - sha256 = "10v7qvn90calfbhap1c4r249i5c7fbxj09fn3szfz9pkis85xsx8"; + sha256 = "0vcyrn4ymq2gd56sl3xnfki8q8llg64sj3rj3qx33mgsf66v3dwj"; dependencies = [ { name = "clap_builder"; @@ -2647,6 +2139,7 @@ rec { "unicode" = [ "clap_builder/unicode" ]; "unstable-doc" = [ "clap_builder/unstable-doc" "derive" ]; "unstable-ext" = [ "clap_builder/unstable-ext" ]; + "unstable-markdown" = [ "clap_derive/unstable-markdown" ]; "unstable-styles" = [ "clap_builder/unstable-styles" ]; "unstable-v5" = [ "clap_builder/unstable-v5" "clap_derive?/unstable-v5" "deprecated" ]; "usage" = [ "clap_builder/usage" ]; @@ -2656,9 +2149,9 @@ rec { }; "clap_builder" = rec { crateName = "clap_builder"; - version = "4.5.26"; + version = "4.5.30"; edition = "2021"; - sha256 = "08f1mzcvi7zjhm7hvz6al4jnv70ccqhwiaq74hihlspwnl0iic4n"; + sha256 = "0369xis2ar46icsaxqyy37976mlb62alzyx4j53k99vq2w3v4pd3"; dependencies = [ { name = "anstream"; @@ -2695,9 +2188,9 @@ rec { }; "clap_derive" = rec { crateName = "clap_derive"; - version = "4.5.24"; + version = "4.5.28"; edition = "2021"; - sha256 = "131ih3dm76srkbpfx7zfspp9b556zgzj31wqhl0ji2b39lcmbdsl"; + sha256 = "1vgigkhljp3r8r5lwdrn1ij93nafmjwh8cx77nppb9plqsaysk5z"; procMacro = true; dependencies = [ { @@ -2720,6 +2213,7 @@ rec { ]; features = { "raw-deprecated" = [ "deprecated" ]; + "unstable-markdown" = [ "dep:pulldown-cmark" "dep:anstyle" ]; "unstable-v5" = [ "deprecated" ]; }; resolvedDefaultFeatures = [ "default" ]; @@ -2811,7 +2305,7 @@ rec { } { name = "serde"; - packageId = "serde 1.0.217"; + packageId = "serde 1.0.218"; features = [ "derive" ]; } { @@ -2887,7 +2381,7 @@ rec { "random" = [ "rand" ]; }; }; - "cookie 0.17.0" = rec { + "cookie" = rec { crateName = "cookie"; version = "0.17.0"; edition = "2018"; @@ -2926,45 +2420,6 @@ rec { "subtle" = [ "dep:subtle" ]; }; }; - "cookie 0.18.1" = rec { - crateName = "cookie"; - version = "0.18.1"; - edition = "2018"; - sha256 = "0iy749flficrlvgr3hjmf3igr738lk81n5akzf4ym4cs6cxg7pjd"; - authors = [ - "Sergio Benitez " - "Alex Crichton " - ]; - dependencies = [ - { - name = "time"; - packageId = "time 0.3.37"; - usesDefaultFeatures = false; - features = [ "std" "parsing" "formatting" "macros" ]; - } - ]; - buildDependencies = [ - { - name = "version_check"; - packageId = "version_check 0.9.5"; - } - ]; - features = { - "aes-gcm" = [ "dep:aes-gcm" ]; - "base64" = [ "dep:base64" ]; - "hkdf" = [ "dep:hkdf" ]; - "hmac" = [ "dep:hmac" ]; - "key-expansion" = [ "sha2" "hkdf" ]; - "percent-encode" = [ "percent-encoding" ]; - "percent-encoding" = [ "dep:percent-encoding" ]; - "private" = [ "aes-gcm" "base64" "rand" "subtle" ]; - "rand" = [ "dep:rand" ]; - "secure" = [ "private" "signed" "key-expansion" ]; - "sha2" = [ "dep:sha2" ]; - "signed" = [ "hmac" "sha2" "base64" "rand" "subtle" ]; - "subtle" = [ "dep:subtle" ]; - }; - }; "cookie-factory" = rec { crateName = "cookie-factory"; version = "0.3.3"; @@ -3325,7 +2780,7 @@ rec { } { name = "serde"; - packageId = "serde 1.0.217"; + packageId = "serde 1.0.218"; features = [ "derive" ]; } { @@ -3495,7 +2950,7 @@ rec { } { name = "serde"; - packageId = "serde 1.0.217"; + packageId = "serde 1.0.218"; features = [ "derive" ]; } { @@ -3626,16 +3081,6 @@ rec { }; resolvedDefaultFeatures = [ "alloc" "powerfmt" "std" ]; }; - "diff" = rec { - crateName = "diff"; - version = "0.1.13"; - edition = "2015"; - sha256 = "1j0nzjxci2zqx63hdcihkp0a4dkdmzxd7my4m7zk6cjyfy34j9an"; - authors = [ - "Utkarsh Kukreti " - ]; - - }; "digest" = rec { crateName = "digest"; version = "0.10.7"; @@ -3702,7 +3147,7 @@ rec { } { name = "serde"; - packageId = "serde 1.0.217"; + packageId = "serde 1.0.218"; optional = true; } { @@ -3742,7 +3187,7 @@ rec { } { name = "serde"; - packageId = "serde 1.0.217"; + packageId = "serde 1.0.218"; optional = true; } { @@ -3821,7 +3266,7 @@ rec { dependencies = [ { name = "serde"; - packageId = "serde 1.0.217"; + packageId = "serde 1.0.218"; optional = true; features = [ "derive" ]; } @@ -3857,7 +3302,7 @@ rec { } { name = "serde"; - packageId = "serde 1.0.217"; + packageId = "serde 1.0.218"; } { name = "serde_derive"; @@ -4145,33 +3590,6 @@ rec { ]; }; - "fallible-iterator" = rec { - crateName = "fallible-iterator"; - version = "0.3.0"; - edition = "2018"; - sha256 = "0ja6l56yka5vn4y4pk6hn88z0bpny7a8k1919aqjzp0j1yhy9k1a"; - libName = "fallible_iterator"; - authors = [ - "Steven Fackler " - ]; - features = { - "default" = [ "alloc" ]; - "std" = [ "alloc" ]; - }; - resolvedDefaultFeatures = [ "alloc" "default" ]; - }; - "fallible-streaming-iterator" = rec { - crateName = "fallible-streaming-iterator"; - version = "0.1.9"; - edition = "2015"; - sha256 = "0nj6j26p71bjy8h42x6jahx1hn0ng6mc2miwpgwnp8vnwqf4jq3k"; - libName = "fallible_streaming_iterator"; - authors = [ - "Steven Fackler " - ]; - features = { - }; - }; "fastrand" = rec { crateName = "fastrand"; version = "2.3.0"; @@ -4277,7 +3695,7 @@ rec { } { name = "cookie"; - packageId = "cookie 0.17.0"; + packageId = "cookie"; } { name = "futures-util"; @@ -4317,7 +3735,7 @@ rec { } { name = "serde"; - packageId = "serde 1.0.217"; + packageId = "serde 1.0.218"; features = [ "derive" ]; } { @@ -4841,7 +4259,7 @@ rec { } { name = "serde"; - packageId = "serde 1.0.217"; + packageId = "serde 1.0.218"; features = [ "derive" ]; } { @@ -5481,7 +4899,7 @@ rec { libName = "geo_types"; }; - "getrandom" = rec { + "getrandom 0.2.15" = rec { crateName = "getrandom"; version = "0.2.15"; edition = "2018"; @@ -5517,6 +4935,84 @@ rec { }; resolvedDefaultFeatures = [ "std" ]; }; + "getrandom 0.3.1" = rec { + crateName = "getrandom"; + version = "0.3.1"; + edition = "2021"; + sha256 = "1y154yzby383p63ndw6zpfm0fz3vf6c0zdwc7df6vkl150wrr923"; + authors = [ + "The Rand Project Developers" + ]; + dependencies = [ + { + name = "cfg-if"; + packageId = "cfg-if"; + } + { + name = "libc"; + packageId = "libc"; + usesDefaultFeatures = false; + target = { target, features }: ((("linux" == target."os") || ("android" == target."os")) && (!(("custom" == target."getrandom_backend") || ("rdrand" == target."getrandom_backend") || ("rndr" == target."getrandom_backend")))); + } + { + name = "libc"; + packageId = "libc"; + usesDefaultFeatures = false; + target = { target, features }: (("dragonfly" == target."os") || ("freebsd" == target."os") || ("hurd" == target."os") || ("illumos" == target."os") || (("horizon" == target."os") && ("arm" == target."arch"))); + } + { + name = "libc"; + packageId = "libc"; + usesDefaultFeatures = false; + target = { target, features }: (("haiku" == target."os") || ("redox" == target."os") || ("nto" == target."os") || ("aix" == target."os")); + } + { + name = "libc"; + packageId = "libc"; + usesDefaultFeatures = false; + target = { target, features }: (("ios" == target."os") || ("visionos" == target."os") || ("watchos" == target."os") || ("tvos" == target."os")); + } + { + name = "libc"; + packageId = "libc"; + usesDefaultFeatures = false; + target = { target, features }: (("macos" == target."os") || ("openbsd" == target."os") || ("vita" == target."os") || ("emscripten" == target."os")); + } + { + name = "libc"; + packageId = "libc"; + usesDefaultFeatures = false; + target = { target, features }: ("netbsd" == target."os"); + } + { + name = "libc"; + packageId = "libc"; + usesDefaultFeatures = false; + target = { target, features }: ("solaris" == target."os"); + } + { + name = "libc"; + packageId = "libc"; + usesDefaultFeatures = false; + target = { target, features }: ("vxworks" == target."os"); + } + { + name = "wasi"; + packageId = "wasi 0.13.3+wasi-0.2.2"; + usesDefaultFeatures = false; + target = { target, features }: (("wasm32" == target."arch") && ("wasi" == target."os") && ("p2" == target."env")); + } + { + name = "windows-targets"; + packageId = "windows-targets 0.52.6"; + target = { target, features }: ((target."windows" or false) && (!("win7" == target."vendor"))); + } + ]; + features = { + "rustc-dep-of-std" = [ "dep:compiler_builtins" "dep:core" ]; + "wasm_js" = [ "dep:wasm-bindgen" "dep:js-sys" ]; + }; + }; "gif 0.11.4" = rec { crateName = "gif"; version = "0.11.4"; @@ -5868,7 +5364,7 @@ rec { } { name = "proc-macro-crate"; - packageId = "proc-macro-crate 2.0.2"; + packageId = "proc-macro-crate 2.0.0"; } { name = "proc-macro-error"; @@ -6027,7 +5523,7 @@ rec { } { name = "serde"; - packageId = "serde 1.0.217"; + packageId = "serde 1.0.218"; } { name = "serde_json"; @@ -6075,7 +5571,7 @@ rec { } { name = "serde"; - packageId = "serde 1.0.217"; + packageId = "serde 1.0.218"; features = [ "alloc" "derive" ]; } { @@ -6642,39 +6138,7 @@ rec { }; resolvedDefaultFeatures = [ "alloc" "default" "std" ]; }; - "hashbrown 0.14.5" = rec { - crateName = "hashbrown"; - version = "0.14.5"; - edition = "2021"; - sha256 = "1wa1vy1xs3mp11bn3z9dv0jricgr6a2j0zkf1g19yz3vw4il89z5"; - authors = [ - "Amanieu d'Antras " - ]; - dependencies = [ - { - name = "ahash"; - packageId = "ahash"; - optional = true; - usesDefaultFeatures = false; - } - ]; - features = { - "ahash" = [ "dep:ahash" ]; - "alloc" = [ "dep:alloc" ]; - "allocator-api2" = [ "dep:allocator-api2" ]; - "compiler_builtins" = [ "dep:compiler_builtins" ]; - "core" = [ "dep:core" ]; - "default" = [ "ahash" "inline-more" "allocator-api2" ]; - "equivalent" = [ "dep:equivalent" ]; - "nightly" = [ "allocator-api2?/nightly" "bumpalo/allocator_api" ]; - "rayon" = [ "dep:rayon" ]; - "rkyv" = [ "dep:rkyv" ]; - "rustc-dep-of-std" = [ "nightly" "core" "compiler_builtins" "alloc" "rustc-internal-api" ]; - "serde" = [ "dep:serde" ]; - }; - resolvedDefaultFeatures = [ "ahash" "inline-more" ]; - }; - "hashbrown 0.15.2" = rec { + "hashbrown" = rec { crateName = "hashbrown"; version = "0.15.2"; edition = "2021"; @@ -6718,7 +6182,7 @@ rec { }; resolvedDefaultFeatures = [ "allocator-api2" "default" "default-hasher" "equivalent" "inline-more" "raw-entry" ]; }; - "hashlink 0.10.0" = rec { + "hashlink" = rec { crateName = "hashlink"; version = "0.10.0"; edition = "2018"; @@ -6729,7 +6193,7 @@ rec { dependencies = [ { name = "hashbrown"; - packageId = "hashbrown 0.15.2"; + packageId = "hashbrown"; usesDefaultFeatures = false; features = [ "default-hasher" "inline-more" ]; } @@ -6739,27 +6203,6 @@ rec { "serde_impl" = [ "serde" ]; }; }; - "hashlink 0.9.1" = rec { - crateName = "hashlink"; - version = "0.9.1"; - edition = "2018"; - sha256 = "1byq4nyrflm5s6wdx5qwp96l1qbp2d0nljvrr5yqrsfy51qzz93b"; - authors = [ - "kyren " - ]; - dependencies = [ - { - name = "hashbrown"; - packageId = "hashbrown 0.14.5"; - usesDefaultFeatures = false; - features = [ "ahash" "inline-more" ]; - } - ]; - features = { - "serde" = [ "dep:serde" ]; - "serde_impl" = [ "serde" ]; - }; - }; "headers" = rec { crateName = "headers"; version = "0.3.9"; @@ -7073,7 +6516,7 @@ rec { }; resolvedDefaultFeatures = [ "default" "std" ]; }; - "http-body 0.4.6" = rec { + "http-body" = rec { crateName = "http-body"; version = "0.4.6"; edition = "2018"; @@ -7099,65 +6542,6 @@ rec { } ]; - }; - "http-body 1.0.1" = rec { - crateName = "http-body"; - version = "1.0.1"; - edition = "2018"; - sha256 = "111ir5k2b9ihz5nr9cz7cwm7fnydca7dx4hc7vr16scfzghxrzhy"; - libName = "http_body"; - authors = [ - "Carl Lerche " - "Lucio Franco " - "Sean McArthur " - ]; - dependencies = [ - { - name = "bytes"; - packageId = "bytes"; - } - { - name = "http"; - packageId = "http 1.2.0"; - } - ]; - - }; - "http-body-util" = rec { - crateName = "http-body-util"; - version = "0.1.2"; - edition = "2018"; - sha256 = "0kslwazg4400qnc2azkrgqqci0fppv12waicnsy5d8hncvbjjd3r"; - libName = "http_body_util"; - authors = [ - "Carl Lerche " - "Lucio Franco " - "Sean McArthur " - ]; - dependencies = [ - { - name = "bytes"; - packageId = "bytes"; - } - { - name = "futures-util"; - packageId = "futures-util"; - usesDefaultFeatures = false; - } - { - name = "http"; - packageId = "http 1.2.0"; - } - { - name = "http-body"; - packageId = "http-body 1.0.1"; - } - { - name = "pin-project-lite"; - packageId = "pin-project-lite"; - } - ]; - }; "httparse" = rec { crateName = "httparse"; @@ -7288,7 +6672,7 @@ rec { } { name = "http-body"; - packageId = "http-body 0.4.6"; + packageId = "http-body"; } { name = "httparse"; @@ -7357,108 +6741,6 @@ rec { }; resolvedDefaultFeatures = [ "client" "default" "h2" "http1" "http2" "runtime" "server" "socket2" "stream" "tcp" ]; }; - "hyper 1.5.2" = rec { - crateName = "hyper"; - version = "1.5.2"; - edition = "2021"; - sha256 = "1q7akfb443yrjzkmnnbp2vs8zi15hgbk466rr4y144v4ppabhvr5"; - authors = [ - "Sean McArthur " - ]; - dependencies = [ - { - name = "bytes"; - packageId = "bytes"; - } - { - name = "futures-channel"; - packageId = "futures-channel"; - optional = true; - } - { - name = "futures-util"; - packageId = "futures-util"; - optional = true; - usesDefaultFeatures = false; - } - { - name = "http"; - packageId = "http 1.2.0"; - } - { - name = "http-body"; - packageId = "http-body 1.0.1"; - } - { - name = "httparse"; - packageId = "httparse"; - optional = true; - } - { - name = "httpdate"; - packageId = "httpdate"; - optional = true; - } - { - name = "itoa"; - packageId = "itoa"; - optional = true; - } - { - name = "pin-project-lite"; - packageId = "pin-project-lite"; - optional = true; - } - { - name = "smallvec"; - packageId = "smallvec"; - optional = true; - features = [ "const_generics" "const_new" ]; - } - { - name = "tokio"; - packageId = "tokio"; - features = [ "sync" ]; - } - { - name = "want"; - packageId = "want"; - optional = true; - } - ]; - devDependencies = [ - { - name = "futures-channel"; - packageId = "futures-channel"; - features = [ "sink" ]; - } - { - name = "futures-util"; - packageId = "futures-util"; - usesDefaultFeatures = false; - features = [ "alloc" "sink" ]; - } - { - name = "pin-project-lite"; - packageId = "pin-project-lite"; - } - { - name = "tokio"; - packageId = "tokio"; - features = [ "fs" "macros" "net" "io-std" "io-util" "rt" "rt-multi-thread" "sync" "time" "test-util" ]; - } - ]; - features = { - "client" = [ "dep:want" "dep:pin-project-lite" "dep:smallvec" ]; - "ffi" = [ "dep:http-body-util" "futures-util?/alloc" ]; - "full" = [ "client" "http1" "http2" "server" ]; - "http1" = [ "dep:futures-channel" "dep:futures-util" "dep:httparse" "dep:itoa" ]; - "http2" = [ "dep:futures-channel" "dep:futures-util" "dep:h2" ]; - "server" = [ "dep:httpdate" "dep:pin-project-lite" "dep:smallvec" ]; - "tracing" = [ "dep:tracing" ]; - }; - resolvedDefaultFeatures = [ "client" "default" "http1" "server" ]; - }; "hyper-tls" = rec { crateName = "hyper-tls"; version = "0.5.0"; @@ -7509,101 +6791,6 @@ rec { "vendored" = [ "native-tls/vendored" ]; }; }; - "hyper-util" = rec { - crateName = "hyper-util"; - version = "0.1.10"; - edition = "2021"; - sha256 = "1d1iwrkysjhq63pg54zk3vfby1j7zmxzm9zzyfr4lwvp0szcybfz"; - libName = "hyper_util"; - authors = [ - "Sean McArthur " - ]; - dependencies = [ - { - name = "bytes"; - packageId = "bytes"; - } - { - name = "futures-channel"; - packageId = "futures-channel"; - optional = true; - } - { - name = "futures-util"; - packageId = "futures-util"; - usesDefaultFeatures = false; - } - { - name = "http"; - packageId = "http 1.2.0"; - } - { - name = "http-body"; - packageId = "http-body 1.0.1"; - } - { - name = "hyper"; - packageId = "hyper 1.5.2"; - } - { - name = "pin-project-lite"; - packageId = "pin-project-lite"; - } - { - name = "socket2"; - packageId = "socket2"; - optional = true; - features = [ "all" ]; - } - { - name = "tokio"; - packageId = "tokio"; - optional = true; - usesDefaultFeatures = false; - } - { - name = "tower-service"; - packageId = "tower-service"; - optional = true; - } - { - name = "tracing"; - packageId = "tracing"; - optional = true; - usesDefaultFeatures = false; - features = [ "std" ]; - } - ]; - devDependencies = [ - { - name = "bytes"; - packageId = "bytes"; - } - { - name = "hyper"; - packageId = "hyper 1.5.2"; - features = [ "full" ]; - } - { - name = "tokio"; - packageId = "tokio"; - features = [ "macros" "test-util" "signal" ]; - } - ]; - features = { - "client" = [ "hyper/client" "dep:tracing" "dep:futures-channel" "dep:tower-service" ]; - "client-legacy" = [ "client" "dep:socket2" "tokio/sync" ]; - "full" = [ "client" "client-legacy" "server" "server-auto" "server-graceful" "service" "http1" "http2" "tokio" ]; - "http1" = [ "hyper/http1" ]; - "http2" = [ "hyper/http2" ]; - "server" = [ "hyper/server" ]; - "server-auto" = [ "server" "http1" "http2" ]; - "server-graceful" = [ "server" "tokio/sync" "futures-util/alloc" ]; - "service" = [ "dep:tower-service" ]; - "tokio" = [ "dep:tokio" "tokio/net" "tokio/rt" "tokio/time" ]; - }; - resolvedDefaultFeatures = [ "client" "client-legacy" "default" "http1" "server" "service" "tokio" ]; - }; "iana-time-zone" = rec { crateName = "iana-time-zone"; version = "0.1.61"; @@ -7766,6 +6953,13 @@ rec { usesDefaultFeatures = false; features = [ "alloc" ]; } + { + name = "serde"; + packageId = "serde 1.0.218"; + optional = true; + usesDefaultFeatures = false; + features = [ "alloc" "derive" ]; + } { name = "tinystr"; packageId = "tinystr"; @@ -7784,13 +6978,21 @@ rec { usesDefaultFeatures = false; } ]; + devDependencies = [ + { + name = "serde"; + packageId = "serde 1.0.218"; + usesDefaultFeatures = false; + features = [ "derive" ]; + } + ]; features = { "bench" = [ "serde" ]; "databake" = [ "dep:databake" ]; "serde" = [ "dep:serde" "tinystr/serde" ]; "zerovec" = [ "dep:zerovec" ]; }; - resolvedDefaultFeatures = [ "zerovec" ]; + resolvedDefaultFeatures = [ "serde" "zerovec" ]; }; "icu_locid_transform" = rec { crateName = "icu_locid_transform"; @@ -8369,49 +7571,6 @@ rec { }; resolvedDefaultFeatures = [ "bmp" "dds" "default" "dxt" "exr" "farbfeld" "gif" "hdr" "ico" "jpeg" "jpeg_rayon" "openexr" "png" "pnm" "qoi" "tga" "tiff" "webp" ]; }; - "include_dir" = rec { - crateName = "include_dir"; - version = "0.7.4"; - edition = "2021"; - sha256 = "1pfh3g45z88kwq93skng0n6g3r7zkhq9ldqs9y8rvr7i11s12gcj"; - authors = [ - "Michael Bryan " - ]; - dependencies = [ - { - name = "include_dir_macros"; - packageId = "include_dir_macros"; - } - ]; - features = { - "glob" = [ "dep:glob" ]; - "metadata" = [ "include_dir_macros/metadata" ]; - "nightly" = [ "include_dir_macros/nightly" ]; - }; - resolvedDefaultFeatures = [ "default" ]; - }; - "include_dir_macros" = rec { - crateName = "include_dir_macros"; - version = "0.7.4"; - edition = "2021"; - sha256 = "0x8smnf6knd86g69p19z5lpfsaqp8w0nx14kdpkz1m8bxnkqbavw"; - procMacro = true; - authors = [ - "Michael Bryan " - ]; - dependencies = [ - { - name = "proc-macro2"; - packageId = "proc-macro2"; - } - { - name = "quote"; - packageId = "quote"; - } - ]; - features = { - }; - }; "indent_write" = rec { crateName = "indent_write"; version = "2.2.0"; @@ -8437,7 +7596,7 @@ rec { } { name = "hashbrown"; - packageId = "hashbrown 0.15.2"; + packageId = "hashbrown"; usesDefaultFeatures = false; } ]; @@ -8732,6 +7891,67 @@ rec { } ]; + }; + "l10n-db" = rec { + crateName = "l10n-db"; + version = "0.1.0"; + edition = "2021"; + crateBin = [ + { + name = "main"; + path = "src/bin/main.rs"; + requiredFeatures = [ ]; + } + ]; + # We can't filter paths with references in Nix 2.4 + # See https://github.com/NixOS/nix/issues/5410 + src = if ((lib.versionOlder builtins.nixVersion "2.4pre20211007") || (lib.versionOlder "2.5" builtins.nixVersion )) + then lib.cleanSourceWith { filter = sourceFilter; src = ./l10n-db; } + else ./l10n-db; + libName = "l10n_db"; + dependencies = [ + { + name = "chrono"; + packageId = "chrono"; + features = [ "serde" ]; + } + { + name = "clap"; + packageId = "clap"; + features = [ "derive" ]; + } + { + name = "icu_locid"; + packageId = "icu_locid"; + features = [ "serde" ]; + } + { + name = "serde"; + packageId = "serde 1.0.218"; + features = [ "derive" ]; + } + { + name = "serde_json"; + packageId = "serde_json"; + } + { + name = "tempfile"; + packageId = "tempfile"; + } + { + name = "thiserror"; + packageId = "thiserror 2.0.11"; + } + { + name = "toml"; + packageId = "toml"; + } + { + name = "xml-rs"; + packageId = "xml-rs"; + } + ]; + }; "language-tags" = rec { crateName = "language-tags"; @@ -9090,7 +8310,7 @@ rec { "syn" = [ "dep:syn" ]; "vcpkg" = [ "dep:vcpkg" ]; }; - resolvedDefaultFeatures = [ "bundled" "bundled_bindings" "cc" "default" "min_sqlite_version_3_14_0" "pkg-config" "unlock_notify" "vcpkg" ]; + resolvedDefaultFeatures = [ "bundled" "bundled_bindings" "cc" "pkg-config" "unlock_notify" "vcpkg" ]; }; "libyml" = rec { crateName = "libyml"; @@ -9308,18 +8528,6 @@ rec { libPath = "lib.rs"; }; - "matchit" = rec { - crateName = "matchit"; - version = "0.7.3"; - edition = "2021"; - sha256 = "156bgdmmlv4crib31qhgg49nsjk88dxkdqp80ha2pk2rk6n6ax0f"; - authors = [ - "Ibraheem Ahmed " - ]; - features = { - }; - resolvedDefaultFeatures = [ "default" ]; - }; "md-5" = rec { crateName = "md-5"; version = "0.10.6"; @@ -9412,7 +8620,7 @@ rec { } { name = "serde"; - packageId = "serde 1.0.217"; + packageId = "serde 1.0.218"; } { name = "serde_derive"; @@ -10383,7 +9591,7 @@ rec { } { name = "serde"; - packageId = "serde 1.0.217"; + packageId = "serde 1.0.218"; features = [ "derive" ]; } { @@ -11349,31 +10557,6 @@ rec { }; resolvedDefaultFeatures = [ "simd" "std" ]; }; - "pretty_assertions" = rec { - crateName = "pretty_assertions"; - version = "1.4.1"; - edition = "2018"; - sha256 = "0v8iq35ca4rw3rza5is3wjxwsf88303ivys07anc5yviybi31q9s"; - authors = [ - "Colin Kiegel " - "Florent Fayolle " - "Tom Milligan " - ]; - dependencies = [ - { - name = "diff"; - packageId = "diff"; - } - { - name = "yansi"; - packageId = "yansi"; - } - ]; - features = { - "default" = [ "std" ]; - }; - resolvedDefaultFeatures = [ "default" "std" ]; - }; "pretty_env_logger" = rec { crateName = "pretty_env_logger"; version = "0.5.0"; @@ -11415,20 +10598,16 @@ rec { ]; }; - "proc-macro-crate 2.0.2" = rec { + "proc-macro-crate 2.0.0" = rec { crateName = "proc-macro-crate"; - version = "2.0.2"; + version = "2.0.0"; edition = "2021"; - sha256 = "092x5acqnic14cw6vacqap5kgknq3jn4c6jij9zi6j85839jc3xh"; + sha256 = "1s23imns07vmacn2xjd5hv2h6rr94iqq3fd2frwa6i4h2nk6d0vy"; libName = "proc_macro_crate"; authors = [ "Bastian Köcher " ]; dependencies = [ - { - name = "toml_datetime"; - packageId = "toml_datetime"; - } { name = "toml_edit"; packageId = "toml_edit 0.20.2"; @@ -11962,7 +11141,7 @@ rec { dependencies = [ { name = "getrandom"; - packageId = "getrandom"; + packageId = "getrandom 0.2.15"; optional = true; } ]; @@ -12447,7 +11626,7 @@ rec { } { name = "http-body"; - packageId = "http-body 0.4.6"; + packageId = "http-body"; target = { target, features }: (!("wasm32" == target."arch")); } { @@ -12513,7 +11692,7 @@ rec { } { name = "serde"; - packageId = "serde 1.0.217"; + packageId = "serde 1.0.218"; } { name = "serde_json"; @@ -12531,7 +11710,7 @@ rec { } { name = "sync_wrapper"; - packageId = "sync_wrapper 0.1.2"; + packageId = "sync_wrapper"; } { name = "system-configuration"; @@ -12598,7 +11777,7 @@ rec { } { name = "serde"; - packageId = "serde 1.0.217"; + packageId = "serde 1.0.218"; target = {target, features}: (!("wasm32" == target."arch")); features = [ "derive" ]; } @@ -12664,27 +11843,6 @@ rec { }; resolvedDefaultFeatures = [ "__tls" "default" "default-tls" "hyper-tls" "json" "native-tls-crate" "serde_json" "tokio-native-tls" ]; }; - "reserve-port" = rec { - crateName = "reserve-port"; - version = "2.0.1"; - edition = "2021"; - sha256 = "10x21rdb1hjzp6n5flbbw3hfd7brmirckz1q0zsf3a7s5d516f4q"; - libName = "reserve_port"; - authors = [ - "Joseph Lenton " - ]; - dependencies = [ - { - name = "lazy_static"; - packageId = "lazy_static"; - } - { - name = "thiserror"; - packageId = "thiserror 1.0.69"; - } - ]; - - }; "result-extended" = rec { crateName = "result-extended"; version = "0.1.0"; @@ -12803,158 +11961,6 @@ rec { }; resolvedDefaultFeatures = [ "default" "pem" "std" "u64_digit" ]; }; - "rusqlite" = rec { - crateName = "rusqlite"; - version = "0.32.1"; - edition = "2021"; - sha256 = "0vlx040bppl414pbjgbp7qr4jdxwszi9krx0m63zzf2f2whvflvp"; - authors = [ - "The rusqlite developers" - ]; - dependencies = [ - { - name = "bitflags"; - packageId = "bitflags 2.8.0"; - } - { - name = "fallible-iterator"; - packageId = "fallible-iterator"; - } - { - name = "fallible-streaming-iterator"; - packageId = "fallible-streaming-iterator"; - } - { - name = "hashlink"; - packageId = "hashlink 0.9.1"; - } - { - name = "libsqlite3-sys"; - packageId = "libsqlite3-sys"; - } - { - name = "smallvec"; - packageId = "smallvec"; - } - ]; - features = { - "array" = [ "vtab" ]; - "buildtime_bindgen" = [ "libsqlite3-sys/buildtime_bindgen" ]; - "bundled" = [ "libsqlite3-sys/bundled" "modern_sqlite" ]; - "bundled-full" = [ "modern-full" "bundled" ]; - "bundled-sqlcipher" = [ "libsqlite3-sys/bundled-sqlcipher" "bundled" ]; - "bundled-sqlcipher-vendored-openssl" = [ "libsqlite3-sys/bundled-sqlcipher-vendored-openssl" "bundled-sqlcipher" ]; - "bundled-windows" = [ "libsqlite3-sys/bundled-windows" ]; - "chrono" = [ "dep:chrono" ]; - "csv" = [ "dep:csv" ]; - "csvtab" = [ "csv" "vtab" ]; - "in_gecko" = [ "modern_sqlite" "libsqlite3-sys/in_gecko" ]; - "loadable_extension" = [ "libsqlite3-sys/loadable_extension" ]; - "modern-full" = [ "array" "backup" "blob" "modern_sqlite" "chrono" "collation" "column_decltype" "csvtab" "extra_check" "functions" "hooks" "i128_blob" "limits" "load_extension" "serde_json" "series" "time" "trace" "unlock_notify" "url" "uuid" "vtab" "window" ]; - "modern_sqlite" = [ "libsqlite3-sys/bundled_bindings" ]; - "preupdate_hook" = [ "libsqlite3-sys/preupdate_hook" "hooks" ]; - "rusqlite-macros" = [ "dep:rusqlite-macros" ]; - "serde_json" = [ "dep:serde_json" ]; - "serialize" = [ "modern_sqlite" ]; - "series" = [ "vtab" ]; - "session" = [ "libsqlite3-sys/session" "hooks" ]; - "sqlcipher" = [ "libsqlite3-sys/sqlcipher" ]; - "time" = [ "dep:time" ]; - "unlock_notify" = [ "libsqlite3-sys/unlock_notify" ]; - "url" = [ "dep:url" ]; - "uuid" = [ "dep:uuid" ]; - "wasm32-wasi-vfs" = [ "libsqlite3-sys/wasm32-wasi-vfs" ]; - "window" = [ "functions" ]; - "with-asan" = [ "libsqlite3-sys/with-asan" ]; - }; - }; - "rusqlite_migration" = rec { - crateName = "rusqlite_migration"; - version = "1.3.1"; - edition = "2021"; - sha256 = "076dm65g0sngzrb93r07va4l5zl3gjx9gq5mlsh21p7p0bl44fwj"; - authors = [ - "Clément Joly " - ]; - dependencies = [ - { - name = "include_dir"; - packageId = "include_dir"; - optional = true; - } - { - name = "log"; - packageId = "log 0.4.25"; - } - { - name = "rusqlite"; - packageId = "rusqlite"; - usesDefaultFeatures = false; - } - ]; - features = { - "alpha-async-tokio-rusqlite" = [ "dep:tokio-rusqlite" "dep:tokio" ]; - "from-directory" = [ "dep:include_dir" ]; - }; - resolvedDefaultFeatures = [ "default" "from-directory" ]; - }; - "rust-multipart-rfc7578_2" = rec { - crateName = "rust-multipart-rfc7578_2"; - version = "0.6.1"; - edition = "2021"; - sha256 = "0mwd3i2mk91n6diaxnkw28vyjbifhrm5ls73pcpfzz8a1i0lidq3"; - libName = "rust_multipart_rfc7578_2"; - authors = [ - "Joseph Lenton " - "Ferris Tseng " - ]; - dependencies = [ - { - name = "bytes"; - packageId = "bytes"; - } - { - name = "futures-core"; - packageId = "futures-core"; - } - { - name = "futures-util"; - packageId = "futures-util"; - usesDefaultFeatures = false; - features = [ "io" ]; - } - { - name = "http"; - packageId = "http 0.2.12"; - } - { - name = "mime"; - packageId = "mime 0.3.17"; - } - { - name = "mime_guess"; - packageId = "mime_guess 2.0.5"; - } - { - name = "rand"; - packageId = "rand 0.8.5"; - features = [ "small_rng" ]; - } - { - name = "thiserror"; - packageId = "thiserror 1.0.69"; - } - ]; - devDependencies = [ - { - name = "futures-util"; - packageId = "futures-util"; - usesDefaultFeatures = false; - features = [ "std" ]; - } - ]; - - }; "rustc-demangle" = rec { crateName = "rustc-demangle"; version = "0.1.24"; @@ -13422,11 +12428,11 @@ rec { }; resolvedDefaultFeatures = [ "default" "std" ]; }; - "serde 1.0.217" = rec { + "serde 1.0.218" = rec { crateName = "serde"; - version = "1.0.217"; + version = "1.0.218"; edition = "2018"; - sha256 = "0w2ck1p1ajmrv1cf51qf7igjn2nc51r0izzc00fzmmhkvxjl5z02"; + sha256 = "0q6z4bnrwagnms0bds4886711l6mc68s979i49zd3xnvkg8wkpz8"; authors = [ "Erick Tryzelaar " "David Tolnay " @@ -13458,9 +12464,9 @@ rec { }; "serde_derive" = rec { crateName = "serde_derive"; - version = "1.0.217"; + version = "1.0.218"; edition = "2015"; - sha256 = "180r3rj5gi5s1m23q66cr5wlfgc5jrs6n1mdmql2njnhk37zg6ss"; + sha256 = "0azqd74xbpb1v5vf6w1fdbgmwp39ljjfj25cib5rgrzlj7hh75gh"; procMacro = true; authors = [ "Erick Tryzelaar " @@ -13492,9 +12498,9 @@ rec { }; "serde_json" = rec { crateName = "serde_json"; - version = "1.0.136"; + version = "1.0.139"; edition = "2021"; - sha256 = "1lipcjhh1zazh283i4wsl4l14knh81q2rlkwmag8v8s2rwihqsik"; + sha256 = "19kj3irpa22a7djz1jaf4wambzh7psiqa6zyafqnb76crhx6ry24"; authors = [ "Erick Tryzelaar " "David Tolnay " @@ -13515,14 +12521,14 @@ rec { } { name = "serde"; - packageId = "serde 1.0.217"; + packageId = "serde 1.0.218"; usesDefaultFeatures = false; } ]; devDependencies = [ { name = "serde"; - packageId = "serde 1.0.217"; + packageId = "serde 1.0.218"; features = [ "derive" ]; } ]; @@ -13535,26 +12541,6 @@ rec { }; resolvedDefaultFeatures = [ "default" "raw_value" "std" ]; }; - "serde_path_to_error" = rec { - crateName = "serde_path_to_error"; - version = "0.1.16"; - edition = "2021"; - sha256 = "19hlz2359l37ifirskpcds7sxg0gzpqvfilibs7whdys0128i6dg"; - authors = [ - "David Tolnay " - ]; - dependencies = [ - { - name = "itoa"; - packageId = "itoa"; - } - { - name = "serde"; - packageId = "serde 1.0.217"; - } - ]; - - }; "serde_spanned" = rec { crateName = "serde_spanned"; version = "0.6.8"; @@ -13563,14 +12549,14 @@ rec { dependencies = [ { name = "serde"; - packageId = "serde 1.0.217"; + packageId = "serde 1.0.218"; optional = true; } ]; devDependencies = [ { name = "serde"; - packageId = "serde 1.0.217"; + packageId = "serde 1.0.218"; } ]; features = { @@ -13601,7 +12587,7 @@ rec { } { name = "serde"; - packageId = "serde 1.0.217"; + packageId = "serde 1.0.218"; } ]; @@ -13638,7 +12624,7 @@ rec { } { name = "serde"; - packageId = "serde 1.0.217"; + packageId = "serde 1.0.218"; } ]; buildDependencies = [ @@ -13650,7 +12636,7 @@ rec { devDependencies = [ { name = "serde"; - packageId = "serde 1.0.217"; + packageId = "serde 1.0.218"; features = [ "derive" ]; } ]; @@ -13658,6 +12644,24 @@ rec { }; resolvedDefaultFeatures = [ "default" ]; }; + "server" = rec { + crateName = "server"; + version = "0.1.0"; + edition = "2021"; + crateBin = [ + { + name = "server"; + path = "src/main.rs"; + requiredFeatures = [ ]; + } + ]; + # We can't filter paths with references in Nix 2.4 + # See https://github.com/NixOS/nix/issues/5410 + src = if ((lib.versionOlder builtins.nixVersion "2.4pre20211007") || (lib.versionOlder "2.5" builtins.nixVersion )) + then lib.cleanSourceWith { filter = sourceFilter; src = ./visions/server; } + else ./visions/server; + + }; "sgf" = rec { crateName = "sgf"; version = "0.1.0"; @@ -13690,7 +12694,7 @@ rec { } { name = "serde"; - packageId = "serde 1.0.217"; + packageId = "serde 1.0.218"; features = [ "derive" ]; } { @@ -13992,7 +12996,7 @@ rec { dependencies = [ { name = "serde"; - packageId = "serde 1.0.217"; + packageId = "serde 1.0.218"; optional = true; usesDefaultFeatures = false; } @@ -14245,11 +13249,11 @@ rec { } { name = "hashbrown"; - packageId = "hashbrown 0.15.2"; + packageId = "hashbrown"; } { name = "hashlink"; - packageId = "hashlink 0.10.0"; + packageId = "hashlink"; } { name = "indexmap"; @@ -14275,7 +13279,7 @@ rec { } { name = "serde"; - packageId = "serde 1.0.217"; + packageId = "serde 1.0.218"; optional = true; features = [ "derive" "rc" ]; } @@ -14478,7 +13482,7 @@ rec { } { name = "serde"; - packageId = "serde 1.0.217"; + packageId = "serde 1.0.218"; features = [ "derive" ]; } { @@ -14697,7 +13701,7 @@ rec { } { name = "serde"; - packageId = "serde 1.0.217"; + packageId = "serde 1.0.218"; optional = true; } { @@ -14864,7 +13868,7 @@ rec { } { name = "serde"; - packageId = "serde 1.0.217"; + packageId = "serde 1.0.218"; features = [ "derive" ]; } { @@ -14986,7 +13990,7 @@ rec { } { name = "serde"; - packageId = "serde 1.0.217"; + packageId = "serde 1.0.218"; optional = true; features = [ "derive" ]; } @@ -15152,7 +14156,7 @@ rec { }; resolvedDefaultFeatures = [ "clone-impls" "default" "derive" "extra-traits" "fold" "full" "parsing" "printing" "proc-macro" "visit" "visit-mut" ]; }; - "sync_wrapper 0.1.2" = rec { + "sync_wrapper" = rec { crateName = "sync_wrapper"; version = "0.1.2"; edition = "2018"; @@ -15165,19 +14169,6 @@ rec { "futures-core" = [ "dep:futures-core" ]; }; }; - "sync_wrapper 1.0.2" = rec { - crateName = "sync_wrapper"; - version = "1.0.2"; - edition = "2021"; - sha256 = "0qvjyasd6w18mjg5xlaq5jgy84jsjfsvmnn12c13gypxbv75dwhb"; - authors = [ - "Actyx AG " - ]; - features = { - "futures" = [ "futures-core" ]; - "futures-core" = [ "dep:futures-core" ]; - }; - }; "synstructure" = rec { crateName = "synstructure"; version = "0.13.1"; @@ -15330,9 +14321,9 @@ rec { }; "tempfile" = rec { crateName = "tempfile"; - version = "3.15.0"; + version = "3.17.1"; edition = "2021"; - sha256 = "016pmkbwn3shas44gcwq1kc9lajalb90qafhiip5fvv8h6f5b2ls"; + sha256 = "0c52ggq5vy5mzgk5ly36cgzs1cig3cv6r1jarijmzxgkn6na1r92"; authors = [ "Steven Allen " "The Rust Project Developers" @@ -15350,7 +14341,7 @@ rec { } { name = "getrandom"; - packageId = "getrandom"; + packageId = "getrandom 0.3.1"; optional = true; usesDefaultFeatures = false; target = { target, features }: ((target."unix" or false) || (target."windows" or false) || ("wasi" == target."os")); @@ -15613,7 +14604,7 @@ rec { } { name = "serde"; - packageId = "serde 1.0.217"; + packageId = "serde 1.0.218"; optional = true; usesDefaultFeatures = false; } @@ -15634,7 +14625,7 @@ rec { } { name = "serde"; - packageId = "serde 1.0.217"; + packageId = "serde 1.0.218"; usesDefaultFeatures = false; features = [ "derive" ]; } @@ -15734,6 +14725,13 @@ rec { packageId = "displaydoc"; usesDefaultFeatures = false; } + { + name = "serde"; + packageId = "serde 1.0.218"; + optional = true; + usesDefaultFeatures = false; + features = [ "alloc" ]; + } { name = "zerovec"; packageId = "zerovec"; @@ -15747,7 +14745,7 @@ rec { "serde" = [ "dep:serde" ]; "zerovec" = [ "dep:zerovec" ]; }; - resolvedDefaultFeatures = [ "alloc" "default" "zerovec" ]; + resolvedDefaultFeatures = [ "alloc" "default" "serde" "zerovec" ]; }; "tinyvec" = rec { crateName = "tinyvec"; @@ -16109,16 +15107,16 @@ rec { }; "toml" = rec { crateName = "toml"; - version = "0.8.2"; + version = "0.8.20"; edition = "2021"; - sha256 = "0g9ysjaqvm2mv8q85xpqfn7hi710hj24sd56k49wyddvvyq8lp8q"; + sha256 = "0j012b37iz1mihksr6a928s6dzszxvblzg3l5wxp7azzsv6sb1yd"; authors = [ "Alex Crichton " ]; dependencies = [ { name = "serde"; - packageId = "serde 1.0.217"; + packageId = "serde 1.0.218"; } { name = "serde_spanned"; @@ -16132,39 +15130,40 @@ rec { } { name = "toml_edit"; - packageId = "toml_edit 0.20.2"; + packageId = "toml_edit 0.22.24"; optional = true; + usesDefaultFeatures = false; features = [ "serde" ]; } ]; devDependencies = [ { name = "serde"; - packageId = "serde 1.0.217"; + packageId = "serde 1.0.218"; features = [ "derive" ]; } ]; features = { "default" = [ "parse" "display" ]; - "display" = [ "dep:toml_edit" ]; + "display" = [ "dep:toml_edit" "toml_edit?/display" ]; "indexmap" = [ "dep:indexmap" ]; - "parse" = [ "dep:toml_edit" ]; + "parse" = [ "dep:toml_edit" "toml_edit?/parse" ]; "preserve_order" = [ "indexmap" ]; }; - resolvedDefaultFeatures = [ "parse" ]; + resolvedDefaultFeatures = [ "default" "display" "parse" ]; }; "toml_datetime" = rec { crateName = "toml_datetime"; - version = "0.6.3"; + version = "0.6.8"; edition = "2021"; - sha256 = "0jsy7v8bdvmzsci6imj8fzgd255fmy5fzp6zsri14yrry7i77nkw"; + sha256 = "0hgv7v9g35d7y9r2afic58jvlwnf73vgd1mz2k8gihlgrf73bmqd"; authors = [ "Alex Crichton " ]; dependencies = [ { name = "serde"; - packageId = "serde 1.0.217"; + packageId = "serde 1.0.218"; optional = true; } ]; @@ -16194,7 +15193,7 @@ rec { } { name = "winnow"; - packageId = "winnow"; + packageId = "winnow 0.5.40"; } ]; features = { @@ -16212,6 +15211,36 @@ rec { "Andronik Ordian " "Ed Page " ]; + dependencies = [ + { + name = "indexmap"; + packageId = "indexmap"; + features = [ "std" ]; + } + { + name = "toml_datetime"; + packageId = "toml_datetime"; + } + { + name = "winnow"; + packageId = "winnow 0.5.40"; + } + ]; + features = { + "perf" = [ "dep:kstring" ]; + "serde" = [ "dep:serde" "toml_datetime/serde" "dep:serde_spanned" ]; + }; + resolvedDefaultFeatures = [ "default" ]; + }; + "toml_edit 0.22.24" = rec { + crateName = "toml_edit"; + version = "0.22.24"; + edition = "2021"; + sha256 = "0x0lgp70x5cl9nla03xqs5vwwwlrwmd0djkdrp3h3lpdymgpkd0p"; + authors = [ + "Andronik Ordian " + "Ed Page " + ]; dependencies = [ { name = "indexmap"; @@ -16220,7 +15249,7 @@ rec { } { name = "serde"; - packageId = "serde 1.0.217"; + packageId = "serde 1.0.218"; optional = true; } { @@ -16235,209 +15264,17 @@ rec { } { name = "winnow"; - packageId = "winnow"; + packageId = "winnow 0.7.3"; + optional = true; } ]; features = { + "default" = [ "parse" "display" ]; + "parse" = [ "dep:winnow" ]; "perf" = [ "dep:kstring" ]; "serde" = [ "dep:serde" "toml_datetime/serde" "dep:serde_spanned" ]; }; - resolvedDefaultFeatures = [ "default" "serde" ]; - }; - "tower" = rec { - crateName = "tower"; - version = "0.5.2"; - edition = "2018"; - sha256 = "1ybmd59nm4abl9bsvy6rx31m4zvzp5rja2slzpn712y9b68ssffh"; - authors = [ - "Tower Maintainers " - ]; - dependencies = [ - { - name = "futures-core"; - packageId = "futures-core"; - optional = true; - } - { - name = "futures-util"; - packageId = "futures-util"; - optional = true; - usesDefaultFeatures = false; - features = [ "alloc" ]; - } - { - name = "pin-project-lite"; - packageId = "pin-project-lite"; - optional = true; - } - { - name = "sync_wrapper"; - packageId = "sync_wrapper 1.0.2"; - optional = true; - } - { - name = "tokio"; - packageId = "tokio"; - optional = true; - features = [ "sync" ]; - } - { - name = "tower-layer"; - packageId = "tower-layer"; - } - { - name = "tower-service"; - packageId = "tower-service"; - } - { - name = "tracing"; - packageId = "tracing"; - optional = true; - usesDefaultFeatures = false; - features = [ "std" ]; - } - ]; - devDependencies = [ - { - name = "pin-project-lite"; - packageId = "pin-project-lite"; - } - { - name = "tokio"; - packageId = "tokio"; - features = [ "macros" "sync" "test-util" "rt-multi-thread" ]; - } - { - name = "tracing"; - packageId = "tracing"; - usesDefaultFeatures = false; - features = [ "std" ]; - } - ]; - features = { - "__common" = [ "futures-core" "pin-project-lite" ]; - "balance" = [ "discover" "load" "ready-cache" "make" "slab" "util" ]; - "buffer" = [ "__common" "tokio/sync" "tokio/rt" "tokio-util" "tracing" ]; - "discover" = [ "__common" ]; - "filter" = [ "__common" "futures-util" ]; - "full" = [ "balance" "buffer" "discover" "filter" "hedge" "limit" "load" "load-shed" "make" "ready-cache" "reconnect" "retry" "spawn-ready" "steer" "timeout" "util" ]; - "futures-core" = [ "dep:futures-core" ]; - "futures-util" = [ "dep:futures-util" ]; - "hdrhistogram" = [ "dep:hdrhistogram" ]; - "hedge" = [ "util" "filter" "futures-util" "hdrhistogram" "tokio/time" "tracing" ]; - "indexmap" = [ "dep:indexmap" ]; - "limit" = [ "__common" "tokio/time" "tokio/sync" "tokio-util" "tracing" ]; - "load" = [ "__common" "tokio/time" "tracing" ]; - "load-shed" = [ "__common" ]; - "log" = [ "tracing/log" ]; - "make" = [ "futures-util" "pin-project-lite" "tokio/io-std" ]; - "pin-project-lite" = [ "dep:pin-project-lite" ]; - "ready-cache" = [ "futures-core" "futures-util" "indexmap" "tokio/sync" "tracing" "pin-project-lite" ]; - "reconnect" = [ "make" "tokio/io-std" "tracing" ]; - "retry" = [ "__common" "tokio/time" "util" ]; - "slab" = [ "dep:slab" ]; - "spawn-ready" = [ "__common" "futures-util" "tokio/sync" "tokio/rt" "util" "tracing" ]; - "sync_wrapper" = [ "dep:sync_wrapper" ]; - "timeout" = [ "pin-project-lite" "tokio/time" ]; - "tokio" = [ "dep:tokio" ]; - "tokio-stream" = [ "dep:tokio-stream" ]; - "tokio-util" = [ "dep:tokio-util" ]; - "tracing" = [ "dep:tracing" ]; - "util" = [ "__common" "futures-util" "pin-project-lite" "sync_wrapper" ]; - }; - resolvedDefaultFeatures = [ "__common" "futures-core" "futures-util" "log" "make" "pin-project-lite" "sync_wrapper" "tokio" "tracing" "util" ]; - }; - "tower-http" = rec { - crateName = "tower-http"; - version = "0.6.2"; - edition = "2018"; - sha256 = "15wnvhl6cpir9125s73bqjzjsvfb0fmndmsimnl2ddnlhfvs6gs0"; - libName = "tower_http"; - authors = [ - "Tower Maintainers " - ]; - dependencies = [ - { - name = "bitflags"; - packageId = "bitflags 2.8.0"; - } - { - name = "bytes"; - packageId = "bytes"; - } - { - name = "http"; - packageId = "http 1.2.0"; - } - { - name = "pin-project-lite"; - packageId = "pin-project-lite"; - } - { - name = "tower-layer"; - packageId = "tower-layer"; - } - { - name = "tower-service"; - packageId = "tower-service"; - } - ]; - devDependencies = [ - { - name = "bytes"; - packageId = "bytes"; - } - ]; - features = { - "async-compression" = [ "dep:async-compression" ]; - "auth" = [ "base64" "validate-request" ]; - "base64" = [ "dep:base64" ]; - "catch-panic" = [ "tracing" "futures-util/std" "dep:http-body" "dep:http-body-util" ]; - "compression-br" = [ "async-compression/brotli" "futures-core" "dep:http-body" "tokio-util" "tokio" ]; - "compression-deflate" = [ "async-compression/zlib" "futures-core" "dep:http-body" "tokio-util" "tokio" ]; - "compression-full" = [ "compression-br" "compression-deflate" "compression-gzip" "compression-zstd" ]; - "compression-gzip" = [ "async-compression/gzip" "futures-core" "dep:http-body" "tokio-util" "tokio" ]; - "compression-zstd" = [ "async-compression/zstd" "futures-core" "dep:http-body" "tokio-util" "tokio" ]; - "decompression-br" = [ "async-compression/brotli" "futures-core" "dep:http-body" "dep:http-body-util" "tokio-util" "tokio" ]; - "decompression-deflate" = [ "async-compression/zlib" "futures-core" "dep:http-body" "dep:http-body-util" "tokio-util" "tokio" ]; - "decompression-full" = [ "decompression-br" "decompression-deflate" "decompression-gzip" "decompression-zstd" ]; - "decompression-gzip" = [ "async-compression/gzip" "futures-core" "dep:http-body" "dep:http-body-util" "tokio-util" "tokio" ]; - "decompression-zstd" = [ "async-compression/zstd" "futures-core" "dep:http-body" "dep:http-body-util" "tokio-util" "tokio" ]; - "follow-redirect" = [ "futures-util" "dep:http-body" "iri-string" "tower/util" ]; - "fs" = [ "futures-util" "dep:http-body" "dep:http-body-util" "tokio/fs" "tokio-util/io" "tokio/io-util" "dep:http-range-header" "mime_guess" "mime" "percent-encoding" "httpdate" "set-status" "futures-util/alloc" "tracing" ]; - "full" = [ "add-extension" "auth" "catch-panic" "compression-full" "cors" "decompression-full" "follow-redirect" "fs" "limit" "map-request-body" "map-response-body" "metrics" "normalize-path" "propagate-header" "redirect" "request-id" "sensitive-headers" "set-header" "set-status" "timeout" "trace" "util" "validate-request" ]; - "futures-core" = [ "dep:futures-core" ]; - "futures-util" = [ "dep:futures-util" ]; - "httpdate" = [ "dep:httpdate" ]; - "iri-string" = [ "dep:iri-string" ]; - "limit" = [ "dep:http-body" "dep:http-body-util" ]; - "metrics" = [ "dep:http-body" "tokio/time" ]; - "mime" = [ "dep:mime" ]; - "mime_guess" = [ "dep:mime_guess" ]; - "percent-encoding" = [ "dep:percent-encoding" ]; - "request-id" = [ "uuid" ]; - "timeout" = [ "dep:http-body" "tokio/time" ]; - "tokio" = [ "dep:tokio" ]; - "tokio-util" = [ "dep:tokio-util" ]; - "tower" = [ "dep:tower" ]; - "trace" = [ "dep:http-body" "tracing" ]; - "tracing" = [ "dep:tracing" ]; - "util" = [ "tower" ]; - "uuid" = [ "dep:uuid" ]; - "validate-request" = [ "mime" ]; - }; - resolvedDefaultFeatures = [ "cors" "default" ]; - }; - "tower-layer" = rec { - crateName = "tower-layer"; - version = "0.3.3"; - edition = "2018"; - sha256 = "03kq92fdzxin51w8iqix06dcfgydyvx7yr6izjq0p626v9n2l70j"; - libName = "tower_layer"; - authors = [ - "Tower Maintainers " - ]; - + resolvedDefaultFeatures = [ "display" "parse" "serde" ]; }; "tower-service" = rec { crateName = "tower-service"; @@ -16743,7 +15580,7 @@ rec { } { name = "serde"; - packageId = "serde 1.0.217"; + packageId = "serde 1.0.218"; features = [ "derive" ]; } { @@ -17047,17 +15884,6 @@ rec { }; resolvedDefaultFeatures = [ "default" "std" ]; }; - "urlencoding" = rec { - crateName = "urlencoding"; - version = "2.1.3"; - edition = "2021"; - sha256 = "1nj99jp37k47n0hvaz5fvz7z6jd0sb4ppvfy3nphr1zbnyixpy6s"; - authors = [ - "Kornel " - "Bertram Truong " - ]; - - }; "utf-8" = rec { crateName = "utf-8"; version = "0.7.6"; @@ -17146,12 +15972,12 @@ rec { dependencies = [ { name = "getrandom"; - packageId = "getrandom"; + packageId = "getrandom 0.2.15"; optional = true; } { name = "serde"; - packageId = "serde 1.0.217"; + packageId = "serde 1.0.218"; optional = true; usesDefaultFeatures = false; } @@ -17186,7 +16012,7 @@ rec { dependencies = [ { name = "getrandom"; - packageId = "getrandom"; + packageId = "getrandom 0.2.15"; optional = true; } ]; @@ -17278,129 +16104,6 @@ rec { "Sergio Benitez " ]; - }; - "visions" = rec { - crateName = "visions"; - version = "0.1.0"; - edition = "2021"; - crateBin = [ - { - name = "visions"; - path = "src/main.rs"; - requiredFeatures = [ ]; - } - ]; - # We can't filter paths with references in Nix 2.4 - # See https://github.com/NixOS/nix/issues/5410 - src = if ((lib.versionOlder builtins.nixVersion "2.4pre20211007") || (lib.versionOlder "2.5" builtins.nixVersion )) - then lib.cleanSourceWith { filter = sourceFilter; src = ./visions/server; } - else ./visions/server; - dependencies = [ - { - name = "async-std"; - packageId = "async-std"; - } - { - name = "async-trait"; - packageId = "async-trait"; - } - { - name = "authdb"; - packageId = "authdb"; - } - { - name = "axum"; - packageId = "axum"; - features = [ "macros" ]; - } - { - name = "futures"; - packageId = "futures"; - } - { - name = "include_dir"; - packageId = "include_dir"; - } - { - name = "lazy_static"; - packageId = "lazy_static"; - } - { - name = "mime"; - packageId = "mime 0.3.17"; - } - { - name = "mime_guess"; - packageId = "mime_guess 2.0.5"; - } - { - name = "pretty_env_logger"; - packageId = "pretty_env_logger"; - } - { - name = "result-extended"; - packageId = "result-extended"; - } - { - name = "rusqlite"; - packageId = "rusqlite"; - } - { - name = "rusqlite_migration"; - packageId = "rusqlite_migration"; - features = [ "from-directory" ]; - } - { - name = "serde"; - packageId = "serde 1.0.217"; - } - { - name = "serde_json"; - packageId = "serde_json"; - } - { - name = "thiserror"; - packageId = "thiserror 2.0.11"; - } - { - name = "tokio"; - packageId = "tokio"; - features = [ "full" ]; - } - { - name = "tokio-stream"; - packageId = "tokio-stream"; - } - { - name = "tower-http"; - packageId = "tower-http"; - features = [ "cors" ]; - } - { - name = "typeshare"; - packageId = "typeshare"; - } - { - name = "urlencoding"; - packageId = "urlencoding"; - } - { - name = "uuid"; - packageId = "uuid 1.12.0"; - features = [ "v4" ]; - } - ]; - devDependencies = [ - { - name = "axum-test"; - packageId = "axum-test"; - } - { - name = "cool_asserts"; - packageId = "cool_asserts"; - } - ]; - }; "wait-timeout" = rec { crateName = "wait-timeout"; @@ -17505,7 +16208,7 @@ rec { } { name = "serde"; - packageId = "serde 1.0.217"; + packageId = "serde 1.0.218"; } { name = "serde_json"; @@ -17598,6 +16301,29 @@ rec { }; resolvedDefaultFeatures = [ "default" "std" ]; }; + "wasi 0.13.3+wasi-0.2.2" = rec { + crateName = "wasi"; + version = "0.13.3+wasi-0.2.2"; + edition = "2021"; + sha256 = "1lnapbvdcvi3kc749wzqvwrpd483win2kicn1faa4dja38p6v096"; + authors = [ + "The Cranelift Project Developers" + ]; + dependencies = [ + { + name = "wit-bindgen-rt"; + packageId = "wit-bindgen-rt"; + features = [ "bitflags" ]; + } + ]; + features = { + "compiler_builtins" = [ "dep:compiler_builtins" ]; + "core" = [ "dep:core" ]; + "default" = [ "std" ]; + "rustc-dep-of-std" = [ "compiler_builtins" "core" "rustc-std-workspace-alloc" ]; + "rustc-std-workspace-alloc" = [ "dep:rustc-std-workspace-alloc" ]; + }; + }; "wasite" = rec { crateName = "wasite"; version = "0.1.0"; @@ -19474,7 +18200,7 @@ rec { ]; }; - "winnow" = rec { + "winnow 0.5.40" = rec { crateName = "winnow"; version = "0.5.40"; edition = "2021"; @@ -19496,6 +18222,28 @@ rec { }; resolvedDefaultFeatures = [ "alloc" "default" "std" ]; }; + "winnow 0.7.3" = rec { + crateName = "winnow"; + version = "0.7.3"; + edition = "2021"; + sha256 = "1c9bmhpdwbdmll6b4l6skabz0296dchnmnxw84hh2y3ggyllwzqf"; + dependencies = [ + { + name = "memchr"; + packageId = "memchr"; + optional = true; + usesDefaultFeatures = false; + } + ]; + features = { + "debug" = [ "std" "dep:anstream" "dep:anstyle" "dep:is-terminal" "dep:terminal_size" ]; + "default" = [ "std" ]; + "simd" = [ "dep:memchr" ]; + "std" = [ "alloc" "memchr?/std" ]; + "unstable-doc" = [ "alloc" "std" "simd" "unstable-recover" ]; + }; + resolvedDefaultFeatures = [ "alloc" "default" "std" ]; + }; "winreg" = rec { crateName = "winreg"; version = "0.50.0"; @@ -19521,6 +18269,24 @@ rec { "serialization-serde" = [ "transactions" "serde" ]; }; }; + "wit-bindgen-rt" = rec { + crateName = "wit-bindgen-rt"; + version = "0.33.0"; + edition = "2021"; + sha256 = "0g4lwfp9x6a2i1hgjn8k14nr4fsnpd5izxhc75zpi2s5cvcg6s1j"; + libName = "wit_bindgen_rt"; + dependencies = [ + { + name = "bitflags"; + packageId = "bitflags 2.8.0"; + optional = true; + } + ]; + features = { + "bitflags" = [ "dep:bitflags" ]; + }; + resolvedDefaultFeatures = [ "bitflags" ]; + }; "write16" = rec { crateName = "write16"; version = "1.0.0"; @@ -19544,23 +18310,17 @@ rec { "either" = [ "dep:either" ]; }; }; - "yansi" = rec { - crateName = "yansi"; - version = "1.0.1"; + "xml-rs" = rec { + crateName = "xml-rs"; + version = "0.8.25"; edition = "2021"; - sha256 = "0jdh55jyv0dpd38ij4qh60zglbw9aa8wafqai6m0wa7xaxk3mrfg"; + crateBin = []; + sha256 = "1i73ajf6scni5bi1a51r19xykgrambdx5fkks0fyg5jqqbml1ff5"; + libName = "xml"; authors = [ - "Sergio Benitez " + "Vladimir Matveev " ]; - features = { - "default" = [ "std" ]; - "detect-env" = [ "std" ]; - "detect-tty" = [ "is-terminal" "std" ]; - "hyperlink" = [ "std" ]; - "is-terminal" = [ "dep:is-terminal" ]; - "std" = [ "alloc" ]; - }; - resolvedDefaultFeatures = [ "alloc" "default" "std" ]; + }; "yansi-term" = rec { crateName = "yansi-term"; @@ -19598,7 +18358,7 @@ rec { dependencies = [ { name = "serde"; - packageId = "serde 1.0.217"; + packageId = "serde 1.0.218"; optional = true; usesDefaultFeatures = false; } @@ -19623,7 +18383,7 @@ rec { devDependencies = [ { name = "serde"; - packageId = "serde 1.0.217"; + packageId = "serde 1.0.218"; usesDefaultFeatures = false; } ]; diff --git a/Cargo.toml b/Cargo.toml index cc29ea7..d982233 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -33,4 +33,4 @@ members = [ "tree", "visions/server", "gm-dash/server" -] +, "l10n-db"] diff --git a/crate-hashes.json b/crate-hashes.json index 47b533e..480f3ca 100644 --- a/crate-hashes.json +++ b/crate-hashes.json @@ -3,7 +3,6 @@ "registry+https://github.com/rust-lang/crates.io-index#adler2@2.0.0": "09r6drylvgy8vv8k20lnbvwq8gp09h7smfn6h1rxsy15pgh629si", "registry+https://github.com/rust-lang/crates.io-index#adler32@1.2.0": "0d7jq7jsjyhsgbhnfq5fvrlh9j0i9g1fqrl2735ibv5f75yjgqda", "registry+https://github.com/rust-lang/crates.io-index#adler@1.0.2": "1zim79cvzd5yrkzl3nyfx0avijwgk9fqv3yrscdy1cc79ih02qpj", - "registry+https://github.com/rust-lang/crates.io-index#ahash@0.8.11": "04chdfkls5xmhp1d48gnjsmglbqibizs3bpbj6rsj604m10si7g8", "registry+https://github.com/rust-lang/crates.io-index#aho-corasick@1.1.3": "05mrpkvdgp5d20y2p989f187ry9diliijgwrs254fs9s1m1x6q4f", "registry+https://github.com/rust-lang/crates.io-index#allocator-api2@0.2.21": "08zrzs022xwndihvzdn78yqarv2b9696y67i6h78nla3ww87jgb8", "registry+https://github.com/rust-lang/crates.io-index#android-tzdata@0.1.1": "1w7ynjxrfs97xg3qlcdns4kgfpwcdv824g611fq32cag4cdr96g9", @@ -15,7 +14,6 @@ "registry+https://github.com/rust-lang/crates.io-index#anstyle-wincon@3.0.7": "0kmf0fq4c8yribdpdpylzz1zccpy84hizmcsac3wrac1f7kk8dfa", "registry+https://github.com/rust-lang/crates.io-index#anstyle@1.0.10": "1yai2vppmd7zlvlrp9grwll60knrmscalf8l2qpfz8b7y5lkpk2m", "registry+https://github.com/rust-lang/crates.io-index#anyhow@1.0.95": "010vd1ki8w84dzgx6c81sc8qm9n02fxic1gkpv52zp4nwrn0kb1l", - "registry+https://github.com/rust-lang/crates.io-index#assert-json-diff@2.0.2": "04mg3w0rh3schpla51l18362hsirl23q93aisws2irrj32wg5r27", "registry+https://github.com/rust-lang/crates.io-index#async-channel@1.9.0": "0dbdlkzlncbibd3ij6y6jmvjd0cmdn48ydcfdpfhw09njd93r5c1", "registry+https://github.com/rust-lang/crates.io-index#async-channel@2.3.1": "0skvwxj6ysfc6d7bhczz9a2550260g62bm5gl0nmjxxyn007id49", "registry+https://github.com/rust-lang/crates.io-index#async-executor@1.13.1": "1v6w1dbvsmw6cs4dk4lxj5dvrikc6xi479wikwaab2qy3h09mjih", @@ -27,13 +25,8 @@ "registry+https://github.com/rust-lang/crates.io-index#async-trait@0.1.85": "0mm0gwad44zs7mna4a0m1z4dhzpmydfj73w4wm23c8xpnhrli4rz", "registry+https://github.com/rust-lang/crates.io-index#atoi@2.0.0": "0a05h42fggmy7h0ajjv6m7z72l924i7igbx13hk9d8pyign9k3gj", "registry+https://github.com/rust-lang/crates.io-index#atomic-waker@1.1.2": "1h5av1lw56m0jf0fd3bchxq8a30xv0b4wv8s4zkp4s0i7mfvs18m", - "registry+https://github.com/rust-lang/crates.io-index#auto-future@1.0.0": "0wykbakzh227vz6frx9p48zsq0wpswgmb7v3917m53m7gr2pw7iw", "registry+https://github.com/rust-lang/crates.io-index#autocfg@0.1.8": "0y4vw4l4izdxq1v0rrhvmlbqvalrqrmk60v1z0dqlgnlbzkl7phd", "registry+https://github.com/rust-lang/crates.io-index#autocfg@1.4.0": "09lz3by90d2hphbq56znag9v87gfpd9gb8nr82hll8z6x2nhprdc", - "registry+https://github.com/rust-lang/crates.io-index#axum-core@0.4.5": "16b1496c4gm387q20hkv5ic3k5bd6xmnvk50kwsy6ymr8rhvvwh9", - "registry+https://github.com/rust-lang/crates.io-index#axum-macros@0.4.2": "1klv77c889jm05bzayaaiinalarhvh2crc2w4nvp3l581xaj7lap", - "registry+https://github.com/rust-lang/crates.io-index#axum-test@16.4.1": "1p5qxacvxsagnqq30nr2wznjyhgb8svsfb925ah3d2b0s91s9qv3", - "registry+https://github.com/rust-lang/crates.io-index#axum@0.7.9": "07z7wqczi9i8xb4460rvn39p4wjqwr32hx907crd1vwb2fy8ijpd", "registry+https://github.com/rust-lang/crates.io-index#az@1.2.1": "0ww9k1w3al7x5qmb7f13v3s9c2pg1pdxbs8xshqy6zyrchj4qzkv", "registry+https://github.com/rust-lang/crates.io-index#backtrace@0.3.74": "06pfif7nwx66qf2zaanc2fcq7m64i91ki9imw9xd3bnz5hrwp0ld", "registry+https://github.com/rust-lang/crates.io-index#base64@0.21.7": "0rw52yvsk75kar9wgqfwgb414kvil1gn7mqkrhn9zf1537mpsacx", @@ -53,7 +46,6 @@ "registry+https://github.com/rust-lang/crates.io-index#bytemuck@1.21.0": "18wj81x9xhqcd6985r8qxmbik6szjfjfj62q3xklw8h2p3x7srgg", "registry+https://github.com/rust-lang/crates.io-index#byteorder@1.5.0": "0jzncxyf404mwqdbspihyzpkndfgda450l0893pz5xj685cg5l0z", "registry+https://github.com/rust-lang/crates.io-index#bytes@1.9.0": "16ykzx24v1x4f42v2lxyvlczqhdfji3v7r4ghwckpwijzvb1hn9j", - "registry+https://github.com/rust-lang/crates.io-index#bytesize@1.3.0": "1k3aak70iwz4s2gsjbxf0ws4xnixqbdz6p2ha96s06748fpniqx3", "registry+https://github.com/rust-lang/crates.io-index#cairo-rs@0.18.5": "1qjfkcq3mrh3p01nnn71dy3kn99g21xx3j8xcdvzn8ll2pq6x8lc", "registry+https://github.com/rust-lang/crates.io-index#cairo-sys-rs@0.18.2": "0lfsxl7ylw3phbnwmz3k58j1gnqi6kc2hdc7g3bb7f4hwnl9yp38", "registry+https://github.com/rust-lang/crates.io-index#cc@1.2.10": "0aaj2ivamhfzhgb9maasnfkh03s2mzhzpzwrkghgzbkfnv5qy80k", @@ -64,9 +56,9 @@ "registry+https://github.com/rust-lang/crates.io-index#chrono-tz@0.8.6": "0vlksnmpb6rd4h55245agnfhphnpslwnq9al3aw3is43dd3f16nm", "registry+https://github.com/rust-lang/crates.io-index#chrono@0.4.39": "09g8nf409lb184kl9j4s85k0kn8wzgjkp5ls9zid50b886fwqdky", "registry+https://github.com/rust-lang/crates.io-index#clang-sys@1.8.1": "1x1r9yqss76z8xwpdanw313ss6fniwc1r7dzb5ycjn0ph53kj0hb", - "registry+https://github.com/rust-lang/crates.io-index#clap@4.5.26": "10v7qvn90calfbhap1c4r249i5c7fbxj09fn3szfz9pkis85xsx8", - "registry+https://github.com/rust-lang/crates.io-index#clap_builder@4.5.26": "08f1mzcvi7zjhm7hvz6al4jnv70ccqhwiaq74hihlspwnl0iic4n", - "registry+https://github.com/rust-lang/crates.io-index#clap_derive@4.5.24": "131ih3dm76srkbpfx7zfspp9b556zgzj31wqhl0ji2b39lcmbdsl", + "registry+https://github.com/rust-lang/crates.io-index#clap@4.5.30": "0vcyrn4ymq2gd56sl3xnfki8q8llg64sj3rj3qx33mgsf66v3dwj", + "registry+https://github.com/rust-lang/crates.io-index#clap_builder@4.5.30": "0369xis2ar46icsaxqyy37976mlb62alzyx4j53k99vq2w3v4pd3", + "registry+https://github.com/rust-lang/crates.io-index#clap_derive@4.5.28": "1vgigkhljp3r8r5lwdrn1ij93nafmjwh8cx77nppb9plqsaysk5z", "registry+https://github.com/rust-lang/crates.io-index#clap_lex@0.7.4": "19nwfls5db269js5n822vkc8dw0wjq2h1wf0hgr06ld2g52d2spl", "registry+https://github.com/rust-lang/crates.io-index#cloudabi@0.0.3": "0kxcg83jlihy0phnd2g8c2c303px3l2p3pkjz357ll6llnd5pz6x", "registry+https://github.com/rust-lang/crates.io-index#color_quant@1.1.0": "12q1n427h2bbmmm1mnglr57jaz2dj9apk0plcxw7nwqiai7qjyrx", @@ -76,7 +68,6 @@ "registry+https://github.com/rust-lang/crates.io-index#convert_case@0.6.0": "1jn1pq6fp3rri88zyw6jlhwwgf6qiyc08d6gjv0qypgkl862n67c", "registry+https://github.com/rust-lang/crates.io-index#cookie-factory@0.3.3": "18mka6fk3843qq3jw1fdfvzyv05kx7kcmirfbs2vg2kbw9qzm1cq", "registry+https://github.com/rust-lang/crates.io-index#cookie@0.17.0": "096c52jg9iq4lfcps2psncswv33fc30mmnaa2sbzzcfcw71kgyvy", - "registry+https://github.com/rust-lang/crates.io-index#cookie@0.18.1": "0iy749flficrlvgr3hjmf3igr738lk81n5akzf4ym4cs6cxg7pjd", "registry+https://github.com/rust-lang/crates.io-index#cool_asserts@2.0.3": "1v18dg7ifx41k2f82j3gsnpm1fg9wk5s4zv7sf42c7pnad72b7zf", "registry+https://github.com/rust-lang/crates.io-index#core-foundation-sys@0.8.7": "12w8j73lazxmr1z0h98hf3z623kl8ms7g07jch7n4p8f9nwlhdkp", "registry+https://github.com/rust-lang/crates.io-index#core-foundation@0.9.4": "13zvbbj07yk3b61b8fhwfzhy35535a583irf23vlcg59j7h9bqci", @@ -94,7 +85,6 @@ "registry+https://github.com/rust-lang/crates.io-index#deflate@0.8.6": "0x6iqlayg129w63999kz97m279m0jj4x4sm6gkqlvmp73y70yxvk", "registry+https://github.com/rust-lang/crates.io-index#der@0.7.9": "1h4vzjfa1lczxdf8avfj9qlwh1qianqlxdy1g5rn762qnvkzhnzm", "registry+https://github.com/rust-lang/crates.io-index#deranged@0.3.11": "1d1ibqqnr5qdrpw8rclwrf1myn3wf0dygl04idf4j2s49ah6yaxl", - "registry+https://github.com/rust-lang/crates.io-index#diff@0.1.13": "1j0nzjxci2zqx63hdcihkp0a4dkdmzxd7my4m7zk6cjyfy34j9an", "registry+https://github.com/rust-lang/crates.io-index#digest@0.10.7": "14p2n6ih29x81akj097lvz7wi9b6b9hvls0lwrv7b6xwyy0s5ncy", "registry+https://github.com/rust-lang/crates.io-index#dimensioned@0.7.0": "09ky8s3higkf677lmyqg30hmj66gpg7hx907s6hfvbk2a9av05r5", "registry+https://github.com/rust-lang/crates.io-index#dimensioned@0.8.0": "15s3j4ry943xqlac63bp81sgdk9s3yilysabzww35j9ibmnaic50", @@ -110,8 +100,6 @@ "registry+https://github.com/rust-lang/crates.io-index#event-listener@2.5.3": "1q4w3pndc518crld6zsqvvpy9lkzwahp2zgza9kbzmmqh9gif1h2", "registry+https://github.com/rust-lang/crates.io-index#event-listener@5.4.0": "1bii2gn3vaa33s0gr2zph7cagiq0ppcfxcxabs24ri9z9kgar4il", "registry+https://github.com/rust-lang/crates.io-index#exr@1.73.0": "1q47yq78q9k210r6jy1wwrilxwwxqavik9l3l426rd17k7srfcgq", - "registry+https://github.com/rust-lang/crates.io-index#fallible-iterator@0.3.0": "0ja6l56yka5vn4y4pk6hn88z0bpny7a8k1919aqjzp0j1yhy9k1a", - "registry+https://github.com/rust-lang/crates.io-index#fallible-streaming-iterator@0.1.9": "0nj6j26p71bjy8h42x6jahx1hn0ng6mc2miwpgwnp8vnwqf4jq3k", "registry+https://github.com/rust-lang/crates.io-index#fastrand@2.3.0": "1ghiahsw1jd68df895cy5h3gzwk30hndidn3b682zmshpgmrx41p", "registry+https://github.com/rust-lang/crates.io-index#fdeflate@0.3.7": "130ga18vyxbb5idbgi07njymdaavvk6j08yh1dfarm294ssm6s0y", "registry+https://github.com/rust-lang/crates.io-index#field-offset@0.3.6": "0zq5sssaa2ckmcmxxbly8qgz3sxpb8g1lwv90sdh1z74qif2gqiq", @@ -146,6 +134,7 @@ "registry+https://github.com/rust-lang/crates.io-index#generic-array@0.11.2": "0a7w8w0rg47nmcinnfzv443lcyb8mplwc251p1jyr5xj2yh6wzv6", "registry+https://github.com/rust-lang/crates.io-index#generic-array@0.14.7": "16lyyrzrljfq424c3n8kfwkqihlimmsg5nhshbbp48np3yjrqr45", "registry+https://github.com/rust-lang/crates.io-index#getrandom@0.2.15": "1mzlnrb3dgyd1fb84gvw10pyr8wdqdl4ry4sr64i1s8an66pqmn4", + "registry+https://github.com/rust-lang/crates.io-index#getrandom@0.3.1": "1y154yzby383p63ndw6zpfm0fz3vf6c0zdwc7df6vkl150wrr923", "registry+https://github.com/rust-lang/crates.io-index#gif@0.11.4": "01hbw3isapzpzff8l6aw55jnaqx2bcscrbwyf3rglkbbfp397p9y", "registry+https://github.com/rust-lang/crates.io-index#gif@0.13.1": "1whrkvdg26gp1r7f95c6800y6ijqw5y0z8rgj6xihpi136dxdciz", "registry+https://github.com/rust-lang/crates.io-index#gimli@0.31.1": "0gvqc0ramx8szv76jhfd4dms0zyamvlg4whhiz11j34hh3dqxqh7", @@ -170,10 +159,8 @@ "registry+https://github.com/rust-lang/crates.io-index#gtk4@0.7.3": "0hh8nzglmz94v1m1h6vy8z12m6fr7ia467ry0md5fa4p7sm53sss", "registry+https://github.com/rust-lang/crates.io-index#h2@0.3.26": "1s7msnfv7xprzs6xzfj5sg6p8bjcdpcqcmjjbkd345cyi1x55zl1", "registry+https://github.com/rust-lang/crates.io-index#half@2.4.1": "123q4zzw1x4309961i69igzd1wb7pj04aaii3kwasrz3599qrl3d", - "registry+https://github.com/rust-lang/crates.io-index#hashbrown@0.14.5": "1wa1vy1xs3mp11bn3z9dv0jricgr6a2j0zkf1g19yz3vw4il89z5", "registry+https://github.com/rust-lang/crates.io-index#hashbrown@0.15.2": "12dj0yfn59p3kh3679ac0w1fagvzf4z2zp87a13gbbqbzw0185dz", "registry+https://github.com/rust-lang/crates.io-index#hashlink@0.10.0": "1h8lzvnl9qxi3zyagivzz2p1hp6shgddfmccyf6jv7s1cdicz0kk", - "registry+https://github.com/rust-lang/crates.io-index#hashlink@0.9.1": "1byq4nyrflm5s6wdx5qwp96l1qbp2d0nljvrr5yqrsfy51qzz93b", "registry+https://github.com/rust-lang/crates.io-index#headers-core@0.2.0": "0ab469xfpd411mc3dhmjhmzrhqikzyj8a17jn5bkj9zfpy0n9xp7", "registry+https://github.com/rust-lang/crates.io-index#headers@0.3.9": "0w62gnwh2p1lml0zqdkrx9dp438881nhz32zrzdy61qa0a9kns06", "registry+https://github.com/rust-lang/crates.io-index#heck@0.4.1": "1a7mqsnycv5z4z5vnv1k34548jzmc0ajic7c1j8jsaspnhw5ql4m", @@ -185,19 +172,15 @@ "registry+https://github.com/rust-lang/crates.io-index#hkdf@0.12.4": "1xxxzcarz151p1b858yn5skmhyrvn8fs4ivx5km3i1kjmnr8wpvv", "registry+https://github.com/rust-lang/crates.io-index#hmac@0.12.1": "0pmbr069sfg76z7wsssfk5ddcqd9ncp79fyz6zcm6yn115yc6jbc", "registry+https://github.com/rust-lang/crates.io-index#home@0.5.11": "1kxb4k87a9sayr8jipr7nq9wpgmjk4hk4047hmf9kc24692k75aq", - "registry+https://github.com/rust-lang/crates.io-index#http-body-util@0.1.2": "0kslwazg4400qnc2azkrgqqci0fppv12waicnsy5d8hncvbjjd3r", "registry+https://github.com/rust-lang/crates.io-index#http-body@0.4.6": "1lmyjfk6bqk6k9gkn1dxq770sb78pqbqshga241hr5p995bb5skw", - "registry+https://github.com/rust-lang/crates.io-index#http-body@1.0.1": "111ir5k2b9ihz5nr9cz7cwm7fnydca7dx4hc7vr16scfzghxrzhy", "registry+https://github.com/rust-lang/crates.io-index#http@0.2.12": "1w81s4bcbmcj9bjp7mllm8jlz6b31wzvirz8bgpzbqkpwmbvn730", "registry+https://github.com/rust-lang/crates.io-index#http@1.2.0": "1skglzdf98j5nzxlii540n11is0w4l80mi5sm3xrj716asps4v7i", "registry+https://github.com/rust-lang/crates.io-index#httparse@1.9.5": "0ip9v8m9lvgvq1lznl31wvn0ch1v254na7lhid9p29yx9rbx6wbx", "registry+https://github.com/rust-lang/crates.io-index#httpdate@1.0.3": "1aa9rd2sac0zhjqh24c9xvir96g188zldkx0hr6dnnlx5904cfyz", "registry+https://github.com/rust-lang/crates.io-index#humantime@2.1.0": "1r55pfkkf5v0ji1x6izrjwdq9v6sc7bv99xj6srywcar37xmnfls", "registry+https://github.com/rust-lang/crates.io-index#hyper-tls@0.5.0": "01crgy13102iagakf6q4mb75dprzr7ps1gj0l5hxm1cvm7gks66n", - "registry+https://github.com/rust-lang/crates.io-index#hyper-util@0.1.10": "1d1iwrkysjhq63pg54zk3vfby1j7zmxzm9zzyfr4lwvp0szcybfz", "registry+https://github.com/rust-lang/crates.io-index#hyper@0.10.16": "0wwjh9p3mzvg3fss2lqz5r7ddcgl1fh9w6my2j69d6k0lbcm41ha", "registry+https://github.com/rust-lang/crates.io-index#hyper@0.14.32": "1rvcb0smz8q1i0y6p7rwxr02x5sclfg2hhxf3g0774zczn0cgps1", - "registry+https://github.com/rust-lang/crates.io-index#hyper@1.5.2": "1q7akfb443yrjzkmnnbp2vs8zi15hgbk466rr4y144v4ppabhvr5", "registry+https://github.com/rust-lang/crates.io-index#iana-time-zone-haiku@0.1.2": "17r6jmj31chn7xs9698r122mapq85mfnv98bb4pg6spm0si2f67k", "registry+https://github.com/rust-lang/crates.io-index#iana-time-zone@0.1.61": "085jjsls330yj1fnwykfzmb2f10zp6l7w4fhq81ng81574ghhpi3", "registry+https://github.com/rust-lang/crates.io-index#icu_collections@1.5.0": "09j5kskirl59mvqc8kabhy7005yyy7dp88jw9f6f3gkf419a8byv", @@ -215,8 +198,6 @@ "registry+https://github.com/rust-lang/crates.io-index#idna_adapter@1.2.0": "0wggnkiivaj5lw0g0384ql2d7zk4ppkn3b1ry4n0ncjpr7qivjns", "registry+https://github.com/rust-lang/crates.io-index#image@0.23.14": "18gn2f7xp30pf9aqka877knlq308khxqiwjvsccvzaa4f9zcpzr4", "registry+https://github.com/rust-lang/crates.io-index#image@0.24.9": "17gnr6ifnpzvhjf6dwbl9hki8x6bji5mwcqp0048x1jm5yfi742n", - "registry+https://github.com/rust-lang/crates.io-index#include_dir@0.7.4": "1pfh3g45z88kwq93skng0n6g3r7zkhq9ldqs9y8rvr7i11s12gcj", - "registry+https://github.com/rust-lang/crates.io-index#include_dir_macros@0.7.4": "0x8smnf6knd86g69p19z5lpfsaqp8w0nx14kdpkz1m8bxnkqbavw", "registry+https://github.com/rust-lang/crates.io-index#indent_write@2.2.0": "1hqjp80argdskrhd66g9sh542yxy8qi77j6rc69qd0l7l52rdzhc", "registry+https://github.com/rust-lang/crates.io-index#indexmap@2.7.0": "07s7jmdymvd0rm4yswp0j3napx57hkjm9gs9n55lvs2g78vj5y32", "registry+https://github.com/rust-lang/crates.io-index#intl-memoizer@0.5.2": "1nkvql7c7b76axv4g68di1p2m9bnxq1cbn6mlqcawf72zhhf08py", @@ -251,7 +232,6 @@ "registry+https://github.com/rust-lang/crates.io-index#log@0.4.25": "17ydv5zhfv1zzygy458bmg3f3jx1vfziv9d74817w76yhfqgbjq4", "registry+https://github.com/rust-lang/crates.io-index#logger@0.4.0": "14xlxvkspcfnspjil0xi63qj5cybxn1hjmr5gq8m4v1g9k5p54bc", "registry+https://github.com/rust-lang/crates.io-index#matches@0.1.10": "1994402fq4viys7pjhzisj4wcw894l53g798kkm2y74laxk0jci5", - "registry+https://github.com/rust-lang/crates.io-index#matchit@0.7.3": "156bgdmmlv4crib31qhgg49nsjk88dxkdqp80ha2pk2rk6n6ax0f", "registry+https://github.com/rust-lang/crates.io-index#md-5@0.10.6": "1kvq5rnpm4fzwmyv5nmnxygdhhb2369888a06gdc9pxyrzh7x7nq", "registry+https://github.com/rust-lang/crates.io-index#memchr@2.7.4": "18z32bhxrax0fnjikv475z7ii718hq457qwmaryixfxsl2qrmjkq", "registry+https://github.com/rust-lang/crates.io-index#memoffset@0.9.1": "12i17wh9a9plx869g7j4whf62xw68k5zd4k0k5nh6ys5mszid028", @@ -317,10 +297,9 @@ "registry+https://github.com/rust-lang/crates.io-index#polling@3.7.4": "0bs4nhwfwsvlzlhah2gbhj3aa9ynvchv2g350wapswh26a65c156", "registry+https://github.com/rust-lang/crates.io-index#powerfmt@0.2.0": "14ckj2xdpkhv3h6l5sdmb9f1d57z8hbfpdldjc2vl5givq2y77j3", "registry+https://github.com/rust-lang/crates.io-index#ppv-lite86@0.2.20": "017ax9ssdnpww7nrl1hvqh2lzncpv04nnsibmnw9nxjnaqlpp5bp", - "registry+https://github.com/rust-lang/crates.io-index#pretty_assertions@1.4.1": "0v8iq35ca4rw3rza5is3wjxwsf88303ivys07anc5yviybi31q9s", "registry+https://github.com/rust-lang/crates.io-index#pretty_env_logger@0.5.0": "076w9dnvcpx6d3mdbkqad8nwnsynb7c8haxmscyrz7g3vga28mw6", "registry+https://github.com/rust-lang/crates.io-index#proc-macro-crate@1.3.1": "069r1k56bvgk0f58dm5swlssfcp79im230affwk6d9ck20g04k3z", - "registry+https://github.com/rust-lang/crates.io-index#proc-macro-crate@2.0.2": "092x5acqnic14cw6vacqap5kgknq3jn4c6jij9zi6j85839jc3xh", + "registry+https://github.com/rust-lang/crates.io-index#proc-macro-crate@2.0.0": "1s23imns07vmacn2xjd5hv2h6rr94iqq3fd2frwa6i4h2nk6d0vy", "registry+https://github.com/rust-lang/crates.io-index#proc-macro-error-attr@1.0.4": "0sgq6m5jfmasmwwy8x4mjygx5l7kp8s4j60bv25ckv2j1qc41gm1", "registry+https://github.com/rust-lang/crates.io-index#proc-macro-error@1.0.4": "1373bhxaf0pagd8zkyd03kkx6bchzf6g0dkwrwzsnal9z47lj9fs", "registry+https://github.com/rust-lang/crates.io-index#proc-macro2@1.0.93": "169dw9wch753if1mgyi2nfl1il77gslvh6y2q46qplprwml6m530", @@ -353,11 +332,7 @@ "registry+https://github.com/rust-lang/crates.io-index#regex@1.11.1": "148i41mzbx8bmq32hsj1q4karkzzx5m60qza6gdw4pdc9qdyyi5m", "registry+https://github.com/rust-lang/crates.io-index#remove_dir_all@0.5.3": "1rzqbsgkmr053bxxl04vmvsd1njyz0nxvly97aip6aa2cmb15k9s", "registry+https://github.com/rust-lang/crates.io-index#reqwest@0.11.27": "0qjary4hpplpgdi62d2m0xvbn6lnzckwffm0rgkm2x51023m6ryx", - "registry+https://github.com/rust-lang/crates.io-index#reserve-port@2.0.1": "10x21rdb1hjzp6n5flbbw3hfd7brmirckz1q0zsf3a7s5d516f4q", "registry+https://github.com/rust-lang/crates.io-index#rsa@0.9.7": "06amqm85raq26v6zg00fbf93lbj3kx559n2lpxc3wrvbbiy5vis7", - "registry+https://github.com/rust-lang/crates.io-index#rusqlite@0.32.1": "0vlx040bppl414pbjgbp7qr4jdxwszi9krx0m63zzf2f2whvflvp", - "registry+https://github.com/rust-lang/crates.io-index#rusqlite_migration@1.3.1": "076dm65g0sngzrb93r07va4l5zl3gjx9gq5mlsh21p7p0bl44fwj", - "registry+https://github.com/rust-lang/crates.io-index#rust-multipart-rfc7578_2@0.6.1": "0mwd3i2mk91n6diaxnkw28vyjbifhrm5ls73pcpfzz8a1i0lidq3", "registry+https://github.com/rust-lang/crates.io-index#rustc-demangle@0.1.24": "07zysaafgrkzy2rjgwqdj2a8qdpsm6zv6f5pgpk9x0lm40z9b6vi", "registry+https://github.com/rust-lang/crates.io-index#rustc-hash@1.1.0": "1qkc5khrmv5pqi5l5ca9p5nl5hs742cagrndhbrlk3dhlrx3zm08", "registry+https://github.com/rust-lang/crates.io-index#rustc_version@0.4.1": "14lvdsmr5si5qbqzrajgb6vfn69k0sfygrvfvr2mps26xwi3mjyg", @@ -377,10 +352,9 @@ "registry+https://github.com/rust-lang/crates.io-index#self_cell@1.1.0": "1gmxk5bvnnimcif7v1jk8ai2azfvh9djki545nd86vsnphjgrzf2", "registry+https://github.com/rust-lang/crates.io-index#semver@1.0.24": "1fmvjjkd3f64y5fqr1nakkq371mnwzv09fbz5mbmdxril63ypdiw", "registry+https://github.com/rust-lang/crates.io-index#serde@0.9.15": "1bsla8l5xr9pp5sirkal6mngxcq6q961km88jvf339j5ff8j7dil", - "registry+https://github.com/rust-lang/crates.io-index#serde@1.0.217": "0w2ck1p1ajmrv1cf51qf7igjn2nc51r0izzc00fzmmhkvxjl5z02", - "registry+https://github.com/rust-lang/crates.io-index#serde_derive@1.0.217": "180r3rj5gi5s1m23q66cr5wlfgc5jrs6n1mdmql2njnhk37zg6ss", - "registry+https://github.com/rust-lang/crates.io-index#serde_json@1.0.136": "1lipcjhh1zazh283i4wsl4l14knh81q2rlkwmag8v8s2rwihqsik", - "registry+https://github.com/rust-lang/crates.io-index#serde_path_to_error@0.1.16": "19hlz2359l37ifirskpcds7sxg0gzpqvfilibs7whdys0128i6dg", + "registry+https://github.com/rust-lang/crates.io-index#serde@1.0.218": "0q6z4bnrwagnms0bds4886711l6mc68s979i49zd3xnvkg8wkpz8", + "registry+https://github.com/rust-lang/crates.io-index#serde_derive@1.0.218": "0azqd74xbpb1v5vf6w1fdbgmwp39ljjfj25cib5rgrzlj7hh75gh", + "registry+https://github.com/rust-lang/crates.io-index#serde_json@1.0.139": "19kj3irpa22a7djz1jaf4wambzh7psiqa6zyafqnb76crhx6ry24", "registry+https://github.com/rust-lang/crates.io-index#serde_spanned@0.6.8": "1q89g70azwi4ybilz5jb8prfpa575165lmrffd49vmcf76qpqq47", "registry+https://github.com/rust-lang/crates.io-index#serde_urlencoded@0.7.1": "1zgklbdaysj3230xivihs30qi5vkhigg323a9m62k8jwf4a1qjfk", "registry+https://github.com/rust-lang/crates.io-index#serde_yml@0.0.12": "1p8xwz4znd6fj962y22fdvvv16gb8c0hx4iv5hjplngiidcdvqjr", @@ -412,14 +386,13 @@ "registry+https://github.com/rust-lang/crates.io-index#syn@1.0.109": "0ds2if4600bd59wsv7jjgfkayfzy3hnazs394kz6zdkmna8l3dkj", "registry+https://github.com/rust-lang/crates.io-index#syn@2.0.96": "102wk3cgawimi3i0q3r3xw3i858zkyingg6y7gsxfy733amsvl6m", "registry+https://github.com/rust-lang/crates.io-index#sync_wrapper@0.1.2": "0q01lyj0gr9a93n10nxsn8lwbzq97jqd6b768x17c8f7v7gccir0", - "registry+https://github.com/rust-lang/crates.io-index#sync_wrapper@1.0.2": "0qvjyasd6w18mjg5xlaq5jgy84jsjfsvmnn12c13gypxbv75dwhb", "registry+https://github.com/rust-lang/crates.io-index#synstructure@0.13.1": "0wc9f002ia2zqcbj0q2id5x6n7g1zjqba7qkg2mr0qvvmdk7dby8", "registry+https://github.com/rust-lang/crates.io-index#system-configuration-sys@0.5.0": "1jckxvdr37bay3i9v52izgy52dg690x5xfg3hd394sv2xf4b2px7", "registry+https://github.com/rust-lang/crates.io-index#system-configuration@0.5.1": "1rz0r30xn7fiyqay2dvzfy56cvaa3km74hnbz2d72p97bkf3lfms", "registry+https://github.com/rust-lang/crates.io-index#system-deps@6.2.2": "0j93ryw031n3h8b0nfpj5xwh3ify636xmv8kxianvlyyipmkbrd3", "registry+https://github.com/rust-lang/crates.io-index#target-lexicon@0.12.16": "1cg3bnx1gdkdr5hac1hzxy64fhw4g7dqkd0n3dxy5lfngpr1mi31", "registry+https://github.com/rust-lang/crates.io-index#tempdir@0.3.7": "1n5n86zxpgd85y0mswrp5cfdisizq2rv3la906g6ipyc03xvbwhm", - "registry+https://github.com/rust-lang/crates.io-index#tempfile@3.15.0": "016pmkbwn3shas44gcwq1kc9lajalb90qafhiip5fvv8h6f5b2ls", + "registry+https://github.com/rust-lang/crates.io-index#tempfile@3.17.1": "0c52ggq5vy5mzgk5ly36cgzs1cig3cv6r1jarijmzxgkn6na1r92", "registry+https://github.com/rust-lang/crates.io-index#termcolor@1.4.1": "0mappjh3fj3p2nmrg4y7qv94rchwi9mzmgmfflr8p2awdj7lyy86", "registry+https://github.com/rust-lang/crates.io-index#thiserror-impl@1.0.69": "1h84fmn2nai41cxbhk6pqf46bxqq1b344v8yz089w1chzi76rvjg", "registry+https://github.com/rust-lang/crates.io-index#thiserror-impl@2.0.11": "1hkkn7p2y4cxbffcrprybkj0qy1rl1r6waxmxqvr764axaxc3br6", @@ -440,14 +413,12 @@ "registry+https://github.com/rust-lang/crates.io-index#tokio-tungstenite@0.21.0": "0f5wj0crsx74rlll97lhw0wk6y12nhdnqvmnjx002hjn08fmcfy8", "registry+https://github.com/rust-lang/crates.io-index#tokio-util@0.7.13": "0y0h10a52c7hrldmr3410bp7j3fadq0jn9nf7awddgd2an6smz6p", "registry+https://github.com/rust-lang/crates.io-index#tokio@1.43.0": "17pdm49ihlhfw3rpxix3kdh2ppl1yv7nwp1kxazi5r1xz97zlq9x", - "registry+https://github.com/rust-lang/crates.io-index#toml@0.8.2": "0g9ysjaqvm2mv8q85xpqfn7hi710hj24sd56k49wyddvvyq8lp8q", - "registry+https://github.com/rust-lang/crates.io-index#toml_datetime@0.6.3": "0jsy7v8bdvmzsci6imj8fzgd255fmy5fzp6zsri14yrry7i77nkw", + "registry+https://github.com/rust-lang/crates.io-index#toml@0.8.20": "0j012b37iz1mihksr6a928s6dzszxvblzg3l5wxp7azzsv6sb1yd", + "registry+https://github.com/rust-lang/crates.io-index#toml_datetime@0.6.8": "0hgv7v9g35d7y9r2afic58jvlwnf73vgd1mz2k8gihlgrf73bmqd", "registry+https://github.com/rust-lang/crates.io-index#toml_edit@0.19.15": "08bl7rp5g6jwmfpad9s8jpw8wjrciadpnbaswgywpr9hv9qbfnqv", "registry+https://github.com/rust-lang/crates.io-index#toml_edit@0.20.2": "0f7k5svmxw98fhi28jpcyv7ldr2s3c867pjbji65bdxjpd44svir", - "registry+https://github.com/rust-lang/crates.io-index#tower-http@0.6.2": "15wnvhl6cpir9125s73bqjzjsvfb0fmndmsimnl2ddnlhfvs6gs0", - "registry+https://github.com/rust-lang/crates.io-index#tower-layer@0.3.3": "03kq92fdzxin51w8iqix06dcfgydyvx7yr6izjq0p626v9n2l70j", + "registry+https://github.com/rust-lang/crates.io-index#toml_edit@0.22.24": "0x0lgp70x5cl9nla03xqs5vwwwlrwmd0djkdrp3h3lpdymgpkd0p", "registry+https://github.com/rust-lang/crates.io-index#tower-service@0.3.3": "1hzfkvkci33ra94xjx64vv3pp0sq346w06fpkcdwjcid7zhvdycd", - "registry+https://github.com/rust-lang/crates.io-index#tower@0.5.2": "1ybmd59nm4abl9bsvy6rx31m4zvzp5rja2slzpn712y9b68ssffh", "registry+https://github.com/rust-lang/crates.io-index#tracing-attributes@0.1.28": "0v92l9cxs42rdm4m5hsa8z7ln1xsiw1zc2iil8c6k7lzq0jf2nir", "registry+https://github.com/rust-lang/crates.io-index#tracing-core@0.1.33": "170gc7cxyjx824r9kr17zc9gvzx89ypqfdzq259pr56gg5bwjwp6", "registry+https://github.com/rust-lang/crates.io-index#tracing@0.1.41": "1l5xrzyjfyayrwhvhldfnwdyligi1mpqm8mzbi2m1d6y6p2hlkkq", @@ -474,7 +445,6 @@ "registry+https://github.com/rust-lang/crates.io-index#unsafe-any@0.4.2": "0zwwphsqkw5qaiqmjwngnfpv9ym85qcsyj7adip9qplzjzbn00zk", "registry+https://github.com/rust-lang/crates.io-index#url@1.7.2": "0nim1c90mxpi9wgdw2xh8dqd72vlklwlzam436akcrhjac6pqknx", "registry+https://github.com/rust-lang/crates.io-index#url@2.5.4": "0q6sgznyy2n4l5lm16zahkisvc9nip9aa5q1pps7656xra3bdy1j", - "registry+https://github.com/rust-lang/crates.io-index#urlencoding@2.1.3": "1nj99jp37k47n0hvaz5fvz7z6jd0sb4ppvfy3nphr1zbnyixpy6s", "registry+https://github.com/rust-lang/crates.io-index#utf-8@0.7.6": "1a9ns3fvgird0snjkd3wbdhwd3zdpc2h5gpyybrfr6ra5pkqxk09", "registry+https://github.com/rust-lang/crates.io-index#utf16_iter@1.0.5": "0ik2krdr73hfgsdzw0218fn35fa09dg2hvbi1xp3bmdfrp9js8y8", "registry+https://github.com/rust-lang/crates.io-index#utf8_iter@1.0.4": "1gmna9flnj8dbyd8ba17zigrp9c4c3zclngf5lnb5yvz1ri41hdn", @@ -492,6 +462,7 @@ "registry+https://github.com/rust-lang/crates.io-index#warp@0.3.7": "07137zd13lchy5hxpspd0hs6sl19b0fv2zc1chf02nwnzw1d4y23", "registry+https://github.com/rust-lang/crates.io-index#wasi@0.10.0+wasi-snapshot-preview1": "07y3l8mzfzzz4cj09c8y90yak4hpsi9g7pllyzpr6xvwrabka50s", "registry+https://github.com/rust-lang/crates.io-index#wasi@0.11.0+wasi-snapshot-preview1": "08z4hxwkpdpalxjps1ai9y7ihin26y9f476i53dv98v45gkqg3cw", + "registry+https://github.com/rust-lang/crates.io-index#wasi@0.13.3+wasi-0.2.2": "1lnapbvdcvi3kc749wzqvwrpd483win2kicn1faa4dja38p6v096", "registry+https://github.com/rust-lang/crates.io-index#wasite@0.1.0": "0nw5h9nmcl4fyf4j5d4mfdjfgvwi1cakpi349wc4zrr59wxxinmq", "registry+https://github.com/rust-lang/crates.io-index#wasm-bindgen-backend@0.2.100": "1ihbf1hq3y81c4md9lyh6lcwbx6a5j0fw4fygd423g62lm8hc2ig", "registry+https://github.com/rust-lang/crates.io-index#wasm-bindgen-futures@0.4.50": "0q8ymi6i9r3vxly551dhxcyai7nc491mspj0j1wbafxwq074fpam", @@ -528,11 +499,13 @@ "registry+https://github.com/rust-lang/crates.io-index#windows_x86_64_msvc@0.48.5": "0f4mdp895kkjh9zv8dxvn4pc10xr7839lf5pa9l0193i2pkgr57d", "registry+https://github.com/rust-lang/crates.io-index#windows_x86_64_msvc@0.52.6": "1v7rb5cibyzx8vak29pdrk8nx9hycsjs4w0jgms08qk49jl6v7sq", "registry+https://github.com/rust-lang/crates.io-index#winnow@0.5.40": "0xk8maai7gyxda673mmw3pj1hdizy5fpi7287vaywykkk19sk4zm", + "registry+https://github.com/rust-lang/crates.io-index#winnow@0.7.3": "1c9bmhpdwbdmll6b4l6skabz0296dchnmnxw84hh2y3ggyllwzqf", "registry+https://github.com/rust-lang/crates.io-index#winreg@0.50.0": "1cddmp929k882mdh6i9f2as848f13qqna6czwsqzkh1pqnr5fkjj", + "registry+https://github.com/rust-lang/crates.io-index#wit-bindgen-rt@0.33.0": "0g4lwfp9x6a2i1hgjn8k14nr4fsnpd5izxhc75zpi2s5cvcg6s1j", "registry+https://github.com/rust-lang/crates.io-index#write16@1.0.0": "0dnryvrrbrnl7vvf5vb1zkmwldhjkf2n5znliviam7bm4900z2fi", "registry+https://github.com/rust-lang/crates.io-index#writeable@0.5.5": "0lawr6y0bwqfyayf3z8zmqlhpnzhdx0ahs54isacbhyjwa7g778y", + "registry+https://github.com/rust-lang/crates.io-index#xml-rs@0.8.25": "1i73ajf6scni5bi1a51r19xykgrambdx5fkks0fyg5jqqbml1ff5", "registry+https://github.com/rust-lang/crates.io-index#yansi-term@0.1.2": "1w8vjlvxba6yvidqdvxddx3crl6z66h39qxj8xi6aqayw2nk0p7y", - "registry+https://github.com/rust-lang/crates.io-index#yansi@1.0.1": "0jdh55jyv0dpd38ij4qh60zglbw9aa8wafqai6m0wa7xaxk3mrfg", "registry+https://github.com/rust-lang/crates.io-index#yoke-derive@0.7.5": "0m4i4a7gy826bfvnqa9wy6sp90qf0as3wps3wb0smjaamn68g013", "registry+https://github.com/rust-lang/crates.io-index#yoke@0.7.5": "0h3znzrdmll0a7sglzf9ji0p5iqml11wrj1dypaf6ad6kbpnl3hj", "registry+https://github.com/rust-lang/crates.io-index#zerocopy-derive@0.7.35": "0gnf2ap2y92nwdalzz3x7142f2b83sni66l39vxp2ijd6j080kzs", diff --git a/flake.lock b/flake.lock index 7fc0bd8..faf7ce0 100644 --- a/flake.lock +++ b/flake.lock @@ -1,5 +1,20 @@ { "nodes": { + "crane": { + "locked": { + "lastModified": 1739936662, + "narHash": "sha256-x4syUjNUuRblR07nDPeLDP7DpphaBVbUaSoeZkFbGSk=", + "owner": "ipetkov", + "repo": "crane", + "rev": "19de14aaeb869287647d9461cbd389187d8ecdb7", + "type": "github" + }, + "original": { + "owner": "ipetkov", + "repo": "crane", + "type": "github" + } + }, "flake-utils": { "inputs": { "systems": "systems" @@ -20,16 +35,16 @@ }, "nixpkgs": { "locked": { - "lastModified": 1704732714, - "narHash": "sha256-ABqK/HggMYA/jMUXgYyqVAcQ8QjeMyr1jcXfTpSHmps=", + "lastModified": 1740339700, + "narHash": "sha256-cbrw7EgQhcdFnu6iS3vane53bEagZQy/xyIkDWpCgVE=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "6723fa4e4f1a30d42a633bef5eb01caeb281adc3", + "rev": "04ef94c4c1582fd485bbfdb8c4a8ba250e359195", "type": "github" }, "original": { "id": "nixpkgs", - "ref": "nixos-23.11", + "ref": "nixos-24.11", "type": "indirect" } }, @@ -50,6 +65,7 @@ }, "root": { "inputs": { + "crane": "crane", "nixpkgs": "nixpkgs", "typeshare": "typeshare", "unstable": "unstable" diff --git a/flake.nix b/flake.nix index 90b1d89..970fa21 100644 --- a/flake.nix +++ b/flake.nix @@ -2,12 +2,13 @@ description = "Lumenescent Dreams Tools"; inputs = { - nixpkgs.url = "nixpkgs/nixos-23.11"; + nixpkgs.url = "nixpkgs/nixos-24.11"; unstable.url = "nixpkgs/nixos-unstable"; typeshare.url = "github:1Password/typeshare"; + crane.url = "github:ipetkov/crane"; }; - outputs = { self, nixpkgs, unstable, typeshare, ... }: + outputs = { self, nixpkgs, unstable, typeshare, crane, ... }: let version = builtins.string 0 8 self.lastModifiedDate; supportedSystems = [ "x86_64-linux" ]; @@ -56,6 +57,8 @@ packages."x86_64-linux" = let pkgs = import nixpkgs { system = "x86_64-linux"; }; + craneLib = crane.mkLib pkgs; + src = craneLib.cleanCargoSource ./.; gtkNativeInputs = [ pkgs.pkg-config @@ -88,6 +91,11 @@ dashboard = cargo_nix.workspaceMembers.dashboard.build; # file-service = cargo_nix.workspaceMembers.file-service.build; fitnesstrax = cargo_nix.workspaceMembers.fitnesstrax.build; + l10n-db = craneLib.buildPackage { + pname = "l10n-db"; + cargoExtraArgs = "-p l10n-db"; + src = ./.; + }; otg-gtk = cargo_nix.workspaceMembers.otg-gtk.build; all = pkgs.symlinkJoin { @@ -98,6 +106,7 @@ dashboard # file-service fitnesstrax + l10n-db otg-gtk ]; }; diff --git a/l10n-db/Cargo.toml b/l10n-db/Cargo.toml new file mode 100644 index 0000000..5a1f64a --- /dev/null +++ b/l10n-db/Cargo.toml @@ -0,0 +1,24 @@ +[package] +name = "l10n-db" +version = "0.1.0" +edition = "2021" + +[dependencies] +chrono = { version = "0.4.39", features = ["serde"] } +clap = { version = "4.5.30", features = ["derive"] } +icu_locid = { version = "1.5.0", features = ["serde"] } +serde = { version = "1.0.218", features = ["derive"] } +serde_json = "1.0.139" +tempfile = "3.17.1" +thiserror = "2.0.11" +toml = "0.8.20" +xml-rs = "0.8.25" + +# [lib] +# name = "l10n_db" +# path = "src/lib.rs" +# +# [[bin]] +# name = "l10n-db" +# path = "src/main.rs" + diff --git a/l10n-db/config.toml b/l10n-db/config.toml new file mode 100644 index 0000000..913bdbb --- /dev/null +++ b/l10n-db/config.toml @@ -0,0 +1,8 @@ +db_path = "./i18n" +base_locale = "en" +locales = [ + "en", + "eo", + "de", + "es", +] diff --git a/l10n-db/i18n/SaveSettings.toml b/l10n-db/i18n/SaveSettings.toml new file mode 100644 index 0000000..384705e --- /dev/null +++ b/l10n-db/i18n/SaveSettings.toml @@ -0,0 +1,22 @@ +key = "SaveSettings" +description = "This is a label on a button which will save the settings when clicked" + +[variants.eo] +locale = "eo" +content = "Konservi Agordojn" +modified = "2025-02-24T19:32:11.246639077Z" + +[variants.es] +locale = "es" +content = "Guardar Configuraciones" +modified = "2025-02-24T19:33:23.861329923Z" + +[variants.en] +locale = "en" +content = "Save Settings" +modified = "2025-02-22T23:44:18.874218939Z" + +[variants.de] +locale = "de" +content = "Einstellungen Speichern" +modified = "2025-02-24T19:33:19.516005843Z" diff --git a/l10n-db/i18n/TimeDistance.toml b/l10n-db/i18n/TimeDistance.toml new file mode 100644 index 0000000..aa6ffb2 --- /dev/null +++ b/l10n-db/i18n/TimeDistance.toml @@ -0,0 +1,22 @@ +key = "TimeDistance" +description = "A summary of a workout or many workouts that involve a time and a distance" + +[variants.es] +locale = "es" +content = "{distance} de {activity} en {hours, plural, one {}=1 {{hours} hora} other {{hours} horas}} y {minutes, plural, one {}=1 {{minutes} minuto} other {{minutes} minutos}}" +modified = "2025-02-24T19:33:23.861604738Z" + +[variants.eo] +locale = "eo" +content = "{distance} de {activity} en {hours, plural, =1 {{hours} horo} other {{hours} horoj}} {minutes, plural, =1 {{minutes} minuto} other {{minutes} minutoj}}" +modified = "2025-02-24T19:32:11.246943602Z" + +[variants.en] +locale = "en" +content = "{distance} of {activity} in {hours, plural, =1 {{hours} hour} other {{hours} hours}} and {minutes, plural, =1 {{minutes} minute} other {{minutes} minutes}}" +modified = "2025-02-24T14:09:17.361641899Z" + +[variants.de] +locale = "de" +content = "{distance} von {activity} in {hours, plural, one {}=1 {{hours} Stunde} other {{hours} Stunden}} und {minutes, plural, one {}=1 {{minutes} Minute} other {{minutes} Minuten}}" +modified = "2025-02-24T19:33:19.516210807Z" diff --git a/l10n-db/i18n/Welcome.toml b/l10n-db/i18n/Welcome.toml new file mode 100644 index 0000000..db36ae3 --- /dev/null +++ b/l10n-db/i18n/Welcome.toml @@ -0,0 +1,22 @@ +key = "Welcome" +description = "This is a welcome content that will be shown on first app opening, before configuration." + +[variants.en] +locale = "en" +content = "Welcome to FitnessTrax, the privacy-centered fitness tracker" +modified = "2025-02-25T02:12:25.757240004Z" + +[variants.eo] +locale = "eo" +content = "Bonvenon al FitnessTrax" +modified = "2025-02-24T19:32:11.246407627Z" + +[variants.es] +locale = "es" +content = "Bienvenido a FitnessTrax" +modified = "2025-02-24T19:33:23.861143003Z" + +[variants.de] +locale = "de" +content = "Willkommen bei FitnessTrax" +modified = "2025-02-24T19:33:19.515861453Z" diff --git a/l10n-db/src/bin/l10n-db.rs b/l10n-db/src/bin/l10n-db.rs new file mode 100644 index 0000000..d02b30e --- /dev/null +++ b/l10n-db/src/bin/l10n-db.rs @@ -0,0 +1,143 @@ +use std::{fmt, path::PathBuf}; + +use clap::{Parser, Subcommand}; + +use icu_locid::{langid, LanguageIdentifier}; +use l10n_db::{ + self, js, read_file, + xliff::{self, import_file}, + Bundle, Editor, ReadError, +}; +use serde::Deserialize; + +#[derive(Parser)] +#[command(version, about, long_about = None)] +struct Cli { + #[command(subcommand)] + command: Option, +} + +#[derive(Subcommand)] +enum Commands { + /// Edit, potentially creating, a key + EditKey { + #[arg(short, long)] + key: String, + #[arg(short, long)] + locale: Option, + }, + /// List al keys in the database + ListKeys, + // Search the database + // Search { }, + Import { + #[arg(short, long)] + file: String, + }, + /// Export the database + Export { + #[arg(short, long)] + format: String, + #[arg(short, long)] + file: String, + #[arg(short, long)] + locale: Option, + }, + Report, +} + +#[derive(Debug, Deserialize)] +struct Config { + db_path: PathBuf, + base_locale: LanguageIdentifier, +} + +fn edit_key(bundle: &mut Bundle, key: String, locale: LanguageIdentifier, editor: &str) { + let message = bundle.message(key); + Editor::edit(message, locale, editor); + bundle.save(); +} + +#[derive(Clone, Debug, Default)] +struct Report { + keys: Vec, + // source_deleted: Vec, + out_of_date: Vec, +} + +impl fmt::Display for Report { + fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { + writeln!(f, "{} messages in bundle", self.keys.len())?; + writeln!(f, "Out of date messages")?; + for key in self.out_of_date.iter() { + writeln!(f, "\t{}", key)?; + } + Ok(()) + } +} + +fn generate_report(bundle: &Bundle, base_locale: &LanguageIdentifier) -> Report { + let mut report: Report = Default::default(); + for (key, message) in bundle.message_iter() { + report.keys.push(key.to_owned()); + if !message.variants_out_of_date(base_locale).is_empty() { + report.out_of_date.push(key.to_owned()) + } + } + + report +} + +fn main() { + let editor = std::env::var("EDITOR").expect("Set EDITOR to the path to your favorite editor"); + + let config: Config = read_file(&PathBuf::from("./config.toml")) + .and_then(|bytes| String::from_utf8(bytes).map_err(|_| ReadError::InvalidFormat)) + .and_then(|content| toml::from_str(&content).map_err(|_| ReadError::InvalidFormat)) + .unwrap(); + + let cli = Cli::parse(); + + let mut bundle = Bundle::load_from_disk(PathBuf::from(&config.db_path)); + + match &cli.command { + Some(Commands::EditKey { key, locale }) => { + let identifier = locale.as_ref() + .map(|l| l.parse::().unwrap()) + .unwrap_or(config.base_locale); + edit_key(&mut bundle, key.to_owned(), identifier, &editor) + } + Some(Commands::ListKeys) => { + for (key, _) in bundle.message_iter() { + println!("{}", key); + } + } + Some(Commands::Import { file }) => { + import_file(&mut bundle, &PathBuf::from(file)).unwrap(); + bundle.save(); + } + Some(Commands::Export { + format, + file, + locale, + }) => { + let locale = locale + .as_ref() + .map(|l| l.clone().parse::().unwrap()) + .unwrap_or(langid!("en")); + + match format.as_ref() { + "js" => js::export_file(&bundle, locale, &PathBuf::from(file)).unwrap(), + "xliff" => { + xliff::export_file(&bundle, locale, &PathBuf::from(file)).unwrap() + } + _ => todo!(), + } + } + Some(Commands::Report) => { + let report = generate_report(&bundle, &config.base_locale); + println!("{}", report); + } + None => {} + } +} diff --git a/l10n-db/src/bundle.rs b/l10n-db/src/bundle.rs new file mode 100644 index 0000000..1b55392 --- /dev/null +++ b/l10n-db/src/bundle.rs @@ -0,0 +1,143 @@ +use std::{collections::HashMap, fs::File, io::{BufReader, Read, Write}, path::{Path, PathBuf}}; + +use chrono::{DateTime, Utc}; +use icu_locid::LanguageIdentifier; +use serde::{Deserialize, Serialize}; + +pub struct Bundle { + path: PathBuf, + messages: HashMap, +} + +impl Bundle { + pub fn load_from_disk(path: PathBuf) -> Self { + let mut messages = HashMap::new(); + if path.is_dir() { + for entry in std::fs::read_dir(&path).unwrap() { + let entry = entry.unwrap(); + let path = entry.path().clone(); + let key = path.file_stem().unwrap(); + + let message = Message::from_file(&entry.path()); + messages.insert(key.to_str().unwrap().to_owned(), message); + } + } + Self { path, messages } + } + + pub fn message_iter(&self) -> impl Iterator { + self.messages.iter() + } + + pub fn message(&mut self, name: String) -> &mut Message { + self.messages + .entry(name.to_owned()) + .or_insert(Message::new(name.to_owned())) + } + + pub fn save(&self) { + self.messages.iter().for_each(|(key, value)| { + let mut path = self.path.clone(); + path.push(key); + path.set_extension("toml"); + save_file(&path, toml::to_string(value).unwrap().as_bytes()); + }); + } +} + +fn save_file(path: &PathBuf, s: &[u8]) { + let mut f = File::create(path).unwrap(); + let _ = f.write(s).unwrap(); +} + +#[derive(Deserialize, Serialize, Debug)] +pub struct Message { + key: String, + description: String, + variants: HashMap, +} + +impl Message { + pub fn new(key: String) -> Self { + Self { + key, + description: "".to_owned(), + variants: HashMap::new(), + } + } + + pub fn from_file(path: &Path) -> Message { + let file = std::fs::File::open(path).unwrap(); + let mut content = Vec::new(); + let mut reader = BufReader::new(file); + let _ = reader.read_to_end(&mut content); + toml::from_str(&String::from_utf8(content).unwrap()).unwrap() + } + + pub fn set_description(&mut self, desc: String) { + self.description = desc; + } + + pub fn description(&self) -> &str { + &self.description + } + + pub fn variant(&self, locale: &LanguageIdentifier) -> Option<&Variant> { + self.variants.get(locale) + } + + pub fn variant_mut(&mut self, locale: LanguageIdentifier) -> &mut Variant { + self.variants.entry(locale.clone()).or_insert(Variant { + locale, + content: "".to_owned(), + modified: Utc::now(), + }) + } + + pub fn variants_out_of_date( + &self, + base_locale: &LanguageIdentifier, + ) -> Vec { + match self + .variants + .get(base_locale) + .map(|variant| variant.modified()) + { + Some(base_date) => self + .variants + .iter() + .filter(|(_, value)| base_date > value.modified()) + .map(|(locale, _)| locale.clone()) + .collect(), + None => vec![], + } + } + + // pub fn missing_variants(&self, locals: Vec) -> Vec {} +} + +#[derive(Deserialize, Serialize, Debug, Clone)] +pub struct Variant { + locale: LanguageIdentifier, + content: String, + modified: DateTime, +} + +impl Variant { + pub fn content(&self) -> &str { + &self.content + } + + pub fn set_content(&mut self, content: String) { + self.content = content; + self.modified = Utc::now(); + } + + pub fn modified(&self) -> DateTime { + self.modified + } +} + + +#[cfg(test)] +mod test {} diff --git a/l10n-db/src/editor.rs b/l10n-db/src/editor.rs new file mode 100644 index 0000000..b6d9a9f --- /dev/null +++ b/l10n-db/src/editor.rs @@ -0,0 +1,43 @@ +use std::{io::Write, process::Command}; + +use icu_locid::{langid, LanguageIdentifier}; +use serde::{Deserialize, Serialize}; + +use crate::{read_fh, Message}; + +#[derive(Serialize, Deserialize, Debug, Clone)] +struct EditorMessage { + description: String, + source: String, + content: String, +} + +pub struct Editor {} + +impl Editor { + pub fn edit(msg: &mut Message, locale: LanguageIdentifier, editor: &str) { + let description = msg.description().to_owned(); + let source_string = msg.variant_mut(langid!("en")).content().to_owned(); + let variant = msg.variant_mut(locale); + // let editable_content = EditorMessage::from_variant(description, &variant); + let editable_content = EditorMessage { + description, + source: source_string, + content: variant.content().to_owned(), + }; + + let mut file = tempfile::NamedTempFile::new().unwrap(); + let _ = file.write(toml::to_string(&editable_content).unwrap().as_bytes()); + let _ = file.flush(); + let mut cmd = Command::new(editor).args([file.path()]).spawn().unwrap(); + cmd.wait().unwrap(); + let file = file.reopen().unwrap(); + let content = read_fh(&file).unwrap(); + + let new_variant: EditorMessage = + toml::from_str(&String::from_utf8(content).unwrap()).unwrap(); + + variant.set_content(new_variant.content); + msg.set_description(new_variant.description); + } +} diff --git a/l10n-db/src/formats/js.rs b/l10n-db/src/formats/js.rs new file mode 100644 index 0000000..6aa94b2 --- /dev/null +++ b/l10n-db/src/formats/js.rs @@ -0,0 +1,22 @@ +use std::{collections::BTreeMap, fs::File, io::Write, path::Path}; + +use icu_locid::LanguageIdentifier; + +use crate::{Bundle, WriteError}; + +pub fn export_file(bundle: &Bundle, locale: LanguageIdentifier, path: &Path) -> Result<(), WriteError> { + let mut file = File::create(path).unwrap(); + export_fh(bundle, locale, &mut file) +} + +pub fn export_fh(bundle: &Bundle, locale: LanguageIdentifier, fh: &mut File) -> Result<(), WriteError> { + let messages = bundle.message_iter().map(|(key, message)| { + let content = message.variant(&locale).unwrap().content().to_owned(); + (key.to_owned(), content) + }).collect::>(); + + let messages: BTreeMap = messages.into_iter().collect(); + let _ = fh.write(serde_json::to_string_pretty(&messages).unwrap().as_bytes()).unwrap(); + + Ok(()) +} diff --git a/l10n-db/src/formats/mod.rs b/l10n-db/src/formats/mod.rs new file mode 100644 index 0000000..6fbd8ce --- /dev/null +++ b/l10n-db/src/formats/mod.rs @@ -0,0 +1,4 @@ +pub mod js; +pub mod xliff; + + diff --git a/l10n-db/src/formats/xliff.rs b/l10n-db/src/formats/xliff.rs new file mode 100644 index 0000000..d05ecaa --- /dev/null +++ b/l10n-db/src/formats/xliff.rs @@ -0,0 +1,146 @@ +use std::{ + fs::File, + io::{BufReader, Read, Write}, + path::Path, +}; + +use icu_locid::{langid, LanguageIdentifier}; +use xml::{attribute::OwnedAttribute, reader, writer, EmitterConfig, EventReader, EventWriter}; + +use crate::{Bundle, Message, ReadError, WriteError}; + +pub fn export_file( + bundle: &Bundle, + locale: LanguageIdentifier, + path: &Path, +) -> Result<(), WriteError> { + let mut file = File::create(path).unwrap(); + export_fh(bundle, locale, &mut file) +} + +pub fn export_fh(bundle: &Bundle, locale: LanguageIdentifier, fh: W) -> Result<(), WriteError> +where + W: Write, +{ + let mut writer = EmitterConfig::new().perform_indent(true).create_writer(fh); + + writer + .write( + writer::XmlEvent::start_element("xliff") + .attr("xmlns", "urn:oasis:names:tc:xliff:document:2.0") + .attr("version", "2.0") + .attr("srcLang", &format!("{}", locale)), + ) + .unwrap(); + writer + .write(writer::XmlEvent::start_element("file").attr("id", "main")) + .unwrap(); + + for (key, message) in bundle.message_iter() { + write_message(&mut writer, key, message, &locale); + } + + writer.write(writer::XmlEvent::end_element()).unwrap(); + writer.write(writer::XmlEvent::end_element()).unwrap(); + Ok(()) +} + +pub fn import_file(bundle: &mut Bundle, path: &Path) -> Result<(), ReadError> { + let file = File::open(path).unwrap(); + let file = BufReader::new(file); + + import_reader(bundle, file) +} + +pub fn import_reader(bundle: &mut Bundle, fh: R) -> Result<(), ReadError> +where + R: Read, +{ + let parser = EventReader::new(fh); + + let mut locale: LanguageIdentifier = langid!("en"); + let mut current_key = None; + let mut current_text: Option = None; + let mut in_target = false; + + for event in parser { + match event { + Ok(reader::XmlEvent::StartElement { + name, attributes, .. + }) => match name.local_name.as_ref() { + "xliff" => { + locale = find_attribute(&attributes, "trgLang") + .unwrap() + .parse::() + .unwrap(); + } + "unit" => current_key = find_attribute(&attributes, "id"), + "target" => in_target = true, + _ => println!("name: {}", name), + }, + Ok(reader::XmlEvent::EndElement { name }) => match name.local_name.as_ref() { + "unit" => { + if let Some(key) = current_key { + let message = bundle.message(key); + let variant = message.variant_mut(locale.clone()); + if let Some(ref text) = current_text { + variant.set_content(text.clone()); + } + } + current_key = None; + } + "target" => in_target = false, + _ => {} + }, + Ok(reader::XmlEvent::Characters(data)) => { + if in_target { + current_text = Some(data) + } + } + Err(e) => { + eprintln!("error: {e}"); + break; + } + _ => {} + } + } + + Ok(()) +} + +fn write_message( + writer: &mut EventWriter, + key: &str, + message: &Message, + locale: &LanguageIdentifier, +) where + T: std::io::Write, +{ + [ + writer::XmlEvent::start_element("unit") + .attr("id", key) + .into(), + writer::XmlEvent::start_element("notes").into(), + writer::XmlEvent::start_element("note").into(), + writer::XmlEvent::characters(message.description()), + writer::XmlEvent::end_element().into(), + writer::XmlEvent::end_element().into(), + writer::XmlEvent::start_element("segment").into(), + writer::XmlEvent::start_element("source").into(), + writer::XmlEvent::characters(message.variant(locale).unwrap().content()), + writer::XmlEvent::end_element().into(), + writer::XmlEvent::end_element().into(), + writer::XmlEvent::end_element().into(), + ] + .into_iter() + .for_each(|elem: writer::XmlEvent| writer.write(elem).unwrap()); +} + +fn find_attribute(attrs: &Vec, name: &str) -> Option { + for f in attrs { + if name == f.name.local_name { + return Some(f.value.clone()); + } + } + None +} diff --git a/l10n-db/src/lib.rs b/l10n-db/src/lib.rs new file mode 100644 index 0000000..2268a86 --- /dev/null +++ b/l10n-db/src/lib.rs @@ -0,0 +1,11 @@ +mod bundle; +pub use bundle::{Bundle, Message, Variant}; + +mod editor; +pub use editor::Editor; + +mod formats; +pub use formats::{js, xliff}; + +mod utils; +pub use utils::*; diff --git a/l10n-db/src/utils.rs b/l10n-db/src/utils.rs new file mode 100644 index 0000000..82435a0 --- /dev/null +++ b/l10n-db/src/utils.rs @@ -0,0 +1,37 @@ +use std::{fs::File, io::{BufReader, ErrorKind, Read}, path::Path}; +use thiserror::Error; + +#[derive(Debug, Error)] +pub enum ReadError { + #[error("file not found")] + FileNotFound, + + #[error("invalid file format")] + InvalidFormat, + + #[error("unhandled read error")] + Unhandled(ErrorKind), +} + +pub fn read_file(path: &Path) -> Result, ReadError> { + let file = File::open(path).map_err(|err| { + match err.kind() { + ErrorKind::NotFound => ReadError::FileNotFound, + _ => ReadError::Unhandled( err.kind()), + } + })?; + read_fh(&file) +} + +pub fn read_fh(file: &File) -> Result, ReadError> { + let mut content = Vec::new(); + let mut reader = BufReader::new(file); + reader.read_to_end(&mut content).map_err(|err| ReadError::Unhandled(err.kind()))?; + Ok(content) +} + +#[derive(Debug, Error)] +pub enum WriteError { + #[error("unhandled write error")] + Unhandled(ErrorKind), +}