A human-friendly DSL for ATProto Lexicons
27
fork

Configure Feed

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

Initial fetch

+1974 -18
+2
.mlf/.gitignore
··· 1 + * 2 + !.gitignore
+1433 -17
Cargo.lock
··· 46 46 ] 47 47 48 48 [[package]] 49 + name = "android_system_properties" 50 + version = "0.1.5" 51 + source = "registry+https://github.com/rust-lang/crates.io-index" 52 + checksum = "819e7219dbd41043ac279b19830f2efc897156490d7fd6ea916720117ee66311" 53 + dependencies = [ 54 + "libc", 55 + ] 56 + 57 + [[package]] 49 58 name = "anstream" 50 59 version = "0.6.21" 51 60 source = "registry+https://github.com/rust-lang/crates.io-index" ··· 81 90 source = "registry+https://github.com/rust-lang/crates.io-index" 82 91 checksum = "9e231f6134f61b71076a3eab506c379d4f36122f2af15a9ff04415ea4c3339e2" 83 92 dependencies = [ 84 - "windows-sys", 93 + "windows-sys 0.60.2", 85 94 ] 86 95 87 96 [[package]] ··· 92 101 dependencies = [ 93 102 "anstyle", 94 103 "once_cell_polyfill", 95 - "windows-sys", 104 + "windows-sys 0.60.2", 96 105 ] 97 106 98 107 [[package]] 108 + name = "async-trait" 109 + version = "0.1.89" 110 + source = "registry+https://github.com/rust-lang/crates.io-index" 111 + checksum = "9035ad2d096bed7955a320ee7e2230574d28fd3c3a0f186cbea1ff3c7eed5dbb" 112 + dependencies = [ 113 + "proc-macro2", 114 + "quote", 115 + "syn 2.0.106", 116 + ] 117 + 118 + [[package]] 119 + name = "atomic-waker" 120 + version = "1.1.2" 121 + source = "registry+https://github.com/rust-lang/crates.io-index" 122 + checksum = "1505bd5d3d116872e7271a6d4e16d81d0c8570876c8de68093a09ac269d8aac0" 123 + 124 + [[package]] 125 + name = "autocfg" 126 + version = "1.5.0" 127 + source = "registry+https://github.com/rust-lang/crates.io-index" 128 + checksum = "c08606f8c3cbf4ce6ec8e28fb0014a2c086708fe954eaa885384a6165172e7e8" 129 + 130 + [[package]] 99 131 name = "backtrace" 100 132 version = "0.3.76" 101 133 source = "registry+https://github.com/rust-lang/crates.io-index" ··· 107 139 "miniz_oxide", 108 140 "object", 109 141 "rustc-demangle", 110 - "windows-link", 142 + "windows-link 0.2.0", 111 143 ] 112 144 113 145 [[package]] ··· 118 150 dependencies = [ 119 151 "backtrace", 120 152 ] 153 + 154 + [[package]] 155 + name = "base64" 156 + version = "0.22.1" 157 + source = "registry+https://github.com/rust-lang/crates.io-index" 158 + checksum = "72b3254f16251a8381aa12e40e3c4d2f0199f8c6508fbecb9d91f575e0fbb8c6" 121 159 122 160 [[package]] 123 161 name = "bitflags" ··· 165 203 checksum = "46c5e41b57b8bba42a04676d81cb89e9ee8e859a1a66f80a5a72e1cb76b34d43" 166 204 167 205 [[package]] 206 + name = "bytes" 207 + version = "1.10.1" 208 + source = "registry+https://github.com/rust-lang/crates.io-index" 209 + checksum = "d71b6127be86fdcfddb610f7182ac57211d4b18a3e9c82eb2d17662f2227ad6a" 210 + 211 + [[package]] 168 212 name = "cc" 169 213 version = "1.2.40" 170 214 source = "registry+https://github.com/rust-lang/crates.io-index" ··· 188 232 version = "1.0.3" 189 233 source = "registry+https://github.com/rust-lang/crates.io-index" 190 234 checksum = "2fd1289c04a9ea8cb22300a459a72a385d7c73d3259e2ed7dcb2af674838cfa9" 235 + 236 + [[package]] 237 + name = "chrono" 238 + version = "0.4.42" 239 + source = "registry+https://github.com/rust-lang/crates.io-index" 240 + checksum = "145052bdd345b87320e369255277e3fb5152762ad123a901ef5c262dd38fe8d2" 241 + dependencies = [ 242 + "iana-time-zone", 243 + "js-sys", 244 + "num-traits", 245 + "serde", 246 + "wasm-bindgen", 247 + "windows-link 0.2.0", 248 + ] 191 249 192 250 [[package]] 193 251 name = "ciborium" ··· 263 321 checksum = "b05b61dc5112cbb17e4b6cd61790d9845d13888356391624cbe7e41efeac1e75" 264 322 265 323 [[package]] 324 + name = "core-foundation" 325 + version = "0.9.4" 326 + source = "registry+https://github.com/rust-lang/crates.io-index" 327 + checksum = "91e195e091a93c46f7102ec7818a2aa394e1e1771c3ab4825963fa03e45afb8f" 328 + dependencies = [ 329 + "core-foundation-sys", 330 + "libc", 331 + ] 332 + 333 + [[package]] 334 + name = "core-foundation-sys" 335 + version = "0.8.7" 336 + source = "registry+https://github.com/rust-lang/crates.io-index" 337 + checksum = "773648b94d0e5d620f64f280777445740e61fe701025087ec8b57f45c791888b" 338 + 339 + [[package]] 266 340 name = "cpufeatures" 267 341 version = "0.2.17" 268 342 source = "registry+https://github.com/rust-lang/crates.io-index" ··· 288 362 ] 289 363 290 364 [[package]] 365 + name = "data-encoding" 366 + version = "2.9.0" 367 + source = "registry+https://github.com/rust-lang/crates.io-index" 368 + checksum = "2a2330da5de22e8a3cb63252ce2abb30116bf5265e89c0e01bc17015ce30a476" 369 + 370 + [[package]] 291 371 name = "deranged" 292 372 version = "0.5.4" 293 373 source = "registry+https://github.com/rust-lang/crates.io-index" ··· 318 398 ] 319 399 320 400 [[package]] 401 + name = "encoding_rs" 402 + version = "0.8.35" 403 + source = "registry+https://github.com/rust-lang/crates.io-index" 404 + checksum = "75030f3c4f45dafd7586dd6780965a8c7e8e285a5ecb86713e63a79c5b2766f3" 405 + dependencies = [ 406 + "cfg-if", 407 + ] 408 + 409 + [[package]] 410 + name = "enum-as-inner" 411 + version = "0.6.1" 412 + source = "registry+https://github.com/rust-lang/crates.io-index" 413 + checksum = "a1e6a265c649f3f5979b601d26f1d05ada116434c87741c9493cb56218f76cbc" 414 + dependencies = [ 415 + "heck", 416 + "proc-macro2", 417 + "quote", 418 + "syn 2.0.106", 419 + ] 420 + 421 + [[package]] 321 422 name = "equivalent" 322 423 version = "1.0.2" 323 424 source = "registry+https://github.com/rust-lang/crates.io-index" ··· 330 431 checksum = "39cab71617ae0d63f51a36d69f866391735b51691dbda63cf6f96d042b63efeb" 331 432 dependencies = [ 332 433 "libc", 333 - "windows-sys", 434 + "windows-sys 0.61.1", 334 435 ] 335 436 336 437 [[package]] 438 + name = "fastrand" 439 + version = "2.3.0" 440 + source = "registry+https://github.com/rust-lang/crates.io-index" 441 + checksum = "37909eebbb50d72f9059c3b6d82c0463f2ff062c9e95845c43a6c9c0355411be" 442 + 443 + [[package]] 337 444 name = "find-msvc-tools" 338 445 version = "0.1.3" 339 446 source = "registry+https://github.com/rust-lang/crates.io-index" 340 447 checksum = "0399f9d26e5191ce32c498bebd31e7a3ceabc2745f0ac54af3f335126c3f24b3" 341 448 342 449 [[package]] 450 + name = "fnv" 451 + version = "1.0.7" 452 + source = "registry+https://github.com/rust-lang/crates.io-index" 453 + checksum = "3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1" 454 + 455 + [[package]] 456 + name = "foreign-types" 457 + version = "0.3.2" 458 + source = "registry+https://github.com/rust-lang/crates.io-index" 459 + checksum = "f6f339eb8adc052cd2ca78910fda869aefa38d22d5cb648e6485e4d3fc06f3b1" 460 + dependencies = [ 461 + "foreign-types-shared", 462 + ] 463 + 464 + [[package]] 465 + name = "foreign-types-shared" 466 + version = "0.1.1" 467 + source = "registry+https://github.com/rust-lang/crates.io-index" 468 + checksum = "00b0228411908ca8685dba7fc2cdd70ec9990a6e753e89b6ac91a84c40fbaf4b" 469 + 470 + [[package]] 343 471 name = "form_urlencoded" 344 472 version = "1.2.2" 345 473 source = "registry+https://github.com/rust-lang/crates.io-index" ··· 349 477 ] 350 478 351 479 [[package]] 480 + name = "futures-channel" 481 + version = "0.3.31" 482 + source = "registry+https://github.com/rust-lang/crates.io-index" 483 + checksum = "2dff15bf788c671c1934e366d07e30c1814a8ef514e1af724a602e8a2fbe1b10" 484 + dependencies = [ 485 + "futures-core", 486 + "futures-sink", 487 + ] 488 + 489 + [[package]] 490 + name = "futures-core" 491 + version = "0.3.31" 492 + source = "registry+https://github.com/rust-lang/crates.io-index" 493 + checksum = "05f29059c0c2090612e8d742178b0580d2dc940c837851ad723096f87af6663e" 494 + 495 + [[package]] 496 + name = "futures-io" 497 + version = "0.3.31" 498 + source = "registry+https://github.com/rust-lang/crates.io-index" 499 + checksum = "9e5c1b78ca4aae1ac06c48a526a655760685149f0d465d21f37abfe57ce075c6" 500 + 501 + [[package]] 502 + name = "futures-sink" 503 + version = "0.3.31" 504 + source = "registry+https://github.com/rust-lang/crates.io-index" 505 + checksum = "e575fab7d1e0dcb8d0c7bcf9a63ee213816ab51902e6d244a95819acacf1d4f7" 506 + 507 + [[package]] 508 + name = "futures-task" 509 + version = "0.3.31" 510 + source = "registry+https://github.com/rust-lang/crates.io-index" 511 + checksum = "f90f7dce0722e95104fcb095585910c0977252f286e354b5e3bd38902cd99988" 512 + 513 + [[package]] 514 + name = "futures-util" 515 + version = "0.3.31" 516 + source = "registry+https://github.com/rust-lang/crates.io-index" 517 + checksum = "9fa08315bb612088cc391249efdc3bc77536f16c91f6cf495e6fbe85b20a4a81" 518 + dependencies = [ 519 + "futures-core", 520 + "futures-io", 521 + "futures-sink", 522 + "futures-task", 523 + "memchr", 524 + "pin-project-lite", 525 + "pin-utils", 526 + "slab", 527 + ] 528 + 529 + [[package]] 352 530 name = "generic-array" 353 531 version = "0.14.7" 354 532 source = "registry+https://github.com/rust-lang/crates.io-index" ··· 359 537 ] 360 538 361 539 [[package]] 540 + name = "getrandom" 541 + version = "0.2.16" 542 + source = "registry+https://github.com/rust-lang/crates.io-index" 543 + checksum = "335ff9f135e4384c8150d6f27c6daed433577f86b4750418338c01a1a2528592" 544 + dependencies = [ 545 + "cfg-if", 546 + "libc", 547 + "wasi 0.11.1+wasi-snapshot-preview1", 548 + ] 549 + 550 + [[package]] 551 + name = "getrandom" 552 + version = "0.3.3" 553 + source = "registry+https://github.com/rust-lang/crates.io-index" 554 + checksum = "26145e563e54f2cadc477553f1ec5ee650b00862f0a58bcd12cbdc5f0ea2d2f4" 555 + dependencies = [ 556 + "cfg-if", 557 + "libc", 558 + "r-efi", 559 + "wasi 0.14.7+wasi-0.2.4", 560 + ] 561 + 562 + [[package]] 362 563 name = "gimli" 363 564 version = "0.32.3" 364 565 source = "registry+https://github.com/rust-lang/crates.io-index" ··· 369 570 version = "0.3.3" 370 571 source = "registry+https://github.com/rust-lang/crates.io-index" 371 572 checksum = "0cc23270f6e1808e30a928bdc84dea0b9b4136a8bc82338574f23baf47bbd280" 573 + 574 + [[package]] 575 + name = "h2" 576 + version = "0.4.12" 577 + source = "registry+https://github.com/rust-lang/crates.io-index" 578 + checksum = "f3c0b69cfcb4e1b9f1bf2f53f95f766e4661169728ec61cd3fe5a0166f2d1386" 579 + dependencies = [ 580 + "atomic-waker", 581 + "bytes", 582 + "fnv", 583 + "futures-core", 584 + "futures-sink", 585 + "http", 586 + "indexmap", 587 + "slab", 588 + "tokio", 589 + "tokio-util", 590 + "tracing", 591 + ] 372 592 373 593 [[package]] 374 594 name = "half" ··· 399 619 checksum = "b07f60793ff0a4d9cef0f18e63b5357e06209987153a64648c972c1e5aff336f" 400 620 401 621 [[package]] 622 + name = "hickory-proto" 623 + version = "0.24.4" 624 + source = "registry+https://github.com/rust-lang/crates.io-index" 625 + checksum = "92652067c9ce6f66ce53cc38d1169daa36e6e7eb7dd3b63b5103bd9d97117248" 626 + dependencies = [ 627 + "async-trait", 628 + "cfg-if", 629 + "data-encoding", 630 + "enum-as-inner", 631 + "futures-channel", 632 + "futures-io", 633 + "futures-util", 634 + "idna", 635 + "ipnet", 636 + "once_cell", 637 + "rand", 638 + "thiserror 1.0.69", 639 + "tinyvec", 640 + "tokio", 641 + "tracing", 642 + "url", 643 + ] 644 + 645 + [[package]] 646 + name = "hickory-resolver" 647 + version = "0.24.4" 648 + source = "registry+https://github.com/rust-lang/crates.io-index" 649 + checksum = "cbb117a1ca520e111743ab2f6688eddee69db4e0ea242545a604dce8a66fd22e" 650 + dependencies = [ 651 + "cfg-if", 652 + "futures-util", 653 + "hickory-proto", 654 + "ipconfig", 655 + "lru-cache", 656 + "once_cell", 657 + "parking_lot", 658 + "rand", 659 + "resolv-conf", 660 + "smallvec", 661 + "thiserror 1.0.69", 662 + "tokio", 663 + "tracing", 664 + ] 665 + 666 + [[package]] 667 + name = "http" 668 + version = "1.3.1" 669 + source = "registry+https://github.com/rust-lang/crates.io-index" 670 + checksum = "f4a85d31aea989eead29a3aaf9e1115a180df8282431156e533de47660892565" 671 + dependencies = [ 672 + "bytes", 673 + "fnv", 674 + "itoa", 675 + ] 676 + 677 + [[package]] 678 + name = "http-body" 679 + version = "1.0.1" 680 + source = "registry+https://github.com/rust-lang/crates.io-index" 681 + checksum = "1efedce1fb8e6913f23e0c92de8e62cd5b772a67e7b3946df930a62566c93184" 682 + dependencies = [ 683 + "bytes", 684 + "http", 685 + ] 686 + 687 + [[package]] 688 + name = "http-body-util" 689 + version = "0.1.3" 690 + source = "registry+https://github.com/rust-lang/crates.io-index" 691 + checksum = "b021d93e26becf5dc7e1b75b1bed1fd93124b374ceb73f43d4d4eafec896a64a" 692 + dependencies = [ 693 + "bytes", 694 + "futures-core", 695 + "http", 696 + "http-body", 697 + "pin-project-lite", 698 + ] 699 + 700 + [[package]] 701 + name = "httparse" 702 + version = "1.10.1" 703 + source = "registry+https://github.com/rust-lang/crates.io-index" 704 + checksum = "6dbf3de79e51f3d586ab4cb9d5c3e2c14aa28ed23d180cf89b4df0454a69cc87" 705 + 706 + [[package]] 707 + name = "hyper" 708 + version = "1.7.0" 709 + source = "registry+https://github.com/rust-lang/crates.io-index" 710 + checksum = "eb3aa54a13a0dfe7fbe3a59e0c76093041720fdc77b110cc0fc260fafb4dc51e" 711 + dependencies = [ 712 + "atomic-waker", 713 + "bytes", 714 + "futures-channel", 715 + "futures-core", 716 + "h2", 717 + "http", 718 + "http-body", 719 + "httparse", 720 + "itoa", 721 + "pin-project-lite", 722 + "pin-utils", 723 + "smallvec", 724 + "tokio", 725 + "want", 726 + ] 727 + 728 + [[package]] 729 + name = "hyper-rustls" 730 + version = "0.27.7" 731 + source = "registry+https://github.com/rust-lang/crates.io-index" 732 + checksum = "e3c93eb611681b207e1fe55d5a71ecf91572ec8a6705cdb6857f7d8d5242cf58" 733 + dependencies = [ 734 + "http", 735 + "hyper", 736 + "hyper-util", 737 + "rustls", 738 + "rustls-pki-types", 739 + "tokio", 740 + "tokio-rustls", 741 + "tower-service", 742 + ] 743 + 744 + [[package]] 745 + name = "hyper-tls" 746 + version = "0.6.0" 747 + source = "registry+https://github.com/rust-lang/crates.io-index" 748 + checksum = "70206fc6890eaca9fde8a0bf71caa2ddfc9fe045ac9e5c70df101a7dbde866e0" 749 + dependencies = [ 750 + "bytes", 751 + "http-body-util", 752 + "hyper", 753 + "hyper-util", 754 + "native-tls", 755 + "tokio", 756 + "tokio-native-tls", 757 + "tower-service", 758 + ] 759 + 760 + [[package]] 761 + name = "hyper-util" 762 + version = "0.1.17" 763 + source = "registry+https://github.com/rust-lang/crates.io-index" 764 + checksum = "3c6995591a8f1380fcb4ba966a252a4b29188d51d2b89e3a252f5305be65aea8" 765 + dependencies = [ 766 + "base64", 767 + "bytes", 768 + "futures-channel", 769 + "futures-core", 770 + "futures-util", 771 + "http", 772 + "http-body", 773 + "hyper", 774 + "ipnet", 775 + "libc", 776 + "percent-encoding", 777 + "pin-project-lite", 778 + "socket2 0.6.0", 779 + "system-configuration", 780 + "tokio", 781 + "tower-service", 782 + "tracing", 783 + "windows-registry", 784 + ] 785 + 786 + [[package]] 787 + name = "iana-time-zone" 788 + version = "0.1.64" 789 + source = "registry+https://github.com/rust-lang/crates.io-index" 790 + checksum = "33e57f83510bb73707521ebaffa789ec8caf86f9657cad665b092b581d40e9fb" 791 + dependencies = [ 792 + "android_system_properties", 793 + "core-foundation-sys", 794 + "iana-time-zone-haiku", 795 + "js-sys", 796 + "log", 797 + "wasm-bindgen", 798 + "windows-core", 799 + ] 800 + 801 + [[package]] 802 + name = "iana-time-zone-haiku" 803 + version = "0.1.2" 804 + source = "registry+https://github.com/rust-lang/crates.io-index" 805 + checksum = "f31827a206f56af32e590ba56d5d2d085f558508192593743f16b2306495269f" 806 + dependencies = [ 807 + "cc", 808 + ] 809 + 810 + [[package]] 402 811 name = "icu_collections" 403 812 version = "2.0.0" 404 813 source = "registry+https://github.com/rust-lang/crates.io-index" ··· 550 959 ] 551 960 552 961 [[package]] 962 + name = "io-uring" 963 + version = "0.7.10" 964 + source = "registry+https://github.com/rust-lang/crates.io-index" 965 + checksum = "046fa2d4d00aea763528b4950358d0ead425372445dc8ff86312b3c69ff7727b" 966 + dependencies = [ 967 + "bitflags", 968 + "cfg-if", 969 + "libc", 970 + ] 971 + 972 + [[package]] 973 + name = "ipconfig" 974 + version = "0.3.2" 975 + source = "registry+https://github.com/rust-lang/crates.io-index" 976 + checksum = "b58db92f96b720de98181bbbe63c831e87005ab460c1bf306eb2622b4707997f" 977 + dependencies = [ 978 + "socket2 0.5.10", 979 + "widestring", 980 + "windows-sys 0.48.0", 981 + "winreg", 982 + ] 983 + 984 + [[package]] 985 + name = "ipnet" 986 + version = "2.11.0" 987 + source = "registry+https://github.com/rust-lang/crates.io-index" 988 + checksum = "469fb0b9cefa57e3ef31275ee7cacb78f2fdca44e4765491884a2b119d4eb130" 989 + 990 + [[package]] 991 + name = "iri-string" 992 + version = "0.7.8" 993 + source = "registry+https://github.com/rust-lang/crates.io-index" 994 + checksum = "dbc5ebe9c3a1a7a5127f920a418f7585e9e758e911d0466ed004f393b0e380b2" 995 + dependencies = [ 996 + "memchr", 997 + "serde", 998 + ] 999 + 1000 + [[package]] 553 1001 name = "is_ci" 554 1002 version = "1.2.0" 555 1003 source = "registry+https://github.com/rust-lang/crates.io-index" ··· 594 1042 checksum = "58f929b4d672ea937a23a1ab494143d968337a5f47e56d0815df1e0890ddf174" 595 1043 596 1044 [[package]] 1045 + name = "linked-hash-map" 1046 + version = "0.5.6" 1047 + source = "registry+https://github.com/rust-lang/crates.io-index" 1048 + checksum = "0717cef1bc8b636c6e1c1bbdefc09e6322da8a9321966e8928ef80d20f7f770f" 1049 + 1050 + [[package]] 597 1051 name = "linux-raw-sys" 598 1052 version = "0.11.0" 599 1053 source = "registry+https://github.com/rust-lang/crates.io-index" ··· 606 1060 checksum = "241eaef5fd12c88705a01fc1066c48c4b36e0dd4377dcdc7ec3942cea7a69956" 607 1061 608 1062 [[package]] 1063 + name = "lock_api" 1064 + version = "0.4.14" 1065 + source = "registry+https://github.com/rust-lang/crates.io-index" 1066 + checksum = "224399e74b87b5f3557511d98dff8b14089b3dadafcab6bb93eab67d3aace965" 1067 + dependencies = [ 1068 + "scopeguard", 1069 + ] 1070 + 1071 + [[package]] 609 1072 name = "log" 610 1073 version = "0.4.28" 611 1074 source = "registry+https://github.com/rust-lang/crates.io-index" 612 1075 checksum = "34080505efa8e45a4b816c349525ebe327ceaa8559756f0356cba97ef3bf7432" 613 1076 614 1077 [[package]] 1078 + name = "lru-cache" 1079 + version = "0.1.2" 1080 + source = "registry+https://github.com/rust-lang/crates.io-index" 1081 + checksum = "31e24f1ad8321ca0e8a1e0ac13f23cb668e6f5466c2c57319f6a5cf1cc8e3b1c" 1082 + dependencies = [ 1083 + "linked-hash-map", 1084 + ] 1085 + 1086 + [[package]] 615 1087 name = "memchr" 616 1088 version = "2.7.6" 617 1089 source = "registry+https://github.com/rust-lang/crates.io-index" ··· 648 1120 ] 649 1121 650 1122 [[package]] 1123 + name = "mime" 1124 + version = "0.3.17" 1125 + source = "registry+https://github.com/rust-lang/crates.io-index" 1126 + checksum = "6877bb514081ee2a7ff5ef9de3281f14a4dd4bceac4c09388074a6b5df8a139a" 1127 + 1128 + [[package]] 651 1129 name = "minicov" 652 1130 version = "0.3.7" 653 1131 source = "registry+https://github.com/rust-lang/crates.io-index" ··· 673 1151 ] 674 1152 675 1153 [[package]] 1154 + name = "mio" 1155 + version = "1.0.4" 1156 + source = "registry+https://github.com/rust-lang/crates.io-index" 1157 + checksum = "78bed444cc8a2160f01cbcf811ef18cac863ad68ae8ca62092e8db51d51c761c" 1158 + dependencies = [ 1159 + "libc", 1160 + "wasi 0.11.1+wasi-snapshot-preview1", 1161 + "windows-sys 0.59.0", 1162 + ] 1163 + 1164 + [[package]] 676 1165 name = "mlf-cli" 677 1166 version = "0.1.0" 678 1167 dependencies = [ 1168 + "chrono", 679 1169 "clap", 680 1170 "glob", 1171 + "hickory-resolver", 681 1172 "miette", 682 1173 "mlf-codegen", 683 1174 "mlf-codegen-go", ··· 686 1177 "mlf-diagnostics", 687 1178 "mlf-lang", 688 1179 "mlf-validation", 1180 + "reqwest", 689 1181 "serde", 690 1182 "serde_json", 691 1183 "thiserror 2.0.17", 1184 + "toml", 692 1185 ] 693 1186 694 1187 [[package]] ··· 788 1281 ] 789 1282 790 1283 [[package]] 1284 + name = "native-tls" 1285 + version = "0.2.14" 1286 + source = "registry+https://github.com/rust-lang/crates.io-index" 1287 + checksum = "87de3442987e9dbec73158d5c715e7ad9072fda936bb03d19d7fa10e00520f0e" 1288 + dependencies = [ 1289 + "libc", 1290 + "log", 1291 + "openssl", 1292 + "openssl-probe", 1293 + "openssl-sys", 1294 + "schannel", 1295 + "security-framework", 1296 + "security-framework-sys", 1297 + "tempfile", 1298 + ] 1299 + 1300 + [[package]] 791 1301 name = "nom" 792 1302 version = "7.1.3" 793 1303 source = "registry+https://github.com/rust-lang/crates.io-index" ··· 813 1323 checksum = "51d515d32fb182ee37cda2ccdcb92950d6a3c2893aa280e540671c2cd0f3b1d9" 814 1324 815 1325 [[package]] 1326 + name = "num-traits" 1327 + version = "0.2.19" 1328 + source = "registry+https://github.com/rust-lang/crates.io-index" 1329 + checksum = "071dfc062690e90b734c0b2273ce72ad0ffa95f0c74596bc250dcfd960262841" 1330 + dependencies = [ 1331 + "autocfg", 1332 + ] 1333 + 1334 + [[package]] 816 1335 name = "object" 817 1336 version = "0.37.3" 818 1337 source = "registry+https://github.com/rust-lang/crates.io-index" ··· 834 1353 checksum = "a4895175b425cb1f87721b59f0f286c2092bd4af812243672510e1ac53e2e0ad" 835 1354 836 1355 [[package]] 1356 + name = "openssl" 1357 + version = "0.10.73" 1358 + source = "registry+https://github.com/rust-lang/crates.io-index" 1359 + checksum = "8505734d46c8ab1e19a1dce3aef597ad87dcb4c37e7188231769bd6bd51cebf8" 1360 + dependencies = [ 1361 + "bitflags", 1362 + "cfg-if", 1363 + "foreign-types", 1364 + "libc", 1365 + "once_cell", 1366 + "openssl-macros", 1367 + "openssl-sys", 1368 + ] 1369 + 1370 + [[package]] 1371 + name = "openssl-macros" 1372 + version = "0.1.1" 1373 + source = "registry+https://github.com/rust-lang/crates.io-index" 1374 + checksum = "a948666b637a0f465e8564c73e89d4dde00d72d4d473cc972f390fc3dcee7d9c" 1375 + dependencies = [ 1376 + "proc-macro2", 1377 + "quote", 1378 + "syn 2.0.106", 1379 + ] 1380 + 1381 + [[package]] 1382 + name = "openssl-probe" 1383 + version = "0.1.6" 1384 + source = "registry+https://github.com/rust-lang/crates.io-index" 1385 + checksum = "d05e27ee213611ffe7d6348b942e8f942b37114c00cc03cec254295a4a17852e" 1386 + 1387 + [[package]] 1388 + name = "openssl-sys" 1389 + version = "0.9.109" 1390 + source = "registry+https://github.com/rust-lang/crates.io-index" 1391 + checksum = "90096e2e47630d78b7d1c20952dc621f957103f8bc2c8359ec81290d75238571" 1392 + dependencies = [ 1393 + "cc", 1394 + "libc", 1395 + "pkg-config", 1396 + "vcpkg", 1397 + ] 1398 + 1399 + [[package]] 837 1400 name = "owo-colors" 838 1401 version = "4.2.3" 839 1402 source = "registry+https://github.com/rust-lang/crates.io-index" 840 1403 checksum = "9c6901729fa79e91a0913333229e9ca5dc725089d1c363b2f4b4760709dc4a52" 841 1404 842 1405 [[package]] 1406 + name = "parking_lot" 1407 + version = "0.12.5" 1408 + source = "registry+https://github.com/rust-lang/crates.io-index" 1409 + checksum = "93857453250e3077bd71ff98b6a65ea6621a19bb0f559a85248955ac12c45a1a" 1410 + dependencies = [ 1411 + "lock_api", 1412 + "parking_lot_core", 1413 + ] 1414 + 1415 + [[package]] 1416 + name = "parking_lot_core" 1417 + version = "0.9.12" 1418 + source = "registry+https://github.com/rust-lang/crates.io-index" 1419 + checksum = "2621685985a2ebf1c516881c026032ac7deafcda1a2c9b7850dc81e3dfcb64c1" 1420 + dependencies = [ 1421 + "cfg-if", 1422 + "libc", 1423 + "redox_syscall", 1424 + "smallvec", 1425 + "windows-link 0.2.0", 1426 + ] 1427 + 1428 + [[package]] 843 1429 name = "percent-encoding" 844 1430 version = "2.3.2" 845 1431 source = "registry+https://github.com/rust-lang/crates.io-index" 846 1432 checksum = "9b4f627cb1b25917193a259e49bdad08f671f8d9708acfd5fe0a8c1455d87220" 847 1433 848 1434 [[package]] 1435 + name = "pin-project-lite" 1436 + version = "0.2.16" 1437 + source = "registry+https://github.com/rust-lang/crates.io-index" 1438 + checksum = "3b3cff922bd51709b605d9ead9aa71031d81447142d828eb4a6eba76fe619f9b" 1439 + 1440 + [[package]] 1441 + name = "pin-utils" 1442 + version = "0.1.0" 1443 + source = "registry+https://github.com/rust-lang/crates.io-index" 1444 + checksum = "8b870d8c151b6f2fb93e84a13146138f05d02ed11c7e7c54f8826aaaf7c9f184" 1445 + 1446 + [[package]] 1447 + name = "pkg-config" 1448 + version = "0.3.32" 1449 + source = "registry+https://github.com/rust-lang/crates.io-index" 1450 + checksum = "7edddbd0b52d732b21ad9a5fab5c704c14cd949e5e9a1ec5929a24fded1b904c" 1451 + 1452 + [[package]] 849 1453 name = "potential_utf" 850 1454 version = "0.1.3" 851 1455 source = "registry+https://github.com/rust-lang/crates.io-index" ··· 861 1465 checksum = "439ee305def115ba05938db6eb1644ff94165c5ab5e9420d1c1bcedbba909391" 862 1466 863 1467 [[package]] 1468 + name = "ppv-lite86" 1469 + version = "0.2.21" 1470 + source = "registry+https://github.com/rust-lang/crates.io-index" 1471 + checksum = "85eae3c4ed2f50dcfe72643da4befc30deadb458a9b590d720cde2f2b1e97da9" 1472 + dependencies = [ 1473 + "zerocopy", 1474 + ] 1475 + 1476 + [[package]] 864 1477 name = "proc-macro-error" 865 1478 version = "1.0.4" 866 1479 source = "registry+https://github.com/rust-lang/crates.io-index" ··· 903 1516 ] 904 1517 905 1518 [[package]] 1519 + name = "r-efi" 1520 + version = "5.3.0" 1521 + source = "registry+https://github.com/rust-lang/crates.io-index" 1522 + checksum = "69cdb34c158ceb288df11e18b4bd39de994f6657d83847bdffdbd7f346754b0f" 1523 + 1524 + [[package]] 1525 + name = "rand" 1526 + version = "0.8.5" 1527 + source = "registry+https://github.com/rust-lang/crates.io-index" 1528 + checksum = "34af8d1a0e25924bc5b7c43c079c942339d8f0a8b57c39049bef581b46327404" 1529 + dependencies = [ 1530 + "libc", 1531 + "rand_chacha", 1532 + "rand_core", 1533 + ] 1534 + 1535 + [[package]] 1536 + name = "rand_chacha" 1537 + version = "0.3.1" 1538 + source = "registry+https://github.com/rust-lang/crates.io-index" 1539 + checksum = "e6c10a63a0fa32252be49d21e7709d4d4baf8d231c2dbce1eaa8141b9b127d88" 1540 + dependencies = [ 1541 + "ppv-lite86", 1542 + "rand_core", 1543 + ] 1544 + 1545 + [[package]] 1546 + name = "rand_core" 1547 + version = "0.6.4" 1548 + source = "registry+https://github.com/rust-lang/crates.io-index" 1549 + checksum = "ec0be4795e2f6a28069bec0b5ff3e2ac9bafc99e6a9a7dc3547996c5c816922c" 1550 + dependencies = [ 1551 + "getrandom 0.2.16", 1552 + ] 1553 + 1554 + [[package]] 906 1555 name = "range-traits" 907 1556 version = "0.3.2" 908 1557 source = "registry+https://github.com/rust-lang/crates.io-index" 909 1558 checksum = "d20581732dd76fa913c7dff1a2412b714afe3573e94d41c34719de73337cc8ab" 910 1559 911 1560 [[package]] 1561 + name = "redox_syscall" 1562 + version = "0.5.18" 1563 + source = "registry+https://github.com/rust-lang/crates.io-index" 1564 + checksum = "ed2bf2547551a7053d6fdfafda3f938979645c44812fbfcda098faae3f1a362d" 1565 + dependencies = [ 1566 + "bitflags", 1567 + ] 1568 + 1569 + [[package]] 912 1570 name = "regex" 913 1571 version = "1.11.3" 914 1572 source = "registry+https://github.com/rust-lang/crates.io-index" ··· 938 1596 checksum = "caf4aa5b0f434c91fe5c7f1ecb6a5ece2130b02ad2a590589dda5146df959001" 939 1597 940 1598 [[package]] 1599 + name = "reqwest" 1600 + version = "0.12.23" 1601 + source = "registry+https://github.com/rust-lang/crates.io-index" 1602 + checksum = "d429f34c8092b2d42c7c93cec323bb4adeb7c67698f70839adec842ec10c7ceb" 1603 + dependencies = [ 1604 + "base64", 1605 + "bytes", 1606 + "encoding_rs", 1607 + "futures-channel", 1608 + "futures-core", 1609 + "futures-util", 1610 + "h2", 1611 + "http", 1612 + "http-body", 1613 + "http-body-util", 1614 + "hyper", 1615 + "hyper-rustls", 1616 + "hyper-tls", 1617 + "hyper-util", 1618 + "js-sys", 1619 + "log", 1620 + "mime", 1621 + "native-tls", 1622 + "percent-encoding", 1623 + "pin-project-lite", 1624 + "rustls-pki-types", 1625 + "serde", 1626 + "serde_json", 1627 + "serde_urlencoded", 1628 + "sync_wrapper", 1629 + "tokio", 1630 + "tokio-native-tls", 1631 + "tower", 1632 + "tower-http", 1633 + "tower-service", 1634 + "url", 1635 + "wasm-bindgen", 1636 + "wasm-bindgen-futures", 1637 + "web-sys", 1638 + ] 1639 + 1640 + [[package]] 1641 + name = "resolv-conf" 1642 + version = "0.7.5" 1643 + source = "registry+https://github.com/rust-lang/crates.io-index" 1644 + checksum = "6b3789b30bd25ba102de4beabd95d21ac45b69b1be7d14522bab988c526d6799" 1645 + 1646 + [[package]] 1647 + name = "ring" 1648 + version = "0.17.14" 1649 + source = "registry+https://github.com/rust-lang/crates.io-index" 1650 + checksum = "a4689e6c2294d81e88dc6261c768b63bc4fcdb852be6d1352498b114f61383b7" 1651 + dependencies = [ 1652 + "cc", 1653 + "cfg-if", 1654 + "getrandom 0.2.16", 1655 + "libc", 1656 + "untrusted", 1657 + "windows-sys 0.52.0", 1658 + ] 1659 + 1660 + [[package]] 941 1661 name = "rustc-demangle" 942 1662 version = "0.1.26" 943 1663 source = "registry+https://github.com/rust-lang/crates.io-index" ··· 953 1673 "errno", 954 1674 "libc", 955 1675 "linux-raw-sys", 956 - "windows-sys", 1676 + "windows-sys 0.61.1", 1677 + ] 1678 + 1679 + [[package]] 1680 + name = "rustls" 1681 + version = "0.23.32" 1682 + source = "registry+https://github.com/rust-lang/crates.io-index" 1683 + checksum = "cd3c25631629d034ce7cd9940adc9d45762d46de2b0f57193c4443b92c6d4d40" 1684 + dependencies = [ 1685 + "once_cell", 1686 + "rustls-pki-types", 1687 + "rustls-webpki", 1688 + "subtle", 1689 + "zeroize", 1690 + ] 1691 + 1692 + [[package]] 1693 + name = "rustls-pki-types" 1694 + version = "1.12.0" 1695 + source = "registry+https://github.com/rust-lang/crates.io-index" 1696 + checksum = "229a4a4c221013e7e1f1a043678c5cc39fe5171437c88fb47151a21e6f5b5c79" 1697 + dependencies = [ 1698 + "zeroize", 1699 + ] 1700 + 1701 + [[package]] 1702 + name = "rustls-webpki" 1703 + version = "0.103.7" 1704 + source = "registry+https://github.com/rust-lang/crates.io-index" 1705 + checksum = "e10b3f4191e8a80e6b43eebabfac91e5dcecebb27a71f04e820c47ec41d314bf" 1706 + dependencies = [ 1707 + "ring", 1708 + "rustls-pki-types", 1709 + "untrusted", 957 1710 ] 958 1711 959 1712 [[package]] ··· 978 1731 ] 979 1732 980 1733 [[package]] 1734 + name = "schannel" 1735 + version = "0.1.28" 1736 + source = "registry+https://github.com/rust-lang/crates.io-index" 1737 + checksum = "891d81b926048e76efe18581bf793546b4c0eaf8448d72be8de2bbee5fd166e1" 1738 + dependencies = [ 1739 + "windows-sys 0.61.1", 1740 + ] 1741 + 1742 + [[package]] 1743 + name = "scopeguard" 1744 + version = "1.2.0" 1745 + source = "registry+https://github.com/rust-lang/crates.io-index" 1746 + checksum = "94143f37725109f92c262ed2cf5e59bce7498c01bcc1502d7b9afe439a4e9f49" 1747 + 1748 + [[package]] 1749 + name = "security-framework" 1750 + version = "2.11.1" 1751 + source = "registry+https://github.com/rust-lang/crates.io-index" 1752 + checksum = "897b2245f0b511c87893af39b033e5ca9cce68824c4d7e7630b5a1d339658d02" 1753 + dependencies = [ 1754 + "bitflags", 1755 + "core-foundation", 1756 + "core-foundation-sys", 1757 + "libc", 1758 + "security-framework-sys", 1759 + ] 1760 + 1761 + [[package]] 1762 + name = "security-framework-sys" 1763 + version = "2.15.0" 1764 + source = "registry+https://github.com/rust-lang/crates.io-index" 1765 + checksum = "cc1f0cbffaac4852523ce30d8bd3c5cdc873501d96ff467ca09b6767bb8cd5c0" 1766 + dependencies = [ 1767 + "core-foundation-sys", 1768 + "libc", 1769 + ] 1770 + 1771 + [[package]] 981 1772 name = "serde" 982 1773 version = "1.0.228" 983 1774 source = "registry+https://github.com/rust-lang/crates.io-index" ··· 1033 1824 ] 1034 1825 1035 1826 [[package]] 1827 + name = "serde_spanned" 1828 + version = "0.6.9" 1829 + source = "registry+https://github.com/rust-lang/crates.io-index" 1830 + checksum = "bf41e0cfaf7226dca15e8197172c295a782857fcb97fad1808a166870dee75a3" 1831 + dependencies = [ 1832 + "serde", 1833 + ] 1834 + 1835 + [[package]] 1836 + name = "serde_urlencoded" 1837 + version = "0.7.1" 1838 + source = "registry+https://github.com/rust-lang/crates.io-index" 1839 + checksum = "d3491c14715ca2294c4d6a88f15e84739788c1d030eed8c110436aafdaa2f3fd" 1840 + dependencies = [ 1841 + "form_urlencoded", 1842 + "itoa", 1843 + "ryu", 1844 + "serde", 1845 + ] 1846 + 1847 + [[package]] 1036 1848 name = "sha2" 1037 1849 version = "0.10.9" 1038 1850 source = "registry+https://github.com/rust-lang/crates.io-index" ··· 1062 1874 checksum = "67b1b7a3b5fe4f1376887184045fcf45c69e92af734b7aaddc05fb777b6fbd03" 1063 1875 1064 1876 [[package]] 1877 + name = "socket2" 1878 + version = "0.5.10" 1879 + source = "registry+https://github.com/rust-lang/crates.io-index" 1880 + checksum = "e22376abed350d73dd1cd119b57ffccad95b4e585a7cda43e286245ce23c0678" 1881 + dependencies = [ 1882 + "libc", 1883 + "windows-sys 0.52.0", 1884 + ] 1885 + 1886 + [[package]] 1887 + name = "socket2" 1888 + version = "0.6.0" 1889 + source = "registry+https://github.com/rust-lang/crates.io-index" 1890 + checksum = "233504af464074f9d066d7b5416c5f9b894a5862a6506e306f7b816cdd6f1807" 1891 + dependencies = [ 1892 + "libc", 1893 + "windows-sys 0.59.0", 1894 + ] 1895 + 1896 + [[package]] 1065 1897 name = "stable_deref_trait" 1066 1898 version = "1.2.0" 1067 1899 source = "registry+https://github.com/rust-lang/crates.io-index" ··· 1092 1924 version = "0.11.1" 1093 1925 source = "registry+https://github.com/rust-lang/crates.io-index" 1094 1926 checksum = "7da8b5736845d9f2fcb837ea5d9e2628564b3b043a70948a3f0b778838c5fb4f" 1927 + 1928 + [[package]] 1929 + name = "subtle" 1930 + version = "2.6.1" 1931 + source = "registry+https://github.com/rust-lang/crates.io-index" 1932 + checksum = "13c2bddecc57b384dee18652358fb23172facb8a2c51ccc10d74c157bdea3292" 1095 1933 1096 1934 [[package]] 1097 1935 name = "supports-color" ··· 1136 1974 ] 1137 1975 1138 1976 [[package]] 1977 + name = "sync_wrapper" 1978 + version = "1.0.2" 1979 + source = "registry+https://github.com/rust-lang/crates.io-index" 1980 + checksum = "0bf256ce5efdfa370213c1dabab5935a12e49f2c58d15e9eac2870d3b4f27263" 1981 + dependencies = [ 1982 + "futures-core", 1983 + ] 1984 + 1985 + [[package]] 1139 1986 name = "synstructure" 1140 1987 version = "0.13.2" 1141 1988 source = "registry+https://github.com/rust-lang/crates.io-index" ··· 1147 1994 ] 1148 1995 1149 1996 [[package]] 1997 + name = "system-configuration" 1998 + version = "0.6.1" 1999 + source = "registry+https://github.com/rust-lang/crates.io-index" 2000 + checksum = "3c879d448e9d986b661742763247d3693ed13609438cf3d006f51f5368a5ba6b" 2001 + dependencies = [ 2002 + "bitflags", 2003 + "core-foundation", 2004 + "system-configuration-sys", 2005 + ] 2006 + 2007 + [[package]] 2008 + name = "system-configuration-sys" 2009 + version = "0.6.0" 2010 + source = "registry+https://github.com/rust-lang/crates.io-index" 2011 + checksum = "8e1d1b10ced5ca923a1fcb8d03e96b8d3268065d724548c0211415ff6ac6bac4" 2012 + dependencies = [ 2013 + "core-foundation-sys", 2014 + "libc", 2015 + ] 2016 + 2017 + [[package]] 2018 + name = "tempfile" 2019 + version = "3.23.0" 2020 + source = "registry+https://github.com/rust-lang/crates.io-index" 2021 + checksum = "2d31c77bdf42a745371d260a26ca7163f1e0924b64afa0b688e61b5a9fa02f16" 2022 + dependencies = [ 2023 + "fastrand", 2024 + "getrandom 0.3.3", 2025 + "once_cell", 2026 + "rustix", 2027 + "windows-sys 0.61.1", 2028 + ] 2029 + 2030 + [[package]] 1150 2031 name = "terminal_size" 1151 2032 version = "0.4.3" 1152 2033 source = "registry+https://github.com/rust-lang/crates.io-index" 1153 2034 checksum = "60b8cb979cb11c32ce1603f8137b22262a9d131aaa5c37b5678025f22b8becd0" 1154 2035 dependencies = [ 1155 2036 "rustix", 1156 - "windows-sys", 2037 + "windows-sys 0.60.2", 1157 2038 ] 1158 2039 1159 2040 [[package]] ··· 1247 2128 ] 1248 2129 1249 2130 [[package]] 2131 + name = "tinyvec" 2132 + version = "1.10.0" 2133 + source = "registry+https://github.com/rust-lang/crates.io-index" 2134 + checksum = "bfa5fdc3bce6191a1dbc8c02d5c8bffcf557bafa17c124c5264a458f1b0613fa" 2135 + dependencies = [ 2136 + "tinyvec_macros", 2137 + ] 2138 + 2139 + [[package]] 2140 + name = "tinyvec_macros" 2141 + version = "0.1.1" 2142 + source = "registry+https://github.com/rust-lang/crates.io-index" 2143 + checksum = "1f3ccbac311fea05f86f61904b462b55fb3df8837a366dfc601a0161d0532f20" 2144 + 2145 + [[package]] 2146 + name = "tokio" 2147 + version = "1.47.1" 2148 + source = "registry+https://github.com/rust-lang/crates.io-index" 2149 + checksum = "89e49afdadebb872d3145a5638b59eb0691ea23e46ca484037cfab3b76b95038" 2150 + dependencies = [ 2151 + "backtrace", 2152 + "bytes", 2153 + "io-uring", 2154 + "libc", 2155 + "mio", 2156 + "pin-project-lite", 2157 + "slab", 2158 + "socket2 0.6.0", 2159 + "windows-sys 0.59.0", 2160 + ] 2161 + 2162 + [[package]] 2163 + name = "tokio-native-tls" 2164 + version = "0.3.1" 2165 + source = "registry+https://github.com/rust-lang/crates.io-index" 2166 + checksum = "bbae76ab933c85776efabc971569dd6119c580d8f5d448769dec1764bf796ef2" 2167 + dependencies = [ 2168 + "native-tls", 2169 + "tokio", 2170 + ] 2171 + 2172 + [[package]] 2173 + name = "tokio-rustls" 2174 + version = "0.26.4" 2175 + source = "registry+https://github.com/rust-lang/crates.io-index" 2176 + checksum = "1729aa945f29d91ba541258c8df89027d5792d85a8841fb65e8bf0f4ede4ef61" 2177 + dependencies = [ 2178 + "rustls", 2179 + "tokio", 2180 + ] 2181 + 2182 + [[package]] 2183 + name = "tokio-util" 2184 + version = "0.7.16" 2185 + source = "registry+https://github.com/rust-lang/crates.io-index" 2186 + checksum = "14307c986784f72ef81c89db7d9e28d6ac26d16213b109ea501696195e6e3ce5" 2187 + dependencies = [ 2188 + "bytes", 2189 + "futures-core", 2190 + "futures-sink", 2191 + "pin-project-lite", 2192 + "tokio", 2193 + ] 2194 + 2195 + [[package]] 2196 + name = "toml" 2197 + version = "0.8.23" 2198 + source = "registry+https://github.com/rust-lang/crates.io-index" 2199 + checksum = "dc1beb996b9d83529a9e75c17a1686767d148d70663143c7854d8b4a09ced362" 2200 + dependencies = [ 2201 + "serde", 2202 + "serde_spanned", 2203 + "toml_datetime", 2204 + "toml_edit", 2205 + ] 2206 + 2207 + [[package]] 2208 + name = "toml_datetime" 2209 + version = "0.6.11" 2210 + source = "registry+https://github.com/rust-lang/crates.io-index" 2211 + checksum = "22cddaf88f4fbc13c51aebbf5f8eceb5c7c5a9da2ac40a13519eb5b0a0e8f11c" 2212 + dependencies = [ 2213 + "serde", 2214 + ] 2215 + 2216 + [[package]] 2217 + name = "toml_edit" 2218 + version = "0.22.27" 2219 + source = "registry+https://github.com/rust-lang/crates.io-index" 2220 + checksum = "41fe8c660ae4257887cf66394862d21dbca4a6ddd26f04a3560410406a2f819a" 2221 + dependencies = [ 2222 + "indexmap", 2223 + "serde", 2224 + "serde_spanned", 2225 + "toml_datetime", 2226 + "toml_write", 2227 + "winnow", 2228 + ] 2229 + 2230 + [[package]] 2231 + name = "toml_write" 2232 + version = "0.1.2" 2233 + source = "registry+https://github.com/rust-lang/crates.io-index" 2234 + checksum = "5d99f8c9a7727884afe522e9bd5edbfc91a3312b36a77b5fb8926e4c31a41801" 2235 + 2236 + [[package]] 2237 + name = "tower" 2238 + version = "0.5.2" 2239 + source = "registry+https://github.com/rust-lang/crates.io-index" 2240 + checksum = "d039ad9159c98b70ecfd540b2573b97f7f52c3e8d9f8ad57a24b916a536975f9" 2241 + dependencies = [ 2242 + "futures-core", 2243 + "futures-util", 2244 + "pin-project-lite", 2245 + "sync_wrapper", 2246 + "tokio", 2247 + "tower-layer", 2248 + "tower-service", 2249 + ] 2250 + 2251 + [[package]] 2252 + name = "tower-http" 2253 + version = "0.6.6" 2254 + source = "registry+https://github.com/rust-lang/crates.io-index" 2255 + checksum = "adc82fd73de2a9722ac5da747f12383d2bfdb93591ee6c58486e0097890f05f2" 2256 + dependencies = [ 2257 + "bitflags", 2258 + "bytes", 2259 + "futures-util", 2260 + "http", 2261 + "http-body", 2262 + "iri-string", 2263 + "pin-project-lite", 2264 + "tower", 2265 + "tower-layer", 2266 + "tower-service", 2267 + ] 2268 + 2269 + [[package]] 2270 + name = "tower-layer" 2271 + version = "0.3.3" 2272 + source = "registry+https://github.com/rust-lang/crates.io-index" 2273 + checksum = "121c2a6cda46980bb0fcd1647ffaf6cd3fc79a013de288782836f6df9c48780e" 2274 + 2275 + [[package]] 2276 + name = "tower-service" 2277 + version = "0.3.3" 2278 + source = "registry+https://github.com/rust-lang/crates.io-index" 2279 + checksum = "8df9b6e13f2d32c91b9bd719c00d1958837bc7dec474d94952798cc8e69eeec3" 2280 + 2281 + [[package]] 2282 + name = "tracing" 2283 + version = "0.1.41" 2284 + source = "registry+https://github.com/rust-lang/crates.io-index" 2285 + checksum = "784e0ac535deb450455cbfa28a6f0df145ea1bb7ae51b821cf5e7927fdcfbdd0" 2286 + dependencies = [ 2287 + "pin-project-lite", 2288 + "tracing-attributes", 2289 + "tracing-core", 2290 + ] 2291 + 2292 + [[package]] 2293 + name = "tracing-attributes" 2294 + version = "0.1.30" 2295 + source = "registry+https://github.com/rust-lang/crates.io-index" 2296 + checksum = "81383ab64e72a7a8b8e13130c49e3dab29def6d0c7d76a03087b3cf71c5c6903" 2297 + dependencies = [ 2298 + "proc-macro2", 2299 + "quote", 2300 + "syn 2.0.106", 2301 + ] 2302 + 2303 + [[package]] 2304 + name = "tracing-core" 2305 + version = "0.1.34" 2306 + source = "registry+https://github.com/rust-lang/crates.io-index" 2307 + checksum = "b9d12581f227e93f094d3af2ae690a574abb8a2b9b7a96e7cfe9647b2b617678" 2308 + dependencies = [ 2309 + "once_cell", 2310 + ] 2311 + 2312 + [[package]] 1250 2313 name = "tree-sitter" 1251 2314 version = "0.22.6" 1252 2315 source = "registry+https://github.com/rust-lang/crates.io-index" ··· 1265 2328 ] 1266 2329 1267 2330 [[package]] 2331 + name = "try-lock" 2332 + version = "0.2.5" 2333 + source = "registry+https://github.com/rust-lang/crates.io-index" 2334 + checksum = "e421abadd41a4225275504ea4d6566923418b7f05506fbc9c0fe86ba7396114b" 2335 + 2336 + [[package]] 1268 2337 name = "typenum" 1269 2338 version = "1.19.0" 1270 2339 source = "registry+https://github.com/rust-lang/crates.io-index" ··· 1301 2370 checksum = "4a1a07cc7db3810833284e8d372ccdc6da29741639ecc70c9ec107df0fa6154c" 1302 2371 1303 2372 [[package]] 2373 + name = "untrusted" 2374 + version = "0.9.0" 2375 + source = "registry+https://github.com/rust-lang/crates.io-index" 2376 + checksum = "8ecb6da28b8a351d773b68d5825ac39017e680750f980f3a1a85cd8dd28a47c1" 2377 + 2378 + [[package]] 1304 2379 name = "url" 1305 2380 version = "2.5.7" 1306 2381 source = "registry+https://github.com/rust-lang/crates.io-index" ··· 1325 2400 checksum = "06abde3611657adf66d383f00b093d7faecc7fa57071cce2578660c9f1010821" 1326 2401 1327 2402 [[package]] 2403 + name = "vcpkg" 2404 + version = "0.2.15" 2405 + source = "registry+https://github.com/rust-lang/crates.io-index" 2406 + checksum = "accd4ea62f7bb7a82fe23066fb0957d48ef677f6eeb8215f372f52e48bb32426" 2407 + 2408 + [[package]] 1328 2409 name = "version_check" 1329 2410 version = "0.9.5" 1330 2411 source = "registry+https://github.com/rust-lang/crates.io-index" ··· 1338 2419 dependencies = [ 1339 2420 "same-file", 1340 2421 "winapi-util", 2422 + ] 2423 + 2424 + [[package]] 2425 + name = "want" 2426 + version = "0.3.1" 2427 + source = "registry+https://github.com/rust-lang/crates.io-index" 2428 + checksum = "bfa7760aed19e106de2c7c0b581b509f2f25d3dacaf737cb82ac61bc6d760b0e" 2429 + dependencies = [ 2430 + "try-lock", 2431 + ] 2432 + 2433 + [[package]] 2434 + name = "wasi" 2435 + version = "0.11.1+wasi-snapshot-preview1" 2436 + source = "registry+https://github.com/rust-lang/crates.io-index" 2437 + checksum = "ccf3ec651a847eb01de73ccad15eb7d99f80485de043efb2f370cd654f4ea44b" 2438 + 2439 + [[package]] 2440 + name = "wasi" 2441 + version = "0.14.7+wasi-0.2.4" 2442 + source = "registry+https://github.com/rust-lang/crates.io-index" 2443 + checksum = "883478de20367e224c0090af9cf5f9fa85bed63a95c1abf3afc5c083ebc06e8c" 2444 + dependencies = [ 2445 + "wasip2", 2446 + ] 2447 + 2448 + [[package]] 2449 + name = "wasip2" 2450 + version = "1.0.1+wasi-0.2.4" 2451 + source = "registry+https://github.com/rust-lang/crates.io-index" 2452 + checksum = "0562428422c63773dad2c345a1882263bbf4d65cf3f42e90921f787ef5ad58e7" 2453 + dependencies = [ 2454 + "wit-bindgen", 1341 2455 ] 1342 2456 1343 2457 [[package]] ··· 1447 2561 ] 1448 2562 1449 2563 [[package]] 2564 + name = "widestring" 2565 + version = "1.2.1" 2566 + source = "registry+https://github.com/rust-lang/crates.io-index" 2567 + checksum = "72069c3113ab32ab29e5584db3c6ec55d416895e60715417b5b883a357c3e471" 2568 + 2569 + [[package]] 1450 2570 name = "winapi-util" 1451 2571 version = "0.1.11" 1452 2572 source = "registry+https://github.com/rust-lang/crates.io-index" 1453 2573 checksum = "c2a7b1c03c876122aa43f3020e6c3c3ee5c05081c9a00739faf7503aeba10d22" 1454 2574 dependencies = [ 1455 - "windows-sys", 2575 + "windows-sys 0.61.1", 2576 + ] 2577 + 2578 + [[package]] 2579 + name = "windows-core" 2580 + version = "0.62.1" 2581 + source = "registry+https://github.com/rust-lang/crates.io-index" 2582 + checksum = "6844ee5416b285084d3d3fffd743b925a6c9385455f64f6d4fa3031c4c2749a9" 2583 + dependencies = [ 2584 + "windows-implement", 2585 + "windows-interface", 2586 + "windows-link 0.2.0", 2587 + "windows-result 0.4.0", 2588 + "windows-strings 0.5.0", 2589 + ] 2590 + 2591 + [[package]] 2592 + name = "windows-implement" 2593 + version = "0.60.2" 2594 + source = "registry+https://github.com/rust-lang/crates.io-index" 2595 + checksum = "053e2e040ab57b9dc951b72c264860db7eb3b0200ba345b4e4c3b14f67855ddf" 2596 + dependencies = [ 2597 + "proc-macro2", 2598 + "quote", 2599 + "syn 2.0.106", 1456 2600 ] 1457 2601 1458 2602 [[package]] 2603 + name = "windows-interface" 2604 + version = "0.59.3" 2605 + source = "registry+https://github.com/rust-lang/crates.io-index" 2606 + checksum = "3f316c4a2570ba26bbec722032c4099d8c8bc095efccdc15688708623367e358" 2607 + dependencies = [ 2608 + "proc-macro2", 2609 + "quote", 2610 + "syn 2.0.106", 2611 + ] 2612 + 2613 + [[package]] 2614 + name = "windows-link" 2615 + version = "0.1.3" 2616 + source = "registry+https://github.com/rust-lang/crates.io-index" 2617 + checksum = "5e6ad25900d524eaabdbbb96d20b4311e1e7ae1699af4fb28c17ae66c80d798a" 2618 + 2619 + [[package]] 1459 2620 name = "windows-link" 1460 2621 version = "0.2.0" 1461 2622 source = "registry+https://github.com/rust-lang/crates.io-index" 1462 2623 checksum = "45e46c0661abb7180e7b9c281db115305d49ca1709ab8242adf09666d2173c65" 1463 2624 1464 2625 [[package]] 2626 + name = "windows-registry" 2627 + version = "0.5.3" 2628 + source = "registry+https://github.com/rust-lang/crates.io-index" 2629 + checksum = "5b8a9ed28765efc97bbc954883f4e6796c33a06546ebafacbabee9696967499e" 2630 + dependencies = [ 2631 + "windows-link 0.1.3", 2632 + "windows-result 0.3.4", 2633 + "windows-strings 0.4.2", 2634 + ] 2635 + 2636 + [[package]] 2637 + name = "windows-result" 2638 + version = "0.3.4" 2639 + source = "registry+https://github.com/rust-lang/crates.io-index" 2640 + checksum = "56f42bd332cc6c8eac5af113fc0c1fd6a8fd2aa08a0119358686e5160d0586c6" 2641 + dependencies = [ 2642 + "windows-link 0.1.3", 2643 + ] 2644 + 2645 + [[package]] 2646 + name = "windows-result" 2647 + version = "0.4.0" 2648 + source = "registry+https://github.com/rust-lang/crates.io-index" 2649 + checksum = "7084dcc306f89883455a206237404d3eaf961e5bd7e0f312f7c91f57eb44167f" 2650 + dependencies = [ 2651 + "windows-link 0.2.0", 2652 + ] 2653 + 2654 + [[package]] 2655 + name = "windows-strings" 2656 + version = "0.4.2" 2657 + source = "registry+https://github.com/rust-lang/crates.io-index" 2658 + checksum = "56e6c93f3a0c3b36176cb1327a4958a0353d5d166c2a35cb268ace15e91d3b57" 2659 + dependencies = [ 2660 + "windows-link 0.1.3", 2661 + ] 2662 + 2663 + [[package]] 2664 + name = "windows-strings" 2665 + version = "0.5.0" 2666 + source = "registry+https://github.com/rust-lang/crates.io-index" 2667 + checksum = "7218c655a553b0bed4426cf54b20d7ba363ef543b52d515b3e48d7fd55318dda" 2668 + dependencies = [ 2669 + "windows-link 0.2.0", 2670 + ] 2671 + 2672 + [[package]] 2673 + name = "windows-sys" 2674 + version = "0.48.0" 2675 + source = "registry+https://github.com/rust-lang/crates.io-index" 2676 + checksum = "677d2418bec65e3338edb076e806bc1ec15693c5d0104683f2efe857f61056a9" 2677 + dependencies = [ 2678 + "windows-targets 0.48.5", 2679 + ] 2680 + 2681 + [[package]] 2682 + name = "windows-sys" 2683 + version = "0.52.0" 2684 + source = "registry+https://github.com/rust-lang/crates.io-index" 2685 + checksum = "282be5f36a8ce781fad8c8ae18fa3f9beff57ec1b52cb3de0789201425d9a33d" 2686 + dependencies = [ 2687 + "windows-targets 0.52.6", 2688 + ] 2689 + 2690 + [[package]] 2691 + name = "windows-sys" 2692 + version = "0.59.0" 2693 + source = "registry+https://github.com/rust-lang/crates.io-index" 2694 + checksum = "1e38bc4d79ed67fd075bcc251a1c39b32a1776bbe92e5bef1f0bf1f8c531853b" 2695 + dependencies = [ 2696 + "windows-targets 0.52.6", 2697 + ] 2698 + 2699 + [[package]] 1465 2700 name = "windows-sys" 1466 2701 version = "0.60.2" 1467 2702 source = "registry+https://github.com/rust-lang/crates.io-index" 1468 2703 checksum = "f2f500e4d28234f72040990ec9d39e3a6b950f9f22d3dba18416c35882612bcb" 1469 2704 dependencies = [ 1470 - "windows-targets", 2705 + "windows-targets 0.53.4", 2706 + ] 2707 + 2708 + [[package]] 2709 + name = "windows-sys" 2710 + version = "0.61.1" 2711 + source = "registry+https://github.com/rust-lang/crates.io-index" 2712 + checksum = "6f109e41dd4a3c848907eb83d5a42ea98b3769495597450cf6d153507b166f0f" 2713 + dependencies = [ 2714 + "windows-link 0.2.0", 2715 + ] 2716 + 2717 + [[package]] 2718 + name = "windows-targets" 2719 + version = "0.48.5" 2720 + source = "registry+https://github.com/rust-lang/crates.io-index" 2721 + checksum = "9a2fa6e2155d7247be68c096456083145c183cbbbc2764150dda45a87197940c" 2722 + dependencies = [ 2723 + "windows_aarch64_gnullvm 0.48.5", 2724 + "windows_aarch64_msvc 0.48.5", 2725 + "windows_i686_gnu 0.48.5", 2726 + "windows_i686_msvc 0.48.5", 2727 + "windows_x86_64_gnu 0.48.5", 2728 + "windows_x86_64_gnullvm 0.48.5", 2729 + "windows_x86_64_msvc 0.48.5", 2730 + ] 2731 + 2732 + [[package]] 2733 + name = "windows-targets" 2734 + version = "0.52.6" 2735 + source = "registry+https://github.com/rust-lang/crates.io-index" 2736 + checksum = "9b724f72796e036ab90c1021d4780d4d3d648aca59e491e6b98e725b84e99973" 2737 + dependencies = [ 2738 + "windows_aarch64_gnullvm 0.52.6", 2739 + "windows_aarch64_msvc 0.52.6", 2740 + "windows_i686_gnu 0.52.6", 2741 + "windows_i686_gnullvm 0.52.6", 2742 + "windows_i686_msvc 0.52.6", 2743 + "windows_x86_64_gnu 0.52.6", 2744 + "windows_x86_64_gnullvm 0.52.6", 2745 + "windows_x86_64_msvc 0.52.6", 1471 2746 ] 1472 2747 1473 2748 [[package]] ··· 1476 2751 source = "registry+https://github.com/rust-lang/crates.io-index" 1477 2752 checksum = "2d42b7b7f66d2a06854650af09cfdf8713e427a439c97ad65a6375318033ac4b" 1478 2753 dependencies = [ 1479 - "windows-link", 1480 - "windows_aarch64_gnullvm", 1481 - "windows_aarch64_msvc", 1482 - "windows_i686_gnu", 1483 - "windows_i686_gnullvm", 1484 - "windows_i686_msvc", 1485 - "windows_x86_64_gnu", 1486 - "windows_x86_64_gnullvm", 1487 - "windows_x86_64_msvc", 2754 + "windows-link 0.2.0", 2755 + "windows_aarch64_gnullvm 0.53.0", 2756 + "windows_aarch64_msvc 0.53.0", 2757 + "windows_i686_gnu 0.53.0", 2758 + "windows_i686_gnullvm 0.53.0", 2759 + "windows_i686_msvc 0.53.0", 2760 + "windows_x86_64_gnu 0.53.0", 2761 + "windows_x86_64_gnullvm 0.53.0", 2762 + "windows_x86_64_msvc 0.53.0", 1488 2763 ] 1489 2764 1490 2765 [[package]] 1491 2766 name = "windows_aarch64_gnullvm" 2767 + version = "0.48.5" 2768 + source = "registry+https://github.com/rust-lang/crates.io-index" 2769 + checksum = "2b38e32f0abccf9987a4e3079dfb67dcd799fb61361e53e2882c3cbaf0d905d8" 2770 + 2771 + [[package]] 2772 + name = "windows_aarch64_gnullvm" 2773 + version = "0.52.6" 2774 + source = "registry+https://github.com/rust-lang/crates.io-index" 2775 + checksum = "32a4622180e7a0ec044bb555404c800bc9fd9ec262ec147edd5989ccd0c02cd3" 2776 + 2777 + [[package]] 2778 + name = "windows_aarch64_gnullvm" 1492 2779 version = "0.53.0" 1493 2780 source = "registry+https://github.com/rust-lang/crates.io-index" 1494 2781 checksum = "86b8d5f90ddd19cb4a147a5fa63ca848db3df085e25fee3cc10b39b6eebae764" 1495 2782 1496 2783 [[package]] 1497 2784 name = "windows_aarch64_msvc" 2785 + version = "0.48.5" 2786 + source = "registry+https://github.com/rust-lang/crates.io-index" 2787 + checksum = "dc35310971f3b2dbbf3f0690a219f40e2d9afcf64f9ab7cc1be722937c26b4bc" 2788 + 2789 + [[package]] 2790 + name = "windows_aarch64_msvc" 2791 + version = "0.52.6" 2792 + source = "registry+https://github.com/rust-lang/crates.io-index" 2793 + checksum = "09ec2a7bb152e2252b53fa7803150007879548bc709c039df7627cabbd05d469" 2794 + 2795 + [[package]] 2796 + name = "windows_aarch64_msvc" 1498 2797 version = "0.53.0" 1499 2798 source = "registry+https://github.com/rust-lang/crates.io-index" 1500 2799 checksum = "c7651a1f62a11b8cbd5e0d42526e55f2c99886c77e007179efff86c2b137e66c" 1501 2800 1502 2801 [[package]] 1503 2802 name = "windows_i686_gnu" 2803 + version = "0.48.5" 2804 + source = "registry+https://github.com/rust-lang/crates.io-index" 2805 + checksum = "a75915e7def60c94dcef72200b9a8e58e5091744960da64ec734a6c6e9b3743e" 2806 + 2807 + [[package]] 2808 + name = "windows_i686_gnu" 2809 + version = "0.52.6" 2810 + source = "registry+https://github.com/rust-lang/crates.io-index" 2811 + checksum = "8e9b5ad5ab802e97eb8e295ac6720e509ee4c243f69d781394014ebfe8bbfa0b" 2812 + 2813 + [[package]] 2814 + name = "windows_i686_gnu" 1504 2815 version = "0.53.0" 1505 2816 source = "registry+https://github.com/rust-lang/crates.io-index" 1506 2817 checksum = "c1dc67659d35f387f5f6c479dc4e28f1d4bb90ddd1a5d3da2e5d97b42d6272c3" 1507 2818 1508 2819 [[package]] 1509 2820 name = "windows_i686_gnullvm" 2821 + version = "0.52.6" 2822 + source = "registry+https://github.com/rust-lang/crates.io-index" 2823 + checksum = "0eee52d38c090b3caa76c563b86c3a4bd71ef1a819287c19d586d7334ae8ed66" 2824 + 2825 + [[package]] 2826 + name = "windows_i686_gnullvm" 1510 2827 version = "0.53.0" 1511 2828 source = "registry+https://github.com/rust-lang/crates.io-index" 1512 2829 checksum = "9ce6ccbdedbf6d6354471319e781c0dfef054c81fbc7cf83f338a4296c0cae11" 1513 2830 1514 2831 [[package]] 1515 2832 name = "windows_i686_msvc" 2833 + version = "0.48.5" 2834 + source = "registry+https://github.com/rust-lang/crates.io-index" 2835 + checksum = "8f55c233f70c4b27f66c523580f78f1004e8b5a8b659e05a4eb49d4166cca406" 2836 + 2837 + [[package]] 2838 + name = "windows_i686_msvc" 2839 + version = "0.52.6" 2840 + source = "registry+https://github.com/rust-lang/crates.io-index" 2841 + checksum = "240948bc05c5e7c6dabba28bf89d89ffce3e303022809e73deaefe4f6ec56c66" 2842 + 2843 + [[package]] 2844 + name = "windows_i686_msvc" 1516 2845 version = "0.53.0" 1517 2846 source = "registry+https://github.com/rust-lang/crates.io-index" 1518 2847 checksum = "581fee95406bb13382d2f65cd4a908ca7b1e4c2f1917f143ba16efe98a589b5d" 1519 2848 1520 2849 [[package]] 1521 2850 name = "windows_x86_64_gnu" 2851 + version = "0.48.5" 2852 + source = "registry+https://github.com/rust-lang/crates.io-index" 2853 + checksum = "53d40abd2583d23e4718fddf1ebec84dbff8381c07cae67ff7768bbf19c6718e" 2854 + 2855 + [[package]] 2856 + name = "windows_x86_64_gnu" 2857 + version = "0.52.6" 2858 + source = "registry+https://github.com/rust-lang/crates.io-index" 2859 + checksum = "147a5c80aabfbf0c7d901cb5895d1de30ef2907eb21fbbab29ca94c5b08b1a78" 2860 + 2861 + [[package]] 2862 + name = "windows_x86_64_gnu" 1522 2863 version = "0.53.0" 1523 2864 source = "registry+https://github.com/rust-lang/crates.io-index" 1524 2865 checksum = "2e55b5ac9ea33f2fc1716d1742db15574fd6fc8dadc51caab1c16a3d3b4190ba" 1525 2866 1526 2867 [[package]] 1527 2868 name = "windows_x86_64_gnullvm" 2869 + version = "0.48.5" 2870 + source = "registry+https://github.com/rust-lang/crates.io-index" 2871 + checksum = "0b7b52767868a23d5bab768e390dc5f5c55825b6d30b86c844ff2dc7414044cc" 2872 + 2873 + [[package]] 2874 + name = "windows_x86_64_gnullvm" 2875 + version = "0.52.6" 2876 + source = "registry+https://github.com/rust-lang/crates.io-index" 2877 + checksum = "24d5b23dc417412679681396f2b49f3de8c1473deb516bd34410872eff51ed0d" 2878 + 2879 + [[package]] 2880 + name = "windows_x86_64_gnullvm" 1528 2881 version = "0.53.0" 1529 2882 source = "registry+https://github.com/rust-lang/crates.io-index" 1530 2883 checksum = "0a6e035dd0599267ce1ee132e51c27dd29437f63325753051e71dd9e42406c57" 1531 2884 1532 2885 [[package]] 1533 2886 name = "windows_x86_64_msvc" 2887 + version = "0.48.5" 2888 + source = "registry+https://github.com/rust-lang/crates.io-index" 2889 + checksum = "ed94fce61571a4006852b7389a063ab983c02eb1bb37b47f8272ce92d06d9538" 2890 + 2891 + [[package]] 2892 + name = "windows_x86_64_msvc" 2893 + version = "0.52.6" 2894 + source = "registry+https://github.com/rust-lang/crates.io-index" 2895 + checksum = "589f6da84c646204747d1270a2a5661ea66ed1cced2631d546fdfb155959f9ec" 2896 + 2897 + [[package]] 2898 + name = "windows_x86_64_msvc" 1534 2899 version = "0.53.0" 1535 2900 source = "registry+https://github.com/rust-lang/crates.io-index" 1536 2901 checksum = "271414315aff87387382ec3d271b52d7ae78726f5d44ac98b4f4030c91880486" 1537 2902 1538 2903 [[package]] 2904 + name = "winnow" 2905 + version = "0.7.13" 2906 + source = "registry+https://github.com/rust-lang/crates.io-index" 2907 + checksum = "21a0236b59786fed61e2a80582dd500fe61f18b5dca67a4a067d0bc9039339cf" 2908 + dependencies = [ 2909 + "memchr", 2910 + ] 2911 + 2912 + [[package]] 2913 + name = "winreg" 2914 + version = "0.50.0" 2915 + source = "registry+https://github.com/rust-lang/crates.io-index" 2916 + checksum = "524e57b2c537c0f9b1e69f1965311ec12182b4122e45035b1508cd24d2adadb1" 2917 + dependencies = [ 2918 + "cfg-if", 2919 + "windows-sys 0.48.0", 2920 + ] 2921 + 2922 + [[package]] 2923 + name = "wit-bindgen" 2924 + version = "0.46.0" 2925 + source = "registry+https://github.com/rust-lang/crates.io-index" 2926 + checksum = "f17a85883d4e6d00e8a97c586de764dabcc06133f7f1d55dce5cdc070ad7fe59" 2927 + 2928 + [[package]] 1539 2929 name = "writeable" 1540 2930 version = "0.6.1" 1541 2931 source = "registry+https://github.com/rust-lang/crates.io-index" ··· 1566 2956 ] 1567 2957 1568 2958 [[package]] 2959 + name = "zerocopy" 2960 + version = "0.8.27" 2961 + source = "registry+https://github.com/rust-lang/crates.io-index" 2962 + checksum = "0894878a5fa3edfd6da3f88c4805f4c8558e2b996227a3d864f47fe11e38282c" 2963 + dependencies = [ 2964 + "zerocopy-derive", 2965 + ] 2966 + 2967 + [[package]] 2968 + name = "zerocopy-derive" 2969 + version = "0.8.27" 2970 + source = "registry+https://github.com/rust-lang/crates.io-index" 2971 + checksum = "88d2b8d9c68ad2b9e4340d7832716a4d21a22a1154777ad56ea55c51a9cf3831" 2972 + dependencies = [ 2973 + "proc-macro2", 2974 + "quote", 2975 + "syn 2.0.106", 2976 + ] 2977 + 2978 + [[package]] 1569 2979 name = "zerofrom" 1570 2980 version = "0.1.6" 1571 2981 source = "registry+https://github.com/rust-lang/crates.io-index" ··· 1585 2995 "syn 2.0.106", 1586 2996 "synstructure", 1587 2997 ] 2998 + 2999 + [[package]] 3000 + name = "zeroize" 3001 + version = "1.8.2" 3002 + source = "registry+https://github.com/rust-lang/crates.io-index" 3003 + checksum = "b97154e67e32c85465826e8bcc1c59429aaaf107c1e4a9e53c8d8ccd5eff88d0" 1588 3004 1589 3005 [[package]] 1590 3006 name = "zerotrie"
+4
mlf-cli/Cargo.toml
··· 19 19 serde = { version = "1", features = ["derive"] } 20 20 serde_json = "1" 21 21 glob = "0.3" 22 + toml = "0.8" 23 + reqwest = { version = "0.12", features = ["blocking", "json"] } 24 + chrono = { version = "0.4", features = ["serde"] } 25 + hickory-resolver = "0.24" 22 26 23 27 # Optional code generator plugins 24 28 mlf-codegen-typescript = { path = "../codegen-plugins/mlf-codegen-typescript", optional = true }
+145
mlf-cli/src/config.rs
··· 1 + use serde::{Deserialize, Serialize}; 2 + use std::path::{Path, PathBuf}; 3 + use thiserror::Error; 4 + 5 + #[derive(Error, Debug)] 6 + pub enum ConfigError { 7 + #[error("Failed to read config file: {0}")] 8 + ReadError(#[from] std::io::Error), 9 + 10 + #[error("Failed to parse config file: {0}")] 11 + ParseError(#[from] toml::de::Error), 12 + 13 + #[error("No mlf.toml found in current directory or parent directories")] 14 + NotFound, 15 + } 16 + 17 + #[derive(Debug, Serialize, Deserialize)] 18 + pub struct MlfConfig { 19 + #[serde(default)] 20 + pub source: SourceConfig, 21 + 22 + #[serde(default)] 23 + pub output: Vec<OutputConfig>, 24 + 25 + #[serde(default)] 26 + pub dependencies: Vec<String>, 27 + } 28 + 29 + #[derive(Debug, Serialize, Deserialize)] 30 + pub struct SourceConfig { 31 + #[serde(default = "default_source_directory")] 32 + pub directory: String, 33 + } 34 + 35 + impl Default for SourceConfig { 36 + fn default() -> Self { 37 + Self { 38 + directory: default_source_directory(), 39 + } 40 + } 41 + } 42 + 43 + fn default_source_directory() -> String { 44 + "./lexicons".to_string() 45 + } 46 + 47 + #[derive(Debug, Serialize, Deserialize)] 48 + pub struct OutputConfig { 49 + pub r#type: String, 50 + pub directory: String, 51 + } 52 + 53 + impl Default for MlfConfig { 54 + fn default() -> Self { 55 + Self { 56 + source: SourceConfig::default(), 57 + output: vec![], 58 + dependencies: vec![], 59 + } 60 + } 61 + } 62 + 63 + impl MlfConfig { 64 + pub fn load(path: &Path) -> Result<Self, ConfigError> { 65 + let content = std::fs::read_to_string(path)?; 66 + let config: MlfConfig = toml::from_str(&content)?; 67 + Ok(config) 68 + } 69 + 70 + pub fn save(&self, path: &Path) -> Result<(), ConfigError> { 71 + let content = toml::to_string_pretty(self) 72 + .map_err(|e| std::io::Error::new(std::io::ErrorKind::Other, e))?; 73 + std::fs::write(path, content)?; 74 + Ok(()) 75 + } 76 + 77 + pub fn create_default(path: &Path) -> Result<Self, ConfigError> { 78 + let config = MlfConfig::default(); 79 + config.save(path)?; 80 + Ok(config) 81 + } 82 + } 83 + 84 + /// Find the project root by looking for mlf.toml 85 + /// Searches upward from the given directory 86 + pub fn find_project_root(start_dir: &Path) -> Result<PathBuf, ConfigError> { 87 + let mut current = start_dir.to_path_buf(); 88 + const MAX_DEPTH: usize = 10; 89 + 90 + for _ in 0..MAX_DEPTH { 91 + let config_path = current.join("mlf.toml"); 92 + if config_path.exists() { 93 + return Ok(current); 94 + } 95 + 96 + match current.parent() { 97 + Some(parent) => current = parent.to_path_buf(), 98 + None => break, 99 + } 100 + } 101 + 102 + Err(ConfigError::NotFound) 103 + } 104 + 105 + /// Get or create the .mlf cache directory 106 + pub fn get_mlf_cache_dir(project_root: &Path) -> PathBuf { 107 + project_root.join(".mlf") 108 + } 109 + 110 + /// Initialize the .mlf directory structure 111 + pub fn init_mlf_cache(project_root: &Path) -> std::io::Result<()> { 112 + let mlf_dir = get_mlf_cache_dir(project_root); 113 + 114 + // Create directory structure 115 + std::fs::create_dir_all(&mlf_dir)?; 116 + std::fs::create_dir_all(mlf_dir.join("lexicons/json"))?; 117 + std::fs::create_dir_all(mlf_dir.join("lexicons/mlf"))?; 118 + 119 + // Create .gitignore 120 + let gitignore_path = mlf_dir.join(".gitignore"); 121 + if !gitignore_path.exists() { 122 + std::fs::write(&gitignore_path, "*\n!.gitignore\n")?; 123 + } 124 + 125 + // Create or touch .lexicon-cache.toml 126 + let cache_file = mlf_dir.join(".lexicon-cache.toml"); 127 + if !cache_file.exists() { 128 + std::fs::write(&cache_file, "# Lexicon cache metadata\n")?; 129 + } 130 + 131 + Ok(()) 132 + } 133 + 134 + #[cfg(test)] 135 + mod tests { 136 + use super::*; 137 + 138 + #[test] 139 + fn test_default_config() { 140 + let config = MlfConfig::default(); 141 + assert_eq!(config.source.directory, "./lexicons"); 142 + assert!(config.output.is_empty()); 143 + assert!(config.dependencies.is_empty()); 144 + } 145 + }
+374
mlf-cli/src/fetch.rs
··· 1 + use crate::config::{find_project_root, get_mlf_cache_dir, init_mlf_cache, ConfigError, MlfConfig}; 2 + use chrono::{DateTime, Utc}; 3 + use hickory_resolver::config::*; 4 + use hickory_resolver::Resolver; 5 + use miette::Diagnostic; 6 + use serde::{Deserialize, Serialize}; 7 + use std::collections::HashMap; 8 + use std::path::Path; 9 + use thiserror::Error; 10 + 11 + #[derive(Error, Debug, Diagnostic)] 12 + pub enum FetchError { 13 + #[error("Failed to find project root")] 14 + #[diagnostic(code(mlf::fetch::no_project_root))] 15 + NoProjectRoot(#[from] ConfigError), 16 + 17 + #[error("Failed to create .mlf directory: {0}")] 18 + #[diagnostic(code(mlf::fetch::init_failed))] 19 + InitFailed(#[source] std::io::Error), 20 + 21 + #[error("DNS lookup failed: {0}")] 22 + #[diagnostic(code(mlf::fetch::dns_error))] 23 + DnsError(String), 24 + 25 + #[error("Failed to parse DID from TXT record: {0}")] 26 + #[diagnostic(code(mlf::fetch::did_parse_error))] 27 + DidParseError(String), 28 + 29 + #[error("Failed to fetch lexicon from ATProto repo: {0}")] 30 + #[diagnostic(code(mlf::fetch::http_error))] 31 + HttpError(String), 32 + 33 + #[error("Failed to parse lexicon JSON: {0}")] 34 + #[diagnostic(code(mlf::fetch::parse_error))] 35 + ParseError(#[from] serde_json::Error), 36 + 37 + #[error("Failed to convert lexicon to MLF: {0}")] 38 + #[diagnostic(code(mlf::fetch::conversion_error))] 39 + ConversionError(String), 40 + 41 + #[error("IO error: {0}")] 42 + #[diagnostic(code(mlf::fetch::io_error))] 43 + IoError(#[from] std::io::Error), 44 + 45 + #[error("Failed to load cache: {0}")] 46 + #[diagnostic(code(mlf::fetch::cache_error))] 47 + CacheError(String), 48 + 49 + #[error("Invalid NSID format: {0}")] 50 + #[diagnostic(code(mlf::fetch::invalid_nsid))] 51 + InvalidNsid(String), 52 + } 53 + 54 + #[derive(Debug, Serialize, Deserialize)] 55 + pub struct LexiconCache { 56 + #[serde(default)] 57 + pub lexicons: HashMap<String, CacheEntry>, 58 + } 59 + 60 + #[derive(Debug, Serialize, Deserialize, Clone)] 61 + pub struct CacheEntry { 62 + pub nsid: String, 63 + pub fetched_at: DateTime<Utc>, 64 + pub did: String, 65 + } 66 + 67 + impl LexiconCache { 68 + pub fn load(path: &Path) -> Result<Self, FetchError> { 69 + if !path.exists() { 70 + return Ok(Self { 71 + lexicons: HashMap::new(), 72 + }); 73 + } 74 + 75 + let content = std::fs::read_to_string(path)?; 76 + toml::from_str(&content).map_err(|e| FetchError::CacheError(e.to_string())) 77 + } 78 + 79 + pub fn save(&self, path: &Path) -> Result<(), FetchError> { 80 + let content = 81 + toml::to_string_pretty(self).map_err(|e| FetchError::CacheError(e.to_string()))?; 82 + std::fs::write(path, content)?; 83 + Ok(()) 84 + } 85 + 86 + pub fn add_entry(&mut self, nsid: String, did: String) { 87 + self.lexicons.insert( 88 + nsid.clone(), 89 + CacheEntry { 90 + nsid, 91 + fetched_at: Utc::now(), 92 + did, 93 + }, 94 + ); 95 + } 96 + } 97 + 98 + #[derive(Debug, Deserialize)] 99 + struct AtProtoRepoListRecords { 100 + records: Vec<AtProtoRecord>, 101 + } 102 + 103 + #[derive(Debug, Deserialize)] 104 + struct AtProtoRecord { 105 + uri: String, 106 + value: serde_json::Value, 107 + } 108 + 109 + pub fn fetch_lexicon(nsid: &str) -> Result<(), FetchError> { 110 + // Find project root 111 + let current_dir = std::env::current_dir()?; 112 + let project_root = match find_project_root(&current_dir) { 113 + Ok(root) => root, 114 + Err(ConfigError::NotFound) => { 115 + // Ask user if they want to create mlf.toml 116 + eprintln!("No mlf.toml found in current or parent directories."); 117 + eprintln!("Would you like to create one in the current directory? (y/n)"); 118 + 119 + let mut input = String::new(); 120 + std::io::stdin() 121 + .read_line(&mut input) 122 + .map_err(FetchError::InitFailed)?; 123 + 124 + if input.trim().to_lowercase() == "y" { 125 + let config_path = current_dir.join("mlf.toml"); 126 + MlfConfig::create_default(&config_path).map_err(FetchError::NoProjectRoot)?; 127 + println!("Created mlf.toml in {}", current_dir.display()); 128 + current_dir 129 + } else { 130 + return Err(FetchError::NoProjectRoot(ConfigError::NotFound)); 131 + } 132 + } 133 + Err(e) => return Err(FetchError::NoProjectRoot(e)), 134 + }; 135 + 136 + // Initialize .mlf directory 137 + init_mlf_cache(&project_root).map_err(FetchError::InitFailed)?; 138 + 139 + let mlf_dir = get_mlf_cache_dir(&project_root); 140 + let cache_file = mlf_dir.join(".lexicon-cache.toml"); 141 + let mut cache = LexiconCache::load(&cache_file)?; 142 + 143 + // Check if already cached 144 + if cache.lexicons.contains_key(nsid) { 145 + println!("Lexicon '{}' is already cached. Skipping fetch.", nsid); 146 + println!(" (Use --force to re-fetch)"); 147 + return Ok(()); 148 + } 149 + 150 + // Extract authority from NSID (e.g., "stream.place" from "stream.place.foo") 151 + let authority = extract_authority(nsid)?; 152 + println!("Fetching lexicons for authority: {}", authority); 153 + 154 + // Step 1: DNS TXT lookup 155 + let did = resolve_lexicon_did(&authority)?; 156 + println!(" → Resolved DID: {}", did); 157 + 158 + // Step 2: Query ATProto repo for lexicon schemas 159 + let records = fetch_lexicon_records(&did)?; 160 + println!(" → Found {} lexicon record(s)", records.len()); 161 + 162 + if records.is_empty() { 163 + return Err(FetchError::HttpError(format!( 164 + "No lexicon records found for {}", 165 + nsid 166 + ))); 167 + } 168 + 169 + // Step 3: Process each record 170 + for record in records { 171 + // Extract NSID from record URI or value 172 + let record_nsid = extract_nsid_from_record(&record)?; 173 + 174 + // Only process records that match or are under the requested NSID authority 175 + if !record_nsid.starts_with(&authority) { 176 + continue; 177 + } 178 + 179 + println!(" Processing: {}", record_nsid); 180 + 181 + // Save JSON file 182 + let json_str = serde_json::to_string_pretty(&record.value)?; 183 + let json_path = mlf_dir 184 + .join("lexicons/json") 185 + .join(format!("{}.json", record_nsid)); 186 + 187 + // Create parent directories 188 + if let Some(parent) = json_path.parent() { 189 + std::fs::create_dir_all(parent)?; 190 + } 191 + 192 + std::fs::write(&json_path, &json_str)?; 193 + println!(" → Saved JSON to {}", json_path.display()); 194 + 195 + // Convert to MLF 196 + let mlf_content = crate::generate::mlf::generate_mlf_from_json(&record.value) 197 + .map_err(|e| FetchError::ConversionError(format!("{:?}", e)))?; 198 + 199 + // Save MLF file 200 + let mlf_path = mlf_dir 201 + .join("lexicons/mlf") 202 + .join(format!("{}.mlf", record_nsid)); 203 + 204 + // Create parent directories 205 + if let Some(parent) = mlf_path.parent() { 206 + std::fs::create_dir_all(parent)?; 207 + } 208 + 209 + std::fs::write(&mlf_path, mlf_content)?; 210 + println!(" → Converted to MLF at {}", mlf_path.display()); 211 + 212 + // Update cache 213 + cache.add_entry(record_nsid.clone(), did.clone()); 214 + } 215 + 216 + // Save cache 217 + cache.save(&cache_file)?; 218 + 219 + println!("✓ Successfully fetched lexicons for {}", nsid); 220 + Ok(()) 221 + } 222 + 223 + fn extract_authority(nsid: &str) -> Result<String, FetchError> { 224 + // NSID format: authority.name(.name)* 225 + // For "stream.place" or "stream.place.foo", authority is "stream.place" 226 + // Typically authority is the first 2 segments (reversed domain) 227 + let parts: Vec<&str> = nsid.split('.').collect(); 228 + 229 + if parts.len() < 2 { 230 + return Err(FetchError::InvalidNsid(format!( 231 + "NSID must have at least 2 segments: {}", 232 + nsid 233 + ))); 234 + } 235 + 236 + // Take first 2 segments as authority (reversed domain) 237 + Ok(format!("{}.{}", parts[0], parts[1])) 238 + } 239 + 240 + fn resolve_lexicon_did(authority: &str) -> Result<String, FetchError> { 241 + // Reverse the authority for DNS lookup 242 + // "stream.place" -> "place.stream" -> "_lexicon.place.stream" 243 + let parts: Vec<&str> = authority.split('.').collect(); 244 + let reversed_parts: Vec<&str> = parts.iter().rev().copied().collect(); 245 + let dns_name = format!("_lexicon.{}", reversed_parts.join(".")); 246 + 247 + println!(" Looking up DNS TXT record: {}", dns_name); 248 + 249 + // Create DNS resolver 250 + let resolver = Resolver::new(ResolverConfig::default(), ResolverOpts::default()) 251 + .map_err(|e| FetchError::DnsError(format!("Failed to create DNS resolver: {}", e)))?; 252 + 253 + // Lookup TXT records 254 + let response = resolver 255 + .txt_lookup(&dns_name) 256 + .map_err(|e| FetchError::DnsError(format!("DNS TXT lookup failed for {}: {}", dns_name, e)))?; 257 + 258 + // Parse TXT records to find DID 259 + for txt_record in response.iter() { 260 + for txt_data in txt_record.txt_data() { 261 + let text = String::from_utf8_lossy(txt_data); 262 + // Look for "did=did:plc:..." or "did=did:web:..." 263 + if let Some(did_value) = text.strip_prefix("did=") { 264 + return Ok(did_value.trim().to_string()); 265 + } 266 + } 267 + } 268 + 269 + Err(FetchError::DidParseError(format!( 270 + "No DID found in TXT record for {}", 271 + dns_name 272 + ))) 273 + } 274 + 275 + fn fetch_lexicon_records(did: &str) -> Result<Vec<AtProtoRecord>, FetchError> { 276 + // Query the ATProto repo for records in com.atproto.lexicon.schema collection 277 + // We need to use the repo.listRecords XRPC endpoint 278 + 279 + // First, resolve the DID to a PDS endpoint 280 + let pds_url = resolve_did_to_pds(did)?; 281 + 282 + println!(" → Using PDS: {}", pds_url); 283 + 284 + // Query listRecords endpoint 285 + let url = format!( 286 + "{}/xrpc/com.atproto.repo.listRecords?repo={}&collection=com.atproto.lexicon.schema", 287 + pds_url, did 288 + ); 289 + 290 + println!(" Fetching lexicon records from: {}", url); 291 + 292 + let response = reqwest::blocking::get(&url) 293 + .map_err(|e| FetchError::HttpError(format!("Failed to fetch records: {}", e)))?; 294 + 295 + if !response.status().is_success() { 296 + return Err(FetchError::HttpError(format!( 297 + "HTTP {} when fetching records", 298 + response.status() 299 + ))); 300 + } 301 + 302 + let list_response: AtProtoRepoListRecords = response 303 + .json() 304 + .map_err(|e| FetchError::HttpError(format!("Failed to parse response: {}", e)))?; 305 + 306 + Ok(list_response.records) 307 + } 308 + 309 + fn resolve_did_to_pds(did: &str) -> Result<String, FetchError> { 310 + // For did:web:, extract the domain 311 + if let Some(domain) = did.strip_prefix("did:web:") { 312 + return Ok(format!("https://{}", domain)); 313 + } 314 + 315 + // For did:plc:, we need to query the PLC directory 316 + if did.starts_with("did:plc:") { 317 + // Query plc.directory to resolve DID document 318 + let url = format!("https://plc.directory/{}", did); 319 + 320 + let response = reqwest::blocking::get(&url) 321 + .map_err(|e| FetchError::HttpError(format!("Failed to resolve DID: {}", e)))?; 322 + 323 + if !response.status().is_success() { 324 + return Err(FetchError::HttpError(format!( 325 + "Failed to resolve DID {}: HTTP {}", 326 + did, 327 + response.status() 328 + ))); 329 + } 330 + 331 + let did_doc: serde_json::Value = response 332 + .json() 333 + .map_err(|e| FetchError::HttpError(format!("Failed to parse DID document: {}", e)))?; 334 + 335 + // Extract PDS endpoint from service array 336 + if let Some(services) = did_doc.get("service").and_then(|v| v.as_array()) { 337 + for service in services { 338 + if service.get("type").and_then(|v| v.as_str()) == Some("AtprotoPersonalDataServer") { 339 + if let Some(endpoint) = service.get("serviceEndpoint").and_then(|v| v.as_str()) { 340 + return Ok(endpoint.trim_end_matches('/').to_string()); 341 + } 342 + } 343 + } 344 + } 345 + 346 + return Err(FetchError::HttpError(format!( 347 + "No PDS endpoint found in DID document for {}", 348 + did 349 + ))); 350 + } 351 + 352 + Err(FetchError::HttpError(format!( 353 + "Unsupported DID method: {}", 354 + did 355 + ))) 356 + } 357 + 358 + fn extract_nsid_from_record(record: &AtProtoRecord) -> Result<String, FetchError> { 359 + // The record value should have an "id" field with the NSID 360 + if let Some(id) = record.value.get("id").and_then(|v| v.as_str()) { 361 + return Ok(id.to_string()); 362 + } 363 + 364 + // Fallback: try to extract from URI 365 + // URI format: at://did:plc:xxx/com.atproto.lexicon.schema/nsid 366 + if let Some(rkey) = record.uri.split('/').last() { 367 + return Ok(rkey.to_string()); 368 + } 369 + 370 + Err(FetchError::HttpError(format!( 371 + "Could not extract NSID from record: {}", 372 + record.uri 373 + ))) 374 + }
+1 -1
mlf-cli/src/generate/mlf.rs
··· 158 158 Ok(()) 159 159 } 160 160 161 - fn generate_mlf_from_json(json: &Value) -> Result<String, MlfGenerateError> { 161 + pub fn generate_mlf_from_json(json: &Value) -> Result<String, MlfGenerateError> { 162 162 let mut output = String::new(); 163 163 164 164 let defs = json.get("defs").and_then(|v| v.as_object()).ok_or_else(|| {
+10
mlf-cli/src/main.rs
··· 4 4 use std::process; 5 5 6 6 mod check; 7 + mod config; 8 + mod fetch; 7 9 mod generate; 8 10 9 11 // Import optional code generator plugins ··· 43 45 Generate { 44 46 #[command(subcommand)] 45 47 command: GenerateCommands, 48 + }, 49 + 50 + Fetch { 51 + #[arg(help = "Namespace to fetch (e.g., stream.place)")] 52 + nsid: String, 46 53 }, 47 54 } 48 55 ··· 101 108 generate::mlf::run(input, output).into_diagnostic() 102 109 } 103 110 }, 111 + Commands::Fetch { nsid } => { 112 + fetch::fetch_lexicon(&nsid).into_diagnostic() 113 + } 104 114 }; 105 115 106 116 if let Err(e) = result {
+5
mlf.toml
··· 1 + output = [] 2 + dependencies = [] 3 + 4 + [source] 5 + directory = "./lexicons"