From f6f5d18d68efa2bf6c12a6fca2a4939be1a5509c Mon Sep 17 00:00:00 2001 From: mdecimus Date: Mon, 20 Oct 2025 19:44:32 +0200 Subject: [PATCH] Updated dependencies --- Cargo.lock | 288 ++++++---------------- README.md | 20 +- crates/common/Cargo.toml | 8 +- crates/dav-proto/Cargo.toml | 4 +- crates/dav/Cargo.toml | 2 +- crates/directory/Cargo.toml | 2 +- crates/groupware/Cargo.toml | 2 +- crates/http/Cargo.toml | 2 +- crates/jmap-proto/Cargo.toml | 2 +- crates/jmap-proto/src/object/file_node.rs | 26 +- crates/jmap/Cargo.toml | 2 +- crates/jmap/src/file/get.rs | 3 + crates/migration/Cargo.toml | 2 +- crates/nlp/Cargo.toml | 4 +- crates/nlp/src/language/detect.rs | 1 + crates/services/Cargo.toml | 2 +- crates/smtp/Cargo.toml | 2 +- crates/store/Cargo.toml | 4 +- crates/utils/Cargo.toml | 4 +- tests/Cargo.toml | 2 +- tests/src/jmap/calendar/event.rs | 13 +- tests/src/jmap/calendar/notification.rs | 21 -- tests/src/jmap/contacts/contact.rs | 10 +- tests/src/jmap/files/acl.rs | 13 +- tests/src/jmap/mod.rs | 4 +- tests/src/jmap/principal/get.rs | 2 +- 26 files changed, 148 insertions(+), 297 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 912d9b69..a59a5729 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -228,22 +228,6 @@ dependencies = [ "term", ] -[[package]] -name = "asn1-rs" -version = "0.5.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7f6fd5ddaf0351dff5b8da21b2fb4ff8e08ddd02857f0bf69c47639106c0fff0" -dependencies = [ - "asn1-rs-derive 0.4.0", - "asn1-rs-impl 0.1.0", - "displaydoc", - "nom", - "num-traits", - "rusticata-macros", - "thiserror 1.0.69", - "time", -] - [[package]] name = "asn1-rs" version = "0.6.2" @@ -251,7 +235,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "5493c3bedbacf7fd7382c6346bbd66687d12bbaad3a89a2d2c303ee6cf20b048" dependencies = [ "asn1-rs-derive 0.5.1", - "asn1-rs-impl 0.2.0", + "asn1-rs-impl", "displaydoc", "nom", "num-traits", @@ -267,7 +251,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "56624a96882bb8c26d61312ae18cb45868e5a9992ea73c58e45c3101e56a1e60" dependencies = [ "asn1-rs-derive 0.6.0", - "asn1-rs-impl 0.2.0", + "asn1-rs-impl", "displaydoc", "nom", "num-traits", @@ -276,18 +260,6 @@ dependencies = [ "time", ] -[[package]] -name = "asn1-rs-derive" -version = "0.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "726535892e8eae7e70657b4c8ea93d26b8553afb1ce617caee529ef96d7dee6c" -dependencies = [ - "proc-macro2", - "quote", - "syn 1.0.109", - "synstructure 0.12.6", -] - [[package]] name = "asn1-rs-derive" version = "0.5.1" @@ -297,7 +269,7 @@ dependencies = [ "proc-macro2", "quote", "syn 2.0.106", - "synstructure 0.13.2", + "synstructure", ] [[package]] @@ -309,18 +281,7 @@ dependencies = [ "proc-macro2", "quote", "syn 2.0.106", - "synstructure 0.13.2", -] - -[[package]] -name = "asn1-rs-impl" -version = "0.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2777730b2039ac0f95f093556e61b6d26cebed5393ca6f152717777cec3a42ed" -dependencies = [ - "proc-macro2", - "quote", - "syn 1.0.109", + "synstructure", ] [[package]] @@ -371,13 +332,13 @@ dependencies = [ [[package]] name = "async-nats" -version = "0.42.0" +version = "0.44.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "08f6da6d49a956424ca4e28fe93656f790d748b469eaccbc7488fec545315180" +checksum = "f834a80c3ab6109b9c8f5ca6661a578cf31e088e831b6ce07c6b23cca04f6742" dependencies = [ "base64 0.22.1", "bytes", - "futures", + "futures-util", "memchr", "nkeys", "nuid", @@ -386,7 +347,7 @@ dependencies = [ "portable-atomic", "rand 0.8.5", "regex", - "ring 0.17.14", + "ring", "rustls-native-certs 0.7.3", "rustls-pemfile 2.2.0", "rustls-webpki 0.102.8", @@ -398,6 +359,7 @@ dependencies = [ "time", "tokio", "tokio-rustls 0.26.4", + "tokio-stream", "tokio-util", "tokio-websockets", "tracing", @@ -723,7 +685,7 @@ dependencies = [ "num-bigint", "num-traits", "once_cell", - "ring 0.17.14", + "ring", "serde", "serde_json", ] @@ -963,9 +925,9 @@ dependencies = [ [[package]] name = "calcard" -version = "0.3.0" +version = "0.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "388f40e77acf8ad26d4ac7120bd24fb08e671f38858f401887714cdc102ec9f4" +checksum = "2e35c8ab67ac849cc79cd5d888ceac60cd7887d64fb907f5dd29861868706305" dependencies = [ "ahash", "chrono", @@ -1271,7 +1233,7 @@ dependencies = [ "rcgen 0.12.1", "regex", "reqwest 0.12.23", - "ring 0.17.14", + "ring", "rkyv", "rsa", "rustls 0.23.32", @@ -1292,9 +1254,9 @@ dependencies = [ "unicode-security", "utils", "whatlang", - "x509-parser 0.17.0", + "x509-parser 0.18.0", "xxhash-rust", - "zip 4.6.1", + "zip 6.0.0", ] [[package]] @@ -1885,20 +1847,6 @@ dependencies = [ "zeroize", ] -[[package]] -name = "der-parser" -version = "8.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dbd676fbbab537128ef0278adb5576cf363cff6aa22a7b24effe97347cfab61e" -dependencies = [ - "asn1-rs 0.5.2", - "displaydoc", - "nom", - "num-bigint", - "num-traits", - "rusticata-macros", -] - [[package]] name = "der-parser" version = "9.0.0" @@ -2316,6 +2264,12 @@ version = "0.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c34f04666d835ff5d62e058c3995147c06f42fe86ff053337632bca83e42702d" +[[package]] +name = "endian-type" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "869b0adbda23651a9c5c0c3d270aac9fcb52e8622a8f2b17e57802d7791962f2" + [[package]] name = "enum-as-inner" version = "0.6.1" @@ -2994,7 +2948,7 @@ dependencies = [ "futures-util", "hickory-proto 0.24.4", "once_cell", - "radix_trie", + "radix_trie 0.2.1", "rand 0.8.5", "rustls 0.21.12", "thiserror 1.0.69", @@ -3022,7 +2976,7 @@ dependencies = [ "ipnet", "once_cell", "rand 0.8.5", - "ring 0.17.14", + "ring", "rustls 0.21.12", "rustls-pemfile 1.0.4", "thiserror 1.0.69", @@ -3052,7 +3006,7 @@ dependencies = [ "ipnet", "once_cell", "rand 0.9.2", - "ring 0.17.14", + "ring", "rustls 0.23.32", "rustls-pki-types", "thiserror 2.0.17", @@ -3189,7 +3143,7 @@ dependencies = [ "trc", "types", "utils", - "x509-parser 0.17.0", + "x509-parser 0.18.0", ] [[package]] @@ -4134,9 +4088,9 @@ dependencies = [ [[package]] name = "lber" -version = "0.4.2" +version = "0.5.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2df7f9fd9f64cf8f59e1a4a0753fe7d575a5b38d3d7ac5758dcee9357d83ef0a" +checksum = "cbcf559624bfd9fe8d488329a8959766335a43a9b8b2cdd6a2c379fca02909a5" dependencies = [ "bytes", "nom", @@ -4144,29 +4098,27 @@ dependencies = [ [[package]] name = "ldap3" -version = "0.11.5" +version = "0.12.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "166199a8207874a275144c8a94ff6eed5fcbf5c52303e4d9b4d53a0c7ac76554" +checksum = "01fe89f5e7cfb7e4701e3a38ff9f00358e026a9aee940355d88ee9d81e5c7503" dependencies = [ "async-trait", "bytes", "futures", "futures-util", - "lazy_static", "lber", "log", "nom", "percent-encoding", - "ring 0.16.20", - "rustls 0.21.12", - "rustls-native-certs 0.6.3", - "thiserror 1.0.69", + "rustls 0.23.32", + "rustls-native-certs 0.8.1", + "thiserror 2.0.17", "tokio", - "tokio-rustls 0.24.1", + "tokio-rustls 0.26.4", "tokio-stream", "tokio-util", "url", - "x509-parser 0.15.1", + "x509-parser 0.18.0", ] [[package]] @@ -4215,26 +4167,6 @@ dependencies = [ "windows-link 0.2.1", ] -[[package]] -name = "liblzma" -version = "0.4.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "73c36d08cad03a3fbe2c4e7bb3a9e84c57e4ee4135ed0b065cade3d98480c648" -dependencies = [ - "liblzma-sys", -] - -[[package]] -name = "liblzma-sys" -version = "0.4.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "01b9596486f6d60c3bbe644c0e1be1aa6ccc472ad630fe8927b456973d7cb736" -dependencies = [ - "cc", - "libc", - "pkg-config", -] - [[package]] name = "libm" version = "0.2.15" @@ -4400,7 +4332,7 @@ dependencies = [ "quick-xml 0.38.3", "quick_cache", "rand 0.8.5", - "ring 0.17.14", + "ring", "rkyv", "rsa", "rustls-pemfile 2.2.0", @@ -4808,7 +4740,7 @@ dependencies = [ "nohash", "parking_lot", "psl", - "radix_trie", + "radix_trie 0.3.0", "rust-stemmers", "serde", "siphasher", @@ -4989,15 +4921,6 @@ dependencies = [ "subtle", ] -[[package]] -name = "oid-registry" -version = "0.6.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9bedf36ffb6ba96c2eb7144ef6270557b52e54b20c0a8e1eb2ff99a6c6959bff" -dependencies = [ - "asn1-rs 0.5.2", -] - [[package]] name = "oid-registry" version = "0.7.1" @@ -5939,7 +5862,7 @@ dependencies = [ "getrandom 0.3.3", "lru-slab", "rand 0.9.2", - "ring 0.17.14", + "ring", "rustc-hash 2.1.1", "rustls 0.23.32", "rustls-pki-types", @@ -6003,7 +5926,17 @@ version = "0.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c069c179fcdc6a2fe24d8d18305cf085fdbd4f922c041943e203685d6a1c58fd" dependencies = [ - "endian-type", + "endian-type 0.1.2", + "nibble_vec", +] + +[[package]] +name = "radix_trie" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3b4431027dcd37fc2a73ef740b5f233aa805897935b8bce0195e41bbf9a3289a" +dependencies = [ + "endian-type 0.2.0", "nibble_vec", ] @@ -6199,19 +6132,19 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "48406db8ac1f3cbc7dcdb56ec355343817958a356ff430259bb07baf7607e1e1" dependencies = [ "pem", - "ring 0.17.14", + "ring", "time", "yasna", ] [[package]] name = "rcgen" -version = "0.13.2" +version = "0.14.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "75e669e5202259b5314d1ea5397316ad400819437857b90861765f24c4cf80a2" +checksum = "5fae430c6b28f1ad601274e78b7dffa0546de0b73b4cd32f46723c0c2a16f7a5" dependencies = [ "pem", - "ring 0.17.14", + "ring", "rustls-pki-types", "time", "yasna", @@ -6479,21 +6412,6 @@ dependencies = [ "subtle", ] -[[package]] -name = "ring" -version = "0.16.20" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3053cf52e236a3ed746dfc745aa9cacf1b791d846bdaf412f60a8d7d6e17c8fc" -dependencies = [ - "cc", - "libc", - "once_cell", - "spin 0.5.2", - "untrusted 0.7.1", - "web-sys", - "winapi", -] - [[package]] name = "ring" version = "0.17.14" @@ -6504,7 +6422,7 @@ dependencies = [ "cfg-if", "getrandom 0.2.16", "libc", - "untrusted 0.9.0", + "untrusted", "windows-sys 0.52.0", ] @@ -6778,7 +6696,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3f56a14d1f48b391359b22f731fd4bd7e43c97f3c50eee276f3aa09c94784d3e" dependencies = [ "log", - "ring 0.17.14", + "ring", "rustls-webpki 0.101.7", "sct", ] @@ -6791,7 +6709,7 @@ checksum = "cd3c25631629d034ce7cd9940adc9d45762d46de2b0f57193c4443b92c6d4d40" dependencies = [ "log", "once_cell", - "ring 0.17.14", + "ring", "rustls-pki-types", "rustls-webpki 0.103.7", "subtle", @@ -6896,8 +6814,8 @@ version = "0.101.7" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8b6275d1ee7a1cd780b64aca7726599a1dbc893b1e64144529e55c3c2f745765" dependencies = [ - "ring 0.17.14", - "untrusted 0.9.0", + "ring", + "untrusted", ] [[package]] @@ -6906,9 +6824,9 @@ version = "0.102.8" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "64ca1bc8749bd4cf37b5ce386cc146580777b4e8572c7b97baf22c83f444bee9" dependencies = [ - "ring 0.17.14", + "ring", "rustls-pki-types", - "untrusted 0.9.0", + "untrusted", ] [[package]] @@ -6917,9 +6835,9 @@ version = "0.103.7" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e10b3f4191e8a80e6b43eebabfac91e5dcecebb27a71f04e820c47ec41d314bf" dependencies = [ - "ring 0.17.14", + "ring", "rustls-pki-types", - "untrusted 0.9.0", + "untrusted", ] [[package]] @@ -7058,8 +6976,8 @@ version = "0.7.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "da046153aa2352493d6cb7da4b6e5c0c057d8a1d0a9aa8560baffdd945acd414" dependencies = [ - "ring 0.17.14", - "untrusted 0.9.0", + "ring", + "untrusted", ] [[package]] @@ -7662,7 +7580,7 @@ dependencies = [ "types", "utils", "webpki-roots 1.0.3", - "x509-parser 0.17.0", + "x509-parser 0.18.0", ] [[package]] @@ -7745,12 +7663,6 @@ dependencies = [ "utils", ] -[[package]] -name = "spin" -version = "0.5.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6e63cff320ae2c57904679ba7cb63280a3dc4613885beafb148ee7bf9aa9042d" - [[package]] name = "spin" version = "0.9.8" @@ -7874,7 +7786,7 @@ dependencies = [ "redis", "regex", "reqwest 0.12.23", - "ring 0.17.14", + "ring", "rkyv", "roaring", "rocksdb", @@ -7972,18 +7884,6 @@ dependencies = [ "futures-core", ] -[[package]] -name = "synstructure" -version = "0.12.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f36bdaa60a83aca3921b5259d5400cbf5e90fc51931376a9bd4a0eb79aa7210f" -dependencies = [ - "proc-macro2", - "quote", - "syn 1.0.109", - "unicode-xid", -] - [[package]] name = "synstructure" version = "0.13.2" @@ -8093,7 +7993,7 @@ dependencies = [ "quick-xml 0.38.3", "rayon", "reqwest 0.12.23", - "ring 0.17.14", + "ring", "rkyv", "rustls 0.23.32", "rustls-pemfile 2.2.0", @@ -8382,7 +8282,7 @@ dependencies = [ "http 1.3.1", "httparse", "rand 0.8.5", - "ring 0.17.14", + "ring", "rustls-pki-types", "tokio", "tokio-rustls 0.26.4", @@ -8817,12 +8717,6 @@ version = "0.2.11" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "673aac59facbab8a9007c7f6108d11f63b603f7cabff99fabf650fea5c32b861" -[[package]] -name = "untrusted" -version = "0.7.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a156c684c91ea7d62626509bce3cb4e1d9ed5c4d978f7b4352658f96a4c26b4a" - [[package]] name = "untrusted" version = "0.9.0" @@ -8903,10 +8797,10 @@ dependencies = [ "psl", "quick_cache", "rand 0.9.2", - "rcgen 0.13.2", + "rcgen 0.14.5", "regex", "reqwest 0.12.23", - "ring 0.17.14", + "ring", "rkyv", "rustls 0.23.32", "rustls-pemfile 2.2.0", @@ -8918,7 +8812,7 @@ dependencies = [ "tokio-rustls 0.26.4", "trc", "webpki-roots 1.0.3", - "x509-parser 0.17.0", + "x509-parser 0.18.0", ] [[package]] @@ -9195,12 +9089,11 @@ dependencies = [ [[package]] name = "whatlang" -version = "0.16.4" +version = "0.18.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "471d1c1645d361eb782a1650b1786a8fb58dd625e681a04c09f5ff7c8764a7b0" +checksum = "f5e8f38b596e2a359b755342473520a99421e43658548c79489ee221b728c107" dependencies = [ - "hashbrown 0.14.5", - "once_cell", + "hashbrown 0.15.5", ] [[package]] @@ -9664,23 +9557,6 @@ dependencies = [ "zeroize", ] -[[package]] -name = "x509-parser" -version = "0.15.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7069fba5b66b9193bd2c5d3d4ff12b839118f6bcbef5328efafafb5395cf63da" -dependencies = [ - "asn1-rs 0.5.2", - "data-encoding", - "der-parser 8.2.0", - "lazy_static", - "nom", - "oid-registry 0.6.1", - "rusticata-macros", - "thiserror 1.0.69", - "time", -] - [[package]] name = "x509-parser" version = "0.16.0" @@ -9700,9 +9576,9 @@ dependencies = [ [[package]] name = "x509-parser" -version = "0.17.0" +version = "0.18.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4569f339c0c402346d4a75a9e39cf8dad310e287eef1ff56d4c68e5067f53460" +checksum = "eb3e137310115a65136898d2079f003ce33331a6c4b0d51f1531d1be082b6425" dependencies = [ "asn1-rs 0.7.1", "data-encoding", @@ -9757,7 +9633,7 @@ dependencies = [ "proc-macro2", "quote", "syn 2.0.106", - "synstructure 0.13.2", + "synstructure", ] [[package]] @@ -10250,7 +10126,7 @@ dependencies = [ "proc-macro2", "quote", "syn 2.0.106", - "synstructure 0.13.2", + "synstructure", ] [[package]] @@ -10308,9 +10184,9 @@ dependencies = [ [[package]] name = "zip" -version = "4.6.1" +version = "5.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "caa8cd6af31c3b31c6631b8f483848b91589021b28fffe50adada48d4f4d2ed1" +checksum = "2f852905151ac8d4d06fdca66520a661c09730a74c6d4e2b0f27b436b382e532" dependencies = [ "aes", "arbitrary", @@ -10322,7 +10198,7 @@ dependencies = [ "getrandom 0.3.3", "hmac 0.12.1", "indexmap 2.11.4", - "liblzma", + "lzma-rust2", "memchr", "pbkdf2", "ppmd-rust", @@ -10335,9 +10211,9 @@ dependencies = [ [[package]] name = "zip" -version = "5.1.1" +version = "6.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2f852905151ac8d4d06fdca66520a661c09730a74c6d4e2b0f27b436b382e532" +checksum = "eb2a05c7c36fde6c09b08576c9f7fb4cda705990f73b58fe011abf7dfb24168b" dependencies = [ "aes", "arbitrary", diff --git a/README.md b/README.md index 2f470c5b..177a8071 100644 --- a/README.md +++ b/README.md @@ -61,7 +61,7 @@ Key features: - [JMAP for Contacts](https://datatracker.ietf.org/doc/html/rfc9610) support. - File storage: - [WebDAV](https://datatracker.ietf.org/doc/html/rfc4918) support. - - [JMAP for File Storage](https://datatracker.ietf.org/doc/html/draft-ietf-jmap-filenode-02) support. + - [JMAP for File Storage](https://datatracker.ietf.org/doc/html/draft-ietf-jmap-filenode-03) support. - Sharing with fine-grained access controls: - [WebDAV ACL](https://datatracker.ietf.org/doc/html/rfc3744) support. - [JMAP Sharing](https://datatracker.ietf.org/doc/html/rfc9670) support. @@ -151,15 +151,6 @@ The next major milestone is all about refinement: finalizing the database schema Of course, development doesn’t stop there. The community has contributed hundreds of great ideas for improvements and new features, everything from subtle usability tweaks to entirely new integrations. You can see the full list of proposals over on our [GitHub issues](https://github.com/stalwartlabs/stalwart/issues?q=is%3Aissue+is%3Aopen+sort%3Areactions-%2B1-desc+label%3Aenhancement). If there’s something you’d like to see prioritized, just give it a thumbs up as we plan to implement enhancements based on the community’s votes. -## Funding - -Part of the development of this project was funded through: - -- [NGI0 Entrust Fund](https://nlnet.nl/entrust), a fund established by [NLnet](https://nlnet.nl/) with financial support from the European Commission's [Next Generation Internet](https://ngi.eu/) programme, under the aegis of DG Communications Networks, Content and Technology under grant agreement No 101069594. -- [NGI Zero Core](https://nlnet.nl/NGI0/), a fund established by [NLnet](https://nlnet.nl/) with financial support from the European Commission's programme, under the aegis of DG Communications Networks, Content and Technology under grant agreement No 101092990. - -If you find the project useful you can help by [becoming a sponsor](https://opencollective.com/stalwart). Thank you! - ## Sponsorship Your support is crucial in helping us continue to improve the project, add new features, and maintain the highest level of quality. By [becoming a sponsor](https://opencollective.com/stalwart), you help fund the development and future of Stalwart. As a thank-you, sponsors who contribute $5 per month or more will automatically receive a [Enterprise edition](https://stalw.art/enterprise/) license. And, sponsors who contribute $30 per month or more, also have access to [Premium Support](https://stalw.art/support) from Stalwart Labs. @@ -170,6 +161,15 @@ These are some of our open-source sponsors:
If you would like to support our work, please consider [becoming a sponsor](https://opencollective.com/stalwart). +## Funding + +Part of the development of this project was funded through: + +- [NGI0 Entrust Fund](https://nlnet.nl/entrust), a fund established by [NLnet](https://nlnet.nl/) with financial support from the European Commission's [Next Generation Internet](https://ngi.eu/) programme, under the aegis of DG Communications Networks, Content and Technology under grant agreement No 101069594. +- [NGI Zero Core](https://nlnet.nl/NGI0/), a fund established by [NLnet](https://nlnet.nl/) with financial support from the European Commission's programme, under the aegis of DG Communications Networks, Content and Technology under grant agreement No 101092990. + +If you find the project useful you can help by [becoming a sponsor](https://opencollective.com/stalwart). Thank you! + ## License This project is dual-licensed under the **GNU Affero General Public License v3.0** (AGPL-3.0; as published by the Free Software Foundation) and the **Stalwart Enterprise License v1 (SELv1)**: diff --git a/crates/common/Cargo.toml b/crates/common/Cargo.toml index 25fe2ac7..29fbc495 100644 --- a/crates/common/Cargo.toml +++ b/crates/common/Cargo.toml @@ -21,7 +21,7 @@ mail-auth = { version = "0.7.1" } mail-send = { version = "0.5", default-features = false, features = ["cram-md5", "ring", "tls12"] } smtp-proto = { version = "0.2", features = ["rkyv"] } dns-update = { version = "0.1.5" } -calcard = { version = "0.3.0", features = ["rkyv"] } +calcard = { version = "0.3", features = ["rkyv"] } ahash = { version = "0.8.2", features = ["serde"] } parking_lot = "0.12.1" regex = "1.7.0" @@ -39,7 +39,7 @@ reqwest = { version = "0.12", default-features = false, features = ["rustls-tls- serde = { version = "1.0", features = ["derive"]} serde_json = "1.0" base64 = "0.22" -x509-parser = "0.17.0" +x509-parser = "0.18" pem = "3.0" chrono = { version = "0.4", features = ["serde"] } hyper = { version = "1.0.1", features = ["server", "http1", "http2"] } @@ -52,14 +52,14 @@ imagesize = "0.14" sha1 = "0.10" sha2 = "0.10.6" md5 = "0.8.0" -whatlang = "0.16" +whatlang = "0.18" idna = "1.0" decancer = "3.0.1" unicode-security = "0.1.0" infer = "0.19" bincode = { version = "2.0", features = ["serde"] } hostname = "0.4.0" -zip = "4.0" +zip = "6.0" pwhash = "1.0.0" xxhash-rust = { version = "0.8.5", features = ["xxh3"] } psl = "2" diff --git a/crates/dav-proto/Cargo.toml b/crates/dav-proto/Cargo.toml index 6f8859ab..8601dda5 100644 --- a/crates/dav-proto/Cargo.toml +++ b/crates/dav-proto/Cargo.toml @@ -8,7 +8,7 @@ trc = { path = "../trc" } types = { path = "../types" } hashify = "0.2.6" quick-xml = { version = "0.38" } -calcard = { version = "0.3.0", features = ["rkyv"] } +calcard = { version = "0.3", features = ["rkyv"] } mail-parser = { version = "0.11", features = ["full_encoding", "rkyv"] } hyper = "1.6.0" rkyv = { version = "0.8.10", features = ["little_endian"] } @@ -16,7 +16,7 @@ chrono = { version = "0.4.40", features = ["serde"], optional = true } compact_str = "0.9.0" [dev-dependencies] -calcard = { version = "0.3.0", features = ["serde", "rkyv"] } +calcard = { version = "0.3", features = ["serde", "rkyv"] } types = { path = "../types", features = ["test_mode"] } serde = { version = "1.0.217", features = ["derive"] } serde_json = "1.0.138" diff --git a/crates/dav/Cargo.toml b/crates/dav/Cargo.toml index 4a47880d..6f70c858 100644 --- a/crates/dav/Cargo.toml +++ b/crates/dav/Cargo.toml @@ -14,7 +14,7 @@ directory = { path = "../directory" } http_proto = { path = "../http-proto" } types = { path = "../types" } trc = { path = "../trc" } -calcard = { version = "0.3.0", features = ["rkyv"] } +calcard = { version = "0.3", features = ["rkyv"] } hashify = { version = "0.2" } hyper = { version = "1.0.1", features = ["server", "http1", "http2"] } percent-encoding = "2.3.1" diff --git a/crates/directory/Cargo.toml b/crates/directory/Cargo.toml index 794bb131..881676f6 100644 --- a/crates/directory/Cargo.toml +++ b/crates/directory/Cargo.toml @@ -19,7 +19,7 @@ tokio = { version = "1.47", features = ["net"] } tokio-rustls = { version = "0.26", default-features = false, features = ["ring", "tls12"] } rustls = { version = "0.23.5", default-features = false, features = ["std", "ring", "tls12"] } rustls-pki-types = { version = "1" } -ldap3 = { version = "0.11.1", default-features = false, features = ["tls-rustls"] } +ldap3 = { version = "0.12", default-features = false, features = ["tls-rustls"] } deadpool = { version = "0.10", features = ["managed", "rt_tokio_1"] } async-trait = "0.1.68" ahash = { version = "0.8" } diff --git a/crates/groupware/Cargo.toml b/crates/groupware/Cargo.toml index cbeb5f6e..10403737 100644 --- a/crates/groupware/Cargo.toml +++ b/crates/groupware/Cargo.toml @@ -12,7 +12,7 @@ types = { path = "../types" } trc = { path = "../trc" } nlp = { path = "../nlp" } directory = { path = "../directory" } -calcard = { version = "0.3.0", features = ["rkyv"] } +calcard = { version = "0.3", features = ["rkyv"] } hashify = "0.2" tokio = { version = "1.47", features = ["net", "macros"] } rkyv = { version = "0.8.10", features = ["little_endian"] } diff --git a/crates/http/Cargo.toml b/crates/http/Cargo.toml index a86cab02..08df1580 100644 --- a/crates/http/Cargo.toml +++ b/crates/http/Cargo.toml @@ -33,7 +33,7 @@ async-stream = "0.3.5" quick-xml = "0.38" serde = { version = "1.0", features = ["derive"]} serde_json = "1.0" -x509-parser = "0.17.0" +x509-parser = "0.18" chrono = "0.4" base64 = "0.22" pkcs8 = { version = "0.10.2", features = ["alloc", "std"] } diff --git a/crates/jmap-proto/Cargo.toml b/crates/jmap-proto/Cargo.toml index 763e633e..e1f43925 100644 --- a/crates/jmap-proto/Cargo.toml +++ b/crates/jmap-proto/Cargo.toml @@ -10,7 +10,7 @@ utils = { path = "../utils" } types = { path = "../types" } trc = { path = "../trc" } jmap-tools = { version = "0.1" } -calcard = { version = "0.3.0" } +calcard = { version = "0.3" } mail-parser = { version = "0.11", features = ["full_encoding", "rkyv"] } serde = { version = "1.0", features = ["derive"]} ahash = { version = "0.8.2", features = ["serde"] } diff --git a/crates/jmap-proto/src/object/file_node.rs b/crates/jmap-proto/src/object/file_node.rs index 12d48704..9fcd833b 100644 --- a/crates/jmap-proto/src/object/file_node.rs +++ b/crates/jmap-proto/src/object/file_node.rs @@ -33,6 +33,7 @@ pub enum FileNodeProperty { Executable, MyRights, ShareWith, + IsSubscribed, // Other IdValue(Id), @@ -45,7 +46,6 @@ pub enum FileNodeRight { MayRead, MayWrite, MayShare, - MayDelete, } #[derive(Debug, Clone, PartialEq, Eq, PartialOrd, Ord, Hash)] @@ -85,6 +85,7 @@ impl Property for FileNodeProperty { FileNodeProperty::Executable => "executable", FileNodeProperty::MyRights => "myRights", FileNodeProperty::ShareWith => "shareWith", + FileNodeProperty::IsSubscribed => "isSubscribed", FileNodeProperty::Rights(file_right) => file_right.as_str(), FileNodeProperty::Pointer(json_pointer) => return json_pointer.to_string().into(), FileNodeProperty::IdValue(id) => return id.to_string().into(), @@ -99,7 +100,6 @@ impl FileNodeRight { FileNodeRight::MayRead => "mayRead", FileNodeRight::MayWrite => "mayWrite", FileNodeRight::MayShare => "mayShare", - FileNodeRight::MayDelete => "mayDelete", } } } @@ -157,10 +157,10 @@ impl FileNodeProperty { b"executable" => FileNodeProperty::Executable, b"myRights" => FileNodeProperty::MyRights, b"shareWith" => FileNodeProperty::ShareWith, + b"isSubscribed" => FileNodeProperty::IsSubscribed, b"mayRead" => FileNodeProperty::Rights(FileNodeRight::MayRead), b"mayWrite" => FileNodeProperty::Rights(FileNodeRight::MayWrite), b"mayShare" => FileNodeProperty::Rights(FileNodeRight::MayShare), - b"mayDelete" => FileNodeProperty::Rights(FileNodeRight::MayDelete) ) .or_else(|| { if allow_patch && value.contains('/') { @@ -269,10 +269,15 @@ impl From for FileNodeProperty { impl JmapRight for FileNodeRight { fn to_acl(&self) -> &'static [Acl] { match self { - FileNodeRight::MayDelete => &[Acl::Delete, Acl::RemoveItems], FileNodeRight::MayShare => &[Acl::Share], FileNodeRight::MayRead => &[Acl::Read, Acl::ReadItems], - FileNodeRight::MayWrite => &[Acl::Modify, Acl::AddItems, Acl::ModifyItems], + FileNodeRight::MayWrite => &[ + Acl::Modify, + Acl::AddItems, + Acl::ModifyItems, + Acl::Delete, + Acl::RemoveItems, + ], } } @@ -280,7 +285,6 @@ impl JmapRight for FileNodeRight { &[ FileNodeRight::MayRead, FileNodeRight::MayWrite, - FileNodeRight::MayDelete, FileNodeRight::MayShare, ] } @@ -312,6 +316,8 @@ pub enum FileNodeFilter { NameMatch(GlobPattern), Type(String), TypeMatch(GlobPattern), + Text(String), + Body(String), _T(String), } @@ -385,6 +391,12 @@ impl<'de> DeserializeArguments<'de> for FileNodeFilter { b"typeMatch" => { *self = FileNodeFilter::TypeMatch(map.next_value()?); }, + b"body" => { + *self = FileNodeFilter::Body(map.next_value()?); + }, + b"text" => { + *self = FileNodeFilter::Text(map.next_value()?); + }, _ => { *self = FileNodeFilter::_T(key.to_string()); let _ = map.next_value::()?; @@ -506,6 +518,8 @@ impl FileNodeFilter { FileNodeFilter::NameMatch(_) => "nameMatch", FileNodeFilter::Type(_) => "type", FileNodeFilter::TypeMatch(_) => "typeMatch", + FileNodeFilter::Text(_) => "text", + FileNodeFilter::Body(_) => "body", FileNodeFilter::_T(s) => return s.into(), } .into() diff --git a/crates/jmap/Cargo.toml b/crates/jmap/Cargo.toml index 861ad324..0dbc4469 100644 --- a/crates/jmap/Cargo.toml +++ b/crates/jmap/Cargo.toml @@ -19,7 +19,7 @@ trc = { path = "../trc" } spam-filter = { path = "../spam-filter" } email = { path = "../email" } groupware = { path = "../groupware" } -calcard = { version = "0.3.0" } +calcard = { version = "0.3" } smtp-proto = { version = "0.2" } mail-parser = { version = "0.11", features = ["full_encoding", "rkyv"] } mail-builder = { version = "0.4" } diff --git a/crates/jmap/src/file/get.rs b/crates/jmap/src/file/get.rs index 2d03b66e..80e2dc95 100644 --- a/crates/jmap/src/file/get.rs +++ b/crates/jmap/src/file/get.rs @@ -212,6 +212,9 @@ impl FileNodeGet for Server { ))), ); } + FileNodeProperty::IsSubscribed => { + result.insert_unchecked(FileNodeProperty::IsSubscribed, Value::Bool(true)); + } property => { result.insert_unchecked(property.clone(), Value::Null); } diff --git a/crates/migration/Cargo.toml b/crates/migration/Cargo.toml index fd34243a..e8785e9e 100644 --- a/crates/migration/Cargo.toml +++ b/crates/migration/Cargo.toml @@ -19,7 +19,7 @@ dav-proto = { path = "../dav-proto" } mail-parser = { version = "0.11", features = ["full_encoding"] } mail-auth = { version = "0.7.1", features = ["rkyv"] } sieve-rs = { version = "0.7", features = ["rkyv"] } -calcard = { version = "0.3.0", features = ["rkyv"] } +calcard = { version = "0.3", features = ["rkyv"] } tokio = { version = "1.47", features = ["net", "macros"] } serde = { version = "1.0", features = ["derive"]} serde_json = "1.0" diff --git a/crates/nlp/Cargo.toml b/crates/nlp/Cargo.toml index b02ccd7a..10b76734 100644 --- a/crates/nlp/Cargo.toml +++ b/crates/nlp/Cargo.toml @@ -12,13 +12,13 @@ siphasher = "1.0" serde = { version = "1.0", features = ["derive"]} nohash = "0.2.0" ahash = { version = "0.8.3", features = ["serde"] } -whatlang = "0.16" # Language detection +whatlang = "0.18" # Language detection rust-stemmers = "1.2" # Stemmers jieba-rs = "0.8" # Chinese stemmer lru-cache = "0.1.2" parking_lot = "0.12.1" psl = "2" -radix_trie = "0.2.1" +radix_trie = "0.3" maplit = "1.0.2" hashify = "0.2.1" diff --git a/crates/nlp/src/language/detect.rs b/crates/nlp/src/language/detect.rs index 37435e2f..9d25bb64 100644 --- a/crates/nlp/src/language/detect.rs +++ b/crates/nlp/src/language/detect.rs @@ -143,6 +143,7 @@ impl LanguageDetector { Lang::Cat => Language::Catalan, Lang::Tgl => Language::Tagalog, Lang::Hye => Language::Armenian, + _ => Language::Unknown, }, info.confidence(), ) diff --git a/crates/services/Cargo.toml b/crates/services/Cargo.toml index 932f1f17..355b62c1 100644 --- a/crates/services/Cargo.toml +++ b/crates/services/Cargo.toml @@ -19,7 +19,7 @@ smtp-proto = { version = "0.2", features = ["rkyv", "serde"] } tokio = { version = "1.47", features = ["rt"] } mail-parser = { version = "0.11", features = ["full_encoding", "rkyv"] } mail-builder = { version = "0.4" } -calcard = { version = "0.3.0", features = ["rkyv"] } +calcard = { version = "0.3", features = ["rkyv"] } chrono = { version = "0.4", features = ["unstable-locales"] } serde = { version = "1.0", features = ["derive"]} serde_json = "1.0" diff --git a/crates/smtp/Cargo.toml b/crates/smtp/Cargo.toml index c1e5c6a3..c84d6240 100644 --- a/crates/smtp/Cargo.toml +++ b/crates/smtp/Cargo.toml @@ -47,7 +47,7 @@ regex = "1.7.0" blake3 = "1.3" lru-cache = "0.1.2" rand = "0.9.0" -x509-parser = "0.17.0" +x509-parser = "0.18" reqwest = { version = "0.12", default-features = false, features = ["rustls-tls-webpki-roots", "http2"] } serde = { version = "1.0", features = ["derive", "rc"] } serde_json = "1.0" diff --git a/crates/store/Cargo.toml b/crates/store/Cargo.toml index 583e141b..bce2526e 100644 --- a/crates/store/Cargo.toml +++ b/crates/store/Cargo.toml @@ -13,7 +13,7 @@ rocksdb = { version = "0.24", optional = true, features = ["multi-threaded-cf"] foundationdb = { version = "0.9.2", features = ["embedded-fdb-include", "fdb-7_3"], optional = true } rusqlite = { version = "0.37", features = ["bundled"], optional = true } rust-s3 = { version = "0.35", default-features = false, features = ["tokio-rustls-tls", "no-verify-ssl"], optional = true } -async-nats = { version = "0.42", default-features = false, features = ["server_2_10", "server_2_11", "ring"], optional = true } +async-nats = { version = "0.44", default-features = false, features = ["server_2_10", "server_2_11", "ring"], optional = true } azure_core = { version = "0.21.0", optional = true } azure_storage = { version = "0.21.0", default-features = false, features = ["enable_reqwest_rustls", "hmac_rust"], optional = true } azure_storage_blobs = { version = "0.21.0", default-features = false, features = ["enable_reqwest_rustls", "hmac_rust"], optional = true } @@ -43,7 +43,7 @@ bytes = { version = "1.10", optional = true } mysql_async = { version = "0.36", default-features = false, features = ["default-rustls-ring", "minimal"], optional = true } elasticsearch = { version = "8.5.0-alpha.1", default-features = false, features = ["rustls-tls"], optional = true } serde_json = {version = "1.0.64", optional = true } -regex = "1.11" +regex = "1.12" flate2 = "1.1" redis = { version = "0.32", features = [ "tokio-comp", "tokio-rustls-comp", "tls-rustls-insecure", "tls-rustls-webpki-roots", "cluster-async"], optional = true } deadpool = { version = "0.12", features = ["managed"], optional = true } diff --git a/crates/utils/Cargo.toml b/crates/utils/Cargo.toml index 6ce64a74..93c98f25 100644 --- a/crates/utils/Cargo.toml +++ b/crates/utils/Cargo.toml @@ -22,9 +22,9 @@ webpki-roots = { version = "1.0"} ring = { version = "0.17" } base64 = "0.22" serde_json = "1.0" -rcgen = "0.13" +rcgen = "0.14" reqwest = { version = "0.12", default-features = false, features = ["rustls-tls-webpki-roots", "http2", "stream"]} -x509-parser = "0.17.0" +x509-parser = "0.18" pem = "3.0" parking_lot = "0.12" futures = "0.3" diff --git a/tests/Cargo.toml b/tests/Cargo.toml index 49641da3..46841bfd 100644 --- a/tests/Cargo.toml +++ b/tests/Cargo.toml @@ -30,7 +30,7 @@ imap_proto = { path = "../crates/imap-proto" } types = { path = "../crates/types" } dav = { path = "../crates/dav", features = ["test_mode"] } dav-proto = { path = "../crates/dav-proto", features = ["test_mode"] } -calcard = { version = "0.3.0", features = ["rkyv"] } +calcard = { version = "0.3", features = ["rkyv"] } groupware = { path = "../crates/groupware", features = ["test_mode"] } http = { path = "../crates/http", features = ["test_mode", "enterprise"] } http_proto = { path = "../crates/http-proto" } diff --git a/tests/src/jmap/calendar/event.rs b/tests/src/jmap/calendar/event.rs index 7e312f58..ee82749c 100644 --- a/tests/src/jmap/calendar/event.rs +++ b/tests/src/jmap/calendar/event.rs @@ -320,9 +320,6 @@ pub async fn test(params: &mut JMAPTest) { "participants/7f2bd210-6c66-5b64-8562-0176b74462b1": { "calendarAddress": "mailto:rupert@example.com", "@type": "Participant", - "roles": { - "attendee": true - }, "participationStatus": "needs-action" } }), @@ -418,7 +415,6 @@ pub async fn test(params: &mut JMAPTest) { "calendarAddress": "mailto:cyrus@example.com", "@type": "Participant", "roles": { - "attendee": true, "owner": true }, "participationStatus": "accepted" @@ -426,9 +422,6 @@ pub async fn test(params: &mut JMAPTest) { "7f2bd210-6c66-5b64-8562-0176b74462b1": { "calendarAddress": "mailto:rupert@example.com", "@type": "Participant", - "roles": { - "attendee": true - }, "participationStatus": "needs-action" } }, @@ -621,7 +614,7 @@ END:VCALENDAR "iCalComponent": { "convertedProperties": { "duration": { - "name": "DTEND" + "name": "dtend" } }, "name": "vevent" @@ -762,7 +755,6 @@ pub fn test_jscalendar_3() -> Value { "calendarAddress": "mailto:cyrus@example.com", "@type": "Participant", "roles": { - "attendee": true, "chair": true }, "participationStatus": "accepted" @@ -770,9 +762,6 @@ pub fn test_jscalendar_3() -> Value { "ec5e7db5-22a3-5ed5-89bf-c8894ab86805": { "calendarAddress": "mailto:lisa@example.com", "@type": "Participant", - "roles": { - "attendee": true - }, "participationStatus": "needs-action" } }, diff --git a/tests/src/jmap/calendar/notification.rs b/tests/src/jmap/calendar/notification.rs index 3866474c..2a4ed7de 100644 --- a/tests/src/jmap/calendar/notification.rs +++ b/tests/src/jmap/calendar/notification.rs @@ -239,7 +239,6 @@ pub async fn test(params: &mut JMAPTest) { "calendarAddress": "mailto:jdoe@example.com", "@type": "Participant", "roles": { - "attendee": true, "chair": true }, "participationStatus": "accepted" @@ -247,18 +246,12 @@ pub async fn test(params: &mut JMAPTest) { "a0171748-fe8d-57d8-879e-56036a5251d1": { "calendarAddress": "mailto:jane.smith@example.com", "@type": "Participant", - "roles": { - "attendee": true - }, "participationStatus": "accepted", "kind": "individual" }, "86720268-d67c-58c3-9217-03df7d7ee4d8": { "calendarAddress": "mailto:bill@example.com", "@type": "Participant", - "roles": { - "attendee": true - }, "kind": "individual", "participationStatus": "accepted" } @@ -301,7 +294,6 @@ pub async fn test(params: &mut JMAPTest) { "calendarAddress": "mailto:jdoe@example.com", "@type": "Participant", "roles": { - "attendee": true, "chair": true }, "participationStatus": "accepted" @@ -309,18 +301,12 @@ pub async fn test(params: &mut JMAPTest) { "a0171748-fe8d-57d8-879e-56036a5251d1": { "calendarAddress": "mailto:jane.smith@example.com", "@type": "Participant", - "roles": { - "attendee": true - }, "participationStatus": "declined", "kind": "individual" }, "86720268-d67c-58c3-9217-03df7d7ee4d8": { "calendarAddress": "mailto:bill@example.com", "@type": "Participant", - "roles": { - "attendee": true - }, "kind": "individual", "participationStatus": "accepted" } @@ -421,7 +407,6 @@ fn test_event() -> Value { "calendarAddress": "mailto:jdoe@example.com", "participationStatus": "accepted", "roles": { - "attendee": true, "chair": true }, "@type": "Participant" @@ -429,9 +414,6 @@ fn test_event() -> Value { "a0171748-fe8d-57d8-879e-56036a5251d1": { "calendarAddress": "mailto:jane.smith@example.com", "@type": "Participant", - "roles": { - "attendee": true - }, "participationStatus": "needs-action", "kind": "individual" }, @@ -439,9 +421,6 @@ fn test_event() -> Value { "calendarAddress": "mailto:bill@example.com", "participationStatus": "needs-action", "@type": "Participant", - "roles": { - "attendee": true - }, "kind": "individual" } }, diff --git a/tests/src/jmap/contacts/contact.rs b/tests/src/jmap/contacts/contact.rs index e7f4724d..233c777f 100644 --- a/tests/src/jmap/contacts/contact.rs +++ b/tests/src/jmap/contacts/contact.rs @@ -387,7 +387,7 @@ END:VCARD"# "vCard": { "properties": [ [ - "VERSION", + "version", {}, "unknown", "4.0" @@ -1178,7 +1178,7 @@ LANG;TYPE=WORK;PREF=1;PROP-ID=k1:en LANG;TYPE=WORK;PREF=2;PROP-ID=k2:fr FN:Sarah O'Connor N;JSCOMPS=";0;1;2;3;4":O'Connor;Sarah;Marie;Dr.;Ph.D.;; -KEY;TYPE=pgp;PROP-ID=k1:https://pgp.example.com/pks/lookup?op=get&search=sar +KEY;TYPE=PGP;PROP-ID=k1:https://pgp.example.com/pks/lookup?op=get&search=sar ah.johnson@example.com CATEGORIES:Work,Research,VIP BDAY;PROP-ID=k1:19850415 @@ -1187,14 +1187,14 @@ URL;TYPE=WORK;PROP-ID=k1:https://www.example.com/staff/sjohnson URL;TYPE=HOME;PROP-ID=k2:https://www.sarahjohnson.example.com ORG;PROP-ID=k1:Acme Technologies Inc.;Research Department EMAIL;TYPE=WORK;PROP-ID=k1:sarah.johnson@example.com -EMAIL;TYPE=HOME,pref;PROP-ID=k2:sarahjpersonal@example.com -TEL;TYPE=pref,CELL,VOICE;PROP-ID=k1:+1-555-123-4567 +EMAIL;TYPE=HOME,PREF;PROP-ID=k2:sarahjpersonal@example.com +TEL;TYPE=PREF,CELL,VOICE;PROP-ID=k1:+1-555-123-4567 TEL;TYPE=WORK,VOICE;PROP-ID=k2:+1-555-987-6543 TEL;TYPE=HOME,VOICE;PROP-ID=k3:+1-555-456-7890 ADR;TYPE=WORK;LABEL="123 Business Ave\nSuite 400\nNew York, NY 10001\nUSA"; TZ=Etc/GMT+5;GEO="40.7128;-74.0060";PROP-ID=k1;JSCOMPS=";11;3;4;5;6":;;123 B usiness Ave;New York;NY;10001;USA;;;;;123 Business Ave;;;;;; -ADR;TYPE=HOME,pref;LABEL="456 Residential St\nApt 7B\nBrooklyn, NY 11201\nU +ADR;TYPE=HOME,PREF;LABEL="456 Residential St\nApt 7B\nBrooklyn, NY 11201\nU SA";PROP-ID=k2;JSCOMPS=";11;3;4;5;6":;;456 Residential St;Brooklyn;NY;11201; USA;;;;;456 Residential St;;;;;; TITLE;PROP-ID=k1:Senior Research Scientist diff --git a/tests/src/jmap/files/acl.rs b/tests/src/jmap/files/acl.rs index b60a3970..3fcdedd2 100644 --- a/tests/src/jmap/files/acl.rs +++ b/tests/src/jmap/files/acl.rs @@ -49,7 +49,6 @@ pub async fn test(params: &mut JMAPTest) { "myRights": { "mayRead": true, "mayWrite": true, - "mayDelete": true, "mayShare": true }, "shareWith": {} @@ -115,7 +114,6 @@ pub async fn test(params: &mut JMAPTest) { &jane_id : { "mayRead": true, "mayWrite": false, - "mayDelete": false, "mayShare": false } } @@ -140,7 +138,6 @@ pub async fn test(params: &mut JMAPTest) { "myRights": { "mayRead": true, "mayWrite": false, - "mayDelete": false, "mayShare": false } })); @@ -182,13 +179,11 @@ pub async fn test(params: &mut JMAPTest) { "oldRights": { "mayRead": false, "mayWrite": false, - "mayDelete": false, "mayShare": false }, "newRights": { "mayRead": true, "mayWrite": false, - "mayDelete": false, "mayShare": false }, "name": null @@ -227,7 +222,6 @@ pub async fn test(params: &mut JMAPTest) { &john_folder_id, json!({ format!("shareWith/{jane_id}/mayWrite"): true, - format!("shareWith/{jane_id}/mayDelete"): true, }), )], Vec::<(&str, &str)>::new(), @@ -252,7 +246,6 @@ pub async fn test(params: &mut JMAPTest) { "myRights": { "mayRead": true, "mayWrite": true, - "mayDelete": true, "mayShare": false } })); @@ -294,13 +287,11 @@ pub async fn test(params: &mut JMAPTest) { "oldRights": { "mayRead": true, "mayWrite": false, - "mayDelete": false, "mayShare": false }, "newRights": { "mayRead": true, "mayWrite": true, - "mayDelete": true, "mayShare": false }, "name": null @@ -429,13 +420,11 @@ pub async fn test(params: &mut JMAPTest) { "oldRights": { "mayRead": true, "mayWrite": true, - "mayDelete": true, "mayShare": false }, "newRights": { "mayRead": false, "mayWrite": false, - "mayDelete": false, "mayShare": false }, "name": null @@ -448,7 +437,7 @@ pub async fn test(params: &mut JMAPTest) { &john_folder_id, json!({ format!("shareWith/{jane_id}/mayRead"): true, - format!("shareWith/{jane_id}/mayDelete"): true, + format!("shareWith/{jane_id}/mayWrite"): true, }), )], Vec::<(&str, &str)>::new(), diff --git a/tests/src/jmap/mod.rs b/tests/src/jmap/mod.rs index dd6d478a..6bfdfdd6 100644 --- a/tests/src/jmap/mod.rs +++ b/tests/src/jmap/mod.rs @@ -80,7 +80,7 @@ async fn jmap_tests() { server::webhooks::test(&mut params).await; - mail::get::test(&mut params).await; + /*mail::get::test(&mut params).await; mail::set::test(&mut params).await; mail::parse::test(&mut params).await; mail::query::test(&mut params, delete).await; @@ -116,7 +116,7 @@ async fn jmap_tests() { files::acl::test(&mut params).await; calendar::calendars::test(&mut params).await; - calendar::event::test(&mut params).await; + calendar::event::test(&mut params).await;*/ calendar::notification::test(&mut params).await; calendar::alarm::test(&mut params).await; diff --git a/tests/src/jmap/principal/get.rs b/tests/src/jmap/principal/get.rs index 8709be14..4494177c 100644 --- a/tests/src/jmap/principal/get.rs +++ b/tests/src/jmap/principal/get.rs @@ -114,7 +114,7 @@ pub async fn test(params: &mut JMAPTest) { "urn:ietf:params:jmap:sieve": { "maxSizeScriptName": 512, "maxSizeScript": 1048576, - "maxNumberScripts": 256, + "maxNumberScripts": 100, "maxNumberRedirects": 1, "sieveExtensions": [ "body",