chore: migrate all local dependancies to workspace dependancies (#710)

* chore: start moving all deps to workspace deps

Signed-off-by: Zomatree <me@zomatree.live>

* chore: migrate all deps to workspace deps

Signed-off-by: Zomatree <me@zomatree.live>

* chore: add more dep groups

Signed-off-by: Zomatree <me@zomatree.live>

* fix: add migration to update existing files to be animated (#705)

* fix: add migration to update existing files to be animated

Signed-off-by: Zomatree <me@zomatree.live>

* Revert "fix: add migration to update existing files to be animated"

This reverts commit 4e1f1c116c.

Signed-off-by: Zomatree <me@zomatree.live>

* fix: calculate animated for existing files when fetched

Signed-off-by: Zomatree <me@zomatree.live>

---------

Signed-off-by: Zomatree <me@zomatree.live>

* fix: mise start + missing docker image (#564)

* fix: mise start + missing docker image

Signed-off-by: Damocles078 <hellodamocles078@gmail.com>

* fix: bump livekit version

Signed-off-by: Damocles <106018783+Damocles078@users.noreply.github.com>

---------

Signed-off-by: Damocles078 <hellodamocles078@gmail.com>
Signed-off-by: Tom <iamtomahawkx@gmail.com>
Signed-off-by: Damocles <106018783+Damocles078@users.noreply.github.com>
Co-authored-by: Tom <iamtomahawkx@gmail.com>

* docs: update donation link (#709)

Signed-off-by: Zomatree <me@zomatree.live>

* fix: remove usage of deprecated functions

Signed-off-by: Zomatree <me@zomatree.live>

---------

Signed-off-by: Zomatree <me@zomatree.live>
Signed-off-by: Damocles078 <hellodamocles078@gmail.com>
Signed-off-by: Tom <iamtomahawkx@gmail.com>
Signed-off-by: Damocles <106018783+Damocles078@users.noreply.github.com>
Co-authored-by: Damocles <106018783+Damocles078@users.noreply.github.com>
Co-authored-by: Tom <iamtomahawkx@gmail.com>
Co-authored-by: Paul Makles <me@insrt.uk>
This commit is contained in:
Angelo Kontaxis
2026-04-18 03:02:18 +01:00
committed by GitHub
parent 144e939c6b
commit 3675ff1a1f
25 changed files with 2475 additions and 2401 deletions

3771
Cargo.lock generated

File diff suppressed because it is too large Load Diff

View File

@@ -1,5 +1,5 @@
[workspace]
resolver = "2"
resolver = "3"
members = [
"crates/delta",
@@ -20,24 +20,129 @@ lto = true
[workspace.dependencies]
# Async
async-trait = "0.1.89"
tokio = { version = "1.49.0", features = ["macros", "rt"] }
tokio = "1.49.0"
async-channel = "2.3.1"
futures = "0.3.32"
async-std = "1.8.0"
async-tungstenite = "0.17.0"
futures-locks = "0.7.1"
async-lock = "2.8.0"
async-recursion = "1.0.4"
# Error Handling
anyhow = "1.0.100"
thiserror = "2.0.18"
sentry = "0.31.5"
sentry-anyhow = "0.38.1"
# Other Utilities
uuid = { version = "1.19.0", features = ["v4"] }
# Data Validation
regex = "1.12.3"
validator = "0.16"
# Data Types
uuid = "1.19.0"
ulid = "1.2.1"
nanoid = "0.4.0"
typenum = "1.17.0"
num_enum = "0.6.1"
bitfield = "0.13.2"
# Time
chrono = "0.4.15"
iso8601-timestamp = "0.2.10"
# Data Collections
lru = "0.16.3"
indexmap = "2.13.1"
dashmap = "5.2.0"
moka = "0.12.8"
lru_time_cache = "0.11.11"
deadqueue = "0.2.4"
# Web scraping
scraper = "0.20.0"
encoding_rs = "0.8.34"
# Mail
lettre = "0.10.0-alpha.4"
# HTTP Requests
reqwest = "0.13.2"
isahc = "1.7"
# Notifications
fcm_v1 = "0.3.0"
web-push = "0.10.0"
revolt_a2 = "0.10"
# Parsing
logos = "0.15"
# SVG rendering
usvg = "0.44.0"
resvg = "0.44.0"
tiny-skia = "0.11.4"
# Logging
log = "0.4.29"
pretty_env_logger = "0.4.0"
# Redis
redis-kiss = "0.1.4"
fred = "8.0.1"
# Serialisation
bincode = "1.3.3"
serde_json = "1.0.79"
rmp-serde = "1.0.0"
serde = { version = "1", features = ["derive"] }
strum_macros = "0.26.4"
# MongoDB
bson = { version = "2.1.0" }
mongodb = { version = "3.1.0" }
# S3
aws-config = "1.5.5"
aws-sdk-s3 = "1.46.0"
# Axum (HTTP server)
axum-macros = "0.4.1"
axum_typed_multipart = "0.12.1"
axum = { version = "0.7.5", features = ["multipart"] }
tower-http = { version = "0.5.2", features = ["cors", "trace"] }
axum = "0.7.5"
axum-extra = "0.9"
tower-http = "0.5.2"
# Rocket (HTTP server)
rocket = "0.5.1"
rocket_empty = "0.1.1"
revolt_rocket_okapi = "0.10.0"
rocket_cors = { git = "https://github.com/lawliet89/rocket_cors", rev = "072d90359b23e9b291df6b672c07c93de9c46011" }
rocket_authifier = "1.0.16"
rocket_prometheus = "0.10.0-rc.3"
# Spec Generation
utoipa = "4.2.3"
revolt_okapi = "0.9.1"
schemars = "0.8.8"
utoipa-scalar = "0.1.0"
# Image Processing
jxl-oxide = { version = "0.12.5", features = ["image"] }
image = "0.25.9"
jxl-oxide = "0.12.5"
sha2 = "0.10.8"
kamadak-exif = "0.5.4"
webp = "0.3.0"
image = "0.25.2" # avif encode requires dav1d system library: features = ["avif-native"]
thumbhash = "0.1.0"
# File processing
revolt_clamav-client = "0.1.5"
simdutf8 = "0.1.4"
# Content type processing
infer = "0.16.0"
ffprobe = "0.4.0"
imagesize = "0.13.0"
# OpenTelemetry
tracing = "0.1.44"
@@ -47,4 +152,50 @@ tracing-subscriber = { version = "0.3.22", features = [
opentelemetry = { version = "0.31.0", features = ["logs"] }
opentelemetry_sdk = { version = "0.31.0", features = ["logs"] }
opentelemetry-otlp = { version = "0.31.0", features = ["logs"] }
opentelemetry-appender-tracing = { version = "0.31.1" }
opentelemetry-appender-tracing = "0.31.1"
# Authifier
authifier = "1.0.16"
# RabbitMQ
amqprs = "1.7.0"
# Voice
livekit-api = "0.4.4"
livekit-protocol = "0.7.4"
livekit-runtime = "0.4.0"
# Other Utilities
once_cell = "1.9.0"
config = "0.13.3"
cached = "0.44.0"
rand = "0.8.5"
base64 = "0.21.3"
decancer = "1.6.2"
linkify = "0.8.1"
url-escape = "0.1.1"
revolt_optional_struct = "0.2.0"
unicode-segmentation = "1.10.1"
querystring = "1.1.0"
tempfile = "3.12.0"
aes-gcm = "0.10.3"
auto_ops = "0.3.0"
url = "2.2.2"
impl_ops = "0.1.1"
lazy_static = "1.5.0"
mime = "0.3.17"
# Build Dependencies
vergen = "7.5.0"
# Local packages
revolt-coalesced = { version = "0.12.0", path = "crates/core/coalesced" }
revolt-config = { version = "0.12.0", path = "crates/core/config" }
revolt-database = { version = "0.12.0", path = "crates/core/database" }
revolt-files = { version = "0.12.0", path = "crates/core/files" }
revolt-models = { version = "0.12.0", path = "crates/core/models" }
revolt-parser = { version = "0.12.0", path = "crates/core/parser" }
revolt-permissions = { version = "0.12.0", path = "crates/core/permissions" }
revolt-presence = { version = "0.12.0", path = "crates/core/presence" }
revolt-ratelimits = { version = "0.12.0", path = "crates/core/ratelimits" }
revolt-result = { version = "0.12.0", path = "crates/core/result" }

View File

@@ -9,42 +9,38 @@ publish = false
[dependencies]
# util
log = "*"
sentry = "0.31.5"
lru = "0.7.6"
ulid = "0.5.0"
once_cell = "1.9.0"
redis-kiss = "0.1.4"
lru_time_cache = "0.11.11"
async-channel = "2.3.1"
log = { workspace = true }
sentry = { workspace = true }
lru = { workspace = true }
ulid = { workspace = true }
once_cell = { workspace = true }
redis-kiss = { workspace = true }
lru_time_cache = { workspace = true }
async-channel = { workspace = true }
# parsing
querystring = "1.1.0"
regex = "1.11.1"
querystring = { workspace = true }
regex = { workspace = true }
# serde
bincode = "1.3.3"
serde_json = "1.0.79"
rmp-serde = "1.0.0"
serde = "1.0.136"
bincode = { workspace = true }
serde_json = { workspace = true }
rmp-serde = { workspace = true }
serde = { workspace = true }
# async
futures = "0.3.21"
async-tungstenite = { version = "0.17.0", features = ["async-std-runtime"] }
async-std = { version = "1.8.0", features = [
"tokio1",
"tokio02",
"attributes",
] }
futures = { workspace = true }
async-tungstenite = { workspace = true, features = ["async-std-runtime"] }
async-std = { workspace = true }
# core
authifier = { version = "1.0.16" }
revolt-result = { path = "../core/result" }
revolt-models = { path = "../core/models" }
revolt-config = { path = "../core/config" }
revolt-database = { path = "../core/database", features = ["voice"] }
revolt-permissions = { path = "../core/permissions" }
revolt-presence = { path = "../core/presence", features = ["redis-is-patched"] }
authifier = { workspace = true }
revolt-result = { workspace = true }
revolt-models = { workspace = true }
revolt-config = { workspace = true }
revolt-database = { workspace = true, features = ["voice"] }
revolt-permissions = { workspace = true }
revolt-presence = { workspace = true, features = ["redis-is-patched"] }
# redis
fred = { version = "8.0.1", features = ["subscriber-client"] }
fred = { workspace = true, features = ["subscriber-client"] }

View File

@@ -1,7 +1,5 @@
use std::{
collections::{HashMap, HashSet},
sync::Arc,
time::Duration,
collections::{HashMap, HashSet}, num::NonZeroUsize, sync::Arc, time::Duration
};
use async_std::sync::{Mutex, RwLock};
@@ -57,7 +55,7 @@ impl Default for Cache {
members: Default::default(),
servers: Default::default(),
seen_events: LruCache::new(20),
seen_events: LruCache::new(NonZeroUsize::new(20).unwrap()),
}
}
}

View File

@@ -15,12 +15,12 @@ cache = ["dep:lru"]
default = ["tokio"]
[dependencies]
tokio = { version = "1.47.0", features = ["sync"], optional = true }
indexmap = { version = "2.13.0", optional = true }
lru = { version = "0.16.3", optional = true }
tokio = { workspace = true, features = ["sync"], optional = true }
indexmap = { workspace = true, optional = true }
lru = { workspace = true, optional = true }
[dev-dependencies]
tokio = { version = "1.47.0", features = [
tokio = { workspace = true, features = [
"rt",
"rt-multi-thread",
"macros",

View File

@@ -18,24 +18,24 @@ default = ["test", "sentry"]
[dependencies]
# Utility
config = "0.13.3"
cached = "0.44.0"
once_cell = "1.18.0"
config = { workspace = true }
cached = { workspace = true }
once_cell = { workspace = true }
# Serde
serde = { version = "1", features = ["derive"] }
serde = { workspace = true }
# Async
futures-locks = "0.7.1"
async-std = { version = "1.8.0", features = ["attributes"], optional = true }
futures-locks = { workspace = true }
async-std = { workspace = true, features = ["attributes"], optional = true }
# Logging
log = "0.4.14"
pretty_env_logger = "0.4.0"
log = { workspace = true }
pretty_env_logger = { workspace = true }
# Sentry
sentry = { version = "0.31.5", optional = true }
sentry-anyhow = { version = "0.38.1", optional = true }
sentry = { workspace = true, optional = true }
sentry-anyhow = { workspace = true, optional = true }
# Core
revolt-result = { version = "0.12.1", path = "../result", optional = true }
revolt-result = { workspace = true, optional = true }

View File

@@ -32,80 +32,71 @@ default = ["mongodb", "async-std-runtime", "tasks"]
[dependencies]
# Core
revolt-config = { version = "0.12.1", path = "../config", features = [
"report-macros",
] }
revolt-result = { version = "0.12.1", path = "../result" }
revolt-models = { version = "0.12.1", path = "../models", features = [
"validator",
] }
revolt-presence = { version = "0.12.1", path = "../presence" }
revolt-permissions = { version = "0.12.1", path = "../permissions", features = [
"serde",
"bson",
] }
revolt-parser = { version = "0.12.1", path = "../parser" }
revolt-config = { workspace = true, features = ["report-macros"] }
revolt-result = { workspace = true }
revolt-models = { workspace = true, features = ["validator"] }
revolt-presence = { workspace = true }
revolt-permissions = { workspace = true, features = ["serde", "bson"] }
revolt-parser = { workspace = true }
# Utility
log = "0.4"
lru = "0.11.0"
rand = "0.8.5"
ulid = "1.0.0"
nanoid = "0.4.0"
base64 = "0.21.3"
once_cell = "1.17"
indexmap = "1.9.1"
decancer = "1.6.2"
deadqueue = "0.2.4"
linkify = { optional = true, version = "0.8.1" }
url-escape = { optional = true, version = "0.1.1" }
validator = { version = "0.16", features = ["derive"] }
isahc = { optional = true, version = "1.7", features = ["json"] }
log = { workspace = true }
lru = { workspace = true }
rand = { workspace = true }
ulid = { workspace = true }
nanoid = { workspace = true }
base64 = { workspace = true }
once_cell = { workspace = true }
indexmap = { workspace = true }
decancer = { workspace = true }
deadqueue = { workspace = true }
linkify = { workspace = true, optional = true }
url-escape = { workspace = true, optional = true }
validator = { workspace = true, features = ["derive"] }
isahc = { workspace = true, features = ["json"], optional = true }
# Serialisation
serde_json = "1"
revolt_optional_struct = "0.2.0"
serde = { version = "1", features = ["derive"] }
iso8601-timestamp = { version = "0.2.10", features = ["serde", "bson"] }
serde_json = { workspace = true }
revolt_optional_struct = { workspace = true }
serde = { workspace = true }
iso8601-timestamp = { workspace = true, features = ["serde", "bson"] }
# Events
redis-kiss = { version = "0.1.4" }
redis-kiss = { workspace = true }
# Database
bson = { optional = true, version = "2.1.0" }
mongodb = { optional = true, version = "3.1.0" }
bson = { workspace = true, optional = true }
mongodb = { workspace = true, optional = true }
# Database Migration
unicode-segmentation = "1.10.1"
regex = "1"
unicode-segmentation = { workspace = true }
regex = { workspace = true }
# Async Language Features
futures = "0.3.19"
async-lock = "2.8.0"
async-trait = "0.1.51"
async-recursion = "1.0.4"
futures = { workspace = true }
async-lock = { workspace = true }
async-trait = { workspace = true }
async-recursion = { workspace = true }
# Async
async-std = { version = "1.8.0", features = ["attributes"], optional = true }
async-std = { workspace = true, features = ["attributes"], optional = true }
# Axum Impl
axum = { version = "0.7.5", optional = true }
axum = { workspace = true, optional = true }
# Rocket Impl
schemars = { version = "0.8.8", optional = true }
rocket = { version = "0.5.1", default-features = false, features = [
"json",
], optional = true }
revolt_okapi = { version = "0.9.1", optional = true }
revolt_rocket_okapi = { version = "0.10.0", optional = true }
schemars = { workspace = true, optional = true }
rocket = { workspace = true, features = ["json"], optional = true }
revolt_okapi = { workspace = true, optional = true }
revolt_rocket_okapi = { workspace = true, optional = true }
# Authifier
authifier = { version = "1.0.16" }
authifier = { workspace = true }
# RabbitMQ
amqprs = { version = "1.7.0" }
amqprs = { workspace = true }
# Voice
livekit-api = { version = "0.4.4", optional = true }
livekit-protocol = { version = "0.4.0", optional = true }
livekit-runtime = { version = "0.3.1", features = ["tokio"], optional = true }
livekit-api = { workspace = true, optional = true }
livekit-protocol = { workspace = true, optional = true }
livekit-runtime = { workspace = true, features = ["tokio"], optional = true }

View File

@@ -249,7 +249,7 @@ impl AbstractMessages for ReferenceDb {
let mut messages = self.messages.lock().await;
if let Some(message) = messages.get_mut(id) {
if let Some(users) = message.reactions.get_mut(emoji) {
users.remove(&user.to_string());
users.swap_remove(&user.to_string());
}
Ok(())
@@ -262,7 +262,7 @@ impl AbstractMessages for ReferenceDb {
async fn clear_reaction(&self, id: &str, emoji: &str) -> Result<()> {
let mut messages = self.messages.lock().await;
if let Some(message) = messages.get_mut(id) {
message.reactions.remove(emoji);
message.reactions.swap_remove(emoji);
Ok(())
} else {
Err(create_error!(NotFound))

View File

@@ -16,33 +16,33 @@ tracing = { workspace = true }
tokio = { workspace = true }
async-trait = { workspace = true }
ffprobe = "0.4.0"
imagesize = "0.13.0"
tempfile = "3.12.0"
ffprobe = { workspace = true }
imagesize = { workspace = true }
tempfile = { workspace = true }
base64 = "0.22.1"
aes-gcm = "0.10.3"
typenum = "1.17.0"
base64 = { workspace = true }
aes-gcm = { workspace = true }
typenum = { workspace = true }
aws-config = "1.5.5"
aws-sdk-s3 = { version = "1.46.0", features = ["behavior-version-latest"] }
aws-config = { workspace = true }
aws-sdk-s3 = { workspace = true, features = ["behavior-version-latest"] }
revolt-config = { version = "0.12.1", path = "../config", features = [
revolt-config = { workspace = true, features = [
"report-macros",
] }
revolt-result = { version = "0.12.1", path = "../result" }
revolt-result = { workspace = true }
# image processing
jxl-oxide = { workspace = true }
jxl-oxide = { workspace = true, features = ["image"] }
image = { workspace = true }
# svg rendering
usvg = "0.44.0"
resvg = "0.44.0"
tiny-skia = "0.11.4"
usvg = { workspace = true }
resvg = { workspace = true }
tiny-skia = { workspace = true }
# encoding
webp = "0.3.0"
webp = { workspace = true }
[dev-dependencies]
uuid = { workspace = true }
uuid = { workspace = true, features = ["v4"] }

View File

@@ -21,26 +21,26 @@ default = ["serde", "partials", "rocket"]
[dependencies]
# Core
revolt-config = { version = "0.12.1", path = "../config" }
revolt-permissions = { version = "0.12.1", path = "../permissions" }
revolt-config = { workspace = true }
revolt-permissions = { workspace = true }
# Utility
regex = "1.11"
indexmap = "1.9.3"
once_cell = "1.17.1"
num_enum = "0.6.1"
regex = { workspace = true }
indexmap = { workspace = true }
once_cell = { workspace = true }
num_enum = { workspace = true }
# Rocket
rocket = { optional = true, version = "0.5.0-rc.2", default-features = false }
rocket = { workspace = true, optional = true }
# Serialisation
revolt_optional_struct = { version = "0.2.0", optional = true }
serde = { version = "1", features = ["derive"], optional = true }
iso8601-timestamp = { version = "0.2.11", features = ["schema", "bson"] }
revolt_optional_struct = { workspace = true, optional = true }
serde = { workspace = true, optional = true }
iso8601-timestamp = { workspace = true, features = ["schema", "bson"] }
# Spec Generation
schemars = { version = "0.8.8", optional = true, features = ["indexmap1"] }
utoipa = { version = "4.2.3", optional = true }
schemars = { workspace = true, features = ["indexmap2"], optional = true }
utoipa = { workspace = true, optional = true }
# Validation
validator = { version = "0.16.0", optional = true, features = ["derive"] }
validator = { workspace = true, features = ["derive"], optional = true }

View File

@@ -8,4 +8,4 @@ description = "Revolt Backend: Message Parser"
repository = "https://github.com/stoatchat/stoatchat"
[dependencies]
logos = { version = "0.15" }
logos = { workspace = true }

View File

@@ -18,23 +18,23 @@ try-from-primitive = ["dep:num_enum"]
[dev-dependencies]
# Async
async-std = { version = "1.8.0", features = ["attributes"] }
async-std = { workspace = true, features = ["attributes"] }
[dependencies]
# Core
revolt-result = { version = "0.12.1", path = "../result" }
revolt-result = { workspace = true }
# Utility
auto_ops = "0.3.0"
once_cell = "1.17"
num_enum = { version = "0.6.1", optional = true }
auto_ops = { workspace = true }
once_cell = { workspace = true }
num_enum = { workspace = true, optional = true }
# Async
async-trait = "0.1.51"
async-trait = { workspace = true }
# Serialisation
serde = { version = "1", features = ["derive"], optional = true }
bson = { version = "2.1.0", optional = true }
serde = { workspace = true, optional = true }
bson = { workspace = true, optional = true }
# Spec Generation
schemars = { version = "0.8.8", optional = true }
schemars = { workspace = true, optional = true }

View File

@@ -14,16 +14,16 @@ redis-is-patched = []
[dev-dependencies]
# Async
async-std = { version = "1.8.0", features = ["attributes"] }
async-std = { workspace = true, features = ["attributes"] }
# Config for loading Redis URI
revolt-config = { version = "0.12.1", path = "../config" }
revolt-config = { workspace = true }
[dependencies]
# Utility
log = "0.4.17"
rand = "0.8.5"
once_cell = "1.17.1"
log = { workspace = true }
rand = { workspace = true }
once_cell = { workspace = true }
# Redis
redis-kiss = "0.1.4"
redis-kiss = { workspace = true }

View File

@@ -18,17 +18,17 @@ axum = ["dep:axum", "revolt-database/axum-impl"]
default = ["rocket", "axum"]
[dependencies]
revolt-database = { version = "0.12.1", path = "../database" }
revolt-result = { version = "0.12.1", path = "../result" }
revolt-config = { version = "0.12.1", path = "../config" }
revolt-database = { workspace = true }
revolt-result = { workspace = true }
revolt-config = { workspace = true }
rocket = { version = "0.5.1", optional = true }
revolt_rocket_okapi = { version = "0.10.0", optional = true }
rocket = { workspace = true, optional = true }
revolt_rocket_okapi = { workspace = true, optional = true }
axum = { version = "0.7.5", optional = true, features = ["macros"] }
axum = { workspace = true, optional = true, features = ["macros"] }
serde = { version = "1", features = ["derive"] }
authifier = { version = "1.0.16" }
dashmap = "5.2.0"
async-trait = "0.1.81"
log = "0.4"
serde = { workspace = true }
authifier = { workspace = true }
dashmap = { workspace = true }
async-trait = { workspace = true }
log = { workspace = true }

View File

@@ -22,21 +22,21 @@ default = ["serde", "sentry"]
[dependencies]
# Serialisation
serde_json = { version = "1", optional = true }
serde = { version = "1", features = ["derive"], optional = true }
serde_json = { workspace = true, optional = true }
serde = { workspace = true, optional = true }
# Spec Generation
schemars = { version = "0.8.8", optional = true }
utoipa = { version = "4.2.3", optional = true }
schemars = { workspace = true, optional = true }
utoipa = { workspace = true, optional = true }
# Rocket
rocket = { optional = true, version = "0.5.0-rc.2", default-features = false }
revolt_rocket_okapi = { version = "0.10.0", optional = true }
revolt_okapi = { version = "0.9.1", optional = true }
rocket = { workspace = true, optional = true }
revolt_rocket_okapi = { workspace = true, optional = true }
revolt_okapi = { workspace = true, optional = true }
# utilities
log = "0.4"
log = { workspace = true }
# Axum
axum = { version = "0.7.5", optional = true }
axum = { workspace = true, optional = true }
sentry = { version = "0.31.5", optional = true }
sentry = { workspace = true, optional = true }

View File

@@ -11,13 +11,13 @@ publish = false
[dependencies]
# Utility
log = "0.4"
log = { workspace = true }
# Async
tokio = { version = "1" }
tokio = { workspace = true }
# Core
revolt-database = { version = "0.12.1", path = "../../core/database" }
revolt-result = { version = "0.12.1", path = "../../core/result" }
revolt-config = { version = "0.12.1", path = "../../core/config" }
revolt-files = { version = "0.12.1", path = "../../core/files" }
revolt-database = { workspace = true }
revolt-result = { workspace = true }
revolt-config = { workspace = true }
revolt-files = { workspace = true }

View File

@@ -6,42 +6,35 @@ license = "AGPL-3.0-or-later"
publish = false
[dependencies]
revolt-result = { version = "0.12.1", path = "../../core/result" }
revolt-config = { version = "0.12.1", path = "../../core/config", features = [
"report-macros",
"anyhow",
] }
revolt-database = { version = "0.12.1", path = "../../core/database" }
revolt-models = { version = "0.12.1", path = "../../core/models", features = [
"validator",
] }
revolt-presence = { version = "0.12.1", path = "../../core/presence", features = [
"redis-is-patched",
] }
revolt-parser = { version = "0.12.1", path = "../../core/parser" }
revolt-result = { workspace = true }
revolt-config = { workspace = true, features = ["report-macros", "anyhow"] }
revolt-database = { workspace = true }
revolt-models = { workspace = true, features = ["validator"] }
revolt-presence = { workspace = true, features = ["redis-is-patched"] }
revolt-parser = { workspace = true }
anyhow = { version = "1.0.98" }
anyhow = { workspace = true }
amqprs = { version = "1.7.0" }
fcm_v1 = "0.3.0"
web-push = "0.10.0"
isahc = { optional = true, version = "1.7", features = ["json"] }
revolt_a2 = { version = "0.10", default-features = false, features = ["ring"] }
redis-kiss = "0.1.4"
tokio = "1.39.2"
async-trait = "0.1.81"
ulid = "1.0.0"
amqprs = { workspace = true }
fcm_v1 = { workspace = true }
web-push = { workspace = true }
isahc = { workspace = true, features = ["json"], optional = true }
revolt_a2 = { workspace = true, features = ["ring"] }
redis-kiss = { workspace = true }
tokio = { workspace = true }
async-trait = { workspace = true }
ulid = { workspace = true }
authifier = "1.0.16"
authifier = { workspace = true }
log = "0.4.11"
pretty_env_logger = "0.4.0"
log = { workspace = true }
pretty_env_logger = { workspace = true }
regex = "1.12.3"
regex = { workspace = true }
#serialization
serde_json = "1"
revolt_optional_struct = "0.2.0"
serde = { version = "1", features = ["derive"] }
iso8601-timestamp = { version = "0.2.10", features = ["serde", "bson"] }
base64 = "0.22.1"
serde_json = { workspace = true }
revolt_optional_struct = { workspace = true }
serde = { workspace = true }
iso8601-timestamp = { workspace = true, features = ["serde", "bson"] }
base64 = { workspace = true }

View File

@@ -9,41 +9,41 @@ publish = false
[dependencies]
# util
log = "*"
sentry = "0.31.5"
lru = "0.7.6"
ulid = "0.5.0"
redis-kiss = "0.1.4"
chrono = "0.4.15"
log = { workspace = true }
sentry = { workspace = true }
lru = { workspace = true }
ulid = { workspace = true }
redis-kiss = { workspace = true }
chrono = { workspace = true }
# Serde
serde_json = "1.0.79"
rmp-serde = "1.0.0"
serde = "1.0.136"
serde_json = { workspace = true }
rmp-serde = { workspace = true }
serde = { workspace = true }
# Http
rocket = { version = "0.5.0-rc.2", features = ["json"] }
rocket_empty = "0.1.1"
rocket = { workspace = true, features = ["json"] }
rocket_empty = { workspace = true }
# Async
futures = "0.3.21"
async-std = { version = "1.8.0", features = [
futures = { workspace = true }
async-std = { workspace = true, features = [
"tokio1",
"tokio02",
"attributes",
] }
# Core
revolt-result = { path = "../../core/result" }
revolt-models = { path = "../../core/models" }
revolt-config = { path = "../../core/config" }
revolt-database = { path = "../../core/database", features = ["voice"] }
revolt-permissions = { path = "../../core/permissions" }
revolt-result = { workspace = true, features = ["rocket"] }
revolt-models = { workspace = true }
revolt-config = { workspace = true }
revolt-database = { workspace = true, features = ["voice"] }
revolt-permissions = { workspace = true }
# Voice
livekit-api = "0.4.4"
livekit-protocol = "0.4.0"
livekit-runtime = { version = "0.3.1", features = ["tokio"] }
livekit-api = { workspace = true }
livekit-protocol = { workspace = true }
livekit-runtime = { workspace = true, features = ["tokio"] }
# RabbitMQ
amqprs = { version = "1.7.0" }
amqprs = { workspace = true }

View File

@@ -10,84 +10,83 @@ publish = false
[dependencies]
# Test
rand = "0.8.5"
redis-kiss = "0.1.4"
rand = { workspace = true }
redis-kiss = { workspace = true }
# Utility
lru = "0.7.0"
url = "2.2.2"
log = "0.4.11"
dashmap = "5.2.0"
linkify = "0.6.0"
once_cell = "1.17.1"
env_logger = "0.7.1"
lru = { workspace = true }
url = { workspace = true }
log = { workspace = true }
dashmap = { workspace = true }
linkify = { workspace = true }
once_cell = { workspace = true }
# Lang. Utilities
regex = "1"
num_enum = "0.5.1"
impl_ops = "0.1.1"
bitfield = "0.13.2"
regex = { workspace = true }
num_enum = { workspace = true }
impl_ops = { workspace = true }
bitfield = { workspace = true }
# ID / key generation
ulid = "0.4.1"
nanoid = "0.4.0"
ulid = { workspace = true }
nanoid = { workspace = true }
# serde
serde_json = "1.0.57"
serde = { version = "1.0.115", features = ["derive"] }
validator = { version = "0.16", features = ["derive"] }
iso8601-timestamp = { version = "0.2.11", features = [] }
serde_json = { workspace = true }
serde = { workspace = true }
validator = { workspace = true, features = ["derive"] }
iso8601-timestamp = { workspace = true }
# async
futures = "0.3.8"
chrono = "0.4.15"
async-channel = "1.6.1"
reqwest = { version = "0.11.4", features = ["json"] }
async-std = { version = "1.8.0", features = [
futures = { workspace = true }
chrono = { workspace = true }
async-channel = { workspace = true }
reqwest = { workspace = true, features = ["json"] }
async-std = { workspace = true, features = [
"tokio1",
"tokio02",
"attributes",
] }
# internal util
lettre = "0.10.0-alpha.4"
lettre = { workspace = true }
# web
rocket = { version = "0.5.1", default-features = false, features = ["json"] }
rocket_cors = { git = "https://github.com/lawliet89/rocket_cors", rev = "072d90359b23e9b291df6b672c07c93de9c46011" }
rocket_empty = { version = "0.1.1", features = ["schema"] }
rocket_authifier = { version = "1.0.16" }
rocket_prometheus = "0.10.0-rc.3"
rocket = { workspace = true, features = ["json"] }
rocket_cors = { workspace = true }
rocket_empty = { workspace = true, features = ["schema"] }
rocket_authifier = { workspace = true }
rocket_prometheus = { workspace = true }
# spec generation
schemars = "0.8.8"
revolt_rocket_okapi = { version = "0.10.0", features = ["swagger"] }
schemars = { workspace = true }
revolt_rocket_okapi = { workspace = true, features = ["swagger"] }
# rabbit
amqprs = { version = "1.7.0" }
amqprs = { workspace = true }
# core
authifier = "1.0.16"
revolt-config = { path = "../core/config" }
revolt-database = { path = "../core/database", features = [
authifier = { workspace = true }
revolt-config = { workspace = true }
revolt-database = { workspace = true, features = [
"rocket-impl",
"redis-is-patched",
"voice",
] }
revolt-models = { path = "../core/models", features = [
revolt-models = { workspace = true, features = [
"schemas",
"validator",
"rocket",
] }
revolt-presence = { path = "../core/presence" }
revolt-result = { path = "../core/result", features = ["rocket", "okapi"] }
revolt-permissions = { path = "../core/permissions", features = ["schemas"] }
revolt-ratelimits = { path = "../core/ratelimits", features = ["rocket"] }
revolt-presence = { workspace = true }
revolt-result = { workspace = true, features = ["rocket", "okapi"] }
revolt-permissions = { workspace = true, features = ["schemas"] }
revolt-ratelimits = { workspace = true, features = ["rocket"] }
# voice
livekit-api = "0.4.4"
livekit-protocol = "0.4.0"
livekit-api = { workspace = true }
livekit-protocol = { workspace = true }
[build-dependencies]
vergen = "7.5.0"
vergen = { workspace = true }

View File

@@ -1,4 +1,5 @@
use chrono::Utc;
use std::time::Duration;
use revolt_database::{
util::{permissions::DatabasePermissionQuery, reference::Reference},
Database, Message, User,
@@ -36,10 +37,9 @@ pub async fn bulk_delete_messages(
if ulid::Ulid::from_string(id)
.map_err(|_| create_error!(InvalidOperation))?
.datetime()
.signed_duration_since(Utc::now())
.num_days()
.abs()
> 7
.elapsed()
.expect("Time went backwards")
> Duration::from_hours(7 * 24) // 7 days
{
return Err(create_error!(InvalidOperation));
}

View File

@@ -1,4 +1,5 @@
use chrono::{Duration, Utc};
use std::time::Duration;
use redis_kiss::{get_connection, redis, AsyncCommands};
use revolt_database::util::permissions::DatabasePermissionQuery;
use revolt_database::{
@@ -111,8 +112,12 @@ pub async fn message_send(
// Disallow mentions for new users (TRUST-0: <12 hours age) in public servers
let allow_mentions = if let Some(server) = query.server_ref() {
if server.discoverable {
(Utc::now() - ulid::Ulid::from_string(&user.id).unwrap().datetime())
>= Duration::hours(12)
(ulid::Ulid::from_string(&user.id)
.unwrap()
.datetime()
.elapsed()
.expect("Time went backwards"))
>= Duration::from_hours(12)
} else {
true
}

View File

@@ -7,62 +7,57 @@ publish = false
[dependencies]
# ID generation
ulid = "1.1.3"
nanoid = "0.4.0"
ulid = { workspace = true }
nanoid = { workspace = true }
# Media processing
webp = "0.3.0"
sha2 = "0.10.8"
jxl-oxide = "0.8.1"
kamadak-exif = "0.5.4"
webp = { workspace = true }
sha2 = { workspace = true }
jxl-oxide = { workspace = true }
kamadak-exif = { workspace = true }
# revolt_little_exif = "0.5.1"
image = { version = "0.25.2" } # avif encode requires dav1d system library: features = ["avif-native"]
thumbhash = "0.1.0"
image = { workspace = true }
thumbhash = { workspace = true }
# File processing
revolt_clamav-client = { version = "0.1.5" }
simdutf8 = { version = "0.1.4", features = ["aarch64_neon"] }
revolt_clamav-client = { workspace = true }
simdutf8 = { workspace = true, features = ["aarch64_neon"] }
# Content type processing
infer = "0.16.0"
ffprobe = "0.4.0"
imagesize = "0.13.0"
infer = { workspace = true }
ffprobe = { workspace = true }
imagesize = { workspace = true }
# Utility
lazy_static = "1.5.0"
moka = { version = "0.12.8", features = ["future"] }
lazy_static = { workspace = true }
moka = { workspace = true, features = ["future"] }
# Serialisation
strum_macros = "0.26.4"
serde_json = "1.0.68"
serde = { version = "1.0", features = ["derive"] }
strum_macros = { workspace = true }
serde_json = { workspace = true }
serde = { workspace = true }
# Async runtime
tokio = { version = "1.0", features = ["full"] }
tokio = { workspace = true, features = ["full"] }
# Logging
tracing = "0.1"
tracing-subscriber = { version = "0.3", features = ["env-filter"] }
tracing = { workspace = true }
tracing-subscriber = { workspace = true }
# Core crates
revolt-files = { version = "0.12.1", path = "../../core/files" }
revolt-config = { version = "0.12.1", path = "../../core/config" }
revolt-database = { version = "0.12.1", path = "../../core/database", features = [
"axum-impl",
] }
revolt-result = { version = "0.12.1", path = "../../core/result", features = [
"utoipa",
"axum",
] }
revolt-ratelimits = { version = "0.12.1", path = "../../core/ratelimits", features = ["axum"] }
revolt-files = { workspace = true }
revolt-config = { workspace = true }
revolt-database = { workspace = true, features = ["axum-impl"] }
revolt-result = { workspace = true, features = ["utoipa", "axum"] }
revolt-ratelimits = { workspace = true, features = ["axum"] }
# Axum / web server
tempfile = "3.12.0"
axum-macros = "0.4.1"
axum_typed_multipart = "0.12.1"
axum = { version = "0.7.5", features = ["multipart"] }
tower-http = { version = "0.5.2", features = ["cors"] }
tempfile = { workspace = true }
axum-macros = { workspace = true }
axum_typed_multipart = { workspace = true }
axum = { workspace = true, features = ["multipart"] }
tower-http = { workspace = true, features = ["cors"] }
# OpenAPI & documentation generation
utoipa-scalar = { version = "0.1.0", features = ["axum"] }
utoipa = { version = "4.2.3", features = ["axum_extras", "ulid"] }
utoipa-scalar = { workspace = true, features = ["axum"] }
utoipa = { workspace = true, features = ["axum_extras", "ulid"] }

View File

@@ -7,43 +7,34 @@ publish = false
[dependencies]
# Serialisation
serde = { version = "1.0", features = ["derive", "rc"] }
serde_json = "1.0.68"
serde = { workspace = true, features = ["rc"] }
serde_json = { workspace = true }
# Async runtime
tokio = { version = "1.0", features = ["full"] }
tokio = { workspace = true, features = [] }
# Web requests
reqwest = { version = "0.12", features = ["json"] }
reqwest = { workspace = true, features = ["json", "query"] }
# Core crates
revolt-config = { version = "0.12.1", path = "../../core/config" }
revolt-models = { version = "0.12.1", path = "../../core/models" }
revolt-result = { version = "0.12.1", path = "../../core/result", features = [
"utoipa",
"axum",
] }
revolt-coalesced = { version = "0.12.1", path = "../../core/coalesced", features = [
"queue",
] }
revolt-database = { version = "0.12.1", path = "../../core/database", features = [
"axum-impl",
] }
revolt-ratelimits = { version = "0.12.1", path = "../../core/ratelimits", features = [
"axum",
] }
revolt-config = { workspace = true }
revolt-models = { workspace = true }
revolt-result = { workspace = true, features = ["utoipa", "axum"] }
revolt-coalesced = { workspace = true, features = ["queue"] }
revolt-database = { workspace = true, features = ["axum-impl"] }
revolt-ratelimits = { workspace = true, features = ["axum"] }
# Axum / web server
axum = { version = "0.7.5" }
axum-extra = { version = "0.9", features = ["typed-header"] }
tower-http = { version = "0.5.2", features = ["cors"] }
axum = { workspace = true }
axum-extra = { workspace = true, features = ["typed-header"] }
tower-http = { workspace = true, features = ["cors"] }
# OpenAPI & documentation generation
utoipa-scalar = { version = "0.1.0", features = ["axum"] }
utoipa = { version = "4.2.3", features = ["axum_extras", "ulid"] }
utoipa-scalar = { workspace = true, features = ["axum"] }
utoipa = { workspace = true, features = ["axum_extras", "ulid"] }
# Logging
tracing = "0.1"
tracing = { workspace = true }
# Utils
lru_time_cache = "0.11.11"
lru_time_cache = { workspace = true }

View File

@@ -7,44 +7,41 @@ publish = false
[dependencies]
# Utility
mime = "0.3.17"
regex = "1.11.0"
tempfile = "3.13.0"
lazy_static = "1.5.0"
moka = { version = "0.12.8", features = ["future"] }
mime = { workspace = true }
regex = { workspace = true }
tempfile = { workspace = true }
lazy_static = { workspace = true }
moka = { workspace = true, features = ["future"] }
# Web scraping
scraper = "0.20.0"
encoding_rs = "0.8.34"
scraper = { workspace = true }
encoding_rs = { workspace = true }
# Serialisation
serde = { version = "1.0", features = ["derive"] }
serde_json = "1.0.68"
serde = { workspace = true }
serde_json = { workspace = true }
# Async runtime
async-recursion = "1.1.1"
tokio = { version = "1.0", features = ["full"] }
async-recursion = { workspace = true }
tokio = { workspace = true, features = [] }
# Web requests
reqwest = { version = "0.12", features = ["json"] }
reqwest = { workspace = true, features = ["json"] }
# Logging
tracing = "0.1"
tracing-subscriber = { version = "0.3", features = ["env-filter"] }
tracing = { workspace = true }
tracing-subscriber = { workspace = true, features = ["env-filter"] }
# Core crates
revolt-config = { version = "0.12.1", path = "../../core/config" }
revolt-models = { version = "0.12.1", path = "../../core/models" }
revolt-result = { version = "0.12.1", path = "../../core/result", features = [
"utoipa",
"axum",
] }
revolt-files = { version = "0.12.1", path = "../../core/files" }
revolt-config = { workspace = true }
revolt-models = { workspace = true }
revolt-result = { workspace = true, features = ["utoipa", "axum"] }
revolt-files = { workspace = true }
# Axum / web server
axum = { version = "0.7.5" }
axum-extra = { version = "0.9", features = ["typed-header"] }
axum = { workspace = true }
axum-extra = { workspace = true, features = ["typed-header"] }
# OpenAPI & documentation generation
utoipa-scalar = { version = "0.1.0", features = ["axum"] }
utoipa = { version = "4.2.3", features = ["axum_extras", "ulid"] }
utoipa-scalar = { workspace = true, features = ["axum"] }
utoipa = { workspace = true, features = ["axum_extras", "ulid"] }

View File

@@ -30,76 +30,21 @@
"path": "crates/core/config/Cargo.toml",
"jsonpath": "$.package.version"
},
{
"type": "toml",
"path": "crates/core/config/Cargo.toml",
"jsonpath": "$.dependencies['revolt-result'].version"
},
{
"type": "toml",
"path": "crates/core/database/Cargo.toml",
"jsonpath": "$.package.version"
},
{
"type": "toml",
"path": "crates/core/database/Cargo.toml",
"jsonpath": "$.dependencies['revolt-config'].version"
},
{
"type": "toml",
"path": "crates/core/database/Cargo.toml",
"jsonpath": "$.dependencies['revolt-result'].version"
},
{
"type": "toml",
"path": "crates/core/database/Cargo.toml",
"jsonpath": "$.dependencies['revolt-models'].version"
},
{
"type": "toml",
"path": "crates/core/database/Cargo.toml",
"jsonpath": "$.dependencies['revolt-presence'].version"
},
{
"type": "toml",
"path": "crates/core/database/Cargo.toml",
"jsonpath": "$.dependencies['revolt-permissions'].version"
},
{
"type": "toml",
"path": "crates/core/database/Cargo.toml",
"jsonpath": "$.dependencies['revolt-parser'].version"
},
{
"type": "toml",
"path": "crates/core/files/Cargo.toml",
"jsonpath": "$.package.version"
},
{
"type": "toml",
"path": "crates/core/files/Cargo.toml",
"jsonpath": "$.dependencies['revolt-config'].version"
},
{
"type": "toml",
"path": "crates/core/files/Cargo.toml",
"jsonpath": "$.dependencies['revolt-result'].version"
},
{
"type": "toml",
"path": "crates/core/models/Cargo.toml",
"jsonpath": "$.package.version"
},
{
"type": "toml",
"path": "crates/core/models/Cargo.toml",
"jsonpath": "$.dependencies['revolt-config'].version"
},
{
"type": "toml",
"path": "crates/core/models/Cargo.toml",
"jsonpath": "$.dependencies['revolt-permissions'].version"
},
{
"type": "toml",
"path": "crates/core/parser/Cargo.toml",
@@ -110,41 +55,16 @@
"path": "crates/core/permissions/Cargo.toml",
"jsonpath": "$.package.version"
},
{
"type": "toml",
"path": "crates/core/permissions/Cargo.toml",
"jsonpath": "$.dependencies['revolt-result'].version"
},
{
"type": "toml",
"path": "crates/core/presence/Cargo.toml",
"jsonpath": "$.package.version"
},
{
"type": "toml",
"path": "crates/core/presence/Cargo.toml",
"jsonpath": "$['dev-dependencies']['revolt-config'].version"
},
{
"type": "toml",
"path": "crates/core/ratelimits/Cargo.toml",
"jsonpath": "$.package.version"
},
{
"type": "toml",
"path": "crates/core/ratelimits/Cargo.toml",
"jsonpath": "$.dependencies['revolt-database'].version"
},
{
"type": "toml",
"path": "crates/core/ratelimits/Cargo.toml",
"jsonpath": "$.dependencies['revolt-result'].version"
},
{
"type": "toml",
"path": "crates/core/ratelimits/Cargo.toml",
"jsonpath": "$.dependencies['revolt-config'].version"
},
{
"type": "toml",
"path": "crates/core/result/Cargo.toml",
@@ -155,61 +75,11 @@
"path": "crates/daemons/crond/Cargo.toml",
"jsonpath": "$.package.version"
},
{
"type": "toml",
"path": "crates/daemons/crond/Cargo.toml",
"jsonpath": "$.dependencies['revolt-database'].version"
},
{
"type": "toml",
"path": "crates/daemons/crond/Cargo.toml",
"jsonpath": "$.dependencies['revolt-result'].version"
},
{
"type": "toml",
"path": "crates/daemons/crond/Cargo.toml",
"jsonpath": "$.dependencies['revolt-config'].version"
},
{
"type": "toml",
"path": "crates/daemons/crond/Cargo.toml",
"jsonpath": "$.dependencies['revolt-files'].version"
},
{
"type": "toml",
"path": "crates/daemons/pushd/Cargo.toml",
"jsonpath": "$.package.version"
},
{
"type": "toml",
"path": "crates/daemons/pushd/Cargo.toml",
"jsonpath": "$.dependencies['revolt-result'].version"
},
{
"type": "toml",
"path": "crates/daemons/pushd/Cargo.toml",
"jsonpath": "$.dependencies['revolt-config'].version"
},
{
"type": "toml",
"path": "crates/daemons/pushd/Cargo.toml",
"jsonpath": "$.dependencies['revolt-database'].version"
},
{
"type": "toml",
"path": "crates/daemons/pushd/Cargo.toml",
"jsonpath": "$.dependencies['revolt-models'].version"
},
{
"type": "toml",
"path": "crates/daemons/pushd/Cargo.toml",
"jsonpath": "$.dependencies['revolt-presence'].version"
},
{
"type": "toml",
"path": "crates/daemons/pushd/Cargo.toml",
"jsonpath": "$.dependencies['revolt-parser'].version"
},
{
"type": "toml",
"path": "crates/daemons/voice-ingress/Cargo.toml",
@@ -220,66 +90,11 @@
"path": "crates/services/autumn/Cargo.toml",
"jsonpath": "$.package.version"
},
{
"type": "toml",
"path": "crates/services/autumn/Cargo.toml",
"jsonpath": "$.dependencies['revolt-files'].version"
},
{
"type": "toml",
"path": "crates/services/autumn/Cargo.toml",
"jsonpath": "$.dependencies['revolt-config'].version"
},
{
"type": "toml",
"path": "crates/services/autumn/Cargo.toml",
"jsonpath": "$.dependencies['revolt-database'].version"
},
{
"type": "toml",
"path": "crates/services/autumn/Cargo.toml",
"jsonpath": "$.dependencies['revolt-result'].version"
},
{
"type": "toml",
"path": "crates/services/autumn/Cargo.toml",
"jsonpath": "$.dependencies['revolt-ratelimits'].version"
},
{
"type": "toml",
"path": "crates/services/gifbox/Cargo.toml",
"jsonpath": "$.package.version"
},
{
"type": "toml",
"path": "crates/services/gifbox/Cargo.toml",
"jsonpath": "$.dependencies['revolt-config'].version"
},
{
"type": "toml",
"path": "crates/services/gifbox/Cargo.toml",
"jsonpath": "$.dependencies['revolt-models'].version"
},
{
"type": "toml",
"path": "crates/services/gifbox/Cargo.toml",
"jsonpath": "$.dependencies['revolt-result'].version"
},
{
"type": "toml",
"path": "crates/services/gifbox/Cargo.toml",
"jsonpath": "$.dependencies['revolt-coalesced'].version"
},
{
"type": "toml",
"path": "crates/services/gifbox/Cargo.toml",
"jsonpath": "$.dependencies['revolt-database'].version"
},
{
"type": "toml",
"path": "crates/services/gifbox/Cargo.toml",
"jsonpath": "$.dependencies['revolt-ratelimits'].version"
},
{
"type": "toml",
"path": "crates/services/january/Cargo.toml",
@@ -287,23 +102,53 @@
},
{
"type": "toml",
"path": "crates/services/january/Cargo.toml",
"jsonpath": "$.dependencies['revolt-config'].version"
"path": "Cargo.toml",
"jsonpath": "$.workspace.dependencies['revolt-coalesced'].version"
},
{
"type": "toml",
"path": "crates/services/january/Cargo.toml",
"jsonpath": "$.dependencies['revolt-models'].version"
"path": "Cargo.toml",
"jsonpath": "$.workspace.dependencies['revolt-config'].version"
},
{
"type": "toml",
"path": "crates/services/january/Cargo.toml",
"jsonpath": "$.dependencies['revolt-result'].version"
"path": "Cargo.toml",
"jsonpath": "$.workspace.dependencies['revolt-database'].version"
},
{
"type": "toml",
"path": "crates/services/january/Cargo.toml",
"jsonpath": "$.dependencies['revolt-files'].version"
"path": "Cargo.toml",
"jsonpath": "$.workspace.dependencies['revolt-files'].version"
},
{
"type": "toml",
"path": "Cargo.toml",
"jsonpath": "$.workspace.dependencies['revolt-models'].version"
},
{
"type": "toml",
"path": "Cargo.toml",
"jsonpath": "$.workspace.dependencies['revolt-parser'].version"
},
{
"type": "toml",
"path": "Cargo.toml",
"jsonpath": "$.workspace.dependencies['revolt-permissions'].version"
},
{
"type": "toml",
"path": "Cargo.toml",
"jsonpath": "$.workspace.dependencies['revolt-presence'].version"
},
{
"type": "toml",
"path": "Cargo.toml",
"jsonpath": "$.workspace.dependencies['revolt-ratelimits'].version"
},
{
"type": "toml",
"path": "Cargo.toml",
"jsonpath": "$.workspace.dependencies['revolt-result'].version"
}
]
}