Deployment and lifecycle management for Nix
0
fork

Configure Feed

Select the types of activity you want to include in your feed.

client/server: initial channels poc

+947 -159
+48
.vscode/launch.json
··· 1 + { 2 + // Use IntelliSense to learn about possible attributes. 3 + // Hover to view descriptions of existing attributes. 4 + // For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387 5 + "version": "0.2.0", 6 + "configurations": [ 7 + { 8 + "type": "lldb", 9 + "request": "launch", 10 + "name": "Debug executable 'sower'", 11 + "cargo": { 12 + "args": [ 13 + "build", 14 + "--bin=sower", 15 + "--package=sower" 16 + ], 17 + "filter": { 18 + "name": "sower", 19 + "kind": "bin" 20 + } 21 + }, 22 + "args": [ 23 + "tree", 24 + "daemon" 25 + ], 26 + "cwd": "${workspaceFolder}" 27 + }, 28 + { 29 + "type": "lldb", 30 + "request": "launch", 31 + "name": "Debug unit tests in executable 'sower'", 32 + "cargo": { 33 + "args": [ 34 + "test", 35 + "--no-run", 36 + "--bin=sower", 37 + "--package=sower" 38 + ], 39 + "filter": { 40 + "name": "sower", 41 + "kind": "bin" 42 + } 43 + }, 44 + "args": [], 45 + "cwd": "${workspaceFolder}" 46 + } 47 + ] 48 + }
+716 -114
Cargo.lock
··· 19 19 20 20 [[package]] 21 21 name = "anstream" 22 - version = "0.6.13" 22 + version = "0.6.14" 23 23 source = "registry+https://github.com/rust-lang/crates.io-index" 24 - checksum = "d96bd03f33fe50a863e394ee9718a706f988b9079b20c3784fb726e7678b62fb" 24 + checksum = "418c75fa768af9c03be99d17643f93f79bbba589895012a80e3452a19ddda15b" 25 25 dependencies = [ 26 26 "anstyle", 27 27 "anstyle-parse", 28 28 "anstyle-query", 29 29 "anstyle-wincon", 30 30 "colorchoice", 31 + "is_terminal_polyfill", 31 32 "utf8parse", 32 33 ] 33 34 34 35 [[package]] 35 36 name = "anstyle" 36 - version = "1.0.6" 37 + version = "1.0.7" 37 38 source = "registry+https://github.com/rust-lang/crates.io-index" 38 - checksum = "8901269c6307e8d93993578286ac0edf7f195079ffff5ebdeea6a59ffb7e36bc" 39 + checksum = "038dfcf04a5feb68e9c60b21c9625a54c2c0616e79b72b0fd87075a056ae1d1b" 39 40 40 41 [[package]] 41 42 name = "anstyle-parse" 42 - version = "0.2.3" 43 + version = "0.2.4" 43 44 source = "registry+https://github.com/rust-lang/crates.io-index" 44 - checksum = "c75ac65da39e5fe5ab759307499ddad880d724eed2f6ce5b5e8a26f4f387928c" 45 + checksum = "c03a11a9034d92058ceb6ee011ce58af4a9bf61491aa7e1e59ecd24bd40d22d4" 45 46 dependencies = [ 46 47 "utf8parse", 47 48 ] 48 49 49 50 [[package]] 50 51 name = "anstyle-query" 51 - version = "1.0.2" 52 + version = "1.0.3" 52 53 source = "registry+https://github.com/rust-lang/crates.io-index" 53 - checksum = "e28923312444cdd728e4738b3f9c9cac739500909bb3d3c94b43551b16517648" 54 + checksum = "a64c907d4e79225ac72e2a354c9ce84d50ebb4586dee56c82b3ee73004f537f5" 54 55 dependencies = [ 55 56 "windows-sys 0.52.0", 56 57 ] 57 58 58 59 [[package]] 59 60 name = "anstyle-wincon" 60 - version = "3.0.2" 61 + version = "3.0.3" 61 62 source = "registry+https://github.com/rust-lang/crates.io-index" 62 - checksum = "1cd54b81ec8d6180e24654d0b371ad22fc3dd083b6ff8ba325b72e00c87660a7" 63 + checksum = "61a38449feb7068f52bb06c12759005cf459ee52bb4adc1d5a7c4322d716fb19" 63 64 dependencies = [ 64 65 "anstyle", 65 66 "windows-sys 0.52.0", 66 67 ] 68 + 69 + [[package]] 70 + name = "anyhow" 71 + version = "1.0.83" 72 + source = "registry+https://github.com/rust-lang/crates.io-index" 73 + checksum = "25bdb32cbbdce2b519a9cd7df3a678443100e265d5e25ca763b7572a5104f5f3" 74 + 75 + [[package]] 76 + name = "arc-swap" 77 + version = "1.7.1" 78 + source = "registry+https://github.com/rust-lang/crates.io-index" 79 + checksum = "69f7f8c3906b62b754cd5326047894316021dcfe5a194c8ea52bdd94934a3457" 80 + 81 + [[package]] 82 + name = "async-compat" 83 + version = "0.2.3" 84 + source = "registry+https://github.com/rust-lang/crates.io-index" 85 + checksum = "f68a707c1feb095d8c07f8a65b9f506b117d30af431cab89374357de7c11461b" 86 + dependencies = [ 87 + "futures-core", 88 + "futures-io", 89 + "once_cell", 90 + "pin-project-lite", 91 + "tokio", 92 + ] 93 + 94 + [[package]] 95 + name = "atomic-take" 96 + version = "1.1.0" 97 + source = "registry+https://github.com/rust-lang/crates.io-index" 98 + checksum = "a8ab6b55fe97976e46f91ddbed8d147d966475dc29b2032757ba47e02376fbc3" 67 99 68 100 [[package]] 69 101 name = "autocfg" 70 - version = "1.2.0" 102 + version = "1.3.0" 71 103 source = "registry+https://github.com/rust-lang/crates.io-index" 72 - checksum = "f1fdabc7756949593fe60f30ec81974b613357de856987752631dea1e3394c80" 104 + checksum = "0c4b4d0bd25bd0b74681c0ad21497610ce1b7c91b1022cd21c80c6fbdd9476b0" 73 105 74 106 [[package]] 75 107 name = "backtrace" ··· 93 125 checksum = "9d297deb1925b89f2ccc13d7635fa0714f12c87adce1c75356b39ca9b7178567" 94 126 95 127 [[package]] 128 + name = "base64" 129 + version = "0.22.1" 130 + source = "registry+https://github.com/rust-lang/crates.io-index" 131 + checksum = "72b3254f16251a8381aa12e40e3c4d2f0199f8c6508fbecb9d91f575e0fbb8c6" 132 + 133 + [[package]] 134 + name = "bincode" 135 + version = "1.3.3" 136 + source = "registry+https://github.com/rust-lang/crates.io-index" 137 + checksum = "b1f45e9417d87227c7a56d22e471c6206462cba514c7590c09aff4cf6d1ddcad" 138 + dependencies = [ 139 + "serde", 140 + ] 141 + 142 + [[package]] 96 143 name = "bitflags" 97 144 version = "1.3.2" 98 145 source = "registry+https://github.com/rust-lang/crates.io-index" ··· 105 152 checksum = "cf4b9d6a944f767f8e5e0db018570623c85f3d925ac718db4e06d0187adb21c1" 106 153 107 154 [[package]] 155 + name = "block-buffer" 156 + version = "0.10.4" 157 + source = "registry+https://github.com/rust-lang/crates.io-index" 158 + checksum = "3078c7629b62d3f0439517fa394996acacc5cbc91c5a20d8c658e77abd503a71" 159 + dependencies = [ 160 + "generic-array", 161 + ] 162 + 163 + [[package]] 108 164 name = "bumpalo" 109 - version = "3.15.4" 165 + version = "3.16.0" 110 166 source = "registry+https://github.com/rust-lang/crates.io-index" 111 - checksum = "7ff69b9dd49fd426c69a0db9fc04dd934cdb6645ff000864d98f7e2af8830eaa" 167 + checksum = "79296716171880943b8470b5f8d03aa55eb2e645a4874bdbb28adb49162e012c" 168 + 169 + [[package]] 170 + name = "byteorder" 171 + version = "1.5.0" 172 + source = "registry+https://github.com/rust-lang/crates.io-index" 173 + checksum = "1fd0f2584146f6f2ef48085050886acf353beff7305ebd1ae69500e27c67f64b" 112 174 113 175 [[package]] 114 176 name = "bytes" ··· 117 179 checksum = "514de17de45fdb8dc022b1a7975556c53c86f9f0aa5f534b98977b171857c2c9" 118 180 119 181 [[package]] 182 + name = "camino" 183 + version = "1.1.6" 184 + source = "registry+https://github.com/rust-lang/crates.io-index" 185 + checksum = "c59e92b5a388f549b863a7bea62612c09f24c8393560709a54558a9abdfb3b9c" 186 + 187 + [[package]] 120 188 name = "cc" 121 - version = "1.0.90" 189 + version = "1.0.97" 122 190 source = "registry+https://github.com/rust-lang/crates.io-index" 123 - checksum = "8cd6604a82acf3039f1144f54b8eb34e91ffba622051189e71b781822d5ee1f5" 191 + checksum = "099a5357d84c4c61eb35fc8eafa9a79a902c2f76911e5747ced4e032edd8d9b4" 124 192 125 193 [[package]] 126 194 name = "cfg-if" ··· 176 244 177 245 [[package]] 178 246 name = "colorchoice" 179 - version = "1.0.0" 247 + version = "1.0.1" 180 248 source = "registry+https://github.com/rust-lang/crates.io-index" 181 - checksum = "acbf1af155f9b9ef647e42cdc158db4b64a1b61f743629225fde6f3e0be2a7c7" 249 + checksum = "0b6a852b24ab71dffc585bcb46eaf7959d175cb865a7152e35b348d1b2960422" 182 250 183 251 [[package]] 184 252 name = "core-foundation" ··· 197 265 checksum = "06ea2b9bc92be3c2baa9334a323ebca2d6f074ff852cd1d7b11064035cd3868f" 198 266 199 267 [[package]] 268 + name = "cpufeatures" 269 + version = "0.2.12" 270 + source = "registry+https://github.com/rust-lang/crates.io-index" 271 + checksum = "53fe5e26ff1b7aef8bca9c6080520cfb8d9333c7568e1829cef191a9723e5504" 272 + dependencies = [ 273 + "libc", 274 + ] 275 + 276 + [[package]] 277 + name = "crypto-common" 278 + version = "0.1.6" 279 + source = "registry+https://github.com/rust-lang/crates.io-index" 280 + checksum = "1bfb12502f3fc46cca1bb51ac28df9d618d813cdc3d2f25b9fe775a34af26bb3" 281 + dependencies = [ 282 + "generic-array", 283 + "typenum", 284 + ] 285 + 286 + [[package]] 287 + name = "data-encoding" 288 + version = "2.6.0" 289 + source = "registry+https://github.com/rust-lang/crates.io-index" 290 + checksum = "e8566979429cf69b49a5c740c60791108e86440e8be149bbea4fe54d2c32d6e2" 291 + 292 + [[package]] 293 + name = "digest" 294 + version = "0.10.7" 295 + source = "registry+https://github.com/rust-lang/crates.io-index" 296 + checksum = "9ed9a281f7bc9b7576e61468ba615a66a5c8cfdff42420a70aa82701a3b1e292" 297 + dependencies = [ 298 + "block-buffer", 299 + "crypto-common", 300 + ] 301 + 302 + [[package]] 200 303 name = "encoding_rs" 201 - version = "0.8.33" 304 + version = "0.8.34" 202 305 source = "registry+https://github.com/rust-lang/crates.io-index" 203 - checksum = "7268b386296a025e474d5140678f75d6de9493ae55a5d709eeb9dd08149945e1" 306 + checksum = "b45de904aa0b010bce2ab45264d0631681847fa7b6f2eaa7dab7619943bc4f59" 204 307 dependencies = [ 205 308 "cfg-if", 206 309 ] ··· 212 315 checksum = "5443807d6dff69373d433ab9ef5378ad8df50ca6298caf15de6e52e24aaf54d5" 213 316 214 317 [[package]] 318 + name = "flexstr" 319 + version = "0.9.2" 320 + source = "registry+https://github.com/rust-lang/crates.io-index" 321 + checksum = "4d50aef14619d336a54fca5a592d952eb39037b1a1e7e6afd9f91c892ac7ef65" 322 + dependencies = [ 323 + "serde", 324 + "static_assertions", 325 + ] 326 + 327 + [[package]] 215 328 name = "fnv" 216 329 version = "1.0.7" 217 330 source = "registry+https://github.com/rust-lang/crates.io-index" ··· 227 340 ] 228 341 229 342 [[package]] 343 + name = "fs-err" 344 + version = "2.11.0" 345 + source = "registry+https://github.com/rust-lang/crates.io-index" 346 + checksum = "88a41f105fe1d5b6b34b2055e3dc59bb79b46b48b2040b9e6c7b4b5de097aa41" 347 + dependencies = [ 348 + "autocfg", 349 + ] 350 + 351 + [[package]] 352 + name = "futures" 353 + version = "0.3.30" 354 + source = "registry+https://github.com/rust-lang/crates.io-index" 355 + checksum = "645c6916888f6cb6350d2550b80fb63e734897a8498abe35cfb732b6487804b0" 356 + dependencies = [ 357 + "futures-channel", 358 + "futures-core", 359 + "futures-executor", 360 + "futures-io", 361 + "futures-sink", 362 + "futures-task", 363 + "futures-util", 364 + ] 365 + 366 + [[package]] 230 367 name = "futures-channel" 231 368 version = "0.3.30" 232 369 source = "registry+https://github.com/rust-lang/crates.io-index" 233 370 checksum = "eac8f7d7865dcb88bd4373ab671c8cf4508703796caa2b1985a9ca867b3fcb78" 234 371 dependencies = [ 235 372 "futures-core", 373 + "futures-sink", 236 374 ] 237 375 238 376 [[package]] ··· 242 380 checksum = "dfc6580bb841c5a68e9ef15c77ccc837b40a7504914d52e47b8b0e9bbda25a1d" 243 381 244 382 [[package]] 383 + name = "futures-executor" 384 + version = "0.3.30" 385 + source = "registry+https://github.com/rust-lang/crates.io-index" 386 + checksum = "a576fc72ae164fca6b9db127eaa9a9dda0d61316034f33a0a0d4eda41f02b01d" 387 + dependencies = [ 388 + "futures-core", 389 + "futures-task", 390 + "futures-util", 391 + ] 392 + 393 + [[package]] 394 + name = "futures-io" 395 + version = "0.3.30" 396 + source = "registry+https://github.com/rust-lang/crates.io-index" 397 + checksum = "a44623e20b9681a318efdd71c299b6b222ed6f231972bfe2f224ebad6311f0c1" 398 + 399 + [[package]] 400 + name = "futures-macro" 401 + version = "0.3.30" 402 + source = "registry+https://github.com/rust-lang/crates.io-index" 403 + checksum = "87750cf4b7a4c0625b1529e4c543c2182106e4dedc60a2a6455e00d212c489ac" 404 + dependencies = [ 405 + "proc-macro2", 406 + "quote", 407 + "syn", 408 + ] 409 + 410 + [[package]] 245 411 name = "futures-sink" 246 412 version = "0.3.30" 247 413 source = "registry+https://github.com/rust-lang/crates.io-index" ··· 259 425 source = "registry+https://github.com/rust-lang/crates.io-index" 260 426 checksum = "3d6401deb83407ab3da39eba7e33987a73c3df0c82b4bb5813ee871c19c41d48" 261 427 dependencies = [ 428 + "futures-channel", 262 429 "futures-core", 430 + "futures-io", 431 + "futures-macro", 432 + "futures-sink", 263 433 "futures-task", 434 + "memchr", 264 435 "pin-project-lite", 265 436 "pin-utils", 437 + "slab", 438 + ] 439 + 440 + [[package]] 441 + name = "fxhash" 442 + version = "0.2.1" 443 + source = "registry+https://github.com/rust-lang/crates.io-index" 444 + checksum = "c31b6d751ae2c7f11320402d34e41349dd1016f8d5d45e48c4312bc8625af50c" 445 + dependencies = [ 446 + "byteorder", 447 + ] 448 + 449 + [[package]] 450 + name = "generic-array" 451 + version = "0.14.7" 452 + source = "registry+https://github.com/rust-lang/crates.io-index" 453 + checksum = "85649ca51fd72272d7821adaf274ad91c288277713d9c18820d8499a7ff69e9a" 454 + dependencies = [ 455 + "typenum", 456 + "version_check", 266 457 ] 267 458 268 459 [[package]] 269 460 name = "getrandom" 270 - version = "0.2.12" 461 + version = "0.2.15" 271 462 source = "registry+https://github.com/rust-lang/crates.io-index" 272 - checksum = "190092ea657667030ac6a35e305e62fc4dd69fd98ac98631e5d3a2b1575a12b5" 463 + checksum = "c4567c8db10ae91089c99af84c68c38da3ec2f087c3f82960bcdbf3656b6f4d7" 273 464 dependencies = [ 274 465 "cfg-if", 275 466 "libc", ··· 284 475 285 476 [[package]] 286 477 name = "h2" 287 - version = "0.3.25" 478 + version = "0.3.26" 288 479 source = "registry+https://github.com/rust-lang/crates.io-index" 289 - checksum = "4fbd2820c5e49886948654ab546d0688ff24530286bdcf8fca3cefb16d4618eb" 480 + checksum = "81fe527a889e1532da5c525686d96d4c2e74cdd345badf8dfef9f6b39dd5f5e8" 290 481 dependencies = [ 291 482 "bytes", 292 483 "fnv", 293 484 "futures-core", 294 485 "futures-sink", 295 486 "futures-util", 296 - "http", 487 + "http 0.2.12", 297 488 "indexmap", 298 489 "slab", 299 490 "tokio", ··· 303 494 304 495 [[package]] 305 496 name = "hashbrown" 306 - version = "0.14.3" 497 + version = "0.14.5" 307 498 source = "registry+https://github.com/rust-lang/crates.io-index" 308 - checksum = "290f1a1d9242c78d09ce40a5e87e7554ee637af1351968159f4952f028f75604" 499 + checksum = "e5274423e17b7c9fc20b6e7e208532f9b19825d82dfd615708b70edd83df41f1" 309 500 310 501 [[package]] 311 502 name = "heck" ··· 337 528 ] 338 529 339 530 [[package]] 531 + name = "http" 532 + version = "1.1.0" 533 + source = "registry+https://github.com/rust-lang/crates.io-index" 534 + checksum = "21b9ddb458710bc376481b842f5da65cdf31522de232c1ca8146abce2a358258" 535 + dependencies = [ 536 + "bytes", 537 + "fnv", 538 + "itoa", 539 + ] 540 + 541 + [[package]] 340 542 name = "http-body" 341 543 version = "0.4.6" 342 544 source = "registry+https://github.com/rust-lang/crates.io-index" 343 545 checksum = "7ceab25649e9960c0311ea418d17bee82c0dcec1bd053b5f9a66e265a693bed2" 344 546 dependencies = [ 345 547 "bytes", 346 - "http", 548 + "http 0.2.12", 347 549 "pin-project-lite", 348 550 ] 349 551 ··· 370 572 "futures-core", 371 573 "futures-util", 372 574 "h2", 373 - "http", 575 + "http 0.2.12", 374 576 "http-body", 375 577 "httparse", 376 578 "httpdate", ··· 390 592 checksum = "ec3efd23720e2049821a693cbc7e65ea87c72f1c58ff2f9522ff332b1491e590" 391 593 dependencies = [ 392 594 "futures-util", 393 - "http", 595 + "http 0.2.12", 394 596 "hyper", 395 - "rustls", 597 + "rustls 0.21.12", 396 598 "tokio", 397 - "tokio-rustls", 599 + "tokio-rustls 0.24.1", 398 600 ] 399 601 400 602 [[package]] ··· 424 626 checksum = "8f518f335dce6725a761382244631d86cf0ccb2863413590b31338feb467f9c3" 425 627 426 628 [[package]] 629 + name = "is_terminal_polyfill" 630 + version = "1.70.0" 631 + source = "registry+https://github.com/rust-lang/crates.io-index" 632 + checksum = "f8478577c03552c21db0e2724ffb8986a5ce7af88107e6be5d2ee6e158c12800" 633 + 634 + [[package]] 427 635 name = "itoa" 428 636 version = "1.0.11" 429 637 source = "registry+https://github.com/rust-lang/crates.io-index" ··· 440 648 441 649 [[package]] 442 650 name = "libc" 443 - version = "0.2.153" 651 + version = "0.2.154" 444 652 source = "registry+https://github.com/rust-lang/crates.io-index" 445 - checksum = "9c198f91728a82281a64e1f4f9eeb25d82cb32a5de251c6bd1b5154d63a8e7bd" 653 + checksum = "ae743338b92ff9146ce83992f766a31066a91a8c84a45e0e9f21e7cf6de6d346" 446 654 447 655 [[package]] 448 656 name = "lock_api" 449 - version = "0.4.11" 657 + version = "0.4.12" 450 658 source = "registry+https://github.com/rust-lang/crates.io-index" 451 - checksum = "3c168f8615b12bc01f9c17e2eb0cc07dcae1940121185446edc3744920e8ef45" 659 + checksum = "07af8b9cdd281b7915f413fa73f29ebd5d55d0d3f0155584dade1ff18cea1b17" 452 660 dependencies = [ 453 661 "autocfg", 454 662 "scopeguard", ··· 530 738 checksum = "3fdb12b2476b595f9358c5161aa467c2438859caa136dec86c26fdd2efe17b92" 531 739 532 740 [[package]] 741 + name = "oneshot-uniffi" 742 + version = "0.1.6" 743 + source = "registry+https://github.com/rust-lang/crates.io-index" 744 + checksum = "6c548d5c78976f6955d72d0ced18c48ca07030f7a1d4024529fedd7c1c01b29c" 745 + 746 + [[package]] 747 + name = "openssl-probe" 748 + version = "0.1.5" 749 + source = "registry+https://github.com/rust-lang/crates.io-index" 750 + checksum = "ff011a302c396a5197692431fc1948019154afc178baf7d8e37367442a4601cf" 751 + 752 + [[package]] 533 753 name = "parking_lot" 534 - version = "0.12.1" 754 + version = "0.12.2" 535 755 source = "registry+https://github.com/rust-lang/crates.io-index" 536 - checksum = "3742b2c103b9f06bc9fff0a37ff4912935851bee6d36f3c02bcc755bcfec228f" 756 + checksum = "7e4af0ca4f6caed20e900d564c242b8e5d4903fdacf31d3daf527b66fe6f42fb" 537 757 dependencies = [ 538 758 "lock_api", 539 759 "parking_lot_core", ··· 541 761 542 762 [[package]] 543 763 name = "parking_lot_core" 544 - version = "0.9.9" 764 + version = "0.9.10" 545 765 source = "registry+https://github.com/rust-lang/crates.io-index" 546 - checksum = "4c42a9226546d68acdd9c0a280d17ce19bfe27a46bf68784e4066115788d008e" 766 + checksum = "1e401f977ab385c9e4e3ab30627d6f26d00e2c73eef317493c4ec6d468726cf8" 547 767 dependencies = [ 548 768 "cfg-if", 549 769 "libc", 550 770 "redox_syscall", 551 771 "smallvec", 552 - "windows-targets 0.48.5", 772 + "windows-targets 0.52.5", 553 773 ] 554 774 555 775 [[package]] 776 + name = "paste" 777 + version = "1.0.15" 778 + source = "registry+https://github.com/rust-lang/crates.io-index" 779 + checksum = "57c0d7b74b563b49d38dae00a0c37d4d6de9b432382b2892f0574ddcae73fd0a" 780 + 781 + [[package]] 556 782 name = "percent-encoding" 557 783 version = "2.3.1" 558 784 source = "registry+https://github.com/rust-lang/crates.io-index" 559 785 checksum = "e3148f5046208a5d56bcfc03053e3ca6334e51da8dfb19b6cdc8b306fae3283e" 560 786 561 787 [[package]] 788 + name = "phoenix_channels_client" 789 + version = "0.9.0" 790 + source = "git+https://github.com/liveview-native/phoenix-channels-client.git#798f9de4572ed6712047ffcc0340374b15cf493c" 791 + dependencies = [ 792 + "arc-swap", 793 + "atomic-take", 794 + "bytes", 795 + "flexstr", 796 + "futures", 797 + "fxhash", 798 + "httparse", 799 + "log", 800 + "serde", 801 + "serde_json", 802 + "thiserror", 803 + "tokio", 804 + "tokio-tungstenite", 805 + "uniffi", 806 + "url", 807 + "uuid", 808 + ] 809 + 810 + [[package]] 562 811 name = "pin-project-lite" 563 - version = "0.2.13" 812 + version = "0.2.14" 564 813 source = "registry+https://github.com/rust-lang/crates.io-index" 565 - checksum = "8afb450f006bf6385ca15ef45d71d2288452bc3683ce2e2cacc0d18e4be60b58" 814 + checksum = "bda66fc9667c18cb2758a2ac84d1167245054bcf85d5d1aaa6923f45801bdd02" 566 815 567 816 [[package]] 568 817 name = "pin-utils" ··· 571 820 checksum = "8b870d8c151b6f2fb93e84a13146138f05d02ed11c7e7c54f8826aaaf7c9f184" 572 821 573 822 [[package]] 823 + name = "ppv-lite86" 824 + version = "0.2.17" 825 + source = "registry+https://github.com/rust-lang/crates.io-index" 826 + checksum = "5b40af805b3121feab8a3c29f04d8ad262fa8e0561883e7653e024ae4479e6de" 827 + 828 + [[package]] 574 829 name = "proc-macro2" 575 - version = "1.0.79" 830 + version = "1.0.82" 576 831 source = "registry+https://github.com/rust-lang/crates.io-index" 577 - checksum = "e835ff2298f5721608eb1a980ecaee1aef2c132bf95ecc026a11b7bf3c01c02e" 832 + checksum = "8ad3d49ab951a01fbaafe34f2ec74122942fe18a3f9814c3268f1bb72042131b" 578 833 dependencies = [ 579 834 "unicode-ident", 580 835 ] 581 836 582 837 [[package]] 583 838 name = "quote" 584 - version = "1.0.35" 839 + version = "1.0.36" 585 840 source = "registry+https://github.com/rust-lang/crates.io-index" 586 - checksum = "291ec9ab5efd934aaf503a6466c5d5251535d108ee747472c3977cc5acc868ef" 841 + checksum = "0fa76aaf39101c457836aec0ce2316dbdc3ab723cdda1c6bd4e6ad4208acaca7" 587 842 dependencies = [ 588 843 "proc-macro2", 589 844 ] 590 845 591 846 [[package]] 847 + name = "rand" 848 + version = "0.8.5" 849 + source = "registry+https://github.com/rust-lang/crates.io-index" 850 + checksum = "34af8d1a0e25924bc5b7c43c079c942339d8f0a8b57c39049bef581b46327404" 851 + dependencies = [ 852 + "libc", 853 + "rand_chacha", 854 + "rand_core", 855 + ] 856 + 857 + [[package]] 858 + name = "rand_chacha" 859 + version = "0.3.1" 860 + source = "registry+https://github.com/rust-lang/crates.io-index" 861 + checksum = "e6c10a63a0fa32252be49d21e7709d4d4baf8d231c2dbce1eaa8141b9b127d88" 862 + dependencies = [ 863 + "ppv-lite86", 864 + "rand_core", 865 + ] 866 + 867 + [[package]] 868 + name = "rand_core" 869 + version = "0.6.4" 870 + source = "registry+https://github.com/rust-lang/crates.io-index" 871 + checksum = "ec0be4795e2f6a28069bec0b5ff3e2ac9bafc99e6a9a7dc3547996c5c816922c" 872 + dependencies = [ 873 + "getrandom", 874 + ] 875 + 876 + [[package]] 592 877 name = "redox_syscall" 593 - version = "0.4.1" 878 + version = "0.5.1" 594 879 source = "registry+https://github.com/rust-lang/crates.io-index" 595 - checksum = "4722d768eff46b75989dd134e5c353f0d6296e5aaa3132e776cbdb56be7731aa" 880 + checksum = "469052894dcb553421e483e4209ee581a45100d31b4018de03e5a7ad86374a7e" 596 881 dependencies = [ 597 - "bitflags 1.3.2", 882 + "bitflags 2.5.0", 598 883 ] 599 884 600 885 [[package]] ··· 603 888 source = "registry+https://github.com/rust-lang/crates.io-index" 604 889 checksum = "dd67538700a17451e7cba03ac727fb961abb7607553461627b97de0b89cf4a62" 605 890 dependencies = [ 606 - "base64", 891 + "base64 0.21.7", 607 892 "bytes", 608 893 "encoding_rs", 609 894 "futures-core", 610 895 "futures-util", 611 896 "h2", 612 - "http", 897 + "http 0.2.12", 613 898 "http-body", 614 899 "hyper", 615 900 "hyper-rustls", ··· 620 905 "once_cell", 621 906 "percent-encoding", 622 907 "pin-project-lite", 623 - "rustls", 624 - "rustls-pemfile", 908 + "rustls 0.21.12", 909 + "rustls-pemfile 1.0.4", 625 910 "serde", 626 911 "serde_json", 627 912 "serde_urlencoded", 628 913 "sync_wrapper", 629 914 "system-configuration", 630 915 "tokio", 631 - "tokio-rustls", 916 + "tokio-rustls 0.24.1", 632 917 "tower-service", 633 918 "url", 634 919 "wasm-bindgen", ··· 655 940 656 941 [[package]] 657 942 name = "rustc-demangle" 658 - version = "0.1.23" 943 + version = "0.1.24" 659 944 source = "registry+https://github.com/rust-lang/crates.io-index" 660 - checksum = "d626bb9dae77e28219937af045c257c28bfd3f69333c512553507f5f9798cb76" 945 + checksum = "719b953e2095829ee67db738b3bfa9fa368c94900df327b3f07fe6e794d2fe1f" 661 946 662 947 [[package]] 663 948 name = "rustls" 664 - version = "0.21.10" 949 + version = "0.21.12" 665 950 source = "registry+https://github.com/rust-lang/crates.io-index" 666 - checksum = "f9d5a6813c0759e4609cd494e8e725babae6a2ca7b62a5536a13daaec6fcb7ba" 951 + checksum = "3f56a14d1f48b391359b22f731fd4bd7e43c97f3c50eee276f3aa09c94784d3e" 667 952 dependencies = [ 668 953 "log", 669 954 "ring", 670 - "rustls-webpki", 955 + "rustls-webpki 0.101.7", 671 956 "sct", 672 957 ] 673 958 674 959 [[package]] 960 + name = "rustls" 961 + version = "0.22.4" 962 + source = "registry+https://github.com/rust-lang/crates.io-index" 963 + checksum = "bf4ef73721ac7bcd79b2b315da7779d8fc09718c6b3d2d1b2d94850eb8c18432" 964 + dependencies = [ 965 + "log", 966 + "ring", 967 + "rustls-pki-types", 968 + "rustls-webpki 0.102.3", 969 + "subtle", 970 + "zeroize", 971 + ] 972 + 973 + [[package]] 974 + name = "rustls-native-certs" 975 + version = "0.7.0" 976 + source = "registry+https://github.com/rust-lang/crates.io-index" 977 + checksum = "8f1fb85efa936c42c6d5fc28d2629bb51e4b2f4b8a5211e297d599cc5a093792" 978 + dependencies = [ 979 + "openssl-probe", 980 + "rustls-pemfile 2.1.2", 981 + "rustls-pki-types", 982 + "schannel", 983 + "security-framework", 984 + ] 985 + 986 + [[package]] 675 987 name = "rustls-pemfile" 676 988 version = "1.0.4" 677 989 source = "registry+https://github.com/rust-lang/crates.io-index" 678 990 checksum = "1c74cae0a4cf6ccbbf5f359f08efdf8ee7e1dc532573bf0db71968cb56b1448c" 679 991 dependencies = [ 680 - "base64", 992 + "base64 0.21.7", 681 993 ] 682 994 683 995 [[package]] 996 + name = "rustls-pemfile" 997 + version = "2.1.2" 998 + source = "registry+https://github.com/rust-lang/crates.io-index" 999 + checksum = "29993a25686778eb88d4189742cd713c9bce943bc54251a33509dc63cbacf73d" 1000 + dependencies = [ 1001 + "base64 0.22.1", 1002 + "rustls-pki-types", 1003 + ] 1004 + 1005 + [[package]] 1006 + name = "rustls-pki-types" 1007 + version = "1.7.0" 1008 + source = "registry+https://github.com/rust-lang/crates.io-index" 1009 + checksum = "976295e77ce332211c0d24d92c0e83e50f5c5f046d11082cea19f3df13a3562d" 1010 + 1011 + [[package]] 684 1012 name = "rustls-webpki" 685 1013 version = "0.101.7" 686 1014 source = "registry+https://github.com/rust-lang/crates.io-index" ··· 691 1019 ] 692 1020 693 1021 [[package]] 1022 + name = "rustls-webpki" 1023 + version = "0.102.3" 1024 + source = "registry+https://github.com/rust-lang/crates.io-index" 1025 + checksum = "f3bce581c0dd41bce533ce695a1437fa16a7ab5ac3ccfa99fe1a620a7885eabf" 1026 + dependencies = [ 1027 + "ring", 1028 + "rustls-pki-types", 1029 + "untrusted", 1030 + ] 1031 + 1032 + [[package]] 694 1033 name = "rustversion" 695 - version = "1.0.14" 1034 + version = "1.0.16" 696 1035 source = "registry+https://github.com/rust-lang/crates.io-index" 697 - checksum = "7ffc183a10b4478d04cbbbfc96d0873219d962dd5accaff2ffbd4ceb7df837f4" 1036 + checksum = "092474d1a01ea8278f69e6a358998405fae5b8b963ddaeb2b0b04a128bf1dfb0" 698 1037 699 1038 [[package]] 700 1039 name = "ryu" 701 - version = "1.0.17" 1040 + version = "1.0.18" 702 1041 source = "registry+https://github.com/rust-lang/crates.io-index" 703 - checksum = "e86697c916019a8588c99b5fac3cead74ec0b4b819707a682fd4d23fa0ce1ba1" 1042 + checksum = "f3cb5ba0dc43242ce17de99c180e96db90b235b8a9fdc9543c96d2209116bd9f" 1043 + 1044 + [[package]] 1045 + name = "schannel" 1046 + version = "0.1.23" 1047 + source = "registry+https://github.com/rust-lang/crates.io-index" 1048 + checksum = "fbc91545643bcf3a0bbb6569265615222618bdf33ce4ffbbd13c4bbd4c093534" 1049 + dependencies = [ 1050 + "windows-sys 0.52.0", 1051 + ] 704 1052 705 1053 [[package]] 706 1054 name = "scopeguard" ··· 719 1067 ] 720 1068 721 1069 [[package]] 1070 + name = "security-framework" 1071 + version = "2.11.0" 1072 + source = "registry+https://github.com/rust-lang/crates.io-index" 1073 + checksum = "c627723fd09706bacdb5cf41499e95098555af3c3c29d014dc3c458ef6be11c0" 1074 + dependencies = [ 1075 + "bitflags 2.5.0", 1076 + "core-foundation", 1077 + "core-foundation-sys", 1078 + "libc", 1079 + "security-framework-sys", 1080 + ] 1081 + 1082 + [[package]] 1083 + name = "security-framework-sys" 1084 + version = "2.11.0" 1085 + source = "registry+https://github.com/rust-lang/crates.io-index" 1086 + checksum = "317936bbbd05227752583946b9e66d7ce3b489f84e11a94a510b4437fef407d7" 1087 + dependencies = [ 1088 + "core-foundation-sys", 1089 + "libc", 1090 + ] 1091 + 1092 + [[package]] 722 1093 name = "serde" 723 - version = "1.0.197" 1094 + version = "1.0.201" 724 1095 source = "registry+https://github.com/rust-lang/crates.io-index" 725 - checksum = "3fb1c873e1b9b056a4dc4c0c198b24c3ffa059243875552b2bd0933b1aee4ce2" 1096 + checksum = "780f1cebed1629e4753a1a38a3c72d30b97ec044f0aef68cb26650a3c5cf363c" 726 1097 dependencies = [ 727 1098 "serde_derive", 728 1099 ] 729 1100 730 1101 [[package]] 731 1102 name = "serde_derive" 732 - version = "1.0.197" 1103 + version = "1.0.201" 733 1104 source = "registry+https://github.com/rust-lang/crates.io-index" 734 - checksum = "7eb0b34b42edc17f6b7cac84a52a1c5f0e1bb2227e997ca9011ea3dd34e8610b" 1105 + checksum = "c5e405930b9796f1c00bee880d03fc7e0bb4b9a11afc776885ffe84320da2865" 735 1106 dependencies = [ 736 1107 "proc-macro2", 737 1108 "quote", ··· 740 1111 741 1112 [[package]] 742 1113 name = "serde_json" 743 - version = "1.0.115" 1114 + version = "1.0.117" 744 1115 source = "registry+https://github.com/rust-lang/crates.io-index" 745 - checksum = "12dc5c46daa8e9fdf4f5e71b6cf9a53f2487da0e86e55808e2d35539666497dd" 1116 + checksum = "455182ea6142b14f93f4bc5320a2b31c1f266b66a4a5c858b013302a5d8cbfc3" 746 1117 dependencies = [ 747 1118 "itoa", 748 1119 "ryu", ··· 771 1142 ] 772 1143 773 1144 [[package]] 1145 + name = "sha1" 1146 + version = "0.10.6" 1147 + source = "registry+https://github.com/rust-lang/crates.io-index" 1148 + checksum = "e3bf829a2d51ab4a5ddf1352d8470c140cadc8301b2ae1789db023f01cedd6ba" 1149 + dependencies = [ 1150 + "cfg-if", 1151 + "cpufeatures", 1152 + "digest", 1153 + ] 1154 + 1155 + [[package]] 774 1156 name = "signal-hook-registry" 775 - version = "1.4.1" 1157 + version = "1.4.2" 776 1158 source = "registry+https://github.com/rust-lang/crates.io-index" 777 - checksum = "d8229b473baa5980ac72ef434c4415e70c4b5e71b423043adb4ba059f89c99a1" 1159 + checksum = "a9e9e0b4211b72e7b8b6e85c807d36c212bdb33ea8587f7569562a84df5465b1" 778 1160 dependencies = [ 779 1161 "libc", 780 1162 ] 781 1163 782 1164 [[package]] 1165 + name = "siphasher" 1166 + version = "0.3.11" 1167 + source = "registry+https://github.com/rust-lang/crates.io-index" 1168 + checksum = "38b58827f4464d87d377d175e90bf58eb00fd8716ff0a62f80356b5e61555d0d" 1169 + 1170 + [[package]] 783 1171 name = "slab" 784 1172 version = "0.4.9" 785 1173 source = "registry+https://github.com/rust-lang/crates.io-index" ··· 796 1184 797 1185 [[package]] 798 1186 name = "socket2" 799 - version = "0.5.6" 1187 + version = "0.5.7" 800 1188 source = "registry+https://github.com/rust-lang/crates.io-index" 801 - checksum = "05ffd9c0a93b7543e062e759284fcf5f5e3b098501104bfbdde4d404db792871" 1189 + checksum = "ce305eb0b4296696835b71df73eb912e0f1ffd2556a501fcede6e0c50349191c" 802 1190 dependencies = [ 803 1191 "libc", 804 1192 "windows-sys 0.52.0", ··· 810 1198 dependencies = [ 811 1199 "clap", 812 1200 "nix", 1201 + "phoenix_channels_client", 813 1202 "reqwest", 814 1203 "serde", 1204 + "serde_json", 815 1205 "strum", 816 1206 "tokio", 817 - "toml", 1207 + "tokio-stream", 1208 + "tokio-tungstenite", 1209 + "toml 0.8.12", 1210 + "url", 818 1211 "xdg", 819 1212 ] 820 1213 ··· 825 1218 checksum = "6980e8d7511241f8acf4aebddbb1ff938df5eebe98691418c4468d0b72a96a67" 826 1219 827 1220 [[package]] 1221 + name = "static_assertions" 1222 + version = "1.1.0" 1223 + source = "registry+https://github.com/rust-lang/crates.io-index" 1224 + checksum = "a2eb9349b6444b326872e140eb1cf5e7c522154d69e7a0ffb0fb81c06b37543f" 1225 + 1226 + [[package]] 828 1227 name = "strsim" 829 - version = "0.11.0" 1228 + version = "0.11.1" 830 1229 source = "registry+https://github.com/rust-lang/crates.io-index" 831 - checksum = "5ee073c9e4cd00e28217186dbe12796d692868f432bf2e97ee73bed0c56dfa01" 1230 + checksum = "7da8b5736845d9f2fcb837ea5d9e2628564b3b043a70948a3f0b778838c5fb4f" 832 1231 833 1232 [[package]] 834 1233 name = "strum" ··· 853 1252 ] 854 1253 855 1254 [[package]] 1255 + name = "subtle" 1256 + version = "2.5.0" 1257 + source = "registry+https://github.com/rust-lang/crates.io-index" 1258 + checksum = "81cdd64d312baedb58e21336b31bc043b77e01cc99033ce76ef539f78e965ebc" 1259 + 1260 + [[package]] 856 1261 name = "syn" 857 - version = "2.0.55" 1262 + version = "2.0.61" 858 1263 source = "registry+https://github.com/rust-lang/crates.io-index" 859 - checksum = "002a1b3dbf967edfafc32655d0f377ab0bb7b994aa1d32c8cc7e9b8bf3ebb8f0" 1264 + checksum = "c993ed8ccba56ae856363b1845da7266a7cb78e1d146c8a32d54b45a8b831fc9" 860 1265 dependencies = [ 861 1266 "proc-macro2", 862 1267 "quote", ··· 891 1296 ] 892 1297 893 1298 [[package]] 1299 + name = "thiserror" 1300 + version = "1.0.60" 1301 + source = "registry+https://github.com/rust-lang/crates.io-index" 1302 + checksum = "579e9083ca58dd9dcf91a9923bb9054071b9ebbd800b342194c9feb0ee89fc18" 1303 + dependencies = [ 1304 + "thiserror-impl", 1305 + ] 1306 + 1307 + [[package]] 1308 + name = "thiserror-impl" 1309 + version = "1.0.60" 1310 + source = "registry+https://github.com/rust-lang/crates.io-index" 1311 + checksum = "e2470041c06ec3ac1ab38d0356a6119054dedaea53e12fbefc0de730a1c08524" 1312 + dependencies = [ 1313 + "proc-macro2", 1314 + "quote", 1315 + "syn", 1316 + ] 1317 + 1318 + [[package]] 894 1319 name = "tinyvec" 895 1320 version = "1.6.0" 896 1321 source = "registry+https://github.com/rust-lang/crates.io-index" ··· 907 1332 908 1333 [[package]] 909 1334 name = "tokio" 910 - version = "1.36.0" 1335 + version = "1.37.0" 911 1336 source = "registry+https://github.com/rust-lang/crates.io-index" 912 - checksum = "61285f6515fa018fb2d1e46eb21223fff441ee8db5d0f1435e8ab4f5cdb80931" 1337 + checksum = "1adbebffeca75fcfd058afa480fb6c0b81e165a0323f9c9d39c9697e37c46787" 913 1338 dependencies = [ 914 1339 "backtrace", 915 1340 "bytes", ··· 921 1346 "signal-hook-registry", 922 1347 "socket2", 923 1348 "tokio-macros", 1349 + "tracing", 924 1350 "windows-sys 0.48.0", 925 1351 ] 926 1352 ··· 941 1367 source = "registry+https://github.com/rust-lang/crates.io-index" 942 1368 checksum = "c28327cf380ac148141087fbfb9de9d7bd4e84ab5d2c28fbc911d753de8a7081" 943 1369 dependencies = [ 944 - "rustls", 1370 + "rustls 0.21.12", 1371 + "tokio", 1372 + ] 1373 + 1374 + [[package]] 1375 + name = "tokio-rustls" 1376 + version = "0.25.0" 1377 + source = "registry+https://github.com/rust-lang/crates.io-index" 1378 + checksum = "775e0c0f0adb3a2f22a00c4745d728b479985fc15ee7ca6a2608388c5569860f" 1379 + dependencies = [ 1380 + "rustls 0.22.4", 1381 + "rustls-pki-types", 1382 + "tokio", 1383 + ] 1384 + 1385 + [[package]] 1386 + name = "tokio-stream" 1387 + version = "0.1.15" 1388 + source = "registry+https://github.com/rust-lang/crates.io-index" 1389 + checksum = "267ac89e0bec6e691e5813911606935d77c476ff49024f98abcea3e7b15e37af" 1390 + dependencies = [ 1391 + "futures-core", 1392 + "pin-project-lite", 1393 + "tokio", 1394 + "tokio-util", 1395 + ] 1396 + 1397 + [[package]] 1398 + name = "tokio-tungstenite" 1399 + version = "0.21.0" 1400 + source = "registry+https://github.com/rust-lang/crates.io-index" 1401 + checksum = "c83b561d025642014097b66e6c1bb422783339e0909e4429cde4749d1990bc38" 1402 + dependencies = [ 1403 + "futures-util", 1404 + "log", 1405 + "rustls 0.22.4", 1406 + "rustls-native-certs", 1407 + "rustls-pki-types", 945 1408 "tokio", 1409 + "tokio-rustls 0.25.0", 1410 + "tungstenite", 946 1411 ] 947 1412 948 1413 [[package]] 949 1414 name = "tokio-util" 950 - version = "0.7.10" 1415 + version = "0.7.11" 951 1416 source = "registry+https://github.com/rust-lang/crates.io-index" 952 - checksum = "5419f34732d9eb6ee4c3578b7989078579b7f039cbbb9ca2c4da015749371e15" 1417 + checksum = "9cf6b47b3771c49ac75ad09a6162f53ad4b8088b76ac60e8ec1455b31a189fe1" 953 1418 dependencies = [ 954 1419 "bytes", 955 1420 "futures-core", 956 1421 "futures-sink", 957 1422 "pin-project-lite", 958 1423 "tokio", 959 - "tracing", 1424 + ] 1425 + 1426 + [[package]] 1427 + name = "toml" 1428 + version = "0.5.11" 1429 + source = "registry+https://github.com/rust-lang/crates.io-index" 1430 + checksum = "f4f7f0dd8d50a853a531c426359045b1998f04219d88799810762cd4ad314234" 1431 + dependencies = [ 1432 + "serde", 960 1433 ] 961 1434 962 1435 [[package]] ··· 982 1455 983 1456 [[package]] 984 1457 name = "toml_edit" 985 - version = "0.22.9" 1458 + version = "0.22.12" 986 1459 source = "registry+https://github.com/rust-lang/crates.io-index" 987 - checksum = "8e40bb779c5187258fd7aad0eb68cb8706a0a81fa712fbea808ab43c4b8374c4" 1460 + checksum = "d3328d4f68a705b2a4498da1d580585d39a6510f98318a2cec3018a7ec61ddef" 988 1461 dependencies = [ 989 1462 "indexmap", 990 1463 "serde", ··· 1025 1498 checksum = "e421abadd41a4225275504ea4d6566923418b7f05506fbc9c0fe86ba7396114b" 1026 1499 1027 1500 [[package]] 1501 + name = "tungstenite" 1502 + version = "0.21.0" 1503 + source = "registry+https://github.com/rust-lang/crates.io-index" 1504 + checksum = "9ef1a641ea34f399a848dea702823bbecfb4c486f911735368f1f137cb8257e1" 1505 + dependencies = [ 1506 + "byteorder", 1507 + "bytes", 1508 + "data-encoding", 1509 + "http 1.1.0", 1510 + "httparse", 1511 + "log", 1512 + "rand", 1513 + "rustls 0.22.4", 1514 + "rustls-pki-types", 1515 + "sha1", 1516 + "thiserror", 1517 + "url", 1518 + "utf-8", 1519 + ] 1520 + 1521 + [[package]] 1522 + name = "typenum" 1523 + version = "1.17.0" 1524 + source = "registry+https://github.com/rust-lang/crates.io-index" 1525 + checksum = "42ff0bf0c66b8238c6f3b578df37d0b7848e55df8577b3f74f92a69acceeb825" 1526 + 1527 + [[package]] 1028 1528 name = "unicode-bidi" 1029 1529 version = "0.3.15" 1030 1530 source = "registry+https://github.com/rust-lang/crates.io-index" ··· 1046 1546 ] 1047 1547 1048 1548 [[package]] 1549 + name = "uniffi" 1550 + version = "0.27.1" 1551 + source = "registry+https://github.com/rust-lang/crates.io-index" 1552 + checksum = "a5566fae48a5cb017005bf9cd622af5236b2a203a13fb548afde3506d3c68277" 1553 + dependencies = [ 1554 + "anyhow", 1555 + "uniffi_core", 1556 + "uniffi_macros", 1557 + ] 1558 + 1559 + [[package]] 1560 + name = "uniffi_checksum_derive" 1561 + version = "0.27.1" 1562 + source = "registry+https://github.com/rust-lang/crates.io-index" 1563 + checksum = "ae7e5a6c33b1dec3f255f57ec0b6af0f0b2bb3021868be1d5eec7a38e2905ebc" 1564 + dependencies = [ 1565 + "quote", 1566 + "syn", 1567 + ] 1568 + 1569 + [[package]] 1570 + name = "uniffi_core" 1571 + version = "0.27.1" 1572 + source = "registry+https://github.com/rust-lang/crates.io-index" 1573 + checksum = "0ea3eb5474d50fc149b7e4d86b9c5bd4a61dcc167f0683902bf18ae7bbb3deef" 1574 + dependencies = [ 1575 + "anyhow", 1576 + "async-compat", 1577 + "bytes", 1578 + "camino", 1579 + "log", 1580 + "once_cell", 1581 + "oneshot-uniffi", 1582 + "paste", 1583 + "static_assertions", 1584 + ] 1585 + 1586 + [[package]] 1587 + name = "uniffi_macros" 1588 + version = "0.27.1" 1589 + source = "registry+https://github.com/rust-lang/crates.io-index" 1590 + checksum = "18331d35003f46f0d04047fbe4227291815b83a937a8c32bc057f990962182c4" 1591 + dependencies = [ 1592 + "bincode", 1593 + "camino", 1594 + "fs-err", 1595 + "once_cell", 1596 + "proc-macro2", 1597 + "quote", 1598 + "serde", 1599 + "syn", 1600 + "toml 0.5.11", 1601 + "uniffi_meta", 1602 + ] 1603 + 1604 + [[package]] 1605 + name = "uniffi_meta" 1606 + version = "0.27.1" 1607 + source = "registry+https://github.com/rust-lang/crates.io-index" 1608 + checksum = "f7224422c4cfd181c7ca9fca2154abca4d21db962f926f270f996edd38b0c4b8" 1609 + dependencies = [ 1610 + "anyhow", 1611 + "bytes", 1612 + "siphasher", 1613 + "uniffi_checksum_derive", 1614 + ] 1615 + 1616 + [[package]] 1049 1617 name = "untrusted" 1050 1618 version = "0.9.0" 1051 1619 source = "registry+https://github.com/rust-lang/crates.io-index" ··· 1063 1631 ] 1064 1632 1065 1633 [[package]] 1634 + name = "utf-8" 1635 + version = "0.7.6" 1636 + source = "registry+https://github.com/rust-lang/crates.io-index" 1637 + checksum = "09cc8ee72d2a9becf2f2febe0205bbed8fc6615b7cb429ad062dc7b7ddd036a9" 1638 + 1639 + [[package]] 1066 1640 name = "utf8parse" 1067 1641 version = "0.2.1" 1068 1642 source = "registry+https://github.com/rust-lang/crates.io-index" 1069 1643 checksum = "711b9620af191e0cdc7468a8d14e709c3dcdb115b36f838e601583af800a370a" 1644 + 1645 + [[package]] 1646 + name = "uuid" 1647 + version = "1.8.0" 1648 + source = "registry+https://github.com/rust-lang/crates.io-index" 1649 + checksum = "a183cf7feeba97b4dd1c0d46788634f6221d87fa961b305bed08c851829efcc0" 1650 + dependencies = [ 1651 + "getrandom", 1652 + ] 1653 + 1654 + [[package]] 1655 + name = "version_check" 1656 + version = "0.9.4" 1657 + source = "registry+https://github.com/rust-lang/crates.io-index" 1658 + checksum = "49874b5167b65d7193b8aba1567f5c7d93d001cafc34600cee003eda787e483f" 1070 1659 1071 1660 [[package]] 1072 1661 name = "want" ··· 1180 1769 source = "registry+https://github.com/rust-lang/crates.io-index" 1181 1770 checksum = "282be5f36a8ce781fad8c8ae18fa3f9beff57ec1b52cb3de0789201425d9a33d" 1182 1771 dependencies = [ 1183 - "windows-targets 0.52.4", 1772 + "windows-targets 0.52.5", 1184 1773 ] 1185 1774 1186 1775 [[package]] ··· 1200 1789 1201 1790 [[package]] 1202 1791 name = "windows-targets" 1203 - version = "0.52.4" 1792 + version = "0.52.5" 1204 1793 source = "registry+https://github.com/rust-lang/crates.io-index" 1205 - checksum = "7dd37b7e5ab9018759f893a1952c9420d060016fc19a472b4bb20d1bdd694d1b" 1794 + checksum = "6f0713a46559409d202e70e28227288446bf7841d3211583a4b53e3f6d96e7eb" 1206 1795 dependencies = [ 1207 - "windows_aarch64_gnullvm 0.52.4", 1208 - "windows_aarch64_msvc 0.52.4", 1209 - "windows_i686_gnu 0.52.4", 1210 - "windows_i686_msvc 0.52.4", 1211 - "windows_x86_64_gnu 0.52.4", 1212 - "windows_x86_64_gnullvm 0.52.4", 1213 - "windows_x86_64_msvc 0.52.4", 1796 + "windows_aarch64_gnullvm 0.52.5", 1797 + "windows_aarch64_msvc 0.52.5", 1798 + "windows_i686_gnu 0.52.5", 1799 + "windows_i686_gnullvm", 1800 + "windows_i686_msvc 0.52.5", 1801 + "windows_x86_64_gnu 0.52.5", 1802 + "windows_x86_64_gnullvm 0.52.5", 1803 + "windows_x86_64_msvc 0.52.5", 1214 1804 ] 1215 1805 1216 1806 [[package]] ··· 1221 1811 1222 1812 [[package]] 1223 1813 name = "windows_aarch64_gnullvm" 1224 - version = "0.52.4" 1814 + version = "0.52.5" 1225 1815 source = "registry+https://github.com/rust-lang/crates.io-index" 1226 - checksum = "bcf46cf4c365c6f2d1cc93ce535f2c8b244591df96ceee75d8e83deb70a9cac9" 1816 + checksum = "7088eed71e8b8dda258ecc8bac5fb1153c5cffaf2578fc8ff5d61e23578d3263" 1227 1817 1228 1818 [[package]] 1229 1819 name = "windows_aarch64_msvc" ··· 1233 1823 1234 1824 [[package]] 1235 1825 name = "windows_aarch64_msvc" 1236 - version = "0.52.4" 1826 + version = "0.52.5" 1237 1827 source = "registry+https://github.com/rust-lang/crates.io-index" 1238 - checksum = "da9f259dd3bcf6990b55bffd094c4f7235817ba4ceebde8e6d11cd0c5633b675" 1828 + checksum = "9985fd1504e250c615ca5f281c3f7a6da76213ebd5ccc9561496568a2752afb6" 1239 1829 1240 1830 [[package]] 1241 1831 name = "windows_i686_gnu" ··· 1245 1835 1246 1836 [[package]] 1247 1837 name = "windows_i686_gnu" 1248 - version = "0.52.4" 1838 + version = "0.52.5" 1839 + source = "registry+https://github.com/rust-lang/crates.io-index" 1840 + checksum = "88ba073cf16d5372720ec942a8ccbf61626074c6d4dd2e745299726ce8b89670" 1841 + 1842 + [[package]] 1843 + name = "windows_i686_gnullvm" 1844 + version = "0.52.5" 1249 1845 source = "registry+https://github.com/rust-lang/crates.io-index" 1250 - checksum = "b474d8268f99e0995f25b9f095bc7434632601028cf86590aea5c8a5cb7801d3" 1846 + checksum = "87f4261229030a858f36b459e748ae97545d6f1ec60e5e0d6a3d32e0dc232ee9" 1251 1847 1252 1848 [[package]] 1253 1849 name = "windows_i686_msvc" ··· 1257 1853 1258 1854 [[package]] 1259 1855 name = "windows_i686_msvc" 1260 - version = "0.52.4" 1856 + version = "0.52.5" 1261 1857 source = "registry+https://github.com/rust-lang/crates.io-index" 1262 - checksum = "1515e9a29e5bed743cb4415a9ecf5dfca648ce85ee42e15873c3cd8610ff8e02" 1858 + checksum = "db3c2bf3d13d5b658be73463284eaf12830ac9a26a90c717b7f771dfe97487bf" 1263 1859 1264 1860 [[package]] 1265 1861 name = "windows_x86_64_gnu" ··· 1269 1865 1270 1866 [[package]] 1271 1867 name = "windows_x86_64_gnu" 1272 - version = "0.52.4" 1868 + version = "0.52.5" 1273 1869 source = "registry+https://github.com/rust-lang/crates.io-index" 1274 - checksum = "5eee091590e89cc02ad514ffe3ead9eb6b660aedca2183455434b93546371a03" 1870 + checksum = "4e4246f76bdeff09eb48875a0fd3e2af6aada79d409d33011886d3e1581517d9" 1275 1871 1276 1872 [[package]] 1277 1873 name = "windows_x86_64_gnullvm" ··· 1281 1877 1282 1878 [[package]] 1283 1879 name = "windows_x86_64_gnullvm" 1284 - version = "0.52.4" 1880 + version = "0.52.5" 1285 1881 source = "registry+https://github.com/rust-lang/crates.io-index" 1286 - checksum = "77ca79f2451b49fa9e2af39f0747fe999fcda4f5e241b2898624dca97a1f2177" 1882 + checksum = "852298e482cd67c356ddd9570386e2862b5673c85bd5f88df9ab6802b334c596" 1287 1883 1288 1884 [[package]] 1289 1885 name = "windows_x86_64_msvc" ··· 1293 1889 1294 1890 [[package]] 1295 1891 name = "windows_x86_64_msvc" 1296 - version = "0.52.4" 1892 + version = "0.52.5" 1297 1893 source = "registry+https://github.com/rust-lang/crates.io-index" 1298 - checksum = "32b752e52a2da0ddfbdbcc6fceadfeede4c939ed16d13e648833a61dfb611ed8" 1894 + checksum = "bec47e5bfd1bff0eeaf6d8b485cc1074891a197ab4225d504cb7a1ab88b02bf0" 1299 1895 1300 1896 [[package]] 1301 1897 name = "winnow" 1302 - version = "0.6.5" 1898 + version = "0.6.8" 1303 1899 source = "registry+https://github.com/rust-lang/crates.io-index" 1304 - checksum = "dffa400e67ed5a4dd237983829e66475f0a4a26938c4b04c21baede6262215b8" 1900 + checksum = "c3c52e9c97a68071b23e836c9380edae937f17b9c4667bd021973efc689f618d" 1305 1901 dependencies = [ 1306 1902 "memchr", 1307 1903 ] ··· 1321 1917 version = "2.5.2" 1322 1918 source = "registry+https://github.com/rust-lang/crates.io-index" 1323 1919 checksum = "213b7324336b53d2414b2db8537e56544d981803139155afa84f76eeebb7a546" 1920 + 1921 + [[package]] 1922 + name = "zeroize" 1923 + version = "1.7.0" 1924 + source = "registry+https://github.com/rust-lang/crates.io-index" 1925 + checksum = "525b4ec142c6b68a2d10f01f7bbf6755599ca3f81ea53b8431b7dd348f5fdb2d"
+5
client/Cargo.toml
··· 8 8 [dependencies] 9 9 clap = { version = "4.5.1", features = ["derive", "color"] } 10 10 nix = { version = "0.28.0", features = ["hostname"] } 11 + phoenix_channels_client = { git = "https://github.com/liveview-native/phoenix-channels-client.git", version = "0.9.0" } 11 12 reqwest = { version = "0.11", default-features = false, features = ["json", "rustls-tls"] } 12 13 serde = { version = "1.0", features = ["derive"] } 14 + serde_json = "1.0.116" 13 15 strum = { version = "0.26", features = ["derive"] } 14 16 tokio = { version = "1", features = ["full"] } 17 + tokio-stream = { version = "0.1.15", features = ["full"] } 18 + tokio-tungstenite = { version = "0.21.0", features = ["rustls", "rustls-tls-native-roots", "tokio-rustls"] } 15 19 toml = "0.8.12" 20 + url = "2.5.0" 16 21 xdg = "2.5.2"
+9 -4
client/src/main.rs
··· 72 72 subcommand_help_heading = "Tree commands" 73 73 )] 74 74 enum TreeCommands { 75 + Daemon {}, 76 + 75 77 Info {}, 76 78 77 79 Reboot { ··· 172 174 let config = config.name(cli.name).seed_type(cli.seed_type).url(cli.url); 173 175 174 176 let tree = Tree::new(&config).await?; 175 - let seed = &tree.seed; 177 + let seed = &tree.seed.as_ref(); 176 178 177 179 match &cli.action { 178 180 Actions::Seed { action } => match action { 179 181 SeedCommands::Activate { mode, .. } => { 180 182 let mode = mode.clone().or(config.mode); 181 - seed.activate(mode).expect("failed to activate"); 183 + seed.unwrap().activate(mode).expect("failed to activate"); 182 184 } 183 185 184 186 SeedCommands::Download {} => { 185 - seed.realize().expect("failed to realize"); 187 + seed.unwrap().realize().expect("failed to realize"); 186 188 } 187 189 }, 188 190 189 191 Actions::Tree { action } => match action { 192 + TreeCommands::Daemon {} => tree.daemon().await.unwrap(), 193 + 190 194 TreeCommands::Info {} => tree.info(), 191 195 192 196 TreeCommands::Reboot { yes } => { ··· 198 202 tree.info(); 199 203 200 204 let mode = mode.clone().or(config.mode); 201 - seed.realize() 205 + seed.unwrap() 206 + .realize() 202 207 .expect("failed to realize") 203 208 .activate(mode) 204 209 .expect("failed to activate");
+29 -17
client/src/sower.rs
··· 1 1 use crate::*; 2 2 3 + pub mod daemon; 4 + 3 5 use clap::ValueEnum; 4 6 use serde::Deserialize; 5 7 use std::env; ··· 91 93 #[derive(Clone, Debug)] 92 94 pub struct Sower { 93 95 pub url: String, 96 + pub api_url: String, 97 + pub channels_url: String, 94 98 } 95 99 96 100 impl Sower { 97 101 pub fn new(config: &Config) -> Result<Sower, Box<dyn std::error::Error>> { 98 - let seed_url = format!( 99 - "{}/api/seeds/latest", 100 - config.url.clone().expect("URL is required") 101 - ); 102 + let url = config.url.clone().expect("URL is required"); 103 + let api_url = format!("{}/api", url); 104 + let channels_url = format!("{}/client/websocket", url.replace("http", "ws")); 102 105 103 - Ok(Self { url: seed_url }) 106 + Ok(Self { 107 + url, 108 + api_url, 109 + channels_url, 110 + }) 104 111 } 105 112 106 - pub async fn find_seed( 107 - &self, 108 - name: String, 109 - seed_type: SeedType, 110 - ) -> Result<Seed, Box<dyn std::error::Error>> { 113 + pub async fn find_seed(&self, name: String, seed_type: SeedType) -> Option<Seed> { 111 114 let client = reqwest::Client::new(); 112 - Ok(client 113 - .get(&self.url) 115 + 116 + match client 117 + .get(format!("{}/seeds/latest", &self.url)) 114 118 .query(&[("name", name), ("type", seed_type.to_string())]) 115 119 .send() 116 - .await? 117 - .json::<Seed>() 118 - .await?) 120 + .await 121 + { 122 + Ok(result) => { 123 + if let Ok(seed) = result.json::<Seed>().await { 124 + Some(seed) 125 + } else { 126 + None 127 + } 128 + } 129 + Err(_) => None, 130 + } 119 131 } 120 132 } 121 133 122 134 #[derive(Debug)] 123 135 pub struct Tree { 124 136 pub name: String, 125 - pub seed: Seed, 137 + pub seed: Option<Seed>, 126 138 pub seed_type: SeedType, 127 139 pub sower: Sower, 128 140 } ··· 147 159 name: name.clone(), 148 160 seed_type, 149 161 sower: sower.clone(), 150 - seed: sower.find_seed(name, seed_type).await?, 162 + seed: sower.find_seed(name, seed_type).await, 151 163 }) 152 164 } 153 165
+87
client/src/sower/daemon.rs
··· 1 + use super::Tree; 2 + 3 + use std::time::Duration; 4 + 5 + use phoenix_channels_client::url::Url; 6 + use serde_json::json; 7 + 8 + use phoenix_channels_client::{Event, EventPayload, EventsError, Payload, Socket, Topic}; 9 + 10 + impl Tree { 11 + pub async fn daemon(&self) -> Result<(), std::io::Error> { 12 + dbg!(&self.sower.channels_url); 13 + 14 + // URL with params for authentication 15 + let url = Url::parse(&self.sower.channels_url).unwrap(); 16 + 17 + // Create a socket 18 + let socket = Socket::spawn(url, None).unwrap(); 19 + 20 + // Connect the socket 21 + socket.connect(Duration::from_secs(10)).await.unwrap(); 22 + 23 + // Create a channel with no params 24 + let topic = Topic::from_string("tree:all".to_string()); 25 + let channel = socket.channel(topic.clone(), None).await.unwrap(); 26 + //let some_event_channel = channel.clone(); 27 + 28 + // Events are received as a broadcast with the name of the event and payload associated with the event 29 + let events = channel.events(); 30 + tokio::spawn(async move { 31 + loop { 32 + match events.event().await { 33 + Ok(EventPayload { event, payload }) => match event { 34 + Event::User { 35 + user: user_event_name, 36 + } => println!( 37 + "channel {} event {} sent with payload {:#?}", 38 + topic, user_event_name, payload 39 + ), 40 + Event::Phoenix { phoenix } => println!("channel {} {}", topic, phoenix), 41 + }, 42 + Err(events_error) => match events_error { 43 + EventsError::NoMoreEvents => break, 44 + EventsError::MissedEvents { missed_event_count } => { 45 + eprintln!("{} events missed on channel {}", missed_event_count, topic); 46 + } 47 + }, 48 + } 49 + } 50 + }); 51 + // Join the channel with a 15 second timeout 52 + channel.join(Duration::from_secs(15)).await.unwrap(); 53 + 54 + // Send a message, waiting for a reply until timeout 55 + let reply_payload = channel 56 + .call( 57 + Event::from_string("reply_ok_tuple".to_string()), 58 + Payload::json_from_serialized(json!({ "name": "foo", "message": "hi"}).to_string()) 59 + .unwrap(), 60 + Duration::from_secs(5), 61 + ) 62 + .await 63 + .unwrap(); 64 + 65 + dbg!(reply_payload); 66 + 67 + // Send a message, not waiting for a reply 68 + channel 69 + .cast( 70 + Event::from_string("noreply".to_string()), 71 + Payload::json_from_serialized( 72 + json!({ "name": "foo", "message": "jeez"}).to_string(), 73 + ) 74 + .unwrap(), 75 + ) 76 + .await 77 + .unwrap(); 78 + 79 + // Leave the channel 80 + channel.leave().await.unwrap(); 81 + 82 + // Disconnect the socket 83 + socket.disconnect().await.unwrap(); 84 + 85 + Ok(()) 86 + } 87 + }
+3 -3
flake.lock
··· 353 353 }, 354 354 "services-flake": { 355 355 "locked": { 356 - "lastModified": 1714460791, 357 - "narHash": "sha256-kchvJP4Ih+Z/YG8Sd6CvbNMss9MCDlrt4sgTKL5czpY=", 356 + "lastModified": 1714900811, 357 + "narHash": "sha256-Fchg/W+n9jJJPYQjZFWVB8aT7WwSH+9PsLGkT+qAioY=", 358 358 "owner": "juspay", 359 359 "repo": "services-flake", 360 - "rev": "8d64a960367e07f7d21fa890f77f56daabc5d8bd", 360 + "rev": "1f7c1cdc98934ce3ff08fd6106155806827c9d47", 361 361 "type": "github" 362 362 }, 363 363 "original": {
+4 -2
flake.nix
··· 74 74 pkgs.process-compose 75 75 pkgs.postgresql 76 76 77 - pkgs.cargo 78 77 pkgs.rustc 78 + pkgs.rustfmt 79 + 80 + pkgs.cargo 79 81 pkgs.clippy 82 + pkgs.gdb 80 83 pkgs.rust-analyzer 81 - pkgs.rustfmt 82 84 ] 83 85 ++ lib.optionals pkgs.stdenv.isLinux [ pkgs.inotify-tools ] 84 86 ++ lib.optionals pkgs.stdenv.isDarwin [
+13
lib/sower_web/client_socket.ex
··· 1 + defmodule SowerWeb.ClientSocket do 2 + use Phoenix.Socket 3 + 4 + channel "tree:*", SowerWeb.TreeChannel 5 + 6 + @impl true 7 + def connect(_params, socket, _connect_info) do 8 + {:ok, socket} 9 + end 10 + 11 + @impl true 12 + def id(_socket), do: nil 13 + end
+18 -19
lib/sower_web/endpoint.ex
··· 2 2 use Phoenix.Endpoint, otp_app: :sower 3 3 use Sentry.PlugCapture 4 4 5 - plug(SowerWeb.Plug.HealthCheck) 5 + plug SowerWeb.Plug.HealthCheck 6 6 7 7 # The session will be stored in the cookie and signed, 8 8 # this means its contents can be read but not tampered with. ··· 14 14 same_site: "Lax" 15 15 ] 16 16 17 - socket("/live", Phoenix.LiveView.Socket, websocket: [connect_info: [session: @session_options]]) 17 + socket "/live", Phoenix.LiveView.Socket, websocket: [connect_info: [session: @session_options]] 18 + 19 + socket "/client", SowerWeb.ClientSocket, websocket: true, longpoll: true 18 20 19 21 # Serve at "/" the static files from "priv/static" directory. 20 22 # 21 23 # You should set gzip to true if you are running phx.digest 22 24 # when deploying your static files in production. 23 - plug(Plug.Static, 25 + plug Plug.Static, 24 26 at: "/", 25 27 from: :sower, 26 28 gzip: false, 27 29 only: SowerWeb.static_paths() 28 - ) 29 30 30 31 # Code reloading can be explicitly enabled under the 31 32 # :code_reloader configuration of your endpoint. 32 33 if code_reloading? do 33 - socket("/phoenix/live_reload/socket", Phoenix.LiveReloader.Socket) 34 - plug(Phoenix.LiveReloader) 35 - plug(Phoenix.CodeReloader) 36 - plug(Phoenix.Ecto.CheckRepoStatus, otp_app: :sower) 34 + socket "/phoenix/live_reload/socket", Phoenix.LiveReloader.Socket 35 + plug Phoenix.LiveReloader 36 + plug Phoenix.CodeReloader 37 + plug Phoenix.Ecto.CheckRepoStatus, otp_app: :sower 37 38 end 38 39 39 - plug(Phoenix.LiveDashboard.RequestLogger, 40 + plug Phoenix.LiveDashboard.RequestLogger, 40 41 param_key: "request_logger", 41 42 cookie_key: "request_logger" 42 - ) 43 43 44 - plug(Plug.RequestId) 45 - plug(Plug.Telemetry, event_prefix: [:phoenix, :endpoint]) 44 + plug Plug.RequestId 45 + plug Plug.Telemetry, event_prefix: [:phoenix, :endpoint] 46 46 47 - plug(Plug.Parsers, 47 + plug Plug.Parsers, 48 48 parsers: [:urlencoded, :multipart, :json], 49 49 pass: ["*/*"], 50 50 json_decoder: Phoenix.json_library() 51 - ) 52 51 53 - plug(Sentry.PlugContext) 52 + plug Sentry.PlugContext 54 53 55 - plug(Plug.MethodOverride) 56 - plug(Plug.Head) 57 - plug(Plug.Session, @session_options) 58 - plug(SowerWeb.Router) 54 + plug Plug.MethodOverride 55 + plug Plug.Head 56 + plug Plug.Session, @session_options 57 + plug SowerWeb.Router 59 58 end
+15
lib/sower_web/tree_channel.ex
··· 1 + defmodule SowerWeb.TreeChannel do 2 + use Phoenix.Channel 3 + 4 + def join("tree:all", _message, socket) do 5 + {:ok, socket} 6 + end 7 + 8 + def join("tree:" <> tree_name, _params, _socket) do 9 + {:error, %{reason: "unauthorized"}} 10 + end 11 + 12 + def handle_in("reply_ok_tuple", body, socket) do 13 + {:reply, {:ok, "success"}, socket} 14 + end 15 + end