Your music, beautifully tracked. All yours. (coming soon) teal.fm
teal-fm atproto

Compare changes

Choose any two refs to compare.

Changed files
+646 -415
.github
workflows
apps
amethyst
aqua
lexicons
scripts
services
+23 -10
.github/workflows/ci.yml
··· 37 37 - name: Build Node packages 38 38 run: pnpm build 39 39 40 - - name: Build Rust workspace (x86_64) 40 + - name: Build Rust services (x86_64) 41 41 run: | 42 - cargo build --release --all-features --workspace 42 + cargo build --release --all-features 43 + 44 + - name: Build Rust apps (x86_64) 45 + run: | 46 + cd apps/aqua 47 + cargo build --release --all-features 43 48 44 49 - name: Collect executables (x86_64) 45 50 run: | 46 51 mkdir -p artifacts/x86_64 47 - # Copy all executables from unified workspace 48 - if [ -d "target/release" ]; then 49 - find target/release -maxdepth 1 -type f -executable ! -name "*.d" ! -name "*-*" -exec cp {} artifacts/x86_64/ \; 52 + # Copy service executables 53 + if [ -d "services/target/release" ]; then 54 + find services/target/release -maxdepth 1 -type f -executable ! -name "*.d" ! -name "*-*" -exec cp {} artifacts/x86_64/ \; 55 + fi 56 + # Copy app executables 57 + if [ -d "apps/aqua/target/release" ]; then 58 + find apps/aqua/target/release -maxdepth 1 -type f -executable ! -name "*.d" ! -name "*-*" -exec cp {} artifacts/x86_64/ \; 50 59 fi 51 60 echo "x86_64 executables:" 52 61 ls -la artifacts/x86_64/ || echo "No executables found" ··· 98 107 echo "PKG_CONFIG_ALLOW_CROSS=1" >> $GITHUB_ENV 99 108 echo "CROSS_NO_WARNINGS=0" >> $GITHUB_ENV 100 109 101 - - name: Cross-compile workspace 110 + - name: Cross-compile services 102 111 run: | 103 - cross build --release --all-features --workspace --target ${{ matrix.target }} 112 + cross build --release --all-features --target ${{ matrix.target }} 104 113 105 114 - name: Collect cross-compiled executables 106 115 run: | 107 116 mkdir -p artifacts/${{ matrix.target }} 108 - # Copy all executables from unified workspace 109 - if [ -d "target/${{ matrix.target }}/release" ]; then 110 - find target/${{ matrix.target }}/release -maxdepth 1 -type f -executable ! -name "*.d" ! -name "*-*" -exec cp {} artifacts/${{ matrix.target }}/ \; 117 + # Copy service executables 118 + if [ -d "services/target/${{ matrix.target }}/release" ]; then 119 + find services/target/${{ matrix.target }}/release -maxdepth 1 -type f -executable ! -name "*.d" ! -name "*-*" -exec cp {} artifacts/${{ matrix.target }}/ \; 120 + fi 121 + # Copy app executables 122 + if [ -d "apps/aqua/target/${{ matrix.target }}/release" ]; then 123 + find apps/aqua/target/${{ matrix.target }}/release -maxdepth 1 -type f -executable ! -name "*.d" ! -name "*-*" -exec cp {} artifacts/${{ matrix.target }}/ \; 111 124 fi 112 125 echo "Cross-compiled executables for ${{ matrix.target }}:" 113 126 ls -la artifacts/${{ matrix.target }}/ || echo "No executables found"
-3
.mise.toml
··· 1 - [tools] 2 - node = "24" 3 - pnpm = "10.18"
-59
Cargo.lock
··· 899 899 ] 900 900 901 901 [[package]] 902 - name = "cron" 903 - version = "0.12.1" 904 - source = "registry+https://github.com/rust-lang/crates.io-index" 905 - checksum = "6f8c3e73077b4b4a6ab1ea5047c37c57aee77657bc8ecd6f29b0af082d0b0c07" 906 - dependencies = [ 907 - "chrono", 908 - "nom", 909 - "once_cell", 910 - ] 911 - 912 - [[package]] 913 902 name = "crossbeam-channel" 914 903 version = "0.5.15" 915 904 source = "registry+https://github.com/rust-lang/crates.io-index" ··· 2534 2523 checksum = "51d515d32fb182ee37cda2ccdcb92950d6a3c2893aa280e540671c2cd0f3b1d9" 2535 2524 2536 2525 [[package]] 2537 - name = "num-derive" 2538 - version = "0.3.3" 2539 - source = "registry+https://github.com/rust-lang/crates.io-index" 2540 - checksum = "876a53fff98e03a936a674b29568b0e605f06b29372c2489ff4de23f1949743d" 2541 - dependencies = [ 2542 - "proc-macro2", 2543 - "quote", 2544 - "syn 1.0.109", 2545 - ] 2546 - 2547 - [[package]] 2548 2526 name = "num-integer" 2549 2527 version = "0.1.46" 2550 2528 source = "registry+https://github.com/rust-lang/crates.io-index" ··· 3343 3321 checksum = "28d3b2b1366ec20994f1fd18c3c594f05c5dd4bc44d8bb0c1c632c8d6829481f" 3344 3322 3345 3323 [[package]] 3346 - name = "satellite" 3347 - version = "0.1.0" 3348 - dependencies = [ 3349 - "anyhow", 3350 - "axum", 3351 - "chrono", 3352 - "dotenvy", 3353 - "serde", 3354 - "serde_json", 3355 - "sqlx", 3356 - "tokio", 3357 - "tokio-cron-scheduler", 3358 - "tracing", 3359 - "tracing-subscriber", 3360 - "uuid", 3361 - ] 3362 - 3363 - [[package]] 3364 3324 name = "schannel" 3365 3325 version = "0.1.27" 3366 3326 source = "registry+https://github.com/rust-lang/crates.io-index" ··· 3702 3662 dependencies = [ 3703 3663 "base64 0.22.1", 3704 3664 "bytes", 3705 - "chrono", 3706 3665 "crc", 3707 3666 "crossbeam-queue", 3708 3667 "either", ··· 3782 3741 "bitflags 2.9.1", 3783 3742 "byteorder", 3784 3743 "bytes", 3785 - "chrono", 3786 3744 "crc", 3787 3745 "digest", 3788 3746 "dotenvy", ··· 3826 3784 "base64 0.22.1", 3827 3785 "bitflags 2.9.1", 3828 3786 "byteorder", 3829 - "chrono", 3830 3787 "crc", 3831 3788 "dotenvy", 3832 3789 "etcetera", ··· 3863 3820 checksum = "c2d12fe70b2c1b4401038055f90f151b78208de1f9f89a7dbfd41587a10c3eea" 3864 3821 dependencies = [ 3865 3822 "atoi", 3866 - "chrono", 3867 3823 "flume", 3868 3824 "futures-channel", 3869 3825 "futures-core", ··· 4165 4121 "socket2 0.6.0", 4166 4122 "tokio-macros", 4167 4123 "windows-sys 0.59.0", 4168 - ] 4169 - 4170 - [[package]] 4171 - name = "tokio-cron-scheduler" 4172 - version = "0.10.2" 4173 - source = "registry+https://github.com/rust-lang/crates.io-index" 4174 - checksum = "a4c2e3a88f827f597799cf70a6f673074e62f3fc5ba5993b2873345c618a29af" 4175 - dependencies = [ 4176 - "chrono", 4177 - "cron", 4178 - "num-derive", 4179 - "num-traits", 4180 - "tokio", 4181 - "tracing", 4182 - "uuid", 4183 4124 ] 4184 4125 4185 4126 [[package]]
+1 -2
Cargo.toml
··· 1 1 [workspace] 2 - members = ["apps/aqua", "services/cadet", "services/satellite", "services/types", "tools/teal-cli"] 2 + members = ["apps/aqua", "services/cadet", "tools/teal-cli"] 3 3 default-members = ["services/types"] 4 4 resolver = "2" 5 5 ··· 18 18 "runtime-tokio", 19 19 "postgres", 20 20 "uuid", 21 - "chrono", 22 21 "tls-rustls", 23 22 ] } 24 23 serde = { version = "1.0", features = ["derive"] }
-1
apps/amethyst/.gitignore
··· 7 7 .expo/ 8 8 dist/ 9 9 web-build/ 10 - build/ 11 10 expo-env.d.ts 12 11 13 12 # Native
+6 -8
apps/aqua/package.json
··· 2 2 "name": "@repo/aqua", 3 3 "private": true, 4 4 "scripts": { 5 - "install": ":", 6 - "build": "cargo build --release --manifest-path ../../Cargo.toml -p aqua", 7 - "build:rust": "cargo build --release --manifest-path ../../Cargo.toml -p aqua", 8 - "dev": "cargo watch -x 'run -p aqua'", 9 - "test": "cargo test -p aqua", 10 - "test:rust": "cargo test -p aqua" 11 - }, 12 - "packageManager": "pnpm@10.18.0" 5 + "build": "cargo build --release", 6 + "build:rust": "cargo build --release", 7 + "dev": "cargo watch -x 'run'", 8 + "test": "cargo test", 9 + "test:rust": "cargo test" 10 + } 13 11 }
-1
lexicons/fm.teal.alpha/feed/play.json
··· 19 19 }, 20 20 "trackMbId": { 21 21 "type": "string", 22 - 23 22 "description": "The Musicbrainz ID of the track" 24 23 }, 25 24 "recordingMbId": {
+54
lexicons/fm.teal.alpha/feed/social/defs.json
··· 1 + { 2 + "lexicon": 1, 3 + "id": "fm.teal.alpha.feed.social.defs", 4 + "description": "This lexicon is in a not officially released state. It is subject to change. | Misc. items related to the social feed..", 5 + "defs": { 6 + "trackView": { 7 + "trackName": { 8 + "type": "string", 9 + "minLength": 1, 10 + "maxLength": 256, 11 + "maxGraphemes": 2560, 12 + "description": "The name of the track" 13 + }, 14 + "trackMbId": { 15 + "type": "string", 16 + "description": "The Musicbrainz ID of the track" 17 + }, 18 + "recordingMbId": { 19 + "type": "string", 20 + "description": "The Musicbrainz recording ID of the track" 21 + }, 22 + "artistNames": { 23 + "type": "array", 24 + "items": { 25 + "type": "string", 26 + "minLength": 1, 27 + "maxLength": 256, 28 + "maxGraphemes": 2560 29 + }, 30 + "description": "Array of artist names in order of original appearance. Prefer using 'artists'." 31 + }, 32 + "artistMbIds": { 33 + "type": "array", 34 + "items": { "type": "string" }, 35 + "description": "Array of Musicbrainz artist IDs. Prefer using 'artists'." 36 + }, 37 + "artists": { 38 + "type": "array", 39 + "items": { "type": "ref", "ref": "fm.teal.alpha.feed.defs#artist" }, 40 + "description": "Array of artists in order of original appearance." 41 + }, 42 + "releaseName": { 43 + "type": "string", 44 + "maxLength": 256, 45 + "maxGraphemes": 2560, 46 + "description": "The name of the release/album" 47 + }, 48 + "releaseMbId": { 49 + "type": "string", 50 + "description": "The Musicbrainz release ID" 51 + } 52 + } 53 + } 54 + }
+24
lexicons/fm.teal.alpha/feed/social/like.json
··· 1 + { 2 + "lexicon": 1, 3 + "id": "fm.teal.alpha.feed.social.like", 4 + "description": "This lexicon is in a not officially released state. It is subject to change. | The action of 'Liking' a Teal.fm post.", 5 + "defs": { 6 + "main": { 7 + "type": "record", 8 + "description": "Record containing a like for a teal.fm post.", 9 + "key": "tid", 10 + "record": { 11 + "type": "object", 12 + "required": ["subject", "createdAt"], 13 + "properties": { 14 + "subject": { "type": "ref", "ref": "com.atproto.repo.strongRef" }, 15 + "createdAt": { 16 + "type": "string", 17 + "format": "datetime", 18 + "description": "Client-declared timestamp when this post was originally created." 19 + } 20 + } 21 + } 22 + } 23 + } 24 + }
+30
lexicons/fm.teal.alpha/feed/social/playlist.json
··· 1 + { 2 + "lexicon": 1, 3 + "id": "fm.teal.alpha.feed.social.playlist", 4 + "description": "This lexicon is in a not officially released state. It is subject to change. | A teal.fm playlist, representing a list of tracks.", 5 + "defs": { 6 + "main": { 7 + "type": "record", 8 + "description": "Record containing the playlist metadata.", 9 + "key": "tid", 10 + "record": { 11 + "type": "object", 12 + "required": ["name", "createdAt"], 13 + "properties": { 14 + "name": { 15 + "type": "string", 16 + "description": "Display name for the playlist, required.", 17 + "minLength": 1, 18 + "maxLength": 50 19 + }, 20 + "description": { "type": "string", "maxLength": 5000 }, 21 + "createdAt": { 22 + "type": "string", 23 + "format": "datetime", 24 + "description": "Client-declared timestamp when this playlist was originally created." 25 + } 26 + } 27 + } 28 + } 29 + } 30 + }
+32
lexicons/fm.teal.alpha/feed/social/playlistItem.json
··· 1 + { 2 + "lexicon": 1, 3 + "id": "fm.teal.alpha.feed.social.playlistItem", 4 + "description": "This lexicon is in a not officially released state. It is subject to change. | A teal.fm playlist item.", 5 + "defs": { 6 + "main": { 7 + "type": "record", 8 + "description": "Record containing a playlist item for a teal.fm playlist.", 9 + "key": "tid", 10 + "record": { 11 + "type": "object", 12 + "required": ["subject", "createdAt", "trackName"], 13 + "properties": { 14 + "subject": { "type": "record", "ref": "com.atproto.repo.strongRef" }, 15 + "createdAt": { 16 + "type": "string", 17 + "format": "datetime", 18 + "description": "Client-declared timestamp when this post was originally created." 19 + }, 20 + "track": { 21 + "type": "ref", 22 + "ref": "fm.teal.alpha.feed.social.defs#trackView" 23 + }, 24 + "order": { 25 + "type": "integer", 26 + "description": "The order of the track in the playlist" 27 + } 28 + } 29 + } 30 + } 31 + } 32 + }
+104
lexicons/fm.teal.alpha/feed/social/post.json
··· 1 + { 2 + "lexicon": 1, 3 + "id": "fm.teal.alpha.feed.social.post", 4 + "description": "This lexicon is in a not officially released state. It is subject to change. | Record containing a teal.fm post. Teal.fm posts include a track that is connected to the post, and could have some text. Replies, by default, have the same track as the parent post.", 5 + "defs": { 6 + "main": { 7 + "type": "record", 8 + "description": "Record containing a teal.fm post.", 9 + "key": "tid", 10 + "record": { 11 + "type": "object", 12 + "required": ["text", "createdAt"], 13 + "properties": { 14 + "text": { 15 + "type": "string", 16 + "maxLength": 3000, 17 + "maxGraphemes": 300, 18 + "description": "The primary post content. May be an empty string, if there are embeds." 19 + }, 20 + 21 + "trackName": { 22 + "type": "string", 23 + "minLength": 1, 24 + "maxLength": 256, 25 + "maxGraphemes": 2560, 26 + "description": "The name of the track" 27 + }, 28 + "trackMbId": { 29 + "type": "string", 30 + "description": "The Musicbrainz ID of the track" 31 + }, 32 + "recordingMbId": { 33 + "type": "string", 34 + "description": "The Musicbrainz recording ID of the track" 35 + }, 36 + "duration": { 37 + "type": "integer", 38 + "description": "The duration of the track in seconds" 39 + }, 40 + "artistNames": { 41 + "type": "array", 42 + "items": { 43 + "type": "string", 44 + "minLength": 1, 45 + "maxLength": 256, 46 + "maxGraphemes": 2560 47 + }, 48 + "description": "The names of the artists" 49 + }, 50 + "artistMbIds": { 51 + "type": "array", 52 + "items": { "type": "string" }, 53 + "description": "The Musicbrainz IDs of the artists" 54 + }, 55 + "releaseName": { 56 + "type": "string", 57 + "maxLength": 256, 58 + "maxGraphemes": 2560, 59 + "description": "The name of the release/album" 60 + }, 61 + "releaseMbId": { 62 + "type": "string", 63 + "description": "The Musicbrainz ID of the release/album" 64 + }, 65 + "isrc": { 66 + "type": "string", 67 + "description": "The ISRC code associated with the recording" 68 + }, 69 + "reply": { "type": "ref", "ref": "#replyRef" }, 70 + "facets": { 71 + "type": "array", 72 + "description": "Rich text facets, which may include mentions, links, and other features.", 73 + "items": { "type": "ref", "ref": "fm.teal.alpha.richtext.facet" } 74 + }, 75 + "langs": { 76 + "type": "array", 77 + "description": "Indicates human language of post primary text content.", 78 + "maxLength": 3, 79 + "items": { "type": "string", "format": "language" } 80 + }, 81 + "tags": { 82 + "type": "array", 83 + "description": "Additional hashtags, in addition to any included in post text and facets.", 84 + "maxLength": 8, 85 + "items": { "type": "string", "maxLength": 640, "maxGraphemes": 64 } 86 + }, 87 + "createdAt": { 88 + "type": "string", 89 + "format": "datetime", 90 + "description": "Client-declared timestamp when this post was originally created." 91 + } 92 + } 93 + } 94 + }, 95 + "replyRef": { 96 + "type": "object", 97 + "required": ["root", "parent"], 98 + "properties": { 99 + "root": { "type": "ref", "ref": "com.atproto.repo.strongRef" }, 100 + "parent": { "type": "ref", "ref": "com.atproto.repo.strongRef" } 101 + } 102 + } 103 + } 104 + }
+24
lexicons/fm.teal.alpha/feed/social/repost.json
··· 1 + { 2 + "lexicon": 1, 3 + "id": "fm.teal.alpha.feed.social.repost", 4 + "description": "This lexicon is in a not officially released state. It is subject to change. | The action of 'Reposting' a Teal.fm post.", 5 + "defs": { 6 + "main": { 7 + "type": "record", 8 + "description": "Record containing a repost for a teal.fm post.", 9 + "key": "tid", 10 + "record": { 11 + "type": "object", 12 + "required": ["subject", "createdAt"], 13 + "properties": { 14 + "subject": { "type": "ref", "ref": "com.atproto.repo.strongRef" }, 15 + "createdAt": { 16 + "type": "string", 17 + "format": "datetime", 18 + "description": "Client-declared timestamp when this post was originally created." 19 + } 20 + } 21 + } 22 + } 23 + } 24 + }
+24
lexicons/fm.teal.alpha/richtext/facet.json
··· 1 + { 2 + "lexicon": 1, 3 + "id": "fm.teal.alpha.richtext.facet", 4 + "defs": { 5 + "main": { 6 + "type": "object", 7 + "description": "Annotation of a sub-string within rich text.", 8 + "required": ["index", "features"], 9 + "properties": { 10 + "index": { "type": "ref", "ref": "app.bsky.richtext.facet#byteSlice" }, 11 + "features": { 12 + "type": "array", 13 + "items": { 14 + "type": "union", 15 + "refs": [ 16 + "app.bsky.richtext.facet#mention", 17 + "app.bsky.richtext.facet#link" 18 + ] 19 + } 20 + } 21 + } 22 + } 23 + } 24 + }
+50 -9
scripts/setup-sqlx-offline.sh
··· 1 1 #!/bin/bash 2 2 3 - # Script to verify .sqlx files exist for offline SQLx builds (SQLX_OFFLINE=true) 4 - # With unified workspace, .sqlx only needs to exist at the project root 3 + # Script to copy .sqlx files to all Rust projects that use SQLx 4 + # This is needed for offline SQLx builds (SQLX_OFFLINE=true) 5 5 6 6 set -e 7 7 ··· 12 12 # Source .sqlx directory 13 13 SQLX_SOURCE="$PROJECT_ROOT/.sqlx" 14 14 15 - echo "๐Ÿ”ง Verifying SQLx offline files..." 15 + # List of projects that use SQLx (relative to project root) 16 + SQLX_PROJECTS=( 17 + "apps/aqua" 18 + "services/cadet" 19 + "services/satellite" 20 + ) 21 + 22 + echo "๐Ÿ”ง Setting up SQLx offline files..." 16 23 17 24 # Check if source .sqlx directory exists 18 25 if [ ! -d "$SQLX_SOURCE" ]; then 19 - echo "โŒ .sqlx directory not found at: $SQLX_SOURCE" 20 - echo " Make sure you've run 'cargo sqlx prepare' from the project root first." 26 + echo "โŒ Source .sqlx directory not found at: $SQLX_SOURCE" 27 + echo " Make sure you've run 'cargo sqlx prepare' from the services directory first." 21 28 exit 1 22 29 fi 23 30 24 - query_count=$(ls -1 "$SQLX_SOURCE" | wc -l | tr -d ' ') 25 - echo "โœ… Found .sqlx directory with $query_count query files" 26 - echo "โœ… SQLx offline mode ready!" 31 + # Copy .sqlx files to each project that needs them 32 + for project in "${SQLX_PROJECTS[@]}"; do 33 + project_path="$PROJECT_ROOT/$project" 34 + target_sqlx="$project_path/.sqlx" 35 + 36 + if [ ! -d "$project_path" ]; then 37 + echo "โš ๏ธ Project directory not found: $project_path (skipping)" 38 + continue 39 + fi 40 + 41 + # Check if project actually uses SQLx 42 + if [ ! -f "$project_path/Cargo.toml" ]; then 43 + echo "โš ๏ธ No Cargo.toml found in $project (skipping)" 44 + continue 45 + fi 46 + 47 + if ! grep -q "sqlx" "$project_path/Cargo.toml"; then 48 + echo "โš ๏ธ Project $project doesn't appear to use SQLx (skipping)" 49 + continue 50 + fi 51 + 52 + echo "๐Ÿ“ฆ Copying .sqlx files to $project..." 53 + 54 + # Remove existing .sqlx directory if it exists 55 + if [ -d "$target_sqlx" ]; then 56 + rm -rf "$target_sqlx" 57 + fi 58 + 59 + # Copy the .sqlx directory 60 + cp -r "$SQLX_SOURCE" "$target_sqlx" 61 + 62 + echo " โœ… Copied $(ls -1 "$target_sqlx" | wc -l) query files" 63 + done 64 + 65 + echo "โœ… SQLx offline setup complete!" 27 66 echo "" 28 - echo "Note: If you add new SQL queries or modify existing ones, run 'cargo sqlx prepare' from the project root" 67 + echo "Note: If you add new SQL queries or modify existing ones, you'll need to:" 68 + echo "1. Run 'cargo sqlx prepare' from the services directory" 69 + echo "2. Run this script again to update all project copies"
+209 -303
services/Cargo.lock
··· 84 84 checksum = "7c02d123df017efcdfbd739ef81735b36c5ba83ec3c59c80a9d7ecc718f92e50" 85 85 86 86 [[package]] 87 - name = "async-compression" 88 - version = "0.4.32" 89 - source = "registry+https://github.com/rust-lang/crates.io-index" 90 - checksum = "5a89bce6054c720275ac2432fbba080a66a2106a44a1b804553930ca6909f4e0" 91 - dependencies = [ 92 - "compression-codecs", 93 - "compression-core", 94 - "futures-core", 95 - "pin-project-lite", 96 - "tokio", 97 - ] 98 - 99 - [[package]] 100 87 name = "async-lock" 101 88 version = "3.4.0" 102 89 source = "registry+https://github.com/rust-lang/crates.io-index" ··· 165 152 "atrium-common", 166 153 "atrium-xrpc", 167 154 "chrono", 168 - "http 1.3.1", 155 + "http", 169 156 "ipld-core", 170 157 "langtag", 171 158 "regex", ··· 198 185 source = "registry+https://github.com/rust-lang/crates.io-index" 199 186 checksum = "0216ad50ce34e9ff982e171c3659e65dedaa2ed5ac2994524debdc9a9647ffa8" 200 187 dependencies = [ 201 - "http 1.3.1", 188 + "http", 202 189 "serde", 203 190 "serde_html_form", 204 191 "serde_json", ··· 245 232 "bytes", 246 233 "form_urlencoded", 247 234 "futures-util", 248 - "http 1.3.1", 235 + "http", 249 236 "http-body", 250 237 "http-body-util", 251 238 "hyper", ··· 277 264 dependencies = [ 278 265 "bytes", 279 266 "futures-core", 280 - "http 1.3.1", 267 + "http", 281 268 "http-body", 282 269 "http-body-util", 283 270 "mime", ··· 312 299 313 300 [[package]] 314 301 name = "base64" 315 - version = "0.21.7" 316 - source = "registry+https://github.com/rust-lang/crates.io-index" 317 - checksum = "9d297deb1925b89f2ccc13d7635fa0714f12c87adce1c75356b39ca9b7178567" 318 - 319 - [[package]] 320 - name = "base64" 321 302 version = "0.22.1" 322 303 source = "registry+https://github.com/rust-lang/crates.io-index" 323 304 checksum = "72b3254f16251a8381aa12e40e3c4d2f0199f8c6508fbecb9d91f575e0fbb8c6" ··· 345 326 "proc-macro2", 346 327 "quote", 347 328 "regex", 348 - "rustc-hash 1.1.0", 329 + "rustc-hash", 349 330 "shlex", 350 331 "syn 2.0.104", 351 332 "which", ··· 464 445 "async-trait", 465 446 "atmst", 466 447 "atrium-api", 467 - "base64 0.22.1", 448 + "base64", 468 449 "chrono", 469 450 "cid 0.11.1", 470 451 "dotenvy", ··· 486 467 "sqlx", 487 468 "time", 488 469 "tokio", 489 - "tokio-tungstenite 0.24.0", 470 + "tokio-tungstenite", 490 471 "tracing", 491 472 "tracing-subscriber", 492 473 "types", ··· 528 509 version = "1.0.1" 529 510 source = "registry+https://github.com/rust-lang/crates.io-index" 530 511 checksum = "9555578bc9e57714c812a1f84e4fc5b4d21fcb063490c624de019f7464c91268" 531 - 532 - [[package]] 533 - name = "cfg_aliases" 534 - version = "0.2.1" 535 - source = "registry+https://github.com/rust-lang/crates.io-index" 536 - checksum = "613afe47fcd5fac7ccf1db93babcb082c5994d996f20b8b159f2ad1658eb5724" 537 512 538 513 [[package]] 539 514 name = "chrono" ··· 612 587 ] 613 588 614 589 [[package]] 615 - name = "compression-codecs" 616 - version = "0.4.31" 617 - source = "registry+https://github.com/rust-lang/crates.io-index" 618 - checksum = "ef8a506ec4b81c460798f572caead636d57d3d7e940f998160f52bd254bf2d23" 619 - dependencies = [ 620 - "compression-core", 621 - "flate2", 622 - "memchr", 623 - ] 624 - 625 - [[package]] 626 - name = "compression-core" 627 - version = "0.4.29" 628 - source = "registry+https://github.com/rust-lang/crates.io-index" 629 - checksum = "e47641d3deaf41fb1538ac1f54735925e275eaf3bf4d55c81b137fba797e5cbb" 630 - 631 - [[package]] 632 590 name = "concurrent-queue" 633 591 version = "2.5.0" 634 592 source = "registry+https://github.com/rust-lang/crates.io-index" ··· 709 667 checksum = "19d374276b40fb8bbdee95aef7c7fa6b5316ec764510eb64b8dd0e2ed0d7e7f5" 710 668 711 669 [[package]] 712 - name = "crc32fast" 713 - version = "1.5.0" 714 - source = "registry+https://github.com/rust-lang/crates.io-index" 715 - checksum = "9481c1c90cbf2ac953f07c8d4a58aa3945c425b7185c9154d67a65e4230da511" 716 - dependencies = [ 717 - "cfg-if", 718 - ] 719 - 720 - [[package]] 721 670 name = "cron" 722 671 version = "0.12.1" 723 672 source = "registry+https://github.com/rust-lang/crates.io-index" ··· 977 926 ] 978 927 979 928 [[package]] 929 + name = "encoding_rs" 930 + version = "0.8.35" 931 + source = "registry+https://github.com/rust-lang/crates.io-index" 932 + checksum = "75030f3c4f45dafd7586dd6780965a8c7e8e285a5ecb86713e63a79c5b2766f3" 933 + dependencies = [ 934 + "cfg-if", 935 + ] 936 + 937 + [[package]] 980 938 name = "equivalent" 981 939 version = "1.0.2" 982 940 source = "registry+https://github.com/rust-lang/crates.io-index" ··· 1025 983 ] 1026 984 1027 985 [[package]] 1028 - name = "flate2" 1029 - version = "1.1.2" 986 + name = "fastrand" 987 + version = "2.3.0" 1030 988 source = "registry+https://github.com/rust-lang/crates.io-index" 1031 - checksum = "4a3d7db9596fecd151c5f638c0ee5d5bd487b6e0ea232e5dc96d5250f6f94b1d" 1032 - dependencies = [ 1033 - "crc32fast", 1034 - "miniz_oxide", 1035 - ] 989 + checksum = "37909eebbb50d72f9059c3b6d82c0463f2ff062c9e95845c43a6c9c0355411be" 1036 990 1037 991 [[package]] 1038 992 name = "flume" ··· 1059 1013 checksum = "d9c4f5dac5e15c24eb999c26181a6ca40b39fe946cbe4c263c7209467bc83af2" 1060 1014 1061 1015 [[package]] 1016 + name = "foreign-types" 1017 + version = "0.3.2" 1018 + source = "registry+https://github.com/rust-lang/crates.io-index" 1019 + checksum = "f6f339eb8adc052cd2ca78910fda869aefa38d22d5cb648e6485e4d3fc06f3b1" 1020 + dependencies = [ 1021 + "foreign-types-shared", 1022 + ] 1023 + 1024 + [[package]] 1025 + name = "foreign-types-shared" 1026 + version = "0.1.1" 1027 + source = "registry+https://github.com/rust-lang/crates.io-index" 1028 + checksum = "00b0228411908ca8685dba7fc2cdd70ec9990a6e753e89b6ac91a84c40fbaf4b" 1029 + 1030 + [[package]] 1062 1031 name = "form_urlencoded" 1063 1032 version = "1.2.1" 1064 1033 source = "registry+https://github.com/rust-lang/crates.io-index" ··· 1217 1186 checksum = "26145e563e54f2cadc477553f1ec5ee650b00862f0a58bcd12cbdc5f0ea2d2f4" 1218 1187 dependencies = [ 1219 1188 "cfg-if", 1220 - "js-sys", 1221 1189 "libc", 1222 1190 "r-efi", 1223 1191 "wasi 0.14.2+wasi-0.2.4", 1224 - "wasm-bindgen", 1225 1192 ] 1226 1193 1227 1194 [[package]] ··· 1247 1214 "fnv", 1248 1215 "futures-core", 1249 1216 "futures-sink", 1250 - "http 1.3.1", 1217 + "http", 1251 1218 "indexmap", 1252 1219 "slab", 1253 1220 "tokio", ··· 1322 1289 1323 1290 [[package]] 1324 1291 name = "http" 1325 - version = "0.2.12" 1326 - source = "registry+https://github.com/rust-lang/crates.io-index" 1327 - checksum = "601cbb57e577e2f5ef5be8e7b83f0f63994f25aa94d673e54a92d5c516d101f1" 1328 - dependencies = [ 1329 - "bytes", 1330 - "fnv", 1331 - "itoa", 1332 - ] 1333 - 1334 - [[package]] 1335 - name = "http" 1336 1292 version = "1.3.1" 1337 1293 source = "registry+https://github.com/rust-lang/crates.io-index" 1338 1294 checksum = "f4a85d31aea989eead29a3aaf9e1115a180df8282431156e533de47660892565" ··· 1349 1305 checksum = "1efedce1fb8e6913f23e0c92de8e62cd5b772a67e7b3946df930a62566c93184" 1350 1306 dependencies = [ 1351 1307 "bytes", 1352 - "http 1.3.1", 1308 + "http", 1353 1309 ] 1354 1310 1355 1311 [[package]] ··· 1360 1316 dependencies = [ 1361 1317 "bytes", 1362 1318 "futures-core", 1363 - "http 1.3.1", 1319 + "http", 1364 1320 "http-body", 1365 1321 "pin-project-lite", 1366 1322 ] ··· 1387 1343 "futures-channel", 1388 1344 "futures-util", 1389 1345 "h2", 1390 - "http 1.3.1", 1346 + "http", 1391 1347 "http-body", 1392 1348 "httparse", 1393 1349 "httpdate", ··· 1404 1360 source = "registry+https://github.com/rust-lang/crates.io-index" 1405 1361 checksum = "e3c93eb611681b207e1fe55d5a71ecf91572ec8a6705cdb6857f7d8d5242cf58" 1406 1362 dependencies = [ 1407 - "http 1.3.1", 1363 + "http", 1408 1364 "hyper", 1409 1365 "hyper-util", 1410 - "rustls 0.23.29", 1411 - "rustls-native-certs 0.8.1", 1366 + "rustls", 1367 + "rustls-native-certs", 1412 1368 "rustls-pki-types", 1413 1369 "tokio", 1414 - "tokio-rustls 0.26.2", 1370 + "tokio-rustls", 1415 1371 "tower-service", 1416 - "webpki-roots 1.0.2", 1372 + ] 1373 + 1374 + [[package]] 1375 + name = "hyper-tls" 1376 + version = "0.6.0" 1377 + source = "registry+https://github.com/rust-lang/crates.io-index" 1378 + checksum = "70206fc6890eaca9fde8a0bf71caa2ddfc9fe045ac9e5c70df101a7dbde866e0" 1379 + dependencies = [ 1380 + "bytes", 1381 + "http-body-util", 1382 + "hyper", 1383 + "hyper-util", 1384 + "native-tls", 1385 + "tokio", 1386 + "tokio-native-tls", 1387 + "tower-service", 1417 1388 ] 1418 1389 1419 1390 [[package]] ··· 1422 1393 source = "registry+https://github.com/rust-lang/crates.io-index" 1423 1394 checksum = "7f66d5bd4c6f02bf0542fad85d626775bab9258cf795a4256dcaf3161114d1df" 1424 1395 dependencies = [ 1425 - "base64 0.22.1", 1396 + "base64", 1426 1397 "bytes", 1427 1398 "futures-channel", 1428 1399 "futures-core", 1429 1400 "futures-util", 1430 - "http 1.3.1", 1401 + "http", 1431 1402 "http-body", 1432 1403 "hyper", 1433 1404 "ipnet", ··· 1435 1406 "percent-encoding", 1436 1407 "pin-project-lite", 1437 1408 "socket2 0.5.10", 1409 + "system-configuration", 1438 1410 "tokio", 1439 1411 "tower-service", 1440 1412 "tracing", 1413 + "windows-registry", 1441 1414 ] 1442 1415 1443 1416 [[package]] ··· 1852 1825 checksum = "d26c52dbd32dccf2d10cac7725f8eae5296885fb5703b261f7d0a0739ec807ab" 1853 1826 1854 1827 [[package]] 1828 + name = "linux-raw-sys" 1829 + version = "0.9.4" 1830 + source = "registry+https://github.com/rust-lang/crates.io-index" 1831 + checksum = "cd945864f07fe9f5371a27ad7b52a172b4b499999f1d97574c9fa68373937e12" 1832 + 1833 + [[package]] 1855 1834 name = "litemap" 1856 1835 version = "0.8.0" 1857 1836 source = "registry+https://github.com/rust-lang/crates.io-index" ··· 1896 1875 ] 1897 1876 1898 1877 [[package]] 1899 - name = "lru-slab" 1900 - version = "0.1.2" 1901 - source = "registry+https://github.com/rust-lang/crates.io-index" 1902 - checksum = "112b39cec0b298b6c1999fee3e31427f74f676e4cb9879ed1a121b43661a4154" 1903 - 1904 - [[package]] 1905 1878 name = "matchers" 1906 1879 version = "0.1.0" 1907 1880 source = "registry+https://github.com/rust-lang/crates.io-index" ··· 1958 1931 source = "registry+https://github.com/rust-lang/crates.io-index" 1959 1932 checksum = "dd7399781913e5393588a8d8c6a2867bf85fb38eaf2502fdce465aad2dc6f034" 1960 1933 dependencies = [ 1961 - "base64 0.22.1", 1934 + "base64", 1962 1935 "http-body-util", 1963 1936 "hyper", 1964 1937 "hyper-rustls", ··· 2150 2123 ] 2151 2124 2152 2125 [[package]] 2126 + name = "native-tls" 2127 + version = "0.2.14" 2128 + source = "registry+https://github.com/rust-lang/crates.io-index" 2129 + checksum = "87de3442987e9dbec73158d5c715e7ad9072fda936bb03d19d7fa10e00520f0e" 2130 + dependencies = [ 2131 + "libc", 2132 + "log", 2133 + "openssl", 2134 + "openssl-probe", 2135 + "openssl-sys", 2136 + "schannel", 2137 + "security-framework 2.11.1", 2138 + "security-framework-sys", 2139 + "tempfile", 2140 + ] 2141 + 2142 + [[package]] 2153 2143 name = "nom" 2154 2144 version = "7.1.3" 2155 2145 source = "registry+https://github.com/rust-lang/crates.io-index" ··· 2249 2239 checksum = "42f5e15c9953c5e4ccceeb2e7382a716482c34515315f7b03532b8b4e8393d2d" 2250 2240 2251 2241 [[package]] 2242 + name = "openssl" 2243 + version = "0.10.73" 2244 + source = "registry+https://github.com/rust-lang/crates.io-index" 2245 + checksum = "8505734d46c8ab1e19a1dce3aef597ad87dcb4c37e7188231769bd6bd51cebf8" 2246 + dependencies = [ 2247 + "bitflags 2.9.1", 2248 + "cfg-if", 2249 + "foreign-types", 2250 + "libc", 2251 + "once_cell", 2252 + "openssl-macros", 2253 + "openssl-sys", 2254 + ] 2255 + 2256 + [[package]] 2257 + name = "openssl-macros" 2258 + version = "0.1.1" 2259 + source = "registry+https://github.com/rust-lang/crates.io-index" 2260 + checksum = "a948666b637a0f465e8564c73e89d4dde00d72d4d473cc972f390fc3dcee7d9c" 2261 + dependencies = [ 2262 + "proc-macro2", 2263 + "quote", 2264 + "syn 2.0.104", 2265 + ] 2266 + 2267 + [[package]] 2252 2268 name = "openssl-probe" 2253 2269 version = "0.1.6" 2254 2270 source = "registry+https://github.com/rust-lang/crates.io-index" 2255 2271 checksum = "d05e27ee213611ffe7d6348b942e8f942b37114c00cc03cec254295a4a17852e" 2272 + 2273 + [[package]] 2274 + name = "openssl-sys" 2275 + version = "0.9.109" 2276 + source = "registry+https://github.com/rust-lang/crates.io-index" 2277 + checksum = "90096e2e47630d78b7d1c20952dc621f957103f8bc2c8359ec81290d75238571" 2278 + dependencies = [ 2279 + "cc", 2280 + "libc", 2281 + "pkg-config", 2282 + "vcpkg", 2283 + ] 2256 2284 2257 2285 [[package]] 2258 2286 name = "overload" ··· 2480 2508 ] 2481 2509 2482 2510 [[package]] 2483 - name = "quinn" 2484 - version = "0.11.9" 2485 - source = "registry+https://github.com/rust-lang/crates.io-index" 2486 - checksum = "b9e20a958963c291dc322d98411f541009df2ced7b5a4f2bd52337638cfccf20" 2487 - dependencies = [ 2488 - "bytes", 2489 - "cfg_aliases", 2490 - "pin-project-lite", 2491 - "quinn-proto", 2492 - "quinn-udp", 2493 - "rustc-hash 2.1.1", 2494 - "rustls 0.23.29", 2495 - "socket2 0.5.10", 2496 - "thiserror 2.0.12", 2497 - "tokio", 2498 - "tracing", 2499 - "web-time", 2500 - ] 2501 - 2502 - [[package]] 2503 - name = "quinn-proto" 2504 - version = "0.11.13" 2505 - source = "registry+https://github.com/rust-lang/crates.io-index" 2506 - checksum = "f1906b49b0c3bc04b5fe5d86a77925ae6524a19b816ae38ce1e426255f1d8a31" 2507 - dependencies = [ 2508 - "bytes", 2509 - "getrandom 0.3.3", 2510 - "lru-slab", 2511 - "rand 0.9.1", 2512 - "ring", 2513 - "rustc-hash 2.1.1", 2514 - "rustls 0.23.29", 2515 - "rustls-pki-types", 2516 - "slab", 2517 - "thiserror 2.0.12", 2518 - "tinyvec", 2519 - "tracing", 2520 - "web-time", 2521 - ] 2522 - 2523 - [[package]] 2524 - name = "quinn-udp" 2525 - version = "0.5.14" 2526 - source = "registry+https://github.com/rust-lang/crates.io-index" 2527 - checksum = "addec6a0dcad8a8d96a771f815f0eaf55f9d1805756410b39f5fa81332574cbd" 2528 - dependencies = [ 2529 - "cfg_aliases", 2530 - "libc", 2531 - "once_cell", 2532 - "socket2 0.5.10", 2533 - "tracing", 2534 - "windows-sys 0.60.2", 2535 - ] 2536 - 2537 - [[package]] 2538 2511 name = "quote" 2539 2512 version = "1.0.40" 2540 2513 source = "registry+https://github.com/rust-lang/crates.io-index" ··· 2709 2682 source = "registry+https://github.com/rust-lang/crates.io-index" 2710 2683 checksum = "cbc931937e6ca3a06e3b6c0aa7841849b160a90351d6ab467a8b9b9959767531" 2711 2684 dependencies = [ 2712 - "async-compression", 2713 - "base64 0.22.1", 2685 + "base64", 2714 2686 "bytes", 2687 + "encoding_rs", 2715 2688 "futures-core", 2716 - "futures-util", 2717 - "http 1.3.1", 2689 + "h2", 2690 + "http", 2718 2691 "http-body", 2719 2692 "http-body-util", 2720 2693 "hyper", 2721 2694 "hyper-rustls", 2695 + "hyper-tls", 2722 2696 "hyper-util", 2723 2697 "js-sys", 2724 2698 "log", 2699 + "mime", 2700 + "native-tls", 2725 2701 "percent-encoding", 2726 2702 "pin-project-lite", 2727 - "quinn", 2728 - "rustls 0.23.29", 2729 2703 "rustls-pki-types", 2730 2704 "serde", 2731 2705 "serde_json", 2732 2706 "serde_urlencoded", 2733 2707 "sync_wrapper", 2734 2708 "tokio", 2735 - "tokio-rustls 0.26.2", 2736 - "tokio-util", 2709 + "tokio-native-tls", 2737 2710 "tower", 2738 2711 "tower-http", 2739 2712 "tower-service", 2740 2713 "url", 2741 2714 "wasm-bindgen", 2742 2715 "wasm-bindgen-futures", 2743 - "wasm-streams", 2744 2716 "web-sys", 2745 - "webpki-roots 1.0.2", 2746 2717 ] 2747 2718 2748 2719 [[package]] ··· 2770 2741 2771 2742 [[package]] 2772 2743 name = "rocketman" 2773 - version = "0.2.5" 2774 - source = "registry+https://github.com/rust-lang/crates.io-index" 2775 - checksum = "90cfc4ee9daf6e9d0ee217b9709aa3bd6c921e6926aa15c6ff5ba9162c2c649a" 2744 + version = "0.2.3" 2776 2745 dependencies = [ 2777 2746 "anyhow", 2778 2747 "async-trait", ··· 2780 2749 "derive_builder", 2781 2750 "flume", 2782 2751 "futures-util", 2783 - "metrics 0.24.2", 2752 + "metrics 0.23.1", 2784 2753 "rand 0.8.5", 2785 2754 "serde", 2786 2755 "serde_json", 2787 2756 "tokio", 2788 - "tokio-tungstenite 0.20.1", 2757 + "tokio-tungstenite", 2789 2758 "tracing", 2790 2759 "tracing-subscriber", 2791 2760 "url", ··· 2825 2794 checksum = "08d43f7aa6b08d49f382cde6a7982047c3426db949b1424bc4b7ec9ae12c6ce2" 2826 2795 2827 2796 [[package]] 2828 - name = "rustc-hash" 2829 - version = "2.1.1" 2830 - source = "registry+https://github.com/rust-lang/crates.io-index" 2831 - checksum = "357703d41365b4b27c590e3ed91eabb1b663f07c4c084095e60cbed4362dff0d" 2832 - 2833 - [[package]] 2834 2797 name = "rustc_version" 2835 2798 version = "0.4.1" 2836 2799 source = "registry+https://github.com/rust-lang/crates.io-index" ··· 2848 2811 "bitflags 2.9.1", 2849 2812 "errno", 2850 2813 "libc", 2851 - "linux-raw-sys", 2814 + "linux-raw-sys 0.4.15", 2852 2815 "windows-sys 0.59.0", 2853 2816 ] 2854 2817 2855 2818 [[package]] 2856 - name = "rustls" 2857 - version = "0.21.12" 2819 + name = "rustix" 2820 + version = "1.0.8" 2858 2821 source = "registry+https://github.com/rust-lang/crates.io-index" 2859 - checksum = "3f56a14d1f48b391359b22f731fd4bd7e43c97f3c50eee276f3aa09c94784d3e" 2822 + checksum = "11181fbabf243db407ef8df94a6ce0b2f9a733bd8be4ad02b4eda9602296cac8" 2860 2823 dependencies = [ 2861 - "log", 2862 - "ring", 2863 - "rustls-webpki 0.101.7", 2864 - "sct", 2824 + "bitflags 2.9.1", 2825 + "errno", 2826 + "libc", 2827 + "linux-raw-sys 0.9.4", 2828 + "windows-sys 0.60.2", 2865 2829 ] 2866 2830 2867 2831 [[package]] ··· 2874 2838 "once_cell", 2875 2839 "ring", 2876 2840 "rustls-pki-types", 2877 - "rustls-webpki 0.103.4", 2841 + "rustls-webpki", 2878 2842 "subtle", 2879 2843 "zeroize", 2880 2844 ] 2881 2845 2882 2846 [[package]] 2883 2847 name = "rustls-native-certs" 2884 - version = "0.6.3" 2885 - source = "registry+https://github.com/rust-lang/crates.io-index" 2886 - checksum = "a9aace74cb666635c918e9c12bc0d348266037aa8eb599b5cba565709a8dff00" 2887 - dependencies = [ 2888 - "openssl-probe", 2889 - "rustls-pemfile", 2890 - "schannel", 2891 - "security-framework 2.11.1", 2892 - ] 2893 - 2894 - [[package]] 2895 - name = "rustls-native-certs" 2896 2848 version = "0.8.1" 2897 2849 source = "registry+https://github.com/rust-lang/crates.io-index" 2898 2850 checksum = "7fcff2dd52b58a8d98a70243663a0d234c4e2b79235637849d15913394a247d3" ··· 2904 2856 ] 2905 2857 2906 2858 [[package]] 2907 - name = "rustls-pemfile" 2908 - version = "1.0.4" 2909 - source = "registry+https://github.com/rust-lang/crates.io-index" 2910 - checksum = "1c74cae0a4cf6ccbbf5f359f08efdf8ee7e1dc532573bf0db71968cb56b1448c" 2911 - dependencies = [ 2912 - "base64 0.21.7", 2913 - ] 2914 - 2915 - [[package]] 2916 2859 name = "rustls-pki-types" 2917 2860 version = "1.12.0" 2918 2861 source = "registry+https://github.com/rust-lang/crates.io-index" 2919 2862 checksum = "229a4a4c221013e7e1f1a043678c5cc39fe5171437c88fb47151a21e6f5b5c79" 2920 2863 dependencies = [ 2921 - "web-time", 2922 2864 "zeroize", 2923 2865 ] 2924 2866 2925 2867 [[package]] 2926 2868 name = "rustls-webpki" 2927 - version = "0.101.7" 2928 - source = "registry+https://github.com/rust-lang/crates.io-index" 2929 - checksum = "8b6275d1ee7a1cd780b64aca7726599a1dbc893b1e64144529e55c3c2f745765" 2930 - dependencies = [ 2931 - "ring", 2932 - "untrusted", 2933 - ] 2934 - 2935 - [[package]] 2936 - name = "rustls-webpki" 2937 2869 version = "0.103.4" 2938 2870 source = "registry+https://github.com/rust-lang/crates.io-index" 2939 2871 checksum = "0a17884ae0c1b773f1ccd2bd4a8c72f16da897310a98b0e84bf349ad5ead92fc" ··· 2994 2926 version = "1.2.0" 2995 2927 source = "registry+https://github.com/rust-lang/crates.io-index" 2996 2928 checksum = "94143f37725109f92c262ed2cf5e59bce7498c01bcc1502d7b9afe439a4e9f49" 2997 - 2998 - [[package]] 2999 - name = "sct" 3000 - version = "0.7.1" 3001 - source = "registry+https://github.com/rust-lang/crates.io-index" 3002 - checksum = "da046153aa2352493d6cb7da4b6e5c0c057d8a1d0a9aa8560baffdd945acd414" 3003 - dependencies = [ 3004 - "ring", 3005 - "untrusted", 3006 - ] 3007 2929 3008 2930 [[package]] 3009 2931 name = "security-framework" ··· 3297 3219 source = "registry+https://github.com/rust-lang/crates.io-index" 3298 3220 checksum = "ee6798b1838b6a0f69c007c133b8df5866302197e404e8b6ee8ed3e3a5e68dc6" 3299 3221 dependencies = [ 3300 - "base64 0.22.1", 3222 + "base64", 3301 3223 "bytes", 3302 3224 "chrono", 3303 3225 "crc", ··· 3315 3237 "memchr", 3316 3238 "once_cell", 3317 3239 "percent-encoding", 3318 - "rustls 0.23.29", 3240 + "rustls", 3319 3241 "serde", 3320 3242 "serde_json", 3321 3243 "sha2", ··· 3375 3297 checksum = "aa003f0038df784eb8fecbbac13affe3da23b45194bd57dba231c8f48199c526" 3376 3298 dependencies = [ 3377 3299 "atoi", 3378 - "base64 0.22.1", 3300 + "base64", 3379 3301 "bitflags 2.9.1", 3380 3302 "byteorder", 3381 3303 "bytes", ··· 3420 3342 checksum = "db58fcd5a53cf07c184b154801ff91347e4c30d17a3562a635ff028ad5deda46" 3421 3343 dependencies = [ 3422 3344 "atoi", 3423 - "base64 0.22.1", 3345 + "base64", 3424 3346 "bitflags 2.9.1", 3425 3347 "byteorder", 3426 3348 "chrono", ··· 3577 3499 ] 3578 3500 3579 3501 [[package]] 3502 + name = "system-configuration" 3503 + version = "0.6.1" 3504 + source = "registry+https://github.com/rust-lang/crates.io-index" 3505 + checksum = "3c879d448e9d986b661742763247d3693ed13609438cf3d006f51f5368a5ba6b" 3506 + dependencies = [ 3507 + "bitflags 2.9.1", 3508 + "core-foundation 0.9.4", 3509 + "system-configuration-sys", 3510 + ] 3511 + 3512 + [[package]] 3513 + name = "system-configuration-sys" 3514 + version = "0.6.0" 3515 + source = "registry+https://github.com/rust-lang/crates.io-index" 3516 + checksum = "8e1d1b10ced5ca923a1fcb8d03e96b8d3268065d724548c0211415ff6ac6bac4" 3517 + dependencies = [ 3518 + "core-foundation-sys", 3519 + "libc", 3520 + ] 3521 + 3522 + [[package]] 3580 3523 name = "tagptr" 3581 3524 version = "0.2.0" 3582 3525 source = "registry+https://github.com/rust-lang/crates.io-index" 3583 3526 checksum = "7b2093cf4c8eb1e67749a6762251bc9cd836b6fc171623bd0a9d324d37af2417" 3527 + 3528 + [[package]] 3529 + name = "tempfile" 3530 + version = "3.20.0" 3531 + source = "registry+https://github.com/rust-lang/crates.io-index" 3532 + checksum = "e8a64e3985349f2441a1a9ef0b853f869006c3855f2cda6862a94d26ebb9d6a1" 3533 + dependencies = [ 3534 + "fastrand", 3535 + "getrandom 0.3.3", 3536 + "once_cell", 3537 + "rustix 1.0.8", 3538 + "windows-sys 0.59.0", 3539 + ] 3584 3540 3585 3541 [[package]] 3586 3542 name = "thiserror" ··· 3734 3690 ] 3735 3691 3736 3692 [[package]] 3737 - name = "tokio-retry" 3738 - version = "0.3.0" 3693 + name = "tokio-native-tls" 3694 + version = "0.3.1" 3739 3695 source = "registry+https://github.com/rust-lang/crates.io-index" 3740 - checksum = "7f57eb36ecbe0fc510036adff84824dd3c24bb781e21bfa67b69d556aa85214f" 3696 + checksum = "bbae76ab933c85776efabc971569dd6119c580d8f5d448769dec1764bf796ef2" 3741 3697 dependencies = [ 3742 - "pin-project", 3743 - "rand 0.8.5", 3698 + "native-tls", 3744 3699 "tokio", 3745 3700 ] 3746 3701 3747 3702 [[package]] 3748 - name = "tokio-rustls" 3749 - version = "0.24.1" 3703 + name = "tokio-retry" 3704 + version = "0.3.0" 3750 3705 source = "registry+https://github.com/rust-lang/crates.io-index" 3751 - checksum = "c28327cf380ac148141087fbfb9de9d7bd4e84ab5d2c28fbc911d753de8a7081" 3706 + checksum = "7f57eb36ecbe0fc510036adff84824dd3c24bb781e21bfa67b69d556aa85214f" 3752 3707 dependencies = [ 3753 - "rustls 0.21.12", 3708 + "pin-project", 3709 + "rand 0.8.5", 3754 3710 "tokio", 3755 3711 ] 3756 3712 ··· 3760 3716 source = "registry+https://github.com/rust-lang/crates.io-index" 3761 3717 checksum = "8e727b36a1a0e8b74c376ac2211e40c2c8af09fb4013c60d910495810f008e9b" 3762 3718 dependencies = [ 3763 - "rustls 0.23.29", 3719 + "rustls", 3764 3720 "tokio", 3765 3721 ] 3766 3722 ··· 3777 3733 3778 3734 [[package]] 3779 3735 name = "tokio-tungstenite" 3780 - version = "0.20.1" 3781 - source = "registry+https://github.com/rust-lang/crates.io-index" 3782 - checksum = "212d5dcb2a1ce06d81107c3d0ffa3121fe974b73f068c8282cb1c32328113b6c" 3783 - dependencies = [ 3784 - "futures-util", 3785 - "log", 3786 - "rustls 0.21.12", 3787 - "rustls-native-certs 0.6.3", 3788 - "tokio", 3789 - "tokio-rustls 0.24.1", 3790 - "tungstenite 0.20.1", 3791 - "webpki-roots 0.25.4", 3792 - ] 3793 - 3794 - [[package]] 3795 - name = "tokio-tungstenite" 3796 3736 version = "0.24.0" 3797 3737 source = "registry+https://github.com/rust-lang/crates.io-index" 3798 3738 checksum = "edc5f74e248dc973e0dbb7b74c7e0d6fcc301c694ff50049504004ef4d0cdcd9" 3799 3739 dependencies = [ 3800 3740 "futures-util", 3801 3741 "log", 3802 - "rustls 0.23.29", 3803 - "rustls-pki-types", 3804 3742 "tokio", 3805 - "tokio-rustls 0.26.2", 3806 - "tungstenite 0.24.0", 3807 - "webpki-roots 0.26.11", 3743 + "tungstenite", 3808 3744 ] 3809 3745 3810 3746 [[package]] ··· 3871 3807 "bitflags 2.9.1", 3872 3808 "bytes", 3873 3809 "futures-util", 3874 - "http 1.3.1", 3810 + "http", 3875 3811 "http-body", 3876 3812 "iri-string", 3877 3813 "pin-project-lite", ··· 3973 3909 3974 3910 [[package]] 3975 3911 name = "tungstenite" 3976 - version = "0.20.1" 3977 - source = "registry+https://github.com/rust-lang/crates.io-index" 3978 - checksum = "9e3dac10fd62eaf6617d3a904ae222845979aec67c615d1c842b4002c7666fb9" 3979 - dependencies = [ 3980 - "byteorder", 3981 - "bytes", 3982 - "data-encoding", 3983 - "http 0.2.12", 3984 - "httparse", 3985 - "log", 3986 - "rand 0.8.5", 3987 - "rustls 0.21.12", 3988 - "sha1", 3989 - "thiserror 1.0.69", 3990 - "url", 3991 - "utf-8", 3992 - ] 3993 - 3994 - [[package]] 3995 - name = "tungstenite" 3996 3912 version = "0.24.0" 3997 3913 source = "registry+https://github.com/rust-lang/crates.io-index" 3998 3914 checksum = "18e5b8366ee7a95b16d32197d0b2604b43a0be89dc5fac9f8e96ccafbaedda8a" ··· 4000 3916 "byteorder", 4001 3917 "bytes", 4002 3918 "data-encoding", 4003 - "http 1.3.1", 3919 + "http", 4004 3920 "httparse", 4005 3921 "log", 4006 3922 "rand 0.8.5", 4007 - "rustls 0.23.29", 4008 - "rustls-pki-types", 4009 3923 "sha1", 4010 3924 "thiserror 1.0.69", 4011 3925 "utf-8", ··· 4024 3938 "atrium-api", 4025 3939 "atrium-xrpc", 4026 3940 "chrono", 4027 - "http 1.3.1", 3941 + "http", 4028 3942 "ipld-core", 4029 3943 "langtag", 4030 3944 "regex", ··· 4241 4155 ] 4242 4156 4243 4157 [[package]] 4244 - name = "wasm-streams" 4245 - version = "0.4.2" 4246 - source = "registry+https://github.com/rust-lang/crates.io-index" 4247 - checksum = "15053d8d85c7eccdbefef60f06769760a563c7f0a9d6902a13d35c7800b0ad65" 4248 - dependencies = [ 4249 - "futures-util", 4250 - "js-sys", 4251 - "wasm-bindgen", 4252 - "wasm-bindgen-futures", 4253 - "web-sys", 4254 - ] 4255 - 4256 - [[package]] 4257 4158 name = "web-sys" 4258 4159 version = "0.3.77" 4259 4160 source = "registry+https://github.com/rust-lang/crates.io-index" ··· 4272 4173 "js-sys", 4273 4174 "wasm-bindgen", 4274 4175 ] 4275 - 4276 - [[package]] 4277 - name = "webpki-roots" 4278 - version = "0.25.4" 4279 - source = "registry+https://github.com/rust-lang/crates.io-index" 4280 - checksum = "5f20c57d8d7db6d3b86154206ae5d8fba62dd39573114de97c2cb0578251f8e1" 4281 4176 4282 4177 [[package]] 4283 4178 name = "webpki-roots" ··· 4306 4201 "either", 4307 4202 "home", 4308 4203 "once_cell", 4309 - "rustix", 4204 + "rustix 0.38.44", 4310 4205 ] 4311 4206 4312 4207 [[package]] ··· 4423 4318 dependencies = [ 4424 4319 "windows-core", 4425 4320 "windows-link", 4321 + ] 4322 + 4323 + [[package]] 4324 + name = "windows-registry" 4325 + version = "0.5.3" 4326 + source = "registry+https://github.com/rust-lang/crates.io-index" 4327 + checksum = "5b8a9ed28765efc97bbc954883f4e6796c33a06546ebafacbabee9696967499e" 4328 + dependencies = [ 4329 + "windows-link", 4330 + "windows-result", 4331 + "windows-strings", 4426 4332 ] 4427 4333 4428 4334 [[package]]
+47
services/Cargo.toml
··· 1 + [workspace] 2 + members = ["cadet", "satellite", "types"] 3 + resolver = "2" 4 + 5 + [workspace.dependencies] 6 + # Shared dependencies 7 + tokio = { version = "1.0", features = ["rt-multi-thread", "macros", "time"] } 8 + axum = { version = "0.8", features = ["macros"] } 9 + tower-http = { version = "0.6", features = ["cors"] } 10 + sqlx = { version = "0.8", features = [ 11 + "runtime-tokio", 12 + "postgres", 13 + "uuid", 14 + "chrono", 15 + "tls-rustls", 16 + ] } 17 + serde = { version = "1.0", features = ["derive"] } 18 + anyhow = "1.0" 19 + serde_json = "1.0" 20 + tracing = "0.1" 21 + tracing-subscriber = "0.3" 22 + metrics = "0.23" 23 + reqwest.workspace = true 24 + url = "2.5" 25 + rand = "0.8" 26 + flume = "0.11" 27 + async-trait = "0.1" 28 + time = "0.3" 29 + dotenvy = "0.15" 30 + tokio-tungstenite.workspace = true 31 + atrium-api = "0.25" 32 + chrono = { version = "0.4", features = ["serde"] } 33 + uuid = { version = "1.0", features = ["v4", "serde"] } 34 + types = { path = "types" } 35 + rocketman = "0.2.5" 36 + 37 + # CAR and IPLD dependencies 38 + iroh-car = "0.4" 39 + libipld = { version = "0.16", features = ["dag-cbor", "dag-json"] } 40 + cid = "0.11" 41 + base64 = "0.22" 42 + 43 + # Redis for job queues and caching 44 + redis = { version = "0.24", features = ["tokio-comp", "connection-manager"] } 45 + 46 + # Install sqlx-cli globally for migrations 47 + # Run: cargo install sqlx-cli --features postgres
+3
services/cadet/Dockerfile
··· 68 68 # Force SQLx to use offline mode with workspace cache 69 69 ENV SQLX_OFFLINE=true 70 70 71 + # copy sqlx in 72 + COPY ./.sqlx ./services/cadet/.sqlx 73 + 71 74 # Debug platform detection and run build 72 75 RUN echo "DEBUG Before target.sh: TARGETPLATFORM=$TARGETPLATFORM TARGETARCH=$TARGETARCH" && \ 73 76 . ./target.sh && \
+7 -9
services/cadet/package.json
··· 2 2 "name": "@repo/cadet", 3 3 "private": true, 4 4 "scripts": { 5 - "install": ":", 6 - "build": "cargo build --release --manifest-path ../../Cargo.toml -p cadet", 7 - "build:rust": "cargo build --release --manifest-path ../../Cargo.toml -p cadet", 8 - "dev": "cargo watch -x 'run -p cadet'", 9 - "test": "cargo test -p cadet", 10 - "test:rust": "cargo test -p cadet" 11 - }, 12 - "packageManager": "pnpm@10.18.0" 13 - } 5 + "build": "cargo build --release", 6 + "build:rust": "cargo build --release", 7 + "dev": "cargo watch -x 'run'", 8 + "test": "cargo test", 9 + "test:rust": "cargo test" 10 + } 11 + }
+7 -9
services/satellite/package.json
··· 2 2 "name": "@repo/satellite", 3 3 "private": true, 4 4 "scripts": { 5 - "install": ":", 6 - "build": "cargo build --release --manifest-path ../../Cargo.toml -p satellite", 7 - "build:rust": "cargo build --release --manifest-path ../../Cargo.toml -p satellite", 8 - "dev": "cargo watch -x 'run -p satellite'", 9 - "test": "cargo test -p satellite", 10 - "test:rust": "cargo test -p satellite" 11 - }, 12 - "packageManager": "pnpm@10.18.0" 13 - } 5 + "build": "cargo build --release", 6 + "build:rust": "cargo build --release", 7 + "dev": "cargo watch -x 'run'", 8 + "test": "cargo test", 9 + "test:rust": "cargo test" 10 + } 11 + }
+1 -1
turbo.json
··· 10 10 }, 11 11 "build:rust": { 12 12 "dependsOn": ["^build"], 13 - "outputs": ["../target/**", "./target/**"] 13 + "outputs": ["../target/**"] 14 14 }, 15 15 "check-types": { 16 16 "dependsOn": ["^check-types"]