diff --git a/crates/zino-amis/Cargo.toml b/crates/zino-amis/Cargo.toml index a089fae6..6fb039d3 100644 --- a/crates/zino-amis/Cargo.toml +++ b/crates/zino-amis/Cargo.toml @@ -15,11 +15,11 @@ readme = "README.md" [dependencies] hyper-staticfile = "0.10.1" phf = "0.11.3" -serde_json = "1.0.137" +serde_json = "1.0.138" tracing = "0.1.41" [dependencies.hyper] -version = "1.5.2" +version = "1.6.0" features = ["http1", "server"] [dependencies.hyper-util] diff --git a/crates/zino-auth/Cargo.toml b/crates/zino-auth/Cargo.toml index a39e4047..872f0670 100644 --- a/crates/zino-auth/Cargo.toml +++ b/crates/zino-auth/Cargo.toml @@ -35,7 +35,7 @@ sqids = ["dep:sqids"] cfg-if = "1.0" hmac = "0.12.1" parking_lot = "0.12.3" -rand = "0.8.5" +rand = "0.9.0" tracing = "0.1.41" [dependencies.jwt-simple] diff --git a/crates/zino-auth/src/access_key.rs b/crates/zino-auth/src/access_key.rs index 6b3a3a61..3ed57470 100644 --- a/crates/zino-auth/src/access_key.rs +++ b/crates/zino-auth/src/access_key.rs @@ -2,7 +2,7 @@ use hmac::{ digest::{FixedOutput, KeyInit, MacMarker, Update}, Hmac, Mac, }; -use rand::{distributions::Alphanumeric, Rng}; +use rand::{distr::Alphanumeric, Rng}; use serde::{Deserialize, Serialize}; use std::{borrow::Cow, fmt, iter}; use zino_core::{ @@ -23,7 +23,7 @@ impl AccessKeyId { /// /// It is generated by random alphanumeric characters. pub fn new() -> Self { - let mut rng = rand::thread_rng(); + let mut rng = rand::rng(); let chars: String = iter::repeat(()) .map(|_| rng.sample(Alphanumeric)) .map(char::from) @@ -36,7 +36,7 @@ impl AccessKeyId { /// /// It is generated by random alphanumeric characters. pub fn with_length(length: u8) -> Self { - let mut rng = rand::thread_rng(); + let mut rng = rand::rng(); let chars: String = iter::repeat(()) .map(|_| rng.sample(Alphanumeric)) .map(char::from) diff --git a/crates/zino-channel/Cargo.toml b/crates/zino-channel/Cargo.toml index dffffe88..6ec856fd 100644 --- a/crates/zino-channel/Cargo.toml +++ b/crates/zino-channel/Cargo.toml @@ -26,7 +26,7 @@ flume = [ ] [dependencies] -serde_json = "1.0.137" +serde_json = "1.0.138" [dependencies.ahash] version = "0.8.11" diff --git a/crates/zino-cli/Cargo.toml b/crates/zino-cli/Cargo.toml index 5cd93739..76303779 100644 --- a/crates/zino-cli/Cargo.toml +++ b/crates/zino-cli/Cargo.toml @@ -27,7 +27,7 @@ include_dir = "0.7.4" log = "0.4.25" taplo = "0.13.2" toml = "0.8.19" -toml_edit = "0.22.22" +toml_edit = "0.22.23" tracing = "0.1.41" tracing-subscriber = "0.3.19" regex = "1.11.1" diff --git a/crates/zino-connector/Cargo.toml b/crates/zino-connector/Cargo.toml index 0f1a27a9..28a3de32 100644 --- a/crates/zino-connector/Cargo.toml +++ b/crates/zino-connector/Cargo.toml @@ -77,7 +77,7 @@ version = "1.0.217" features = ["derive"] [dependencies.serde_json] -version = "1.0.137" +version = "1.0.138" optional = true features = ["raw_value"] diff --git a/crates/zino-core/Cargo.toml b/crates/zino-core/Cargo.toml index 98ded009..cd43195d 100644 --- a/crates/zino-core/Cargo.toml +++ b/crates/zino-core/Cargo.toml @@ -101,7 +101,7 @@ hkdf = "0.12.4" hmac = "0.12.1" http = "1.2.0" parking_lot = "0.12.3" -rand = "0.8.5" +rand = "0.9.0" regex = "1.11.1" rust_decimal = "1.36.0" serde_qs = "0.13.0" @@ -140,7 +140,7 @@ version = "0.24.1" optional = true [dependencies.metrics-exporter-prometheus] -version = "0.16.1" +version = "0.16.2" optional = true default-features = false features = ["http-listener"] @@ -186,7 +186,7 @@ version = "1.0.217" features = ["derive"] [dependencies.serde_json] -version = "1.0.137" +version = "1.0.138" features = ["raw_value"] [dependencies.sm3] diff --git a/crates/zino-core/src/crypto/aes256.rs b/crates/zino-core/src/crypto/aes256.rs index 31502493..e2460a6d 100644 --- a/crates/zino-core/src/crypto/aes256.rs +++ b/crates/zino-core/src/crypto/aes256.rs @@ -15,7 +15,7 @@ const NONCE_SIZE: usize = 12; pub fn encrypt(plaintext: &[u8], key: &[u8]) -> Result, Error> { let cipher = Aes256GcmSiv::new(GenericArray::from_slice(&padded_key(key))); - let mut rng = rand::thread_rng(); + let mut rng = rand::rng(); let mut bytes = [0u8; NONCE_SIZE]; rng.fill(&mut bytes); diff --git a/crates/zino-core/src/crypto/sm4.rs b/crates/zino-core/src/crypto/sm4.rs index 522d20a2..116b810f 100644 --- a/crates/zino-core/src/crypto/sm4.rs +++ b/crates/zino-core/src/crypto/sm4.rs @@ -14,7 +14,7 @@ const NONCE_SIZE: usize = 16; /// Encrypts the plaintext using `SM4`. pub fn encrypt(plaintext: &[u8], key: &[u8]) -> Result, Error> { - let mut rng = rand::thread_rng(); + let mut rng = rand::rng(); let mut nonce = [0u8; NONCE_SIZE]; rng.fill(&mut nonce); diff --git a/crates/zino-core/src/mock/format/email.rs b/crates/zino-core/src/mock/format/email.rs index bf0e7928..7cbc0fcc 100644 --- a/crates/zino-core/src/mock/format/email.rs +++ b/crates/zino-core/src/mock/format/email.rs @@ -1,7 +1,7 @@ use rand::{ - distributions::{Alphanumeric, DistString}, - seq::SliceRandom, - thread_rng, Rng, + distr::{Alphanumeric, SampleString}, + seq::IndexedRandom, + Rng, }; /// Subdomains for a mocked email address. @@ -19,8 +19,8 @@ const ROOT_DOMAINS: [&str; 7] = ["app", "com", "dev", "edu", "gov", "net", "org" /// Generates a random email address. pub(crate) fn gen_email() -> String { - let mut rng = thread_rng(); - let num_chars = rng.gen_range(1..=16); + let mut rng = rand::rng(); + let num_chars = rng.random_range(1..=16); let username = Alphanumeric .sample_string(&mut rng, num_chars) .to_lowercase(); diff --git a/crates/zino-core/src/mock/format/ipv4.rs b/crates/zino-core/src/mock/format/ipv4.rs index 50ab484f..744d9c2e 100644 --- a/crates/zino-core/src/mock/format/ipv4.rs +++ b/crates/zino-core/src/mock/format/ipv4.rs @@ -1,12 +1,12 @@ -use rand::{thread_rng, Rng}; +use rand::Rng; use std::net::Ipv4Addr; /// Generates a random IPv4 address. pub(crate) fn gen_ipv4() -> String { - let mut rng = thread_rng(); - let a = rng.gen::(); - let b = rng.gen::(); - let c = rng.gen::(); - let d = rng.gen::(); + let mut rng = rand::rng(); + let a = rng.random::(); + let b = rng.random::(); + let c = rng.random::(); + let d = rng.random::(); Ipv4Addr::new(a, b, c, d).to_string() } diff --git a/crates/zino-core/src/mock/format/ipv6.rs b/crates/zino-core/src/mock/format/ipv6.rs index fcffc6c5..5a4620cb 100644 --- a/crates/zino-core/src/mock/format/ipv6.rs +++ b/crates/zino-core/src/mock/format/ipv6.rs @@ -1,16 +1,16 @@ -use rand::{thread_rng, Rng}; +use rand::Rng; use std::net::Ipv6Addr; /// Generates a random IPv6 address. pub(crate) fn gen_ipv6() -> String { - let mut rng = thread_rng(); - let a = rng.gen::(); - let b = rng.gen::(); - let c = rng.gen::(); - let d = rng.gen::(); - let e = rng.gen::(); - let f = rng.gen::(); - let g = rng.gen::(); - let h = rng.gen::(); + let mut rng = rand::rng(); + let a = rng.random::(); + let b = rng.random::(); + let c = rng.random::(); + let d = rng.random::(); + let e = rng.random::(); + let f = rng.random::(); + let g = rng.random::(); + let h = rng.random::(); Ipv6Addr::new(a, b, c, d, e, f, g, h).to_string() } diff --git a/crates/zino-core/src/mock/format/mod.rs b/crates/zino-core/src/mock/format/mod.rs index 34a32bcb..27756da5 100644 --- a/crates/zino-core/src/mock/format/mod.rs +++ b/crates/zino-core/src/mock/format/mod.rs @@ -1,6 +1,6 @@ use rand::{ - distributions::{Alphanumeric, DistString}, - thread_rng, Rng, + distr::{Alphanumeric, SampleString}, + Rng, }; mod email; @@ -11,11 +11,11 @@ mod uri; /// Generates a random string with the format. pub(crate) fn gen_format(format: &str, length: Option) -> String { - let mut rng = thread_rng(); + let mut rng = rand::rng(); match format { "email" => email::gen_email(), "ip" => { - if rng.gen::() { + if rng.random::() { ipv6::gen_ipv6() } else { ipv4::gen_ipv4() @@ -26,7 +26,7 @@ pub(crate) fn gen_format(format: &str, length: Option) -> String { "phone-number" => phone_number::gen_phone_number(), "uri" => uri::gen_uri(), _ => { - let length = length.unwrap_or_else(|| rng.gen_range(1..=32)); + let length = length.unwrap_or_else(|| rng.random_range(1..=32)); Alphanumeric.sample_string(&mut rng, length) } } diff --git a/crates/zino-core/src/mock/format/phone_number.rs b/crates/zino-core/src/mock/format/phone_number.rs index dfe7e1f7..7913aac2 100644 --- a/crates/zino-core/src/mock/format/phone_number.rs +++ b/crates/zino-core/src/mock/format/phone_number.rs @@ -1,33 +1,33 @@ -use rand::{seq::SliceRandom, thread_rng, Rng}; +use rand::{seq::IndexedRandom, Rng}; /// Country codes for a mocked phone number. const COUNTRY_CODES: [&str; 3] = ["+1", "+49", "+86"]; /// Generates a random phone number. pub(crate) fn gen_phone_number() -> String { - let mut rng = thread_rng(); + let mut rng = rand::rng(); let country_code = COUNTRY_CODES.choose(&mut rng).unwrap_or(&"+86"); let national_number = match *country_code { "+1" => (0..10) .map(|i| match i { - 0 => rng.gen_range('2'..='9'), - 1 => rng.gen_range('4'..='9'), - _ => rng.gen_range('0'..='9'), + 0 => rng.random_range('2'..='9'), + 1 => rng.random_range('4'..='9'), + _ => rng.random_range('0'..='9'), }) .collect::(), "+49" => (0..11) .map(|i| match i { 0 => '1', 1 => '7', - 2 => rng.gen_range('1'..='9'), - _ => rng.gen_range('0'..='9'), + 2 => rng.random_range('1'..='9'), + _ => rng.random_range('0'..='9'), }) .collect::(), _ => (0..11) .map(|i| match i { 0 => '1', - 1 => rng.gen_range('3'..='9'), - _ => rng.gen_range('0'..='9'), + 1 => rng.random_range('3'..='9'), + _ => rng.random_range('0'..='9'), }) .collect::(), }; diff --git a/crates/zino-core/src/mock/format/uri.rs b/crates/zino-core/src/mock/format/uri.rs index 254217f9..fabcc328 100644 --- a/crates/zino-core/src/mock/format/uri.rs +++ b/crates/zino-core/src/mock/format/uri.rs @@ -1,8 +1,8 @@ use rand::{ - distributions::{Alphanumeric, DistString}, + distr::{Alphanumeric, SampleString}, random, - seq::SliceRandom, - thread_rng, Rng, + seq::IndexedRandom, + Rng, }; /// Schemes for a mocked URI. @@ -16,11 +16,11 @@ const ROOT_DOMAINS: [&str; 3] = ["com", "net", "org"]; /// Generates a random URI. pub(crate) fn gen_uri() -> String { - let mut rng = thread_rng(); - let num_chars = rng.gen_range(1..=16); + let mut rng = rand::rng(); + let num_chars = rng.random_range(1..=16); let mut path = Alphanumeric.sample_string(&mut rng, num_chars); if random::() { - let num_chars = rng.gen_range(1..=16); + let num_chars = rng.random_range(1..=16); let segment = Alphanumeric.sample_string(&mut rng, num_chars); path.push('/'); path.push_str(&segment); diff --git a/crates/zino-core/src/mock/sentence.rs b/crates/zino-core/src/mock/sentence.rs index 8b888e98..aaafcfa7 100644 --- a/crates/zino-core/src/mock/sentence.rs +++ b/crates/zino-core/src/mock/sentence.rs @@ -1,6 +1,6 @@ use rand::{ - distributions::{Alphanumeric, DistString}, - thread_rng, Rng, + distr::{Alphanumeric, SampleString}, + Rng, }; #[cfg(feature = "locale")] @@ -8,8 +8,8 @@ use random_word::Lang; /// Generates a random sentence for the language. pub(crate) fn gen_random_sentence(locale: &str, min_length: usize, max_length: usize) -> String { - let mut rng = thread_rng(); - let mut length = rng.gen_range(min_length..=max_length); + let mut rng = rand::rng(); + let mut length = rng.random_range(min_length..=max_length); let mut sentence = String::with_capacity(min_length); match locale { #[cfg(feature = "locale-en")] @@ -122,7 +122,7 @@ pub(crate) fn gen_random_sentence(locale: &str, min_length: usize, max_length: u } _ => { while length > 0 { - let num_chars = rng.gen_range(1..=16); + let num_chars = rng.random_range(1..=16); let word = Alphanumeric.sample_string(&mut rng, num_chars); let word_length = word.len(); if let Some(remainder_length) = length.checked_sub(word_length) { diff --git a/crates/zino-core/src/model/column.rs b/crates/zino-core/src/model/column.rs index faddcec6..1e27e6ac 100644 --- a/crates/zino-core/src/model/column.rs +++ b/crates/zino-core/src/model/column.rs @@ -8,10 +8,10 @@ use apache_avro::schema::{ ArraySchema, MapSchema, Name, RecordField, RecordFieldOrder, Schema, UnionSchema, }; use rand::{ - distributions::{Alphanumeric, DistString, Distribution, Standard}, + distr::{Alphanumeric, Distribution, SampleString, StandardUniform}, random, - seq::SliceRandom, - thread_rng, Rng, + seq::IndexedRandom, + Rng, }; use serde::Serialize; use std::collections::BTreeMap; @@ -583,8 +583,8 @@ impl<'a> Column<'a> { } let max_items = extra.get_usize("max_items").unwrap_or(8); - let mut rng = thread_rng(); - rng.gen_range(min_items..=max_items) + let mut rng = rand::rng(); + rng.random_range(min_items..=max_items) } else if self.is_option_type() { random::().into() } else { @@ -602,13 +602,11 @@ impl<'a> Column<'a> { "i8" => self.mock_integer::(), "i16" => self.mock_integer::(), "i32" => self.mock_integer::(), - "i64" => self.mock_integer::(), - "isize" => self.mock_integer::(), + "i64" | "isize" => self.mock_integer::(), "u8" => self.mock_integer::(), "u16" => self.mock_integer::(), "u32" => self.mock_integer::(), - "u64" => self.mock_integer::(), - "usize" => self.mock_integer::(), + "u64" | "usize" => self.mock_integer::(), "f32" => random::().into(), "f64" => random::().into(), "String" => self.mock_string(), @@ -664,12 +662,12 @@ impl<'a> Column<'a> { /// Generates an integer for the column. fn mock_integer(&self) -> JsonValue where - Standard: Distribution, + StandardUniform: Distribution, T: Into, { let extra = self.extra(); if let Some(values) = extra.parse_enum_values("enum_values") { - let mut rng = thread_rng(); + let mut rng = rand::rng(); values.choose(&mut rng).cloned().into() } else { random::().into() @@ -680,15 +678,15 @@ impl<'a> Column<'a> { fn mock_string(&self) -> JsonValue { let extra = self.extra(); if let Some(values) = extra.parse_enum_values("enum_values") { - let mut rng = thread_rng(); + let mut rng = rand::rng(); values.choose(&mut rng).cloned().into() } else if let Some(format) = extra.get_str("format") { mock::gen_format(format, extra.get_usize("length")).into() } else if self.index_type() == Some("hash") { - let mut rng = thread_rng(); + let mut rng = rand::rng(); let min_length = extra.get_usize("min_length").unwrap_or(1); let max_length = extra.get_usize("max_length").unwrap_or(16); - let num_chars = rng.gen_range(min_length..=max_length); + let num_chars = rng.random_range(min_length..=max_length); Alphanumeric.sample_string(&mut rng, num_chars).into() } else { let locale = extra.get_str("locale").unwrap_or_default(); @@ -701,25 +699,25 @@ impl<'a> Column<'a> { /// Generates an integer array for the column. fn mock_integer_array(&self) -> Vec where - Standard: Distribution, + StandardUniform: Distribution, T: Into, { let extra = self.extra(); - let mut rng = thread_rng(); + let mut rng = rand::rng(); let mut min_items = extra.get_usize("min_items").unwrap_or(0); if self.has_attribute("nonempty") { min_items = min_items.max(1); } if let Some(values) = extra.parse_enum_values("enum_values") { let max_items = extra.get_usize("max_items").unwrap_or(values.len()); - let num_items = rng.gen_range(min_items..=max_items); + let num_items = rng.random_range(min_items..=max_items); values .choose_multiple(&mut rng, num_items) .cloned() .collect() } else { let max_items = extra.get_usize("max_items").unwrap_or(8); - let num_items = rng.gen_range(min_items..=max_items); + let num_items = rng.random_range(min_items..=max_items); (0..num_items).map(|_| self.mock_integer::()).collect() } } @@ -727,21 +725,21 @@ impl<'a> Column<'a> { /// Generates a string array for the column. fn mock_string_array(&self) -> Vec { let extra = self.extra(); - let mut rng = thread_rng(); + let mut rng = rand::rng(); let mut min_items = extra.get_usize("min_items").unwrap_or(0); if self.has_attribute("nonempty") { min_items = min_items.max(1); } if let Some(values) = extra.parse_enum_values("enum_values") { let max_items = extra.get_usize("max_items").unwrap_or(values.len()); - let num_items = rng.gen_range(min_items..=max_items); + let num_items = rng.random_range(min_items..=max_items); values .choose_multiple(&mut rng, num_items) .cloned() .collect() } else { let max_items = extra.get_usize("max_items").unwrap_or(8); - let num_items = rng.gen_range(min_items..=max_items); + let num_items = rng.random_range(min_items..=max_items); (0..num_items).map(|_| self.mock_string()).collect() } } diff --git a/crates/zino-extra/Cargo.toml b/crates/zino-extra/Cargo.toml index 3c02aba9..c2172d14 100644 --- a/crates/zino-extra/Cargo.toml +++ b/crates/zino-extra/Cargo.toml @@ -26,7 +26,7 @@ format-pdf = ["format", "dep:printpdf"] full = ["all-formats", "cache"] [dependencies.lru] -version = "0.12.5" +version = "0.13.0" optional = true [dependencies.parking_lot] diff --git a/crates/zino-http/Cargo.toml b/crates/zino-http/Cargo.toml index bbb20fdc..f114936e 100644 --- a/crates/zino-http/Cargo.toml +++ b/crates/zino-http/Cargo.toml @@ -53,7 +53,7 @@ mime_guess = "2.0.5" multer = "3.1.0" percent-encoding = "2.3.1" regex = "1.11.1" -ryu = "1.0.18" +ryu = "1.0.19" serde_qs = "0.13.0" smallvec = "1.13.2" tracing = "0.1.41" @@ -91,7 +91,7 @@ version = "0.24.1" optional = true [dependencies.minijinja] -version = "2.6.0" +version = "2.7.0" optional = true features = ["loader"] @@ -110,7 +110,7 @@ version = "1.0.217" features = ["derive"] [dependencies.serde_json] -version = "1.0.137" +version = "1.0.138" features = ["raw_value"] [dependencies.tera] diff --git a/crates/zino-ntex/Cargo.toml b/crates/zino-ntex/Cargo.toml index 42e7d299..307b0426 100644 --- a/crates/zino-ntex/Cargo.toml +++ b/crates/zino-ntex/Cargo.toml @@ -21,7 +21,7 @@ ntex-files = "2.0.0" tracing = "0.1.41" [dependencies.ntex] -version = "2.10.0" +version = "2.11.0" default-features = false features = ["compress", "tokio"] diff --git a/crates/zino-openapi/Cargo.toml b/crates/zino-openapi/Cargo.toml index c06f5be1..52b4a49b 100644 --- a/crates/zino-openapi/Cargo.toml +++ b/crates/zino-openapi/Cargo.toml @@ -22,7 +22,7 @@ debug = [ [dependencies] ahash = "0.8.11" convert_case = "0.7.1" -serde_json = "1.0.137" +serde_json = "1.0.138" tracing = "0.1.41" [dependencies.toml] diff --git a/crates/zino-orm/Cargo.toml b/crates/zino-orm/Cargo.toml index 5d523684..a91c7064 100644 --- a/crates/zino-orm/Cargo.toml +++ b/crates/zino-orm/Cargo.toml @@ -31,7 +31,7 @@ convert_case = "0.7.1" http = "1.2.0" futures = "0.3.31" regex = "1.11.1" -serde_json = "1.0.137" +serde_json = "1.0.138" smallvec = "1.13.2" tracing = "0.1.41" url = "2.5.4" diff --git a/crates/zino/Cargo.toml b/crates/zino/Cargo.toml index 402ed90c..9df5850b 100644 --- a/crates/zino/Cargo.toml +++ b/crates/zino/Cargo.toml @@ -49,7 +49,7 @@ view = ["zino-http/view"] [dependencies] cfg-if = "1.0" -serde_json = "1.0.137" +serde_json = "1.0.138" [dependencies.zino-actix] path = "../zino-actix" diff --git a/examples/ntex-app/Cargo.toml b/examples/ntex-app/Cargo.toml index d5099e64..de8dc424 100644 --- a/examples/ntex-app/Cargo.toml +++ b/examples/ntex-app/Cargo.toml @@ -10,7 +10,7 @@ publish = false tracing = "0.1.41" [dependencies.ntex] -version = "2.10.0" +version = "2.11.0" default-features = false [dependencies.serde]