A better Rust ATProto crate

deserialization fix for cids in Data and RawData

Orual c3a48931 f054f0bb

Changed files
+500 -343
crates
jacquard
jacquard-common
jacquard-identity
jacquard-oauth
examples
+350 -300
Cargo.lock
··· 50 50 51 51 [[package]] 52 52 name = "aho-corasick" 53 - version = "1.1.3" 53 + version = "1.1.4" 54 54 source = "registry+https://github.com/rust-lang/crates.io-index" 55 - checksum = "8e60d3430d3a69478ad0993f19238d2df97c507009a52b3c10addcd7f6bcb916" 55 + checksum = "ddd31a130427c27518df266943a5308ed92d4b226cc639f5a8f1002816174301" 56 56 dependencies = [ 57 57 "memchr", 58 58 ] ··· 62 62 version = "0.1.3" 63 63 source = "registry+https://github.com/rust-lang/crates.io-index" 64 64 checksum = "250f629c0161ad8107cf89319e990051fae62832fd343083bea452d93e2205fd" 65 + 66 + [[package]] 67 + name = "aligned" 68 + version = "0.4.2" 69 + source = "registry+https://github.com/rust-lang/crates.io-index" 70 + checksum = "377e4c0ba83e4431b10df45c1d4666f178ea9c552cac93e60c3a88bf32785923" 71 + dependencies = [ 72 + "as-slice", 73 + ] 65 74 66 75 [[package]] 67 76 name = "aligned-vec" ··· 137 146 138 147 [[package]] 139 148 name = "anstyle-query" 140 - version = "1.1.4" 149 + version = "1.1.5" 141 150 source = "registry+https://github.com/rust-lang/crates.io-index" 142 - checksum = "9e231f6134f61b71076a3eab506c379d4f36122f2af15a9ff04415ea4c3339e2" 151 + checksum = "40c48f72fd53cd289104fc64099abca73db4166ad86ea0b4341abe65af83dadc" 143 152 dependencies = [ 144 - "windows-sys 0.60.2", 153 + "windows-sys 0.61.2", 145 154 ] 146 155 147 156 [[package]] 148 157 name = "anstyle-wincon" 149 - version = "3.0.10" 158 + version = "3.0.11" 150 159 source = "registry+https://github.com/rust-lang/crates.io-index" 151 - checksum = "3e0633414522a32ffaac8ac6cc8f748e090c5717661fddeea04219e2344f5f2a" 160 + checksum = "291e6a250ff86cd4a820112fb8898808a366d8f9f58ce16d1f538353ad55747d" 152 161 dependencies = [ 153 162 "anstyle", 154 163 "once_cell_polyfill", 155 - "windows-sys 0.60.2", 164 + "windows-sys 0.61.2", 156 165 ] 157 166 158 167 [[package]] ··· 175 184 dependencies = [ 176 185 "proc-macro2", 177 186 "quote", 178 - "syn 2.0.108", 187 + "syn 2.0.111", 179 188 ] 180 189 181 190 [[package]] ··· 185 194 checksum = "7c02d123df017efcdfbd739ef81735b36c5ba83ec3c59c80a9d7ecc718f92e50" 186 195 187 196 [[package]] 197 + name = "as-slice" 198 + version = "0.2.1" 199 + source = "registry+https://github.com/rust-lang/crates.io-index" 200 + checksum = "516b6b4f0e40d50dcda9365d53964ec74560ad4284da2e7fc97122cd83174516" 201 + dependencies = [ 202 + "stable_deref_trait", 203 + ] 204 + 205 + [[package]] 188 206 name = "ascii" 189 207 version = "1.1.0" 190 208 source = "registry+https://github.com/rust-lang/crates.io-index" ··· 192 210 193 211 [[package]] 194 212 name = "async-compression" 195 - version = "0.4.32" 213 + version = "0.4.35" 196 214 source = "registry+https://github.com/rust-lang/crates.io-index" 197 - checksum = "5a89bce6054c720275ac2432fbba080a66a2106a44a1b804553930ca6909f4e0" 215 + checksum = "07a926debf178f2d355197f9caddb08e54a9329d44748034bba349c5848cb519" 198 216 dependencies = [ 199 217 "compression-codecs", 200 218 "compression-core", ··· 211 229 dependencies = [ 212 230 "proc-macro2", 213 231 "quote", 214 - "syn 2.0.108", 232 + "syn 2.0.111", 215 233 ] 216 234 217 235 [[package]] ··· 234 252 version = "1.5.0" 235 253 source = "registry+https://github.com/rust-lang/crates.io-index" 236 254 checksum = "c08606f8c3cbf4ce6ec8e28fb0014a2c086708fe954eaa885384a6165172e7e8" 255 + 256 + [[package]] 257 + name = "av-scenechange" 258 + version = "0.14.1" 259 + source = "registry+https://github.com/rust-lang/crates.io-index" 260 + checksum = "0f321d77c20e19b92c39e7471cf986812cbb46659d2af674adc4331ef3f18394" 261 + dependencies = [ 262 + "aligned", 263 + "anyhow", 264 + "arg_enum_proc_macro", 265 + "arrayvec", 266 + "log", 267 + "num-rational", 268 + "num-traits", 269 + "pastey", 270 + "rayon", 271 + "thiserror 2.0.17", 272 + "v_frame", 273 + "y4m", 274 + ] 237 275 238 276 [[package]] 239 277 name = "av1-grain" ··· 260 298 261 299 [[package]] 262 300 name = "axum" 263 - version = "0.8.6" 301 + version = "0.8.7" 264 302 source = "registry+https://github.com/rust-lang/crates.io-index" 265 - checksum = "8a18ed336352031311f4e0b4dd2ff392d4fbb370777c9d18d7fc9d7359f73871" 303 + checksum = "5b098575ebe77cb6d14fc7f32749631a6e44edbef6b796f89b020e99ba20d425" 266 304 dependencies = [ 267 305 "axum-core", 268 306 "bytes", ··· 318 356 dependencies = [ 319 357 "proc-macro2", 320 358 "quote", 321 - "syn 2.0.108", 359 + "syn 2.0.111", 322 360 ] 323 361 324 362 [[package]] 325 363 name = "axum-test" 326 - version = "18.1.0" 364 + version = "18.4.1" 327 365 source = "registry+https://github.com/rust-lang/crates.io-index" 328 - checksum = "680e88effaafbb28675074f29cda0e984c984bed5eb513085c17caf7de564225" 366 + checksum = "3290e73c56c5cc4701cdd7d46b9ced1b4bd61c7e9f9c769a9e9e87ff617d75d2" 329 367 dependencies = [ 330 368 "anyhow", 331 369 "axum", ··· 410 448 411 449 [[package]] 412 450 name = "base64ct" 413 - version = "1.8.0" 451 + version = "1.8.1" 414 452 source = "registry+https://github.com/rust-lang/crates.io-index" 415 - checksum = "55248b47b0caf0546f7988906588779981c43bb1bc9d0c44087278f80cdb44ba" 453 + checksum = "0e050f626429857a27ddccb31e0aca21356bfa709c04041aefddac081a8f068a" 416 454 417 455 [[package]] 418 456 name = "bit_field" ··· 428 466 429 467 [[package]] 430 468 name = "bitstream-io" 431 - version = "2.6.0" 469 + version = "4.9.0" 432 470 source = "registry+https://github.com/rust-lang/crates.io-index" 433 - checksum = "6099cdc01846bc367c4e7dd630dc5966dccf36b652fae7a74e17b640411a91b2" 471 + checksum = "60d4bd9d1db2c6bdf285e223a7fa369d5ce98ec767dec949c6ca62863ce61757" 472 + dependencies = [ 473 + "core2", 474 + ] 434 475 435 476 [[package]] 436 477 name = "block-buffer" ··· 463 504 "proc-macro2", 464 505 "quote", 465 506 "rustversion", 466 - "syn 2.0.108", 507 + "syn 2.0.111", 467 508 ] 468 509 469 510 [[package]] 470 511 name = "borsh" 471 - version = "1.5.7" 512 + version = "1.6.0" 472 513 source = "registry+https://github.com/rust-lang/crates.io-index" 473 - checksum = "ad8646f98db542e39fc66e68a20b2144f6a732636df7c2354e74645faaa433ce" 514 + checksum = "d1da5ab77c1437701eeff7c88d968729e7766172279eab0676857b3d63af7a6f" 474 515 dependencies = [ 475 516 "cfg_aliases", 476 517 ] ··· 532 573 533 574 [[package]] 534 575 name = "built" 535 - version = "0.7.7" 576 + version = "0.8.0" 536 577 source = "registry+https://github.com/rust-lang/crates.io-index" 537 - checksum = "56ed6191a7e78c36abdb16ab65341eefd73d64d303fffccdbb00d51e4205967b" 578 + checksum = "f4ad8f11f288f48ca24471bbd51ac257aaeaaa07adae295591266b792902ae64" 538 579 539 580 [[package]] 540 581 name = "bumpalo" ··· 562 603 563 604 [[package]] 564 605 name = "bytes" 565 - version = "1.10.1" 606 + version = "1.11.0" 566 607 source = "registry+https://github.com/rust-lang/crates.io-index" 567 - checksum = "d71b6127be86fdcfddb610f7182ac57211d4b18a3e9c82eb2d17662f2227ad6a" 608 + checksum = "b35204fbdc0b3f4446b89fc1ac2cf84a8a68971995d0bf2e925ec7cd960f9cb3" 568 609 dependencies = [ 569 610 "serde", 570 611 ] 571 612 572 613 [[package]] 573 614 name = "bytesize" 574 - version = "2.1.0" 615 + version = "2.3.1" 616 + source = "registry+https://github.com/rust-lang/crates.io-index" 617 + checksum = "6bd91ee7b2422bcb158d90ef4d14f75ef67f340943fc4149891dcce8f8b972a3" 618 + 619 + [[package]] 620 + name = "cast" 621 + version = "0.3.0" 575 622 source = "registry+https://github.com/rust-lang/crates.io-index" 576 - checksum = "f5c434ae3cf0089ca203e9019ebe529c47ff45cefe8af7c85ecb734ef541822f" 623 + checksum = "37b2a672a2cb129a2e41c10b1224bb368f9f37a2b16b612598138befd7b37eb5" 577 624 578 625 [[package]] 579 626 name = "cbor4ii" ··· 586 633 587 634 [[package]] 588 635 name = "cc" 589 - version = "1.2.43" 636 + version = "1.2.49" 590 637 source = "registry+https://github.com/rust-lang/crates.io-index" 591 - checksum = "739eb0f94557554b3ca9a86d2d37bebd49c5e6d0c1d2bda35ba5bdac830befc2" 638 + checksum = "90583009037521a116abf44494efecd645ba48b6622457080f080b85544e2215" 592 639 dependencies = [ 593 640 "find-msvc-tools", 594 641 "jobserver", ··· 610 657 version = "1.1.0" 611 658 source = "registry+https://github.com/rust-lang/crates.io-index" 612 659 checksum = "6d43a04d8753f35258c91f8ec639f792891f748a1edbd759cf1dcea3382ad83c" 613 - 614 - [[package]] 615 - name = "cfg-expr" 616 - version = "0.15.8" 617 - source = "registry+https://github.com/rust-lang/crates.io-index" 618 - checksum = "d067ad48b8650848b989a59a86c6c36a995d02d2bf778d45c3c5d57bc2718f02" 619 - dependencies = [ 620 - "smallvec", 621 - "target-lexicon", 622 - ] 623 660 624 661 [[package]] 625 662 name = "cfg-if" ··· 696 733 697 734 [[package]] 698 735 name = "clap" 699 - version = "4.5.50" 736 + version = "4.5.53" 700 737 source = "registry+https://github.com/rust-lang/crates.io-index" 701 - checksum = "0c2cfd7bf8a6017ddaa4e32ffe7403d547790db06bd171c1c53926faab501623" 738 + checksum = "c9e340e012a1bf4935f5282ed1436d1489548e8f72308207ea5df0e23d2d03f8" 702 739 dependencies = [ 703 740 "clap_builder", 704 741 "clap_derive", ··· 706 743 707 744 [[package]] 708 745 name = "clap_builder" 709 - version = "4.5.50" 746 + version = "4.5.53" 710 747 source = "registry+https://github.com/rust-lang/crates.io-index" 711 - checksum = "0a4c05b9e80c5ccd3a7ef080ad7b6ba7d6fc00a985b8b157197075677c82c7a0" 748 + checksum = "d76b5d13eaa18c901fd2f7fca939fefe3a0727a953561fefdf3b2922b8569d00" 712 749 dependencies = [ 713 750 "anstream", 714 751 "anstyle", ··· 718 755 719 756 [[package]] 720 757 name = "clap_complete" 721 - version = "4.5.59" 758 + version = "4.5.61" 722 759 source = "registry+https://github.com/rust-lang/crates.io-index" 723 - checksum = "2348487adcd4631696ced64ccdb40d38ac4d31cae7f2eec8817fcea1b9d1c43c" 760 + checksum = "39615915e2ece2550c0149addac32fb5bd312c657f43845bb9088cb9c8a7c992" 724 761 dependencies = [ 725 762 "clap", 726 763 ] ··· 734 771 "heck 0.5.0", 735 772 "proc-macro2", 736 773 "quote", 737 - "syn 2.0.108", 774 + "syn 2.0.111", 738 775 ] 739 776 740 777 [[package]] ··· 786 823 787 824 [[package]] 788 825 name = "compression-codecs" 789 - version = "0.4.31" 826 + version = "0.4.34" 790 827 source = "registry+https://github.com/rust-lang/crates.io-index" 791 - checksum = "ef8a506ec4b81c460798f572caead636d57d3d7e940f998160f52bd254bf2d23" 828 + checksum = "34a3cbbb8b6eca96f3a5c4bf6938d5b27ced3675d69f95bb51948722870bc323" 792 829 dependencies = [ 793 830 "compression-core", 794 831 "flate2", ··· 797 834 798 835 [[package]] 799 836 name = "compression-core" 800 - version = "0.4.29" 837 + version = "0.4.31" 801 838 source = "registry+https://github.com/rust-lang/crates.io-index" 802 - checksum = "e47641d3deaf41fb1538ac1f54735925e275eaf3bf4d55c81b137fba797e5cbb" 839 + checksum = "75984efb6ed102a0d42db99afb6c1948f0380d1d91808d5529916e6c08b49d8d" 803 840 804 841 [[package]] 805 842 name = "console" ··· 1012 1049 dependencies = [ 1013 1050 "proc-macro2", 1014 1051 "quote", 1015 - "syn 2.0.108", 1052 + "syn 2.0.111", 1016 1053 ] 1017 1054 1018 1055 [[package]] ··· 1036 1073 "proc-macro2", 1037 1074 "quote", 1038 1075 "strsim", 1039 - "syn 2.0.108", 1076 + "syn 2.0.111", 1040 1077 ] 1041 1078 1042 1079 [[package]] ··· 1047 1084 dependencies = [ 1048 1085 "darling_core", 1049 1086 "quote", 1050 - "syn 2.0.108", 1087 + "syn 2.0.111", 1051 1088 ] 1052 1089 1053 1090 [[package]] ··· 1087 1124 checksum = "8d162beedaa69905488a8da94f5ac3edb4dd4788b732fadb7bd120b2625c1976" 1088 1125 dependencies = [ 1089 1126 "data-encoding", 1090 - "syn 2.0.108", 1127 + "syn 2.0.111", 1091 1128 ] 1092 1129 1093 1130 [[package]] ··· 1138 1175 dependencies = [ 1139 1176 "proc-macro2", 1140 1177 "quote", 1141 - "syn 2.0.108", 1178 + "syn 2.0.111", 1142 1179 "unicode-xid", 1143 1180 ] 1144 1181 ··· 1174 1211 dependencies = [ 1175 1212 "proc-macro2", 1176 1213 "quote", 1177 - "syn 2.0.108", 1214 + "syn 2.0.111", 1178 1215 ] 1179 1216 1180 1217 [[package]] ··· 1293 1330 "heck 0.5.0", 1294 1331 "proc-macro2", 1295 1332 "quote", 1296 - "syn 2.0.108", 1333 + "syn 2.0.111", 1297 1334 ] 1298 1335 1299 1336 [[package]] ··· 1313 1350 dependencies = [ 1314 1351 "proc-macro2", 1315 1352 "quote", 1316 - "syn 2.0.108", 1353 + "syn 2.0.111", 1317 1354 ] 1318 1355 1319 1356 [[package]] ··· 1324 1361 1325 1362 [[package]] 1326 1363 name = "erased-serde" 1327 - version = "0.4.8" 1364 + version = "0.4.9" 1328 1365 source = "registry+https://github.com/rust-lang/crates.io-index" 1329 - checksum = "259d404d09818dec19332e31d94558aeb442fea04c817006456c24b5460bbd4b" 1366 + checksum = "89e8918065695684b2b0702da20382d5ae6065cf3327bc2d6436bd49a71ce9f3" 1330 1367 dependencies = [ 1331 1368 "serde", 1332 1369 "serde_core", ··· 1345 1382 1346 1383 [[package]] 1347 1384 name = "expect-json" 1348 - version = "1.5.0" 1385 + version = "1.7.1" 1349 1386 source = "registry+https://github.com/rust-lang/crates.io-index" 1350 - checksum = "7519e78573c950576b89eb4f4fe82aedf3a80639245afa07e3ee3d199dcdb29e" 1387 + checksum = "422e7906e79941e5ac58c64dfd2da03e6ae3de62227f87606fbbe125d91080f9" 1351 1388 dependencies = [ 1352 1389 "chrono", 1353 1390 "email_address", 1354 1391 "expect-json-macros", 1355 1392 "num", 1393 + "regex", 1356 1394 "serde", 1357 1395 "serde_json", 1358 1396 "thiserror 2.0.17", ··· 1362 1400 1363 1401 [[package]] 1364 1402 name = "expect-json-macros" 1365 - version = "1.5.0" 1403 + version = "1.7.1" 1366 1404 source = "registry+https://github.com/rust-lang/crates.io-index" 1367 - checksum = "7bf7f5979e98460a0eb412665514594f68f366a32b85fa8d7ffb65bb1edee6a0" 1405 + checksum = "e6b515b7f10f1e61bfd938522e9884509b82060af2016153f5b3d6f44d6da89c" 1368 1406 dependencies = [ 1369 1407 "proc-macro2", 1370 1408 "quote", 1371 - "syn 2.0.108", 1409 + "syn 2.0.111", 1372 1410 ] 1373 1411 1374 1412 [[package]] 1375 1413 name = "exr" 1376 - version = "1.73.0" 1414 + version = "1.74.0" 1377 1415 source = "registry+https://github.com/rust-lang/crates.io-index" 1378 - checksum = "f83197f59927b46c04a183a619b7c29df34e63e63c7869320862268c0ef687e0" 1416 + checksum = "4300e043a56aa2cb633c01af81ca8f699a321879a7854d3896a0ba89056363be" 1379 1417 dependencies = [ 1380 1418 "bit_field", 1381 1419 "half", ··· 1409 1447 dependencies = [ 1410 1448 "proc-macro2", 1411 1449 "quote", 1412 - "syn 2.0.108", 1450 + "syn 2.0.111", 1413 1451 ] 1414 1452 1415 1453 [[package]] ··· 1451 1489 1452 1490 [[package]] 1453 1491 name = "find-msvc-tools" 1454 - version = "0.1.4" 1492 + version = "0.1.5" 1455 1493 source = "registry+https://github.com/rust-lang/crates.io-index" 1456 - checksum = "52051878f80a721bb68ebfbc930e07b65ba72f2da88968ea5c06fd6ca3d3a127" 1494 + checksum = "3a3076410a55c90011c298b04d0cfa770b00fa04e1e3c97d3f6c9de105a03844" 1457 1495 1458 1496 [[package]] 1459 1497 name = "flate2" ··· 1572 1610 dependencies = [ 1573 1611 "proc-macro2", 1574 1612 "quote", 1575 - "syn 2.0.108", 1613 + "syn 2.0.111", 1576 1614 ] 1577 1615 1578 1616 [[package]] ··· 1659 1697 1660 1698 [[package]] 1661 1699 name = "gif" 1662 - version = "0.13.3" 1700 + version = "0.14.1" 1663 1701 source = "registry+https://github.com/rust-lang/crates.io-index" 1664 - checksum = "4ae047235e33e2829703574b54fdec96bfbad892062d97fed2f76022287de61b" 1702 + checksum = "f5df2ba84018d80c213569363bdcd0c64e6933c67fe4c1d60ecf822971a3c35e" 1665 1703 dependencies = [ 1666 1704 "color_quant", 1667 1705 "weezl", ··· 1739 1777 "futures-core", 1740 1778 "futures-sink", 1741 1779 "http", 1742 - "indexmap 2.12.0", 1780 + "indexmap 2.12.1", 1743 1781 "slab", 1744 1782 "tokio", 1745 1783 "tokio-util", ··· 1780 1818 1781 1819 [[package]] 1782 1820 name = "hashbrown" 1783 - version = "0.16.0" 1821 + version = "0.16.1" 1784 1822 source = "registry+https://github.com/rust-lang/crates.io-index" 1785 - checksum = "5419bdc4f6a9207fbeba6d11b604d481addf78ecd10c11ad51e76c2f6482748d" 1823 + checksum = "841d1cc9bed7f9236f321df977030373f4a4163ae1a7dbfe1a51a2c1a51d9100" 1786 1824 1787 1825 [[package]] 1788 1826 name = "heapless" ··· 1893 1931 "markup5ever", 1894 1932 "proc-macro2", 1895 1933 "quote", 1896 - "syn 2.0.108", 1934 + "syn 2.0.111", 1897 1935 ] 1898 1936 1899 1937 [[package]] 1900 1938 name = "http" 1901 - version = "1.3.1" 1939 + version = "1.4.0" 1902 1940 source = "registry+https://github.com/rust-lang/crates.io-index" 1903 - checksum = "f4a85d31aea989eead29a3aaf9e1115a180df8282431156e533de47660892565" 1941 + checksum = "e3ba2a386d7f85a81f119ad7498ebe444d2e22c2af0b86b069416ace48b3311a" 1904 1942 dependencies = [ 1905 1943 "bytes", 1906 - "fnv", 1907 1944 "itoa", 1908 1945 ] 1909 1946 ··· 1944 1981 1945 1982 [[package]] 1946 1983 name = "hyper" 1947 - version = "1.7.0" 1984 + version = "1.8.1" 1948 1985 source = "registry+https://github.com/rust-lang/crates.io-index" 1949 - checksum = "eb3aa54a13a0dfe7fbe3a59e0c76093041720fdc77b110cc0fc260fafb4dc51e" 1986 + checksum = "2ab2d4f250c3d7b1c9fcdff1cece94ea4e2dfbec68614f7b87cb205f24ca9d11" 1950 1987 dependencies = [ 1951 1988 "atomic-waker", 1952 1989 "bytes", ··· 1984 2021 1985 2022 [[package]] 1986 2023 name = "hyper-util" 1987 - version = "0.1.17" 2024 + version = "0.1.19" 1988 2025 source = "registry+https://github.com/rust-lang/crates.io-index" 1989 - checksum = "3c6995591a8f1380fcb4ba966a252a4b29188d51d2b89e3a252f5305be65aea8" 2026 + checksum = "727805d60e7938b76b826a6ef209eb70eaa1812794f9424d4a4e2d740662df5f" 1990 2027 dependencies = [ 1991 2028 "base64 0.22.1", 1992 2029 "bytes", ··· 2034 2071 2035 2072 [[package]] 2036 2073 name = "icu_collections" 2037 - version = "2.0.0" 2074 + version = "2.1.1" 2038 2075 source = "registry+https://github.com/rust-lang/crates.io-index" 2039 - checksum = "200072f5d0e3614556f94a9930d5dc3e0662a652823904c3a75dc3b0af7fee47" 2076 + checksum = "4c6b649701667bbe825c3b7e6388cb521c23d88644678e83c0c4d0a621a34b43" 2040 2077 dependencies = [ 2041 2078 "displaydoc", 2042 2079 "potential_utf", ··· 2047 2084 2048 2085 [[package]] 2049 2086 name = "icu_locale_core" 2050 - version = "2.0.0" 2087 + version = "2.1.1" 2051 2088 source = "registry+https://github.com/rust-lang/crates.io-index" 2052 - checksum = "0cde2700ccaed3872079a65fb1a78f6c0a36c91570f28755dda67bc8f7d9f00a" 2089 + checksum = "edba7861004dd3714265b4db54a3c390e880ab658fec5f7db895fae2046b5bb6" 2053 2090 dependencies = [ 2054 2091 "displaydoc", 2055 2092 "litemap", ··· 2060 2097 2061 2098 [[package]] 2062 2099 name = "icu_normalizer" 2063 - version = "2.0.0" 2100 + version = "2.1.1" 2064 2101 source = "registry+https://github.com/rust-lang/crates.io-index" 2065 - checksum = "436880e8e18df4d7bbc06d58432329d6458cc84531f7ac5f024e93deadb37979" 2102 + checksum = "5f6c8828b67bf8908d82127b2054ea1b4427ff0230ee9141c54251934ab1b599" 2066 2103 dependencies = [ 2067 - "displaydoc", 2068 2104 "icu_collections", 2069 2105 "icu_normalizer_data", 2070 2106 "icu_properties", ··· 2075 2111 2076 2112 [[package]] 2077 2113 name = "icu_normalizer_data" 2078 - version = "2.0.0" 2114 + version = "2.1.1" 2079 2115 source = "registry+https://github.com/rust-lang/crates.io-index" 2080 - checksum = "00210d6893afc98edb752b664b8890f0ef174c8adbb8d0be9710fa66fbbf72d3" 2116 + checksum = "7aedcccd01fc5fe81e6b489c15b247b8b0690feb23304303a9e560f37efc560a" 2081 2117 2082 2118 [[package]] 2083 2119 name = "icu_properties" 2084 - version = "2.0.1" 2120 + version = "2.1.1" 2085 2121 source = "registry+https://github.com/rust-lang/crates.io-index" 2086 - checksum = "016c619c1eeb94efb86809b015c58f479963de65bdb6253345c1a1276f22e32b" 2122 + checksum = "e93fcd3157766c0c8da2f8cff6ce651a31f0810eaa1c51ec363ef790bbb5fb99" 2087 2123 dependencies = [ 2088 - "displaydoc", 2089 2124 "icu_collections", 2090 2125 "icu_locale_core", 2091 2126 "icu_properties_data", 2092 2127 "icu_provider", 2093 - "potential_utf", 2094 2128 "zerotrie", 2095 2129 "zerovec", 2096 2130 ] 2097 2131 2098 2132 [[package]] 2099 2133 name = "icu_properties_data" 2100 - version = "2.0.1" 2134 + version = "2.1.1" 2101 2135 source = "registry+https://github.com/rust-lang/crates.io-index" 2102 - checksum = "298459143998310acd25ffe6810ed544932242d3f07083eee1084d83a71bd632" 2136 + checksum = "02845b3647bb045f1100ecd6480ff52f34c35f82d9880e029d329c21d1054899" 2103 2137 2104 2138 [[package]] 2105 2139 name = "icu_provider" 2106 - version = "2.0.0" 2140 + version = "2.1.1" 2107 2141 source = "registry+https://github.com/rust-lang/crates.io-index" 2108 - checksum = "03c80da27b5f4187909049ee2d72f276f0d9f99a42c306bd0131ecfe04d8e5af" 2142 + checksum = "85962cf0ce02e1e0a629cc34e7ca3e373ce20dda4c4d7294bbd0bf1fdb59e614" 2109 2143 dependencies = [ 2110 2144 "displaydoc", 2111 2145 "icu_locale_core", 2112 - "stable_deref_trait", 2113 - "tinystr", 2114 2146 "writeable", 2115 2147 "yoke", 2116 2148 "zerofrom", ··· 2147 2179 2148 2180 [[package]] 2149 2181 name = "image" 2150 - version = "0.25.8" 2182 + version = "0.25.9" 2151 2183 source = "registry+https://github.com/rust-lang/crates.io-index" 2152 - checksum = "529feb3e6769d234375c4cf1ee2ce713682b8e76538cb13f9fc23e1400a591e7" 2184 + checksum = "e6506c6c10786659413faa717ceebcb8f70731c0a60cbae39795fdf114519c1a" 2153 2185 dependencies = [ 2154 2186 "bytemuck", 2155 2187 "byteorder-lite", ··· 2165 2197 "rayon", 2166 2198 "rgb", 2167 2199 "tiff 0.10.3", 2168 - "zune-core", 2169 - "zune-jpeg", 2200 + "zune-core 0.5.0", 2201 + "zune-jpeg 0.5.6", 2170 2202 ] 2171 2203 2172 2204 [[package]] ··· 2198 2230 2199 2231 [[package]] 2200 2232 name = "indexmap" 2201 - version = "2.12.0" 2233 + version = "2.12.1" 2202 2234 source = "registry+https://github.com/rust-lang/crates.io-index" 2203 - checksum = "6717a8d2a5a929a1a2eb43a12812498ed141a0bcfb7e8f7844fbdbe4303bba9f" 2235 + checksum = "0ad4bb2b565bca0645f4d68c5c9af97fba094e9791da685bf83cb5f3ce74acf2" 2204 2236 dependencies = [ 2205 2237 "equivalent", 2206 - "hashbrown 0.16.0", 2238 + "hashbrown 0.16.1", 2207 2239 "serde", 2208 2240 "serde_core", 2209 2241 ] ··· 2225 2257 dependencies = [ 2226 2258 "proc-macro2", 2227 2259 "quote", 2228 - "syn 2.0.108", 2260 + "syn 2.0.111", 2229 2261 ] 2230 2262 2231 2263 [[package]] ··· 2268 2300 2269 2301 [[package]] 2270 2302 name = "iri-string" 2271 - version = "0.7.8" 2303 + version = "0.7.9" 2272 2304 source = "registry+https://github.com/rust-lang/crates.io-index" 2273 - checksum = "dbc5ebe9c3a1a7a5127f920a418f7585e9e758e911d0466ed004f393b0e380b2" 2305 + checksum = "4f867b9d1d896b67beb18518eda36fdb77a32ea590de864f1325b294a6d14397" 2274 2306 dependencies = [ 2275 2307 "memchr", 2276 2308 "serde", ··· 2306 2338 2307 2339 [[package]] 2308 2340 name = "itertools" 2309 - version = "0.12.1" 2341 + version = "0.14.0" 2310 2342 source = "registry+https://github.com/rust-lang/crates.io-index" 2311 - checksum = "ba291022dbbd398a455acf126c1e341954079855bc60dfdda641363bd6922569" 2343 + checksum = "2b192c782037fadd9cfa75548310488aabdbf3d2da73885b31bd0abd03351285" 2312 2344 dependencies = [ 2313 2345 "either", 2314 2346 ] ··· 2340 2372 "regex", 2341 2373 "regex-lite", 2342 2374 "reqwest", 2375 + "ring", 2343 2376 "serde", 2344 2377 "serde_html_form", 2345 2378 "serde_json", ··· 2432 2465 "regex", 2433 2466 "regex-lite", 2434 2467 "reqwest", 2468 + "ring", 2435 2469 "serde", 2436 2470 "serde_bytes", 2437 2471 "serde_html_form", ··· 2461 2495 "quote", 2462 2496 "serde", 2463 2497 "serde_json", 2464 - "syn 2.0.108", 2498 + "syn 2.0.111", 2465 2499 "unicode-segmentation", 2466 2500 ] 2467 2501 ··· 2481 2515 "n0-future", 2482 2516 "percent-encoding", 2483 2517 "reqwest", 2518 + "ring", 2484 2519 "serde", 2485 2520 "serde_html_form", 2486 2521 "serde_json", ··· 2511 2546 "reqwest", 2512 2547 "serde", 2513 2548 "serde_json", 2514 - "syn 2.0.108", 2549 + "syn 2.0.111", 2515 2550 "tempfile", 2516 2551 "thiserror 2.0.17", 2517 2552 "tokio", ··· 2541 2576 "serde_repr", 2542 2577 "serde_with", 2543 2578 "sha2", 2544 - "syn 2.0.108", 2579 + "syn 2.0.111", 2545 2580 "tempfile", 2546 2581 "thiserror 2.0.17", 2547 2582 "unicode-segmentation", ··· 2565 2600 "n0-future", 2566 2601 "p256", 2567 2602 "rand 0.8.5", 2603 + "ring", 2568 2604 "rouille", 2569 2605 "serde", 2570 2606 "serde_html_form", ··· 2686 2722 2687 2723 [[package]] 2688 2724 name = "js-sys" 2689 - version = "0.3.82" 2725 + version = "0.3.83" 2690 2726 source = "registry+https://github.com/rust-lang/crates.io-index" 2691 - checksum = "b011eec8cc36da2aab2d5cff675ec18454fad408585853910a202391cf9f8e65" 2727 + checksum = "464a3709c7f55f1f721e5389aa6ea4e3bc6aba669353300af094b29ffbdde1d8" 2692 2728 dependencies = [ 2693 2729 "once_cell", 2694 2730 "wasm-bindgen", ··· 2747 2783 2748 2784 [[package]] 2749 2785 name = "libc" 2750 - version = "0.2.177" 2786 + version = "0.2.178" 2751 2787 source = "registry+https://github.com/rust-lang/crates.io-index" 2752 - checksum = "2874a2af47a2325c2001a6e6fad9b16a53b802102b528163885171cf92b15976" 2788 + checksum = "37c93d8daa9d8a012fd8ab92f088405fb202ea0b6ab73ee2482ae66af4f42091" 2753 2789 2754 2790 [[package]] 2755 2791 name = "libfuzzer-sys" ··· 2798 2834 2799 2835 [[package]] 2800 2836 name = "litemap" 2801 - version = "0.8.0" 2837 + version = "0.8.1" 2802 2838 source = "registry+https://github.com/rust-lang/crates.io-index" 2803 - checksum = "241eaef5fd12c88705a01fc1066c48c4b36e0dd4377dcdc7ec3942cea7a69956" 2839 + checksum = "6373607a59f0be73a39b6fe456b8192fcc3585f602af20751600e974dd455e77" 2804 2840 2805 2841 [[package]] 2806 2842 name = "lock_api" ··· 2813 2849 2814 2850 [[package]] 2815 2851 name = "log" 2816 - version = "0.4.28" 2852 + version = "0.4.29" 2817 2853 source = "registry+https://github.com/rust-lang/crates.io-index" 2818 - checksum = "34080505efa8e45a4b816c349525ebe327ceaa8559756f0356cba97ef3bf7432" 2854 + checksum = "5e5032e24019045c762d3c0f28f5b6b8bbf38563a65908389bf7978758920897" 2819 2855 2820 2856 [[package]] 2821 2857 name = "loom" ··· 2955 2991 dependencies = [ 2956 2992 "proc-macro2", 2957 2993 "quote", 2958 - "syn 2.0.108", 2994 + "syn 2.0.111", 2959 2995 ] 2960 2996 2961 2997 [[package]] ··· 2994 3030 2995 3031 [[package]] 2996 3032 name = "minicov" 2997 - version = "0.3.7" 3033 + version = "0.3.8" 2998 3034 source = "registry+https://github.com/rust-lang/crates.io-index" 2999 - checksum = "f27fe9f1cc3c22e1687f9446c2083c4c5fc7f0bcf1c7a86bdbded14985895b4b" 3035 + checksum = "4869b6a491569605d66d3952bcdf03df789e5b536e5f0cf7758a7f08a55ae24d" 3000 3036 dependencies = [ 3001 3037 "cc", 3002 3038 "walkdir", ··· 3030 3066 3031 3067 [[package]] 3032 3068 name = "mio" 3033 - version = "1.1.0" 3069 + version = "1.1.1" 3034 3070 source = "registry+https://github.com/rust-lang/crates.io-index" 3035 - checksum = "69d83b0086dc8ecf3ce9ae2874b2d1290252e2a30720bea58a5c6639b0092873" 3071 + checksum = "a69bcab0ad47271a0234d9422b131806bf3968021e5dc9328caf2d4cd58557fc" 3036 3072 dependencies = [ 3037 3073 "libc", 3038 3074 "wasi", ··· 3041 3077 3042 3078 [[package]] 3043 3079 name = "moxcms" 3044 - version = "0.7.7" 3080 + version = "0.7.10" 3045 3081 source = "registry+https://github.com/rust-lang/crates.io-index" 3046 - checksum = "c588e11a3082784af229e23e8e4ecf5bcc6fbe4f69101e0421ce8d79da7f0b40" 3082 + checksum = "80986bbbcf925ebd3be54c26613d861255284584501595cf418320c078945608" 3047 3083 dependencies = [ 3048 3084 "num-traits", 3049 3085 "pxfm", ··· 3183 3219 3184 3220 [[package]] 3185 3221 name = "num-bigint-dig" 3186 - version = "0.8.4" 3222 + version = "0.8.6" 3187 3223 source = "registry+https://github.com/rust-lang/crates.io-index" 3188 - checksum = "dc84195820f291c7697304f3cbdadd1cb7199c0efc917ff5eafd71225c136151" 3224 + checksum = "e661dda6640fad38e827a6d4a310ff4763082116fe217f279885c97f511bb0b7" 3189 3225 dependencies = [ 3190 - "byteorder", 3191 3226 "lazy_static", 3192 3227 "libm", 3193 3228 "num-integer", ··· 3221 3256 dependencies = [ 3222 3257 "proc-macro2", 3223 3258 "quote", 3224 - "syn 2.0.108", 3259 + "syn 2.0.111", 3225 3260 ] 3226 3261 3227 3262 [[package]] ··· 3331 3366 checksum = "384b8ab6d37215f3c5301a95a4accb5d64aa607f1fcb26a11b5303878451b4fe" 3332 3367 3333 3368 [[package]] 3369 + name = "oorandom" 3370 + version = "11.1.5" 3371 + source = "registry+https://github.com/rust-lang/crates.io-index" 3372 + checksum = "d6790f58c7ff633d8771f42965289203411a5e5c68388703c06e14f24770b41e" 3373 + 3374 + [[package]] 3334 3375 name = "openssl-probe" 3335 3376 version = "0.1.6" 3336 3377 source = "registry+https://github.com/rust-lang/crates.io-index" ··· 3357 3398 "proc-macro2", 3358 3399 "proc-macro2-diagnostics", 3359 3400 "quote", 3360 - "syn 2.0.108", 3401 + "syn 2.0.111", 3361 3402 ] 3362 3403 3363 3404 [[package]] ··· 3424 3465 checksum = "57c0d7b74b563b49d38dae00a0c37d4d6de9b432382b2892f0574ddcae73fd0a" 3425 3466 3426 3467 [[package]] 3468 + name = "pastey" 3469 + version = "0.1.1" 3470 + source = "registry+https://github.com/rust-lang/crates.io-index" 3471 + checksum = "35fb2e5f958ec131621fdd531e9fc186ed768cbe395337403ae56c17a74c68ec" 3472 + 3473 + [[package]] 3427 3474 name = "pem-rfc7468" 3428 3475 version = "0.7.0" 3429 3476 source = "registry+https://github.com/rust-lang/crates.io-index" ··· 3493 3540 dependencies = [ 3494 3541 "proc-macro2", 3495 3542 "quote", 3496 - "syn 2.0.108", 3543 + "syn 2.0.111", 3497 3544 ] 3498 3545 3499 3546 [[package]] ··· 3563 3610 3564 3611 [[package]] 3565 3612 name = "potential_utf" 3566 - version = "0.1.3" 3613 + version = "0.1.4" 3567 3614 source = "registry+https://github.com/rust-lang/crates.io-index" 3568 - checksum = "84df19adbe5b5a0782edcab45899906947ab039ccf4573713735ee7de1e6b08a" 3615 + checksum = "b73949432f5e2a09657003c25bca5e19a0e9c84f8058ca374f49e0ebe605af77" 3569 3616 dependencies = [ 3570 3617 "zerovec", 3571 3618 ] ··· 3608 3655 checksum = "479ca8adacdd7ce8f1fb39ce9ecccbfe93a3f1344b3d0d97f20bc0196208f62b" 3609 3656 dependencies = [ 3610 3657 "proc-macro2", 3611 - "syn 2.0.108", 3658 + "syn 2.0.111", 3612 3659 ] 3613 3660 3614 3661 [[package]] ··· 3661 3708 dependencies = [ 3662 3709 "proc-macro2", 3663 3710 "quote", 3664 - "syn 2.0.108", 3711 + "syn 2.0.111", 3665 3712 "version_check", 3666 3713 "yansi", 3667 3714 ] ··· 3682 3729 checksum = "52717f9a02b6965224f95ca2a81e2e0c5c43baacd28ca057577988930b6c3d5b" 3683 3730 dependencies = [ 3684 3731 "quote", 3685 - "syn 2.0.108", 3732 + "syn 2.0.111", 3686 3733 ] 3687 3734 3688 3735 [[package]] 3689 3736 name = "pxfm" 3690 - version = "0.1.25" 3737 + version = "0.1.27" 3691 3738 source = "registry+https://github.com/rust-lang/crates.io-index" 3692 - checksum = "a3cbdf373972bf78df4d3b518d07003938e2c7d1fb5891e55f9cb6df57009d84" 3739 + checksum = "7186d3822593aa4393561d186d1393b3923e9d6163d3fbfd6e825e3e6cf3e6a8" 3693 3740 dependencies = [ 3694 3741 "num-traits", 3695 3742 ] ··· 3772 3819 3773 3820 [[package]] 3774 3821 name = "quote" 3775 - version = "1.0.41" 3822 + version = "1.0.42" 3776 3823 source = "registry+https://github.com/rust-lang/crates.io-index" 3777 - checksum = "ce25767e7b499d1b604768e7cde645d14cc8584231ea6b295e9c9eb22c02e1d1" 3824 + checksum = "a338cc41d27e6cc6dce6cefc13a0729dfbb81c262b1f519331575dd80ef3067f" 3778 3825 dependencies = [ 3779 3826 "proc-macro2", 3780 3827 ] ··· 3852 3899 3853 3900 [[package]] 3854 3901 name = "rav1e" 3855 - version = "0.7.1" 3902 + version = "0.8.1" 3856 3903 source = "registry+https://github.com/rust-lang/crates.io-index" 3857 - checksum = "cd87ce80a7665b1cce111f8a16c1f3929f6547ce91ade6addf4ec86a8dda5ce9" 3904 + checksum = "43b6dd56e85d9483277cde964fd1bdb0428de4fec5ebba7540995639a21cb32b" 3858 3905 dependencies = [ 3906 + "aligned-vec", 3859 3907 "arbitrary", 3860 3908 "arg_enum_proc_macro", 3861 3909 "arrayvec", 3910 + "av-scenechange", 3862 3911 "av1-grain", 3863 3912 "bitstream-io", 3864 3913 "built", ··· 3873 3922 "noop_proc_macro", 3874 3923 "num-derive", 3875 3924 "num-traits", 3876 - "once_cell", 3877 3925 "paste", 3878 3926 "profiling", 3879 - "rand 0.8.5", 3880 - "rand_chacha 0.3.1", 3927 + "rand 0.9.2", 3928 + "rand_chacha 0.9.0", 3881 3929 "simd_helpers", 3882 - "system-deps", 3883 - "thiserror 1.0.69", 3930 + "thiserror 2.0.17", 3884 3931 "v_frame", 3885 3932 "wasm-bindgen", 3886 3933 ] 3887 3934 3888 3935 [[package]] 3889 3936 name = "ravif" 3890 - version = "0.11.20" 3937 + version = "0.12.0" 3891 3938 source = "registry+https://github.com/rust-lang/crates.io-index" 3892 - checksum = "5825c26fddd16ab9f515930d49028a630efec172e903483c94796cfe31893e6b" 3939 + checksum = "ef69c1990ceef18a116855938e74793a5f7496ee907562bd0857b6ac734ab285" 3893 3940 dependencies = [ 3894 3941 "avif-serialize", 3895 3942 "imgref", ··· 3946 3993 dependencies = [ 3947 3994 "proc-macro2", 3948 3995 "quote", 3949 - "syn 2.0.108", 3996 + "syn 2.0.111", 3950 3997 ] 3951 3998 3952 3999 [[package]] ··· 4040 4087 4041 4088 [[package]] 4042 4089 name = "resolv-conf" 4043 - version = "0.7.5" 4090 + version = "0.7.6" 4044 4091 source = "registry+https://github.com/rust-lang/crates.io-index" 4045 - checksum = "6b3789b30bd25ba102de4beabd95d21ac45b69b1be7d14522bab988c526d6799" 4092 + checksum = "1e061d1b48cb8d38042de4ae0a7a6401009d6143dc80d2e2d6f31f0bdd6470c7" 4046 4093 4047 4094 [[package]] 4048 4095 name = "rfc6979" ··· 4109 4156 4110 4157 [[package]] 4111 4158 name = "rsa" 4112 - version = "0.9.8" 4159 + version = "0.9.9" 4113 4160 source = "registry+https://github.com/rust-lang/crates.io-index" 4114 - checksum = "78928ac1ed176a5ca1d17e578a1825f3d81ca54cf41053a592584b020cfd691b" 4161 + checksum = "40a0376c50d0358279d9d643e4bf7b7be212f1f4ff1da9070a7b54d22ef75c88" 4115 4162 dependencies = [ 4116 4163 "const-oid", 4117 4164 "digest", ··· 4191 4238 4192 4239 [[package]] 4193 4240 name = "rustls" 4194 - version = "0.23.34" 4241 + version = "0.23.35" 4195 4242 source = "registry+https://github.com/rust-lang/crates.io-index" 4196 - checksum = "6a9586e9ee2b4f8fab52a0048ca7334d7024eef48e2cb9407e3497bb7cab7fa7" 4243 + checksum = "533f54bc6a7d4f647e46ad909549eda97bf5afc1585190ef692b4286b198bd8f" 4197 4244 dependencies = [ 4198 4245 "once_cell", 4199 4246 "ring", ··· 4217 4264 4218 4265 [[package]] 4219 4266 name = "rustls-pki-types" 4220 - version = "1.12.0" 4267 + version = "1.13.1" 4221 4268 source = "registry+https://github.com/rust-lang/crates.io-index" 4222 - checksum = "229a4a4c221013e7e1f1a043678c5cc39fe5171437c88fb47151a21e6f5b5c79" 4269 + checksum = "708c0f9d5f54ba0272468c1d306a52c495b31fa155e91bc25371e6df7996908c" 4223 4270 dependencies = [ 4224 4271 "web-time", 4225 4272 "zeroize", ··· 4227 4274 4228 4275 [[package]] 4229 4276 name = "rustls-webpki" 4230 - version = "0.103.7" 4277 + version = "0.103.8" 4231 4278 source = "registry+https://github.com/rust-lang/crates.io-index" 4232 - checksum = "e10b3f4191e8a80e6b43eebabfac91e5dcecebb27a71f04e820c47ec41d314bf" 4279 + checksum = "2ffdfa2f5286e2247234e03f680868ac2815974dc39e00ea15adc445d0aafe52" 4233 4280 dependencies = [ 4234 4281 "ring", 4235 4282 "rustls-pki-types", ··· 4286 4333 4287 4334 [[package]] 4288 4335 name = "schemars" 4289 - version = "1.0.4" 4336 + version = "1.1.0" 4290 4337 source = "registry+https://github.com/rust-lang/crates.io-index" 4291 - checksum = "82d20c4491bc164fa2f6c5d44565947a52ad80b9505d8e36f8d54c27c739fcd0" 4338 + checksum = "9558e172d4e8533736ba97870c4b2cd63f84b382a3d6eb063da41b91cce17289" 4292 4339 dependencies = [ 4293 4340 "dyn-clone", 4294 4341 "ref-cast", ··· 4394 4441 dependencies = [ 4395 4442 "proc-macro2", 4396 4443 "quote", 4397 - "syn 2.0.108", 4444 + "syn 2.0.111", 4398 4445 ] 4399 4446 4400 4447 [[package]] ··· 4404 4451 checksum = "b2f2d7ff8a2140333718bb329f5c40fc5f0865b84c426183ce14c97d2ab8154f" 4405 4452 dependencies = [ 4406 4453 "form_urlencoded", 4407 - "indexmap 2.12.0", 4454 + "indexmap 2.12.1", 4408 4455 "itoa", 4409 4456 "ryu", 4410 4457 "serde_core", ··· 4439 4486 source = "registry+https://github.com/rust-lang/crates.io-index" 4440 4487 checksum = "402a6f66d8c709116cf22f558eab210f5a50187f702eb4d7e5ef38d9a7f1c79c" 4441 4488 dependencies = [ 4442 - "indexmap 2.12.0", 4489 + "indexmap 2.12.1", 4443 4490 "itoa", 4444 4491 "memchr", 4445 4492 "ryu", ··· 4466 4513 dependencies = [ 4467 4514 "proc-macro2", 4468 4515 "quote", 4469 - "syn 2.0.108", 4516 + "syn 2.0.111", 4470 4517 ] 4471 4518 4472 4519 [[package]] ··· 4501 4548 4502 4549 [[package]] 4503 4550 name = "serde_with" 4504 - version = "3.15.1" 4551 + version = "3.16.1" 4505 4552 source = "registry+https://github.com/rust-lang/crates.io-index" 4506 - checksum = "aa66c845eee442168b2c8134fec70ac50dc20e760769c8ba0ad1319ca1959b04" 4553 + checksum = "4fa237f2807440d238e0364a218270b98f767a00d3dada77b1c53ae88940e2e7" 4507 4554 dependencies = [ 4508 4555 "base64 0.22.1", 4509 4556 "chrono", 4510 4557 "hex", 4511 4558 "indexmap 1.9.3", 4512 - "indexmap 2.12.0", 4559 + "indexmap 2.12.1", 4513 4560 "schemars 0.9.0", 4514 - "schemars 1.0.4", 4561 + "schemars 1.1.0", 4515 4562 "serde_core", 4516 4563 "serde_json", 4517 4564 "serde_with_macros", ··· 4520 4567 4521 4568 [[package]] 4522 4569 name = "serde_with_macros" 4523 - version = "3.15.1" 4570 + version = "3.16.1" 4524 4571 source = "registry+https://github.com/rust-lang/crates.io-index" 4525 - checksum = "b91a903660542fced4e99881aa481bdbaec1634568ee02e0b8bd57c64cb38955" 4572 + checksum = "52a8e3ca0ca629121f70ab50f95249e5a6f925cc0f6ffe8256c45b728875706c" 4526 4573 dependencies = [ 4527 4574 "darling", 4528 4575 "proc-macro2", 4529 4576 "quote", 4530 - "syn 2.0.108", 4577 + "syn 2.0.111", 4531 4578 ] 4532 4579 4533 4580 [[package]] ··· 4575 4622 4576 4623 [[package]] 4577 4624 name = "signal-hook-registry" 4578 - version = "1.4.6" 4625 + version = "1.4.7" 4579 4626 source = "registry+https://github.com/rust-lang/crates.io-index" 4580 - checksum = "b2a4719bff48cee6b39d12c020eeb490953ad2443b7055bd0b21fca26bd8c28b" 4627 + checksum = "7664a098b8e616bdfcc2dc0e9ac44eb231eedf41db4e9fe95d8d32ec728dedad" 4581 4628 dependencies = [ 4582 4629 "libc", 4583 4630 ] ··· 4594 4641 4595 4642 [[package]] 4596 4643 name = "simd-adler32" 4597 - version = "0.3.7" 4644 + version = "0.3.8" 4598 4645 source = "registry+https://github.com/rust-lang/crates.io-index" 4599 - checksum = "d66dc143e6b11c1eddc06d5c423cfc97062865baf299914ab64caa38182078fe" 4646 + checksum = "e320a6c5ad31d271ad523dcf3ad13e2767ad8b1cb8f047f75a8aeaf8da139da2" 4600 4647 4601 4648 [[package]] 4602 4649 name = "simd_helpers" ··· 4702 4749 "quote", 4703 4750 "serde", 4704 4751 "sha2", 4705 - "syn 2.0.108", 4752 + "syn 2.0.111", 4706 4753 "thiserror 1.0.69", 4707 4754 ] 4708 4755 ··· 4783 4830 4784 4831 [[package]] 4785 4832 name = "syn" 4786 - version = "2.0.108" 4833 + version = "2.0.111" 4787 4834 source = "registry+https://github.com/rust-lang/crates.io-index" 4788 - checksum = "da58917d35242480a05c2897064da0a80589a2a0476c9a3f2fdc83b53502e917" 4835 + checksum = "390cc9a294ab71bdb1aa2e99d13be9c753cd2d7bd6560c77118597410c4d2e87" 4789 4836 dependencies = [ 4790 4837 "proc-macro2", 4791 4838 "quote", ··· 4809 4856 dependencies = [ 4810 4857 "proc-macro2", 4811 4858 "quote", 4812 - "syn 2.0.108", 4859 + "syn 2.0.111", 4813 4860 ] 4814 4861 4815 4862 [[package]] ··· 4834 4881 ] 4835 4882 4836 4883 [[package]] 4837 - name = "system-deps" 4838 - version = "6.2.2" 4839 - source = "registry+https://github.com/rust-lang/crates.io-index" 4840 - checksum = "a3e535eb8dded36d55ec13eddacd30dec501792ff23a0b1682c38601b8cf2349" 4841 - dependencies = [ 4842 - "cfg-expr", 4843 - "heck 0.5.0", 4844 - "pkg-config", 4845 - "toml 0.8.23", 4846 - "version-compare", 4847 - ] 4848 - 4849 - [[package]] 4850 4884 name = "tagptr" 4851 4885 version = "0.2.0" 4852 4886 source = "registry+https://github.com/rust-lang/crates.io-index" 4853 4887 checksum = "7b2093cf4c8eb1e67749a6762251bc9cd836b6fc171623bd0a9d324d37af2417" 4854 4888 4855 4889 [[package]] 4856 - name = "target-lexicon" 4857 - version = "0.12.16" 4858 - source = "registry+https://github.com/rust-lang/crates.io-index" 4859 - checksum = "61c41af27dd6d1e27b1b16b489db798443478cef1f06a660c96db617ba5de3b1" 4860 - 4861 - [[package]] 4862 4890 name = "target-triple" 4863 4891 version = "1.0.0" 4864 4892 source = "registry+https://github.com/rust-lang/crates.io-index" ··· 4943 4971 dependencies = [ 4944 4972 "proc-macro2", 4945 4973 "quote", 4946 - "syn 2.0.108", 4974 + "syn 2.0.111", 4947 4975 ] 4948 4976 4949 4977 [[package]] ··· 4954 4982 dependencies = [ 4955 4983 "proc-macro2", 4956 4984 "quote", 4957 - "syn 2.0.108", 4985 + "syn 2.0.111", 4958 4986 ] 4959 4987 4960 4988 [[package]] ··· 4997 5025 "half", 4998 5026 "quick-error 2.0.1", 4999 5027 "weezl", 5000 - "zune-jpeg", 5028 + "zune-jpeg 0.4.21", 5001 5029 ] 5002 5030 5003 5031 [[package]] ··· 5047 5075 5048 5076 [[package]] 5049 5077 name = "tinystr" 5050 - version = "0.8.1" 5078 + version = "0.8.2" 5051 5079 source = "registry+https://github.com/rust-lang/crates.io-index" 5052 - checksum = "5d4f6d1145dcb577acf783d4e601bc1d76a13337bb54e6233add580b07344c8b" 5080 + checksum = "42d3e9c45c09de15d06dd8acf5f4e0e399e85927b7f00711024eb7ae10fa4869" 5053 5081 dependencies = [ 5054 5082 "displaydoc", 5055 5083 "zerovec", ··· 5095 5123 dependencies = [ 5096 5124 "proc-macro2", 5097 5125 "quote", 5098 - "syn 2.0.108", 5126 + "syn 2.0.111", 5099 5127 ] 5100 5128 5101 5129 [[package]] ··· 5145 5173 5146 5174 [[package]] 5147 5175 name = "tokio-util" 5148 - version = "0.7.16" 5176 + version = "0.7.17" 5149 5177 source = "registry+https://github.com/rust-lang/crates.io-index" 5150 - checksum = "14307c986784f72ef81c89db7d9e28d6ac26d16213b109ea501696195e6e3ce5" 5178 + checksum = "2efa149fe76073d6e8fd97ef4f4eca7b67f599660115591483572e406e165594" 5151 5179 dependencies = [ 5152 5180 "bytes", 5153 5181 "futures-core", ··· 5175 5203 source = "registry+https://github.com/rust-lang/crates.io-index" 5176 5204 checksum = "f0dc8b1fb61449e27716ec0e1bdf0f6b8f3e8f6b05391e8497b8b6d7804ea6d8" 5177 5205 dependencies = [ 5178 - "indexmap 2.12.0", 5206 + "indexmap 2.12.1", 5179 5207 "serde_core", 5180 5208 "serde_spanned 1.0.3", 5181 5209 "toml_datetime 0.7.3", 5182 5210 "toml_parser", 5183 5211 "toml_writer", 5184 - "winnow 0.7.13", 5212 + "winnow 0.7.14", 5185 5213 ] 5186 5214 5187 5215 [[package]] ··· 5208 5236 source = "registry+https://github.com/rust-lang/crates.io-index" 5209 5237 checksum = "41fe8c660ae4257887cf66394862d21dbca4a6ddd26f04a3560410406a2f819a" 5210 5238 dependencies = [ 5211 - "indexmap 2.12.0", 5239 + "indexmap 2.12.1", 5212 5240 "serde", 5213 5241 "serde_spanned 0.6.9", 5214 5242 "toml_datetime 0.6.11", 5215 5243 "toml_write", 5216 - "winnow 0.7.13", 5244 + "winnow 0.7.14", 5217 5245 ] 5218 5246 5219 5247 [[package]] ··· 5222 5250 source = "registry+https://github.com/rust-lang/crates.io-index" 5223 5251 checksum = "c0cbe268d35bdb4bb5a56a2de88d0ad0eb70af5384a99d648cd4b3d04039800e" 5224 5252 dependencies = [ 5225 - "winnow 0.7.13", 5253 + "winnow 0.7.14", 5226 5254 ] 5227 5255 5228 5256 [[package]] ··· 5255 5283 5256 5284 [[package]] 5257 5285 name = "tower-http" 5258 - version = "0.6.6" 5286 + version = "0.6.8" 5259 5287 source = "registry+https://github.com/rust-lang/crates.io-index" 5260 - checksum = "adc82fd73de2a9722ac5da747f12383d2bfdb93591ee6c58486e0097890f05f2" 5288 + checksum = "d4e6559d53cc268e5031cd8429d05415bc4cb4aefc4aa5d6cc35fbf5b924a1f8" 5261 5289 dependencies = [ 5262 5290 "bitflags", 5263 5291 "bytes", ··· 5286 5314 5287 5315 [[package]] 5288 5316 name = "tracing" 5289 - version = "0.1.41" 5317 + version = "0.1.43" 5290 5318 source = "registry+https://github.com/rust-lang/crates.io-index" 5291 - checksum = "784e0ac535deb450455cbfa28a6f0df145ea1bb7ae51b821cf5e7927fdcfbdd0" 5319 + checksum = "2d15d90a0b5c19378952d479dc858407149d7bb45a14de0142f6c534b16fc647" 5292 5320 dependencies = [ 5293 5321 "log", 5294 5322 "pin-project-lite", ··· 5298 5326 5299 5327 [[package]] 5300 5328 name = "tracing-attributes" 5301 - version = "0.1.30" 5329 + version = "0.1.31" 5302 5330 source = "registry+https://github.com/rust-lang/crates.io-index" 5303 - checksum = "81383ab64e72a7a8b8e13130c49e3dab29def6d0c7d76a03087b3cf71c5c6903" 5331 + checksum = "7490cfa5ec963746568740651ac6781f701c9c5ea257c58e057f3ba8cf69e8da" 5304 5332 dependencies = [ 5305 5333 "proc-macro2", 5306 5334 "quote", 5307 - "syn 2.0.108", 5335 + "syn 2.0.111", 5308 5336 ] 5309 5337 5310 5338 [[package]] 5311 5339 name = "tracing-core" 5312 - version = "0.1.34" 5340 + version = "0.1.35" 5313 5341 source = "registry+https://github.com/rust-lang/crates.io-index" 5314 - checksum = "b9d12581f227e93f094d3af2ae690a574abb8a2b9b7a96e7cfe9647b2b617678" 5342 + checksum = "7a04e24fab5c89c6a36eb8558c9656f30d81de51dfa4d3b45f26b21d61fa0a6c" 5315 5343 dependencies = [ 5316 5344 "once_cell", 5317 5345 "valuable", ··· 5330 5358 5331 5359 [[package]] 5332 5360 name = "tracing-subscriber" 5333 - version = "0.3.20" 5361 + version = "0.3.22" 5334 5362 source = "registry+https://github.com/rust-lang/crates.io-index" 5335 - checksum = "2054a14f5307d601f88daf0553e1cbf472acc4f2c51afab632431cdcd72124d5" 5363 + checksum = "2f30143827ddab0d256fd843b7a66d164e9f271cfa0dde49142c5ca0ca291f1e" 5336 5364 dependencies = [ 5337 5365 "matchers", 5338 5366 "nu-ansi-term", ··· 5355 5383 dependencies = [ 5356 5384 "proc-macro2", 5357 5385 "quote", 5358 - "syn 2.0.108", 5386 + "syn 2.0.111", 5359 5387 ] 5360 5388 5361 5389 [[package]] ··· 5447 5475 dependencies = [ 5448 5476 "proc-macro2", 5449 5477 "quote", 5450 - "syn 2.0.108", 5478 + "syn 2.0.111", 5451 5479 ] 5452 5480 5453 5481 [[package]] ··· 5458 5486 5459 5487 [[package]] 5460 5488 name = "unicode-ident" 5461 - version = "1.0.20" 5489 + version = "1.0.22" 5462 5490 source = "registry+https://github.com/rust-lang/crates.io-index" 5463 - checksum = "462eeb75aeb73aea900253ce739c8e18a67423fadf006037cd3ff27e82748a06" 5491 + checksum = "9312f7c4f6ff9069b165498234ce8be658059c6728633667c526e27dc2cf1df5" 5464 5492 5465 5493 [[package]] 5466 5494 name = "unicode-linebreak" ··· 5548 5576 5549 5577 [[package]] 5550 5578 name = "uuid" 5551 - version = "1.18.1" 5579 + version = "1.19.0" 5552 5580 source = "registry+https://github.com/rust-lang/crates.io-index" 5553 - checksum = "2f87b8aa10b915a06587d0dec516c282ff295b475d94abf425d62b57710070a2" 5581 + checksum = "e2e054861b4bd027cd373e18e8d8d8e6548085000e41290d95ce0c373a654b4a" 5554 5582 dependencies = [ 5555 5583 "js-sys", 5556 5584 "wasm-bindgen", ··· 5572 5600 version = "0.1.1" 5573 5601 source = "registry+https://github.com/rust-lang/crates.io-index" 5574 5602 checksum = "ba73ea9cf16a25df0c8caa16c51acb937d5712a8429db78a3ee29d5dcacd3a65" 5575 - 5576 - [[package]] 5577 - name = "version-compare" 5578 - version = "0.2.0" 5579 - source = "registry+https://github.com/rust-lang/crates.io-index" 5580 - checksum = "852e951cb7832cb45cb1169900d19760cfa39b82bc0ea9c0e5a14ae88411c98b" 5581 5603 5582 5604 [[package]] 5583 5605 name = "version_check" ··· 5637 5659 5638 5660 [[package]] 5639 5661 name = "wasm-bindgen" 5640 - version = "0.2.105" 5662 + version = "0.2.106" 5641 5663 source = "registry+https://github.com/rust-lang/crates.io-index" 5642 - checksum = "da95793dfc411fbbd93f5be7715b0578ec61fe87cb1a42b12eb625caa5c5ea60" 5664 + checksum = "0d759f433fa64a2d763d1340820e46e111a7a5ab75f993d1852d70b03dbb80fd" 5643 5665 dependencies = [ 5644 5666 "cfg-if", 5645 5667 "once_cell", ··· 5650 5672 5651 5673 [[package]] 5652 5674 name = "wasm-bindgen-futures" 5653 - version = "0.4.55" 5675 + version = "0.4.56" 5654 5676 source = "registry+https://github.com/rust-lang/crates.io-index" 5655 - checksum = "551f88106c6d5e7ccc7cd9a16f312dd3b5d36ea8b4954304657d5dfba115d4a0" 5677 + checksum = "836d9622d604feee9e5de25ac10e3ea5f2d65b41eac0d9ce72eb5deae707ce7c" 5656 5678 dependencies = [ 5657 5679 "cfg-if", 5658 5680 "js-sys", ··· 5663 5685 5664 5686 [[package]] 5665 5687 name = "wasm-bindgen-macro" 5666 - version = "0.2.105" 5688 + version = "0.2.106" 5667 5689 source = "registry+https://github.com/rust-lang/crates.io-index" 5668 - checksum = "04264334509e04a7bf8690f2384ef5265f05143a4bff3889ab7a3269adab59c2" 5690 + checksum = "48cb0d2638f8baedbc542ed444afc0644a29166f1595371af4fecf8ce1e7eeb3" 5669 5691 dependencies = [ 5670 5692 "quote", 5671 5693 "wasm-bindgen-macro-support", ··· 5673 5695 5674 5696 [[package]] 5675 5697 name = "wasm-bindgen-macro-support" 5676 - version = "0.2.105" 5698 + version = "0.2.106" 5677 5699 source = "registry+https://github.com/rust-lang/crates.io-index" 5678 - checksum = "420bc339d9f322e562942d52e115d57e950d12d88983a14c79b86859ee6c7ebc" 5700 + checksum = "cefb59d5cd5f92d9dcf80e4683949f15ca4b511f4ac0a6e14d4e1ac60c6ecd40" 5679 5701 dependencies = [ 5680 5702 "bumpalo", 5681 5703 "proc-macro2", 5682 5704 "quote", 5683 - "syn 2.0.108", 5705 + "syn 2.0.111", 5684 5706 "wasm-bindgen-shared", 5685 5707 ] 5686 5708 5687 5709 [[package]] 5688 5710 name = "wasm-bindgen-shared" 5689 - version = "0.2.105" 5711 + version = "0.2.106" 5690 5712 source = "registry+https://github.com/rust-lang/crates.io-index" 5691 - checksum = "76f218a38c84bcb33c25ec7059b07847d465ce0e0a76b995e134a45adcb6af76" 5713 + checksum = "cbc538057e648b67f72a982e708d485b2efa771e1ac05fec311f9f63e5800db4" 5692 5714 dependencies = [ 5693 5715 "unicode-ident", 5694 5716 ] 5695 5717 5696 5718 [[package]] 5697 5719 name = "wasm-bindgen-test" 5698 - version = "0.3.55" 5720 + version = "0.3.56" 5699 5721 source = "registry+https://github.com/rust-lang/crates.io-index" 5700 - checksum = "bfc379bfb624eb59050b509c13e77b4eb53150c350db69628141abce842f2373" 5722 + checksum = "25e90e66d265d3a1efc0e72a54809ab90b9c0c515915c67cdf658689d2c22c6c" 5701 5723 dependencies = [ 5724 + "async-trait", 5725 + "cast", 5702 5726 "js-sys", 5727 + "libm", 5703 5728 "minicov", 5729 + "nu-ansi-term", 5730 + "num-traits", 5731 + "oorandom", 5732 + "serde", 5733 + "serde_json", 5704 5734 "wasm-bindgen", 5705 5735 "wasm-bindgen-futures", 5706 5736 "wasm-bindgen-test-macro", ··· 5708 5738 5709 5739 [[package]] 5710 5740 name = "wasm-bindgen-test-macro" 5711 - version = "0.3.55" 5741 + version = "0.3.56" 5712 5742 source = "registry+https://github.com/rust-lang/crates.io-index" 5713 - checksum = "085b2df989e1e6f9620c1311df6c996e83fe16f57792b272ce1e024ac16a90f1" 5743 + checksum = "7150335716dce6028bead2b848e72f47b45e7b9422f64cccdc23bedca89affc1" 5714 5744 dependencies = [ 5715 5745 "proc-macro2", 5716 5746 "quote", 5717 - "syn 2.0.108", 5747 + "syn 2.0.111", 5718 5748 ] 5719 5749 5720 5750 [[package]] ··· 5732 5762 5733 5763 [[package]] 5734 5764 name = "web-sys" 5735 - version = "0.3.82" 5765 + version = "0.3.83" 5736 5766 source = "registry+https://github.com/rust-lang/crates.io-index" 5737 - checksum = "3a1f95c0d03a47f4ae1f7a64643a6bb97465d9b740f0fa8f90ea33915c99a9a1" 5767 + checksum = "9b32828d774c412041098d182a8b38b16ea816958e07cf40eec2bc080ae137ac" 5738 5768 dependencies = [ 5739 5769 "js-sys", 5740 5770 "wasm-bindgen", ··· 5780 5810 5781 5811 [[package]] 5782 5812 name = "webpki-roots" 5783 - version = "1.0.3" 5813 + version = "1.0.4" 5784 5814 source = "registry+https://github.com/rust-lang/crates.io-index" 5785 - checksum = "32b130c0d2d49f8b6889abc456e795e82525204f27c42cf767cf0d7734e089b8" 5815 + checksum = "b2878ef029c47c6e8cf779119f20fcf52bde7ad42a731b2a304bc221df17571e" 5786 5816 dependencies = [ 5787 5817 "rustls-pki-types", 5788 5818 ] 5789 5819 5790 5820 [[package]] 5791 5821 name = "weezl" 5792 - version = "0.1.10" 5822 + version = "0.1.12" 5793 5823 source = "registry+https://github.com/rust-lang/crates.io-index" 5794 - checksum = "a751b3277700db47d3e574514de2eced5e54dc8a5436a3bf7a0b248b2cee16f3" 5824 + checksum = "a28ac98ddc8b9274cb41bb4d9d4d5c425b6020c50c46f25559911905610b4a88" 5795 5825 5796 5826 [[package]] 5797 5827 name = "widestring" ··· 5897 5927 dependencies = [ 5898 5928 "proc-macro2", 5899 5929 "quote", 5900 - "syn 2.0.108", 5930 + "syn 2.0.111", 5901 5931 ] 5902 5932 5903 5933 [[package]] ··· 5908 5938 dependencies = [ 5909 5939 "proc-macro2", 5910 5940 "quote", 5911 - "syn 2.0.108", 5941 + "syn 2.0.111", 5912 5942 ] 5913 5943 5914 5944 [[package]] ··· 5935 5965 5936 5966 [[package]] 5937 5967 name = "windows-registry" 5938 - version = "0.5.3" 5968 + version = "0.6.1" 5939 5969 source = "registry+https://github.com/rust-lang/crates.io-index" 5940 - checksum = "5b8a9ed28765efc97bbc954883f4e6796c33a06546ebafacbabee9696967499e" 5970 + checksum = "02752bf7fbdcce7f2a27a742f798510f3e5ad88dbe84871e5168e2120c3d5720" 5941 5971 dependencies = [ 5942 - "windows-link 0.1.3", 5943 - "windows-result 0.3.4", 5944 - "windows-strings 0.4.2", 5972 + "windows-link 0.2.1", 5973 + "windows-result 0.4.1", 5974 + "windows-strings 0.5.1", 5945 5975 ] 5946 5976 5947 5977 [[package]] ··· 6297 6327 6298 6328 [[package]] 6299 6329 name = "winnow" 6300 - version = "0.7.13" 6330 + version = "0.7.14" 6301 6331 source = "registry+https://github.com/rust-lang/crates.io-index" 6302 - checksum = "21a0236b59786fed61e2a80582dd500fe61f18b5dca67a4a067d0bc9039339cf" 6332 + checksum = "5a5364e9d77fcdeeaa6062ced926ee3381faa2ee02d3eb83a5c27a8825540829" 6303 6333 dependencies = [ 6304 6334 "memchr", 6305 6335 ] ··· 6322 6352 6323 6353 [[package]] 6324 6354 name = "writeable" 6325 - version = "0.6.1" 6355 + version = "0.6.2" 6326 6356 source = "registry+https://github.com/rust-lang/crates.io-index" 6327 - checksum = "ea2f10b9bb0928dfb1b42b65e1f9e36f7f54dbdf08457afefb38afcdec4fa2bb" 6357 + checksum = "9edde0db4769d2dc68579893f2306b26c6ecfbe0ef499b013d731b7b9247e0b9" 6328 6358 6329 6359 [[package]] 6330 6360 name = "xml5ever" ··· 6338 6368 ] 6339 6369 6340 6370 [[package]] 6371 + name = "y4m" 6372 + version = "0.8.0" 6373 + source = "registry+https://github.com/rust-lang/crates.io-index" 6374 + checksum = "7a5a4b21e1a62b67a2970e6831bc091d7b87e119e7f9791aef9702e3bef04448" 6375 + 6376 + [[package]] 6341 6377 name = "yansi" 6342 6378 version = "1.0.1" 6343 6379 source = "registry+https://github.com/rust-lang/crates.io-index" ··· 6345 6381 6346 6382 [[package]] 6347 6383 name = "yoke" 6348 - version = "0.8.0" 6384 + version = "0.8.1" 6349 6385 source = "registry+https://github.com/rust-lang/crates.io-index" 6350 - checksum = "5f41bb01b8226ef4bfd589436a297c53d118f65921786300e427be8d487695cc" 6386 + checksum = "72d6e5c6afb84d73944e5cedb052c4680d5657337201555f9f2a16b7406d4954" 6351 6387 dependencies = [ 6352 - "serde", 6353 6388 "stable_deref_trait", 6354 6389 "yoke-derive", 6355 6390 "zerofrom", ··· 6357 6392 6358 6393 [[package]] 6359 6394 name = "yoke-derive" 6360 - version = "0.8.0" 6395 + version = "0.8.1" 6361 6396 source = "registry+https://github.com/rust-lang/crates.io-index" 6362 - checksum = "38da3c9736e16c5d3c8c597a9aaa5d1fa565d0532ae05e27c24aa62fb32c0ab6" 6397 + checksum = "b659052874eb698efe5b9e8cf382204678a0086ebf46982b79d6ca3182927e5d" 6363 6398 dependencies = [ 6364 6399 "proc-macro2", 6365 6400 "quote", 6366 - "syn 2.0.108", 6401 + "syn 2.0.111", 6367 6402 "synstructure", 6368 6403 ] 6369 6404 6370 6405 [[package]] 6371 6406 name = "zerocopy" 6372 - version = "0.8.27" 6407 + version = "0.8.31" 6373 6408 source = "registry+https://github.com/rust-lang/crates.io-index" 6374 - checksum = "0894878a5fa3edfd6da3f88c4805f4c8558e2b996227a3d864f47fe11e38282c" 6409 + checksum = "fd74ec98b9250adb3ca554bdde269adf631549f51d8a8f8f0a10b50f1cb298c3" 6375 6410 dependencies = [ 6376 6411 "zerocopy-derive", 6377 6412 ] 6378 6413 6379 6414 [[package]] 6380 6415 name = "zerocopy-derive" 6381 - version = "0.8.27" 6416 + version = "0.8.31" 6382 6417 source = "registry+https://github.com/rust-lang/crates.io-index" 6383 - checksum = "88d2b8d9c68ad2b9e4340d7832716a4d21a22a1154777ad56ea55c51a9cf3831" 6418 + checksum = "d8a8d209fdf45cf5138cbb5a506f6b52522a25afccc534d1475dad8e31105c6a" 6384 6419 dependencies = [ 6385 6420 "proc-macro2", 6386 6421 "quote", 6387 - "syn 2.0.108", 6422 + "syn 2.0.111", 6388 6423 ] 6389 6424 6390 6425 [[package]] ··· 6404 6439 dependencies = [ 6405 6440 "proc-macro2", 6406 6441 "quote", 6407 - "syn 2.0.108", 6442 + "syn 2.0.111", 6408 6443 "synstructure", 6409 6444 ] 6410 6445 ··· 6419 6454 6420 6455 [[package]] 6421 6456 name = "zerotrie" 6422 - version = "0.2.2" 6457 + version = "0.2.3" 6423 6458 source = "registry+https://github.com/rust-lang/crates.io-index" 6424 - checksum = "36f0bbd478583f79edad978b407914f61b2972f5af6fa089686016be8f9af595" 6459 + checksum = "2a59c17a5562d507e4b54960e8569ebee33bee890c70aa3fe7b97e85a9fd7851" 6425 6460 dependencies = [ 6426 6461 "displaydoc", 6427 6462 "yoke", ··· 6430 6465 6431 6466 [[package]] 6432 6467 name = "zerovec" 6433 - version = "0.11.4" 6468 + version = "0.11.5" 6434 6469 source = "registry+https://github.com/rust-lang/crates.io-index" 6435 - checksum = "e7aa2bd55086f1ab526693ecbe444205da57e25f4489879da80635a46d90e73b" 6470 + checksum = "6c28719294829477f525be0186d13efa9a3c602f7ec202ca9e353d310fb9a002" 6436 6471 dependencies = [ 6437 6472 "yoke", 6438 6473 "zerofrom", ··· 6441 6476 6442 6477 [[package]] 6443 6478 name = "zerovec-derive" 6444 - version = "0.11.1" 6479 + version = "0.11.2" 6445 6480 source = "registry+https://github.com/rust-lang/crates.io-index" 6446 - checksum = "5b96237efa0c878c64bd89c436f661be4e46b2f3eff1ebb976f7ef2321d2f58f" 6481 + checksum = "eadce39539ca5cb3985590102671f2567e659fca9666581ad3411d59207951f3" 6447 6482 dependencies = [ 6448 6483 "proc-macro2", 6449 6484 "quote", 6450 - "syn 2.0.108", 6485 + "syn 2.0.111", 6451 6486 ] 6452 6487 6453 6488 [[package]] ··· 6485 6520 checksum = "3f423a2c17029964870cfaabb1f13dfab7d092a62a29a89264f4d36990ca414a" 6486 6521 6487 6522 [[package]] 6523 + name = "zune-core" 6524 + version = "0.5.0" 6525 + source = "registry+https://github.com/rust-lang/crates.io-index" 6526 + checksum = "111f7d9820f05fd715df3144e254d6fc02ee4088b0644c0ffd0efc9e6d9d2773" 6527 + 6528 + [[package]] 6488 6529 name = "zune-inflate" 6489 6530 version = "0.2.54" 6490 6531 source = "registry+https://github.com/rust-lang/crates.io-index" ··· 6499 6540 source = "registry+https://github.com/rust-lang/crates.io-index" 6500 6541 checksum = "29ce2c8a9384ad323cf564b67da86e21d3cfdff87908bc1223ed5c99bc792713" 6501 6542 dependencies = [ 6502 - "zune-core", 6543 + "zune-core 0.4.12", 6544 + ] 6545 + 6546 + [[package]] 6547 + name = "zune-jpeg" 6548 + version = "0.5.6" 6549 + source = "registry+https://github.com/rust-lang/crates.io-index" 6550 + checksum = "f520eebad972262a1dde0ec455bce4f8b298b1e5154513de58c114c4c54303e8" 6551 + dependencies = [ 6552 + "zune-core 0.5.0", 6503 6553 ]
+8 -5
crates/jacquard-common/Cargo.toml
··· 20 20 service-auth = ["crypto-k256", "crypto-p256", "dep:signature"] 21 21 reqwest-client = ["dep:reqwest"] 22 22 tracing = ["dep:tracing"] 23 - streaming = ["n0-future", "futures"] 23 + streaming = ["n0-future", "futures", "reqwest/stream"] 24 24 websocket = ["streaming", "tokio-tungstenite-wasm", "dep:ciborium"] 25 25 zstd = ["dep:zstd"] 26 26 ··· 48 48 serde_bytes = "0.11" 49 49 50 50 51 - reqwest = { workspace = true, optional = true, features = ["json", "charset", "gzip", "stream"] } 51 + reqwest = { workspace = true, optional = true, features = ["json", "gzip", "charset"] } 52 52 serde_ipld_dagcbor.workspace = true 53 53 signature = { version = "2", optional = true } 54 54 tracing = { workspace = true, optional = true } ··· 57 57 # Streaming support (optional) 58 58 n0-future = { workspace = true, optional = true } 59 59 futures = { version = "0.3", optional = true } 60 - tokio-tungstenite-wasm = { version = "0.4", features = ["rustls-tls-native-roots"], optional = true } 60 + tokio-tungstenite-wasm = { version = "0.4", default-features = false, optional = true } 61 61 ciborium = {version = "0.2.0", optional = true } 62 62 zstd = { version = "0.13", optional = true } 63 63 postcard = { version = "1.1.3", features = ["use-std"] } ··· 67 67 chrono = { workspace = true, features = ["wasmbind"] } 68 68 getrandom_02 = { package = "getrandom", version = "0.2", features = ["js"] } 69 69 regex-lite = "0.1" 70 + ring = { version = "0.17", features = ["wasm32_unknown_unknown_js"]} 71 + reqwest = { workspace = true, optional = true, features = [ "json", "gzip", "rustls-tls-manual-roots"] } 72 + tokio-tungstenite-wasm = { version = "0.4", features = [], optional = true } 70 73 71 74 [target.'cfg(not(target_arch = "wasm32"))'.dependencies] 72 - reqwest = { workspace = true, optional = true, features = [ "http2", "system-proxy", "rustls-tls"] } 75 + reqwest = { workspace = true, optional = true, features = [ "http2", "gzip", "system-proxy", "rustls-tls"] } 73 76 tokio-util = { version = "0.7.16", features = ["io"] } 74 77 regex = { version = "1.11.3", default-features = false, features = ["std", "perf-literal"] } 75 - 78 + tokio-tungstenite-wasm = { version = "0.4", features = ["rustls-tls-native-roots"], optional = true } 76 79 77 80 78 81 [dependencies.ed25519-dalek]
+1 -1
crates/jacquard-common/src/lib.rs
··· 247 247 pub use types::value::*; 248 248 249 249 /// Authorization token types for XRPC requests. 250 - #[derive(Debug, Clone)] 250 + #[derive(Debug, Clone, PartialEq, Eq)] 251 251 pub enum AuthorizationToken<'s> { 252 252 /// Bearer token (access JWT, refresh JWT to refresh the session) 253 253 Bearer(CowStr<'s>),
+1 -1
crates/jacquard-common/src/opt_serde_bytes_helper.rs
··· 38 38 D: Deserializer<'de>, 39 39 { 40 40 if deserializer.is_human_readable() { 41 - Ok(deserializer.deserialize_map(OptBytesVisitor)?) 41 + Ok(deserializer.deserialize_any(OptBytesVisitor)?) 42 42 } else { 43 43 let vec: Option<Vec<u8>> = serde_bytes::deserialize(deserializer)?; 44 44 Ok(vec.map(Bytes::from))
+63 -5
crates/jacquard-common/src/types/value/serde_impl.rs
··· 1 - use core::fmt; 2 - use std::{collections::BTreeMap, str::FromStr}; 3 - 1 + use crate::types::cid::IpldCid; 4 2 use base64::{Engine, prelude::BASE64_STANDARD}; 5 3 use bytes::Bytes; 4 + use core::fmt; 6 5 use serde::{Deserialize, Deserializer, Serialize, Serializer, de::VariantAccess}; 7 6 use smol_str::{SmolStr, ToSmolStr}; 7 + use std::{collections::BTreeMap, str::FromStr}; 8 8 9 9 use crate::{ 10 10 IntoStatic, ··· 218 218 where 219 219 D: Deserializer<'v>, 220 220 { 221 - deserializer.deserialize_map(self) 221 + deserializer.deserialize_any(CidAwareVisitor) 222 222 } 223 223 224 224 fn visit_map<A>(self, mut map: A) -> Result<Self::Value, A::Error> ··· 643 643 where 644 644 D: Deserializer<'v>, 645 645 { 646 - deserializer.deserialize_map(self) 646 + deserializer.deserialize_any(RawCidAwareVisitor) 647 647 } 648 648 649 649 fn visit_map<A>(self, mut map: A) -> Result<Self::Value, A::Error> ··· 693 693 694 694 // Second pass: apply type inference and check for special patterns 695 695 apply_raw_type_inference(temp_map).map_err(A::Error::custom) 696 + } 697 + } 698 + 699 + // In DAG-CBOR, newtype_struct wraps tag 42 (CID) 700 + // The CidDeserializer will call visit_bytes with the CID bytes 701 + struct CidAwareVisitor; 702 + 703 + impl<'de: 'v, 'v> serde::de::Visitor<'v> for CidAwareVisitor { 704 + type Value = Data<'v>; 705 + 706 + fn expecting(&self, f: &mut fmt::Formatter) -> fmt::Result { 707 + f.write_str("CID bytes or other newtype content") 708 + } 709 + 710 + fn visit_bytes<E>(self, v: &[u8]) -> Result<Self::Value, E> 711 + where 712 + E: serde::de::Error, 713 + { 714 + // Try to parse as CID first (tag 42 case) 715 + match IpldCid::try_from(v) { 716 + Ok(cid) => Ok(Data::CidLink(Cid::ipld(cid))), 717 + Err(_) => Ok(Data::Bytes(Bytes::copy_from_slice(v))), 718 + } 719 + } 720 + 721 + fn visit_borrowed_bytes<E>(self, v: &'v [u8]) -> Result<Self::Value, E> 722 + where 723 + E: serde::de::Error, 724 + { 725 + self.visit_bytes(v) 726 + } 727 + } 728 + 729 + struct RawCidAwareVisitor; 730 + 731 + impl<'de: 'v, 'v> serde::de::Visitor<'v> for RawCidAwareVisitor { 732 + type Value = RawData<'v>; 733 + 734 + fn expecting(&self, f: &mut fmt::Formatter) -> fmt::Result { 735 + f.write_str("CID bytes or other newtype content") 736 + } 737 + 738 + fn visit_bytes<E>(self, v: &[u8]) -> Result<Self::Value, E> 739 + where 740 + E: serde::de::Error, 741 + { 742 + // Try to parse as CID first (tag 42 case) 743 + match IpldCid::try_from(v) { 744 + Ok(cid) => Ok(RawData::CidLink(Cid::ipld(cid))), 745 + Err(_) => Ok(RawData::Bytes(Bytes::copy_from_slice(v))), 746 + } 747 + } 748 + 749 + fn visit_borrowed_bytes<E>(self, v: &'v [u8]) -> Result<Self::Value, E> 750 + where 751 + E: serde::de::Error, 752 + { 753 + self.visit_bytes(v) 696 754 } 697 755 } 698 756
+1 -1
crates/jacquard-identity/Cargo.toml
··· 47 47 48 48 [target.'cfg(target_arch = "wasm32")'.dependencies] 49 49 mini-moka = { version = "0.10",path = "../mini-moka-vendored", features = ["js"], optional = true } 50 - 50 + ring = { version = "0.17", default-features = false, features = ["wasm32_unknown_unknown_js"]} 51 51 52 52 [[example]] 53 53 name = "resolve_lexicon"
+15 -8
crates/jacquard-identity/src/lib.rs
··· 81 81 #[cfg(feature = "streaming")] 82 82 use jacquard_common::ByteStream; 83 83 use jacquard_common::http_client::HttpClient; 84 + use jacquard_common::smol_str::ToSmolStr; 84 85 use jacquard_common::types::did::Did; 85 86 use jacquard_common::types::did_doc::DidDocument; 86 87 use jacquard_common::types::ident::AtIdentifier; ··· 458 459 } 459 460 460 461 async fn get_text(&self, url: Url) -> resolver::Result<String> { 462 + let u = url.to_smolstr(); 461 463 let resp = self.http.get(url).send().await?; 462 464 if resp.status() == StatusCode::OK { 463 465 Ok(resp.text().await?) 464 466 } else { 465 467 Err(IdentityError::transport( 468 + u, 466 469 resp.error_for_status().unwrap_err(), 467 470 )) 468 471 } ··· 861 864 &self, 862 865 request: http::Request<Vec<u8>>, 863 866 ) -> core::result::Result<http::Response<Vec<u8>>, Self::Error> { 867 + let u = request.uri().clone(); 864 868 match self.opts.request_timeout { 865 869 Some(duration) => n0_future::time::timeout(duration, self.http.send_http(request)) 866 870 .await 867 871 .map_err(|_| IdentityError::timeout())? 868 - .map_err(IdentityError::transport), 872 + .map_err(|e| IdentityError::transport(u.to_smolstr(), e)), 869 873 None => self 870 874 .http 871 875 .send_http(request) 872 876 .await 873 - .map_err(IdentityError::transport), 877 + .map_err(|e| IdentityError::transport(u.to_smolstr(), e)), 874 878 } 875 879 } 876 880 } ··· 882 886 &self, 883 887 request: http::Request<Vec<u8>>, 884 888 ) -> Result<http::Response<ByteStream>, Self::Error> { 889 + let u = request.uri().clone(); 885 890 match self.opts.request_timeout { 886 891 Some(duration) => { 887 892 n0_future::time::timeout(duration, self.http.send_http_streaming(request)) 888 893 .await 889 894 .map_err(|_| IdentityError::timeout())? 890 - .map_err(IdentityError::transport) 895 + .map_err(|e| IdentityError::transport(u.to_smolstr(), e)) 891 896 } 892 897 None => self 893 898 .http 894 899 .send_http_streaming(request) 895 900 .await 896 - .map_err(IdentityError::transport), 901 + .map_err(|e| IdentityError::transport(u.to_smolstr(), e)), 897 902 } 898 903 } 899 904 ··· 909 914 + Send 910 915 + 'static, 911 916 { 917 + let u = parts.uri.clone(); 912 918 match self.opts.request_timeout { 913 919 Some(duration) => { 914 920 n0_future::time::timeout(duration, self.http.send_http_bidirectional(parts, body)) 915 921 .await 916 922 .map_err(|_| IdentityError::timeout())? 917 - .map_err(IdentityError::transport) 923 + .map_err(|e| IdentityError::transport(u.to_smolstr(), e)) 918 924 } 919 925 None => self 920 926 .http 921 927 .send_http_bidirectional(parts, body) 922 928 .await 923 - .map_err(IdentityError::transport), 929 + .map_err(|e| IdentityError::transport(u.to_smolstr(), e)), 924 930 } 925 931 } 926 932 ··· 934 940 where 935 941 S: n0_future::Stream<Item = Result<bytes::Bytes, jacquard_common::StreamError>> + 'static, 936 942 { 943 + let u = parts.uri.clone(); 937 944 match self.opts.request_timeout { 938 945 Some(duration) => { 939 946 n0_future::time::timeout(duration, self.http.send_http_bidirectional(parts, body)) 940 947 .await 941 948 .map_err(|_| IdentityError::timeout())? 942 - .map_err(IdentityError::transport) 949 + .map_err(|e| IdentityError::transport(u.to_smolstr(), e)) 943 950 } 944 951 None => self 945 952 .http 946 953 .send_http_bidirectional(parts, body) 947 954 .await 948 - .map_err(IdentityError::transport), 955 + .map_err(|e| IdentityError::transport(u.to_smolstr(), e)), 949 956 } 950 957 } 951 958 }
+4 -4
crates/jacquard-identity/src/resolver.rs
··· 540 540 code(jacquard::identity::transport), 541 541 help("check network connectivity and TLS configuration") 542 542 )] 543 - Transport, 543 + Transport(SmolStr), 544 544 545 545 /// Request timeout 546 546 #[error("request timed out")] ··· 661 661 } 662 662 663 663 /// Create a transport error 664 - pub fn transport(source: impl std::error::Error + Send + Sync + 'static) -> Self { 665 - Self::new(IdentityErrorKind::Transport, Some(Box::new(source))) 664 + pub fn transport(msg: SmolStr, source: impl std::error::Error + Send + Sync + 'static) -> Self { 665 + Self::new(IdentityErrorKind::Transport(msg), Some(Box::new(source))) 666 666 } 667 667 668 668 /// Create a timeout error ··· 765 765 766 766 impl From<reqwest::Error> for IdentityError { 767 767 fn from(e: reqwest::Error) -> Self { 768 - Self::transport(e).with_context("HTTP request failed during identity resolution") 768 + Self::transport("".into(), e).with_context("HTTP request failed during identity resolution") 769 769 } 770 770 } 771 771
+4
crates/jacquard-oauth/Cargo.toml
··· 50 50 [target.'cfg(not(target_arch = "wasm32"))'.dependencies] 51 51 tokio = { workspace = true, features = ["rt", "net", "time"] } 52 52 rouille = { version = "3.6.2", optional = true } 53 + 54 + 55 + [target.'cfg(target_arch = "wasm32")'.dependencies] 56 + ring = { version = "0.17", features = ["wasm32_unknown_unknown_js"]}
+35 -12
crates/jacquard-oauth/src/client.rs
··· 617 617 <R as XrpcRequest>::Response: Send + Sync, 618 618 { 619 619 let base_uri = self.base_uri().await; 620 - opts.auth = Some(self.access_token().await); 621 - let guard = self.data.read().await; 622 - let mut dpop = guard.dpop_data.clone(); 620 + let original_token = self.access_token().await; 621 + opts.auth = Some(original_token.clone()); 622 + // Clone dpop_data and release read lock before the await point 623 + let mut dpop = self.data.read().await.dpop_data.clone(); 623 624 let base_uri = Url::parse(&base_uri).map_err(|e| ClientError::transport(e))?; 624 625 let http_response = self 625 626 .client ··· 628 629 .await 629 630 .map_err(|e| ClientError::transport(e))?; 630 631 let resp = process_response(http_response); 631 - drop(guard); 632 + 633 + // Write back updated nonce to session data (dpop_call may have updated it) 634 + { 635 + let mut guard = self.data.write().await; 636 + guard.dpop_data.dpop_host_nonce = dpop.dpop_host_nonce.clone(); 637 + } 638 + 632 639 if is_invalid_token_response(&resp) { 633 - opts.auth = Some( 634 - self.refresh() 635 - .await 636 - .map_err(|e| ClientError::transport(e))?, 637 - ); 638 - let guard = self.data.read().await; 639 - let mut dpop = guard.dpop_data.clone(); 640 + // Optimistic refresh: check if another request already refreshed the token 641 + let current_token = self.access_token().await; 642 + if current_token != original_token { 643 + // Token was already refreshed by another concurrent request, use it 644 + opts.auth = Some(current_token); 645 + } else { 646 + // We need to refresh - this will be serialized by the registry's Mutex 647 + opts.auth = Some( 648 + self.refresh() 649 + .await 650 + .map_err(|e| ClientError::transport(e))?, 651 + ); 652 + } 653 + // Re-read dpop_data after refresh (refresh may have updated it) 654 + let mut dpop = self.data.read().await.dpop_data.clone(); 640 655 let http_response = self 641 656 .client 642 657 .dpop_call(&mut dpop) 643 658 .send(build_http_request(&base_uri, &request, &opts)?) 644 659 .await 645 660 .map_err(|e| ClientError::transport(e))?; 646 - process_response(http_response) 661 + let resp = process_response(http_response); 662 + 663 + // Write back updated nonce after retry 664 + { 665 + let mut guard = self.data.write().await; 666 + guard.dpop_data.dpop_host_nonce = dpop.dpop_host_nonce.clone(); 667 + } 668 + 669 + resp 647 670 } else { 648 671 resp 649 672 }
+5 -3
crates/jacquard/Cargo.toml
··· 145 145 bytes.workspace = true 146 146 http.workspace = true 147 147 miette = { workspace = true } 148 - reqwest = { workspace = true, features = ["json", "gzip"] } 148 + reqwest = { workspace = true, features = ["json"] } 149 149 serde.workspace = true 150 150 serde_html_form.workspace = true 151 151 serde_json.workspace = true ··· 157 157 jose-jwk = { workspace = true, features = ["p256"] } 158 158 tracing = { workspace = true, optional = true } 159 159 n0-future = { workspace = true, optional = true } 160 - gloo-storage = "0.3" 160 + 161 161 162 162 [target.'cfg(not(target_family = "wasm"))'.dependencies] 163 163 jacquard-identity = { version = "0.9", path = "../jacquard-identity", features = ["cache"] } 164 164 reqwest = { workspace = true, features = [ 165 165 "http2", 166 - "system-proxy", 166 + "gzip", 167 167 "rustls-tls", 168 168 ] } 169 169 tokio = { workspace = true, features = ["macros", "rt-multi-thread", "fs"] } ··· 172 172 [target.'cfg(target_family = "wasm")'.dependencies] 173 173 getrandom = { version = "0.2", features = ["js"] } 174 174 regex-lite = "0.1" 175 + ring = { version = "0.17", features = ["wasm32_unknown_unknown_js"]} 176 + reqwest = { workspace = true } 175 177 176 178 [target.'cfg(all(target_family = "wasm", target_os = "unknown"))'.dependencies] 177 179 gloo-storage = "0.3"
+2 -1
crates/jacquard/src/client.rs
··· 155 155 } 156 156 157 157 /// Unauthenticated XRPC client session with identity resolution 158 + #[derive(Debug, Clone)] 158 159 pub struct UnauthenticatedSession<T> { 159 160 resolver: Arc<T>, 160 161 endpoint: Arc<RwLock<Option<CowStr<'static>>>>, ··· 224 225 .read() 225 226 .await 226 227 .clone() 227 - .unwrap_or(CowStr::new_static("https://public.bsky.app")) 228 + .unwrap_or(CowStr::new_static("https://public.api.bsky.app")) 228 229 } 229 230 } 230 231
+11 -2
examples/subscribe_repos.rs
··· 11 11 use jacquard_common::xrpc::{SubscriptionClient, TungsteniteSubscriptionClient}; 12 12 use miette::IntoDiagnostic; 13 13 use n0_future::StreamExt; 14 + use smol_str::ToSmolStr; 14 15 use url::Url; 15 16 16 17 #[derive(Parser, Debug)] 17 - #[command(author, version, about = "Subscribe to a PDS's subscribeRepos endpoint")] 18 + #[command( 19 + author, 20 + version, 21 + about = "Subscribe to a PDS's subscribeRepos endpoint" 22 + )] 18 23 struct Args { 19 24 /// PDS URL (e.g., atproto.systems or https://atproto.systems) 20 25 pds_url: String, ··· 47 52 commit.rev, 48 53 commit.commit, 49 54 commit.ops.len(), 50 - commit.since, 55 + commit 56 + .since 57 + .as_ref() 58 + .map(|ts| ts.to_smolstr()) 59 + .unwrap_or_default(), 51 60 ); 52 61 } 53 62 SubscribeReposMessage::Identity(identity) => {