├── override-map.json ├── .gitignore ├── markdown ├── after.png ├── large.png └── before.png ├── assets └── pack_icon.png ├── justfile ├── .vscode ├── tasks.json └── launch.json ├── Cargo.toml ├── LICENSE ├── src ├── fetch_bedrock.rs ├── fetch_java.rs ├── pack.rs ├── parse.rs ├── generate.rs ├── api.rs └── main.rs ├── README.md └── Cargo.lock /override-map.json: -------------------------------------------------------------------------------- 1 | { 2 | "tile.snow_layer.name":"block.minecraft.snow" 3 | } 4 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | *.mcpack 2 | *.exe 3 | dist 4 | .vscode 5 | 6 | # Added by cargo 7 | 8 | /target -------------------------------------------------------------------------------- /markdown/after.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/KAIYOHUGO/To-Bedrock/HEAD/markdown/after.png -------------------------------------------------------------------------------- /markdown/large.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/KAIYOHUGO/To-Bedrock/HEAD/markdown/large.png -------------------------------------------------------------------------------- /assets/pack_icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/KAIYOHUGO/To-Bedrock/HEAD/assets/pack_icon.png -------------------------------------------------------------------------------- /markdown/before.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/KAIYOHUGO/To-Bedrock/HEAD/markdown/before.png -------------------------------------------------------------------------------- /justfile: -------------------------------------------------------------------------------- 1 | build BEDROCK_VERSION JAVA_VERSION: 2 | mkdir -p dist 3 | cargo run -- --override-map ./override-map.json --emit-map --output dist/ auto -b {{BEDROCK_VERSION}} -j {{JAVA_VERSION}} 4 | -------------------------------------------------------------------------------- /.vscode/tasks.json: -------------------------------------------------------------------------------- 1 | { 2 | // See https://go.microsoft.com/fwlink/?LinkId=733558 3 | // for the documentation about the tasks.json format 4 | "version": "2.0.0", 5 | "tasks": [ 6 | { 7 | "label": "debug", 8 | "type": "shell", 9 | "command": "cd ${fileDirname} && dlv debug --headless --listen=:2345 --log --api-version=2", 10 | "problemMatcher": [], 11 | "group": { 12 | "kind": "build", 13 | "isDefault": true 14 | } 15 | } 16 | ] 17 | } 18 | -------------------------------------------------------------------------------- /.vscode/launch.json: -------------------------------------------------------------------------------- 1 | { 2 | // Use IntelliSense to learn about possible attributes. 3 | // Hover to view descriptions of existing attributes. 4 | // For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387 5 | "version": "0.2.0", 6 | "configurations": [ 7 | { 8 | "name": "Connect to server", 9 | "type": "go", 10 | "request": "attach", 11 | "mode": "remote", 12 | "remotePath": "${fileDirname}", 13 | "port": 2345, 14 | "host": "127.0.0.1" 15 | } 16 | ] 17 | } 18 | -------------------------------------------------------------------------------- /Cargo.toml: -------------------------------------------------------------------------------- 1 | [package] 2 | name = "to-bedrock" 3 | version = "0.1.0" 4 | edition = "2021" 5 | 6 | # See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html 7 | 8 | [dependencies] 9 | anyhow = "1.0.70" 10 | serde_json = "1.0.94" 11 | bytes = "1.4.0" 12 | octocrab = "0.19.0" 13 | base64 = "0.21.0" 14 | 15 | [dependencies.clap] 16 | version = "4.5.7" 17 | features = ["derive","color"] 18 | 19 | [dependencies.zip] 20 | version = "0.6.4" 21 | default-features = false 22 | features = ["deflate"] 23 | 24 | [dependencies.tokio] 25 | version = "1.26.0" 26 | features = ["fs", "macros", "macros", "parking_lot", "rt-multi-thread"] 27 | 28 | [dependencies.serde] 29 | version = "1.0.157" 30 | features = ["derive"] 31 | 32 | [dependencies.reqwest] 33 | version = "0.11.14" 34 | features = ["json", "stream"] 35 | 36 | [dependencies.tokio-util] 37 | version = "0.7.7" 38 | features = ["io", "io-util"] 39 | 40 | 41 | [dependencies.tokio-stream] 42 | version = "0.1.12" 43 | default-features = false 44 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2021 KAIYOHUGO 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /src/fetch_bedrock.rs: -------------------------------------------------------------------------------- 1 | use std::{collections::HashMap, num::NonZeroUsize}; 2 | 3 | use anyhow::Result; 4 | use tokio::task; 5 | 6 | use crate::{ 7 | api::get, 8 | parse::{des_bedrock, TranslateKV}, 9 | }; 10 | 11 | pub async fn fetch( 12 | bedrock_version: String, 13 | max: NonZeroUsize, 14 | ) -> Result> { 15 | let mut ret: HashMap = Default::default(); 16 | let mut set = task::JoinSet::new(); 17 | let octocrab = octocrab::instance(); 18 | let page = octocrab 19 | .repos("Mojang", "bedrock-samples") 20 | .get_content() 21 | .path("resource_pack/texts") 22 | .r#ref(format!("v{}", bedrock_version)) 23 | .send() 24 | .await?; 25 | for i in page.items { 26 | let Some((lang_id,ext))=i.name.split_once('.') else { 27 | continue; 28 | }; 29 | if ext != "lang" { 30 | continue; 31 | } 32 | let Some(url) = i.download_url else { 33 | continue; 34 | }; 35 | let lang_id = lang_id.to_lowercase(); 36 | set.spawn(async move { 37 | let content = get(url).await?; 38 | let kv = des_bedrock(content).await?; 39 | anyhow::Ok((lang_id, kv)) 40 | }); 41 | if set.len() > max.get() { 42 | let (k, v) = set.join_next().await.expect("never fail")??; 43 | ret.insert(k, v); 44 | } 45 | } 46 | while let Some(value) = set.join_next().await { 47 | let (k, v) = value??; 48 | ret.insert(k, v); 49 | } 50 | 51 | Ok(ret) 52 | } 53 | -------------------------------------------------------------------------------- /src/fetch_java.rs: -------------------------------------------------------------------------------- 1 | use anyhow::Result; 2 | use std::{collections::HashMap, num::NonZeroUsize}; 3 | use tokio::task; 4 | use tokio_util::io::SyncIoBridge; 5 | 6 | use crate::{ 7 | api::VersionPackage, 8 | parse::{des_en_us_from_java, des_java, TranslateKV}, 9 | }; 10 | 11 | pub async fn fetch( 12 | java_package: VersionPackage, 13 | max: NonZeroUsize, 14 | ) -> Result> { 15 | let mut ret: HashMap = Default::default(); 16 | let mut set = task::JoinSet::new(); 17 | 18 | set.spawn(async move { 19 | let java = java_package.downloads.client.url.get().await?; 20 | let kv = des_en_us_from_java(java, Some(java_package.downloads.client.size)).await?; 21 | anyhow::Ok(("en_us".into(), kv)) 22 | }); 23 | 24 | let assets = java_package.asset_index.url.get().await?; 25 | let iter = assets 26 | .objects 27 | .into_iter() 28 | .filter(|(path, _)| path.starts_with("minecraft/lang/")) 29 | .map(|(path, obj)| { 30 | ( 31 | path.trim_start_matches("minecraft/lang/") 32 | .trim_end_matches(".json") 33 | .into(), 34 | obj, 35 | ) 36 | }); 37 | 38 | for (lang_id, obj) in iter { 39 | set.spawn(async move { 40 | let reader = obj.url().get().await?; 41 | let kv = task::spawn_blocking(move || des_java(SyncIoBridge::new(reader))).await??; 42 | anyhow::Ok((lang_id, kv)) 43 | }); 44 | 45 | if set.len() > max.get() { 46 | let (k, v) = set.join_next().await.expect("never fail")??; 47 | ret.insert(k, v); 48 | } 49 | } 50 | 51 | while let Some(value) = set.join_next().await { 52 | let (k, v) = value??; 53 | ret.insert(k, v); 54 | } 55 | Ok(ret) 56 | } 57 | -------------------------------------------------------------------------------- /src/pack.rs: -------------------------------------------------------------------------------- 1 | use anyhow::Result; 2 | use serde::Serialize; 3 | use std::{io::Write, path::Path}; 4 | use zip::{write::FileOptions, ZipWriter}; 5 | 6 | use crate::parse::{sync_ser_bedrock, TranslateKV}; 7 | 8 | #[derive(Serialize)] 9 | pub struct Manifest { 10 | pub format_version: u8, 11 | pub header: Header, 12 | pub modules: Vec, 13 | } 14 | 15 | #[derive(Serialize)] 16 | pub struct Header { 17 | pub description: String, 18 | pub name: String, 19 | pub uuid: String, 20 | pub version: [u8; 3], 21 | pub min_engine_version: [u8; 3], 22 | } 23 | 24 | #[derive(Serialize)] 25 | pub struct Module { 26 | #[serde(rename = "type")] 27 | pub module_type: String, 28 | pub uuid: String, 29 | pub version: [u8; 3], 30 | } 31 | 32 | pub struct LangInfo { 33 | pub id: String, 34 | pub name: String, 35 | pub texts: TranslateKV, 36 | } 37 | 38 | pub fn pack_addon( 39 | path: impl AsRef, 40 | lang_info_list: Vec, 41 | manifest: Manifest, 42 | ) -> Result<()> { 43 | let mut file = ZipWriter::new(std::fs::File::create(path)?); 44 | let option = FileOptions::default().compression_level(Some(9)); 45 | 46 | file.start_file("pack_icon.png", option)?; 47 | file.write_all(include_bytes!("../assets/pack_icon.png"))?; 48 | 49 | file.start_file("manifest.json", option)?; 50 | serde_json::to_writer(&mut file, &manifest)?; 51 | 52 | let mut lang_id_list = vec![]; 53 | let mut lang_name_list = vec![]; 54 | for LangInfo { id, name, texts } in &lang_info_list { 55 | lang_id_list.push(id); 56 | lang_name_list.push([id, name]); 57 | 58 | file.start_file(format!("texts/{}.lang", &id), option)?; 59 | sync_ser_bedrock(&mut file, texts)?; 60 | } 61 | 62 | file.start_file("texts/languages.json", option)?; 63 | serde_json::to_writer(&mut file, &lang_id_list)?; 64 | 65 | file.start_file("texts/language_names.json", option)?; 66 | serde_json::to_writer(&mut file, &lang_name_list)?; 67 | 68 | file.finish()?; 69 | Ok(()) 70 | } 71 | -------------------------------------------------------------------------------- /src/parse.rs: -------------------------------------------------------------------------------- 1 | use anyhow::Result; 2 | use std::{ 3 | collections::HashMap, 4 | io::{Cursor, Read, Write}, 5 | }; 6 | use tokio::io::{AsyncBufRead, AsyncBufReadExt, AsyncReadExt}; 7 | use zip::ZipArchive; 8 | 9 | pub type TranslateKV = HashMap; 10 | 11 | // TODO: add support for namespace 12 | // pub type TranslateKV = HashMap; 13 | // #[derive(Debug, Clone, Hash)] 14 | // pub struct Namespace(Vec); 15 | 16 | pub fn des_java(reader: impl Read) -> Result { 17 | Ok(serde_json::from_reader(reader)?) 18 | } 19 | 20 | pub async fn des_bedrock(reader: impl AsyncBufReadExt + Unpin) -> Result { 21 | let mut kv = TranslateKV::new(); 22 | let mut lines = reader.lines(); 23 | 24 | while let Some(line) = lines.next_line().await? { 25 | let text = if let Some((text, _comment)) = line.split_once("##") { 26 | text 27 | } else { 28 | &line 29 | }; 30 | // ignore BOM 31 | let text = text.trim_start_matches('\u{feff}').trim_end_matches("\t#"); 32 | let Some((k,v)) = text.split_once('=') else { 33 | continue; 34 | }; 35 | kv.insert(k.to_owned(), v.to_owned()); 36 | } 37 | Ok(kv) 38 | } 39 | 40 | pub fn sync_ser_bedrock(writer: &mut impl Write, kv: &TranslateKV) -> Result<()> { 41 | for (k, v) in kv { 42 | writeln!(writer, "{k}={v}")?; 43 | } 44 | Ok(()) 45 | } 46 | 47 | pub async fn des_en_us_from_java( 48 | mut reader: impl AsyncBufRead + Unpin, 49 | size: Option, 50 | ) -> Result { 51 | let mut tmp_jar = if let Some(size) = size { 52 | Vec::with_capacity(size) 53 | } else { 54 | vec![] 55 | }; 56 | reader.read_to_end(&mut tmp_jar).await?; 57 | 58 | let mut jar = ZipArchive::new(Cursor::new(tmp_jar))?; 59 | let en_us = jar.by_name("assets/minecraft/lang/en_us.json")?; 60 | let kv = des_java(en_us)?; 61 | Ok(kv) 62 | } 63 | 64 | #[cfg(test)] 65 | mod tests { 66 | use super::*; 67 | 68 | #[tokio::test] 69 | async fn test_des_bedrock() { 70 | let bytes = "\u{feff} 71 | aaa=bbb\t\t## ignore me 72 | ## line comment 73 | 74 | ## 75 | ccc=ddd\t#"; 76 | let result = HashMap::from_iter([ 77 | ("aaa".to_owned(), "bbb".to_owned()), 78 | ("ccc".to_owned(), "ddd".to_owned()), 79 | ]); 80 | let kv = des_bedrock(bytes.as_bytes()).await.unwrap(); 81 | assert_eq!(kv, result) 82 | } 83 | } 84 | -------------------------------------------------------------------------------- /src/generate.rs: -------------------------------------------------------------------------------- 1 | use std::{collections::HashMap, path::Path}; 2 | 3 | use crate::{ 4 | pack::{pack_addon, Header, LangInfo, Manifest, Module}, 5 | parse::TranslateKV, 6 | }; 7 | use anyhow::{anyhow, Result}; 8 | use tokio::task; 9 | 10 | /// output is `Map` 11 | fn gen_bedrock_java_id_map( 12 | bedrock: TranslateKV, 13 | java: TranslateKV, 14 | override_map: TranslateKV, 15 | ) -> TranslateKV { 16 | let mut java_text_id = TranslateKV::new(); 17 | java_text_id.reserve(java.capacity()); 18 | for (k, v) in java { 19 | java_text_id.insert(v, k); 20 | } 21 | 22 | let mut ret = TranslateKV::new(); 23 | for (bedrock_id, bedrock_text) in bedrock { 24 | if bedrock_text.is_empty() { 25 | continue; 26 | } 27 | if let Some(java_id) = java_text_id.get(&bedrock_text).cloned() { 28 | ret.insert(bedrock_id, java_id); 29 | } 30 | } 31 | 32 | for (bedrock_id, java_id) in override_map { 33 | ret.insert(bedrock_id, java_id); 34 | } 35 | 36 | ret 37 | } 38 | 39 | fn gen_translate( 40 | bedrock_java_id_map: &TranslateKV, 41 | mut java: TranslateKV, 42 | bedrock: TranslateKV, 43 | ) -> TranslateKV { 44 | let mut translate = TranslateKV::new(); 45 | for (bedrock_id, java_id) in bedrock_java_id_map { 46 | let Some(java_text) = java.remove(java_id) else { 47 | continue; 48 | }; 49 | if Some(&java_text) == bedrock.get(bedrock_id) { 50 | continue; 51 | } 52 | translate.insert(bedrock_id.clone(), java_text); 53 | } 54 | translate 55 | } 56 | 57 | pub async fn gen_output( 58 | mut java_texts: HashMap, 59 | mut bedrock_texts: HashMap, 60 | override_map: TranslateKV, 61 | version: [u8; 3], 62 | output: &Path, 63 | ) -> Result { 64 | let (Some(java_en_us), Some(bedrock_en_us)) = 65 | (java_texts.remove("en_us"), bedrock_texts.remove("en_us")) 66 | else { 67 | return Err(anyhow!("en_us.json and en_us.lang file are required")); 68 | }; 69 | 70 | let bedrock_java_id_map = gen_bedrock_java_id_map(bedrock_en_us, java_en_us, override_map); 71 | let mut path = output.join(format!( 72 | "To_Bedrock_{}_{}_{}", 73 | &version[0], &version[1], &version[2] 74 | )); 75 | path.set_extension("mcpack"); 76 | let manifest = Manifest { 77 | format_version: 2, 78 | header: Header { 79 | description: "Java Translation Pack Generate by kaiyo hugo".into(), 80 | name: "To Bedrock Translate Resource Pack".into(), 81 | uuid: "66c6e9a8-3093-462a-9c36-dbb052165623".into(), 82 | version, 83 | min_engine_version: [1, 16, 0], 84 | }, 85 | modules: vec![Module { 86 | module_type: "resources".into(), 87 | uuid: "743f6949-53be-44b6-b326-398005028623".into(), 88 | version, 89 | }], 90 | }; 91 | 92 | let mut lang_info_list = vec![]; 93 | for (id, java_text) in java_texts { 94 | let id = id 95 | .split_once('_') 96 | .map(|(begin, end)| format!("{}_{}", begin, end.to_uppercase())) 97 | .unwrap_or(id); 98 | 99 | let name = { 100 | let name = java_text 101 | .get("language.name") 102 | .ok_or_else(|| anyhow!("cannot find name in java name file (malformed)"))?; 103 | let region = java_text 104 | .get("language.region") 105 | .ok_or_else(|| anyhow!("cannot find region in java name file (malformed)"))?; 106 | format!("{name} ({region})") 107 | }; 108 | let bedrock_text = bedrock_texts.remove(&id).unwrap_or_default(); 109 | let texts = gen_translate(&bedrock_java_id_map, java_text, bedrock_text); 110 | lang_info_list.push(LangInfo { id, name, texts }) 111 | } 112 | task::spawn_blocking(|| pack_addon(path, lang_info_list, manifest)).await??; 113 | Ok(bedrock_java_id_map) 114 | } 115 | -------------------------------------------------------------------------------- /src/api.rs: -------------------------------------------------------------------------------- 1 | use anyhow::Result; 2 | use serde::{de::DeserializeOwned, Deserialize}; 3 | use std::{ 4 | collections::HashMap, 5 | io::{Error, ErrorKind}, 6 | marker::PhantomData, 7 | }; 8 | use tokio::io::AsyncBufRead; 9 | use tokio_stream::StreamExt; 10 | use tokio_util::io::StreamReader; 11 | 12 | pub async fn get_version_manifest() -> Result { 13 | let resp = 14 | reqwest::get("https://piston-meta.mojang.com/mc/game/version_manifest_v2.json").await?; 15 | Ok(resp.json().await?) 16 | } 17 | 18 | #[derive(Debug, Clone, PartialEq, Eq, Deserialize)] 19 | pub struct VersionManifest { 20 | pub latest: Latest, 21 | pub versions: Vec, 22 | } 23 | 24 | #[derive(Debug, Clone, PartialEq, Eq, Deserialize)] 25 | pub struct Latest { 26 | pub release: Id, 27 | pub snapshot: Id, 28 | } 29 | 30 | /// version id 31 | /// 32 | /// `1.19.4` `23w12a` `1.19.4-pre4` 33 | #[derive(Debug, Clone, PartialEq, Eq, Deserialize)] 34 | pub struct Id(pub String); 35 | 36 | #[derive(Debug, Clone, PartialEq, Eq, Deserialize)] 37 | pub struct Version { 38 | pub id: Id, 39 | #[serde(rename = "type")] 40 | pub version_type: Type, 41 | pub url: JsonUrl, 42 | // pub time: String, 43 | // #[serde(rename = "releaseTime")] 44 | // pub release_time: SystemTime, 45 | // pub sha1: String, 46 | // #[serde(rename = "complianceLevel")] 47 | // pub compliance_level: i64, 48 | } 49 | 50 | #[derive(Debug, Clone, PartialEq, Eq, Deserialize)] 51 | #[serde(transparent)] 52 | pub struct JsonUrl(String, PhantomData); 53 | 54 | impl JsonUrl 55 | where 56 | T: DeserializeOwned, 57 | { 58 | pub async fn get(self) -> Result { 59 | let resp = reqwest::get(self.0).await?; 60 | Ok(resp.json().await?) 61 | } 62 | } 63 | 64 | #[derive(Debug, Clone, PartialEq, Eq, Deserialize)] 65 | pub enum Type { 66 | #[serde(rename = "old_alpha")] 67 | OldAlpha, 68 | #[serde(rename = "old_beta")] 69 | OldBeta, 70 | #[serde(rename = "release")] 71 | Release, 72 | #[serde(rename = "snapshot")] 73 | Snapshot, 74 | } 75 | 76 | #[derive(Debug, Clone, PartialEq, Eq, Deserialize)] 77 | pub struct VersionPackage { 78 | // pub arguments: Arguments, 79 | #[serde(rename = "assetIndex")] 80 | pub asset_index: AssetIndex, 81 | // pub assets: String, 82 | // #[serde(rename = "complianceLevel")] 83 | // pub compliance_level: i64, 84 | pub downloads: Downloads, 85 | pub id: Id, 86 | // #[serde(rename = "javaVersion")] 87 | // pub java_version: JavaVersion, 88 | // pub libraries: Vec, 89 | // pub logging: Logging, 90 | // #[serde(rename = "mainClass")] 91 | // pub main_class: String, 92 | // #[serde(rename = "minimumLauncherVersion")] 93 | // pub minimum_launcher_version: i64, 94 | // #[serde(rename = "releaseTime")] 95 | // pub release_time: SystemTime, 96 | // pub time: String, 97 | #[serde(rename = "type")] 98 | pub version_type: Type, 99 | } 100 | 101 | #[derive(Debug, Clone, PartialEq, Eq, Deserialize)] 102 | pub struct AssetIndex { 103 | // pub id: String, 104 | // pub sha1: String, 105 | pub size: usize, 106 | // #[serde(rename = "totalSize")] 107 | // pub total_size: Option, 108 | pub url: JsonUrl, 109 | } 110 | 111 | #[derive(Debug, Clone, PartialEq, Eq, Deserialize)] 112 | pub struct Downloads { 113 | pub client: ClientMappingsClass, 114 | pub client_mappings: ClientMappingsClass, 115 | pub server: ClientMappingsClass, 116 | pub server_mappings: ClientMappingsClass, 117 | } 118 | 119 | #[derive(Debug, Clone, PartialEq, Eq, Deserialize)] 120 | pub struct ClientMappingsClass { 121 | // pub sha1: String, 122 | pub size: usize, 123 | pub url: RawUrl, 124 | // pub path: Option, 125 | } 126 | 127 | #[derive(Debug, Clone, PartialEq, Eq, Deserialize)] 128 | #[serde(transparent)] 129 | pub struct RawUrl(String); 130 | 131 | impl RawUrl { 132 | pub async fn get(self) -> Result { 133 | get(self.0).await 134 | } 135 | } 136 | 137 | #[derive(Debug, Clone, PartialEq, Eq, Deserialize)] 138 | pub struct PackageAsset { 139 | pub objects: HashMap, 140 | } 141 | 142 | #[derive(Debug, Clone, PartialEq, Eq, Deserialize)] 143 | pub struct Object { 144 | pub hash: String, 145 | pub size: usize, 146 | } 147 | 148 | impl Object { 149 | pub fn url(&self) -> RawUrl { 150 | RawUrl(format!( 151 | "https://resources.download.minecraft.net/{}/{}", 152 | &self.hash[..2], 153 | &self.hash 154 | )) 155 | } 156 | } 157 | 158 | pub async fn get(url: String) -> Result { 159 | let resp = reqwest::get(url).await?; 160 | let reader = StreamReader::new( 161 | resp.bytes_stream() 162 | .map(|r| r.map_err(|e| Error::new(ErrorKind::Other, e))), 163 | ); 164 | Ok(reader) 165 | } 166 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 |
2 | 3 | # 🟦 To Bedrock 4 | 5 | [![GitHub license](https://img.shields.io/github/license/KAIYOHUGO/to-bedrock?style=flat-square)](https://github.com/KAIYOHUGO/to-bedrock/blob/master/LICENSE) [![GitHub release (latest by date)](https://img.shields.io/github/v/release/kaiyohugo/to-bedrock?style=flat-square)](https://github.com/KAIYOHUGO/to-bedrock/releases) [![MCPEDL](https://img.shields.io/badge/MCPEDL-to%20bedrock-yellowgreen?style=flat-square)](https://mcpedl.com/java-translation-for-bedrock/) [![GitHub all releases](https://img.shields.io/github/downloads/kaiyohugo/to-bedrock/total?style=flat-square)](https://hanadigital.github.io/grev/?user=KAIYOHUGO&repo=to-bedrock) [![GitHub stars](https://img.shields.io/github/stars/KAIYOHUGO/to-bedrock?style=flat-square)](https://github.com/KAIYOHUGO/to-bedrock/stargazers) 6 | 7 | 8 | ![icon](https://i.imgur.com/yprFoFr.png) 9 | 10 | _java translation for bedrock_ 11 | 12 |
13 | 14 | --- 15 | 16 |
17 | 18 | # ✨ Feature 19 | 20 |
21 | 22 | this is a tool that will make bedrock version translate be the same as java version translate 23 | 24 | Before (it in English means Thunder wand) | After (it in English means lightning rod) 25 | -|- 26 | ![before](markdown/before.png) | ![after](markdown/after.png) 27 | 28 |
29 | 30 | # ❓ How To Use 31 | 32 |
33 | 34 | 1. Go to [latest releases](https://github.com/KAIYOHUGO/to-bedrock/releases/latest/) 35 | 2. Download To_Bedrock.mcpack 36 | 3. Execute addone file 37 | ![release page](https://github.com/KAIYOHUGO/To-Bedrock/assets/41114603/d0057088-da13-4e46-8b17-cbd64fcd1470) 38 | 4. Make it active in minecraft 39 | 40 |
41 | 42 | # Support Language 43 | 44 | 🧪: Experiment, ✅: Supported 45 | 46 | Lang ID|Lang Name|Support State 47 | -|:-:|:-: 48 | |af_ZA|Afrikaans (Suid-Afrika)|🧪| 49 | |ar_SA|العربية (العالم العربي)|🧪| 50 | |ast_ES|Asturianu (Asturies)|🧪| 51 | |az_AZ|Azərbaycanca (Azərbaycan)|🧪| 52 | |ba_RU|Башҡортса (Рәсәй)|🧪| 53 | |bar|Boarisch (Bayern)|🧪| 54 | |be_BY|Беларуская (Беларусь)|🧪| 55 | |bg_BG|Български (България)|✅| 56 | |br_FR|Brezhoneg (Breizh)|🧪| 57 | |brb|Braobans (Braobant)|🧪| 58 | |bs_BA|Bosanski (Bosna i Hercegovina)|🧪| 59 | |ca_ES|Català (Catalunya)|🧪| 60 | |cs_CZ|Čeština (Česko)|✅| 61 | |cy_GB|Cymraeg (Cymru)|🧪| 62 | |da_DK|Dansk (Danmark)|✅| 63 | |de_AT|Deitsch (Österreich)|🧪| 64 | |de_CH|Schwiizerdütsch (Schwiiz)|🧪| 65 | |de_DE|Deutsch (Deutschland)|✅| 66 | |el_GR|Ελληνικά (Ελλάδα)|✅| 67 | |en_AU|English (Australia)|🧪| 68 | |en_CA|English (Canada)|🧪| 69 | |en_GB|English (United Kingdom)|✅| 70 | |en_NZ|English (New Zealand)|🧪| 71 | |en_PT|Pirate Speak (The Seven Seas)|🧪| 72 | |en_UD|ɥsᴉꞁᵷuƎ (uʍoᗡ ǝpᴉsd∩)|🧪| 73 | |enp|Anglish (Foroned Kingdom)|🧪| 74 | |enws|Shakespearean English (Kingdom of England)|🧪| 75 | |eo_UY|Esperanto (Esperantujo)|🧪| 76 | |es_AR|Español (Argentina)|🧪| 77 | |es_CL|Español (Chile)|🧪| 78 | |es_EC|Español (Ecuador)|🧪| 79 | |es_ES|Español (España)|✅| 80 | |es_MX|Español (México)|✅| 81 | |es_UY|Español (Uruguay)|🧪| 82 | |es_VE|Español (Venezuela)|🧪| 83 | |esan|Andalûh (Andaluçía)|🧪| 84 | |et_EE|Eesti keel (Eesti)|🧪| 85 | |eu_ES|Euskara (Euskal Herria)|🧪| 86 | |fa_IR|فارسی (ايران)|🧪| 87 | |fi_FI|Suomi (Suomi)|✅| 88 | |fil_PH|Filipino (Pilipinas)|🧪| 89 | |fo_FO|Føroyskt (Føroyar)|🧪| 90 | |fr_CA|Français (Canada)|✅| 91 | |fr_FR|Français (France)|✅| 92 | |fra_DE|Fränggisch (Franggn)|🧪| 93 | |fur_IT|Furlan (Friûl)|🧪| 94 | |fy_NL|Frysk (Fryslân)|🧪| 95 | |ga_IE|Gaeilge (Éire)|🧪| 96 | |gd_GB|Gàidhlig (Alba)|🧪| 97 | |gl_ES|Galego (Galicia / Galiza)|🧪| 98 | |haw_US|ʻŌlelo Hawaiʻi (Hawaiʻi)|🧪| 99 | |he_IL|עברית (ישראל)|🧪| 100 | |hi_IN|हिंदी (भारत)|🧪| 101 | |hr_HR|Hrvatski (Hrvatska)|🧪| 102 | |hu_HU|Magyar (Magyarország)|✅| 103 | |hy_AM|Հայերեն (Հայաստան)|🧪| 104 | |id_ID|Bahasa Indonesia (Indonesia)|✅| 105 | |ig_NG|Igbo (Naigeria)|🧪| 106 | |io_EN|Ido (Idia)|🧪| 107 | |is_IS|Íslenska (Ísland)|🧪| 108 | |isv|Medžuslovjansky (Slovjanščina)|🧪| 109 | |it_IT|Italiano (Italia)|✅| 110 | |ja_JP|日本語 (日本)|✅| 111 | |jbo_EN|la .lojban. (la jbogu'e)|🧪| 112 | |ka_GE|ქართული (საქართველო)|🧪| 113 | |kk_KZ|Қазақша (Қазақстан)|🧪| 114 | |kn_IN|ಕನ್ನಡ (ಭಾರತ)|🧪| 115 | |ko_KR|한국어 (대한민국)|✅| 116 | |ksh|Kölsch/Ripoarisch (Rhingland)|🧪| 117 | |kw_GB|Kernewek (Kernow)|🧪| 118 | |la_LA|Latina (Latium)|🧪| 119 | |lb_LU|Lëtzebuergesch (Lëtzebuerg)|🧪| 120 | |li_LI|Limburgs (Limburg)|🧪| 121 | |lmo|Lombard (Lombardia)|🧪| 122 | |lo_LA|ລາວ (ປະເທດລາວ)|🧪| 123 | |lol_US|LOLCAT (Kingdom of Cats)|🧪| 124 | |lt_LT|Lietuvių (Lietuva)|🧪| 125 | |lv_LV|Latviešu (Latvija)|🧪| 126 | |lzh|文言 (華夏)|🧪| 127 | |mk_MK|Македонски (Македонија)|🧪| 128 | |mn_MN|Монгол (Монгол Улс)|🧪| 129 | |ms_MY|Bahasa Melayu (Malaysia)|🧪| 130 | |mt_MT|Malti (Malta)|🧪| 131 | |nah|Mēxikatlahtōlli (Wāxtēkapān)|🧪| 132 | |nds_DE|Plattdüütsch (Düütschland)|🧪| 133 | |nl_BE|Vlaams (België)|🧪| 134 | |nl_NL|Nederlands (Nederland)|✅| 135 | |nn_NO|Norsk nynorsk (Noreg)|🧪| 136 | |no_NO|Norsk bokmål (Norge)|🧪| 137 | |oc_FR|Occitan (Occitània)|🧪| 138 | |ovd|Övdalska (Swerre)|🧪| 139 | |pl_PL|Polski (Polska)|✅| 140 | |pt_BR|Português (Brasil)|✅| 141 | |pt_PT|Português (Portugal)|✅| 142 | |qya_AA|Quenya (Arda)|🧪| 143 | |ro_RO|Română (România)|🧪| 144 | |rpr|Русскій дореформенный (Россійская имперія)|🧪| 145 | |ru_RU|Русский (Россия)|✅| 146 | |ry_UA|Руснацькый (Пудкарпатя, Украина)|🧪| 147 | |sah_SAH|Сахалыы (Cаха Сирэ)|🧪| 148 | |se_NO|Davvisámegiella (Sápmi)|🧪| 149 | |sk_SK|Slovenčina (Slovensko)|✅| 150 | |sl_SI|Slovenščina (Slovenija)|🧪| 151 | |so_SO|Soomaali (Soomaaliya)|🧪| 152 | |sq_AL|Shqip (Shqipëri)|🧪| 153 | |sr_CS|Srpski (Srbija)|🧪| 154 | |sr_SP|Српски (Србија)|🧪| 155 | |sv_SE|Svenska (Sverige)|✅| 156 | |sxu|Säggs’sch (Saggsn)|🧪| 157 | |szl|Ślōnskŏ (Gōrny Ślōnsk)|🧪| 158 | |ta_IN|தமிழ் (இந்தியா)|🧪| 159 | |th_TH|ไทย (ประเทศไทย)|🧪| 160 | |tl_PH|Tagalog (Pilipinas)|🧪| 161 | |tlh_AA|tlhIngan Hol (tlhIngan wo')|🧪| 162 | |tok|toki pona (ma pona)|🧪| 163 | |tr_TR|Türkçe (Türkiye)|✅| 164 | |tt_RU|Татарча (Рәсәй)|🧪| 165 | |uk_UA|Українська (Україна)|✅| 166 | |val_ES|Català (Valencià) (País Valencià)|🧪| 167 | |vec_IT|Vèneto (Veneto)|🧪| 168 | |vi_VN|Tiếng Việt (Việt Nam)|🧪| 169 | |yi_DE|ייִדיש (אשכנזישע יידן)|🧪| 170 | |yo_NG|Yorùbá (Nàìjíríà)|🧪| 171 | |zh_CN|简体中文 (中国大陆)|✅| 172 | |zh_HK|繁體中文 (香港特別行政區)|🧪| 173 | |zh_TW|繁體中文 (台灣)|✅| 174 | |zlm_ARAB|بهاس ملايو (مليسيا)|🧪| 175 | 176 |
177 | 178 | --- 179 | 180 |
181 | 182 | # 🔨 Build 183 | 184 | ## Build From Source 185 | 186 |
187 | 188 | ```bash 189 | # run only 190 | cargo run -- {arg go here} 191 | 192 | # or build it 193 | cargo build 194 | ``` 195 | 196 |
197 | 198 | ## Example 199 | 200 |
201 | 202 | ```bash 203 | $ to-bedrock -h 204 | Usage: to-bedrock 205 | 206 | Commands: 207 | auto 208 | raw 209 | help Print this message or the help of the given subcommand(s) 210 | 211 | Options: 212 | -h, --help Print help 213 | 214 | $ to-bedrock help auto 215 | Usage: to-bedrock auto [OPTIONS] --java --output 216 | 217 | Options: 218 | -j, --java java version 219 | -b, --bedrock bedrock version 220 | -o, --output output folder path 221 | --emit-map emit bedrock java id map 222 | -h, --help Print help 223 | 224 | # generate mcpack 225 | $ to-bedrock -o dist auto -j 1.20 -b 1.20.0.1 226 | ``` 227 | 228 |
229 | 230 | # ⭐ Stargazers 231 | 232 |
233 | 234 |
235 | 236 | Thanks All Your Guys! 237 | 238 | [![Stargazers repo roster for @KAIYOHUGO/to-bedrock](https://reporoster.com/stars/dark/KAIYOHUGO/to-bedrock)](https://github.com/KAIYOHUGO/to-bedrock/stargazers) 239 | 240 |
241 | 242 | java icons made by [Freepik](https://www.freepik.com) from [www.flaticon.com](https://www.flaticon.com/) 243 | -------------------------------------------------------------------------------- /src/main.rs: -------------------------------------------------------------------------------- 1 | //! Note 2 | //! https://wiki.vg/Game_files 3 | //! https://gist.github.com/skyrising/95a8e6a7287634e097ecafa2f21c240f 4 | 5 | mod api; 6 | mod fetch_bedrock; 7 | mod fetch_java; 8 | mod generate; 9 | mod pack; 10 | mod parse; 11 | 12 | use anyhow::{anyhow, Result}; 13 | 14 | use clap::{ 15 | builder::{styling::AnsiColor, Styles}, 16 | Parser, 17 | }; 18 | use generate::gen_output; 19 | 20 | use parse::{des_bedrock, des_java, TranslateKV}; 21 | use std::{collections::HashMap, io::BufWriter, path::PathBuf}; 22 | use tokio::{ 23 | fs, io, 24 | task::{self, spawn_blocking}, 25 | try_join, 26 | }; 27 | 28 | #[derive(Debug, Clone, Parser)] 29 | #[command(styles = clap_v3_styles())] 30 | struct Cli { 31 | #[command(subcommand)] 32 | command: Cmd, 33 | 34 | /// output folder path 35 | #[arg(short, long)] 36 | output: PathBuf, 37 | 38 | /// Override bedrock java id map 39 | /// It is useful when some mapping is wrong or missing 40 | #[arg(long)] 41 | override_map: Option, 42 | 43 | /// Emit bedrock java id map 44 | /// It is a key (bedrock text id) value (java text id) map 45 | #[arg(long)] 46 | emit_map: bool, 47 | } 48 | 49 | #[derive(Debug, Clone, clap::Subcommand)] 50 | enum Cmd { 51 | Auto(AutoCmd), 52 | Raw(RawCmd), 53 | } 54 | 55 | #[derive(Debug, Clone, clap::Args)] 56 | struct AutoCmd { 57 | /// java version 58 | #[arg(short, long)] 59 | java: String, 60 | 61 | /// bedrock version 62 | #[arg(short, long)] 63 | bedrock: Option, 64 | } 65 | 66 | #[derive(Debug, Clone, clap::Args)] 67 | struct RawCmd { 68 | /// java texts folder path (require en_us.json) 69 | #[arg(short, long)] 70 | java: PathBuf, 71 | 72 | /// bedrock texts folder path (require en_us.lang) 73 | #[arg(short, long)] 74 | bedrock: PathBuf, 75 | 76 | /// pack (addon) version e.g. `1.19.0` 77 | #[arg(short, long)] 78 | pack_version: String, 79 | } 80 | 81 | fn clap_v3_styles() -> Styles { 82 | Styles::styled() 83 | .header(AnsiColor::Yellow.on_default()) 84 | .usage(AnsiColor::Green.on_default()) 85 | .literal(AnsiColor::Green.on_default()) 86 | .placeholder(AnsiColor::Green.on_default()) 87 | } 88 | 89 | #[tokio::main] 90 | async fn main() -> Result<()> { 91 | let Cli { 92 | command, 93 | output, 94 | override_map, 95 | emit_map, 96 | } = Cli::parse(); 97 | 98 | let cmd_output = match command { 99 | Cmd::Auto(cmd) => auto_cmd(cmd).await?, 100 | Cmd::Raw(cmd) => raw_cmd(cmd).await?, 101 | }; 102 | 103 | let override_map = if let Some(path) = override_map { 104 | let file = fs::read(path).await?; 105 | serde_json::from_reader(file.as_slice())? 106 | } else { 107 | TranslateKV::new() 108 | }; 109 | 110 | let bedrock_java_id_map = gen_output( 111 | cmd_output.java_texts, 112 | cmd_output.bedrock_texts, 113 | override_map, 114 | cmd_output.version, 115 | &output, 116 | ) 117 | .await?; 118 | 119 | if emit_map { 120 | spawn_blocking(move || { 121 | let file = BufWriter::new(std::fs::File::create(output.join("map.json"))?); 122 | serde_json::to_writer(file, &bedrock_java_id_map)?; 123 | anyhow::Ok(()) 124 | }) 125 | .await??; 126 | } 127 | Ok(()) 128 | } 129 | 130 | struct CmdOutput { 131 | java_texts: HashMap, 132 | bedrock_texts: HashMap, 133 | version: [u8; 3], 134 | } 135 | 136 | async fn auto_cmd(cmd: AutoCmd) -> Result { 137 | let bedrock_version = cmd.bedrock.unwrap_or_else(|| cmd.java.clone()); 138 | 139 | let java_package = { 140 | let java_version = api::Id(cmd.java.clone()); 141 | let manifest = api::get_version_manifest().await?; 142 | let version = manifest 143 | .versions 144 | .into_iter() 145 | .find(|version| version.id == java_version) 146 | .ok_or_else(|| anyhow!("Cannot find version `{}`", &java_version.0))?; 147 | version.url.get().await? 148 | }; 149 | 150 | let java_texts = fetch_java::fetch(java_package, 10.try_into()?).await?; 151 | let bedrock_texts = fetch_bedrock::fetch(bedrock_version, 10.try_into()?).await?; 152 | let version = parse_version(cmd.java)?; 153 | 154 | Ok(CmdOutput { 155 | java_texts, 156 | bedrock_texts, 157 | version, 158 | }) 159 | } 160 | 161 | async fn raw_cmd(cmd: RawCmd) -> Result { 162 | let java = async { 163 | let mut ret = HashMap::new(); 164 | let mut dir = fs::read_dir(cmd.java).await?; 165 | while let Some(file_meta) = dir.next_entry().await? { 166 | let name: PathBuf = file_meta.file_name().into(); 167 | 168 | let Some(ext) = name.extension() else { 169 | continue; 170 | }; 171 | if ext.to_str() != Some("json") { 172 | continue; 173 | } 174 | if !file_meta.file_type().await?.is_file() { 175 | continue; 176 | } 177 | let lang_id = name 178 | .with_extension("") 179 | .to_str() 180 | .ok_or_else(|| anyhow!("non UTF8 char in the file name"))? 181 | .to_owned(); 182 | let file = fs::read(file_meta.path()).await?; 183 | let reader: &[u8] = file.as_ref(); 184 | let kv = des_java(reader)?; 185 | ret.insert(lang_id, kv); 186 | } 187 | anyhow::Ok(ret) 188 | }; 189 | let bedrock = async { 190 | let mut ret = HashMap::new(); 191 | let mut dir = fs::read_dir(cmd.bedrock).await?; 192 | while let Some(file_meta) = dir.next_entry().await? { 193 | let name: PathBuf = file_meta.file_name().into(); 194 | 195 | let Some(ext) = name.extension() else { 196 | continue; 197 | }; 198 | if ext.to_str() != Some("lang") { 199 | continue; 200 | } 201 | if !file_meta.file_type().await?.is_file() { 202 | continue; 203 | } 204 | let lang_id = name 205 | .with_extension("") 206 | .to_str() 207 | .ok_or_else(|| anyhow!("non UTF8 char in the file name"))? 208 | .to_owned(); 209 | let file = fs::File::open(file_meta.path()).await?; 210 | let kv = des_bedrock(io::BufReader::new(file)).await?; 211 | ret.insert(lang_id, kv); 212 | } 213 | anyhow::Ok(ret) 214 | }; 215 | let (java_texts, bedrock_texts) = try_join!(task::spawn(java), task::spawn(bedrock))?; 216 | let java_texts = java_texts?; 217 | let bedrock_texts = bedrock_texts?; 218 | let version = parse_version(cmd.pack_version)?; 219 | 220 | Ok(CmdOutput { 221 | java_texts, 222 | bedrock_texts, 223 | version, 224 | }) 225 | } 226 | 227 | fn parse_version(version: String) -> Result<[u8; 3]> { 228 | let mut ret = version 229 | .split('.') 230 | .map(|x| x.parse()) 231 | .collect::, _>>()?; 232 | while ret.len() < 3 { 233 | ret.push(0); 234 | } 235 | ret.try_into().map_err(|_| anyhow!("Version Format Error")) 236 | } 237 | 238 | #[cfg(test)] 239 | mod tests { 240 | 241 | #[tokio::test] 242 | async fn test_name() { 243 | // let mut ret = HashMap::new(); 244 | let octocrab = octocrab::instance(); 245 | let page = octocrab 246 | .repos("Mojang", "bedrock-samples") 247 | .get_content() 248 | .path("resource_pack/texts") 249 | .r#ref(format!("v{}", "1.19.70.2")) 250 | .send() 251 | .await 252 | .unwrap(); 253 | dbg!(page); 254 | } 255 | } 256 | -------------------------------------------------------------------------------- /Cargo.lock: -------------------------------------------------------------------------------- 1 | # This file is automatically @generated by Cargo. 2 | # It is not intended for manual editing. 3 | version = 3 4 | 5 | [[package]] 6 | name = "addr2line" 7 | version = "0.22.0" 8 | source = "registry+https://github.com/rust-lang/crates.io-index" 9 | checksum = "6e4503c46a5c0c7844e948c9a4d6acd9f50cccb4de1c48eb9e291ea17470c678" 10 | dependencies = [ 11 | "gimli", 12 | ] 13 | 14 | [[package]] 15 | name = "adler" 16 | version = "1.0.2" 17 | source = "registry+https://github.com/rust-lang/crates.io-index" 18 | checksum = "f26201604c87b1e01bd3d98f8d5d9a8fcbb815e8cedb41ffccbeb4bf593a35fe" 19 | 20 | [[package]] 21 | name = "android-tzdata" 22 | version = "0.1.1" 23 | source = "registry+https://github.com/rust-lang/crates.io-index" 24 | checksum = "e999941b234f3131b00bc13c22d06e8c5ff726d1b6318ac7eb276997bbb4fef0" 25 | 26 | [[package]] 27 | name = "android_system_properties" 28 | version = "0.1.5" 29 | source = "registry+https://github.com/rust-lang/crates.io-index" 30 | checksum = "819e7219dbd41043ac279b19830f2efc897156490d7fd6ea916720117ee66311" 31 | dependencies = [ 32 | "libc", 33 | ] 34 | 35 | [[package]] 36 | name = "anstream" 37 | version = "0.6.14" 38 | source = "registry+https://github.com/rust-lang/crates.io-index" 39 | checksum = "418c75fa768af9c03be99d17643f93f79bbba589895012a80e3452a19ddda15b" 40 | dependencies = [ 41 | "anstyle", 42 | "anstyle-parse", 43 | "anstyle-query", 44 | "anstyle-wincon", 45 | "colorchoice", 46 | "is_terminal_polyfill", 47 | "utf8parse", 48 | ] 49 | 50 | [[package]] 51 | name = "anstyle" 52 | version = "1.0.7" 53 | source = "registry+https://github.com/rust-lang/crates.io-index" 54 | checksum = "038dfcf04a5feb68e9c60b21c9625a54c2c0616e79b72b0fd87075a056ae1d1b" 55 | 56 | [[package]] 57 | name = "anstyle-parse" 58 | version = "0.2.4" 59 | source = "registry+https://github.com/rust-lang/crates.io-index" 60 | checksum = "c03a11a9034d92058ceb6ee011ce58af4a9bf61491aa7e1e59ecd24bd40d22d4" 61 | dependencies = [ 62 | "utf8parse", 63 | ] 64 | 65 | [[package]] 66 | name = "anstyle-query" 67 | version = "1.1.0" 68 | source = "registry+https://github.com/rust-lang/crates.io-index" 69 | checksum = "ad186efb764318d35165f1758e7dcef3b10628e26d41a44bc5550652e6804391" 70 | dependencies = [ 71 | "windows-sys 0.52.0", 72 | ] 73 | 74 | [[package]] 75 | name = "anstyle-wincon" 76 | version = "3.0.3" 77 | source = "registry+https://github.com/rust-lang/crates.io-index" 78 | checksum = "61a38449feb7068f52bb06c12759005cf459ee52bb4adc1d5a7c4322d716fb19" 79 | dependencies = [ 80 | "anstyle", 81 | "windows-sys 0.52.0", 82 | ] 83 | 84 | [[package]] 85 | name = "anyhow" 86 | version = "1.0.86" 87 | source = "registry+https://github.com/rust-lang/crates.io-index" 88 | checksum = "b3d1d046238990b9cf5bcde22a3fb3584ee5cf65fb2765f454ed428c7a0063da" 89 | 90 | [[package]] 91 | name = "arc-swap" 92 | version = "1.7.1" 93 | source = "registry+https://github.com/rust-lang/crates.io-index" 94 | checksum = "69f7f8c3906b62b754cd5326047894316021dcfe5a194c8ea52bdd94934a3457" 95 | 96 | [[package]] 97 | name = "async-trait" 98 | version = "0.1.80" 99 | source = "registry+https://github.com/rust-lang/crates.io-index" 100 | checksum = "c6fa2087f2753a7da8cc1c0dbfcf89579dd57458e36769de5ac750b4671737ca" 101 | dependencies = [ 102 | "proc-macro2", 103 | "quote", 104 | "syn 2.0.66", 105 | ] 106 | 107 | [[package]] 108 | name = "autocfg" 109 | version = "1.3.0" 110 | source = "registry+https://github.com/rust-lang/crates.io-index" 111 | checksum = "0c4b4d0bd25bd0b74681c0ad21497610ce1b7c91b1022cd21c80c6fbdd9476b0" 112 | 113 | [[package]] 114 | name = "backtrace" 115 | version = "0.3.73" 116 | source = "registry+https://github.com/rust-lang/crates.io-index" 117 | checksum = "5cc23269a4f8976d0a4d2e7109211a419fe30e8d88d677cd60b6bc79c5732e0a" 118 | dependencies = [ 119 | "addr2line", 120 | "cc", 121 | "cfg-if", 122 | "libc", 123 | "miniz_oxide", 124 | "object", 125 | "rustc-demangle", 126 | ] 127 | 128 | [[package]] 129 | name = "base64" 130 | version = "0.13.1" 131 | source = "registry+https://github.com/rust-lang/crates.io-index" 132 | checksum = "9e1b586273c5702936fe7b7d6896644d8be71e6314cfe09d3167c95f712589e8" 133 | 134 | [[package]] 135 | name = "base64" 136 | version = "0.21.7" 137 | source = "registry+https://github.com/rust-lang/crates.io-index" 138 | checksum = "9d297deb1925b89f2ccc13d7635fa0714f12c87adce1c75356b39ca9b7178567" 139 | 140 | [[package]] 141 | name = "bitflags" 142 | version = "1.3.2" 143 | source = "registry+https://github.com/rust-lang/crates.io-index" 144 | checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a" 145 | 146 | [[package]] 147 | name = "bitflags" 148 | version = "2.5.0" 149 | source = "registry+https://github.com/rust-lang/crates.io-index" 150 | checksum = "cf4b9d6a944f767f8e5e0db018570623c85f3d925ac718db4e06d0187adb21c1" 151 | 152 | [[package]] 153 | name = "bumpalo" 154 | version = "3.16.0" 155 | source = "registry+https://github.com/rust-lang/crates.io-index" 156 | checksum = "79296716171880943b8470b5f8d03aa55eb2e645a4874bdbb28adb49162e012c" 157 | 158 | [[package]] 159 | name = "byteorder" 160 | version = "1.5.0" 161 | source = "registry+https://github.com/rust-lang/crates.io-index" 162 | checksum = "1fd0f2584146f6f2ef48085050886acf353beff7305ebd1ae69500e27c67f64b" 163 | 164 | [[package]] 165 | name = "bytes" 166 | version = "1.6.0" 167 | source = "registry+https://github.com/rust-lang/crates.io-index" 168 | checksum = "514de17de45fdb8dc022b1a7975556c53c86f9f0aa5f534b98977b171857c2c9" 169 | 170 | [[package]] 171 | name = "cc" 172 | version = "1.0.99" 173 | source = "registry+https://github.com/rust-lang/crates.io-index" 174 | checksum = "96c51067fd44124faa7f870b4b1c969379ad32b2ba805aa959430ceaa384f695" 175 | 176 | [[package]] 177 | name = "cfg-if" 178 | version = "1.0.0" 179 | source = "registry+https://github.com/rust-lang/crates.io-index" 180 | checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd" 181 | 182 | [[package]] 183 | name = "chrono" 184 | version = "0.4.38" 185 | source = "registry+https://github.com/rust-lang/crates.io-index" 186 | checksum = "a21f936df1771bf62b77f047b726c4625ff2e8aa607c01ec06e5a05bd8463401" 187 | dependencies = [ 188 | "android-tzdata", 189 | "iana-time-zone", 190 | "num-traits", 191 | "serde", 192 | "windows-targets 0.52.5", 193 | ] 194 | 195 | [[package]] 196 | name = "clap" 197 | version = "4.5.7" 198 | source = "registry+https://github.com/rust-lang/crates.io-index" 199 | checksum = "5db83dced34638ad474f39f250d7fea9598bdd239eaced1bdf45d597da0f433f" 200 | dependencies = [ 201 | "clap_builder", 202 | "clap_derive", 203 | ] 204 | 205 | [[package]] 206 | name = "clap_builder" 207 | version = "4.5.7" 208 | source = "registry+https://github.com/rust-lang/crates.io-index" 209 | checksum = "f7e204572485eb3fbf28f871612191521df159bc3e15a9f5064c66dba3a8c05f" 210 | dependencies = [ 211 | "anstream", 212 | "anstyle", 213 | "clap_lex", 214 | "strsim", 215 | ] 216 | 217 | [[package]] 218 | name = "clap_derive" 219 | version = "4.5.5" 220 | source = "registry+https://github.com/rust-lang/crates.io-index" 221 | checksum = "c780290ccf4fb26629baa7a1081e68ced113f1d3ec302fa5948f1c381ebf06c6" 222 | dependencies = [ 223 | "heck 0.5.0", 224 | "proc-macro2", 225 | "quote", 226 | "syn 2.0.66", 227 | ] 228 | 229 | [[package]] 230 | name = "clap_lex" 231 | version = "0.7.1" 232 | source = "registry+https://github.com/rust-lang/crates.io-index" 233 | checksum = "4b82cf0babdbd58558212896d1a4272303a57bdb245c2bf1147185fb45640e70" 234 | 235 | [[package]] 236 | name = "colorchoice" 237 | version = "1.0.1" 238 | source = "registry+https://github.com/rust-lang/crates.io-index" 239 | checksum = "0b6a852b24ab71dffc585bcb46eaf7959d175cb865a7152e35b348d1b2960422" 240 | 241 | [[package]] 242 | name = "core-foundation" 243 | version = "0.9.4" 244 | source = "registry+https://github.com/rust-lang/crates.io-index" 245 | checksum = "91e195e091a93c46f7102ec7818a2aa394e1e1771c3ab4825963fa03e45afb8f" 246 | dependencies = [ 247 | "core-foundation-sys", 248 | "libc", 249 | ] 250 | 251 | [[package]] 252 | name = "core-foundation-sys" 253 | version = "0.8.6" 254 | source = "registry+https://github.com/rust-lang/crates.io-index" 255 | checksum = "06ea2b9bc92be3c2baa9334a323ebca2d6f074ff852cd1d7b11064035cd3868f" 256 | 257 | [[package]] 258 | name = "crc32fast" 259 | version = "1.4.2" 260 | source = "registry+https://github.com/rust-lang/crates.io-index" 261 | checksum = "a97769d94ddab943e4510d138150169a2758b5ef3eb191a9ee688de3e23ef7b3" 262 | dependencies = [ 263 | "cfg-if", 264 | ] 265 | 266 | [[package]] 267 | name = "crossbeam-utils" 268 | version = "0.8.20" 269 | source = "registry+https://github.com/rust-lang/crates.io-index" 270 | checksum = "22ec99545bb0ed0ea7bb9b8e1e9122ea386ff8a48c0922e43f36d45ab09e0e80" 271 | 272 | [[package]] 273 | name = "deranged" 274 | version = "0.3.11" 275 | source = "registry+https://github.com/rust-lang/crates.io-index" 276 | checksum = "b42b6fa04a440b495c8b04d0e71b707c585f83cb9cb28cf8cd0d976c315e31b4" 277 | dependencies = [ 278 | "powerfmt", 279 | ] 280 | 281 | [[package]] 282 | name = "displaydoc" 283 | version = "0.2.4" 284 | source = "registry+https://github.com/rust-lang/crates.io-index" 285 | checksum = "487585f4d0c6655fe74905e2504d8ad6908e4db67f744eb140876906c2f3175d" 286 | dependencies = [ 287 | "proc-macro2", 288 | "quote", 289 | "syn 2.0.66", 290 | ] 291 | 292 | [[package]] 293 | name = "doc-comment" 294 | version = "0.3.3" 295 | source = "registry+https://github.com/rust-lang/crates.io-index" 296 | checksum = "fea41bba32d969b513997752735605054bc0dfa92b4c56bf1189f2e174be7a10" 297 | 298 | [[package]] 299 | name = "either" 300 | version = "1.12.0" 301 | source = "registry+https://github.com/rust-lang/crates.io-index" 302 | checksum = "3dca9240753cf90908d7e4aac30f630662b02aebaa1b58a3cadabdb23385b58b" 303 | 304 | [[package]] 305 | name = "encoding_rs" 306 | version = "0.8.34" 307 | source = "registry+https://github.com/rust-lang/crates.io-index" 308 | checksum = "b45de904aa0b010bce2ab45264d0631681847fa7b6f2eaa7dab7619943bc4f59" 309 | dependencies = [ 310 | "cfg-if", 311 | ] 312 | 313 | [[package]] 314 | name = "equivalent" 315 | version = "1.0.1" 316 | source = "registry+https://github.com/rust-lang/crates.io-index" 317 | checksum = "5443807d6dff69373d433ab9ef5378ad8df50ca6298caf15de6e52e24aaf54d5" 318 | 319 | [[package]] 320 | name = "errno" 321 | version = "0.3.9" 322 | source = "registry+https://github.com/rust-lang/crates.io-index" 323 | checksum = "534c5cf6194dfab3db3242765c03bbe257cf92f22b38f6bc0c58d59108a820ba" 324 | dependencies = [ 325 | "libc", 326 | "windows-sys 0.52.0", 327 | ] 328 | 329 | [[package]] 330 | name = "fastrand" 331 | version = "2.1.0" 332 | source = "registry+https://github.com/rust-lang/crates.io-index" 333 | checksum = "9fc0510504f03c51ada170672ac806f1f105a88aa97a5281117e1ddc3368e51a" 334 | 335 | [[package]] 336 | name = "flate2" 337 | version = "1.0.30" 338 | source = "registry+https://github.com/rust-lang/crates.io-index" 339 | checksum = "5f54427cfd1c7829e2a139fcefea601bf088ebca651d2bf53ebc600eac295dae" 340 | dependencies = [ 341 | "crc32fast", 342 | "miniz_oxide", 343 | ] 344 | 345 | [[package]] 346 | name = "fnv" 347 | version = "1.0.7" 348 | source = "registry+https://github.com/rust-lang/crates.io-index" 349 | checksum = "3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1" 350 | 351 | [[package]] 352 | name = "foreign-types" 353 | version = "0.3.2" 354 | source = "registry+https://github.com/rust-lang/crates.io-index" 355 | checksum = "f6f339eb8adc052cd2ca78910fda869aefa38d22d5cb648e6485e4d3fc06f3b1" 356 | dependencies = [ 357 | "foreign-types-shared", 358 | ] 359 | 360 | [[package]] 361 | name = "foreign-types-shared" 362 | version = "0.1.1" 363 | source = "registry+https://github.com/rust-lang/crates.io-index" 364 | checksum = "00b0228411908ca8685dba7fc2cdd70ec9990a6e753e89b6ac91a84c40fbaf4b" 365 | 366 | [[package]] 367 | name = "form_urlencoded" 368 | version = "1.2.1" 369 | source = "registry+https://github.com/rust-lang/crates.io-index" 370 | checksum = "e13624c2627564efccf4934284bdd98cbaa14e79b0b5a141218e507b3a823456" 371 | dependencies = [ 372 | "percent-encoding", 373 | ] 374 | 375 | [[package]] 376 | name = "futures-channel" 377 | version = "0.3.30" 378 | source = "registry+https://github.com/rust-lang/crates.io-index" 379 | checksum = "eac8f7d7865dcb88bd4373ab671c8cf4508703796caa2b1985a9ca867b3fcb78" 380 | dependencies = [ 381 | "futures-core", 382 | ] 383 | 384 | [[package]] 385 | name = "futures-core" 386 | version = "0.3.30" 387 | source = "registry+https://github.com/rust-lang/crates.io-index" 388 | checksum = "dfc6580bb841c5a68e9ef15c77ccc837b40a7504914d52e47b8b0e9bbda25a1d" 389 | 390 | [[package]] 391 | name = "futures-io" 392 | version = "0.3.30" 393 | source = "registry+https://github.com/rust-lang/crates.io-index" 394 | checksum = "a44623e20b9681a318efdd71c299b6b222ed6f231972bfe2f224ebad6311f0c1" 395 | 396 | [[package]] 397 | name = "futures-macro" 398 | version = "0.3.30" 399 | source = "registry+https://github.com/rust-lang/crates.io-index" 400 | checksum = "87750cf4b7a4c0625b1529e4c543c2182106e4dedc60a2a6455e00d212c489ac" 401 | dependencies = [ 402 | "proc-macro2", 403 | "quote", 404 | "syn 2.0.66", 405 | ] 406 | 407 | [[package]] 408 | name = "futures-sink" 409 | version = "0.3.30" 410 | source = "registry+https://github.com/rust-lang/crates.io-index" 411 | checksum = "9fb8e00e87438d937621c1c6269e53f536c14d3fbd6a042bb24879e57d474fb5" 412 | 413 | [[package]] 414 | name = "futures-task" 415 | version = "0.3.30" 416 | source = "registry+https://github.com/rust-lang/crates.io-index" 417 | checksum = "38d84fa142264698cdce1a9f9172cf383a0c82de1bddcf3092901442c4097004" 418 | 419 | [[package]] 420 | name = "futures-util" 421 | version = "0.3.30" 422 | source = "registry+https://github.com/rust-lang/crates.io-index" 423 | checksum = "3d6401deb83407ab3da39eba7e33987a73c3df0c82b4bb5813ee871c19c41d48" 424 | dependencies = [ 425 | "futures-core", 426 | "futures-io", 427 | "futures-macro", 428 | "futures-sink", 429 | "futures-task", 430 | "memchr", 431 | "pin-project-lite", 432 | "pin-utils", 433 | "slab", 434 | ] 435 | 436 | [[package]] 437 | name = "gimli" 438 | version = "0.29.0" 439 | source = "registry+https://github.com/rust-lang/crates.io-index" 440 | checksum = "40ecd4077b5ae9fd2e9e169b102c6c330d0605168eb0e8bf79952b256dbefffd" 441 | 442 | [[package]] 443 | name = "h2" 444 | version = "0.3.26" 445 | source = "registry+https://github.com/rust-lang/crates.io-index" 446 | checksum = "81fe527a889e1532da5c525686d96d4c2e74cdd345badf8dfef9f6b39dd5f5e8" 447 | dependencies = [ 448 | "bytes", 449 | "fnv", 450 | "futures-core", 451 | "futures-sink", 452 | "futures-util", 453 | "http", 454 | "indexmap", 455 | "slab", 456 | "tokio", 457 | "tokio-util", 458 | "tracing", 459 | ] 460 | 461 | [[package]] 462 | name = "hashbrown" 463 | version = "0.14.5" 464 | source = "registry+https://github.com/rust-lang/crates.io-index" 465 | checksum = "e5274423e17b7c9fc20b6e7e208532f9b19825d82dfd615708b70edd83df41f1" 466 | 467 | [[package]] 468 | name = "heck" 469 | version = "0.4.1" 470 | source = "registry+https://github.com/rust-lang/crates.io-index" 471 | checksum = "95505c38b4572b2d910cecb0281560f54b440a19336cbbcb27bf6ce6adc6f5a8" 472 | 473 | [[package]] 474 | name = "heck" 475 | version = "0.5.0" 476 | source = "registry+https://github.com/rust-lang/crates.io-index" 477 | checksum = "2304e00983f87ffb38b55b444b5e3b60a884b5d30c0fca7d82fe33449bbe55ea" 478 | 479 | [[package]] 480 | name = "hermit-abi" 481 | version = "0.3.9" 482 | source = "registry+https://github.com/rust-lang/crates.io-index" 483 | checksum = "d231dfb89cfffdbc30e7fc41579ed6066ad03abda9e567ccafae602b97ec5024" 484 | 485 | [[package]] 486 | name = "http" 487 | version = "0.2.12" 488 | source = "registry+https://github.com/rust-lang/crates.io-index" 489 | checksum = "601cbb57e577e2f5ef5be8e7b83f0f63994f25aa94d673e54a92d5c516d101f1" 490 | dependencies = [ 491 | "bytes", 492 | "fnv", 493 | "itoa", 494 | ] 495 | 496 | [[package]] 497 | name = "http-body" 498 | version = "0.4.6" 499 | source = "registry+https://github.com/rust-lang/crates.io-index" 500 | checksum = "7ceab25649e9960c0311ea418d17bee82c0dcec1bd053b5f9a66e265a693bed2" 501 | dependencies = [ 502 | "bytes", 503 | "http", 504 | "pin-project-lite", 505 | ] 506 | 507 | [[package]] 508 | name = "httparse" 509 | version = "1.9.3" 510 | source = "registry+https://github.com/rust-lang/crates.io-index" 511 | checksum = "d0e7a4dd27b9476dc40cb050d3632d3bba3a70ddbff012285f7f8559a1e7e545" 512 | 513 | [[package]] 514 | name = "httpdate" 515 | version = "1.0.3" 516 | source = "registry+https://github.com/rust-lang/crates.io-index" 517 | checksum = "df3b46402a9d5adb4c86a0cf463f42e19994e3ee891101b1841f30a545cb49a9" 518 | 519 | [[package]] 520 | name = "hyper" 521 | version = "0.14.29" 522 | source = "registry+https://github.com/rust-lang/crates.io-index" 523 | checksum = "f361cde2f109281a220d4307746cdfd5ee3f410da58a70377762396775634b33" 524 | dependencies = [ 525 | "bytes", 526 | "futures-channel", 527 | "futures-core", 528 | "futures-util", 529 | "h2", 530 | "http", 531 | "http-body", 532 | "httparse", 533 | "httpdate", 534 | "itoa", 535 | "pin-project-lite", 536 | "socket2", 537 | "tokio", 538 | "tower-service", 539 | "tracing", 540 | "want", 541 | ] 542 | 543 | [[package]] 544 | name = "hyper-tls" 545 | version = "0.5.0" 546 | source = "registry+https://github.com/rust-lang/crates.io-index" 547 | checksum = "d6183ddfa99b85da61a140bea0efc93fdf56ceaa041b37d553518030827f9905" 548 | dependencies = [ 549 | "bytes", 550 | "hyper", 551 | "native-tls", 552 | "tokio", 553 | "tokio-native-tls", 554 | ] 555 | 556 | [[package]] 557 | name = "iana-time-zone" 558 | version = "0.1.60" 559 | source = "registry+https://github.com/rust-lang/crates.io-index" 560 | checksum = "e7ffbb5a1b541ea2561f8c41c087286cc091e21e556a4f09a8f6cbf17b69b141" 561 | dependencies = [ 562 | "android_system_properties", 563 | "core-foundation-sys", 564 | "iana-time-zone-haiku", 565 | "js-sys", 566 | "wasm-bindgen", 567 | "windows-core", 568 | ] 569 | 570 | [[package]] 571 | name = "iana-time-zone-haiku" 572 | version = "0.1.2" 573 | source = "registry+https://github.com/rust-lang/crates.io-index" 574 | checksum = "f31827a206f56af32e590ba56d5d2d085f558508192593743f16b2306495269f" 575 | dependencies = [ 576 | "cc", 577 | ] 578 | 579 | [[package]] 580 | name = "icu_collections" 581 | version = "1.5.0" 582 | source = "registry+https://github.com/rust-lang/crates.io-index" 583 | checksum = "db2fa452206ebee18c4b5c2274dbf1de17008e874b4dc4f0aea9d01ca79e4526" 584 | dependencies = [ 585 | "displaydoc", 586 | "yoke", 587 | "zerofrom", 588 | "zerovec", 589 | ] 590 | 591 | [[package]] 592 | name = "icu_locid" 593 | version = "1.5.0" 594 | source = "registry+https://github.com/rust-lang/crates.io-index" 595 | checksum = "13acbb8371917fc971be86fc8057c41a64b521c184808a698c02acc242dbf637" 596 | dependencies = [ 597 | "displaydoc", 598 | "litemap", 599 | "tinystr", 600 | "writeable", 601 | "zerovec", 602 | ] 603 | 604 | [[package]] 605 | name = "icu_locid_transform" 606 | version = "1.5.0" 607 | source = "registry+https://github.com/rust-lang/crates.io-index" 608 | checksum = "01d11ac35de8e40fdeda00d9e1e9d92525f3f9d887cdd7aa81d727596788b54e" 609 | dependencies = [ 610 | "displaydoc", 611 | "icu_locid", 612 | "icu_locid_transform_data", 613 | "icu_provider", 614 | "tinystr", 615 | "zerovec", 616 | ] 617 | 618 | [[package]] 619 | name = "icu_locid_transform_data" 620 | version = "1.5.0" 621 | source = "registry+https://github.com/rust-lang/crates.io-index" 622 | checksum = "fdc8ff3388f852bede6b579ad4e978ab004f139284d7b28715f773507b946f6e" 623 | 624 | [[package]] 625 | name = "icu_normalizer" 626 | version = "1.5.0" 627 | source = "registry+https://github.com/rust-lang/crates.io-index" 628 | checksum = "19ce3e0da2ec68599d193c93d088142efd7f9c5d6fc9b803774855747dc6a84f" 629 | dependencies = [ 630 | "displaydoc", 631 | "icu_collections", 632 | "icu_normalizer_data", 633 | "icu_properties", 634 | "icu_provider", 635 | "smallvec", 636 | "utf16_iter", 637 | "utf8_iter", 638 | "write16", 639 | "zerovec", 640 | ] 641 | 642 | [[package]] 643 | name = "icu_normalizer_data" 644 | version = "1.5.0" 645 | source = "registry+https://github.com/rust-lang/crates.io-index" 646 | checksum = "f8cafbf7aa791e9b22bec55a167906f9e1215fd475cd22adfcf660e03e989516" 647 | 648 | [[package]] 649 | name = "icu_properties" 650 | version = "1.5.0" 651 | source = "registry+https://github.com/rust-lang/crates.io-index" 652 | checksum = "1f8ac670d7422d7f76b32e17a5db556510825b29ec9154f235977c9caba61036" 653 | dependencies = [ 654 | "displaydoc", 655 | "icu_collections", 656 | "icu_locid_transform", 657 | "icu_properties_data", 658 | "icu_provider", 659 | "tinystr", 660 | "zerovec", 661 | ] 662 | 663 | [[package]] 664 | name = "icu_properties_data" 665 | version = "1.5.0" 666 | source = "registry+https://github.com/rust-lang/crates.io-index" 667 | checksum = "67a8effbc3dd3e4ba1afa8ad918d5684b8868b3b26500753effea8d2eed19569" 668 | 669 | [[package]] 670 | name = "icu_provider" 671 | version = "1.5.0" 672 | source = "registry+https://github.com/rust-lang/crates.io-index" 673 | checksum = "6ed421c8a8ef78d3e2dbc98a973be2f3770cb42b606e3ab18d6237c4dfde68d9" 674 | dependencies = [ 675 | "displaydoc", 676 | "icu_locid", 677 | "icu_provider_macros", 678 | "stable_deref_trait", 679 | "tinystr", 680 | "writeable", 681 | "yoke", 682 | "zerofrom", 683 | "zerovec", 684 | ] 685 | 686 | [[package]] 687 | name = "icu_provider_macros" 688 | version = "1.5.0" 689 | source = "registry+https://github.com/rust-lang/crates.io-index" 690 | checksum = "1ec89e9337638ecdc08744df490b221a7399bf8d164eb52a665454e60e075ad6" 691 | dependencies = [ 692 | "proc-macro2", 693 | "quote", 694 | "syn 2.0.66", 695 | ] 696 | 697 | [[package]] 698 | name = "idna" 699 | version = "1.0.0" 700 | source = "registry+https://github.com/rust-lang/crates.io-index" 701 | checksum = "4716a3a0933a1d01c2f72450e89596eb51dd34ef3c211ccd875acdf1f8fe47ed" 702 | dependencies = [ 703 | "icu_normalizer", 704 | "icu_properties", 705 | "smallvec", 706 | "utf8_iter", 707 | ] 708 | 709 | [[package]] 710 | name = "indexmap" 711 | version = "2.2.6" 712 | source = "registry+https://github.com/rust-lang/crates.io-index" 713 | checksum = "168fb715dda47215e360912c096649d23d58bf392ac62f73919e831745e40f26" 714 | dependencies = [ 715 | "equivalent", 716 | "hashbrown", 717 | ] 718 | 719 | [[package]] 720 | name = "ipnet" 721 | version = "2.9.0" 722 | source = "registry+https://github.com/rust-lang/crates.io-index" 723 | checksum = "8f518f335dce6725a761382244631d86cf0ccb2863413590b31338feb467f9c3" 724 | 725 | [[package]] 726 | name = "is_terminal_polyfill" 727 | version = "1.70.0" 728 | source = "registry+https://github.com/rust-lang/crates.io-index" 729 | checksum = "f8478577c03552c21db0e2724ffb8986a5ce7af88107e6be5d2ee6e158c12800" 730 | 731 | [[package]] 732 | name = "itoa" 733 | version = "1.0.11" 734 | source = "registry+https://github.com/rust-lang/crates.io-index" 735 | checksum = "49f1f14873335454500d59611f1cf4a4b0f786f9ac11f4312a78e4cf2566695b" 736 | 737 | [[package]] 738 | name = "js-sys" 739 | version = "0.3.69" 740 | source = "registry+https://github.com/rust-lang/crates.io-index" 741 | checksum = "29c15563dc2726973df627357ce0c9ddddbea194836909d655df6a75d2cf296d" 742 | dependencies = [ 743 | "wasm-bindgen", 744 | ] 745 | 746 | [[package]] 747 | name = "jsonwebtoken" 748 | version = "8.3.0" 749 | source = "registry+https://github.com/rust-lang/crates.io-index" 750 | checksum = "6971da4d9c3aa03c3d8f3ff0f4155b534aad021292003895a469716b2a230378" 751 | dependencies = [ 752 | "base64 0.21.7", 753 | "pem", 754 | "ring", 755 | "serde", 756 | "serde_json", 757 | "simple_asn1", 758 | ] 759 | 760 | [[package]] 761 | name = "libc" 762 | version = "0.2.155" 763 | source = "registry+https://github.com/rust-lang/crates.io-index" 764 | checksum = "97b3888a4aecf77e811145cadf6eef5901f4782c53886191b2f693f24761847c" 765 | 766 | [[package]] 767 | name = "linux-raw-sys" 768 | version = "0.4.14" 769 | source = "registry+https://github.com/rust-lang/crates.io-index" 770 | checksum = "78b3ae25bc7c8c38cec158d1f2757ee79e9b3740fbc7ccf0e59e4b08d793fa89" 771 | 772 | [[package]] 773 | name = "litemap" 774 | version = "0.7.3" 775 | source = "registry+https://github.com/rust-lang/crates.io-index" 776 | checksum = "643cb0b8d4fcc284004d5fd0d67ccf61dfffadb7f75e1e71bc420f4688a3a704" 777 | 778 | [[package]] 779 | name = "lock_api" 780 | version = "0.4.12" 781 | source = "registry+https://github.com/rust-lang/crates.io-index" 782 | checksum = "07af8b9cdd281b7915f413fa73f29ebd5d55d0d3f0155584dade1ff18cea1b17" 783 | dependencies = [ 784 | "autocfg", 785 | "scopeguard", 786 | ] 787 | 788 | [[package]] 789 | name = "log" 790 | version = "0.4.21" 791 | source = "registry+https://github.com/rust-lang/crates.io-index" 792 | checksum = "90ed8c1e510134f979dbc4f070f87d4313098b704861a105fe34231c70a3901c" 793 | 794 | [[package]] 795 | name = "memchr" 796 | version = "2.7.4" 797 | source = "registry+https://github.com/rust-lang/crates.io-index" 798 | checksum = "78ca9ab1a0babb1e7d5695e3530886289c18cf2f87ec19a575a0abdce112e3a3" 799 | 800 | [[package]] 801 | name = "mime" 802 | version = "0.3.17" 803 | source = "registry+https://github.com/rust-lang/crates.io-index" 804 | checksum = "6877bb514081ee2a7ff5ef9de3281f14a4dd4bceac4c09388074a6b5df8a139a" 805 | 806 | [[package]] 807 | name = "miniz_oxide" 808 | version = "0.7.3" 809 | source = "registry+https://github.com/rust-lang/crates.io-index" 810 | checksum = "87dfd01fe195c66b572b37921ad8803d010623c0aca821bea2302239d155cdae" 811 | dependencies = [ 812 | "adler", 813 | ] 814 | 815 | [[package]] 816 | name = "mio" 817 | version = "0.8.11" 818 | source = "registry+https://github.com/rust-lang/crates.io-index" 819 | checksum = "a4a650543ca06a924e8b371db273b2756685faae30f8487da1b56505a8f78b0c" 820 | dependencies = [ 821 | "libc", 822 | "wasi", 823 | "windows-sys 0.48.0", 824 | ] 825 | 826 | [[package]] 827 | name = "native-tls" 828 | version = "0.2.12" 829 | source = "registry+https://github.com/rust-lang/crates.io-index" 830 | checksum = "a8614eb2c83d59d1c8cc974dd3f920198647674a0a035e1af1fa58707e317466" 831 | dependencies = [ 832 | "libc", 833 | "log", 834 | "openssl", 835 | "openssl-probe", 836 | "openssl-sys", 837 | "schannel", 838 | "security-framework", 839 | "security-framework-sys", 840 | "tempfile", 841 | ] 842 | 843 | [[package]] 844 | name = "num-bigint" 845 | version = "0.4.5" 846 | source = "registry+https://github.com/rust-lang/crates.io-index" 847 | checksum = "c165a9ab64cf766f73521c0dd2cfdff64f488b8f0b3e621face3462d3db536d7" 848 | dependencies = [ 849 | "num-integer", 850 | "num-traits", 851 | ] 852 | 853 | [[package]] 854 | name = "num-conv" 855 | version = "0.1.0" 856 | source = "registry+https://github.com/rust-lang/crates.io-index" 857 | checksum = "51d515d32fb182ee37cda2ccdcb92950d6a3c2893aa280e540671c2cd0f3b1d9" 858 | 859 | [[package]] 860 | name = "num-integer" 861 | version = "0.1.46" 862 | source = "registry+https://github.com/rust-lang/crates.io-index" 863 | checksum = "7969661fd2958a5cb096e56c8e1ad0444ac2bbcd0061bd28660485a44879858f" 864 | dependencies = [ 865 | "num-traits", 866 | ] 867 | 868 | [[package]] 869 | name = "num-traits" 870 | version = "0.2.19" 871 | source = "registry+https://github.com/rust-lang/crates.io-index" 872 | checksum = "071dfc062690e90b734c0b2273ce72ad0ffa95f0c74596bc250dcfd960262841" 873 | dependencies = [ 874 | "autocfg", 875 | ] 876 | 877 | [[package]] 878 | name = "num_cpus" 879 | version = "1.16.0" 880 | source = "registry+https://github.com/rust-lang/crates.io-index" 881 | checksum = "4161fcb6d602d4d2081af7c3a45852d875a03dd337a6bfdd6e06407b61342a43" 882 | dependencies = [ 883 | "hermit-abi", 884 | "libc", 885 | ] 886 | 887 | [[package]] 888 | name = "object" 889 | version = "0.36.0" 890 | source = "registry+https://github.com/rust-lang/crates.io-index" 891 | checksum = "576dfe1fc8f9df304abb159d767a29d0476f7750fbf8aa7ad07816004a207434" 892 | dependencies = [ 893 | "memchr", 894 | ] 895 | 896 | [[package]] 897 | name = "octocrab" 898 | version = "0.19.0" 899 | source = "registry+https://github.com/rust-lang/crates.io-index" 900 | checksum = "496442a5ec5ad38376a0c49bc0f31ba55dbda5276cf12757498c378c3bc2ea1c" 901 | dependencies = [ 902 | "arc-swap", 903 | "async-trait", 904 | "base64 0.21.7", 905 | "bytes", 906 | "cfg-if", 907 | "chrono", 908 | "either", 909 | "jsonwebtoken", 910 | "once_cell", 911 | "reqwest", 912 | "secrecy", 913 | "serde", 914 | "serde_json", 915 | "serde_path_to_error", 916 | "snafu", 917 | "tracing", 918 | "url", 919 | ] 920 | 921 | [[package]] 922 | name = "once_cell" 923 | version = "1.19.0" 924 | source = "registry+https://github.com/rust-lang/crates.io-index" 925 | checksum = "3fdb12b2476b595f9358c5161aa467c2438859caa136dec86c26fdd2efe17b92" 926 | 927 | [[package]] 928 | name = "openssl" 929 | version = "0.10.64" 930 | source = "registry+https://github.com/rust-lang/crates.io-index" 931 | checksum = "95a0481286a310808298130d22dd1fef0fa571e05a8f44ec801801e84b216b1f" 932 | dependencies = [ 933 | "bitflags 2.5.0", 934 | "cfg-if", 935 | "foreign-types", 936 | "libc", 937 | "once_cell", 938 | "openssl-macros", 939 | "openssl-sys", 940 | ] 941 | 942 | [[package]] 943 | name = "openssl-macros" 944 | version = "0.1.1" 945 | source = "registry+https://github.com/rust-lang/crates.io-index" 946 | checksum = "a948666b637a0f465e8564c73e89d4dde00d72d4d473cc972f390fc3dcee7d9c" 947 | dependencies = [ 948 | "proc-macro2", 949 | "quote", 950 | "syn 2.0.66", 951 | ] 952 | 953 | [[package]] 954 | name = "openssl-probe" 955 | version = "0.1.5" 956 | source = "registry+https://github.com/rust-lang/crates.io-index" 957 | checksum = "ff011a302c396a5197692431fc1948019154afc178baf7d8e37367442a4601cf" 958 | 959 | [[package]] 960 | name = "openssl-sys" 961 | version = "0.9.102" 962 | source = "registry+https://github.com/rust-lang/crates.io-index" 963 | checksum = "c597637d56fbc83893a35eb0dd04b2b8e7a50c91e64e9493e398b5df4fb45fa2" 964 | dependencies = [ 965 | "cc", 966 | "libc", 967 | "pkg-config", 968 | "vcpkg", 969 | ] 970 | 971 | [[package]] 972 | name = "parking_lot" 973 | version = "0.12.3" 974 | source = "registry+https://github.com/rust-lang/crates.io-index" 975 | checksum = "f1bf18183cf54e8d6059647fc3063646a1801cf30896933ec2311622cc4b9a27" 976 | dependencies = [ 977 | "lock_api", 978 | "parking_lot_core", 979 | ] 980 | 981 | [[package]] 982 | name = "parking_lot_core" 983 | version = "0.9.10" 984 | source = "registry+https://github.com/rust-lang/crates.io-index" 985 | checksum = "1e401f977ab385c9e4e3ab30627d6f26d00e2c73eef317493c4ec6d468726cf8" 986 | dependencies = [ 987 | "cfg-if", 988 | "libc", 989 | "redox_syscall", 990 | "smallvec", 991 | "windows-targets 0.52.5", 992 | ] 993 | 994 | [[package]] 995 | name = "pem" 996 | version = "1.1.1" 997 | source = "registry+https://github.com/rust-lang/crates.io-index" 998 | checksum = "a8835c273a76a90455d7344889b0964598e3316e2a79ede8e36f16bdcf2228b8" 999 | dependencies = [ 1000 | "base64 0.13.1", 1001 | ] 1002 | 1003 | [[package]] 1004 | name = "percent-encoding" 1005 | version = "2.3.1" 1006 | source = "registry+https://github.com/rust-lang/crates.io-index" 1007 | checksum = "e3148f5046208a5d56bcfc03053e3ca6334e51da8dfb19b6cdc8b306fae3283e" 1008 | 1009 | [[package]] 1010 | name = "pin-project-lite" 1011 | version = "0.2.14" 1012 | source = "registry+https://github.com/rust-lang/crates.io-index" 1013 | checksum = "bda66fc9667c18cb2758a2ac84d1167245054bcf85d5d1aaa6923f45801bdd02" 1014 | 1015 | [[package]] 1016 | name = "pin-utils" 1017 | version = "0.1.0" 1018 | source = "registry+https://github.com/rust-lang/crates.io-index" 1019 | checksum = "8b870d8c151b6f2fb93e84a13146138f05d02ed11c7e7c54f8826aaaf7c9f184" 1020 | 1021 | [[package]] 1022 | name = "pkg-config" 1023 | version = "0.3.30" 1024 | source = "registry+https://github.com/rust-lang/crates.io-index" 1025 | checksum = "d231b230927b5e4ad203db57bbcbee2802f6bce620b1e4a9024a07d94e2907ec" 1026 | 1027 | [[package]] 1028 | name = "powerfmt" 1029 | version = "0.2.0" 1030 | source = "registry+https://github.com/rust-lang/crates.io-index" 1031 | checksum = "439ee305def115ba05938db6eb1644ff94165c5ab5e9420d1c1bcedbba909391" 1032 | 1033 | [[package]] 1034 | name = "proc-macro2" 1035 | version = "1.0.85" 1036 | source = "registry+https://github.com/rust-lang/crates.io-index" 1037 | checksum = "22244ce15aa966053a896d1accb3a6e68469b97c7f33f284b99f0d576879fc23" 1038 | dependencies = [ 1039 | "unicode-ident", 1040 | ] 1041 | 1042 | [[package]] 1043 | name = "quote" 1044 | version = "1.0.36" 1045 | source = "registry+https://github.com/rust-lang/crates.io-index" 1046 | checksum = "0fa76aaf39101c457836aec0ce2316dbdc3ab723cdda1c6bd4e6ad4208acaca7" 1047 | dependencies = [ 1048 | "proc-macro2", 1049 | ] 1050 | 1051 | [[package]] 1052 | name = "redox_syscall" 1053 | version = "0.5.1" 1054 | source = "registry+https://github.com/rust-lang/crates.io-index" 1055 | checksum = "469052894dcb553421e483e4209ee581a45100d31b4018de03e5a7ad86374a7e" 1056 | dependencies = [ 1057 | "bitflags 2.5.0", 1058 | ] 1059 | 1060 | [[package]] 1061 | name = "reqwest" 1062 | version = "0.11.27" 1063 | source = "registry+https://github.com/rust-lang/crates.io-index" 1064 | checksum = "dd67538700a17451e7cba03ac727fb961abb7607553461627b97de0b89cf4a62" 1065 | dependencies = [ 1066 | "base64 0.21.7", 1067 | "bytes", 1068 | "encoding_rs", 1069 | "futures-core", 1070 | "futures-util", 1071 | "h2", 1072 | "http", 1073 | "http-body", 1074 | "hyper", 1075 | "hyper-tls", 1076 | "ipnet", 1077 | "js-sys", 1078 | "log", 1079 | "mime", 1080 | "native-tls", 1081 | "once_cell", 1082 | "percent-encoding", 1083 | "pin-project-lite", 1084 | "rustls-pemfile", 1085 | "serde", 1086 | "serde_json", 1087 | "serde_urlencoded", 1088 | "sync_wrapper", 1089 | "system-configuration", 1090 | "tokio", 1091 | "tokio-native-tls", 1092 | "tokio-util", 1093 | "tower-service", 1094 | "url", 1095 | "wasm-bindgen", 1096 | "wasm-bindgen-futures", 1097 | "wasm-streams", 1098 | "web-sys", 1099 | "winreg", 1100 | ] 1101 | 1102 | [[package]] 1103 | name = "ring" 1104 | version = "0.16.20" 1105 | source = "registry+https://github.com/rust-lang/crates.io-index" 1106 | checksum = "3053cf52e236a3ed746dfc745aa9cacf1b791d846bdaf412f60a8d7d6e17c8fc" 1107 | dependencies = [ 1108 | "cc", 1109 | "libc", 1110 | "once_cell", 1111 | "spin", 1112 | "untrusted", 1113 | "web-sys", 1114 | "winapi", 1115 | ] 1116 | 1117 | [[package]] 1118 | name = "rustc-demangle" 1119 | version = "0.1.24" 1120 | source = "registry+https://github.com/rust-lang/crates.io-index" 1121 | checksum = "719b953e2095829ee67db738b3bfa9fa368c94900df327b3f07fe6e794d2fe1f" 1122 | 1123 | [[package]] 1124 | name = "rustix" 1125 | version = "0.38.34" 1126 | source = "registry+https://github.com/rust-lang/crates.io-index" 1127 | checksum = "70dc5ec042f7a43c4a73241207cecc9873a06d45debb38b329f8541d85c2730f" 1128 | dependencies = [ 1129 | "bitflags 2.5.0", 1130 | "errno", 1131 | "libc", 1132 | "linux-raw-sys", 1133 | "windows-sys 0.52.0", 1134 | ] 1135 | 1136 | [[package]] 1137 | name = "rustls-pemfile" 1138 | version = "1.0.4" 1139 | source = "registry+https://github.com/rust-lang/crates.io-index" 1140 | checksum = "1c74cae0a4cf6ccbbf5f359f08efdf8ee7e1dc532573bf0db71968cb56b1448c" 1141 | dependencies = [ 1142 | "base64 0.21.7", 1143 | ] 1144 | 1145 | [[package]] 1146 | name = "ryu" 1147 | version = "1.0.18" 1148 | source = "registry+https://github.com/rust-lang/crates.io-index" 1149 | checksum = "f3cb5ba0dc43242ce17de99c180e96db90b235b8a9fdc9543c96d2209116bd9f" 1150 | 1151 | [[package]] 1152 | name = "schannel" 1153 | version = "0.1.23" 1154 | source = "registry+https://github.com/rust-lang/crates.io-index" 1155 | checksum = "fbc91545643bcf3a0bbb6569265615222618bdf33ce4ffbbd13c4bbd4c093534" 1156 | dependencies = [ 1157 | "windows-sys 0.52.0", 1158 | ] 1159 | 1160 | [[package]] 1161 | name = "scopeguard" 1162 | version = "1.2.0" 1163 | source = "registry+https://github.com/rust-lang/crates.io-index" 1164 | checksum = "94143f37725109f92c262ed2cf5e59bce7498c01bcc1502d7b9afe439a4e9f49" 1165 | 1166 | [[package]] 1167 | name = "secrecy" 1168 | version = "0.8.0" 1169 | source = "registry+https://github.com/rust-lang/crates.io-index" 1170 | checksum = "9bd1c54ea06cfd2f6b63219704de0b9b4f72dcc2b8fdef820be6cd799780e91e" 1171 | dependencies = [ 1172 | "zeroize", 1173 | ] 1174 | 1175 | [[package]] 1176 | name = "security-framework" 1177 | version = "2.11.0" 1178 | source = "registry+https://github.com/rust-lang/crates.io-index" 1179 | checksum = "c627723fd09706bacdb5cf41499e95098555af3c3c29d014dc3c458ef6be11c0" 1180 | dependencies = [ 1181 | "bitflags 2.5.0", 1182 | "core-foundation", 1183 | "core-foundation-sys", 1184 | "libc", 1185 | "security-framework-sys", 1186 | ] 1187 | 1188 | [[package]] 1189 | name = "security-framework-sys" 1190 | version = "2.11.0" 1191 | source = "registry+https://github.com/rust-lang/crates.io-index" 1192 | checksum = "317936bbbd05227752583946b9e66d7ce3b489f84e11a94a510b4437fef407d7" 1193 | dependencies = [ 1194 | "core-foundation-sys", 1195 | "libc", 1196 | ] 1197 | 1198 | [[package]] 1199 | name = "serde" 1200 | version = "1.0.203" 1201 | source = "registry+https://github.com/rust-lang/crates.io-index" 1202 | checksum = "7253ab4de971e72fb7be983802300c30b5a7f0c2e56fab8abfc6a214307c0094" 1203 | dependencies = [ 1204 | "serde_derive", 1205 | ] 1206 | 1207 | [[package]] 1208 | name = "serde_derive" 1209 | version = "1.0.203" 1210 | source = "registry+https://github.com/rust-lang/crates.io-index" 1211 | checksum = "500cbc0ebeb6f46627f50f3f5811ccf6bf00643be300b4c3eabc0ef55dc5b5ba" 1212 | dependencies = [ 1213 | "proc-macro2", 1214 | "quote", 1215 | "syn 2.0.66", 1216 | ] 1217 | 1218 | [[package]] 1219 | name = "serde_json" 1220 | version = "1.0.117" 1221 | source = "registry+https://github.com/rust-lang/crates.io-index" 1222 | checksum = "455182ea6142b14f93f4bc5320a2b31c1f266b66a4a5c858b013302a5d8cbfc3" 1223 | dependencies = [ 1224 | "itoa", 1225 | "ryu", 1226 | "serde", 1227 | ] 1228 | 1229 | [[package]] 1230 | name = "serde_path_to_error" 1231 | version = "0.1.16" 1232 | source = "registry+https://github.com/rust-lang/crates.io-index" 1233 | checksum = "af99884400da37c88f5e9146b7f1fd0fbcae8f6eec4e9da38b67d05486f814a6" 1234 | dependencies = [ 1235 | "itoa", 1236 | "serde", 1237 | ] 1238 | 1239 | [[package]] 1240 | name = "serde_urlencoded" 1241 | version = "0.7.1" 1242 | source = "registry+https://github.com/rust-lang/crates.io-index" 1243 | checksum = "d3491c14715ca2294c4d6a88f15e84739788c1d030eed8c110436aafdaa2f3fd" 1244 | dependencies = [ 1245 | "form_urlencoded", 1246 | "itoa", 1247 | "ryu", 1248 | "serde", 1249 | ] 1250 | 1251 | [[package]] 1252 | name = "simple_asn1" 1253 | version = "0.6.2" 1254 | source = "registry+https://github.com/rust-lang/crates.io-index" 1255 | checksum = "adc4e5204eb1910f40f9cfa375f6f05b68c3abac4b6fd879c8ff5e7ae8a0a085" 1256 | dependencies = [ 1257 | "num-bigint", 1258 | "num-traits", 1259 | "thiserror", 1260 | "time", 1261 | ] 1262 | 1263 | [[package]] 1264 | name = "slab" 1265 | version = "0.4.9" 1266 | source = "registry+https://github.com/rust-lang/crates.io-index" 1267 | checksum = "8f92a496fb766b417c996b9c5e57daf2f7ad3b0bebe1ccfca4856390e3d3bb67" 1268 | dependencies = [ 1269 | "autocfg", 1270 | ] 1271 | 1272 | [[package]] 1273 | name = "smallvec" 1274 | version = "1.13.2" 1275 | source = "registry+https://github.com/rust-lang/crates.io-index" 1276 | checksum = "3c5e1a9a646d36c3599cd173a41282daf47c44583ad367b8e6837255952e5c67" 1277 | 1278 | [[package]] 1279 | name = "snafu" 1280 | version = "0.7.5" 1281 | source = "registry+https://github.com/rust-lang/crates.io-index" 1282 | checksum = "e4de37ad025c587a29e8f3f5605c00f70b98715ef90b9061a815b9e59e9042d6" 1283 | dependencies = [ 1284 | "backtrace", 1285 | "doc-comment", 1286 | "snafu-derive", 1287 | ] 1288 | 1289 | [[package]] 1290 | name = "snafu-derive" 1291 | version = "0.7.5" 1292 | source = "registry+https://github.com/rust-lang/crates.io-index" 1293 | checksum = "990079665f075b699031e9c08fd3ab99be5029b96f3b78dc0709e8f77e4efebf" 1294 | dependencies = [ 1295 | "heck 0.4.1", 1296 | "proc-macro2", 1297 | "quote", 1298 | "syn 1.0.109", 1299 | ] 1300 | 1301 | [[package]] 1302 | name = "socket2" 1303 | version = "0.5.7" 1304 | source = "registry+https://github.com/rust-lang/crates.io-index" 1305 | checksum = "ce305eb0b4296696835b71df73eb912e0f1ffd2556a501fcede6e0c50349191c" 1306 | dependencies = [ 1307 | "libc", 1308 | "windows-sys 0.52.0", 1309 | ] 1310 | 1311 | [[package]] 1312 | name = "spin" 1313 | version = "0.5.2" 1314 | source = "registry+https://github.com/rust-lang/crates.io-index" 1315 | checksum = "6e63cff320ae2c57904679ba7cb63280a3dc4613885beafb148ee7bf9aa9042d" 1316 | 1317 | [[package]] 1318 | name = "stable_deref_trait" 1319 | version = "1.2.0" 1320 | source = "registry+https://github.com/rust-lang/crates.io-index" 1321 | checksum = "a8f112729512f8e442d81f95a8a7ddf2b7c6b8a1a6f509a95864142b30cab2d3" 1322 | 1323 | [[package]] 1324 | name = "strsim" 1325 | version = "0.11.1" 1326 | source = "registry+https://github.com/rust-lang/crates.io-index" 1327 | checksum = "7da8b5736845d9f2fcb837ea5d9e2628564b3b043a70948a3f0b778838c5fb4f" 1328 | 1329 | [[package]] 1330 | name = "syn" 1331 | version = "1.0.109" 1332 | source = "registry+https://github.com/rust-lang/crates.io-index" 1333 | checksum = "72b64191b275b66ffe2469e8af2c1cfe3bafa67b529ead792a6d0160888b4237" 1334 | dependencies = [ 1335 | "proc-macro2", 1336 | "quote", 1337 | "unicode-ident", 1338 | ] 1339 | 1340 | [[package]] 1341 | name = "syn" 1342 | version = "2.0.66" 1343 | source = "registry+https://github.com/rust-lang/crates.io-index" 1344 | checksum = "c42f3f41a2de00b01c0aaad383c5a45241efc8b2d1eda5661812fda5f3cdcff5" 1345 | dependencies = [ 1346 | "proc-macro2", 1347 | "quote", 1348 | "unicode-ident", 1349 | ] 1350 | 1351 | [[package]] 1352 | name = "sync_wrapper" 1353 | version = "0.1.2" 1354 | source = "registry+https://github.com/rust-lang/crates.io-index" 1355 | checksum = "2047c6ded9c721764247e62cd3b03c09ffc529b2ba5b10ec482ae507a4a70160" 1356 | 1357 | [[package]] 1358 | name = "synstructure" 1359 | version = "0.13.1" 1360 | source = "registry+https://github.com/rust-lang/crates.io-index" 1361 | checksum = "c8af7666ab7b6390ab78131fb5b0fce11d6b7a6951602017c35fa82800708971" 1362 | dependencies = [ 1363 | "proc-macro2", 1364 | "quote", 1365 | "syn 2.0.66", 1366 | ] 1367 | 1368 | [[package]] 1369 | name = "system-configuration" 1370 | version = "0.5.1" 1371 | source = "registry+https://github.com/rust-lang/crates.io-index" 1372 | checksum = "ba3a3adc5c275d719af8cb4272ea1c4a6d668a777f37e115f6d11ddbc1c8e0e7" 1373 | dependencies = [ 1374 | "bitflags 1.3.2", 1375 | "core-foundation", 1376 | "system-configuration-sys", 1377 | ] 1378 | 1379 | [[package]] 1380 | name = "system-configuration-sys" 1381 | version = "0.5.0" 1382 | source = "registry+https://github.com/rust-lang/crates.io-index" 1383 | checksum = "a75fb188eb626b924683e3b95e3a48e63551fcfb51949de2f06a9d91dbee93c9" 1384 | dependencies = [ 1385 | "core-foundation-sys", 1386 | "libc", 1387 | ] 1388 | 1389 | [[package]] 1390 | name = "tempfile" 1391 | version = "3.10.1" 1392 | source = "registry+https://github.com/rust-lang/crates.io-index" 1393 | checksum = "85b77fafb263dd9d05cbeac119526425676db3784113aa9295c88498cbf8bff1" 1394 | dependencies = [ 1395 | "cfg-if", 1396 | "fastrand", 1397 | "rustix", 1398 | "windows-sys 0.52.0", 1399 | ] 1400 | 1401 | [[package]] 1402 | name = "thiserror" 1403 | version = "1.0.61" 1404 | source = "registry+https://github.com/rust-lang/crates.io-index" 1405 | checksum = "c546c80d6be4bc6a00c0f01730c08df82eaa7a7a61f11d656526506112cc1709" 1406 | dependencies = [ 1407 | "thiserror-impl", 1408 | ] 1409 | 1410 | [[package]] 1411 | name = "thiserror-impl" 1412 | version = "1.0.61" 1413 | source = "registry+https://github.com/rust-lang/crates.io-index" 1414 | checksum = "46c3384250002a6d5af4d114f2845d37b57521033f30d5c3f46c4d70e1197533" 1415 | dependencies = [ 1416 | "proc-macro2", 1417 | "quote", 1418 | "syn 2.0.66", 1419 | ] 1420 | 1421 | [[package]] 1422 | name = "time" 1423 | version = "0.3.36" 1424 | source = "registry+https://github.com/rust-lang/crates.io-index" 1425 | checksum = "5dfd88e563464686c916c7e46e623e520ddc6d79fa6641390f2e3fa86e83e885" 1426 | dependencies = [ 1427 | "deranged", 1428 | "itoa", 1429 | "num-conv", 1430 | "powerfmt", 1431 | "serde", 1432 | "time-core", 1433 | "time-macros", 1434 | ] 1435 | 1436 | [[package]] 1437 | name = "time-core" 1438 | version = "0.1.2" 1439 | source = "registry+https://github.com/rust-lang/crates.io-index" 1440 | checksum = "ef927ca75afb808a4d64dd374f00a2adf8d0fcff8e7b184af886c3c87ec4a3f3" 1441 | 1442 | [[package]] 1443 | name = "time-macros" 1444 | version = "0.2.18" 1445 | source = "registry+https://github.com/rust-lang/crates.io-index" 1446 | checksum = "3f252a68540fde3a3877aeea552b832b40ab9a69e318efd078774a01ddee1ccf" 1447 | dependencies = [ 1448 | "num-conv", 1449 | "time-core", 1450 | ] 1451 | 1452 | [[package]] 1453 | name = "tinystr" 1454 | version = "0.7.6" 1455 | source = "registry+https://github.com/rust-lang/crates.io-index" 1456 | checksum = "9117f5d4db391c1cf6927e7bea3db74b9a1c1add8f7eda9ffd5364f40f57b82f" 1457 | dependencies = [ 1458 | "displaydoc", 1459 | "zerovec", 1460 | ] 1461 | 1462 | [[package]] 1463 | name = "to-bedrock" 1464 | version = "0.1.0" 1465 | dependencies = [ 1466 | "anyhow", 1467 | "base64 0.21.7", 1468 | "bytes", 1469 | "clap", 1470 | "octocrab", 1471 | "reqwest", 1472 | "serde", 1473 | "serde_json", 1474 | "tokio", 1475 | "tokio-stream", 1476 | "tokio-util", 1477 | "zip", 1478 | ] 1479 | 1480 | [[package]] 1481 | name = "tokio" 1482 | version = "1.38.0" 1483 | source = "registry+https://github.com/rust-lang/crates.io-index" 1484 | checksum = "ba4f4a02a7a80d6f274636f0aa95c7e383b912d41fe721a31f29e29698585a4a" 1485 | dependencies = [ 1486 | "backtrace", 1487 | "bytes", 1488 | "libc", 1489 | "mio", 1490 | "num_cpus", 1491 | "parking_lot", 1492 | "pin-project-lite", 1493 | "socket2", 1494 | "tokio-macros", 1495 | "windows-sys 0.48.0", 1496 | ] 1497 | 1498 | [[package]] 1499 | name = "tokio-macros" 1500 | version = "2.3.0" 1501 | source = "registry+https://github.com/rust-lang/crates.io-index" 1502 | checksum = "5f5ae998a069d4b5aba8ee9dad856af7d520c3699e6159b185c2acd48155d39a" 1503 | dependencies = [ 1504 | "proc-macro2", 1505 | "quote", 1506 | "syn 2.0.66", 1507 | ] 1508 | 1509 | [[package]] 1510 | name = "tokio-native-tls" 1511 | version = "0.3.1" 1512 | source = "registry+https://github.com/rust-lang/crates.io-index" 1513 | checksum = "bbae76ab933c85776efabc971569dd6119c580d8f5d448769dec1764bf796ef2" 1514 | dependencies = [ 1515 | "native-tls", 1516 | "tokio", 1517 | ] 1518 | 1519 | [[package]] 1520 | name = "tokio-stream" 1521 | version = "0.1.15" 1522 | source = "registry+https://github.com/rust-lang/crates.io-index" 1523 | checksum = "267ac89e0bec6e691e5813911606935d77c476ff49024f98abcea3e7b15e37af" 1524 | dependencies = [ 1525 | "futures-core", 1526 | "pin-project-lite", 1527 | "tokio", 1528 | ] 1529 | 1530 | [[package]] 1531 | name = "tokio-util" 1532 | version = "0.7.11" 1533 | source = "registry+https://github.com/rust-lang/crates.io-index" 1534 | checksum = "9cf6b47b3771c49ac75ad09a6162f53ad4b8088b76ac60e8ec1455b31a189fe1" 1535 | dependencies = [ 1536 | "bytes", 1537 | "futures-core", 1538 | "futures-sink", 1539 | "pin-project-lite", 1540 | "tokio", 1541 | ] 1542 | 1543 | [[package]] 1544 | name = "tower-service" 1545 | version = "0.3.2" 1546 | source = "registry+https://github.com/rust-lang/crates.io-index" 1547 | checksum = "b6bc1c9ce2b5135ac7f93c72918fc37feb872bdc6a5533a8b85eb4b86bfdae52" 1548 | 1549 | [[package]] 1550 | name = "tracing" 1551 | version = "0.1.40" 1552 | source = "registry+https://github.com/rust-lang/crates.io-index" 1553 | checksum = "c3523ab5a71916ccf420eebdf5521fcef02141234bbc0b8a49f2fdc4544364ef" 1554 | dependencies = [ 1555 | "pin-project-lite", 1556 | "tracing-attributes", 1557 | "tracing-core", 1558 | ] 1559 | 1560 | [[package]] 1561 | name = "tracing-attributes" 1562 | version = "0.1.27" 1563 | source = "registry+https://github.com/rust-lang/crates.io-index" 1564 | checksum = "34704c8d6ebcbc939824180af020566b01a7c01f80641264eba0999f6c2b6be7" 1565 | dependencies = [ 1566 | "proc-macro2", 1567 | "quote", 1568 | "syn 2.0.66", 1569 | ] 1570 | 1571 | [[package]] 1572 | name = "tracing-core" 1573 | version = "0.1.32" 1574 | source = "registry+https://github.com/rust-lang/crates.io-index" 1575 | checksum = "c06d3da6113f116aaee68e4d601191614c9053067f9ab7f6edbcb161237daa54" 1576 | dependencies = [ 1577 | "once_cell", 1578 | ] 1579 | 1580 | [[package]] 1581 | name = "try-lock" 1582 | version = "0.2.5" 1583 | source = "registry+https://github.com/rust-lang/crates.io-index" 1584 | checksum = "e421abadd41a4225275504ea4d6566923418b7f05506fbc9c0fe86ba7396114b" 1585 | 1586 | [[package]] 1587 | name = "unicode-ident" 1588 | version = "1.0.12" 1589 | source = "registry+https://github.com/rust-lang/crates.io-index" 1590 | checksum = "3354b9ac3fae1ff6755cb6db53683adb661634f67557942dea4facebec0fee4b" 1591 | 1592 | [[package]] 1593 | name = "untrusted" 1594 | version = "0.7.1" 1595 | source = "registry+https://github.com/rust-lang/crates.io-index" 1596 | checksum = "a156c684c91ea7d62626509bce3cb4e1d9ed5c4d978f7b4352658f96a4c26b4a" 1597 | 1598 | [[package]] 1599 | name = "url" 1600 | version = "2.5.1" 1601 | source = "registry+https://github.com/rust-lang/crates.io-index" 1602 | checksum = "f7c25da092f0a868cdf09e8674cd3b7ef3a7d92a24253e663a2fb85e2496de56" 1603 | dependencies = [ 1604 | "form_urlencoded", 1605 | "idna", 1606 | "percent-encoding", 1607 | "serde", 1608 | ] 1609 | 1610 | [[package]] 1611 | name = "utf16_iter" 1612 | version = "1.0.5" 1613 | source = "registry+https://github.com/rust-lang/crates.io-index" 1614 | checksum = "c8232dd3cdaed5356e0f716d285e4b40b932ac434100fe9b7e0e8e935b9e6246" 1615 | 1616 | [[package]] 1617 | name = "utf8_iter" 1618 | version = "1.0.4" 1619 | source = "registry+https://github.com/rust-lang/crates.io-index" 1620 | checksum = "b6c140620e7ffbb22c2dee59cafe6084a59b5ffc27a8859a5f0d494b5d52b6be" 1621 | 1622 | [[package]] 1623 | name = "utf8parse" 1624 | version = "0.2.2" 1625 | source = "registry+https://github.com/rust-lang/crates.io-index" 1626 | checksum = "06abde3611657adf66d383f00b093d7faecc7fa57071cce2578660c9f1010821" 1627 | 1628 | [[package]] 1629 | name = "vcpkg" 1630 | version = "0.2.15" 1631 | source = "registry+https://github.com/rust-lang/crates.io-index" 1632 | checksum = "accd4ea62f7bb7a82fe23066fb0957d48ef677f6eeb8215f372f52e48bb32426" 1633 | 1634 | [[package]] 1635 | name = "want" 1636 | version = "0.3.1" 1637 | source = "registry+https://github.com/rust-lang/crates.io-index" 1638 | checksum = "bfa7760aed19e106de2c7c0b581b509f2f25d3dacaf737cb82ac61bc6d760b0e" 1639 | dependencies = [ 1640 | "try-lock", 1641 | ] 1642 | 1643 | [[package]] 1644 | name = "wasi" 1645 | version = "0.11.0+wasi-snapshot-preview1" 1646 | source = "registry+https://github.com/rust-lang/crates.io-index" 1647 | checksum = "9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423" 1648 | 1649 | [[package]] 1650 | name = "wasm-bindgen" 1651 | version = "0.2.92" 1652 | source = "registry+https://github.com/rust-lang/crates.io-index" 1653 | checksum = "4be2531df63900aeb2bca0daaaddec08491ee64ceecbee5076636a3b026795a8" 1654 | dependencies = [ 1655 | "cfg-if", 1656 | "wasm-bindgen-macro", 1657 | ] 1658 | 1659 | [[package]] 1660 | name = "wasm-bindgen-backend" 1661 | version = "0.2.92" 1662 | source = "registry+https://github.com/rust-lang/crates.io-index" 1663 | checksum = "614d787b966d3989fa7bb98a654e369c762374fd3213d212cfc0251257e747da" 1664 | dependencies = [ 1665 | "bumpalo", 1666 | "log", 1667 | "once_cell", 1668 | "proc-macro2", 1669 | "quote", 1670 | "syn 2.0.66", 1671 | "wasm-bindgen-shared", 1672 | ] 1673 | 1674 | [[package]] 1675 | name = "wasm-bindgen-futures" 1676 | version = "0.4.42" 1677 | source = "registry+https://github.com/rust-lang/crates.io-index" 1678 | checksum = "76bc14366121efc8dbb487ab05bcc9d346b3b5ec0eaa76e46594cabbe51762c0" 1679 | dependencies = [ 1680 | "cfg-if", 1681 | "js-sys", 1682 | "wasm-bindgen", 1683 | "web-sys", 1684 | ] 1685 | 1686 | [[package]] 1687 | name = "wasm-bindgen-macro" 1688 | version = "0.2.92" 1689 | source = "registry+https://github.com/rust-lang/crates.io-index" 1690 | checksum = "a1f8823de937b71b9460c0c34e25f3da88250760bec0ebac694b49997550d726" 1691 | dependencies = [ 1692 | "quote", 1693 | "wasm-bindgen-macro-support", 1694 | ] 1695 | 1696 | [[package]] 1697 | name = "wasm-bindgen-macro-support" 1698 | version = "0.2.92" 1699 | source = "registry+https://github.com/rust-lang/crates.io-index" 1700 | checksum = "e94f17b526d0a461a191c78ea52bbce64071ed5c04c9ffe424dcb38f74171bb7" 1701 | dependencies = [ 1702 | "proc-macro2", 1703 | "quote", 1704 | "syn 2.0.66", 1705 | "wasm-bindgen-backend", 1706 | "wasm-bindgen-shared", 1707 | ] 1708 | 1709 | [[package]] 1710 | name = "wasm-bindgen-shared" 1711 | version = "0.2.92" 1712 | source = "registry+https://github.com/rust-lang/crates.io-index" 1713 | checksum = "af190c94f2773fdb3729c55b007a722abb5384da03bc0986df4c289bf5567e96" 1714 | 1715 | [[package]] 1716 | name = "wasm-streams" 1717 | version = "0.4.0" 1718 | source = "registry+https://github.com/rust-lang/crates.io-index" 1719 | checksum = "b65dc4c90b63b118468cf747d8bf3566c1913ef60be765b5730ead9e0a3ba129" 1720 | dependencies = [ 1721 | "futures-util", 1722 | "js-sys", 1723 | "wasm-bindgen", 1724 | "wasm-bindgen-futures", 1725 | "web-sys", 1726 | ] 1727 | 1728 | [[package]] 1729 | name = "web-sys" 1730 | version = "0.3.69" 1731 | source = "registry+https://github.com/rust-lang/crates.io-index" 1732 | checksum = "77afa9a11836342370f4817622a2f0f418b134426d91a82dfb48f532d2ec13ef" 1733 | dependencies = [ 1734 | "js-sys", 1735 | "wasm-bindgen", 1736 | ] 1737 | 1738 | [[package]] 1739 | name = "winapi" 1740 | version = "0.3.9" 1741 | source = "registry+https://github.com/rust-lang/crates.io-index" 1742 | checksum = "5c839a674fcd7a98952e593242ea400abe93992746761e38641405d28b00f419" 1743 | dependencies = [ 1744 | "winapi-i686-pc-windows-gnu", 1745 | "winapi-x86_64-pc-windows-gnu", 1746 | ] 1747 | 1748 | [[package]] 1749 | name = "winapi-i686-pc-windows-gnu" 1750 | version = "0.4.0" 1751 | source = "registry+https://github.com/rust-lang/crates.io-index" 1752 | checksum = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6" 1753 | 1754 | [[package]] 1755 | name = "winapi-x86_64-pc-windows-gnu" 1756 | version = "0.4.0" 1757 | source = "registry+https://github.com/rust-lang/crates.io-index" 1758 | checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f" 1759 | 1760 | [[package]] 1761 | name = "windows-core" 1762 | version = "0.52.0" 1763 | source = "registry+https://github.com/rust-lang/crates.io-index" 1764 | checksum = "33ab640c8d7e35bf8ba19b884ba838ceb4fba93a4e8c65a9059d08afcfc683d9" 1765 | dependencies = [ 1766 | "windows-targets 0.52.5", 1767 | ] 1768 | 1769 | [[package]] 1770 | name = "windows-sys" 1771 | version = "0.48.0" 1772 | source = "registry+https://github.com/rust-lang/crates.io-index" 1773 | checksum = "677d2418bec65e3338edb076e806bc1ec15693c5d0104683f2efe857f61056a9" 1774 | dependencies = [ 1775 | "windows-targets 0.48.5", 1776 | ] 1777 | 1778 | [[package]] 1779 | name = "windows-sys" 1780 | version = "0.52.0" 1781 | source = "registry+https://github.com/rust-lang/crates.io-index" 1782 | checksum = "282be5f36a8ce781fad8c8ae18fa3f9beff57ec1b52cb3de0789201425d9a33d" 1783 | dependencies = [ 1784 | "windows-targets 0.52.5", 1785 | ] 1786 | 1787 | [[package]] 1788 | name = "windows-targets" 1789 | version = "0.48.5" 1790 | source = "registry+https://github.com/rust-lang/crates.io-index" 1791 | checksum = "9a2fa6e2155d7247be68c096456083145c183cbbbc2764150dda45a87197940c" 1792 | dependencies = [ 1793 | "windows_aarch64_gnullvm 0.48.5", 1794 | "windows_aarch64_msvc 0.48.5", 1795 | "windows_i686_gnu 0.48.5", 1796 | "windows_i686_msvc 0.48.5", 1797 | "windows_x86_64_gnu 0.48.5", 1798 | "windows_x86_64_gnullvm 0.48.5", 1799 | "windows_x86_64_msvc 0.48.5", 1800 | ] 1801 | 1802 | [[package]] 1803 | name = "windows-targets" 1804 | version = "0.52.5" 1805 | source = "registry+https://github.com/rust-lang/crates.io-index" 1806 | checksum = "6f0713a46559409d202e70e28227288446bf7841d3211583a4b53e3f6d96e7eb" 1807 | dependencies = [ 1808 | "windows_aarch64_gnullvm 0.52.5", 1809 | "windows_aarch64_msvc 0.52.5", 1810 | "windows_i686_gnu 0.52.5", 1811 | "windows_i686_gnullvm", 1812 | "windows_i686_msvc 0.52.5", 1813 | "windows_x86_64_gnu 0.52.5", 1814 | "windows_x86_64_gnullvm 0.52.5", 1815 | "windows_x86_64_msvc 0.52.5", 1816 | ] 1817 | 1818 | [[package]] 1819 | name = "windows_aarch64_gnullvm" 1820 | version = "0.48.5" 1821 | source = "registry+https://github.com/rust-lang/crates.io-index" 1822 | checksum = "2b38e32f0abccf9987a4e3079dfb67dcd799fb61361e53e2882c3cbaf0d905d8" 1823 | 1824 | [[package]] 1825 | name = "windows_aarch64_gnullvm" 1826 | version = "0.52.5" 1827 | source = "registry+https://github.com/rust-lang/crates.io-index" 1828 | checksum = "7088eed71e8b8dda258ecc8bac5fb1153c5cffaf2578fc8ff5d61e23578d3263" 1829 | 1830 | [[package]] 1831 | name = "windows_aarch64_msvc" 1832 | version = "0.48.5" 1833 | source = "registry+https://github.com/rust-lang/crates.io-index" 1834 | checksum = "dc35310971f3b2dbbf3f0690a219f40e2d9afcf64f9ab7cc1be722937c26b4bc" 1835 | 1836 | [[package]] 1837 | name = "windows_aarch64_msvc" 1838 | version = "0.52.5" 1839 | source = "registry+https://github.com/rust-lang/crates.io-index" 1840 | checksum = "9985fd1504e250c615ca5f281c3f7a6da76213ebd5ccc9561496568a2752afb6" 1841 | 1842 | [[package]] 1843 | name = "windows_i686_gnu" 1844 | version = "0.48.5" 1845 | source = "registry+https://github.com/rust-lang/crates.io-index" 1846 | checksum = "a75915e7def60c94dcef72200b9a8e58e5091744960da64ec734a6c6e9b3743e" 1847 | 1848 | [[package]] 1849 | name = "windows_i686_gnu" 1850 | version = "0.52.5" 1851 | source = "registry+https://github.com/rust-lang/crates.io-index" 1852 | checksum = "88ba073cf16d5372720ec942a8ccbf61626074c6d4dd2e745299726ce8b89670" 1853 | 1854 | [[package]] 1855 | name = "windows_i686_gnullvm" 1856 | version = "0.52.5" 1857 | source = "registry+https://github.com/rust-lang/crates.io-index" 1858 | checksum = "87f4261229030a858f36b459e748ae97545d6f1ec60e5e0d6a3d32e0dc232ee9" 1859 | 1860 | [[package]] 1861 | name = "windows_i686_msvc" 1862 | version = "0.48.5" 1863 | source = "registry+https://github.com/rust-lang/crates.io-index" 1864 | checksum = "8f55c233f70c4b27f66c523580f78f1004e8b5a8b659e05a4eb49d4166cca406" 1865 | 1866 | [[package]] 1867 | name = "windows_i686_msvc" 1868 | version = "0.52.5" 1869 | source = "registry+https://github.com/rust-lang/crates.io-index" 1870 | checksum = "db3c2bf3d13d5b658be73463284eaf12830ac9a26a90c717b7f771dfe97487bf" 1871 | 1872 | [[package]] 1873 | name = "windows_x86_64_gnu" 1874 | version = "0.48.5" 1875 | source = "registry+https://github.com/rust-lang/crates.io-index" 1876 | checksum = "53d40abd2583d23e4718fddf1ebec84dbff8381c07cae67ff7768bbf19c6718e" 1877 | 1878 | [[package]] 1879 | name = "windows_x86_64_gnu" 1880 | version = "0.52.5" 1881 | source = "registry+https://github.com/rust-lang/crates.io-index" 1882 | checksum = "4e4246f76bdeff09eb48875a0fd3e2af6aada79d409d33011886d3e1581517d9" 1883 | 1884 | [[package]] 1885 | name = "windows_x86_64_gnullvm" 1886 | version = "0.48.5" 1887 | source = "registry+https://github.com/rust-lang/crates.io-index" 1888 | checksum = "0b7b52767868a23d5bab768e390dc5f5c55825b6d30b86c844ff2dc7414044cc" 1889 | 1890 | [[package]] 1891 | name = "windows_x86_64_gnullvm" 1892 | version = "0.52.5" 1893 | source = "registry+https://github.com/rust-lang/crates.io-index" 1894 | checksum = "852298e482cd67c356ddd9570386e2862b5673c85bd5f88df9ab6802b334c596" 1895 | 1896 | [[package]] 1897 | name = "windows_x86_64_msvc" 1898 | version = "0.48.5" 1899 | source = "registry+https://github.com/rust-lang/crates.io-index" 1900 | checksum = "ed94fce61571a4006852b7389a063ab983c02eb1bb37b47f8272ce92d06d9538" 1901 | 1902 | [[package]] 1903 | name = "windows_x86_64_msvc" 1904 | version = "0.52.5" 1905 | source = "registry+https://github.com/rust-lang/crates.io-index" 1906 | checksum = "bec47e5bfd1bff0eeaf6d8b485cc1074891a197ab4225d504cb7a1ab88b02bf0" 1907 | 1908 | [[package]] 1909 | name = "winreg" 1910 | version = "0.50.0" 1911 | source = "registry+https://github.com/rust-lang/crates.io-index" 1912 | checksum = "524e57b2c537c0f9b1e69f1965311ec12182b4122e45035b1508cd24d2adadb1" 1913 | dependencies = [ 1914 | "cfg-if", 1915 | "windows-sys 0.48.0", 1916 | ] 1917 | 1918 | [[package]] 1919 | name = "write16" 1920 | version = "1.0.0" 1921 | source = "registry+https://github.com/rust-lang/crates.io-index" 1922 | checksum = "d1890f4022759daae28ed4fe62859b1236caebfc61ede2f63ed4e695f3f6d936" 1923 | 1924 | [[package]] 1925 | name = "writeable" 1926 | version = "0.5.5" 1927 | source = "registry+https://github.com/rust-lang/crates.io-index" 1928 | checksum = "1e9df38ee2d2c3c5948ea468a8406ff0db0b29ae1ffde1bcf20ef305bcc95c51" 1929 | 1930 | [[package]] 1931 | name = "yoke" 1932 | version = "0.7.4" 1933 | source = "registry+https://github.com/rust-lang/crates.io-index" 1934 | checksum = "6c5b1314b079b0930c31e3af543d8ee1757b1951ae1e1565ec704403a7240ca5" 1935 | dependencies = [ 1936 | "serde", 1937 | "stable_deref_trait", 1938 | "yoke-derive", 1939 | "zerofrom", 1940 | ] 1941 | 1942 | [[package]] 1943 | name = "yoke-derive" 1944 | version = "0.7.4" 1945 | source = "registry+https://github.com/rust-lang/crates.io-index" 1946 | checksum = "28cc31741b18cb6f1d5ff12f5b7523e3d6eb0852bbbad19d73905511d9849b95" 1947 | dependencies = [ 1948 | "proc-macro2", 1949 | "quote", 1950 | "syn 2.0.66", 1951 | "synstructure", 1952 | ] 1953 | 1954 | [[package]] 1955 | name = "zerofrom" 1956 | version = "0.1.4" 1957 | source = "registry+https://github.com/rust-lang/crates.io-index" 1958 | checksum = "91ec111ce797d0e0784a1116d0ddcdbea84322cd79e5d5ad173daeba4f93ab55" 1959 | dependencies = [ 1960 | "zerofrom-derive", 1961 | ] 1962 | 1963 | [[package]] 1964 | name = "zerofrom-derive" 1965 | version = "0.1.4" 1966 | source = "registry+https://github.com/rust-lang/crates.io-index" 1967 | checksum = "0ea7b4a3637ea8669cedf0f1fd5c286a17f3de97b8dd5a70a6c167a1730e63a5" 1968 | dependencies = [ 1969 | "proc-macro2", 1970 | "quote", 1971 | "syn 2.0.66", 1972 | "synstructure", 1973 | ] 1974 | 1975 | [[package]] 1976 | name = "zeroize" 1977 | version = "1.8.1" 1978 | source = "registry+https://github.com/rust-lang/crates.io-index" 1979 | checksum = "ced3678a2879b30306d323f4542626697a464a97c0a07c9aebf7ebca65cd4dde" 1980 | 1981 | [[package]] 1982 | name = "zerovec" 1983 | version = "0.10.2" 1984 | source = "registry+https://github.com/rust-lang/crates.io-index" 1985 | checksum = "bb2cc8827d6c0994478a15c53f374f46fbd41bea663d809b14744bc42e6b109c" 1986 | dependencies = [ 1987 | "yoke", 1988 | "zerofrom", 1989 | "zerovec-derive", 1990 | ] 1991 | 1992 | [[package]] 1993 | name = "zerovec-derive" 1994 | version = "0.10.2" 1995 | source = "registry+https://github.com/rust-lang/crates.io-index" 1996 | checksum = "97cf56601ee5052b4417d90c8755c6683473c926039908196cf35d99f893ebe7" 1997 | dependencies = [ 1998 | "proc-macro2", 1999 | "quote", 2000 | "syn 2.0.66", 2001 | ] 2002 | 2003 | [[package]] 2004 | name = "zip" 2005 | version = "0.6.6" 2006 | source = "registry+https://github.com/rust-lang/crates.io-index" 2007 | checksum = "760394e246e4c28189f19d488c058bf16f564016aefac5d32bb1f3b51d5e9261" 2008 | dependencies = [ 2009 | "byteorder", 2010 | "crc32fast", 2011 | "crossbeam-utils", 2012 | "flate2", 2013 | ] 2014 | --------------------------------------------------------------------------------