A better Rust ATProto crate

attempt at improving lifetime and ownership semantics

Orual 8674a053 d89fb965

Changed files
+1515 -889
crates
jacquard
jacquard-api
src
app_bsky
actor
bookmark
feed
graph
labeler
notification
unspecced
video
chat_bsky
com_atproto
admin
identity
label
moderation
repo
server
sync
temp
tools_ozone
jacquard-axum
jacquard-common
src
jacquard-identity
src
jacquard-lexicon
jacquard-oauth
src
+360
Cargo.lock
··· 132 132 ] 133 133 134 134 [[package]] 135 + name = "anyhow" 136 + version = "1.0.100" 137 + source = "registry+https://github.com/rust-lang/crates.io-index" 138 + checksum = "a23eb6b1614318a8071c9b2521f36b424b2c83db5eb3a0fead4a6c0809af6e61" 139 + 140 + [[package]] 135 141 name = "ascii" 136 142 version = "1.1.0" 137 143 source = "registry+https://github.com/rust-lang/crates.io-index" ··· 151 157 ] 152 158 153 159 [[package]] 160 + name = "async-stream" 161 + version = "0.3.6" 162 + source = "registry+https://github.com/rust-lang/crates.io-index" 163 + checksum = "0b5a71a6f37880a80d1d7f19efd781e4b5de42c88f0722cc13bcb6cc2cfe8476" 164 + dependencies = [ 165 + "async-stream-impl", 166 + "futures-core", 167 + "pin-project-lite", 168 + ] 169 + 170 + [[package]] 171 + name = "async-stream-impl" 172 + version = "0.3.6" 173 + source = "registry+https://github.com/rust-lang/crates.io-index" 174 + checksum = "c7c24de15d275a1ecfd47a380fb4d5ec9bfe0933f309ed5e705b775596a3574d" 175 + dependencies = [ 176 + "proc-macro2", 177 + "quote", 178 + "syn 2.0.106", 179 + ] 180 + 181 + [[package]] 154 182 name = "async-trait" 155 183 version = "0.1.89" 156 184 source = "registry+https://github.com/rust-lang/crates.io-index" ··· 174 202 checksum = "c08606f8c3cbf4ce6ec8e28fb0014a2c086708fe954eaa885384a6165172e7e8" 175 203 176 204 [[package]] 205 + name = "axum" 206 + version = "0.8.6" 207 + source = "registry+https://github.com/rust-lang/crates.io-index" 208 + checksum = "8a18ed336352031311f4e0b4dd2ff392d4fbb370777c9d18d7fc9d7359f73871" 209 + dependencies = [ 210 + "axum-core", 211 + "bytes", 212 + "form_urlencoded", 213 + "futures-util", 214 + "http", 215 + "http-body", 216 + "http-body-util", 217 + "hyper", 218 + "hyper-util", 219 + "itoa", 220 + "matchit", 221 + "memchr", 222 + "mime", 223 + "percent-encoding", 224 + "pin-project-lite", 225 + "serde_core", 226 + "serde_json", 227 + "serde_path_to_error", 228 + "serde_urlencoded", 229 + "sync_wrapper", 230 + "tokio", 231 + "tower", 232 + "tower-layer", 233 + "tower-service", 234 + "tracing", 235 + ] 236 + 237 + [[package]] 238 + name = "axum-core" 239 + version = "0.5.5" 240 + source = "registry+https://github.com/rust-lang/crates.io-index" 241 + checksum = "59446ce19cd142f8833f856eb31f3eb097812d1479ab224f54d72428ca21ea22" 242 + dependencies = [ 243 + "bytes", 244 + "futures-core", 245 + "http", 246 + "http-body", 247 + "http-body-util", 248 + "mime", 249 + "pin-project-lite", 250 + "sync_wrapper", 251 + "tower-layer", 252 + "tower-service", 253 + "tracing", 254 + ] 255 + 256 + [[package]] 257 + name = "axum-test" 258 + version = "18.1.0" 259 + source = "registry+https://github.com/rust-lang/crates.io-index" 260 + checksum = "680e88effaafbb28675074f29cda0e984c984bed5eb513085c17caf7de564225" 261 + dependencies = [ 262 + "anyhow", 263 + "axum", 264 + "bytes", 265 + "bytesize", 266 + "cookie", 267 + "expect-json", 268 + "http", 269 + "http-body-util", 270 + "hyper", 271 + "hyper-util", 272 + "mime", 273 + "pretty_assertions", 274 + "reserve-port", 275 + "rust-multipart-rfc7578_2", 276 + "serde", 277 + "serde_json", 278 + "serde_urlencoded", 279 + "smallvec", 280 + "tokio", 281 + "tower", 282 + "url", 283 + ] 284 + 285 + [[package]] 177 286 name = "backtrace" 178 287 version = "0.3.76" 179 288 source = "registry+https://github.com/rust-lang/crates.io-index" ··· 353 462 ] 354 463 355 464 [[package]] 465 + name = "bytesize" 466 + version = "2.1.0" 467 + source = "registry+https://github.com/rust-lang/crates.io-index" 468 + checksum = "f5c434ae3cf0089ca203e9019ebe529c47ff45cefe8af7c85ecb734ef541822f" 469 + 470 + [[package]] 356 471 name = "cbor4ii" 357 472 version = "0.2.14" 358 473 source = "registry+https://github.com/rust-lang/crates.io-index" ··· 539 654 checksum = "c2459377285ad874054d797f3ccebf984978aa39129f6eafde5cdc8315b612f8" 540 655 541 656 [[package]] 657 + name = "cookie" 658 + version = "0.18.1" 659 + source = "registry+https://github.com/rust-lang/crates.io-index" 660 + checksum = "4ddef33a339a91ea89fb53151bd0a4689cfce27055c291dfa69945475d22c747" 661 + dependencies = [ 662 + "time", 663 + "version_check", 664 + ] 665 + 666 + [[package]] 542 667 name = "core-foundation" 543 668 version = "0.9.4" 544 669 source = "registry+https://github.com/rust-lang/crates.io-index" ··· 748 873 ] 749 874 750 875 [[package]] 876 + name = "diff" 877 + version = "0.1.13" 878 + source = "registry+https://github.com/rust-lang/crates.io-index" 879 + checksum = "56254986775e3233ffa9c4d7d3faaf6d36a2c09d30b20687e9f88bc8bafc16c8" 880 + 881 + [[package]] 751 882 name = "digest" 752 883 version = "0.10.7" 753 884 source = "registry+https://github.com/rust-lang/crates.io-index" ··· 839 970 ] 840 971 841 972 [[package]] 973 + name = "email_address" 974 + version = "0.2.9" 975 + source = "registry+https://github.com/rust-lang/crates.io-index" 976 + checksum = "e079f19b08ca6239f47f8ba8509c11cf3ea30095831f7fed61441475edd8c449" 977 + dependencies = [ 978 + "serde", 979 + ] 980 + 981 + [[package]] 842 982 name = "encoding_rs" 843 983 version = "0.8.35" 844 984 source = "registry+https://github.com/rust-lang/crates.io-index" ··· 866 1006 checksum = "877a4ace8713b0bcf2a4e7eec82529c029f1d0619886d18145fea96c3ffe5c0f" 867 1007 868 1008 [[package]] 1009 + name = "erased-serde" 1010 + version = "0.4.8" 1011 + source = "registry+https://github.com/rust-lang/crates.io-index" 1012 + checksum = "259d404d09818dec19332e31d94558aeb442fea04c817006456c24b5460bbd4b" 1013 + dependencies = [ 1014 + "serde", 1015 + "serde_core", 1016 + "typeid", 1017 + ] 1018 + 1019 + [[package]] 869 1020 name = "errno" 870 1021 version = "0.3.14" 871 1022 source = "registry+https://github.com/rust-lang/crates.io-index" ··· 873 1024 dependencies = [ 874 1025 "libc", 875 1026 "windows-sys 0.60.2", 1027 + ] 1028 + 1029 + [[package]] 1030 + name = "expect-json" 1031 + version = "1.5.0" 1032 + source = "registry+https://github.com/rust-lang/crates.io-index" 1033 + checksum = "7519e78573c950576b89eb4f4fe82aedf3a80639245afa07e3ee3d199dcdb29e" 1034 + dependencies = [ 1035 + "chrono", 1036 + "email_address", 1037 + "expect-json-macros", 1038 + "num", 1039 + "serde", 1040 + "serde_json", 1041 + "thiserror 2.0.17", 1042 + "typetag", 1043 + "uuid", 1044 + ] 1045 + 1046 + [[package]] 1047 + name = "expect-json-macros" 1048 + version = "1.5.0" 1049 + source = "registry+https://github.com/rust-lang/crates.io-index" 1050 + checksum = "7bf7f5979e98460a0eb412665514594f68f366a32b85fa8d7ffb65bb1edee6a0" 1051 + dependencies = [ 1052 + "proc-macro2", 1053 + "quote", 1054 + "syn 2.0.106", 876 1055 ] 877 1056 878 1057 [[package]] ··· 980 1159 checksum = "9fa08315bb612088cc391249efdc3bc77536f16c91f6cf495e6fbe85b20a4a81" 981 1160 dependencies = [ 982 1161 "futures-core", 1162 + "futures-io", 983 1163 "futures-task", 1164 + "memchr", 984 1165 "pin-project-lite", 985 1166 "pin-utils", 986 1167 "slab", ··· 1250 1431 "http", 1251 1432 "http-body", 1252 1433 "httparse", 1434 + "httpdate", 1253 1435 "itoa", 1254 1436 "pin-project-lite", 1255 1437 "pin-utils", ··· 1468 1650 checksum = "f4c7245a08504955605670dbf141fceab975f15ca21570696aebe9d2e71576bd" 1469 1651 1470 1652 [[package]] 1653 + name = "inventory" 1654 + version = "0.3.21" 1655 + source = "registry+https://github.com/rust-lang/crates.io-index" 1656 + checksum = "bc61209c082fbeb19919bee74b176221b27223e27b65d781eb91af24eb1fb46e" 1657 + dependencies = [ 1658 + "rustversion", 1659 + ] 1660 + 1661 + [[package]] 1471 1662 name = "io-uring" 1472 1663 version = "0.7.10" 1473 1664 source = "registry+https://github.com/rust-lang/crates.io-index" ··· 1589 1780 ] 1590 1781 1591 1782 [[package]] 1783 + name = "jacquard-axum" 1784 + version = "0.3.0" 1785 + dependencies = [ 1786 + "axum", 1787 + "axum-test", 1788 + "bytes", 1789 + "jacquard", 1790 + "jacquard-common", 1791 + "miette", 1792 + "serde", 1793 + "serde_ipld_dagcbor", 1794 + "serde_json", 1795 + "thiserror 2.0.17", 1796 + "tokio", 1797 + "tokio-test", 1798 + ] 1799 + 1800 + [[package]] 1592 1801 name = "jacquard-common" 1593 1802 version = "0.3.0" 1594 1803 dependencies = [ ··· 1899 2108 ] 1900 2109 1901 2110 [[package]] 2111 + name = "matchit" 2112 + version = "0.8.4" 2113 + source = "registry+https://github.com/rust-lang/crates.io-index" 2114 + checksum = "47e1ffaa40ddd1f3ed91f717a33c8c0ee23fff369e3aa8772b9605cc1d22f4c3" 2115 + 2116 + [[package]] 1902 2117 name = "memchr" 1903 2118 version = "2.7.6" 1904 2119 source = "registry+https://github.com/rust-lang/crates.io-index" ··· 2033 2248 ] 2034 2249 2035 2250 [[package]] 2251 + name = "num" 2252 + version = "0.4.3" 2253 + source = "registry+https://github.com/rust-lang/crates.io-index" 2254 + checksum = "35bd024e8b2ff75562e5f34e7f4905839deb4b22955ef5e73d2fea1b9813cb23" 2255 + dependencies = [ 2256 + "num-bigint", 2257 + "num-complex", 2258 + "num-integer", 2259 + "num-iter", 2260 + "num-rational", 2261 + "num-traits", 2262 + ] 2263 + 2264 + [[package]] 2265 + name = "num-bigint" 2266 + version = "0.4.6" 2267 + source = "registry+https://github.com/rust-lang/crates.io-index" 2268 + checksum = "a5e44f723f1133c9deac646763579fdb3ac745e418f2a7af9cd0c431da1f20b9" 2269 + dependencies = [ 2270 + "num-integer", 2271 + "num-traits", 2272 + ] 2273 + 2274 + [[package]] 2036 2275 name = "num-bigint-dig" 2037 2276 version = "0.8.4" 2038 2277 source = "registry+https://github.com/rust-lang/crates.io-index" ··· 2050 2289 ] 2051 2290 2052 2291 [[package]] 2292 + name = "num-complex" 2293 + version = "0.4.6" 2294 + source = "registry+https://github.com/rust-lang/crates.io-index" 2295 + checksum = "73f88a1307638156682bada9d7604135552957b7818057dcef22705b4d509495" 2296 + dependencies = [ 2297 + "num-traits", 2298 + ] 2299 + 2300 + [[package]] 2053 2301 name = "num-conv" 2054 2302 version = "0.1.0" 2055 2303 source = "registry+https://github.com/rust-lang/crates.io-index" ··· 2071 2319 checksum = "1429034a0490724d0075ebb2bc9e875d6503c3cf69e235a8941aa757d83ef5bf" 2072 2320 dependencies = [ 2073 2321 "autocfg", 2322 + "num-integer", 2323 + "num-traits", 2324 + ] 2325 + 2326 + [[package]] 2327 + name = "num-rational" 2328 + version = "0.4.2" 2329 + source = "registry+https://github.com/rust-lang/crates.io-index" 2330 + checksum = "f83d14da390562dca69fc84082e73e548e1ad308d24accdedd2720017cb37824" 2331 + dependencies = [ 2332 + "num-bigint", 2074 2333 "num-integer", 2075 2334 "num-traits", 2076 2335 ] ··· 2279 2538 checksum = "85eae3c4ed2f50dcfe72643da4befc30deadb458a9b590d720cde2f2b1e97da9" 2280 2539 dependencies = [ 2281 2540 "zerocopy", 2541 + ] 2542 + 2543 + [[package]] 2544 + name = "pretty_assertions" 2545 + version = "1.4.1" 2546 + source = "registry+https://github.com/rust-lang/crates.io-index" 2547 + checksum = "3ae130e2f271fbc2ac3a40fb1d07180839cdbbe443c7a27e1e3c13c5cac0116d" 2548 + dependencies = [ 2549 + "diff", 2550 + "yansi", 2282 2551 ] 2283 2552 2284 2553 [[package]] ··· 2596 2865 ] 2597 2866 2598 2867 [[package]] 2868 + name = "reserve-port" 2869 + version = "2.3.0" 2870 + source = "registry+https://github.com/rust-lang/crates.io-index" 2871 + checksum = "21918d6644020c6f6ef1993242989bf6d4952d2e025617744f184c02df51c356" 2872 + dependencies = [ 2873 + "thiserror 2.0.17", 2874 + ] 2875 + 2876 + [[package]] 2599 2877 name = "resolv-conf" 2600 2878 version = "0.7.5" 2601 2879 source = "registry+https://github.com/rust-lang/crates.io-index" ··· 2667 2945 "spki", 2668 2946 "subtle", 2669 2947 "zeroize", 2948 + ] 2949 + 2950 + [[package]] 2951 + name = "rust-multipart-rfc7578_2" 2952 + version = "0.8.0" 2953 + source = "registry+https://github.com/rust-lang/crates.io-index" 2954 + checksum = "c839d037155ebc06a571e305af66ff9fd9063a6e662447051737e1ac75beea41" 2955 + dependencies = [ 2956 + "bytes", 2957 + "futures-core", 2958 + "futures-util", 2959 + "http", 2960 + "mime", 2961 + "rand 0.9.2", 2962 + "thiserror 2.0.17", 2670 2963 ] 2671 2964 2672 2965 [[package]] ··· 2888 3181 "itoa", 2889 3182 "memchr", 2890 3183 "ryu", 3184 + "serde", 3185 + "serde_core", 3186 + ] 3187 + 3188 + [[package]] 3189 + name = "serde_path_to_error" 3190 + version = "0.1.20" 3191 + source = "registry+https://github.com/rust-lang/crates.io-index" 3192 + checksum = "10a9ff822e371bb5403e391ecd83e182e0e77ba7f6fe0160b795797109d1b457" 3193 + dependencies = [ 3194 + "itoa", 2891 3195 "serde", 2892 3196 "serde_core", 2893 3197 ] ··· 3357 3661 ] 3358 3662 3359 3663 [[package]] 3664 + name = "tokio-stream" 3665 + version = "0.1.17" 3666 + source = "registry+https://github.com/rust-lang/crates.io-index" 3667 + checksum = "eca58d7bba4a75707817a2c44174253f9236b2d5fbd055602e9d5c07c139a047" 3668 + dependencies = [ 3669 + "futures-core", 3670 + "pin-project-lite", 3671 + "tokio", 3672 + ] 3673 + 3674 + [[package]] 3675 + name = "tokio-test" 3676 + version = "0.4.4" 3677 + source = "registry+https://github.com/rust-lang/crates.io-index" 3678 + checksum = "2468baabc3311435b55dd935f702f42cd1b8abb7e754fb7dfb16bd36aa88f9f7" 3679 + dependencies = [ 3680 + "async-stream", 3681 + "bytes", 3682 + "futures-core", 3683 + "tokio", 3684 + "tokio-stream", 3685 + ] 3686 + 3687 + [[package]] 3360 3688 name = "tokio-util" 3361 3689 version = "0.7.16" 3362 3690 source = "registry+https://github.com/rust-lang/crates.io-index" ··· 3382 3710 "tokio", 3383 3711 "tower-layer", 3384 3712 "tower-service", 3713 + "tracing", 3385 3714 ] 3386 3715 3387 3716 [[package]] ··· 3420 3749 source = "registry+https://github.com/rust-lang/crates.io-index" 3421 3750 checksum = "784e0ac535deb450455cbfa28a6f0df145ea1bb7ae51b821cf5e7927fdcfbdd0" 3422 3751 dependencies = [ 3752 + "log", 3423 3753 "pin-project-lite", 3424 3754 "tracing-attributes", 3425 3755 "tracing-core", ··· 3472 3802 ] 3473 3803 3474 3804 [[package]] 3805 + name = "typeid" 3806 + version = "1.0.3" 3807 + source = "registry+https://github.com/rust-lang/crates.io-index" 3808 + checksum = "bc7d623258602320d5c55d1bc22793b57daff0ec7efc270ea7d55ce1d5f5471c" 3809 + 3810 + [[package]] 3475 3811 name = "typenum" 3476 3812 version = "1.18.0" 3477 3813 source = "registry+https://github.com/rust-lang/crates.io-index" 3478 3814 checksum = "1dccffe3ce07af9386bfd29e80c0ab1a8205a2fc34e4bcd40364df902cfa8f3f" 3815 + 3816 + [[package]] 3817 + name = "typetag" 3818 + version = "0.2.21" 3819 + source = "registry+https://github.com/rust-lang/crates.io-index" 3820 + checksum = "be2212c8a9b9bcfca32024de14998494cf9a5dfa59ea1b829de98bac374b86bf" 3821 + dependencies = [ 3822 + "erased-serde", 3823 + "inventory", 3824 + "once_cell", 3825 + "serde", 3826 + "typetag-impl", 3827 + ] 3828 + 3829 + [[package]] 3830 + name = "typetag-impl" 3831 + version = "0.2.21" 3832 + source = "registry+https://github.com/rust-lang/crates.io-index" 3833 + checksum = "27a7a9b72ba121f6f1f6c3632b85604cac41aedb5ddc70accbebb6cac83de846" 3834 + dependencies = [ 3835 + "proc-macro2", 3836 + "quote", 3837 + "syn 2.0.106", 3838 + ] 3479 3839 3480 3840 [[package]] 3481 3841 name = "unicase"
+3 -3
crates/jacquard-api/src/app_bsky/actor/get_preferences.rs
··· 42 42 } 43 43 } 44 44 45 - impl jacquard_common::types::xrpc::XrpcRequest for GetPreferences { 45 + impl<'de> jacquard_common::types::xrpc::XrpcRequest<'de> for GetPreferences { 46 46 const NSID: &'static str = "app.bsky.actor.getPreferences"; 47 47 const METHOD: jacquard_common::types::xrpc::XrpcMethod = jacquard_common::types::xrpc::XrpcMethod::Query; 48 48 const OUTPUT_ENCODING: &'static str = "application/json"; 49 - type Output<'de> = GetPreferencesOutput<'de>; 50 - type Err<'de> = jacquard_common::types::xrpc::GenericError<'de>; 49 + type Output = GetPreferencesOutput<'de>; 50 + type Err = jacquard_common::types::xrpc::GenericError<'de>; 51 51 }
+3 -3
crates/jacquard-api/src/app_bsky/actor/get_profile.rs
··· 49 49 } 50 50 } 51 51 52 - impl jacquard_common::types::xrpc::XrpcRequest for GetProfile<'_> { 52 + impl<'de> jacquard_common::types::xrpc::XrpcRequest<'de> for GetProfile<'de> { 53 53 const NSID: &'static str = "app.bsky.actor.getProfile"; 54 54 const METHOD: jacquard_common::types::xrpc::XrpcMethod = jacquard_common::types::xrpc::XrpcMethod::Query; 55 55 const OUTPUT_ENCODING: &'static str = "application/json"; 56 - type Output<'de> = GetProfileOutput<'de>; 57 - type Err<'de> = jacquard_common::types::xrpc::GenericError<'de>; 56 + type Output = GetProfileOutput<'de>; 57 + type Err = jacquard_common::types::xrpc::GenericError<'de>; 58 58 }
+3 -3
crates/jacquard-api/src/app_bsky/actor/get_profiles.rs
··· 48 48 } 49 49 } 50 50 51 - impl jacquard_common::types::xrpc::XrpcRequest for GetProfiles<'_> { 51 + impl<'de> jacquard_common::types::xrpc::XrpcRequest<'de> for GetProfiles<'de> { 52 52 const NSID: &'static str = "app.bsky.actor.getProfiles"; 53 53 const METHOD: jacquard_common::types::xrpc::XrpcMethod = jacquard_common::types::xrpc::XrpcMethod::Query; 54 54 const OUTPUT_ENCODING: &'static str = "application/json"; 55 - type Output<'de> = GetProfilesOutput<'de>; 56 - type Err<'de> = jacquard_common::types::xrpc::GenericError<'de>; 55 + type Output = GetProfilesOutput<'de>; 56 + type Err = jacquard_common::types::xrpc::GenericError<'de>; 57 57 }
+3 -3
crates/jacquard-api/src/app_bsky/actor/get_suggestions.rs
··· 62 62 } 63 63 } 64 64 65 - impl jacquard_common::types::xrpc::XrpcRequest for GetSuggestions<'_> { 65 + impl<'de> jacquard_common::types::xrpc::XrpcRequest<'de> for GetSuggestions<'de> { 66 66 const NSID: &'static str = "app.bsky.actor.getSuggestions"; 67 67 const METHOD: jacquard_common::types::xrpc::XrpcMethod = jacquard_common::types::xrpc::XrpcMethod::Query; 68 68 const OUTPUT_ENCODING: &'static str = "application/json"; 69 - type Output<'de> = GetSuggestionsOutput<'de>; 70 - type Err<'de> = jacquard_common::types::xrpc::GenericError<'de>; 69 + type Output = GetSuggestionsOutput<'de>; 70 + type Err = jacquard_common::types::xrpc::GenericError<'de>; 71 71 }
+3 -3
crates/jacquard-api/src/app_bsky/actor/put_preferences.rs
··· 39 39 } 40 40 } 41 41 42 - impl jacquard_common::types::xrpc::XrpcRequest for PutPreferences<'_> { 42 + impl<'de> jacquard_common::types::xrpc::XrpcRequest<'de> for PutPreferences<'de> { 43 43 const NSID: &'static str = "app.bsky.actor.putPreferences"; 44 44 const METHOD: jacquard_common::types::xrpc::XrpcMethod = jacquard_common::types::xrpc::XrpcMethod::Procedure( 45 45 "application/json", 46 46 ); 47 47 const OUTPUT_ENCODING: &'static str = "application/json"; 48 - type Output<'de> = (); 49 - type Err<'de> = jacquard_common::types::xrpc::GenericError<'de>; 48 + type Output = (); 49 + type Err = jacquard_common::types::xrpc::GenericError<'de>; 50 50 }
+3 -3
crates/jacquard-api/src/app_bsky/actor/search_actors.rs
··· 68 68 } 69 69 } 70 70 71 - impl jacquard_common::types::xrpc::XrpcRequest for SearchActors<'_> { 71 + impl<'de> jacquard_common::types::xrpc::XrpcRequest<'de> for SearchActors<'de> { 72 72 const NSID: &'static str = "app.bsky.actor.searchActors"; 73 73 const METHOD: jacquard_common::types::xrpc::XrpcMethod = jacquard_common::types::xrpc::XrpcMethod::Query; 74 74 const OUTPUT_ENCODING: &'static str = "application/json"; 75 - type Output<'de> = SearchActorsOutput<'de>; 76 - type Err<'de> = jacquard_common::types::xrpc::GenericError<'de>; 75 + type Output = SearchActorsOutput<'de>; 76 + type Err = jacquard_common::types::xrpc::GenericError<'de>; 77 77 }
+3 -3
crates/jacquard-api/src/app_bsky/actor/search_actors_typeahead.rs
··· 59 59 } 60 60 } 61 61 62 - impl jacquard_common::types::xrpc::XrpcRequest for SearchActorsTypeahead<'_> { 62 + impl<'de> jacquard_common::types::xrpc::XrpcRequest<'de> for SearchActorsTypeahead<'de> { 63 63 const NSID: &'static str = "app.bsky.actor.searchActorsTypeahead"; 64 64 const METHOD: jacquard_common::types::xrpc::XrpcMethod = jacquard_common::types::xrpc::XrpcMethod::Query; 65 65 const OUTPUT_ENCODING: &'static str = "application/json"; 66 - type Output<'de> = SearchActorsTypeaheadOutput<'de>; 67 - type Err<'de> = jacquard_common::types::xrpc::GenericError<'de>; 66 + type Output = SearchActorsTypeaheadOutput<'de>; 67 + type Err = jacquard_common::types::xrpc::GenericError<'de>; 68 68 }
+3 -3
crates/jacquard-api/src/app_bsky/bookmark/create_bookmark.rs
··· 90 90 } 91 91 } 92 92 93 - impl jacquard_common::types::xrpc::XrpcRequest for CreateBookmark<'_> { 93 + impl<'de> jacquard_common::types::xrpc::XrpcRequest<'de> for CreateBookmark<'de> { 94 94 const NSID: &'static str = "app.bsky.bookmark.createBookmark"; 95 95 const METHOD: jacquard_common::types::xrpc::XrpcMethod = jacquard_common::types::xrpc::XrpcMethod::Procedure( 96 96 "application/json", 97 97 ); 98 98 const OUTPUT_ENCODING: &'static str = "application/json"; 99 - type Output<'de> = (); 100 - type Err<'de> = CreateBookmarkError<'de>; 99 + type Output = (); 100 + type Err = CreateBookmarkError<'de>; 101 101 }
+3 -3
crates/jacquard-api/src/app_bsky/bookmark/delete_bookmark.rs
··· 87 87 } 88 88 } 89 89 90 - impl jacquard_common::types::xrpc::XrpcRequest for DeleteBookmark<'_> { 90 + impl<'de> jacquard_common::types::xrpc::XrpcRequest<'de> for DeleteBookmark<'de> { 91 91 const NSID: &'static str = "app.bsky.bookmark.deleteBookmark"; 92 92 const METHOD: jacquard_common::types::xrpc::XrpcMethod = jacquard_common::types::xrpc::XrpcMethod::Procedure( 93 93 "application/json", 94 94 ); 95 95 const OUTPUT_ENCODING: &'static str = "application/json"; 96 - type Output<'de> = (); 97 - type Err<'de> = DeleteBookmarkError<'de>; 96 + type Output = (); 97 + type Err = DeleteBookmarkError<'de>; 98 98 }
+3 -3
crates/jacquard-api/src/app_bsky/bookmark/get_bookmarks.rs
··· 58 58 } 59 59 } 60 60 61 - impl jacquard_common::types::xrpc::XrpcRequest for GetBookmarks<'_> { 61 + impl<'de> jacquard_common::types::xrpc::XrpcRequest<'de> for GetBookmarks<'de> { 62 62 const NSID: &'static str = "app.bsky.bookmark.getBookmarks"; 63 63 const METHOD: jacquard_common::types::xrpc::XrpcMethod = jacquard_common::types::xrpc::XrpcMethod::Query; 64 64 const OUTPUT_ENCODING: &'static str = "application/json"; 65 - type Output<'de> = GetBookmarksOutput<'de>; 66 - type Err<'de> = jacquard_common::types::xrpc::GenericError<'de>; 65 + type Output = GetBookmarksOutput<'de>; 66 + type Err = jacquard_common::types::xrpc::GenericError<'de>; 67 67 }
+4 -4
crates/jacquard-api/src/app_bsky/feed/describe_feed_generator.rs
··· 72 72 } 73 73 74 74 /// XRPC request marker type 75 - #[derive(Debug, Clone, Copy, PartialEq, Eq, serde::Serialize)] 75 + #[derive(Debug, Clone, Copy, PartialEq, Eq, serde::Serialize, serde::Deserialize)] 76 76 pub struct DescribeFeedGenerator; 77 - impl jacquard_common::types::xrpc::XrpcRequest for DescribeFeedGenerator { 77 + impl<'de> jacquard_common::types::xrpc::XrpcRequest<'de> for DescribeFeedGenerator { 78 78 const NSID: &'static str = "app.bsky.feed.describeFeedGenerator"; 79 79 const METHOD: jacquard_common::types::xrpc::XrpcMethod = jacquard_common::types::xrpc::XrpcMethod::Query; 80 80 const OUTPUT_ENCODING: &'static str = "application/json"; 81 - type Output<'de> = DescribeFeedGeneratorOutput<'de>; 82 - type Err<'de> = jacquard_common::types::xrpc::GenericError<'de>; 81 + type Output = DescribeFeedGeneratorOutput<'de>; 82 + type Err = jacquard_common::types::xrpc::GenericError<'de>; 83 83 }
+3 -3
crates/jacquard-api/src/app_bsky/feed/get_actor_feeds.rs
··· 61 61 } 62 62 } 63 63 64 - impl jacquard_common::types::xrpc::XrpcRequest for GetActorFeeds<'_> { 64 + impl<'de> jacquard_common::types::xrpc::XrpcRequest<'de> for GetActorFeeds<'de> { 65 65 const NSID: &'static str = "app.bsky.feed.getActorFeeds"; 66 66 const METHOD: jacquard_common::types::xrpc::XrpcMethod = jacquard_common::types::xrpc::XrpcMethod::Query; 67 67 const OUTPUT_ENCODING: &'static str = "application/json"; 68 - type Output<'de> = GetActorFeedsOutput<'de>; 69 - type Err<'de> = jacquard_common::types::xrpc::GenericError<'de>; 68 + type Output = GetActorFeedsOutput<'de>; 69 + type Err = jacquard_common::types::xrpc::GenericError<'de>; 70 70 }
+3 -3
crates/jacquard-api/src/app_bsky/feed/get_actor_likes.rs
··· 120 120 } 121 121 } 122 122 123 - impl jacquard_common::types::xrpc::XrpcRequest for GetActorLikes<'_> { 123 + impl<'de> jacquard_common::types::xrpc::XrpcRequest<'de> for GetActorLikes<'de> { 124 124 const NSID: &'static str = "app.bsky.feed.getActorLikes"; 125 125 const METHOD: jacquard_common::types::xrpc::XrpcMethod = jacquard_common::types::xrpc::XrpcMethod::Query; 126 126 const OUTPUT_ENCODING: &'static str = "application/json"; 127 - type Output<'de> = GetActorLikesOutput<'de>; 128 - type Err<'de> = GetActorLikesError<'de>; 127 + type Output = GetActorLikesOutput<'de>; 128 + type Err = GetActorLikesError<'de>; 129 129 }
+3 -3
crates/jacquard-api/src/app_bsky/feed/get_author_feed.rs
··· 130 130 } 131 131 } 132 132 133 - impl jacquard_common::types::xrpc::XrpcRequest for GetAuthorFeed<'_> { 133 + impl<'de> jacquard_common::types::xrpc::XrpcRequest<'de> for GetAuthorFeed<'de> { 134 134 const NSID: &'static str = "app.bsky.feed.getAuthorFeed"; 135 135 const METHOD: jacquard_common::types::xrpc::XrpcMethod = jacquard_common::types::xrpc::XrpcMethod::Query; 136 136 const OUTPUT_ENCODING: &'static str = "application/json"; 137 - type Output<'de> = GetAuthorFeedOutput<'de>; 138 - type Err<'de> = GetAuthorFeedError<'de>; 137 + type Output = GetAuthorFeedOutput<'de>; 138 + type Err = GetAuthorFeedError<'de>; 139 139 }
+3 -3
crates/jacquard-api/src/app_bsky/feed/get_feed.rs
··· 104 104 } 105 105 } 106 106 107 - impl jacquard_common::types::xrpc::XrpcRequest for GetFeed<'_> { 107 + impl<'de> jacquard_common::types::xrpc::XrpcRequest<'de> for GetFeed<'de> { 108 108 const NSID: &'static str = "app.bsky.feed.getFeed"; 109 109 const METHOD: jacquard_common::types::xrpc::XrpcMethod = jacquard_common::types::xrpc::XrpcMethod::Query; 110 110 const OUTPUT_ENCODING: &'static str = "application/json"; 111 - type Output<'de> = GetFeedOutput<'de>; 112 - type Err<'de> = GetFeedError<'de>; 111 + type Output = GetFeedOutput<'de>; 112 + type Err = GetFeedError<'de>; 113 113 }
+3 -3
crates/jacquard-api/src/app_bsky/feed/get_feed_generator.rs
··· 54 54 } 55 55 } 56 56 57 - impl jacquard_common::types::xrpc::XrpcRequest for GetFeedGenerator<'_> { 57 + impl<'de> jacquard_common::types::xrpc::XrpcRequest<'de> for GetFeedGenerator<'de> { 58 58 const NSID: &'static str = "app.bsky.feed.getFeedGenerator"; 59 59 const METHOD: jacquard_common::types::xrpc::XrpcMethod = jacquard_common::types::xrpc::XrpcMethod::Query; 60 60 const OUTPUT_ENCODING: &'static str = "application/json"; 61 - type Output<'de> = GetFeedGeneratorOutput<'de>; 62 - type Err<'de> = jacquard_common::types::xrpc::GenericError<'de>; 61 + type Output = GetFeedGeneratorOutput<'de>; 62 + type Err = jacquard_common::types::xrpc::GenericError<'de>; 63 63 }
+3 -3
crates/jacquard-api/src/app_bsky/feed/get_feed_generators.rs
··· 48 48 } 49 49 } 50 50 51 - impl jacquard_common::types::xrpc::XrpcRequest for GetFeedGenerators<'_> { 51 + impl<'de> jacquard_common::types::xrpc::XrpcRequest<'de> for GetFeedGenerators<'de> { 52 52 const NSID: &'static str = "app.bsky.feed.getFeedGenerators"; 53 53 const METHOD: jacquard_common::types::xrpc::XrpcMethod = jacquard_common::types::xrpc::XrpcMethod::Query; 54 54 const OUTPUT_ENCODING: &'static str = "application/json"; 55 - type Output<'de> = GetFeedGeneratorsOutput<'de>; 56 - type Err<'de> = jacquard_common::types::xrpc::GenericError<'de>; 55 + type Output = GetFeedGeneratorsOutput<'de>; 56 + type Err = jacquard_common::types::xrpc::GenericError<'de>; 57 57 }
+3 -3
crates/jacquard-api/src/app_bsky/feed/get_feed_skeleton.rs
··· 113 113 } 114 114 } 115 115 116 - impl jacquard_common::types::xrpc::XrpcRequest for GetFeedSkeleton<'_> { 116 + impl<'de> jacquard_common::types::xrpc::XrpcRequest<'de> for GetFeedSkeleton<'de> { 117 117 const NSID: &'static str = "app.bsky.feed.getFeedSkeleton"; 118 118 const METHOD: jacquard_common::types::xrpc::XrpcMethod = jacquard_common::types::xrpc::XrpcMethod::Query; 119 119 const OUTPUT_ENCODING: &'static str = "application/json"; 120 - type Output<'de> = GetFeedSkeletonOutput<'de>; 121 - type Err<'de> = GetFeedSkeletonError<'de>; 120 + type Output = GetFeedSkeletonOutput<'de>; 121 + type Err = GetFeedSkeletonError<'de>; 122 122 }
+3 -3
crates/jacquard-api/src/app_bsky/feed/get_likes.rs
··· 94 94 } 95 95 } 96 96 97 - impl jacquard_common::types::xrpc::XrpcRequest for GetLikes<'_> { 97 + impl<'de> jacquard_common::types::xrpc::XrpcRequest<'de> for GetLikes<'de> { 98 98 const NSID: &'static str = "app.bsky.feed.getLikes"; 99 99 const METHOD: jacquard_common::types::xrpc::XrpcMethod = jacquard_common::types::xrpc::XrpcMethod::Query; 100 100 const OUTPUT_ENCODING: &'static str = "application/json"; 101 - type Output<'de> = GetLikesOutput<'de>; 102 - type Err<'de> = jacquard_common::types::xrpc::GenericError<'de>; 101 + type Output = GetLikesOutput<'de>; 102 + type Err = jacquard_common::types::xrpc::GenericError<'de>; 103 103 }
+3 -3
crates/jacquard-api/src/app_bsky/feed/get_list_feed.rs
··· 106 106 } 107 107 } 108 108 109 - impl jacquard_common::types::xrpc::XrpcRequest for GetListFeed<'_> { 109 + impl<'de> jacquard_common::types::xrpc::XrpcRequest<'de> for GetListFeed<'de> { 110 110 const NSID: &'static str = "app.bsky.feed.getListFeed"; 111 111 const METHOD: jacquard_common::types::xrpc::XrpcMethod = jacquard_common::types::xrpc::XrpcMethod::Query; 112 112 const OUTPUT_ENCODING: &'static str = "application/json"; 113 - type Output<'de> = GetListFeedOutput<'de>; 114 - type Err<'de> = GetListFeedError<'de>; 113 + type Output = GetListFeedOutput<'de>; 114 + type Err = GetListFeedError<'de>; 115 115 }
+3 -3
crates/jacquard-api/src/app_bsky/feed/get_post_thread.rs
··· 140 140 } 141 141 } 142 142 143 - impl jacquard_common::types::xrpc::XrpcRequest for GetPostThread<'_> { 143 + impl<'de> jacquard_common::types::xrpc::XrpcRequest<'de> for GetPostThread<'de> { 144 144 const NSID: &'static str = "app.bsky.feed.getPostThread"; 145 145 const METHOD: jacquard_common::types::xrpc::XrpcMethod = jacquard_common::types::xrpc::XrpcMethod::Query; 146 146 const OUTPUT_ENCODING: &'static str = "application/json"; 147 - type Output<'de> = GetPostThreadOutput<'de>; 148 - type Err<'de> = GetPostThreadError<'de>; 147 + type Output = GetPostThreadOutput<'de>; 148 + type Err = GetPostThreadError<'de>; 149 149 }
+3 -3
crates/jacquard-api/src/app_bsky/feed/get_posts.rs
··· 48 48 } 49 49 } 50 50 51 - impl jacquard_common::types::xrpc::XrpcRequest for GetPosts<'_> { 51 + impl<'de> jacquard_common::types::xrpc::XrpcRequest<'de> for GetPosts<'de> { 52 52 const NSID: &'static str = "app.bsky.feed.getPosts"; 53 53 const METHOD: jacquard_common::types::xrpc::XrpcMethod = jacquard_common::types::xrpc::XrpcMethod::Query; 54 54 const OUTPUT_ENCODING: &'static str = "application/json"; 55 - type Output<'de> = GetPostsOutput<'de>; 56 - type Err<'de> = jacquard_common::types::xrpc::GenericError<'de>; 55 + type Output = GetPostsOutput<'de>; 56 + type Err = jacquard_common::types::xrpc::GenericError<'de>; 57 57 }
+3 -3
crates/jacquard-api/src/app_bsky/feed/get_quotes.rs
··· 72 72 } 73 73 } 74 74 75 - impl jacquard_common::types::xrpc::XrpcRequest for GetQuotes<'_> { 75 + impl<'de> jacquard_common::types::xrpc::XrpcRequest<'de> for GetQuotes<'de> { 76 76 const NSID: &'static str = "app.bsky.feed.getQuotes"; 77 77 const METHOD: jacquard_common::types::xrpc::XrpcMethod = jacquard_common::types::xrpc::XrpcMethod::Query; 78 78 const OUTPUT_ENCODING: &'static str = "application/json"; 79 - type Output<'de> = GetQuotesOutput<'de>; 80 - type Err<'de> = jacquard_common::types::xrpc::GenericError<'de>; 79 + type Output = GetQuotesOutput<'de>; 80 + type Err = jacquard_common::types::xrpc::GenericError<'de>; 81 81 }
+3 -3
crates/jacquard-api/src/app_bsky/feed/get_reposted_by.rs
··· 72 72 } 73 73 } 74 74 75 - impl jacquard_common::types::xrpc::XrpcRequest for GetRepostedBy<'_> { 75 + impl<'de> jacquard_common::types::xrpc::XrpcRequest<'de> for GetRepostedBy<'de> { 76 76 const NSID: &'static str = "app.bsky.feed.getRepostedBy"; 77 77 const METHOD: jacquard_common::types::xrpc::XrpcMethod = jacquard_common::types::xrpc::XrpcMethod::Query; 78 78 const OUTPUT_ENCODING: &'static str = "application/json"; 79 - type Output<'de> = GetRepostedByOutput<'de>; 80 - type Err<'de> = jacquard_common::types::xrpc::GenericError<'de>; 79 + type Output = GetRepostedByOutput<'de>; 80 + type Err = jacquard_common::types::xrpc::GenericError<'de>; 81 81 }
+3 -3
crates/jacquard-api/src/app_bsky/feed/get_suggested_feeds.rs
··· 58 58 } 59 59 } 60 60 61 - impl jacquard_common::types::xrpc::XrpcRequest for GetSuggestedFeeds<'_> { 61 + impl<'de> jacquard_common::types::xrpc::XrpcRequest<'de> for GetSuggestedFeeds<'de> { 62 62 const NSID: &'static str = "app.bsky.feed.getSuggestedFeeds"; 63 63 const METHOD: jacquard_common::types::xrpc::XrpcMethod = jacquard_common::types::xrpc::XrpcMethod::Query; 64 64 const OUTPUT_ENCODING: &'static str = "application/json"; 65 - type Output<'de> = GetSuggestedFeedsOutput<'de>; 66 - type Err<'de> = jacquard_common::types::xrpc::GenericError<'de>; 65 + type Output = GetSuggestedFeedsOutput<'de>; 66 + type Err = jacquard_common::types::xrpc::GenericError<'de>; 67 67 }
+3 -3
crates/jacquard-api/src/app_bsky/feed/get_timeline.rs
··· 63 63 } 64 64 } 65 65 66 - impl jacquard_common::types::xrpc::XrpcRequest for GetTimeline<'_> { 66 + impl<'de> jacquard_common::types::xrpc::XrpcRequest<'de> for GetTimeline<'de> { 67 67 const NSID: &'static str = "app.bsky.feed.getTimeline"; 68 68 const METHOD: jacquard_common::types::xrpc::XrpcMethod = jacquard_common::types::xrpc::XrpcMethod::Query; 69 69 const OUTPUT_ENCODING: &'static str = "application/json"; 70 - type Output<'de> = GetTimelineOutput<'de>; 71 - type Err<'de> = jacquard_common::types::xrpc::GenericError<'de>; 70 + type Output = GetTimelineOutput<'de>; 71 + type Err = jacquard_common::types::xrpc::GenericError<'de>; 72 72 }
+3 -3
crates/jacquard-api/src/app_bsky/feed/search_posts.rs
··· 151 151 } 152 152 } 153 153 154 - impl jacquard_common::types::xrpc::XrpcRequest for SearchPosts<'_> { 154 + impl<'de> jacquard_common::types::xrpc::XrpcRequest<'de> for SearchPosts<'de> { 155 155 const NSID: &'static str = "app.bsky.feed.searchPosts"; 156 156 const METHOD: jacquard_common::types::xrpc::XrpcMethod = jacquard_common::types::xrpc::XrpcMethod::Query; 157 157 const OUTPUT_ENCODING: &'static str = "application/json"; 158 - type Output<'de> = SearchPostsOutput<'de>; 159 - type Err<'de> = SearchPostsError<'de>; 158 + type Output = SearchPostsOutput<'de>; 159 + type Err = SearchPostsError<'de>; 160 160 }
+3 -3
crates/jacquard-api/src/app_bsky/feed/send_interactions.rs
··· 52 52 } 53 53 } 54 54 55 - impl jacquard_common::types::xrpc::XrpcRequest for SendInteractions<'_> { 55 + impl<'de> jacquard_common::types::xrpc::XrpcRequest<'de> for SendInteractions<'de> { 56 56 const NSID: &'static str = "app.bsky.feed.sendInteractions"; 57 57 const METHOD: jacquard_common::types::xrpc::XrpcMethod = jacquard_common::types::xrpc::XrpcMethod::Procedure( 58 58 "application/json", 59 59 ); 60 60 const OUTPUT_ENCODING: &'static str = "application/json"; 61 - type Output<'de> = SendInteractionsOutput<'de>; 62 - type Err<'de> = jacquard_common::types::xrpc::GenericError<'de>; 61 + type Output = SendInteractionsOutput<'de>; 62 + type Err = jacquard_common::types::xrpc::GenericError<'de>; 63 63 }
+3 -3
crates/jacquard-api/src/app_bsky/graph/get_actor_starter_packs.rs
··· 61 61 } 62 62 } 63 63 64 - impl jacquard_common::types::xrpc::XrpcRequest for GetActorStarterPacks<'_> { 64 + impl<'de> jacquard_common::types::xrpc::XrpcRequest<'de> for GetActorStarterPacks<'de> { 65 65 const NSID: &'static str = "app.bsky.graph.getActorStarterPacks"; 66 66 const METHOD: jacquard_common::types::xrpc::XrpcMethod = jacquard_common::types::xrpc::XrpcMethod::Query; 67 67 const OUTPUT_ENCODING: &'static str = "application/json"; 68 - type Output<'de> = GetActorStarterPacksOutput<'de>; 69 - type Err<'de> = jacquard_common::types::xrpc::GenericError<'de>; 68 + type Output = GetActorStarterPacksOutput<'de>; 69 + type Err = jacquard_common::types::xrpc::GenericError<'de>; 70 70 }
+3 -3
crates/jacquard-api/src/app_bsky/graph/get_blocks.rs
··· 58 58 } 59 59 } 60 60 61 - impl jacquard_common::types::xrpc::XrpcRequest for GetBlocks<'_> { 61 + impl<'de> jacquard_common::types::xrpc::XrpcRequest<'de> for GetBlocks<'de> { 62 62 const NSID: &'static str = "app.bsky.graph.getBlocks"; 63 63 const METHOD: jacquard_common::types::xrpc::XrpcMethod = jacquard_common::types::xrpc::XrpcMethod::Query; 64 64 const OUTPUT_ENCODING: &'static str = "application/json"; 65 - type Output<'de> = GetBlocksOutput<'de>; 66 - type Err<'de> = jacquard_common::types::xrpc::GenericError<'de>; 65 + type Output = GetBlocksOutput<'de>; 66 + type Err = jacquard_common::types::xrpc::GenericError<'de>; 67 67 }
+3 -3
crates/jacquard-api/src/app_bsky/graph/get_followers.rs
··· 64 64 } 65 65 } 66 66 67 - impl jacquard_common::types::xrpc::XrpcRequest for GetFollowers<'_> { 67 + impl<'de> jacquard_common::types::xrpc::XrpcRequest<'de> for GetFollowers<'de> { 68 68 const NSID: &'static str = "app.bsky.graph.getFollowers"; 69 69 const METHOD: jacquard_common::types::xrpc::XrpcMethod = jacquard_common::types::xrpc::XrpcMethod::Query; 70 70 const OUTPUT_ENCODING: &'static str = "application/json"; 71 - type Output<'de> = GetFollowersOutput<'de>; 72 - type Err<'de> = jacquard_common::types::xrpc::GenericError<'de>; 71 + type Output = GetFollowersOutput<'de>; 72 + type Err = jacquard_common::types::xrpc::GenericError<'de>; 73 73 }
+3 -3
crates/jacquard-api/src/app_bsky/graph/get_follows.rs
··· 64 64 } 65 65 } 66 66 67 - impl jacquard_common::types::xrpc::XrpcRequest for GetFollows<'_> { 67 + impl<'de> jacquard_common::types::xrpc::XrpcRequest<'de> for GetFollows<'de> { 68 68 const NSID: &'static str = "app.bsky.graph.getFollows"; 69 69 const METHOD: jacquard_common::types::xrpc::XrpcMethod = jacquard_common::types::xrpc::XrpcMethod::Query; 70 70 const OUTPUT_ENCODING: &'static str = "application/json"; 71 - type Output<'de> = GetFollowsOutput<'de>; 72 - type Err<'de> = jacquard_common::types::xrpc::GenericError<'de>; 71 + type Output = GetFollowsOutput<'de>; 72 + type Err = jacquard_common::types::xrpc::GenericError<'de>; 73 73 }
+3 -3
crates/jacquard-api/src/app_bsky/graph/get_known_followers.rs
··· 64 64 } 65 65 } 66 66 67 - impl jacquard_common::types::xrpc::XrpcRequest for GetKnownFollowers<'_> { 67 + impl<'de> jacquard_common::types::xrpc::XrpcRequest<'de> for GetKnownFollowers<'de> { 68 68 const NSID: &'static str = "app.bsky.graph.getKnownFollowers"; 69 69 const METHOD: jacquard_common::types::xrpc::XrpcMethod = jacquard_common::types::xrpc::XrpcMethod::Query; 70 70 const OUTPUT_ENCODING: &'static str = "application/json"; 71 - type Output<'de> = GetKnownFollowersOutput<'de>; 72 - type Err<'de> = jacquard_common::types::xrpc::GenericError<'de>; 71 + type Output = GetKnownFollowersOutput<'de>; 72 + type Err = jacquard_common::types::xrpc::GenericError<'de>; 73 73 }
+3 -3
crates/jacquard-api/src/app_bsky/graph/get_list.rs
··· 64 64 } 65 65 } 66 66 67 - impl jacquard_common::types::xrpc::XrpcRequest for GetList<'_> { 67 + impl<'de> jacquard_common::types::xrpc::XrpcRequest<'de> for GetList<'de> { 68 68 const NSID: &'static str = "app.bsky.graph.getList"; 69 69 const METHOD: jacquard_common::types::xrpc::XrpcMethod = jacquard_common::types::xrpc::XrpcMethod::Query; 70 70 const OUTPUT_ENCODING: &'static str = "application/json"; 71 - type Output<'de> = GetListOutput<'de>; 72 - type Err<'de> = jacquard_common::types::xrpc::GenericError<'de>; 71 + type Output = GetListOutput<'de>; 72 + type Err = jacquard_common::types::xrpc::GenericError<'de>; 73 73 }
+3 -3
crates/jacquard-api/src/app_bsky/graph/get_list_blocks.rs
··· 58 58 } 59 59 } 60 60 61 - impl jacquard_common::types::xrpc::XrpcRequest for GetListBlocks<'_> { 61 + impl<'de> jacquard_common::types::xrpc::XrpcRequest<'de> for GetListBlocks<'de> { 62 62 const NSID: &'static str = "app.bsky.graph.getListBlocks"; 63 63 const METHOD: jacquard_common::types::xrpc::XrpcMethod = jacquard_common::types::xrpc::XrpcMethod::Query; 64 64 const OUTPUT_ENCODING: &'static str = "application/json"; 65 - type Output<'de> = GetListBlocksOutput<'de>; 66 - type Err<'de> = jacquard_common::types::xrpc::GenericError<'de>; 65 + type Output = GetListBlocksOutput<'de>; 66 + type Err = jacquard_common::types::xrpc::GenericError<'de>; 67 67 }
+3 -3
crates/jacquard-api/src/app_bsky/graph/get_list_mutes.rs
··· 58 58 } 59 59 } 60 60 61 - impl jacquard_common::types::xrpc::XrpcRequest for GetListMutes<'_> { 61 + impl<'de> jacquard_common::types::xrpc::XrpcRequest<'de> for GetListMutes<'de> { 62 62 const NSID: &'static str = "app.bsky.graph.getListMutes"; 63 63 const METHOD: jacquard_common::types::xrpc::XrpcMethod = jacquard_common::types::xrpc::XrpcMethod::Query; 64 64 const OUTPUT_ENCODING: &'static str = "application/json"; 65 - type Output<'de> = GetListMutesOutput<'de>; 66 - type Err<'de> = jacquard_common::types::xrpc::GenericError<'de>; 65 + type Output = GetListMutesOutput<'de>; 66 + type Err = jacquard_common::types::xrpc::GenericError<'de>; 67 67 }
+3 -3
crates/jacquard-api/src/app_bsky/graph/get_lists.rs
··· 65 65 } 66 66 } 67 67 68 - impl jacquard_common::types::xrpc::XrpcRequest for GetLists<'_> { 68 + impl<'de> jacquard_common::types::xrpc::XrpcRequest<'de> for GetLists<'de> { 69 69 const NSID: &'static str = "app.bsky.graph.getLists"; 70 70 const METHOD: jacquard_common::types::xrpc::XrpcMethod = jacquard_common::types::xrpc::XrpcMethod::Query; 71 71 const OUTPUT_ENCODING: &'static str = "application/json"; 72 - type Output<'de> = GetListsOutput<'de>; 73 - type Err<'de> = jacquard_common::types::xrpc::GenericError<'de>; 72 + type Output = GetListsOutput<'de>; 73 + type Err = jacquard_common::types::xrpc::GenericError<'de>; 74 74 }
+4 -3
crates/jacquard-api/src/app_bsky/graph/get_lists_with_membership.rs
··· 88 88 } 89 89 } 90 90 91 - impl jacquard_common::types::xrpc::XrpcRequest for GetListsWithMembership<'_> { 91 + impl<'de> jacquard_common::types::xrpc::XrpcRequest<'de> 92 + for GetListsWithMembership<'de> { 92 93 const NSID: &'static str = "app.bsky.graph.getListsWithMembership"; 93 94 const METHOD: jacquard_common::types::xrpc::XrpcMethod = jacquard_common::types::xrpc::XrpcMethod::Query; 94 95 const OUTPUT_ENCODING: &'static str = "application/json"; 95 - type Output<'de> = GetListsWithMembershipOutput<'de>; 96 - type Err<'de> = jacquard_common::types::xrpc::GenericError<'de>; 96 + type Output = GetListsWithMembershipOutput<'de>; 97 + type Err = jacquard_common::types::xrpc::GenericError<'de>; 97 98 }
+3 -3
crates/jacquard-api/src/app_bsky/graph/get_mutes.rs
··· 58 58 } 59 59 } 60 60 61 - impl jacquard_common::types::xrpc::XrpcRequest for GetMutes<'_> { 61 + impl<'de> jacquard_common::types::xrpc::XrpcRequest<'de> for GetMutes<'de> { 62 62 const NSID: &'static str = "app.bsky.graph.getMutes"; 63 63 const METHOD: jacquard_common::types::xrpc::XrpcMethod = jacquard_common::types::xrpc::XrpcMethod::Query; 64 64 const OUTPUT_ENCODING: &'static str = "application/json"; 65 - type Output<'de> = GetMutesOutput<'de>; 66 - type Err<'de> = jacquard_common::types::xrpc::GenericError<'de>; 65 + type Output = GetMutesOutput<'de>; 66 + type Err = jacquard_common::types::xrpc::GenericError<'de>; 67 67 }
+3 -3
crates/jacquard-api/src/app_bsky/graph/get_relationships.rs
··· 106 106 } 107 107 } 108 108 109 - impl jacquard_common::types::xrpc::XrpcRequest for GetRelationships<'_> { 109 + impl<'de> jacquard_common::types::xrpc::XrpcRequest<'de> for GetRelationships<'de> { 110 110 const NSID: &'static str = "app.bsky.graph.getRelationships"; 111 111 const METHOD: jacquard_common::types::xrpc::XrpcMethod = jacquard_common::types::xrpc::XrpcMethod::Query; 112 112 const OUTPUT_ENCODING: &'static str = "application/json"; 113 - type Output<'de> = GetRelationshipsOutput<'de>; 114 - type Err<'de> = GetRelationshipsError<'de>; 113 + type Output = GetRelationshipsOutput<'de>; 114 + type Err = GetRelationshipsError<'de>; 115 115 }
+3 -3
crates/jacquard-api/src/app_bsky/graph/get_starter_pack.rs
··· 48 48 } 49 49 } 50 50 51 - impl jacquard_common::types::xrpc::XrpcRequest for GetStarterPack<'_> { 51 + impl<'de> jacquard_common::types::xrpc::XrpcRequest<'de> for GetStarterPack<'de> { 52 52 const NSID: &'static str = "app.bsky.graph.getStarterPack"; 53 53 const METHOD: jacquard_common::types::xrpc::XrpcMethod = jacquard_common::types::xrpc::XrpcMethod::Query; 54 54 const OUTPUT_ENCODING: &'static str = "application/json"; 55 - type Output<'de> = GetStarterPackOutput<'de>; 56 - type Err<'de> = jacquard_common::types::xrpc::GenericError<'de>; 55 + type Output = GetStarterPackOutput<'de>; 56 + type Err = jacquard_common::types::xrpc::GenericError<'de>; 57 57 }
+3 -3
crates/jacquard-api/src/app_bsky/graph/get_starter_packs.rs
··· 48 48 } 49 49 } 50 50 51 - impl jacquard_common::types::xrpc::XrpcRequest for GetStarterPacks<'_> { 51 + impl<'de> jacquard_common::types::xrpc::XrpcRequest<'de> for GetStarterPacks<'de> { 52 52 const NSID: &'static str = "app.bsky.graph.getStarterPacks"; 53 53 const METHOD: jacquard_common::types::xrpc::XrpcMethod = jacquard_common::types::xrpc::XrpcMethod::Query; 54 54 const OUTPUT_ENCODING: &'static str = "application/json"; 55 - type Output<'de> = GetStarterPacksOutput<'de>; 56 - type Err<'de> = jacquard_common::types::xrpc::GenericError<'de>; 55 + type Output = GetStarterPacksOutput<'de>; 56 + type Err = jacquard_common::types::xrpc::GenericError<'de>; 57 57 }
+4 -3
crates/jacquard-api/src/app_bsky/graph/get_starter_packs_with_membership.rs
··· 63 63 } 64 64 } 65 65 66 - impl jacquard_common::types::xrpc::XrpcRequest for GetStarterPacksWithMembership<'_> { 66 + impl<'de> jacquard_common::types::xrpc::XrpcRequest<'de> 67 + for GetStarterPacksWithMembership<'de> { 67 68 const NSID: &'static str = "app.bsky.graph.getStarterPacksWithMembership"; 68 69 const METHOD: jacquard_common::types::xrpc::XrpcMethod = jacquard_common::types::xrpc::XrpcMethod::Query; 69 70 const OUTPUT_ENCODING: &'static str = "application/json"; 70 - type Output<'de> = GetStarterPacksWithMembershipOutput<'de>; 71 - type Err<'de> = jacquard_common::types::xrpc::GenericError<'de>; 71 + type Output = GetStarterPacksWithMembershipOutput<'de>; 72 + type Err = jacquard_common::types::xrpc::GenericError<'de>; 72 73 } 73 74 74 75 ///A starter pack and an optional list item indicating membership of a target user to that starter pack.
+4 -3
crates/jacquard-api/src/app_bsky/graph/get_suggested_follows_by_actor.rs
··· 56 56 } 57 57 } 58 58 59 - impl jacquard_common::types::xrpc::XrpcRequest for GetSuggestedFollowsByActor<'_> { 59 + impl<'de> jacquard_common::types::xrpc::XrpcRequest<'de> 60 + for GetSuggestedFollowsByActor<'de> { 60 61 const NSID: &'static str = "app.bsky.graph.getSuggestedFollowsByActor"; 61 62 const METHOD: jacquard_common::types::xrpc::XrpcMethod = jacquard_common::types::xrpc::XrpcMethod::Query; 62 63 const OUTPUT_ENCODING: &'static str = "application/json"; 63 - type Output<'de> = GetSuggestedFollowsByActorOutput<'de>; 64 - type Err<'de> = jacquard_common::types::xrpc::GenericError<'de>; 64 + type Output = GetSuggestedFollowsByActorOutput<'de>; 65 + type Err = jacquard_common::types::xrpc::GenericError<'de>; 65 66 }
+3 -3
crates/jacquard-api/src/app_bsky/graph/mute_actor.rs
··· 39 39 } 40 40 } 41 41 42 - impl jacquard_common::types::xrpc::XrpcRequest for MuteActor<'_> { 42 + impl<'de> jacquard_common::types::xrpc::XrpcRequest<'de> for MuteActor<'de> { 43 43 const NSID: &'static str = "app.bsky.graph.muteActor"; 44 44 const METHOD: jacquard_common::types::xrpc::XrpcMethod = jacquard_common::types::xrpc::XrpcMethod::Procedure( 45 45 "application/json", 46 46 ); 47 47 const OUTPUT_ENCODING: &'static str = "application/json"; 48 - type Output<'de> = (); 49 - type Err<'de> = jacquard_common::types::xrpc::GenericError<'de>; 48 + type Output = (); 49 + type Err = jacquard_common::types::xrpc::GenericError<'de>; 50 50 }
+3 -3
crates/jacquard-api/src/app_bsky/graph/mute_actor_list.rs
··· 39 39 } 40 40 } 41 41 42 - impl jacquard_common::types::xrpc::XrpcRequest for MuteActorList<'_> { 42 + impl<'de> jacquard_common::types::xrpc::XrpcRequest<'de> for MuteActorList<'de> { 43 43 const NSID: &'static str = "app.bsky.graph.muteActorList"; 44 44 const METHOD: jacquard_common::types::xrpc::XrpcMethod = jacquard_common::types::xrpc::XrpcMethod::Procedure( 45 45 "application/json", 46 46 ); 47 47 const OUTPUT_ENCODING: &'static str = "application/json"; 48 - type Output<'de> = (); 49 - type Err<'de> = jacquard_common::types::xrpc::GenericError<'de>; 48 + type Output = (); 49 + type Err = jacquard_common::types::xrpc::GenericError<'de>; 50 50 }
+3 -3
crates/jacquard-api/src/app_bsky/graph/mute_thread.rs
··· 39 39 } 40 40 } 41 41 42 - impl jacquard_common::types::xrpc::XrpcRequest for MuteThread<'_> { 42 + impl<'de> jacquard_common::types::xrpc::XrpcRequest<'de> for MuteThread<'de> { 43 43 const NSID: &'static str = "app.bsky.graph.muteThread"; 44 44 const METHOD: jacquard_common::types::xrpc::XrpcMethod = jacquard_common::types::xrpc::XrpcMethod::Procedure( 45 45 "application/json", 46 46 ); 47 47 const OUTPUT_ENCODING: &'static str = "application/json"; 48 - type Output<'de> = (); 49 - type Err<'de> = jacquard_common::types::xrpc::GenericError<'de>; 48 + type Output = (); 49 + type Err = jacquard_common::types::xrpc::GenericError<'de>; 50 50 }
+3 -3
crates/jacquard-api/src/app_bsky/graph/search_starter_packs.rs
··· 62 62 } 63 63 } 64 64 65 - impl jacquard_common::types::xrpc::XrpcRequest for SearchStarterPacks<'_> { 65 + impl<'de> jacquard_common::types::xrpc::XrpcRequest<'de> for SearchStarterPacks<'de> { 66 66 const NSID: &'static str = "app.bsky.graph.searchStarterPacks"; 67 67 const METHOD: jacquard_common::types::xrpc::XrpcMethod = jacquard_common::types::xrpc::XrpcMethod::Query; 68 68 const OUTPUT_ENCODING: &'static str = "application/json"; 69 - type Output<'de> = SearchStarterPacksOutput<'de>; 70 - type Err<'de> = jacquard_common::types::xrpc::GenericError<'de>; 69 + type Output = SearchStarterPacksOutput<'de>; 70 + type Err = jacquard_common::types::xrpc::GenericError<'de>; 71 71 }
+3 -3
crates/jacquard-api/src/app_bsky/graph/unmute_actor.rs
··· 39 39 } 40 40 } 41 41 42 - impl jacquard_common::types::xrpc::XrpcRequest for UnmuteActor<'_> { 42 + impl<'de> jacquard_common::types::xrpc::XrpcRequest<'de> for UnmuteActor<'de> { 43 43 const NSID: &'static str = "app.bsky.graph.unmuteActor"; 44 44 const METHOD: jacquard_common::types::xrpc::XrpcMethod = jacquard_common::types::xrpc::XrpcMethod::Procedure( 45 45 "application/json", 46 46 ); 47 47 const OUTPUT_ENCODING: &'static str = "application/json"; 48 - type Output<'de> = (); 49 - type Err<'de> = jacquard_common::types::xrpc::GenericError<'de>; 48 + type Output = (); 49 + type Err = jacquard_common::types::xrpc::GenericError<'de>; 50 50 }
+3 -3
crates/jacquard-api/src/app_bsky/graph/unmute_actor_list.rs
··· 39 39 } 40 40 } 41 41 42 - impl jacquard_common::types::xrpc::XrpcRequest for UnmuteActorList<'_> { 42 + impl<'de> jacquard_common::types::xrpc::XrpcRequest<'de> for UnmuteActorList<'de> { 43 43 const NSID: &'static str = "app.bsky.graph.unmuteActorList"; 44 44 const METHOD: jacquard_common::types::xrpc::XrpcMethod = jacquard_common::types::xrpc::XrpcMethod::Procedure( 45 45 "application/json", 46 46 ); 47 47 const OUTPUT_ENCODING: &'static str = "application/json"; 48 - type Output<'de> = (); 49 - type Err<'de> = jacquard_common::types::xrpc::GenericError<'de>; 48 + type Output = (); 49 + type Err = jacquard_common::types::xrpc::GenericError<'de>; 50 50 }
+3 -3
crates/jacquard-api/src/app_bsky/graph/unmute_thread.rs
··· 39 39 } 40 40 } 41 41 42 - impl jacquard_common::types::xrpc::XrpcRequest for UnmuteThread<'_> { 42 + impl<'de> jacquard_common::types::xrpc::XrpcRequest<'de> for UnmuteThread<'de> { 43 43 const NSID: &'static str = "app.bsky.graph.unmuteThread"; 44 44 const METHOD: jacquard_common::types::xrpc::XrpcMethod = jacquard_common::types::xrpc::XrpcMethod::Procedure( 45 45 "application/json", 46 46 ); 47 47 const OUTPUT_ENCODING: &'static str = "application/json"; 48 - type Output<'de> = (); 49 - type Err<'de> = jacquard_common::types::xrpc::GenericError<'de>; 48 + type Output = (); 49 + type Err = jacquard_common::types::xrpc::GenericError<'de>; 50 50 }
+3 -3
crates/jacquard-api/src/app_bsky/labeler/get_services.rs
··· 52 52 } 53 53 } 54 54 55 - impl jacquard_common::types::xrpc::XrpcRequest for GetServices<'_> { 55 + impl<'de> jacquard_common::types::xrpc::XrpcRequest<'de> for GetServices<'de> { 56 56 const NSID: &'static str = "app.bsky.labeler.getServices"; 57 57 const METHOD: jacquard_common::types::xrpc::XrpcMethod = jacquard_common::types::xrpc::XrpcMethod::Query; 58 58 const OUTPUT_ENCODING: &'static str = "application/json"; 59 - type Output<'de> = GetServicesOutput<'de>; 60 - type Err<'de> = jacquard_common::types::xrpc::GenericError<'de>; 59 + type Output = GetServicesOutput<'de>; 60 + type Err = jacquard_common::types::xrpc::GenericError<'de>; 61 61 }
+3 -3
crates/jacquard-api/src/app_bsky/notification/get_preferences.rs
··· 42 42 } 43 43 } 44 44 45 - impl jacquard_common::types::xrpc::XrpcRequest for GetPreferences { 45 + impl<'de> jacquard_common::types::xrpc::XrpcRequest<'de> for GetPreferences { 46 46 const NSID: &'static str = "app.bsky.notification.getPreferences"; 47 47 const METHOD: jacquard_common::types::xrpc::XrpcMethod = jacquard_common::types::xrpc::XrpcMethod::Query; 48 48 const OUTPUT_ENCODING: &'static str = "application/json"; 49 - type Output<'de> = GetPreferencesOutput<'de>; 50 - type Err<'de> = jacquard_common::types::xrpc::GenericError<'de>; 49 + type Output = GetPreferencesOutput<'de>; 50 + type Err = jacquard_common::types::xrpc::GenericError<'de>; 51 51 }
+3 -3
crates/jacquard-api/src/app_bsky/notification/get_unread_count.rs
··· 47 47 } 48 48 } 49 49 50 - impl jacquard_common::types::xrpc::XrpcRequest for GetUnreadCount { 50 + impl<'de> jacquard_common::types::xrpc::XrpcRequest<'de> for GetUnreadCount { 51 51 const NSID: &'static str = "app.bsky.notification.getUnreadCount"; 52 52 const METHOD: jacquard_common::types::xrpc::XrpcMethod = jacquard_common::types::xrpc::XrpcMethod::Query; 53 53 const OUTPUT_ENCODING: &'static str = "application/json"; 54 - type Output<'de> = GetUnreadCountOutput<'de>; 55 - type Err<'de> = jacquard_common::types::xrpc::GenericError<'de>; 54 + type Output = GetUnreadCountOutput<'de>; 55 + type Err = jacquard_common::types::xrpc::GenericError<'de>; 56 56 }
+4 -3
crates/jacquard-api/src/app_bsky/notification/list_activity_subscriptions.rs
··· 58 58 } 59 59 } 60 60 61 - impl jacquard_common::types::xrpc::XrpcRequest for ListActivitySubscriptions<'_> { 61 + impl<'de> jacquard_common::types::xrpc::XrpcRequest<'de> 62 + for ListActivitySubscriptions<'de> { 62 63 const NSID: &'static str = "app.bsky.notification.listActivitySubscriptions"; 63 64 const METHOD: jacquard_common::types::xrpc::XrpcMethod = jacquard_common::types::xrpc::XrpcMethod::Query; 64 65 const OUTPUT_ENCODING: &'static str = "application/json"; 65 - type Output<'de> = ListActivitySubscriptionsOutput<'de>; 66 - type Err<'de> = jacquard_common::types::xrpc::GenericError<'de>; 66 + type Output = ListActivitySubscriptionsOutput<'de>; 67 + type Err = jacquard_common::types::xrpc::GenericError<'de>; 67 68 }
+3 -3
crates/jacquard-api/src/app_bsky/notification/list_notifications.rs
··· 74 74 } 75 75 } 76 76 77 - impl jacquard_common::types::xrpc::XrpcRequest for ListNotifications<'_> { 77 + impl<'de> jacquard_common::types::xrpc::XrpcRequest<'de> for ListNotifications<'de> { 78 78 const NSID: &'static str = "app.bsky.notification.listNotifications"; 79 79 const METHOD: jacquard_common::types::xrpc::XrpcMethod = jacquard_common::types::xrpc::XrpcMethod::Query; 80 80 const OUTPUT_ENCODING: &'static str = "application/json"; 81 - type Output<'de> = ListNotificationsOutput<'de>; 82 - type Err<'de> = jacquard_common::types::xrpc::GenericError<'de>; 81 + type Output = ListNotificationsOutput<'de>; 82 + type Err = jacquard_common::types::xrpc::GenericError<'de>; 83 83 } 84 84 85 85 #[jacquard_derive::lexicon]
+4 -3
crates/jacquard-api/src/app_bsky/notification/put_activity_subscription.rs
··· 66 66 } 67 67 } 68 68 69 - impl jacquard_common::types::xrpc::XrpcRequest for PutActivitySubscription<'_> { 69 + impl<'de> jacquard_common::types::xrpc::XrpcRequest<'de> 70 + for PutActivitySubscription<'de> { 70 71 const NSID: &'static str = "app.bsky.notification.putActivitySubscription"; 71 72 const METHOD: jacquard_common::types::xrpc::XrpcMethod = jacquard_common::types::xrpc::XrpcMethod::Procedure( 72 73 "application/json", 73 74 ); 74 75 const OUTPUT_ENCODING: &'static str = "application/json"; 75 - type Output<'de> = PutActivitySubscriptionOutput<'de>; 76 - type Err<'de> = jacquard_common::types::xrpc::GenericError<'de>; 76 + type Output = PutActivitySubscriptionOutput<'de>; 77 + type Err = jacquard_common::types::xrpc::GenericError<'de>; 77 78 }
+3 -3
crates/jacquard-api/src/app_bsky/notification/put_preferences.rs
··· 38 38 } 39 39 } 40 40 41 - impl jacquard_common::types::xrpc::XrpcRequest for PutPreferences<'_> { 41 + impl<'de> jacquard_common::types::xrpc::XrpcRequest<'de> for PutPreferences<'de> { 42 42 const NSID: &'static str = "app.bsky.notification.putPreferences"; 43 43 const METHOD: jacquard_common::types::xrpc::XrpcMethod = jacquard_common::types::xrpc::XrpcMethod::Procedure( 44 44 "application/json", 45 45 ); 46 46 const OUTPUT_ENCODING: &'static str = "application/json"; 47 - type Output<'de> = (); 48 - type Err<'de> = jacquard_common::types::xrpc::GenericError<'de>; 47 + type Output = (); 48 + type Err = jacquard_common::types::xrpc::GenericError<'de>; 49 49 }
+3 -3
crates/jacquard-api/src/app_bsky/notification/put_preferences_v2.rs
··· 126 126 } 127 127 } 128 128 129 - impl jacquard_common::types::xrpc::XrpcRequest for PutPreferencesV2<'_> { 129 + impl<'de> jacquard_common::types::xrpc::XrpcRequest<'de> for PutPreferencesV2<'de> { 130 130 const NSID: &'static str = "app.bsky.notification.putPreferencesV2"; 131 131 const METHOD: jacquard_common::types::xrpc::XrpcMethod = jacquard_common::types::xrpc::XrpcMethod::Procedure( 132 132 "application/json", 133 133 ); 134 134 const OUTPUT_ENCODING: &'static str = "application/json"; 135 - type Output<'de> = PutPreferencesV2Output<'de>; 136 - type Err<'de> = jacquard_common::types::xrpc::GenericError<'de>; 135 + type Output = PutPreferencesV2Output<'de>; 136 + type Err = jacquard_common::types::xrpc::GenericError<'de>; 137 137 }
+3 -3
crates/jacquard-api/src/app_bsky/notification/register_push.rs
··· 55 55 } 56 56 } 57 57 58 - impl jacquard_common::types::xrpc::XrpcRequest for RegisterPush<'_> { 58 + impl<'de> jacquard_common::types::xrpc::XrpcRequest<'de> for RegisterPush<'de> { 59 59 const NSID: &'static str = "app.bsky.notification.registerPush"; 60 60 const METHOD: jacquard_common::types::xrpc::XrpcMethod = jacquard_common::types::xrpc::XrpcMethod::Procedure( 61 61 "application/json", 62 62 ); 63 63 const OUTPUT_ENCODING: &'static str = "application/json"; 64 - type Output<'de> = (); 65 - type Err<'de> = jacquard_common::types::xrpc::GenericError<'de>; 64 + type Output = (); 65 + type Err = jacquard_common::types::xrpc::GenericError<'de>; 66 66 }
+3 -3
crates/jacquard-api/src/app_bsky/notification/unregister_push.rs
··· 51 51 } 52 52 } 53 53 54 - impl jacquard_common::types::xrpc::XrpcRequest for UnregisterPush<'_> { 54 + impl<'de> jacquard_common::types::xrpc::XrpcRequest<'de> for UnregisterPush<'de> { 55 55 const NSID: &'static str = "app.bsky.notification.unregisterPush"; 56 56 const METHOD: jacquard_common::types::xrpc::XrpcMethod = jacquard_common::types::xrpc::XrpcMethod::Procedure( 57 57 "application/json", 58 58 ); 59 59 const OUTPUT_ENCODING: &'static str = "application/json"; 60 - type Output<'de> = (); 61 - type Err<'de> = jacquard_common::types::xrpc::GenericError<'de>; 60 + type Output = (); 61 + type Err = jacquard_common::types::xrpc::GenericError<'de>; 62 62 }
+3 -3
crates/jacquard-api/src/app_bsky/notification/update_seen.rs
··· 38 38 } 39 39 } 40 40 41 - impl jacquard_common::types::xrpc::XrpcRequest for UpdateSeen<'_> { 41 + impl<'de> jacquard_common::types::xrpc::XrpcRequest<'de> for UpdateSeen<'de> { 42 42 const NSID: &'static str = "app.bsky.notification.updateSeen"; 43 43 const METHOD: jacquard_common::types::xrpc::XrpcMethod = jacquard_common::types::xrpc::XrpcMethod::Procedure( 44 44 "application/json", 45 45 ); 46 46 const OUTPUT_ENCODING: &'static str = "application/json"; 47 - type Output<'de> = (); 48 - type Err<'de> = jacquard_common::types::xrpc::GenericError<'de>; 47 + type Output = (); 48 + type Err = jacquard_common::types::xrpc::GenericError<'de>; 49 49 }
+4 -4
crates/jacquard-api/src/app_bsky/unspecced/get_age_assurance_state.rs
··· 25 25 } 26 26 27 27 /// XRPC request marker type 28 - #[derive(Debug, Clone, Copy, PartialEq, Eq, serde::Serialize)] 28 + #[derive(Debug, Clone, Copy, PartialEq, Eq, serde::Serialize, serde::Deserialize)] 29 29 pub struct GetAgeAssuranceState; 30 - impl jacquard_common::types::xrpc::XrpcRequest for GetAgeAssuranceState { 30 + impl<'de> jacquard_common::types::xrpc::XrpcRequest<'de> for GetAgeAssuranceState { 31 31 const NSID: &'static str = "app.bsky.unspecced.getAgeAssuranceState"; 32 32 const METHOD: jacquard_common::types::xrpc::XrpcMethod = jacquard_common::types::xrpc::XrpcMethod::Query; 33 33 const OUTPUT_ENCODING: &'static str = "application/json"; 34 - type Output<'de> = GetAgeAssuranceStateOutput<'de>; 35 - type Err<'de> = jacquard_common::types::xrpc::GenericError<'de>; 34 + type Output = GetAgeAssuranceStateOutput<'de>; 35 + type Err = jacquard_common::types::xrpc::GenericError<'de>; 36 36 }
+4 -4
crates/jacquard-api/src/app_bsky/unspecced/get_config.rs
··· 49 49 } 50 50 51 51 /// XRPC request marker type 52 - #[derive(Debug, Clone, Copy, PartialEq, Eq, serde::Serialize)] 52 + #[derive(Debug, Clone, Copy, PartialEq, Eq, serde::Serialize, serde::Deserialize)] 53 53 pub struct GetConfig; 54 - impl jacquard_common::types::xrpc::XrpcRequest for GetConfig { 54 + impl<'de> jacquard_common::types::xrpc::XrpcRequest<'de> for GetConfig { 55 55 const NSID: &'static str = "app.bsky.unspecced.getConfig"; 56 56 const METHOD: jacquard_common::types::xrpc::XrpcMethod = jacquard_common::types::xrpc::XrpcMethod::Query; 57 57 const OUTPUT_ENCODING: &'static str = "application/json"; 58 - type Output<'de> = GetConfigOutput<'de>; 59 - type Err<'de> = jacquard_common::types::xrpc::GenericError<'de>; 58 + type Output = GetConfigOutput<'de>; 59 + type Err = jacquard_common::types::xrpc::GenericError<'de>; 60 60 }
+4 -3
crates/jacquard-api/src/app_bsky/unspecced/get_onboarding_suggested_starter_packs.rs
··· 47 47 } 48 48 } 49 49 50 - impl jacquard_common::types::xrpc::XrpcRequest for GetOnboardingSuggestedStarterPacks { 50 + impl<'de> jacquard_common::types::xrpc::XrpcRequest<'de> 51 + for GetOnboardingSuggestedStarterPacks { 51 52 const NSID: &'static str = "app.bsky.unspecced.getOnboardingSuggestedStarterPacks"; 52 53 const METHOD: jacquard_common::types::xrpc::XrpcMethod = jacquard_common::types::xrpc::XrpcMethod::Query; 53 54 const OUTPUT_ENCODING: &'static str = "application/json"; 54 - type Output<'de> = GetOnboardingSuggestedStarterPacksOutput<'de>; 55 - type Err<'de> = jacquard_common::types::xrpc::GenericError<'de>; 55 + type Output = GetOnboardingSuggestedStarterPacksOutput<'de>; 56 + type Err = jacquard_common::types::xrpc::GenericError<'de>; 56 57 }
+4 -4
crates/jacquard-api/src/app_bsky/unspecced/get_onboarding_suggested_starter_packs_skeleton.rs
··· 54 54 } 55 55 } 56 56 57 - impl jacquard_common::types::xrpc::XrpcRequest 58 - for GetOnboardingSuggestedStarterPacksSkeleton<'_> { 57 + impl<'de> jacquard_common::types::xrpc::XrpcRequest<'de> 58 + for GetOnboardingSuggestedStarterPacksSkeleton<'de> { 59 59 const NSID: &'static str = "app.bsky.unspecced.getOnboardingSuggestedStarterPacksSkeleton"; 60 60 const METHOD: jacquard_common::types::xrpc::XrpcMethod = jacquard_common::types::xrpc::XrpcMethod::Query; 61 61 const OUTPUT_ENCODING: &'static str = "application/json"; 62 - type Output<'de> = GetOnboardingSuggestedStarterPacksSkeletonOutput<'de>; 63 - type Err<'de> = jacquard_common::types::xrpc::GenericError<'de>; 62 + type Output = GetOnboardingSuggestedStarterPacksSkeletonOutput<'de>; 63 + type Err = jacquard_common::types::xrpc::GenericError<'de>; 64 64 }
+3 -3
crates/jacquard-api/src/app_bsky/unspecced/get_post_thread_other_v2.rs
··· 53 53 } 54 54 } 55 55 56 - impl jacquard_common::types::xrpc::XrpcRequest for GetPostThreadOtherV2<'_> { 56 + impl<'de> jacquard_common::types::xrpc::XrpcRequest<'de> for GetPostThreadOtherV2<'de> { 57 57 const NSID: &'static str = "app.bsky.unspecced.getPostThreadOtherV2"; 58 58 const METHOD: jacquard_common::types::xrpc::XrpcMethod = jacquard_common::types::xrpc::XrpcMethod::Query; 59 59 const OUTPUT_ENCODING: &'static str = "application/json"; 60 - type Output<'de> = GetPostThreadOtherV2Output<'de>; 61 - type Err<'de> = jacquard_common::types::xrpc::GenericError<'de>; 60 + type Output = GetPostThreadOtherV2Output<'de>; 61 + type Err = jacquard_common::types::xrpc::GenericError<'de>; 62 62 } 63 63 64 64 #[jacquard_derive::lexicon]
+3 -3
crates/jacquard-api/src/app_bsky/unspecced/get_post_thread_v2.rs
··· 78 78 } 79 79 } 80 80 81 - impl jacquard_common::types::xrpc::XrpcRequest for GetPostThreadV2<'_> { 81 + impl<'de> jacquard_common::types::xrpc::XrpcRequest<'de> for GetPostThreadV2<'de> { 82 82 const NSID: &'static str = "app.bsky.unspecced.getPostThreadV2"; 83 83 const METHOD: jacquard_common::types::xrpc::XrpcMethod = jacquard_common::types::xrpc::XrpcMethod::Query; 84 84 const OUTPUT_ENCODING: &'static str = "application/json"; 85 - type Output<'de> = GetPostThreadV2Output<'de>; 86 - type Err<'de> = jacquard_common::types::xrpc::GenericError<'de>; 85 + type Output = GetPostThreadV2Output<'de>; 86 + type Err = jacquard_common::types::xrpc::GenericError<'de>; 87 87 } 88 88 89 89 #[jacquard_derive::lexicon]
+3 -3
crates/jacquard-api/src/app_bsky/unspecced/get_suggested_feeds.rs
··· 47 47 } 48 48 } 49 49 50 - impl jacquard_common::types::xrpc::XrpcRequest for GetSuggestedFeeds { 50 + impl<'de> jacquard_common::types::xrpc::XrpcRequest<'de> for GetSuggestedFeeds { 51 51 const NSID: &'static str = "app.bsky.unspecced.getSuggestedFeeds"; 52 52 const METHOD: jacquard_common::types::xrpc::XrpcMethod = jacquard_common::types::xrpc::XrpcMethod::Query; 53 53 const OUTPUT_ENCODING: &'static str = "application/json"; 54 - type Output<'de> = GetSuggestedFeedsOutput<'de>; 55 - type Err<'de> = jacquard_common::types::xrpc::GenericError<'de>; 54 + type Output = GetSuggestedFeedsOutput<'de>; 55 + type Err = jacquard_common::types::xrpc::GenericError<'de>; 56 56 }
+4 -3
crates/jacquard-api/src/app_bsky/unspecced/get_suggested_feeds_skeleton.rs
··· 53 53 } 54 54 } 55 55 56 - impl jacquard_common::types::xrpc::XrpcRequest for GetSuggestedFeedsSkeleton<'_> { 56 + impl<'de> jacquard_common::types::xrpc::XrpcRequest<'de> 57 + for GetSuggestedFeedsSkeleton<'de> { 57 58 const NSID: &'static str = "app.bsky.unspecced.getSuggestedFeedsSkeleton"; 58 59 const METHOD: jacquard_common::types::xrpc::XrpcMethod = jacquard_common::types::xrpc::XrpcMethod::Query; 59 60 const OUTPUT_ENCODING: &'static str = "application/json"; 60 - type Output<'de> = GetSuggestedFeedsSkeletonOutput<'de>; 61 - type Err<'de> = jacquard_common::types::xrpc::GenericError<'de>; 61 + type Output = GetSuggestedFeedsSkeletonOutput<'de>; 62 + type Err = jacquard_common::types::xrpc::GenericError<'de>; 62 63 }
+3 -3
crates/jacquard-api/src/app_bsky/unspecced/get_suggested_starter_packs.rs
··· 47 47 } 48 48 } 49 49 50 - impl jacquard_common::types::xrpc::XrpcRequest for GetSuggestedStarterPacks { 50 + impl<'de> jacquard_common::types::xrpc::XrpcRequest<'de> for GetSuggestedStarterPacks { 51 51 const NSID: &'static str = "app.bsky.unspecced.getSuggestedStarterPacks"; 52 52 const METHOD: jacquard_common::types::xrpc::XrpcMethod = jacquard_common::types::xrpc::XrpcMethod::Query; 53 53 const OUTPUT_ENCODING: &'static str = "application/json"; 54 - type Output<'de> = GetSuggestedStarterPacksOutput<'de>; 55 - type Err<'de> = jacquard_common::types::xrpc::GenericError<'de>; 54 + type Output = GetSuggestedStarterPacksOutput<'de>; 55 + type Err = jacquard_common::types::xrpc::GenericError<'de>; 56 56 }
+4 -3
crates/jacquard-api/src/app_bsky/unspecced/get_suggested_starter_packs_skeleton.rs
··· 53 53 } 54 54 } 55 55 56 - impl jacquard_common::types::xrpc::XrpcRequest for GetSuggestedStarterPacksSkeleton<'_> { 56 + impl<'de> jacquard_common::types::xrpc::XrpcRequest<'de> 57 + for GetSuggestedStarterPacksSkeleton<'de> { 57 58 const NSID: &'static str = "app.bsky.unspecced.getSuggestedStarterPacksSkeleton"; 58 59 const METHOD: jacquard_common::types::xrpc::XrpcMethod = jacquard_common::types::xrpc::XrpcMethod::Query; 59 60 const OUTPUT_ENCODING: &'static str = "application/json"; 60 - type Output<'de> = GetSuggestedStarterPacksSkeletonOutput<'de>; 61 - type Err<'de> = jacquard_common::types::xrpc::GenericError<'de>; 61 + type Output = GetSuggestedStarterPacksSkeletonOutput<'de>; 62 + type Err = jacquard_common::types::xrpc::GenericError<'de>; 62 63 }
+3 -3
crates/jacquard-api/src/app_bsky/unspecced/get_suggested_users.rs
··· 54 54 } 55 55 } 56 56 57 - impl jacquard_common::types::xrpc::XrpcRequest for GetSuggestedUsers<'_> { 57 + impl<'de> jacquard_common::types::xrpc::XrpcRequest<'de> for GetSuggestedUsers<'de> { 58 58 const NSID: &'static str = "app.bsky.unspecced.getSuggestedUsers"; 59 59 const METHOD: jacquard_common::types::xrpc::XrpcMethod = jacquard_common::types::xrpc::XrpcMethod::Query; 60 60 const OUTPUT_ENCODING: &'static str = "application/json"; 61 - type Output<'de> = GetSuggestedUsersOutput<'de>; 62 - type Err<'de> = jacquard_common::types::xrpc::GenericError<'de>; 61 + type Output = GetSuggestedUsersOutput<'de>; 62 + type Err = jacquard_common::types::xrpc::GenericError<'de>; 63 63 }
+4 -3
crates/jacquard-api/src/app_bsky/unspecced/get_suggested_users_skeleton.rs
··· 58 58 } 59 59 } 60 60 61 - impl jacquard_common::types::xrpc::XrpcRequest for GetSuggestedUsersSkeleton<'_> { 61 + impl<'de> jacquard_common::types::xrpc::XrpcRequest<'de> 62 + for GetSuggestedUsersSkeleton<'de> { 62 63 const NSID: &'static str = "app.bsky.unspecced.getSuggestedUsersSkeleton"; 63 64 const METHOD: jacquard_common::types::xrpc::XrpcMethod = jacquard_common::types::xrpc::XrpcMethod::Query; 64 65 const OUTPUT_ENCODING: &'static str = "application/json"; 65 - type Output<'de> = GetSuggestedUsersSkeletonOutput<'de>; 66 - type Err<'de> = jacquard_common::types::xrpc::GenericError<'de>; 66 + type Output = GetSuggestedUsersSkeletonOutput<'de>; 67 + type Err = jacquard_common::types::xrpc::GenericError<'de>; 67 68 }
+4 -3
crates/jacquard-api/src/app_bsky/unspecced/get_suggestions_skeleton.rs
··· 75 75 } 76 76 } 77 77 78 - impl jacquard_common::types::xrpc::XrpcRequest for GetSuggestionsSkeleton<'_> { 78 + impl<'de> jacquard_common::types::xrpc::XrpcRequest<'de> 79 + for GetSuggestionsSkeleton<'de> { 79 80 const NSID: &'static str = "app.bsky.unspecced.getSuggestionsSkeleton"; 80 81 const METHOD: jacquard_common::types::xrpc::XrpcMethod = jacquard_common::types::xrpc::XrpcMethod::Query; 81 82 const OUTPUT_ENCODING: &'static str = "application/json"; 82 - type Output<'de> = GetSuggestionsSkeletonOutput<'de>; 83 - type Err<'de> = jacquard_common::types::xrpc::GenericError<'de>; 83 + type Output = GetSuggestionsSkeletonOutput<'de>; 84 + type Err = jacquard_common::types::xrpc::GenericError<'de>; 84 85 }
+3 -3
crates/jacquard-api/src/app_bsky/unspecced/get_tagged_suggestions.rs
··· 42 42 } 43 43 } 44 44 45 - impl jacquard_common::types::xrpc::XrpcRequest for GetTaggedSuggestions { 45 + impl<'de> jacquard_common::types::xrpc::XrpcRequest<'de> for GetTaggedSuggestions { 46 46 const NSID: &'static str = "app.bsky.unspecced.getTaggedSuggestions"; 47 47 const METHOD: jacquard_common::types::xrpc::XrpcMethod = jacquard_common::types::xrpc::XrpcMethod::Query; 48 48 const OUTPUT_ENCODING: &'static str = "application/json"; 49 - type Output<'de> = GetTaggedSuggestionsOutput<'de>; 50 - type Err<'de> = jacquard_common::types::xrpc::GenericError<'de>; 49 + type Output = GetTaggedSuggestionsOutput<'de>; 50 + type Err = jacquard_common::types::xrpc::GenericError<'de>; 51 51 } 52 52 53 53 #[jacquard_derive::lexicon]
+3 -3
crates/jacquard-api/src/app_bsky/unspecced/get_trends.rs
··· 47 47 } 48 48 } 49 49 50 - impl jacquard_common::types::xrpc::XrpcRequest for GetTrends { 50 + impl<'de> jacquard_common::types::xrpc::XrpcRequest<'de> for GetTrends { 51 51 const NSID: &'static str = "app.bsky.unspecced.getTrends"; 52 52 const METHOD: jacquard_common::types::xrpc::XrpcMethod = jacquard_common::types::xrpc::XrpcMethod::Query; 53 53 const OUTPUT_ENCODING: &'static str = "application/json"; 54 - type Output<'de> = GetTrendsOutput<'de>; 55 - type Err<'de> = jacquard_common::types::xrpc::GenericError<'de>; 54 + type Output = GetTrendsOutput<'de>; 55 + type Err = jacquard_common::types::xrpc::GenericError<'de>; 56 56 }
+3 -3
crates/jacquard-api/src/app_bsky/unspecced/init_age_assurance.rs
··· 141 141 } 142 142 } 143 143 144 - impl jacquard_common::types::xrpc::XrpcRequest for InitAgeAssurance<'_> { 144 + impl<'de> jacquard_common::types::xrpc::XrpcRequest<'de> for InitAgeAssurance<'de> { 145 145 const NSID: &'static str = "app.bsky.unspecced.initAgeAssurance"; 146 146 const METHOD: jacquard_common::types::xrpc::XrpcMethod = jacquard_common::types::xrpc::XrpcMethod::Procedure( 147 147 "application/json", 148 148 ); 149 149 const OUTPUT_ENCODING: &'static str = "application/json"; 150 - type Output<'de> = InitAgeAssuranceOutput<'de>; 151 - type Err<'de> = InitAgeAssuranceError<'de>; 150 + type Output = InitAgeAssuranceOutput<'de>; 151 + type Err = InitAgeAssuranceError<'de>; 152 152 }
+3 -3
crates/jacquard-api/src/app_bsky/unspecced/search_actors_skeleton.rs
··· 120 120 } 121 121 } 122 122 123 - impl jacquard_common::types::xrpc::XrpcRequest for SearchActorsSkeleton<'_> { 123 + impl<'de> jacquard_common::types::xrpc::XrpcRequest<'de> for SearchActorsSkeleton<'de> { 124 124 const NSID: &'static str = "app.bsky.unspecced.searchActorsSkeleton"; 125 125 const METHOD: jacquard_common::types::xrpc::XrpcMethod = jacquard_common::types::xrpc::XrpcMethod::Query; 126 126 const OUTPUT_ENCODING: &'static str = "application/json"; 127 - type Output<'de> = SearchActorsSkeletonOutput<'de>; 128 - type Err<'de> = SearchActorsSkeletonError<'de>; 127 + type Output = SearchActorsSkeletonOutput<'de>; 128 + type Err = SearchActorsSkeletonError<'de>; 129 129 }
+3 -3
crates/jacquard-api/src/app_bsky/unspecced/search_posts_skeleton.rs
··· 157 157 } 158 158 } 159 159 160 - impl jacquard_common::types::xrpc::XrpcRequest for SearchPostsSkeleton<'_> { 160 + impl<'de> jacquard_common::types::xrpc::XrpcRequest<'de> for SearchPostsSkeleton<'de> { 161 161 const NSID: &'static str = "app.bsky.unspecced.searchPostsSkeleton"; 162 162 const METHOD: jacquard_common::types::xrpc::XrpcMethod = jacquard_common::types::xrpc::XrpcMethod::Query; 163 163 const OUTPUT_ENCODING: &'static str = "application/json"; 164 - type Output<'de> = SearchPostsSkeletonOutput<'de>; 165 - type Err<'de> = SearchPostsSkeletonError<'de>; 164 + type Output = SearchPostsSkeletonOutput<'de>; 165 + type Err = SearchPostsSkeletonError<'de>; 166 166 }
+4 -3
crates/jacquard-api/src/app_bsky/unspecced/search_starter_packs_skeleton.rs
··· 117 117 } 118 118 } 119 119 120 - impl jacquard_common::types::xrpc::XrpcRequest for SearchStarterPacksSkeleton<'_> { 120 + impl<'de> jacquard_common::types::xrpc::XrpcRequest<'de> 121 + for SearchStarterPacksSkeleton<'de> { 121 122 const NSID: &'static str = "app.bsky.unspecced.searchStarterPacksSkeleton"; 122 123 const METHOD: jacquard_common::types::xrpc::XrpcMethod = jacquard_common::types::xrpc::XrpcMethod::Query; 123 124 const OUTPUT_ENCODING: &'static str = "application/json"; 124 - type Output<'de> = SearchStarterPacksSkeletonOutput<'de>; 125 - type Err<'de> = SearchStarterPacksSkeletonError<'de>; 125 + type Output = SearchStarterPacksSkeletonOutput<'de>; 126 + type Err = SearchStarterPacksSkeletonError<'de>; 126 127 }
+3 -3
crates/jacquard-api/src/app_bsky/video/get_job_status.rs
··· 49 49 } 50 50 } 51 51 52 - impl jacquard_common::types::xrpc::XrpcRequest for GetJobStatus<'_> { 52 + impl<'de> jacquard_common::types::xrpc::XrpcRequest<'de> for GetJobStatus<'de> { 53 53 const NSID: &'static str = "app.bsky.video.getJobStatus"; 54 54 const METHOD: jacquard_common::types::xrpc::XrpcMethod = jacquard_common::types::xrpc::XrpcMethod::Query; 55 55 const OUTPUT_ENCODING: &'static str = "application/json"; 56 - type Output<'de> = GetJobStatusOutput<'de>; 57 - type Err<'de> = jacquard_common::types::xrpc::GenericError<'de>; 56 + type Output = GetJobStatusOutput<'de>; 57 + type Err = jacquard_common::types::xrpc::GenericError<'de>; 58 58 }
+4 -4
crates/jacquard-api/src/app_bsky/video/get_upload_limits.rs
··· 37 37 } 38 38 39 39 /// XRPC request marker type 40 - #[derive(Debug, Clone, Copy, PartialEq, Eq, serde::Serialize)] 40 + #[derive(Debug, Clone, Copy, PartialEq, Eq, serde::Serialize, serde::Deserialize)] 41 41 pub struct GetUploadLimits; 42 - impl jacquard_common::types::xrpc::XrpcRequest for GetUploadLimits { 42 + impl<'de> jacquard_common::types::xrpc::XrpcRequest<'de> for GetUploadLimits { 43 43 const NSID: &'static str = "app.bsky.video.getUploadLimits"; 44 44 const METHOD: jacquard_common::types::xrpc::XrpcMethod = jacquard_common::types::xrpc::XrpcMethod::Query; 45 45 const OUTPUT_ENCODING: &'static str = "application/json"; 46 - type Output<'de> = GetUploadLimitsOutput<'de>; 47 - type Err<'de> = jacquard_common::types::xrpc::GenericError<'de>; 46 + type Output = GetUploadLimitsOutput<'de>; 47 + type Err = jacquard_common::types::xrpc::GenericError<'de>; 48 48 }
+13 -3
crates/jacquard-api/src/app_bsky/video/upload_video.rs
··· 45 45 } 46 46 } 47 47 48 - impl jacquard_common::types::xrpc::XrpcRequest for UploadVideo { 48 + impl<'de> jacquard_common::types::xrpc::XrpcRequest<'de> for UploadVideo { 49 49 const NSID: &'static str = "app.bsky.video.uploadVideo"; 50 50 const METHOD: jacquard_common::types::xrpc::XrpcMethod = jacquard_common::types::xrpc::XrpcMethod::Procedure( 51 51 "video/mp4", 52 52 ); 53 53 const OUTPUT_ENCODING: &'static str = "application/json"; 54 - type Output<'de> = UploadVideoOutput<'de>; 55 - type Err<'de> = jacquard_common::types::xrpc::GenericError<'de>; 54 + type Output = UploadVideoOutput<'de>; 55 + type Err = jacquard_common::types::xrpc::GenericError<'de>; 56 56 fn encode_body(&self) -> Result<Vec<u8>, jacquard_common::types::xrpc::EncodeError> { 57 57 Ok(self.body.to_vec()) 58 + } 59 + fn decode_body( 60 + &self, 61 + body: &'de [u8], 62 + ) -> Result<Box<Self>, jacquard_common::error::DecodeError> { 63 + Ok( 64 + Box::new(Self { 65 + body: bytes::Bytes::copy_from_slice(body), 66 + }), 67 + ) 58 68 } 59 69 }
+4 -4
crates/jacquard-api/src/chat_bsky/actor/delete_account.rs
··· 19 19 } 20 20 21 21 /// XRPC request marker type 22 - #[derive(Debug, Clone, Copy, PartialEq, Eq, serde::Serialize)] 22 + #[derive(Debug, Clone, Copy, PartialEq, Eq, serde::Serialize, serde::Deserialize)] 23 23 pub struct DeleteAccount; 24 - impl jacquard_common::types::xrpc::XrpcRequest for DeleteAccount { 24 + impl<'de> jacquard_common::types::xrpc::XrpcRequest<'de> for DeleteAccount { 25 25 const NSID: &'static str = "chat.bsky.actor.deleteAccount"; 26 26 const METHOD: jacquard_common::types::xrpc::XrpcMethod = jacquard_common::types::xrpc::XrpcMethod::Procedure( 27 27 "application/json", 28 28 ); 29 29 const OUTPUT_ENCODING: &'static str = "application/json"; 30 - type Output<'de> = DeleteAccountOutput<'de>; 31 - type Err<'de> = jacquard_common::types::xrpc::GenericError<'de>; 30 + type Output = DeleteAccountOutput<'de>; 31 + type Err = jacquard_common::types::xrpc::GenericError<'de>; 32 32 }
+4 -4
crates/jacquard-api/src/chat_bsky/actor/export_account_data.rs
··· 19 19 } 20 20 21 21 /// XRPC request marker type 22 - #[derive(Debug, Clone, Copy, PartialEq, Eq, serde::Serialize)] 22 + #[derive(Debug, Clone, Copy, PartialEq, Eq, serde::Serialize, serde::Deserialize)] 23 23 pub struct ExportAccountData; 24 - impl jacquard_common::types::xrpc::XrpcRequest for ExportAccountData { 24 + impl<'de> jacquard_common::types::xrpc::XrpcRequest<'de> for ExportAccountData { 25 25 const NSID: &'static str = "chat.bsky.actor.exportAccountData"; 26 26 const METHOD: jacquard_common::types::xrpc::XrpcMethod = jacquard_common::types::xrpc::XrpcMethod::Query; 27 27 const OUTPUT_ENCODING: &'static str = "application/jsonl"; 28 - type Output<'de> = ExportAccountDataOutput<'de>; 29 - type Err<'de> = jacquard_common::types::xrpc::GenericError<'de>; 28 + type Output = ExportAccountDataOutput<'de>; 29 + type Err = jacquard_common::types::xrpc::GenericError<'de>; 30 30 }
+3 -3
crates/jacquard-api/src/chat_bsky/convo/accept_convo.rs
··· 60 60 } 61 61 } 62 62 63 - impl jacquard_common::types::xrpc::XrpcRequest for AcceptConvo<'_> { 63 + impl<'de> jacquard_common::types::xrpc::XrpcRequest<'de> for AcceptConvo<'de> { 64 64 const NSID: &'static str = "chat.bsky.convo.acceptConvo"; 65 65 const METHOD: jacquard_common::types::xrpc::XrpcMethod = jacquard_common::types::xrpc::XrpcMethod::Procedure( 66 66 "application/json", 67 67 ); 68 68 const OUTPUT_ENCODING: &'static str = "application/json"; 69 - type Output<'de> = AcceptConvoOutput<'de>; 70 - type Err<'de> = jacquard_common::types::xrpc::GenericError<'de>; 69 + type Output = AcceptConvoOutput<'de>; 70 + type Err = jacquard_common::types::xrpc::GenericError<'de>; 71 71 }
+3 -3
crates/jacquard-api/src/chat_bsky/convo/add_reaction.rs
··· 138 138 } 139 139 } 140 140 141 - impl jacquard_common::types::xrpc::XrpcRequest for AddReaction<'_> { 141 + impl<'de> jacquard_common::types::xrpc::XrpcRequest<'de> for AddReaction<'de> { 142 142 const NSID: &'static str = "chat.bsky.convo.addReaction"; 143 143 const METHOD: jacquard_common::types::xrpc::XrpcMethod = jacquard_common::types::xrpc::XrpcMethod::Procedure( 144 144 "application/json", 145 145 ); 146 146 const OUTPUT_ENCODING: &'static str = "application/json"; 147 - type Output<'de> = AddReactionOutput<'de>; 148 - type Err<'de> = AddReactionError<'de>; 147 + type Output = AddReactionOutput<'de>; 148 + type Err = AddReactionError<'de>; 149 149 }
+3 -3
crates/jacquard-api/src/chat_bsky/convo/delete_message_for_self.rs
··· 63 63 } 64 64 } 65 65 66 - impl jacquard_common::types::xrpc::XrpcRequest for DeleteMessageForSelf<'_> { 66 + impl<'de> jacquard_common::types::xrpc::XrpcRequest<'de> for DeleteMessageForSelf<'de> { 67 67 const NSID: &'static str = "chat.bsky.convo.deleteMessageForSelf"; 68 68 const METHOD: jacquard_common::types::xrpc::XrpcMethod = jacquard_common::types::xrpc::XrpcMethod::Procedure( 69 69 "application/json", 70 70 ); 71 71 const OUTPUT_ENCODING: &'static str = "application/json"; 72 - type Output<'de> = DeleteMessageForSelfOutput<'de>; 73 - type Err<'de> = jacquard_common::types::xrpc::GenericError<'de>; 72 + type Output = DeleteMessageForSelfOutput<'de>; 73 + type Err = jacquard_common::types::xrpc::GenericError<'de>; 74 74 }
+3 -3
crates/jacquard-api/src/chat_bsky/convo/get_convo.rs
··· 49 49 } 50 50 } 51 51 52 - impl jacquard_common::types::xrpc::XrpcRequest for GetConvo<'_> { 52 + impl<'de> jacquard_common::types::xrpc::XrpcRequest<'de> for GetConvo<'de> { 53 53 const NSID: &'static str = "chat.bsky.convo.getConvo"; 54 54 const METHOD: jacquard_common::types::xrpc::XrpcMethod = jacquard_common::types::xrpc::XrpcMethod::Query; 55 55 const OUTPUT_ENCODING: &'static str = "application/json"; 56 - type Output<'de> = GetConvoOutput<'de>; 57 - type Err<'de> = jacquard_common::types::xrpc::GenericError<'de>; 56 + type Output = GetConvoOutput<'de>; 57 + type Err = jacquard_common::types::xrpc::GenericError<'de>; 58 58 }
+3 -3
crates/jacquard-api/src/chat_bsky/convo/get_convo_availability.rs
··· 51 51 } 52 52 } 53 53 54 - impl jacquard_common::types::xrpc::XrpcRequest for GetConvoAvailability<'_> { 54 + impl<'de> jacquard_common::types::xrpc::XrpcRequest<'de> for GetConvoAvailability<'de> { 55 55 const NSID: &'static str = "chat.bsky.convo.getConvoAvailability"; 56 56 const METHOD: jacquard_common::types::xrpc::XrpcMethod = jacquard_common::types::xrpc::XrpcMethod::Query; 57 57 const OUTPUT_ENCODING: &'static str = "application/json"; 58 - type Output<'de> = GetConvoAvailabilityOutput<'de>; 59 - type Err<'de> = jacquard_common::types::xrpc::GenericError<'de>; 58 + type Output = GetConvoAvailabilityOutput<'de>; 59 + type Err = jacquard_common::types::xrpc::GenericError<'de>; 60 60 }
+3 -3
crates/jacquard-api/src/chat_bsky/convo/get_convo_for_members.rs
··· 48 48 } 49 49 } 50 50 51 - impl jacquard_common::types::xrpc::XrpcRequest for GetConvoForMembers<'_> { 51 + impl<'de> jacquard_common::types::xrpc::XrpcRequest<'de> for GetConvoForMembers<'de> { 52 52 const NSID: &'static str = "chat.bsky.convo.getConvoForMembers"; 53 53 const METHOD: jacquard_common::types::xrpc::XrpcMethod = jacquard_common::types::xrpc::XrpcMethod::Query; 54 54 const OUTPUT_ENCODING: &'static str = "application/json"; 55 - type Output<'de> = GetConvoForMembersOutput<'de>; 56 - type Err<'de> = jacquard_common::types::xrpc::GenericError<'de>; 55 + type Output = GetConvoForMembersOutput<'de>; 56 + type Err = jacquard_common::types::xrpc::GenericError<'de>; 57 57 }
+3 -3
crates/jacquard-api/src/chat_bsky/convo/get_log.rs
··· 54 54 } 55 55 } 56 56 57 - impl jacquard_common::types::xrpc::XrpcRequest for GetLog<'_> { 57 + impl<'de> jacquard_common::types::xrpc::XrpcRequest<'de> for GetLog<'de> { 58 58 const NSID: &'static str = "chat.bsky.convo.getLog"; 59 59 const METHOD: jacquard_common::types::xrpc::XrpcMethod = jacquard_common::types::xrpc::XrpcMethod::Query; 60 60 const OUTPUT_ENCODING: &'static str = "application/json"; 61 - type Output<'de> = GetLogOutput<'de>; 62 - type Err<'de> = jacquard_common::types::xrpc::GenericError<'de>; 61 + type Output = GetLogOutput<'de>; 62 + type Err = jacquard_common::types::xrpc::GenericError<'de>; 63 63 }
+3 -3
crates/jacquard-api/src/chat_bsky/convo/get_messages.rs
··· 62 62 } 63 63 } 64 64 65 - impl jacquard_common::types::xrpc::XrpcRequest for GetMessages<'_> { 65 + impl<'de> jacquard_common::types::xrpc::XrpcRequest<'de> for GetMessages<'de> { 66 66 const NSID: &'static str = "chat.bsky.convo.getMessages"; 67 67 const METHOD: jacquard_common::types::xrpc::XrpcMethod = jacquard_common::types::xrpc::XrpcMethod::Query; 68 68 const OUTPUT_ENCODING: &'static str = "application/json"; 69 - type Output<'de> = GetMessagesOutput<'de>; 70 - type Err<'de> = jacquard_common::types::xrpc::GenericError<'de>; 69 + type Output = GetMessagesOutput<'de>; 70 + type Err = jacquard_common::types::xrpc::GenericError<'de>; 71 71 }
+3 -3
crates/jacquard-api/src/chat_bsky/convo/leave_convo.rs
··· 61 61 } 62 62 } 63 63 64 - impl jacquard_common::types::xrpc::XrpcRequest for LeaveConvo<'_> { 64 + impl<'de> jacquard_common::types::xrpc::XrpcRequest<'de> for LeaveConvo<'de> { 65 65 const NSID: &'static str = "chat.bsky.convo.leaveConvo"; 66 66 const METHOD: jacquard_common::types::xrpc::XrpcMethod = jacquard_common::types::xrpc::XrpcMethod::Procedure( 67 67 "application/json", 68 68 ); 69 69 const OUTPUT_ENCODING: &'static str = "application/json"; 70 - type Output<'de> = LeaveConvoOutput<'de>; 71 - type Err<'de> = jacquard_common::types::xrpc::GenericError<'de>; 70 + type Output = LeaveConvoOutput<'de>; 71 + type Err = jacquard_common::types::xrpc::GenericError<'de>; 72 72 }
+3 -3
crates/jacquard-api/src/chat_bsky/convo/list_convos.rs
··· 68 68 } 69 69 } 70 70 71 - impl jacquard_common::types::xrpc::XrpcRequest for ListConvos<'_> { 71 + impl<'de> jacquard_common::types::xrpc::XrpcRequest<'de> for ListConvos<'de> { 72 72 const NSID: &'static str = "chat.bsky.convo.listConvos"; 73 73 const METHOD: jacquard_common::types::xrpc::XrpcMethod = jacquard_common::types::xrpc::XrpcMethod::Query; 74 74 const OUTPUT_ENCODING: &'static str = "application/json"; 75 - type Output<'de> = ListConvosOutput<'de>; 76 - type Err<'de> = jacquard_common::types::xrpc::GenericError<'de>; 75 + type Output = ListConvosOutput<'de>; 76 + type Err = jacquard_common::types::xrpc::GenericError<'de>; 77 77 }
+3 -3
crates/jacquard-api/src/chat_bsky/convo/mute_convo.rs
··· 58 58 } 59 59 } 60 60 61 - impl jacquard_common::types::xrpc::XrpcRequest for MuteConvo<'_> { 61 + impl<'de> jacquard_common::types::xrpc::XrpcRequest<'de> for MuteConvo<'de> { 62 62 const NSID: &'static str = "chat.bsky.convo.muteConvo"; 63 63 const METHOD: jacquard_common::types::xrpc::XrpcMethod = jacquard_common::types::xrpc::XrpcMethod::Procedure( 64 64 "application/json", 65 65 ); 66 66 const OUTPUT_ENCODING: &'static str = "application/json"; 67 - type Output<'de> = MuteConvoOutput<'de>; 68 - type Err<'de> = jacquard_common::types::xrpc::GenericError<'de>; 67 + type Output = MuteConvoOutput<'de>; 68 + type Err = jacquard_common::types::xrpc::GenericError<'de>; 69 69 }
+3 -3
crates/jacquard-api/src/chat_bsky/convo/remove_reaction.rs
··· 127 127 } 128 128 } 129 129 130 - impl jacquard_common::types::xrpc::XrpcRequest for RemoveReaction<'_> { 130 + impl<'de> jacquard_common::types::xrpc::XrpcRequest<'de> for RemoveReaction<'de> { 131 131 const NSID: &'static str = "chat.bsky.convo.removeReaction"; 132 132 const METHOD: jacquard_common::types::xrpc::XrpcMethod = jacquard_common::types::xrpc::XrpcMethod::Procedure( 133 133 "application/json", 134 134 ); 135 135 const OUTPUT_ENCODING: &'static str = "application/json"; 136 - type Output<'de> = RemoveReactionOutput<'de>; 137 - type Err<'de> = RemoveReactionError<'de>; 136 + type Output = RemoveReactionOutput<'de>; 137 + type Err = RemoveReactionError<'de>; 138 138 }
+3 -3
crates/jacquard-api/src/chat_bsky/convo/send_message.rs
··· 62 62 } 63 63 } 64 64 65 - impl jacquard_common::types::xrpc::XrpcRequest for SendMessage<'_> { 65 + impl<'de> jacquard_common::types::xrpc::XrpcRequest<'de> for SendMessage<'de> { 66 66 const NSID: &'static str = "chat.bsky.convo.sendMessage"; 67 67 const METHOD: jacquard_common::types::xrpc::XrpcMethod = jacquard_common::types::xrpc::XrpcMethod::Procedure( 68 68 "application/json", 69 69 ); 70 70 const OUTPUT_ENCODING: &'static str = "application/json"; 71 - type Output<'de> = SendMessageOutput<'de>; 72 - type Err<'de> = jacquard_common::types::xrpc::GenericError<'de>; 71 + type Output = SendMessageOutput<'de>; 72 + type Err = jacquard_common::types::xrpc::GenericError<'de>; 73 73 }
+3 -3
crates/jacquard-api/src/chat_bsky/convo/send_message_batch.rs
··· 78 78 } 79 79 } 80 80 81 - impl jacquard_common::types::xrpc::XrpcRequest for SendMessageBatch<'_> { 81 + impl<'de> jacquard_common::types::xrpc::XrpcRequest<'de> for SendMessageBatch<'de> { 82 82 const NSID: &'static str = "chat.bsky.convo.sendMessageBatch"; 83 83 const METHOD: jacquard_common::types::xrpc::XrpcMethod = jacquard_common::types::xrpc::XrpcMethod::Procedure( 84 84 "application/json", 85 85 ); 86 86 const OUTPUT_ENCODING: &'static str = "application/json"; 87 - type Output<'de> = SendMessageBatchOutput<'de>; 88 - type Err<'de> = jacquard_common::types::xrpc::GenericError<'de>; 87 + type Output = SendMessageBatchOutput<'de>; 88 + type Err = jacquard_common::types::xrpc::GenericError<'de>; 89 89 }
+3 -3
crates/jacquard-api/src/chat_bsky/convo/unmute_convo.rs
··· 58 58 } 59 59 } 60 60 61 - impl jacquard_common::types::xrpc::XrpcRequest for UnmuteConvo<'_> { 61 + impl<'de> jacquard_common::types::xrpc::XrpcRequest<'de> for UnmuteConvo<'de> { 62 62 const NSID: &'static str = "chat.bsky.convo.unmuteConvo"; 63 63 const METHOD: jacquard_common::types::xrpc::XrpcMethod = jacquard_common::types::xrpc::XrpcMethod::Procedure( 64 64 "application/json", 65 65 ); 66 66 const OUTPUT_ENCODING: &'static str = "application/json"; 67 - type Output<'de> = UnmuteConvoOutput<'de>; 68 - type Err<'de> = jacquard_common::types::xrpc::GenericError<'de>; 67 + type Output = UnmuteConvoOutput<'de>; 68 + type Err = jacquard_common::types::xrpc::GenericError<'de>; 69 69 }
+3 -3
crates/jacquard-api/src/chat_bsky/convo/update_all_read.rs
··· 59 59 } 60 60 } 61 61 62 - impl jacquard_common::types::xrpc::XrpcRequest for UpdateAllRead<'_> { 62 + impl<'de> jacquard_common::types::xrpc::XrpcRequest<'de> for UpdateAllRead<'de> { 63 63 const NSID: &'static str = "chat.bsky.convo.updateAllRead"; 64 64 const METHOD: jacquard_common::types::xrpc::XrpcMethod = jacquard_common::types::xrpc::XrpcMethod::Procedure( 65 65 "application/json", 66 66 ); 67 67 const OUTPUT_ENCODING: &'static str = "application/json"; 68 - type Output<'de> = UpdateAllReadOutput<'de>; 69 - type Err<'de> = jacquard_common::types::xrpc::GenericError<'de>; 68 + type Output = UpdateAllReadOutput<'de>; 69 + type Err = jacquard_common::types::xrpc::GenericError<'de>; 70 70 }
+3 -3
crates/jacquard-api/src/chat_bsky/convo/update_read.rs
··· 63 63 } 64 64 } 65 65 66 - impl jacquard_common::types::xrpc::XrpcRequest for UpdateRead<'_> { 66 + impl<'de> jacquard_common::types::xrpc::XrpcRequest<'de> for UpdateRead<'de> { 67 67 const NSID: &'static str = "chat.bsky.convo.updateRead"; 68 68 const METHOD: jacquard_common::types::xrpc::XrpcMethod = jacquard_common::types::xrpc::XrpcMethod::Procedure( 69 69 "application/json", 70 70 ); 71 71 const OUTPUT_ENCODING: &'static str = "application/json"; 72 - type Output<'de> = UpdateReadOutput<'de>; 73 - type Err<'de> = jacquard_common::types::xrpc::GenericError<'de>; 72 + type Output = UpdateReadOutput<'de>; 73 + type Err = jacquard_common::types::xrpc::GenericError<'de>; 74 74 }
+3 -3
crates/jacquard-api/src/chat_bsky/moderation/get_actor_metadata.rs
··· 54 54 } 55 55 } 56 56 57 - impl jacquard_common::types::xrpc::XrpcRequest for GetActorMetadata<'_> { 57 + impl<'de> jacquard_common::types::xrpc::XrpcRequest<'de> for GetActorMetadata<'de> { 58 58 const NSID: &'static str = "chat.bsky.moderation.getActorMetadata"; 59 59 const METHOD: jacquard_common::types::xrpc::XrpcMethod = jacquard_common::types::xrpc::XrpcMethod::Query; 60 60 const OUTPUT_ENCODING: &'static str = "application/json"; 61 - type Output<'de> = GetActorMetadataOutput<'de>; 62 - type Err<'de> = jacquard_common::types::xrpc::GenericError<'de>; 61 + type Output = GetActorMetadataOutput<'de>; 62 + type Err = jacquard_common::types::xrpc::GenericError<'de>; 63 63 } 64 64 65 65 #[jacquard_derive::lexicon]
+3 -3
crates/jacquard-api/src/chat_bsky/moderation/get_message_context.rs
··· 62 62 } 63 63 } 64 64 65 - impl jacquard_common::types::xrpc::XrpcRequest for GetMessageContext<'_> { 65 + impl<'de> jacquard_common::types::xrpc::XrpcRequest<'de> for GetMessageContext<'de> { 66 66 const NSID: &'static str = "chat.bsky.moderation.getMessageContext"; 67 67 const METHOD: jacquard_common::types::xrpc::XrpcMethod = jacquard_common::types::xrpc::XrpcMethod::Query; 68 68 const OUTPUT_ENCODING: &'static str = "application/json"; 69 - type Output<'de> = GetMessageContextOutput<'de>; 70 - type Err<'de> = jacquard_common::types::xrpc::GenericError<'de>; 69 + type Output = GetMessageContextOutput<'de>; 70 + type Err = jacquard_common::types::xrpc::GenericError<'de>; 71 71 }
+3 -3
crates/jacquard-api/src/chat_bsky/moderation/update_actor_access.rs
··· 46 46 } 47 47 } 48 48 49 - impl jacquard_common::types::xrpc::XrpcRequest for UpdateActorAccess<'_> { 49 + impl<'de> jacquard_common::types::xrpc::XrpcRequest<'de> for UpdateActorAccess<'de> { 50 50 const NSID: &'static str = "chat.bsky.moderation.updateActorAccess"; 51 51 const METHOD: jacquard_common::types::xrpc::XrpcMethod = jacquard_common::types::xrpc::XrpcMethod::Procedure( 52 52 "application/json", 53 53 ); 54 54 const OUTPUT_ENCODING: &'static str = "application/json"; 55 - type Output<'de> = (); 56 - type Err<'de> = jacquard_common::types::xrpc::GenericError<'de>; 55 + type Output = (); 56 + type Err = jacquard_common::types::xrpc::GenericError<'de>; 57 57 }
+3 -3
crates/jacquard-api/src/com_atproto/admin/delete_account.rs
··· 39 39 } 40 40 } 41 41 42 - impl jacquard_common::types::xrpc::XrpcRequest for DeleteAccount<'_> { 42 + impl<'de> jacquard_common::types::xrpc::XrpcRequest<'de> for DeleteAccount<'de> { 43 43 const NSID: &'static str = "com.atproto.admin.deleteAccount"; 44 44 const METHOD: jacquard_common::types::xrpc::XrpcMethod = jacquard_common::types::xrpc::XrpcMethod::Procedure( 45 45 "application/json", 46 46 ); 47 47 const OUTPUT_ENCODING: &'static str = "application/json"; 48 - type Output<'de> = (); 49 - type Err<'de> = jacquard_common::types::xrpc::GenericError<'de>; 48 + type Output = (); 49 + type Err = jacquard_common::types::xrpc::GenericError<'de>; 50 50 }
+3 -3
crates/jacquard-api/src/com_atproto/admin/disable_account_invites.rs
··· 45 45 } 46 46 } 47 47 48 - impl jacquard_common::types::xrpc::XrpcRequest for DisableAccountInvites<'_> { 48 + impl<'de> jacquard_common::types::xrpc::XrpcRequest<'de> for DisableAccountInvites<'de> { 49 49 const NSID: &'static str = "com.atproto.admin.disableAccountInvites"; 50 50 const METHOD: jacquard_common::types::xrpc::XrpcMethod = jacquard_common::types::xrpc::XrpcMethod::Procedure( 51 51 "application/json", 52 52 ); 53 53 const OUTPUT_ENCODING: &'static str = "application/json"; 54 - type Output<'de> = (); 55 - type Err<'de> = jacquard_common::types::xrpc::GenericError<'de>; 54 + type Output = (); 55 + type Err = jacquard_common::types::xrpc::GenericError<'de>; 56 56 }
+3 -3
crates/jacquard-api/src/com_atproto/admin/disable_invite_codes.rs
··· 44 44 } 45 45 } 46 46 47 - impl jacquard_common::types::xrpc::XrpcRequest for DisableInviteCodes<'_> { 47 + impl<'de> jacquard_common::types::xrpc::XrpcRequest<'de> for DisableInviteCodes<'de> { 48 48 const NSID: &'static str = "com.atproto.admin.disableInviteCodes"; 49 49 const METHOD: jacquard_common::types::xrpc::XrpcMethod = jacquard_common::types::xrpc::XrpcMethod::Procedure( 50 50 "application/json", 51 51 ); 52 52 const OUTPUT_ENCODING: &'static str = "application/json"; 53 - type Output<'de> = (); 54 - type Err<'de> = jacquard_common::types::xrpc::GenericError<'de>; 53 + type Output = (); 54 + type Err = jacquard_common::types::xrpc::GenericError<'de>; 55 55 }
+3 -3
crates/jacquard-api/src/com_atproto/admin/enable_account_invites.rs
··· 45 45 } 46 46 } 47 47 48 - impl jacquard_common::types::xrpc::XrpcRequest for EnableAccountInvites<'_> { 48 + impl<'de> jacquard_common::types::xrpc::XrpcRequest<'de> for EnableAccountInvites<'de> { 49 49 const NSID: &'static str = "com.atproto.admin.enableAccountInvites"; 50 50 const METHOD: jacquard_common::types::xrpc::XrpcMethod = jacquard_common::types::xrpc::XrpcMethod::Procedure( 51 51 "application/json", 52 52 ); 53 53 const OUTPUT_ENCODING: &'static str = "application/json"; 54 - type Output<'de> = (); 55 - type Err<'de> = jacquard_common::types::xrpc::GenericError<'de>; 54 + type Output = (); 55 + type Err = jacquard_common::types::xrpc::GenericError<'de>; 56 56 }
+3 -3
crates/jacquard-api/src/com_atproto/admin/get_account_info.rs
··· 49 49 } 50 50 } 51 51 52 - impl jacquard_common::types::xrpc::XrpcRequest for GetAccountInfo<'_> { 52 + impl<'de> jacquard_common::types::xrpc::XrpcRequest<'de> for GetAccountInfo<'de> { 53 53 const NSID: &'static str = "com.atproto.admin.getAccountInfo"; 54 54 const METHOD: jacquard_common::types::xrpc::XrpcMethod = jacquard_common::types::xrpc::XrpcMethod::Query; 55 55 const OUTPUT_ENCODING: &'static str = "application/json"; 56 - type Output<'de> = GetAccountInfoOutput<'de>; 57 - type Err<'de> = jacquard_common::types::xrpc::GenericError<'de>; 56 + type Output = GetAccountInfoOutput<'de>; 57 + type Err = jacquard_common::types::xrpc::GenericError<'de>; 58 58 }
+3 -3
crates/jacquard-api/src/com_atproto/admin/get_account_infos.rs
··· 48 48 } 49 49 } 50 50 51 - impl jacquard_common::types::xrpc::XrpcRequest for GetAccountInfos<'_> { 51 + impl<'de> jacquard_common::types::xrpc::XrpcRequest<'de> for GetAccountInfos<'de> { 52 52 const NSID: &'static str = "com.atproto.admin.getAccountInfos"; 53 53 const METHOD: jacquard_common::types::xrpc::XrpcMethod = jacquard_common::types::xrpc::XrpcMethod::Query; 54 54 const OUTPUT_ENCODING: &'static str = "application/json"; 55 - type Output<'de> = GetAccountInfosOutput<'de>; 56 - type Err<'de> = jacquard_common::types::xrpc::GenericError<'de>; 55 + type Output = GetAccountInfosOutput<'de>; 56 + type Err = jacquard_common::types::xrpc::GenericError<'de>; 57 57 }
+3 -3
crates/jacquard-api/src/com_atproto/admin/get_invite_codes.rs
··· 64 64 } 65 65 } 66 66 67 - impl jacquard_common::types::xrpc::XrpcRequest for GetInviteCodes<'_> { 67 + impl<'de> jacquard_common::types::xrpc::XrpcRequest<'de> for GetInviteCodes<'de> { 68 68 const NSID: &'static str = "com.atproto.admin.getInviteCodes"; 69 69 const METHOD: jacquard_common::types::xrpc::XrpcMethod = jacquard_common::types::xrpc::XrpcMethod::Query; 70 70 const OUTPUT_ENCODING: &'static str = "application/json"; 71 - type Output<'de> = GetInviteCodesOutput<'de>; 72 - type Err<'de> = jacquard_common::types::xrpc::GenericError<'de>; 71 + type Output = GetInviteCodesOutput<'de>; 72 + type Err = jacquard_common::types::xrpc::GenericError<'de>; 73 73 }
+3 -3
crates/jacquard-api/src/com_atproto/admin/get_subject_status.rs
··· 98 98 } 99 99 } 100 100 101 - impl jacquard_common::types::xrpc::XrpcRequest for GetSubjectStatus<'_> { 101 + impl<'de> jacquard_common::types::xrpc::XrpcRequest<'de> for GetSubjectStatus<'de> { 102 102 const NSID: &'static str = "com.atproto.admin.getSubjectStatus"; 103 103 const METHOD: jacquard_common::types::xrpc::XrpcMethod = jacquard_common::types::xrpc::XrpcMethod::Query; 104 104 const OUTPUT_ENCODING: &'static str = "application/json"; 105 - type Output<'de> = GetSubjectStatusOutput<'de>; 106 - type Err<'de> = jacquard_common::types::xrpc::GenericError<'de>; 105 + type Output = GetSubjectStatusOutput<'de>; 106 + type Err = jacquard_common::types::xrpc::GenericError<'de>; 107 107 }
+3 -3
crates/jacquard-api/src/com_atproto/admin/search_accounts.rs
··· 63 63 } 64 64 } 65 65 66 - impl jacquard_common::types::xrpc::XrpcRequest for SearchAccounts<'_> { 66 + impl<'de> jacquard_common::types::xrpc::XrpcRequest<'de> for SearchAccounts<'de> { 67 67 const NSID: &'static str = "com.atproto.admin.searchAccounts"; 68 68 const METHOD: jacquard_common::types::xrpc::XrpcMethod = jacquard_common::types::xrpc::XrpcMethod::Query; 69 69 const OUTPUT_ENCODING: &'static str = "application/json"; 70 - type Output<'de> = SearchAccountsOutput<'de>; 71 - type Err<'de> = jacquard_common::types::xrpc::GenericError<'de>; 70 + type Output = SearchAccountsOutput<'de>; 71 + type Err = jacquard_common::types::xrpc::GenericError<'de>; 72 72 }
+3 -3
crates/jacquard-api/src/com_atproto/admin/send_email.rs
··· 74 74 } 75 75 } 76 76 77 - impl jacquard_common::types::xrpc::XrpcRequest for SendEmail<'_> { 77 + impl<'de> jacquard_common::types::xrpc::XrpcRequest<'de> for SendEmail<'de> { 78 78 const NSID: &'static str = "com.atproto.admin.sendEmail"; 79 79 const METHOD: jacquard_common::types::xrpc::XrpcMethod = jacquard_common::types::xrpc::XrpcMethod::Procedure( 80 80 "application/json", 81 81 ); 82 82 const OUTPUT_ENCODING: &'static str = "application/json"; 83 - type Output<'de> = SendEmailOutput<'de>; 84 - type Err<'de> = jacquard_common::types::xrpc::GenericError<'de>; 83 + type Output = SendEmailOutput<'de>; 84 + type Err = jacquard_common::types::xrpc::GenericError<'de>; 85 85 }
+3 -3
crates/jacquard-api/src/com_atproto/admin/update_account_email.rs
··· 44 44 } 45 45 } 46 46 47 - impl jacquard_common::types::xrpc::XrpcRequest for UpdateAccountEmail<'_> { 47 + impl<'de> jacquard_common::types::xrpc::XrpcRequest<'de> for UpdateAccountEmail<'de> { 48 48 const NSID: &'static str = "com.atproto.admin.updateAccountEmail"; 49 49 const METHOD: jacquard_common::types::xrpc::XrpcMethod = jacquard_common::types::xrpc::XrpcMethod::Procedure( 50 50 "application/json", 51 51 ); 52 52 const OUTPUT_ENCODING: &'static str = "application/json"; 53 - type Output<'de> = (); 54 - type Err<'de> = jacquard_common::types::xrpc::GenericError<'de>; 53 + type Output = (); 54 + type Err = jacquard_common::types::xrpc::GenericError<'de>; 55 55 }
+3 -3
crates/jacquard-api/src/com_atproto/admin/update_account_handle.rs
··· 42 42 } 43 43 } 44 44 45 - impl jacquard_common::types::xrpc::XrpcRequest for UpdateAccountHandle<'_> { 45 + impl<'de> jacquard_common::types::xrpc::XrpcRequest<'de> for UpdateAccountHandle<'de> { 46 46 const NSID: &'static str = "com.atproto.admin.updateAccountHandle"; 47 47 const METHOD: jacquard_common::types::xrpc::XrpcMethod = jacquard_common::types::xrpc::XrpcMethod::Procedure( 48 48 "application/json", 49 49 ); 50 50 const OUTPUT_ENCODING: &'static str = "application/json"; 51 - type Output<'de> = (); 52 - type Err<'de> = jacquard_common::types::xrpc::GenericError<'de>; 51 + type Output = (); 52 + type Err = jacquard_common::types::xrpc::GenericError<'de>; 53 53 }
+3 -3
crates/jacquard-api/src/com_atproto/admin/update_account_password.rs
··· 43 43 } 44 44 } 45 45 46 - impl jacquard_common::types::xrpc::XrpcRequest for UpdateAccountPassword<'_> { 46 + impl<'de> jacquard_common::types::xrpc::XrpcRequest<'de> for UpdateAccountPassword<'de> { 47 47 const NSID: &'static str = "com.atproto.admin.updateAccountPassword"; 48 48 const METHOD: jacquard_common::types::xrpc::XrpcMethod = jacquard_common::types::xrpc::XrpcMethod::Procedure( 49 49 "application/json", 50 50 ); 51 51 const OUTPUT_ENCODING: &'static str = "application/json"; 52 - type Output<'de> = (); 53 - type Err<'de> = jacquard_common::types::xrpc::GenericError<'de>; 52 + type Output = (); 53 + type Err = jacquard_common::types::xrpc::GenericError<'de>; 54 54 }
+4 -3
crates/jacquard-api/src/com_atproto/admin/update_account_signing_key.rs
··· 43 43 } 44 44 } 45 45 46 - impl jacquard_common::types::xrpc::XrpcRequest for UpdateAccountSigningKey<'_> { 46 + impl<'de> jacquard_common::types::xrpc::XrpcRequest<'de> 47 + for UpdateAccountSigningKey<'de> { 47 48 const NSID: &'static str = "com.atproto.admin.updateAccountSigningKey"; 48 49 const METHOD: jacquard_common::types::xrpc::XrpcMethod = jacquard_common::types::xrpc::XrpcMethod::Procedure( 49 50 "application/json", 50 51 ); 51 52 const OUTPUT_ENCODING: &'static str = "application/json"; 52 - type Output<'de> = (); 53 - type Err<'de> = jacquard_common::types::xrpc::GenericError<'de>; 53 + type Output = (); 54 + type Err = jacquard_common::types::xrpc::GenericError<'de>; 54 55 }
+3 -3
crates/jacquard-api/src/com_atproto/admin/update_subject_status.rs
··· 135 135 } 136 136 } 137 137 138 - impl jacquard_common::types::xrpc::XrpcRequest for UpdateSubjectStatus<'_> { 138 + impl<'de> jacquard_common::types::xrpc::XrpcRequest<'de> for UpdateSubjectStatus<'de> { 139 139 const NSID: &'static str = "com.atproto.admin.updateSubjectStatus"; 140 140 const METHOD: jacquard_common::types::xrpc::XrpcMethod = jacquard_common::types::xrpc::XrpcMethod::Procedure( 141 141 "application/json", 142 142 ); 143 143 const OUTPUT_ENCODING: &'static str = "application/json"; 144 - type Output<'de> = UpdateSubjectStatusOutput<'de>; 145 - type Err<'de> = jacquard_common::types::xrpc::GenericError<'de>; 144 + type Output = UpdateSubjectStatusOutput<'de>; 145 + type Err = jacquard_common::types::xrpc::GenericError<'de>; 146 146 }
+3 -3
crates/jacquard-api/src/com_atproto/identity/refresh_identity.rs
··· 132 132 } 133 133 } 134 134 135 - impl jacquard_common::types::xrpc::XrpcRequest for RefreshIdentity<'_> { 135 + impl<'de> jacquard_common::types::xrpc::XrpcRequest<'de> for RefreshIdentity<'de> { 136 136 const NSID: &'static str = "com.atproto.identity.refreshIdentity"; 137 137 const METHOD: jacquard_common::types::xrpc::XrpcMethod = jacquard_common::types::xrpc::XrpcMethod::Procedure( 138 138 "application/json", 139 139 ); 140 140 const OUTPUT_ENCODING: &'static str = "application/json"; 141 - type Output<'de> = RefreshIdentityOutput<'de>; 142 - type Err<'de> = RefreshIdentityError<'de>; 141 + type Output = RefreshIdentityOutput<'de>; 142 + type Err = RefreshIdentityError<'de>; 143 143 }
+5 -4
crates/jacquard-api/src/com_atproto/identity/request_plc_operation_signature.rs
··· 6 6 // Any manual changes will be overwritten on the next regeneration. 7 7 8 8 /// XRPC request marker type 9 - #[derive(Debug, Clone, Copy, PartialEq, Eq, serde::Serialize)] 9 + #[derive(Debug, Clone, Copy, PartialEq, Eq, serde::Serialize, serde::Deserialize)] 10 10 pub struct RequestPlcOperationSignature; 11 - impl jacquard_common::types::xrpc::XrpcRequest for RequestPlcOperationSignature { 11 + impl<'de> jacquard_common::types::xrpc::XrpcRequest<'de> 12 + for RequestPlcOperationSignature { 12 13 const NSID: &'static str = "com.atproto.identity.requestPlcOperationSignature"; 13 14 const METHOD: jacquard_common::types::xrpc::XrpcMethod = jacquard_common::types::xrpc::XrpcMethod::Procedure( 14 15 "application/json", 15 16 ); 16 17 const OUTPUT_ENCODING: &'static str = "application/json"; 17 - type Output<'de> = (); 18 - type Err<'de> = jacquard_common::types::xrpc::GenericError<'de>; 18 + type Output = (); 19 + type Err = jacquard_common::types::xrpc::GenericError<'de>; 19 20 }
+3 -3
crates/jacquard-api/src/com_atproto/identity/resolve_did.rs
··· 108 108 } 109 109 } 110 110 111 - impl jacquard_common::types::xrpc::XrpcRequest for ResolveDid<'_> { 111 + impl<'de> jacquard_common::types::xrpc::XrpcRequest<'de> for ResolveDid<'de> { 112 112 const NSID: &'static str = "com.atproto.identity.resolveDid"; 113 113 const METHOD: jacquard_common::types::xrpc::XrpcMethod = jacquard_common::types::xrpc::XrpcMethod::Query; 114 114 const OUTPUT_ENCODING: &'static str = "application/json"; 115 - type Output<'de> = ResolveDidOutput<'de>; 116 - type Err<'de> = ResolveDidError<'de>; 115 + type Output = ResolveDidOutput<'de>; 116 + type Err = ResolveDidError<'de>; 117 117 }
+3 -3
crates/jacquard-api/src/com_atproto/identity/resolve_handle.rs
··· 96 96 } 97 97 } 98 98 99 - impl jacquard_common::types::xrpc::XrpcRequest for ResolveHandle<'_> { 99 + impl<'de> jacquard_common::types::xrpc::XrpcRequest<'de> for ResolveHandle<'de> { 100 100 const NSID: &'static str = "com.atproto.identity.resolveHandle"; 101 101 const METHOD: jacquard_common::types::xrpc::XrpcMethod = jacquard_common::types::xrpc::XrpcMethod::Query; 102 102 const OUTPUT_ENCODING: &'static str = "application/json"; 103 - type Output<'de> = ResolveHandleOutput<'de>; 104 - type Err<'de> = ResolveHandleError<'de>; 103 + type Output = ResolveHandleOutput<'de>; 104 + type Err = ResolveHandleError<'de>; 105 105 }
+3 -3
crates/jacquard-api/src/com_atproto/identity/resolve_identity.rs
··· 123 123 } 124 124 } 125 125 126 - impl jacquard_common::types::xrpc::XrpcRequest for ResolveIdentity<'_> { 126 + impl<'de> jacquard_common::types::xrpc::XrpcRequest<'de> for ResolveIdentity<'de> { 127 127 const NSID: &'static str = "com.atproto.identity.resolveIdentity"; 128 128 const METHOD: jacquard_common::types::xrpc::XrpcMethod = jacquard_common::types::xrpc::XrpcMethod::Query; 129 129 const OUTPUT_ENCODING: &'static str = "application/json"; 130 - type Output<'de> = ResolveIdentityOutput<'de>; 131 - type Err<'de> = ResolveIdentityError<'de>; 130 + type Output = ResolveIdentityOutput<'de>; 131 + type Err = ResolveIdentityError<'de>; 132 132 }
+3 -3
crates/jacquard-api/src/com_atproto/identity/sign_plc_operation.rs
··· 79 79 } 80 80 } 81 81 82 - impl jacquard_common::types::xrpc::XrpcRequest for SignPlcOperation<'_> { 82 + impl<'de> jacquard_common::types::xrpc::XrpcRequest<'de> for SignPlcOperation<'de> { 83 83 const NSID: &'static str = "com.atproto.identity.signPlcOperation"; 84 84 const METHOD: jacquard_common::types::xrpc::XrpcMethod = jacquard_common::types::xrpc::XrpcMethod::Procedure( 85 85 "application/json", 86 86 ); 87 87 const OUTPUT_ENCODING: &'static str = "application/json"; 88 - type Output<'de> = SignPlcOperationOutput<'de>; 89 - type Err<'de> = jacquard_common::types::xrpc::GenericError<'de>; 88 + type Output = SignPlcOperationOutput<'de>; 89 + type Err = jacquard_common::types::xrpc::GenericError<'de>; 90 90 }
+3 -3
crates/jacquard-api/src/com_atproto/identity/submit_plc_operation.rs
··· 39 39 } 40 40 } 41 41 42 - impl jacquard_common::types::xrpc::XrpcRequest for SubmitPlcOperation<'_> { 42 + impl<'de> jacquard_common::types::xrpc::XrpcRequest<'de> for SubmitPlcOperation<'de> { 43 43 const NSID: &'static str = "com.atproto.identity.submitPlcOperation"; 44 44 const METHOD: jacquard_common::types::xrpc::XrpcMethod = jacquard_common::types::xrpc::XrpcMethod::Procedure( 45 45 "application/json", 46 46 ); 47 47 const OUTPUT_ENCODING: &'static str = "application/json"; 48 - type Output<'de> = (); 49 - type Err<'de> = jacquard_common::types::xrpc::GenericError<'de>; 48 + type Output = (); 49 + type Err = jacquard_common::types::xrpc::GenericError<'de>; 50 50 }
+3 -3
crates/jacquard-api/src/com_atproto/identity/update_handle.rs
··· 40 40 } 41 41 } 42 42 43 - impl jacquard_common::types::xrpc::XrpcRequest for UpdateHandle<'_> { 43 + impl<'de> jacquard_common::types::xrpc::XrpcRequest<'de> for UpdateHandle<'de> { 44 44 const NSID: &'static str = "com.atproto.identity.updateHandle"; 45 45 const METHOD: jacquard_common::types::xrpc::XrpcMethod = jacquard_common::types::xrpc::XrpcMethod::Procedure( 46 46 "application/json", 47 47 ); 48 48 const OUTPUT_ENCODING: &'static str = "application/json"; 49 - type Output<'de> = (); 50 - type Err<'de> = jacquard_common::types::xrpc::GenericError<'de>; 49 + type Output = (); 50 + type Err = jacquard_common::types::xrpc::GenericError<'de>; 51 51 }
+3 -3
crates/jacquard-api/src/com_atproto/label/query_labels.rs
··· 65 65 } 66 66 } 67 67 68 - impl jacquard_common::types::xrpc::XrpcRequest for QueryLabels<'_> { 68 + impl<'de> jacquard_common::types::xrpc::XrpcRequest<'de> for QueryLabels<'de> { 69 69 const NSID: &'static str = "com.atproto.label.queryLabels"; 70 70 const METHOD: jacquard_common::types::xrpc::XrpcMethod = jacquard_common::types::xrpc::XrpcMethod::Query; 71 71 const OUTPUT_ENCODING: &'static str = "application/json"; 72 - type Output<'de> = QueryLabelsOutput<'de>; 73 - type Err<'de> = jacquard_common::types::xrpc::GenericError<'de>; 72 + type Output = QueryLabelsOutput<'de>; 73 + type Err = jacquard_common::types::xrpc::GenericError<'de>; 74 74 }
+3 -3
crates/jacquard-api/src/com_atproto/moderation/create_report.rs
··· 141 141 } 142 142 } 143 143 144 - impl jacquard_common::types::xrpc::XrpcRequest for CreateReport<'_> { 144 + impl<'de> jacquard_common::types::xrpc::XrpcRequest<'de> for CreateReport<'de> { 145 145 const NSID: &'static str = "com.atproto.moderation.createReport"; 146 146 const METHOD: jacquard_common::types::xrpc::XrpcMethod = jacquard_common::types::xrpc::XrpcMethod::Procedure( 147 147 "application/json", 148 148 ); 149 149 const OUTPUT_ENCODING: &'static str = "application/json"; 150 - type Output<'de> = CreateReportOutput<'de>; 151 - type Err<'de> = jacquard_common::types::xrpc::GenericError<'de>; 150 + type Output = CreateReportOutput<'de>; 151 + type Err = jacquard_common::types::xrpc::GenericError<'de>; 152 152 } 153 153 154 154 ///Moderation tool information for tracing the source of the action
+3 -3
crates/jacquard-api/src/com_atproto/repo/apply_writes.rs
··· 214 214 } 215 215 } 216 216 217 - impl jacquard_common::types::xrpc::XrpcRequest for ApplyWrites<'_> { 217 + impl<'de> jacquard_common::types::xrpc::XrpcRequest<'de> for ApplyWrites<'de> { 218 218 const NSID: &'static str = "com.atproto.repo.applyWrites"; 219 219 const METHOD: jacquard_common::types::xrpc::XrpcMethod = jacquard_common::types::xrpc::XrpcMethod::Procedure( 220 220 "application/json", 221 221 ); 222 222 const OUTPUT_ENCODING: &'static str = "application/json"; 223 - type Output<'de> = ApplyWritesOutput<'de>; 224 - type Err<'de> = ApplyWritesError<'de>; 223 + type Output = ApplyWritesOutput<'de>; 224 + type Err = ApplyWritesError<'de>; 225 225 } 226 226 227 227 ///Operation which updates an existing record.
+3 -3
crates/jacquard-api/src/com_atproto/repo/create_record.rs
··· 141 141 } 142 142 } 143 143 144 - impl jacquard_common::types::xrpc::XrpcRequest for CreateRecord<'_> { 144 + impl<'de> jacquard_common::types::xrpc::XrpcRequest<'de> for CreateRecord<'de> { 145 145 const NSID: &'static str = "com.atproto.repo.createRecord"; 146 146 const METHOD: jacquard_common::types::xrpc::XrpcMethod = jacquard_common::types::xrpc::XrpcMethod::Procedure( 147 147 "application/json", 148 148 ); 149 149 const OUTPUT_ENCODING: &'static str = "application/json"; 150 - type Output<'de> = CreateRecordOutput<'de>; 151 - type Err<'de> = CreateRecordError<'de>; 150 + type Output = CreateRecordOutput<'de>; 151 + type Err = CreateRecordError<'de>; 152 152 }
+3 -3
crates/jacquard-api/src/com_atproto/repo/delete_record.rs
··· 124 124 } 125 125 } 126 126 127 - impl jacquard_common::types::xrpc::XrpcRequest for DeleteRecord<'_> { 127 + impl<'de> jacquard_common::types::xrpc::XrpcRequest<'de> for DeleteRecord<'de> { 128 128 const NSID: &'static str = "com.atproto.repo.deleteRecord"; 129 129 const METHOD: jacquard_common::types::xrpc::XrpcMethod = jacquard_common::types::xrpc::XrpcMethod::Procedure( 130 130 "application/json", 131 131 ); 132 132 const OUTPUT_ENCODING: &'static str = "application/json"; 133 - type Output<'de> = DeleteRecordOutput<'de>; 134 - type Err<'de> = DeleteRecordError<'de>; 133 + type Output = DeleteRecordOutput<'de>; 134 + type Err = DeleteRecordError<'de>; 135 135 }
+3 -3
crates/jacquard-api/src/com_atproto/repo/describe_repo.rs
··· 62 62 } 63 63 } 64 64 65 - impl jacquard_common::types::xrpc::XrpcRequest for DescribeRepo<'_> { 65 + impl<'de> jacquard_common::types::xrpc::XrpcRequest<'de> for DescribeRepo<'de> { 66 66 const NSID: &'static str = "com.atproto.repo.describeRepo"; 67 67 const METHOD: jacquard_common::types::xrpc::XrpcMethod = jacquard_common::types::xrpc::XrpcMethod::Query; 68 68 const OUTPUT_ENCODING: &'static str = "application/json"; 69 - type Output<'de> = DescribeRepoOutput<'de>; 70 - type Err<'de> = jacquard_common::types::xrpc::GenericError<'de>; 69 + type Output = DescribeRepoOutput<'de>; 70 + type Err = jacquard_common::types::xrpc::GenericError<'de>; 71 71 }
+3 -3
crates/jacquard-api/src/com_atproto/repo/get_record.rs
··· 112 112 } 113 113 } 114 114 115 - impl jacquard_common::types::xrpc::XrpcRequest for GetRecord<'_> { 115 + impl<'de> jacquard_common::types::xrpc::XrpcRequest<'de> for GetRecord<'de> { 116 116 const NSID: &'static str = "com.atproto.repo.getRecord"; 117 117 const METHOD: jacquard_common::types::xrpc::XrpcMethod = jacquard_common::types::xrpc::XrpcMethod::Query; 118 118 const OUTPUT_ENCODING: &'static str = "application/json"; 119 - type Output<'de> = GetRecordOutput<'de>; 120 - type Err<'de> = GetRecordError<'de>; 119 + type Output = GetRecordOutput<'de>; 120 + type Err = GetRecordError<'de>; 121 121 }
+13 -3
crates/jacquard-api/src/com_atproto/repo/import_repo.rs
··· 27 27 } 28 28 } 29 29 30 - impl jacquard_common::types::xrpc::XrpcRequest for ImportRepo { 30 + impl<'de> jacquard_common::types::xrpc::XrpcRequest<'de> for ImportRepo { 31 31 const NSID: &'static str = "com.atproto.repo.importRepo"; 32 32 const METHOD: jacquard_common::types::xrpc::XrpcMethod = jacquard_common::types::xrpc::XrpcMethod::Procedure( 33 33 "application/vnd.ipld.car", 34 34 ); 35 35 const OUTPUT_ENCODING: &'static str = "application/json"; 36 - type Output<'de> = (); 37 - type Err<'de> = jacquard_common::types::xrpc::GenericError<'de>; 36 + type Output = (); 37 + type Err = jacquard_common::types::xrpc::GenericError<'de>; 38 38 fn encode_body(&self) -> Result<Vec<u8>, jacquard_common::types::xrpc::EncodeError> { 39 39 Ok(self.body.to_vec()) 40 + } 41 + fn decode_body( 42 + &self, 43 + body: &'de [u8], 44 + ) -> Result<Box<Self>, jacquard_common::error::DecodeError> { 45 + Ok( 46 + Box::new(Self { 47 + body: bytes::Bytes::copy_from_slice(body), 48 + }), 49 + ) 40 50 } 41 51 }
+3 -3
crates/jacquard-api/src/com_atproto/repo/list_missing_blobs.rs
··· 58 58 } 59 59 } 60 60 61 - impl jacquard_common::types::xrpc::XrpcRequest for ListMissingBlobs<'_> { 61 + impl<'de> jacquard_common::types::xrpc::XrpcRequest<'de> for ListMissingBlobs<'de> { 62 62 const NSID: &'static str = "com.atproto.repo.listMissingBlobs"; 63 63 const METHOD: jacquard_common::types::xrpc::XrpcMethod = jacquard_common::types::xrpc::XrpcMethod::Query; 64 64 const OUTPUT_ENCODING: &'static str = "application/json"; 65 - type Output<'de> = ListMissingBlobsOutput<'de>; 66 - type Err<'de> = jacquard_common::types::xrpc::GenericError<'de>; 65 + type Output = ListMissingBlobsOutput<'de>; 66 + type Err = jacquard_common::types::xrpc::GenericError<'de>; 67 67 } 68 68 69 69 #[jacquard_derive::lexicon]
+3 -3
crates/jacquard-api/src/com_atproto/repo/list_records.rs
··· 67 67 } 68 68 } 69 69 70 - impl jacquard_common::types::xrpc::XrpcRequest for ListRecords<'_> { 70 + impl<'de> jacquard_common::types::xrpc::XrpcRequest<'de> for ListRecords<'de> { 71 71 const NSID: &'static str = "com.atproto.repo.listRecords"; 72 72 const METHOD: jacquard_common::types::xrpc::XrpcMethod = jacquard_common::types::xrpc::XrpcMethod::Query; 73 73 const OUTPUT_ENCODING: &'static str = "application/json"; 74 - type Output<'de> = ListRecordsOutput<'de>; 75 - type Err<'de> = jacquard_common::types::xrpc::GenericError<'de>; 74 + type Output = ListRecordsOutput<'de>; 75 + type Err = jacquard_common::types::xrpc::GenericError<'de>; 76 76 } 77 77 78 78 #[jacquard_derive::lexicon]
+10 -23
crates/jacquard-api/src/com_atproto/repo/put_record.rs
··· 6 6 // Any manual changes will be overwritten on the next regeneration. 7 7 8 8 #[jacquard_derive::lexicon] 9 - #[derive( 10 - serde::Serialize, 11 - serde::Deserialize, 12 - Debug, 13 - Clone, 14 - PartialEq, 15 - Eq, 16 - bon::Builder 17 - )] 9 + #[derive(serde::Serialize, serde::Deserialize, Debug, Clone, PartialEq, Eq, bon::Builder)] 18 10 #[serde(rename_all = "camelCase")] 19 11 #[builder(start_fn = new)] 20 12 pub struct PutRecord<'a> { ··· 29 21 pub repo: jacquard_common::types::ident::AtIdentifier<'a>, 30 22 ///The Record Key. 31 23 #[serde(borrow)] 32 - pub rkey: jacquard_common::types::string::RecordKey< 33 - jacquard_common::types::string::Rkey<'a>, 34 - >, 24 + pub rkey: jacquard_common::types::string::RecordKey<jacquard_common::types::string::Rkey<'a>>, 35 25 ///Compare and swap with the previous commit by CID. 36 26 #[serde(skip_serializing_if = "std::option::Option::is_none")] 37 27 #[serde(borrow)] ··· 106 96 PartialEq, 107 97 Eq, 108 98 thiserror::Error, 109 - miette::Diagnostic 99 + miette::Diagnostic, 110 100 )] 111 101 #[serde(tag = "error", content = "message")] 112 102 #[serde(bound(deserialize = "'de: 'a"))] ··· 134 124 type Output = PutRecordError<'static>; 135 125 fn into_static(self) -> Self::Output { 136 126 match self { 137 - PutRecordError::InvalidSwap(v) => { 138 - PutRecordError::InvalidSwap(v.into_static()) 139 - } 127 + PutRecordError::InvalidSwap(v) => PutRecordError::InvalidSwap(v.into_static()), 140 128 PutRecordError::Unknown(v) => PutRecordError::Unknown(v.into_static()), 141 129 } 142 130 } 143 131 } 144 132 145 - impl jacquard_common::types::xrpc::XrpcRequest for PutRecord<'_> { 133 + impl<'de> jacquard_common::types::xrpc::XrpcRequest<'de> for PutRecord<'de> { 146 134 const NSID: &'static str = "com.atproto.repo.putRecord"; 147 - const METHOD: jacquard_common::types::xrpc::XrpcMethod = jacquard_common::types::xrpc::XrpcMethod::Procedure( 148 - "application/json", 149 - ); 135 + const METHOD: jacquard_common::types::xrpc::XrpcMethod = 136 + jacquard_common::types::xrpc::XrpcMethod::Procedure("application/json"); 150 137 const OUTPUT_ENCODING: &'static str = "application/json"; 151 - type Output<'de> = PutRecordOutput<'de>; 152 - type Err<'de> = PutRecordError<'de>; 153 - } 138 + type Output = PutRecordOutput<'de>; 139 + type Err = PutRecordError<'de>; 140 + }
+15 -16
crates/jacquard-api/src/com_atproto/repo/upload_blob.rs
··· 5 5 // This file was automatically generated from Lexicon schemas. 6 6 // Any manual changes will be overwritten on the next regeneration. 7 7 8 - #[derive( 9 - serde::Serialize, 10 - serde::Deserialize, 11 - Debug, 12 - Clone, 13 - PartialEq, 14 - Eq, 15 - bon::Builder 16 - )] 8 + #[derive(serde::Serialize, serde::Deserialize, Debug, Clone, PartialEq, Eq, bon::Builder)] 17 9 #[builder(start_fn = new)] 18 10 #[serde(rename_all = "camelCase")] 19 11 pub struct UploadBlob { ··· 45 37 } 46 38 } 47 39 48 - impl jacquard_common::types::xrpc::XrpcRequest for UploadBlob { 40 + impl<'de> jacquard_common::types::xrpc::XrpcRequest<'de> for UploadBlob { 49 41 const NSID: &'static str = "com.atproto.repo.uploadBlob"; 50 - const METHOD: jacquard_common::types::xrpc::XrpcMethod = jacquard_common::types::xrpc::XrpcMethod::Procedure( 51 - "*/*", 52 - ); 42 + const METHOD: jacquard_common::types::xrpc::XrpcMethod = 43 + jacquard_common::types::xrpc::XrpcMethod::Procedure("*/*"); 53 44 const OUTPUT_ENCODING: &'static str = "application/json"; 54 - type Output<'de> = UploadBlobOutput<'de>; 55 - type Err<'de> = jacquard_common::types::xrpc::GenericError<'de>; 45 + type Output = UploadBlobOutput<'de>; 46 + type Err = jacquard_common::types::xrpc::GenericError<'de>; 56 47 fn encode_body(&self) -> Result<Vec<u8>, jacquard_common::types::xrpc::EncodeError> { 57 48 Ok(self.body.to_vec()) 58 49 } 59 - } 50 + fn decode_body( 51 + &self, 52 + body: &'de [u8], 53 + ) -> Result<Box<Self>, jacquard_common::error::DecodeError> { 54 + Ok(Box::new(Self { 55 + body: bytes::Bytes::copy_from_slice(body), 56 + })) 57 + } 58 + }
+4 -4
crates/jacquard-api/src/com_atproto/server/activate_account.rs
··· 6 6 // Any manual changes will be overwritten on the next regeneration. 7 7 8 8 /// XRPC request marker type 9 - #[derive(Debug, Clone, Copy, PartialEq, Eq, serde::Serialize)] 9 + #[derive(Debug, Clone, Copy, PartialEq, Eq, serde::Serialize, serde::Deserialize)] 10 10 pub struct ActivateAccount; 11 - impl jacquard_common::types::xrpc::XrpcRequest for ActivateAccount { 11 + impl<'de> jacquard_common::types::xrpc::XrpcRequest<'de> for ActivateAccount { 12 12 const NSID: &'static str = "com.atproto.server.activateAccount"; 13 13 const METHOD: jacquard_common::types::xrpc::XrpcMethod = jacquard_common::types::xrpc::XrpcMethod::Procedure( 14 14 "application/json", 15 15 ); 16 16 const OUTPUT_ENCODING: &'static str = "application/json"; 17 - type Output<'de> = (); 18 - type Err<'de> = jacquard_common::types::xrpc::GenericError<'de>; 17 + type Output = (); 18 + type Err = jacquard_common::types::xrpc::GenericError<'de>; 19 19 }
+4 -4
crates/jacquard-api/src/com_atproto/server/check_account_status.rs
··· 41 41 } 42 42 43 43 /// XRPC request marker type 44 - #[derive(Debug, Clone, Copy, PartialEq, Eq, serde::Serialize)] 44 + #[derive(Debug, Clone, Copy, PartialEq, Eq, serde::Serialize, serde::Deserialize)] 45 45 pub struct CheckAccountStatus; 46 - impl jacquard_common::types::xrpc::XrpcRequest for CheckAccountStatus { 46 + impl<'de> jacquard_common::types::xrpc::XrpcRequest<'de> for CheckAccountStatus { 47 47 const NSID: &'static str = "com.atproto.server.checkAccountStatus"; 48 48 const METHOD: jacquard_common::types::xrpc::XrpcMethod = jacquard_common::types::xrpc::XrpcMethod::Query; 49 49 const OUTPUT_ENCODING: &'static str = "application/json"; 50 - type Output<'de> = CheckAccountStatusOutput<'de>; 51 - type Err<'de> = jacquard_common::types::xrpc::GenericError<'de>; 50 + type Output = CheckAccountStatusOutput<'de>; 51 + type Err = jacquard_common::types::xrpc::GenericError<'de>; 52 52 }
+3 -3
crates/jacquard-api/src/com_atproto/server/confirm_email.rs
··· 125 125 } 126 126 } 127 127 128 - impl jacquard_common::types::xrpc::XrpcRequest for ConfirmEmail<'_> { 128 + impl<'de> jacquard_common::types::xrpc::XrpcRequest<'de> for ConfirmEmail<'de> { 129 129 const NSID: &'static str = "com.atproto.server.confirmEmail"; 130 130 const METHOD: jacquard_common::types::xrpc::XrpcMethod = jacquard_common::types::xrpc::XrpcMethod::Procedure( 131 131 "application/json", 132 132 ); 133 133 const OUTPUT_ENCODING: &'static str = "application/json"; 134 - type Output<'de> = (); 135 - type Err<'de> = ConfirmEmailError<'de>; 134 + type Output = (); 135 + type Err = ConfirmEmailError<'de>; 136 136 }
+3 -3
crates/jacquard-api/src/com_atproto/server/create_account.rs
··· 234 234 } 235 235 } 236 236 237 - impl jacquard_common::types::xrpc::XrpcRequest for CreateAccount<'_> { 237 + impl<'de> jacquard_common::types::xrpc::XrpcRequest<'de> for CreateAccount<'de> { 238 238 const NSID: &'static str = "com.atproto.server.createAccount"; 239 239 const METHOD: jacquard_common::types::xrpc::XrpcMethod = jacquard_common::types::xrpc::XrpcMethod::Procedure( 240 240 "application/json", 241 241 ); 242 242 const OUTPUT_ENCODING: &'static str = "application/json"; 243 - type Output<'de> = CreateAccountOutput<'de>; 244 - type Err<'de> = CreateAccountError<'de>; 243 + type Output = CreateAccountOutput<'de>; 244 + type Err = CreateAccountError<'de>; 245 245 }
+3 -3
crates/jacquard-api/src/com_atproto/server/create_app_password.rs
··· 137 137 } 138 138 } 139 139 140 - impl jacquard_common::types::xrpc::XrpcRequest for CreateAppPassword<'_> { 140 + impl<'de> jacquard_common::types::xrpc::XrpcRequest<'de> for CreateAppPassword<'de> { 141 141 const NSID: &'static str = "com.atproto.server.createAppPassword"; 142 142 const METHOD: jacquard_common::types::xrpc::XrpcMethod = jacquard_common::types::xrpc::XrpcMethod::Procedure( 143 143 "application/json", 144 144 ); 145 145 const OUTPUT_ENCODING: &'static str = "application/json"; 146 - type Output<'de> = CreateAppPasswordOutput<'de>; 147 - type Err<'de> = CreateAppPasswordError<'de>; 146 + type Output = CreateAppPasswordOutput<'de>; 147 + type Err = CreateAppPasswordError<'de>; 148 148 }
+3 -3
crates/jacquard-api/src/com_atproto/server/create_invite_code.rs
··· 60 60 } 61 61 } 62 62 63 - impl jacquard_common::types::xrpc::XrpcRequest for CreateInviteCode<'_> { 63 + impl<'de> jacquard_common::types::xrpc::XrpcRequest<'de> for CreateInviteCode<'de> { 64 64 const NSID: &'static str = "com.atproto.server.createInviteCode"; 65 65 const METHOD: jacquard_common::types::xrpc::XrpcMethod = jacquard_common::types::xrpc::XrpcMethod::Procedure( 66 66 "application/json", 67 67 ); 68 68 const OUTPUT_ENCODING: &'static str = "application/json"; 69 - type Output<'de> = CreateInviteCodeOutput<'de>; 70 - type Err<'de> = jacquard_common::types::xrpc::GenericError<'de>; 69 + type Output = CreateInviteCodeOutput<'de>; 70 + type Err = jacquard_common::types::xrpc::GenericError<'de>; 71 71 }
+3 -3
crates/jacquard-api/src/com_atproto/server/create_invite_codes.rs
··· 83 83 } 84 84 } 85 85 86 - impl jacquard_common::types::xrpc::XrpcRequest for CreateInviteCodes<'_> { 86 + impl<'de> jacquard_common::types::xrpc::XrpcRequest<'de> for CreateInviteCodes<'de> { 87 87 const NSID: &'static str = "com.atproto.server.createInviteCodes"; 88 88 const METHOD: jacquard_common::types::xrpc::XrpcMethod = jacquard_common::types::xrpc::XrpcMethod::Procedure( 89 89 "application/json", 90 90 ); 91 91 const OUTPUT_ENCODING: &'static str = "application/json"; 92 - type Output<'de> = CreateInviteCodesOutput<'de>; 93 - type Err<'de> = jacquard_common::types::xrpc::GenericError<'de>; 92 + type Output = CreateInviteCodesOutput<'de>; 93 + type Err = jacquard_common::types::xrpc::GenericError<'de>; 94 94 }
+3 -3
crates/jacquard-api/src/com_atproto/server/create_session.rs
··· 162 162 } 163 163 } 164 164 165 - impl jacquard_common::types::xrpc::XrpcRequest for CreateSession<'_> { 165 + impl<'de> jacquard_common::types::xrpc::XrpcRequest<'de> for CreateSession<'de> { 166 166 const NSID: &'static str = "com.atproto.server.createSession"; 167 167 const METHOD: jacquard_common::types::xrpc::XrpcMethod = jacquard_common::types::xrpc::XrpcMethod::Procedure( 168 168 "application/json", 169 169 ); 170 170 const OUTPUT_ENCODING: &'static str = "application/json"; 171 - type Output<'de> = CreateSessionOutput<'de>; 172 - type Err<'de> = CreateSessionError<'de>; 171 + type Output = CreateSessionOutput<'de>; 172 + type Err = CreateSessionError<'de>; 173 173 }
+3 -3
crates/jacquard-api/src/com_atproto/server/deactivate_account.rs
··· 40 40 } 41 41 } 42 42 43 - impl jacquard_common::types::xrpc::XrpcRequest for DeactivateAccount<'_> { 43 + impl<'de> jacquard_common::types::xrpc::XrpcRequest<'de> for DeactivateAccount<'de> { 44 44 const NSID: &'static str = "com.atproto.server.deactivateAccount"; 45 45 const METHOD: jacquard_common::types::xrpc::XrpcMethod = jacquard_common::types::xrpc::XrpcMethod::Procedure( 46 46 "application/json", 47 47 ); 48 48 const OUTPUT_ENCODING: &'static str = "application/json"; 49 - type Output<'de> = (); 50 - type Err<'de> = jacquard_common::types::xrpc::GenericError<'de>; 49 + type Output = (); 50 + type Err = jacquard_common::types::xrpc::GenericError<'de>; 51 51 }
+3 -3
crates/jacquard-api/src/com_atproto/server/delete_account.rs
··· 106 106 } 107 107 } 108 108 109 - impl jacquard_common::types::xrpc::XrpcRequest for DeleteAccount<'_> { 109 + impl<'de> jacquard_common::types::xrpc::XrpcRequest<'de> for DeleteAccount<'de> { 110 110 const NSID: &'static str = "com.atproto.server.deleteAccount"; 111 111 const METHOD: jacquard_common::types::xrpc::XrpcMethod = jacquard_common::types::xrpc::XrpcMethod::Procedure( 112 112 "application/json", 113 113 ); 114 114 const OUTPUT_ENCODING: &'static str = "application/json"; 115 - type Output<'de> = (); 116 - type Err<'de> = DeleteAccountError<'de>; 115 + type Output = (); 116 + type Err = DeleteAccountError<'de>; 117 117 }
+4 -4
crates/jacquard-api/src/com_atproto/server/delete_session.rs
··· 6 6 // Any manual changes will be overwritten on the next regeneration. 7 7 8 8 /// XRPC request marker type 9 - #[derive(Debug, Clone, Copy, PartialEq, Eq, serde::Serialize)] 9 + #[derive(Debug, Clone, Copy, PartialEq, Eq, serde::Serialize, serde::Deserialize)] 10 10 pub struct DeleteSession; 11 - impl jacquard_common::types::xrpc::XrpcRequest for DeleteSession { 11 + impl<'de> jacquard_common::types::xrpc::XrpcRequest<'de> for DeleteSession { 12 12 const NSID: &'static str = "com.atproto.server.deleteSession"; 13 13 const METHOD: jacquard_common::types::xrpc::XrpcMethod = jacquard_common::types::xrpc::XrpcMethod::Procedure( 14 14 "application/json", 15 15 ); 16 16 const OUTPUT_ENCODING: &'static str = "application/json"; 17 - type Output<'de> = (); 18 - type Err<'de> = jacquard_common::types::xrpc::GenericError<'de>; 17 + type Output = (); 18 + type Err = jacquard_common::types::xrpc::GenericError<'de>; 19 19 }
+4 -4
crates/jacquard-api/src/com_atproto/server/describe_server.rs
··· 88 88 } 89 89 90 90 /// XRPC request marker type 91 - #[derive(Debug, Clone, Copy, PartialEq, Eq, serde::Serialize)] 91 + #[derive(Debug, Clone, Copy, PartialEq, Eq, serde::Serialize, serde::Deserialize)] 92 92 pub struct DescribeServer; 93 - impl jacquard_common::types::xrpc::XrpcRequest for DescribeServer { 93 + impl<'de> jacquard_common::types::xrpc::XrpcRequest<'de> for DescribeServer { 94 94 const NSID: &'static str = "com.atproto.server.describeServer"; 95 95 const METHOD: jacquard_common::types::xrpc::XrpcMethod = jacquard_common::types::xrpc::XrpcMethod::Query; 96 96 const OUTPUT_ENCODING: &'static str = "application/json"; 97 - type Output<'de> = DescribeServerOutput<'de>; 98 - type Err<'de> = jacquard_common::types::xrpc::GenericError<'de>; 97 + type Output = DescribeServerOutput<'de>; 98 + type Err = jacquard_common::types::xrpc::GenericError<'de>; 99 99 }
+3 -3
crates/jacquard-api/src/com_atproto/server/get_account_invite_codes.rs
··· 97 97 } 98 98 } 99 99 100 - impl jacquard_common::types::xrpc::XrpcRequest for GetAccountInviteCodes { 100 + impl<'de> jacquard_common::types::xrpc::XrpcRequest<'de> for GetAccountInviteCodes { 101 101 const NSID: &'static str = "com.atproto.server.getAccountInviteCodes"; 102 102 const METHOD: jacquard_common::types::xrpc::XrpcMethod = jacquard_common::types::xrpc::XrpcMethod::Query; 103 103 const OUTPUT_ENCODING: &'static str = "application/json"; 104 - type Output<'de> = GetAccountInviteCodesOutput<'de>; 105 - type Err<'de> = GetAccountInviteCodesError<'de>; 104 + type Output = GetAccountInviteCodesOutput<'de>; 105 + type Err = GetAccountInviteCodesError<'de>; 106 106 }
+3 -3
crates/jacquard-api/src/com_atproto/server/get_service_auth.rs
··· 103 103 } 104 104 } 105 105 106 - impl jacquard_common::types::xrpc::XrpcRequest for GetServiceAuth<'_> { 106 + impl<'de> jacquard_common::types::xrpc::XrpcRequest<'de> for GetServiceAuth<'de> { 107 107 const NSID: &'static str = "com.atproto.server.getServiceAuth"; 108 108 const METHOD: jacquard_common::types::xrpc::XrpcMethod = jacquard_common::types::xrpc::XrpcMethod::Query; 109 109 const OUTPUT_ENCODING: &'static str = "application/json"; 110 - type Output<'de> = GetServiceAuthOutput<'de>; 111 - type Err<'de> = GetServiceAuthError<'de>; 110 + type Output = GetServiceAuthOutput<'de>; 111 + type Err = GetServiceAuthError<'de>; 112 112 }
+4 -4
crates/jacquard-api/src/com_atproto/server/get_session.rs
··· 49 49 } 50 50 51 51 /// XRPC request marker type 52 - #[derive(Debug, Clone, Copy, PartialEq, Eq, serde::Serialize)] 52 + #[derive(Debug, Clone, Copy, PartialEq, Eq, serde::Serialize, serde::Deserialize)] 53 53 pub struct GetSession; 54 - impl jacquard_common::types::xrpc::XrpcRequest for GetSession { 54 + impl<'de> jacquard_common::types::xrpc::XrpcRequest<'de> for GetSession { 55 55 const NSID: &'static str = "com.atproto.server.getSession"; 56 56 const METHOD: jacquard_common::types::xrpc::XrpcMethod = jacquard_common::types::xrpc::XrpcMethod::Query; 57 57 const OUTPUT_ENCODING: &'static str = "application/json"; 58 - type Output<'de> = GetSessionOutput<'de>; 59 - type Err<'de> = jacquard_common::types::xrpc::GenericError<'de>; 58 + type Output = GetSessionOutput<'de>; 59 + type Err = jacquard_common::types::xrpc::GenericError<'de>; 60 60 }
+4 -4
crates/jacquard-api/src/com_atproto/server/list_app_passwords.rs
··· 94 94 } 95 95 96 96 /// XRPC request marker type 97 - #[derive(Debug, Clone, Copy, PartialEq, Eq, serde::Serialize)] 97 + #[derive(Debug, Clone, Copy, PartialEq, Eq, serde::Serialize, serde::Deserialize)] 98 98 pub struct ListAppPasswords; 99 - impl jacquard_common::types::xrpc::XrpcRequest for ListAppPasswords { 99 + impl<'de> jacquard_common::types::xrpc::XrpcRequest<'de> for ListAppPasswords { 100 100 const NSID: &'static str = "com.atproto.server.listAppPasswords"; 101 101 const METHOD: jacquard_common::types::xrpc::XrpcMethod = jacquard_common::types::xrpc::XrpcMethod::Query; 102 102 const OUTPUT_ENCODING: &'static str = "application/json"; 103 - type Output<'de> = ListAppPasswordsOutput<'de>; 104 - type Err<'de> = ListAppPasswordsError<'de>; 103 + type Output = ListAppPasswordsOutput<'de>; 104 + type Err = ListAppPasswordsError<'de>; 105 105 }
+4 -4
crates/jacquard-api/src/com_atproto/server/refresh_session.rs
··· 92 92 } 93 93 94 94 /// XRPC request marker type 95 - #[derive(Debug, Clone, Copy, PartialEq, Eq, serde::Serialize)] 95 + #[derive(Debug, Clone, Copy, PartialEq, Eq, serde::Serialize, serde::Deserialize)] 96 96 pub struct RefreshSession; 97 - impl jacquard_common::types::xrpc::XrpcRequest for RefreshSession { 97 + impl<'de> jacquard_common::types::xrpc::XrpcRequest<'de> for RefreshSession { 98 98 const NSID: &'static str = "com.atproto.server.refreshSession"; 99 99 const METHOD: jacquard_common::types::xrpc::XrpcMethod = jacquard_common::types::xrpc::XrpcMethod::Procedure( 100 100 "application/json", 101 101 ); 102 102 const OUTPUT_ENCODING: &'static str = "application/json"; 103 - type Output<'de> = RefreshSessionOutput<'de>; 104 - type Err<'de> = RefreshSessionError<'de>; 103 + type Output = RefreshSessionOutput<'de>; 104 + type Err = RefreshSessionError<'de>; 105 105 }
+4 -4
crates/jacquard-api/src/com_atproto/server/request_account_delete.rs
··· 6 6 // Any manual changes will be overwritten on the next regeneration. 7 7 8 8 /// XRPC request marker type 9 - #[derive(Debug, Clone, Copy, PartialEq, Eq, serde::Serialize)] 9 + #[derive(Debug, Clone, Copy, PartialEq, Eq, serde::Serialize, serde::Deserialize)] 10 10 pub struct RequestAccountDelete; 11 - impl jacquard_common::types::xrpc::XrpcRequest for RequestAccountDelete { 11 + impl<'de> jacquard_common::types::xrpc::XrpcRequest<'de> for RequestAccountDelete { 12 12 const NSID: &'static str = "com.atproto.server.requestAccountDelete"; 13 13 const METHOD: jacquard_common::types::xrpc::XrpcMethod = jacquard_common::types::xrpc::XrpcMethod::Procedure( 14 14 "application/json", 15 15 ); 16 16 const OUTPUT_ENCODING: &'static str = "application/json"; 17 - type Output<'de> = (); 18 - type Err<'de> = jacquard_common::types::xrpc::GenericError<'de>; 17 + type Output = (); 18 + type Err = jacquard_common::types::xrpc::GenericError<'de>; 19 19 }
+4 -4
crates/jacquard-api/src/com_atproto/server/request_email_confirmation.rs
··· 6 6 // Any manual changes will be overwritten on the next regeneration. 7 7 8 8 /// XRPC request marker type 9 - #[derive(Debug, Clone, Copy, PartialEq, Eq, serde::Serialize)] 9 + #[derive(Debug, Clone, Copy, PartialEq, Eq, serde::Serialize, serde::Deserialize)] 10 10 pub struct RequestEmailConfirmation; 11 - impl jacquard_common::types::xrpc::XrpcRequest for RequestEmailConfirmation { 11 + impl<'de> jacquard_common::types::xrpc::XrpcRequest<'de> for RequestEmailConfirmation { 12 12 const NSID: &'static str = "com.atproto.server.requestEmailConfirmation"; 13 13 const METHOD: jacquard_common::types::xrpc::XrpcMethod = jacquard_common::types::xrpc::XrpcMethod::Procedure( 14 14 "application/json", 15 15 ); 16 16 const OUTPUT_ENCODING: &'static str = "application/json"; 17 - type Output<'de> = (); 18 - type Err<'de> = jacquard_common::types::xrpc::GenericError<'de>; 17 + type Output = (); 18 + type Err = jacquard_common::types::xrpc::GenericError<'de>; 19 19 }
+4 -4
crates/jacquard-api/src/com_atproto/server/request_email_update.rs
··· 23 23 } 24 24 25 25 /// XRPC request marker type 26 - #[derive(Debug, Clone, Copy, PartialEq, Eq, serde::Serialize)] 26 + #[derive(Debug, Clone, Copy, PartialEq, Eq, serde::Serialize, serde::Deserialize)] 27 27 pub struct RequestEmailUpdate; 28 - impl jacquard_common::types::xrpc::XrpcRequest for RequestEmailUpdate { 28 + impl<'de> jacquard_common::types::xrpc::XrpcRequest<'de> for RequestEmailUpdate { 29 29 const NSID: &'static str = "com.atproto.server.requestEmailUpdate"; 30 30 const METHOD: jacquard_common::types::xrpc::XrpcMethod = jacquard_common::types::xrpc::XrpcMethod::Procedure( 31 31 "application/json", 32 32 ); 33 33 const OUTPUT_ENCODING: &'static str = "application/json"; 34 - type Output<'de> = RequestEmailUpdateOutput<'de>; 35 - type Err<'de> = jacquard_common::types::xrpc::GenericError<'de>; 34 + type Output = RequestEmailUpdateOutput<'de>; 35 + type Err = jacquard_common::types::xrpc::GenericError<'de>; 36 36 }
+3 -3
crates/jacquard-api/src/com_atproto/server/request_password_reset.rs
··· 40 40 } 41 41 } 42 42 43 - impl jacquard_common::types::xrpc::XrpcRequest for RequestPasswordReset<'_> { 43 + impl<'de> jacquard_common::types::xrpc::XrpcRequest<'de> for RequestPasswordReset<'de> { 44 44 const NSID: &'static str = "com.atproto.server.requestPasswordReset"; 45 45 const METHOD: jacquard_common::types::xrpc::XrpcMethod = jacquard_common::types::xrpc::XrpcMethod::Procedure( 46 46 "application/json", 47 47 ); 48 48 const OUTPUT_ENCODING: &'static str = "application/json"; 49 - type Output<'de> = (); 50 - type Err<'de> = jacquard_common::types::xrpc::GenericError<'de>; 49 + type Output = (); 50 + type Err = jacquard_common::types::xrpc::GenericError<'de>; 51 51 }
+3 -3
crates/jacquard-api/src/com_atproto/server/reserve_signing_key.rs
··· 60 60 } 61 61 } 62 62 63 - impl jacquard_common::types::xrpc::XrpcRequest for ReserveSigningKey<'_> { 63 + impl<'de> jacquard_common::types::xrpc::XrpcRequest<'de> for ReserveSigningKey<'de> { 64 64 const NSID: &'static str = "com.atproto.server.reserveSigningKey"; 65 65 const METHOD: jacquard_common::types::xrpc::XrpcMethod = jacquard_common::types::xrpc::XrpcMethod::Procedure( 66 66 "application/json", 67 67 ); 68 68 const OUTPUT_ENCODING: &'static str = "application/json"; 69 - type Output<'de> = ReserveSigningKeyOutput<'de>; 70 - type Err<'de> = jacquard_common::types::xrpc::GenericError<'de>; 69 + type Output = ReserveSigningKeyOutput<'de>; 70 + type Err = jacquard_common::types::xrpc::GenericError<'de>; 71 71 }
+3 -3
crates/jacquard-api/src/com_atproto/server/reset_password.rs
··· 103 103 } 104 104 } 105 105 106 - impl jacquard_common::types::xrpc::XrpcRequest for ResetPassword<'_> { 106 + impl<'de> jacquard_common::types::xrpc::XrpcRequest<'de> for ResetPassword<'de> { 107 107 const NSID: &'static str = "com.atproto.server.resetPassword"; 108 108 const METHOD: jacquard_common::types::xrpc::XrpcMethod = jacquard_common::types::xrpc::XrpcMethod::Procedure( 109 109 "application/json", 110 110 ); 111 111 const OUTPUT_ENCODING: &'static str = "application/json"; 112 - type Output<'de> = (); 113 - type Err<'de> = ResetPasswordError<'de>; 112 + type Output = (); 113 + type Err = ResetPasswordError<'de>; 114 114 }
+3 -3
crates/jacquard-api/src/com_atproto/server/revoke_app_password.rs
··· 40 40 } 41 41 } 42 42 43 - impl jacquard_common::types::xrpc::XrpcRequest for RevokeAppPassword<'_> { 43 + impl<'de> jacquard_common::types::xrpc::XrpcRequest<'de> for RevokeAppPassword<'de> { 44 44 const NSID: &'static str = "com.atproto.server.revokeAppPassword"; 45 45 const METHOD: jacquard_common::types::xrpc::XrpcMethod = jacquard_common::types::xrpc::XrpcMethod::Procedure( 46 46 "application/json", 47 47 ); 48 48 const OUTPUT_ENCODING: &'static str = "application/json"; 49 - type Output<'de> = (); 50 - type Err<'de> = jacquard_common::types::xrpc::GenericError<'de>; 49 + type Output = (); 50 + type Err = jacquard_common::types::xrpc::GenericError<'de>; 51 51 }
+3 -3
crates/jacquard-api/src/com_atproto/server/update_email.rs
··· 118 118 } 119 119 } 120 120 121 - impl jacquard_common::types::xrpc::XrpcRequest for UpdateEmail<'_> { 121 + impl<'de> jacquard_common::types::xrpc::XrpcRequest<'de> for UpdateEmail<'de> { 122 122 const NSID: &'static str = "com.atproto.server.updateEmail"; 123 123 const METHOD: jacquard_common::types::xrpc::XrpcMethod = jacquard_common::types::xrpc::XrpcMethod::Procedure( 124 124 "application/json", 125 125 ); 126 126 const OUTPUT_ENCODING: &'static str = "application/json"; 127 - type Output<'de> = (); 128 - type Err<'de> = UpdateEmailError<'de>; 127 + type Output = (); 128 + type Err = UpdateEmailError<'de>; 129 129 }
+3 -3
crates/jacquard-api/src/com_atproto/sync/get_blob.rs
··· 135 135 } 136 136 } 137 137 138 - impl jacquard_common::types::xrpc::XrpcRequest for GetBlob<'_> { 138 + impl<'de> jacquard_common::types::xrpc::XrpcRequest<'de> for GetBlob<'de> { 139 139 const NSID: &'static str = "com.atproto.sync.getBlob"; 140 140 const METHOD: jacquard_common::types::xrpc::XrpcMethod = jacquard_common::types::xrpc::XrpcMethod::Query; 141 141 const OUTPUT_ENCODING: &'static str = "*/*"; 142 - type Output<'de> = GetBlobOutput<'de>; 143 - type Err<'de> = GetBlobError<'de>; 142 + type Output = GetBlobOutput<'de>; 143 + type Err = GetBlobError<'de>; 144 144 }
+3 -3
crates/jacquard-api/src/com_atproto/sync/get_blocks.rs
··· 139 139 } 140 140 } 141 141 142 - impl jacquard_common::types::xrpc::XrpcRequest for GetBlocks<'_> { 142 + impl<'de> jacquard_common::types::xrpc::XrpcRequest<'de> for GetBlocks<'de> { 143 143 const NSID: &'static str = "com.atproto.sync.getBlocks"; 144 144 const METHOD: jacquard_common::types::xrpc::XrpcMethod = jacquard_common::types::xrpc::XrpcMethod::Query; 145 145 const OUTPUT_ENCODING: &'static str = "application/vnd.ipld.car"; 146 - type Output<'de> = GetBlocksOutput<'de>; 147 - type Err<'de> = GetBlocksError<'de>; 146 + type Output = GetBlocksOutput<'de>; 147 + type Err = GetBlocksError<'de>; 148 148 }
+3 -3
crates/jacquard-api/src/com_atproto/sync/get_checkout.rs
··· 43 43 } 44 44 } 45 45 46 - impl jacquard_common::types::xrpc::XrpcRequest for GetCheckout<'_> { 46 + impl<'de> jacquard_common::types::xrpc::XrpcRequest<'de> for GetCheckout<'de> { 47 47 const NSID: &'static str = "com.atproto.sync.getCheckout"; 48 48 const METHOD: jacquard_common::types::xrpc::XrpcMethod = jacquard_common::types::xrpc::XrpcMethod::Query; 49 49 const OUTPUT_ENCODING: &'static str = "application/vnd.ipld.car"; 50 - type Output<'de> = GetCheckoutOutput<'de>; 51 - type Err<'de> = jacquard_common::types::xrpc::GenericError<'de>; 50 + type Output = GetCheckoutOutput<'de>; 51 + type Err = jacquard_common::types::xrpc::GenericError<'de>; 52 52 }
+3 -3
crates/jacquard-api/src/com_atproto/sync/get_head.rs
··· 91 91 } 92 92 } 93 93 94 - impl jacquard_common::types::xrpc::XrpcRequest for GetHead<'_> { 94 + impl<'de> jacquard_common::types::xrpc::XrpcRequest<'de> for GetHead<'de> { 95 95 const NSID: &'static str = "com.atproto.sync.getHead"; 96 96 const METHOD: jacquard_common::types::xrpc::XrpcMethod = jacquard_common::types::xrpc::XrpcMethod::Query; 97 97 const OUTPUT_ENCODING: &'static str = "application/json"; 98 - type Output<'de> = GetHeadOutput<'de>; 99 - type Err<'de> = GetHeadError<'de>; 98 + type Output = GetHeadOutput<'de>; 99 + type Err = GetHeadError<'de>; 100 100 }
+3 -3
crates/jacquard-api/src/com_atproto/sync/get_host_status.rs
··· 108 108 } 109 109 } 110 110 111 - impl jacquard_common::types::xrpc::XrpcRequest for GetHostStatus<'_> { 111 + impl<'de> jacquard_common::types::xrpc::XrpcRequest<'de> for GetHostStatus<'de> { 112 112 const NSID: &'static str = "com.atproto.sync.getHostStatus"; 113 113 const METHOD: jacquard_common::types::xrpc::XrpcMethod = jacquard_common::types::xrpc::XrpcMethod::Query; 114 114 const OUTPUT_ENCODING: &'static str = "application/json"; 115 - type Output<'de> = GetHostStatusOutput<'de>; 116 - type Err<'de> = GetHostStatusError<'de>; 115 + type Output = GetHostStatusOutput<'de>; 116 + type Err = GetHostStatusError<'de>; 117 117 }
+3 -3
crates/jacquard-api/src/com_atproto/sync/get_latest_commit.rs
··· 133 133 } 134 134 } 135 135 136 - impl jacquard_common::types::xrpc::XrpcRequest for GetLatestCommit<'_> { 136 + impl<'de> jacquard_common::types::xrpc::XrpcRequest<'de> for GetLatestCommit<'de> { 137 137 const NSID: &'static str = "com.atproto.sync.getLatestCommit"; 138 138 const METHOD: jacquard_common::types::xrpc::XrpcMethod = jacquard_common::types::xrpc::XrpcMethod::Query; 139 139 const OUTPUT_ENCODING: &'static str = "application/json"; 140 - type Output<'de> = GetLatestCommitOutput<'de>; 141 - type Err<'de> = GetLatestCommitError<'de>; 140 + type Output = GetLatestCommitOutput<'de>; 141 + type Err = GetLatestCommitError<'de>; 142 142 }
+3 -3
crates/jacquard-api/src/com_atproto/sync/get_record.rs
··· 144 144 } 145 145 } 146 146 147 - impl jacquard_common::types::xrpc::XrpcRequest for GetRecord<'_> { 147 + impl<'de> jacquard_common::types::xrpc::XrpcRequest<'de> for GetRecord<'de> { 148 148 const NSID: &'static str = "com.atproto.sync.getRecord"; 149 149 const METHOD: jacquard_common::types::xrpc::XrpcMethod = jacquard_common::types::xrpc::XrpcMethod::Query; 150 150 const OUTPUT_ENCODING: &'static str = "application/vnd.ipld.car"; 151 - type Output<'de> = GetRecordOutput<'de>; 152 - type Err<'de> = GetRecordError<'de>; 151 + type Output = GetRecordOutput<'de>; 152 + type Err = GetRecordError<'de>; 153 153 }
+3 -3
crates/jacquard-api/src/com_atproto/sync/get_repo.rs
··· 125 125 } 126 126 } 127 127 128 - impl jacquard_common::types::xrpc::XrpcRequest for GetRepo<'_> { 128 + impl<'de> jacquard_common::types::xrpc::XrpcRequest<'de> for GetRepo<'de> { 129 129 const NSID: &'static str = "com.atproto.sync.getRepo"; 130 130 const METHOD: jacquard_common::types::xrpc::XrpcMethod = jacquard_common::types::xrpc::XrpcMethod::Query; 131 131 const OUTPUT_ENCODING: &'static str = "application/vnd.ipld.car"; 132 - type Output<'de> = GetRepoOutput<'de>; 133 - type Err<'de> = GetRepoError<'de>; 132 + type Output = GetRepoOutput<'de>; 133 + type Err = GetRepoError<'de>; 134 134 }
+3 -3
crates/jacquard-api/src/com_atproto/sync/get_repo_status.rs
··· 106 106 } 107 107 } 108 108 109 - impl jacquard_common::types::xrpc::XrpcRequest for GetRepoStatus<'_> { 109 + impl<'de> jacquard_common::types::xrpc::XrpcRequest<'de> for GetRepoStatus<'de> { 110 110 const NSID: &'static str = "com.atproto.sync.getRepoStatus"; 111 111 const METHOD: jacquard_common::types::xrpc::XrpcMethod = jacquard_common::types::xrpc::XrpcMethod::Query; 112 112 const OUTPUT_ENCODING: &'static str = "application/json"; 113 - type Output<'de> = GetRepoStatusOutput<'de>; 114 - type Err<'de> = GetRepoStatusError<'de>; 113 + type Output = GetRepoStatusOutput<'de>; 114 + type Err = GetRepoStatusError<'de>; 115 115 }
+3 -3
crates/jacquard-api/src/com_atproto/sync/list_blobs.rs
··· 145 145 } 146 146 } 147 147 148 - impl jacquard_common::types::xrpc::XrpcRequest for ListBlobs<'_> { 148 + impl<'de> jacquard_common::types::xrpc::XrpcRequest<'de> for ListBlobs<'de> { 149 149 const NSID: &'static str = "com.atproto.sync.listBlobs"; 150 150 const METHOD: jacquard_common::types::xrpc::XrpcMethod = jacquard_common::types::xrpc::XrpcMethod::Query; 151 151 const OUTPUT_ENCODING: &'static str = "application/json"; 152 - type Output<'de> = ListBlobsOutput<'de>; 153 - type Err<'de> = ListBlobsError<'de>; 152 + type Output = ListBlobsOutput<'de>; 153 + type Err = ListBlobsError<'de>; 154 154 }
+3 -3
crates/jacquard-api/src/com_atproto/sync/list_hosts.rs
··· 89 89 } 90 90 } 91 91 92 - impl jacquard_common::types::xrpc::XrpcRequest for ListHosts<'_> { 92 + impl<'de> jacquard_common::types::xrpc::XrpcRequest<'de> for ListHosts<'de> { 93 93 const NSID: &'static str = "com.atproto.sync.listHosts"; 94 94 const METHOD: jacquard_common::types::xrpc::XrpcMethod = jacquard_common::types::xrpc::XrpcMethod::Query; 95 95 const OUTPUT_ENCODING: &'static str = "application/json"; 96 - type Output<'de> = ListHostsOutput<'de>; 97 - type Err<'de> = jacquard_common::types::xrpc::GenericError<'de>; 96 + type Output = ListHostsOutput<'de>; 97 + type Err = jacquard_common::types::xrpc::GenericError<'de>; 98 98 }
+3 -3
crates/jacquard-api/src/com_atproto/sync/list_repos.rs
··· 58 58 } 59 59 } 60 60 61 - impl jacquard_common::types::xrpc::XrpcRequest for ListRepos<'_> { 61 + impl<'de> jacquard_common::types::xrpc::XrpcRequest<'de> for ListRepos<'de> { 62 62 const NSID: &'static str = "com.atproto.sync.listRepos"; 63 63 const METHOD: jacquard_common::types::xrpc::XrpcMethod = jacquard_common::types::xrpc::XrpcMethod::Query; 64 64 const OUTPUT_ENCODING: &'static str = "application/json"; 65 - type Output<'de> = ListReposOutput<'de>; 66 - type Err<'de> = jacquard_common::types::xrpc::GenericError<'de>; 65 + type Output = ListReposOutput<'de>; 66 + type Err = jacquard_common::types::xrpc::GenericError<'de>; 67 67 } 68 68 69 69 #[jacquard_derive::lexicon]
+3 -3
crates/jacquard-api/src/com_atproto/sync/list_repos_by_collection.rs
··· 61 61 } 62 62 } 63 63 64 - impl jacquard_common::types::xrpc::XrpcRequest for ListReposByCollection<'_> { 64 + impl<'de> jacquard_common::types::xrpc::XrpcRequest<'de> for ListReposByCollection<'de> { 65 65 const NSID: &'static str = "com.atproto.sync.listReposByCollection"; 66 66 const METHOD: jacquard_common::types::xrpc::XrpcMethod = jacquard_common::types::xrpc::XrpcMethod::Query; 67 67 const OUTPUT_ENCODING: &'static str = "application/json"; 68 - type Output<'de> = ListReposByCollectionOutput<'de>; 69 - type Err<'de> = jacquard_common::types::xrpc::GenericError<'de>; 68 + type Output = ListReposByCollectionOutput<'de>; 69 + type Err = jacquard_common::types::xrpc::GenericError<'de>; 70 70 } 71 71 72 72 #[jacquard_derive::lexicon]
+3 -3
crates/jacquard-api/src/com_atproto/sync/notify_of_update.rs
··· 41 41 } 42 42 } 43 43 44 - impl jacquard_common::types::xrpc::XrpcRequest for NotifyOfUpdate<'_> { 44 + impl<'de> jacquard_common::types::xrpc::XrpcRequest<'de> for NotifyOfUpdate<'de> { 45 45 const NSID: &'static str = "com.atproto.sync.notifyOfUpdate"; 46 46 const METHOD: jacquard_common::types::xrpc::XrpcMethod = jacquard_common::types::xrpc::XrpcMethod::Procedure( 47 47 "application/json", 48 48 ); 49 49 const OUTPUT_ENCODING: &'static str = "application/json"; 50 - type Output<'de> = (); 51 - type Err<'de> = jacquard_common::types::xrpc::GenericError<'de>; 50 + type Output = (); 51 + type Err = jacquard_common::types::xrpc::GenericError<'de>; 52 52 }
+3 -3
crates/jacquard-api/src/com_atproto/sync/request_crawl.rs
··· 86 86 } 87 87 } 88 88 89 - impl jacquard_common::types::xrpc::XrpcRequest for RequestCrawl<'_> { 89 + impl<'de> jacquard_common::types::xrpc::XrpcRequest<'de> for RequestCrawl<'de> { 90 90 const NSID: &'static str = "com.atproto.sync.requestCrawl"; 91 91 const METHOD: jacquard_common::types::xrpc::XrpcMethod = jacquard_common::types::xrpc::XrpcMethod::Procedure( 92 92 "application/json", 93 93 ); 94 94 const OUTPUT_ENCODING: &'static str = "application/json"; 95 - type Output<'de> = (); 96 - type Err<'de> = RequestCrawlError<'de>; 95 + type Output = (); 96 + type Err = RequestCrawlError<'de>; 97 97 }
+3 -3
crates/jacquard-api/src/com_atproto/temp/add_reserved_handle.rs
··· 53 53 } 54 54 } 55 55 56 - impl jacquard_common::types::xrpc::XrpcRequest for AddReservedHandle<'_> { 56 + impl<'de> jacquard_common::types::xrpc::XrpcRequest<'de> for AddReservedHandle<'de> { 57 57 const NSID: &'static str = "com.atproto.temp.addReservedHandle"; 58 58 const METHOD: jacquard_common::types::xrpc::XrpcMethod = jacquard_common::types::xrpc::XrpcMethod::Procedure( 59 59 "application/json", 60 60 ); 61 61 const OUTPUT_ENCODING: &'static str = "application/json"; 62 - type Output<'de> = AddReservedHandleOutput<'de>; 63 - type Err<'de> = jacquard_common::types::xrpc::GenericError<'de>; 62 + type Output = AddReservedHandleOutput<'de>; 63 + type Err = jacquard_common::types::xrpc::GenericError<'de>; 64 64 }
+4 -3
crates/jacquard-api/src/com_atproto/temp/check_handle_availability.rs
··· 124 124 } 125 125 } 126 126 127 - impl jacquard_common::types::xrpc::XrpcRequest for CheckHandleAvailability<'_> { 127 + impl<'de> jacquard_common::types::xrpc::XrpcRequest<'de> 128 + for CheckHandleAvailability<'de> { 128 129 const NSID: &'static str = "com.atproto.temp.checkHandleAvailability"; 129 130 const METHOD: jacquard_common::types::xrpc::XrpcMethod = jacquard_common::types::xrpc::XrpcMethod::Query; 130 131 const OUTPUT_ENCODING: &'static str = "application/json"; 131 - type Output<'de> = CheckHandleAvailabilityOutput<'de>; 132 - type Err<'de> = CheckHandleAvailabilityError<'de>; 132 + type Output = CheckHandleAvailabilityOutput<'de>; 133 + type Err = CheckHandleAvailabilityError<'de>; 133 134 } 134 135 135 136 ///Indicates the provided handle is available.
+4 -4
crates/jacquard-api/src/com_atproto/temp/check_signup_queue.rs
··· 29 29 } 30 30 31 31 /// XRPC request marker type 32 - #[derive(Debug, Clone, Copy, PartialEq, Eq, serde::Serialize)] 32 + #[derive(Debug, Clone, Copy, PartialEq, Eq, serde::Serialize, serde::Deserialize)] 33 33 pub struct CheckSignupQueue; 34 - impl jacquard_common::types::xrpc::XrpcRequest for CheckSignupQueue { 34 + impl<'de> jacquard_common::types::xrpc::XrpcRequest<'de> for CheckSignupQueue { 35 35 const NSID: &'static str = "com.atproto.temp.checkSignupQueue"; 36 36 const METHOD: jacquard_common::types::xrpc::XrpcMethod = jacquard_common::types::xrpc::XrpcMethod::Query; 37 37 const OUTPUT_ENCODING: &'static str = "application/json"; 38 - type Output<'de> = CheckSignupQueueOutput<'de>; 39 - type Err<'de> = jacquard_common::types::xrpc::GenericError<'de>; 38 + type Output = CheckSignupQueueOutput<'de>; 39 + type Err = jacquard_common::types::xrpc::GenericError<'de>; 40 40 }
+3 -3
crates/jacquard-api/src/com_atproto/temp/dereference_scope.rs
··· 98 98 } 99 99 } 100 100 101 - impl jacquard_common::types::xrpc::XrpcRequest for DereferenceScope<'_> { 101 + impl<'de> jacquard_common::types::xrpc::XrpcRequest<'de> for DereferenceScope<'de> { 102 102 const NSID: &'static str = "com.atproto.temp.dereferenceScope"; 103 103 const METHOD: jacquard_common::types::xrpc::XrpcMethod = jacquard_common::types::xrpc::XrpcMethod::Query; 104 104 const OUTPUT_ENCODING: &'static str = "application/json"; 105 - type Output<'de> = DereferenceScopeOutput<'de>; 106 - type Err<'de> = DereferenceScopeError<'de>; 105 + type Output = DereferenceScopeOutput<'de>; 106 + type Err = DereferenceScopeError<'de>; 107 107 }
+3 -3
crates/jacquard-api/src/com_atproto/temp/fetch_labels.rs
··· 49 49 } 50 50 } 51 51 52 - impl jacquard_common::types::xrpc::XrpcRequest for FetchLabels { 52 + impl<'de> jacquard_common::types::xrpc::XrpcRequest<'de> for FetchLabels { 53 53 const NSID: &'static str = "com.atproto.temp.fetchLabels"; 54 54 const METHOD: jacquard_common::types::xrpc::XrpcMethod = jacquard_common::types::xrpc::XrpcMethod::Query; 55 55 const OUTPUT_ENCODING: &'static str = "application/json"; 56 - type Output<'de> = FetchLabelsOutput<'de>; 57 - type Err<'de> = jacquard_common::types::xrpc::GenericError<'de>; 56 + type Output = FetchLabelsOutput<'de>; 57 + type Err = jacquard_common::types::xrpc::GenericError<'de>; 58 58 }
+4 -3
crates/jacquard-api/src/com_atproto/temp/request_phone_verification.rs
··· 40 40 } 41 41 } 42 42 43 - impl jacquard_common::types::xrpc::XrpcRequest for RequestPhoneVerification<'_> { 43 + impl<'de> jacquard_common::types::xrpc::XrpcRequest<'de> 44 + for RequestPhoneVerification<'de> { 44 45 const NSID: &'static str = "com.atproto.temp.requestPhoneVerification"; 45 46 const METHOD: jacquard_common::types::xrpc::XrpcMethod = jacquard_common::types::xrpc::XrpcMethod::Procedure( 46 47 "application/json", 47 48 ); 48 49 const OUTPUT_ENCODING: &'static str = "application/json"; 49 - type Output<'de> = (); 50 - type Err<'de> = jacquard_common::types::xrpc::GenericError<'de>; 50 + type Output = (); 51 + type Err = jacquard_common::types::xrpc::GenericError<'de>; 51 52 }
+4 -3
crates/jacquard-api/src/com_atproto/temp/revoke_account_credentials.rs
··· 39 39 } 40 40 } 41 41 42 - impl jacquard_common::types::xrpc::XrpcRequest for RevokeAccountCredentials<'_> { 42 + impl<'de> jacquard_common::types::xrpc::XrpcRequest<'de> 43 + for RevokeAccountCredentials<'de> { 43 44 const NSID: &'static str = "com.atproto.temp.revokeAccountCredentials"; 44 45 const METHOD: jacquard_common::types::xrpc::XrpcMethod = jacquard_common::types::xrpc::XrpcMethod::Procedure( 45 46 "application/json", 46 47 ); 47 48 const OUTPUT_ENCODING: &'static str = "application/json"; 48 - type Output<'de> = (); 49 - type Err<'de> = jacquard_common::types::xrpc::GenericError<'de>; 49 + type Output = (); 50 + type Err = jacquard_common::types::xrpc::GenericError<'de>; 50 51 }
+3 -3
crates/jacquard-api/src/tools_ozone/communication/create_template.rs
··· 126 126 } 127 127 } 128 128 129 - impl jacquard_common::types::xrpc::XrpcRequest for CreateTemplate<'_> { 129 + impl<'de> jacquard_common::types::xrpc::XrpcRequest<'de> for CreateTemplate<'de> { 130 130 const NSID: &'static str = "tools.ozone.communication.createTemplate"; 131 131 const METHOD: jacquard_common::types::xrpc::XrpcMethod = jacquard_common::types::xrpc::XrpcMethod::Procedure( 132 132 "application/json", 133 133 ); 134 134 const OUTPUT_ENCODING: &'static str = "application/json"; 135 - type Output<'de> = CreateTemplateOutput<'de>; 136 - type Err<'de> = CreateTemplateError<'de>; 135 + type Output = CreateTemplateOutput<'de>; 136 + type Err = CreateTemplateError<'de>; 137 137 }
+3 -3
crates/jacquard-api/src/tools_ozone/communication/delete_template.rs
··· 40 40 } 41 41 } 42 42 43 - impl jacquard_common::types::xrpc::XrpcRequest for DeleteTemplate<'_> { 43 + impl<'de> jacquard_common::types::xrpc::XrpcRequest<'de> for DeleteTemplate<'de> { 44 44 const NSID: &'static str = "tools.ozone.communication.deleteTemplate"; 45 45 const METHOD: jacquard_common::types::xrpc::XrpcMethod = jacquard_common::types::xrpc::XrpcMethod::Procedure( 46 46 "application/json", 47 47 ); 48 48 const OUTPUT_ENCODING: &'static str = "application/json"; 49 - type Output<'de> = (); 50 - type Err<'de> = jacquard_common::types::xrpc::GenericError<'de>; 49 + type Output = (); 50 + type Err = jacquard_common::types::xrpc::GenericError<'de>; 51 51 }
+4 -4
crates/jacquard-api/src/tools_ozone/communication/list_templates.rs
··· 26 26 } 27 27 28 28 /// XRPC request marker type 29 - #[derive(Debug, Clone, Copy, PartialEq, Eq, serde::Serialize)] 29 + #[derive(Debug, Clone, Copy, PartialEq, Eq, serde::Serialize, serde::Deserialize)] 30 30 pub struct ListTemplates; 31 - impl jacquard_common::types::xrpc::XrpcRequest for ListTemplates { 31 + impl<'de> jacquard_common::types::xrpc::XrpcRequest<'de> for ListTemplates { 32 32 const NSID: &'static str = "tools.ozone.communication.listTemplates"; 33 33 const METHOD: jacquard_common::types::xrpc::XrpcMethod = jacquard_common::types::xrpc::XrpcMethod::Query; 34 34 const OUTPUT_ENCODING: &'static str = "application/json"; 35 - type Output<'de> = ListTemplatesOutput<'de>; 36 - type Err<'de> = jacquard_common::types::xrpc::GenericError<'de>; 35 + type Output = ListTemplatesOutput<'de>; 36 + type Err = jacquard_common::types::xrpc::GenericError<'de>; 37 37 }
+3 -3
crates/jacquard-api/src/tools_ozone/communication/update_template.rs
··· 137 137 } 138 138 } 139 139 140 - impl jacquard_common::types::xrpc::XrpcRequest for UpdateTemplate<'_> { 140 + impl<'de> jacquard_common::types::xrpc::XrpcRequest<'de> for UpdateTemplate<'de> { 141 141 const NSID: &'static str = "tools.ozone.communication.updateTemplate"; 142 142 const METHOD: jacquard_common::types::xrpc::XrpcMethod = jacquard_common::types::xrpc::XrpcMethod::Procedure( 143 143 "application/json", 144 144 ); 145 145 const OUTPUT_ENCODING: &'static str = "application/json"; 146 - type Output<'de> = UpdateTemplateOutput<'de>; 147 - type Err<'de> = UpdateTemplateError<'de>; 146 + type Output = UpdateTemplateOutput<'de>; 147 + type Err = UpdateTemplateError<'de>; 148 148 }
+3 -3
crates/jacquard-api/src/tools_ozone/hosting/get_account_history.rs
··· 181 181 } 182 182 } 183 183 184 - impl jacquard_common::types::xrpc::XrpcRequest for GetAccountHistory<'_> { 184 + impl<'de> jacquard_common::types::xrpc::XrpcRequest<'de> for GetAccountHistory<'de> { 185 185 const NSID: &'static str = "tools.ozone.hosting.getAccountHistory"; 186 186 const METHOD: jacquard_common::types::xrpc::XrpcMethod = jacquard_common::types::xrpc::XrpcMethod::Query; 187 187 const OUTPUT_ENCODING: &'static str = "application/json"; 188 - type Output<'de> = GetAccountHistoryOutput<'de>; 189 - type Err<'de> = jacquard_common::types::xrpc::GenericError<'de>; 188 + type Output = GetAccountHistoryOutput<'de>; 189 + type Err = jacquard_common::types::xrpc::GenericError<'de>; 190 190 } 191 191 192 192 #[jacquard_derive::lexicon]
+3 -3
crates/jacquard-api/src/tools_ozone/moderation/emit_event.rs
··· 310 310 } 311 311 } 312 312 313 - impl jacquard_common::types::xrpc::XrpcRequest for EmitEvent<'_> { 313 + impl<'de> jacquard_common::types::xrpc::XrpcRequest<'de> for EmitEvent<'de> { 314 314 const NSID: &'static str = "tools.ozone.moderation.emitEvent"; 315 315 const METHOD: jacquard_common::types::xrpc::XrpcMethod = jacquard_common::types::xrpc::XrpcMethod::Procedure( 316 316 "application/json", 317 317 ); 318 318 const OUTPUT_ENCODING: &'static str = "application/json"; 319 - type Output<'de> = EmitEventOutput<'de>; 320 - type Err<'de> = EmitEventError<'de>; 319 + type Output = EmitEventOutput<'de>; 320 + type Err = EmitEventError<'de>; 321 321 }
+3 -3
crates/jacquard-api/src/tools_ozone/moderation/get_account_timeline.rs
··· 95 95 } 96 96 } 97 97 98 - impl jacquard_common::types::xrpc::XrpcRequest for GetAccountTimeline<'_> { 98 + impl<'de> jacquard_common::types::xrpc::XrpcRequest<'de> for GetAccountTimeline<'de> { 99 99 const NSID: &'static str = "tools.ozone.moderation.getAccountTimeline"; 100 100 const METHOD: jacquard_common::types::xrpc::XrpcMethod = jacquard_common::types::xrpc::XrpcMethod::Query; 101 101 const OUTPUT_ENCODING: &'static str = "application/json"; 102 - type Output<'de> = GetAccountTimelineOutput<'de>; 103 - type Err<'de> = GetAccountTimelineError<'de>; 102 + type Output = GetAccountTimelineOutput<'de>; 103 + type Err = GetAccountTimelineError<'de>; 104 104 } 105 105 106 106 #[jacquard_derive::lexicon]
+3 -3
crates/jacquard-api/src/tools_ozone/moderation/get_event.rs
··· 46 46 } 47 47 } 48 48 49 - impl jacquard_common::types::xrpc::XrpcRequest for GetEvent { 49 + impl<'de> jacquard_common::types::xrpc::XrpcRequest<'de> for GetEvent { 50 50 const NSID: &'static str = "tools.ozone.moderation.getEvent"; 51 51 const METHOD: jacquard_common::types::xrpc::XrpcMethod = jacquard_common::types::xrpc::XrpcMethod::Query; 52 52 const OUTPUT_ENCODING: &'static str = "application/json"; 53 - type Output<'de> = GetEventOutput<'de>; 54 - type Err<'de> = jacquard_common::types::xrpc::GenericError<'de>; 53 + type Output = GetEventOutput<'de>; 54 + type Err = jacquard_common::types::xrpc::GenericError<'de>; 55 55 }
+3 -3
crates/jacquard-api/src/tools_ozone/moderation/get_record.rs
··· 98 98 } 99 99 } 100 100 101 - impl jacquard_common::types::xrpc::XrpcRequest for GetRecord<'_> { 101 + impl<'de> jacquard_common::types::xrpc::XrpcRequest<'de> for GetRecord<'de> { 102 102 const NSID: &'static str = "tools.ozone.moderation.getRecord"; 103 103 const METHOD: jacquard_common::types::xrpc::XrpcMethod = jacquard_common::types::xrpc::XrpcMethod::Query; 104 104 const OUTPUT_ENCODING: &'static str = "application/json"; 105 - type Output<'de> = GetRecordOutput<'de>; 106 - type Err<'de> = GetRecordError<'de>; 105 + type Output = GetRecordOutput<'de>; 106 + type Err = GetRecordError<'de>; 107 107 }
+3 -3
crates/jacquard-api/src/tools_ozone/moderation/get_records.rs
··· 48 48 } 49 49 } 50 50 51 - impl jacquard_common::types::xrpc::XrpcRequest for GetRecords<'_> { 51 + impl<'de> jacquard_common::types::xrpc::XrpcRequest<'de> for GetRecords<'de> { 52 52 const NSID: &'static str = "tools.ozone.moderation.getRecords"; 53 53 const METHOD: jacquard_common::types::xrpc::XrpcMethod = jacquard_common::types::xrpc::XrpcMethod::Query; 54 54 const OUTPUT_ENCODING: &'static str = "application/json"; 55 - type Output<'de> = GetRecordsOutput<'de>; 56 - type Err<'de> = jacquard_common::types::xrpc::GenericError<'de>; 55 + type Output = GetRecordsOutput<'de>; 56 + type Err = jacquard_common::types::xrpc::GenericError<'de>; 57 57 }
+3 -3
crates/jacquard-api/src/tools_ozone/moderation/get_repo.rs
··· 92 92 } 93 93 } 94 94 95 - impl jacquard_common::types::xrpc::XrpcRequest for GetRepo<'_> { 95 + impl<'de> jacquard_common::types::xrpc::XrpcRequest<'de> for GetRepo<'de> { 96 96 const NSID: &'static str = "tools.ozone.moderation.getRepo"; 97 97 const METHOD: jacquard_common::types::xrpc::XrpcMethod = jacquard_common::types::xrpc::XrpcMethod::Query; 98 98 const OUTPUT_ENCODING: &'static str = "application/json"; 99 - type Output<'de> = GetRepoOutput<'de>; 100 - type Err<'de> = GetRepoError<'de>; 99 + type Output = GetRepoOutput<'de>; 100 + type Err = GetRepoError<'de>; 101 101 }
+3 -3
crates/jacquard-api/src/tools_ozone/moderation/get_reporter_stats.rs
··· 48 48 } 49 49 } 50 50 51 - impl jacquard_common::types::xrpc::XrpcRequest for GetReporterStats<'_> { 51 + impl<'de> jacquard_common::types::xrpc::XrpcRequest<'de> for GetReporterStats<'de> { 52 52 const NSID: &'static str = "tools.ozone.moderation.getReporterStats"; 53 53 const METHOD: jacquard_common::types::xrpc::XrpcMethod = jacquard_common::types::xrpc::XrpcMethod::Query; 54 54 const OUTPUT_ENCODING: &'static str = "application/json"; 55 - type Output<'de> = GetReporterStatsOutput<'de>; 56 - type Err<'de> = jacquard_common::types::xrpc::GenericError<'de>; 55 + type Output = GetReporterStatsOutput<'de>; 56 + type Err = jacquard_common::types::xrpc::GenericError<'de>; 57 57 }
+3 -3
crates/jacquard-api/src/tools_ozone/moderation/get_repos.rs
··· 48 48 } 49 49 } 50 50 51 - impl jacquard_common::types::xrpc::XrpcRequest for GetRepos<'_> { 51 + impl<'de> jacquard_common::types::xrpc::XrpcRequest<'de> for GetRepos<'de> { 52 52 const NSID: &'static str = "tools.ozone.moderation.getRepos"; 53 53 const METHOD: jacquard_common::types::xrpc::XrpcMethod = jacquard_common::types::xrpc::XrpcMethod::Query; 54 54 const OUTPUT_ENCODING: &'static str = "application/json"; 55 - type Output<'de> = GetReposOutput<'de>; 56 - type Err<'de> = jacquard_common::types::xrpc::GenericError<'de>; 55 + type Output = GetReposOutput<'de>; 56 + type Err = jacquard_common::types::xrpc::GenericError<'de>; 57 57 }
+3 -3
crates/jacquard-api/src/tools_ozone/moderation/get_subjects.rs
··· 48 48 } 49 49 } 50 50 51 - impl jacquard_common::types::xrpc::XrpcRequest for GetSubjects<'_> { 51 + impl<'de> jacquard_common::types::xrpc::XrpcRequest<'de> for GetSubjects<'de> { 52 52 const NSID: &'static str = "tools.ozone.moderation.getSubjects"; 53 53 const METHOD: jacquard_common::types::xrpc::XrpcMethod = jacquard_common::types::xrpc::XrpcMethod::Query; 54 54 const OUTPUT_ENCODING: &'static str = "application/json"; 55 - type Output<'de> = GetSubjectsOutput<'de>; 56 - type Err<'de> = jacquard_common::types::xrpc::GenericError<'de>; 55 + type Output = GetSubjectsOutput<'de>; 56 + type Err = jacquard_common::types::xrpc::GenericError<'de>; 57 57 }
+3 -3
crates/jacquard-api/src/tools_ozone/moderation/query_events.rs
··· 141 141 } 142 142 } 143 143 144 - impl jacquard_common::types::xrpc::XrpcRequest for QueryEvents<'_> { 144 + impl<'de> jacquard_common::types::xrpc::XrpcRequest<'de> for QueryEvents<'de> { 145 145 const NSID: &'static str = "tools.ozone.moderation.queryEvents"; 146 146 const METHOD: jacquard_common::types::xrpc::XrpcMethod = jacquard_common::types::xrpc::XrpcMethod::Query; 147 147 const OUTPUT_ENCODING: &'static str = "application/json"; 148 - type Output<'de> = QueryEventsOutput<'de>; 149 - type Err<'de> = jacquard_common::types::xrpc::GenericError<'de>; 148 + type Output = QueryEventsOutput<'de>; 149 + type Err = jacquard_common::types::xrpc::GenericError<'de>; 150 150 }
+3 -3
crates/jacquard-api/src/tools_ozone/moderation/query_statuses.rs
··· 191 191 } 192 192 } 193 193 194 - impl jacquard_common::types::xrpc::XrpcRequest for QueryStatuses<'_> { 194 + impl<'de> jacquard_common::types::xrpc::XrpcRequest<'de> for QueryStatuses<'de> { 195 195 const NSID: &'static str = "tools.ozone.moderation.queryStatuses"; 196 196 const METHOD: jacquard_common::types::xrpc::XrpcMethod = jacquard_common::types::xrpc::XrpcMethod::Query; 197 197 const OUTPUT_ENCODING: &'static str = "application/json"; 198 - type Output<'de> = QueryStatusesOutput<'de>; 199 - type Err<'de> = jacquard_common::types::xrpc::GenericError<'de>; 198 + type Output = QueryStatusesOutput<'de>; 199 + type Err = jacquard_common::types::xrpc::GenericError<'de>; 200 200 }
+3 -3
crates/jacquard-api/src/tools_ozone/moderation/search_repos.rs
··· 68 68 } 69 69 } 70 70 71 - impl jacquard_common::types::xrpc::XrpcRequest for SearchRepos<'_> { 71 + impl<'de> jacquard_common::types::xrpc::XrpcRequest<'de> for SearchRepos<'de> { 72 72 const NSID: &'static str = "tools.ozone.moderation.searchRepos"; 73 73 const METHOD: jacquard_common::types::xrpc::XrpcMethod = jacquard_common::types::xrpc::XrpcMethod::Query; 74 74 const OUTPUT_ENCODING: &'static str = "application/json"; 75 - type Output<'de> = SearchReposOutput<'de>; 76 - type Err<'de> = jacquard_common::types::xrpc::GenericError<'de>; 75 + type Output = SearchReposOutput<'de>; 76 + type Err = jacquard_common::types::xrpc::GenericError<'de>; 77 77 }
+3 -3
crates/jacquard-api/src/tools_ozone/safelink/add_rule.rs
··· 137 137 } 138 138 } 139 139 140 - impl jacquard_common::types::xrpc::XrpcRequest for AddRule<'_> { 140 + impl<'de> jacquard_common::types::xrpc::XrpcRequest<'de> for AddRule<'de> { 141 141 const NSID: &'static str = "tools.ozone.safelink.addRule"; 142 142 const METHOD: jacquard_common::types::xrpc::XrpcMethod = jacquard_common::types::xrpc::XrpcMethod::Procedure( 143 143 "application/json", 144 144 ); 145 145 const OUTPUT_ENCODING: &'static str = "application/json"; 146 - type Output<'de> = AddRuleOutput<'de>; 147 - type Err<'de> = AddRuleError<'de>; 146 + type Output = AddRuleOutput<'de>; 147 + type Err = AddRuleError<'de>; 148 148 }
+3 -3
crates/jacquard-api/src/tools_ozone/safelink/query_events.rs
··· 86 86 } 87 87 } 88 88 89 - impl jacquard_common::types::xrpc::XrpcRequest for QueryEvents<'_> { 89 + impl<'de> jacquard_common::types::xrpc::XrpcRequest<'de> for QueryEvents<'de> { 90 90 const NSID: &'static str = "tools.ozone.safelink.queryEvents"; 91 91 const METHOD: jacquard_common::types::xrpc::XrpcMethod = jacquard_common::types::xrpc::XrpcMethod::Procedure( 92 92 "application/json", 93 93 ); 94 94 const OUTPUT_ENCODING: &'static str = "application/json"; 95 - type Output<'de> = QueryEventsOutput<'de>; 96 - type Err<'de> = jacquard_common::types::xrpc::GenericError<'de>; 95 + type Output = QueryEventsOutput<'de>; 96 + type Err = jacquard_common::types::xrpc::GenericError<'de>; 97 97 }
+3 -3
crates/jacquard-api/src/tools_ozone/safelink/query_rules.rs
··· 102 102 } 103 103 } 104 104 105 - impl jacquard_common::types::xrpc::XrpcRequest for QueryRules<'_> { 105 + impl<'de> jacquard_common::types::xrpc::XrpcRequest<'de> for QueryRules<'de> { 106 106 const NSID: &'static str = "tools.ozone.safelink.queryRules"; 107 107 const METHOD: jacquard_common::types::xrpc::XrpcMethod = jacquard_common::types::xrpc::XrpcMethod::Procedure( 108 108 "application/json", 109 109 ); 110 110 const OUTPUT_ENCODING: &'static str = "application/json"; 111 - type Output<'de> = QueryRulesOutput<'de>; 112 - type Err<'de> = jacquard_common::types::xrpc::GenericError<'de>; 111 + type Output = QueryRulesOutput<'de>; 112 + type Err = jacquard_common::types::xrpc::GenericError<'de>; 113 113 }
+3 -3
crates/jacquard-api/src/tools_ozone/safelink/remove_rule.rs
··· 120 120 } 121 121 } 122 122 123 - impl jacquard_common::types::xrpc::XrpcRequest for RemoveRule<'_> { 123 + impl<'de> jacquard_common::types::xrpc::XrpcRequest<'de> for RemoveRule<'de> { 124 124 const NSID: &'static str = "tools.ozone.safelink.removeRule"; 125 125 const METHOD: jacquard_common::types::xrpc::XrpcMethod = jacquard_common::types::xrpc::XrpcMethod::Procedure( 126 126 "application/json", 127 127 ); 128 128 const OUTPUT_ENCODING: &'static str = "application/json"; 129 - type Output<'de> = RemoveRuleOutput<'de>; 130 - type Err<'de> = RemoveRuleError<'de>; 129 + type Output = RemoveRuleOutput<'de>; 130 + type Err = RemoveRuleError<'de>; 131 131 }
+3 -3
crates/jacquard-api/src/tools_ozone/safelink/update_rule.rs
··· 126 126 } 127 127 } 128 128 129 - impl jacquard_common::types::xrpc::XrpcRequest for UpdateRule<'_> { 129 + impl<'de> jacquard_common::types::xrpc::XrpcRequest<'de> for UpdateRule<'de> { 130 130 const NSID: &'static str = "tools.ozone.safelink.updateRule"; 131 131 const METHOD: jacquard_common::types::xrpc::XrpcMethod = jacquard_common::types::xrpc::XrpcMethod::Procedure( 132 132 "application/json", 133 133 ); 134 134 const OUTPUT_ENCODING: &'static str = "application/json"; 135 - type Output<'de> = UpdateRuleOutput<'de>; 136 - type Err<'de> = UpdateRuleError<'de>; 135 + type Output = UpdateRuleOutput<'de>; 136 + type Err = UpdateRuleError<'de>; 137 137 }
+4 -4
crates/jacquard-api/src/tools_ozone/server/get_config.rs
··· 46 46 } 47 47 48 48 /// XRPC request marker type 49 - #[derive(Debug, Clone, Copy, PartialEq, Eq, serde::Serialize)] 49 + #[derive(Debug, Clone, Copy, PartialEq, Eq, serde::Serialize, serde::Deserialize)] 50 50 pub struct GetConfig; 51 - impl jacquard_common::types::xrpc::XrpcRequest for GetConfig { 51 + impl<'de> jacquard_common::types::xrpc::XrpcRequest<'de> for GetConfig { 52 52 const NSID: &'static str = "tools.ozone.server.getConfig"; 53 53 const METHOD: jacquard_common::types::xrpc::XrpcMethod = jacquard_common::types::xrpc::XrpcMethod::Query; 54 54 const OUTPUT_ENCODING: &'static str = "application/json"; 55 - type Output<'de> = GetConfigOutput<'de>; 56 - type Err<'de> = jacquard_common::types::xrpc::GenericError<'de>; 55 + type Output = GetConfigOutput<'de>; 56 + type Err = jacquard_common::types::xrpc::GenericError<'de>; 57 57 } 58 58 59 59 #[jacquard_derive::lexicon]
+3 -3
crates/jacquard-api/src/tools_ozone/set/add_values.rs
··· 45 45 } 46 46 } 47 47 48 - impl jacquard_common::types::xrpc::XrpcRequest for AddValues<'_> { 48 + impl<'de> jacquard_common::types::xrpc::XrpcRequest<'de> for AddValues<'de> { 49 49 const NSID: &'static str = "tools.ozone.set.addValues"; 50 50 const METHOD: jacquard_common::types::xrpc::XrpcMethod = jacquard_common::types::xrpc::XrpcMethod::Procedure( 51 51 "application/json", 52 52 ); 53 53 const OUTPUT_ENCODING: &'static str = "application/json"; 54 - type Output<'de> = (); 55 - type Err<'de> = jacquard_common::types::xrpc::GenericError<'de>; 54 + type Output = (); 55 + type Err = jacquard_common::types::xrpc::GenericError<'de>; 56 56 }
+3 -3
crates/jacquard-api/src/tools_ozone/set/delete_set.rs
··· 100 100 } 101 101 } 102 102 103 - impl jacquard_common::types::xrpc::XrpcRequest for DeleteSet<'_> { 103 + impl<'de> jacquard_common::types::xrpc::XrpcRequest<'de> for DeleteSet<'de> { 104 104 const NSID: &'static str = "tools.ozone.set.deleteSet"; 105 105 const METHOD: jacquard_common::types::xrpc::XrpcMethod = jacquard_common::types::xrpc::XrpcMethod::Procedure( 106 106 "application/json", 107 107 ); 108 108 const OUTPUT_ENCODING: &'static str = "application/json"; 109 - type Output<'de> = DeleteSetOutput<'de>; 110 - type Err<'de> = DeleteSetError<'de>; 109 + type Output = DeleteSetOutput<'de>; 110 + type Err = DeleteSetError<'de>; 111 111 }
+3 -3
crates/jacquard-api/src/tools_ozone/set/delete_values.rs
··· 91 91 } 92 92 } 93 93 94 - impl jacquard_common::types::xrpc::XrpcRequest for DeleteValues<'_> { 94 + impl<'de> jacquard_common::types::xrpc::XrpcRequest<'de> for DeleteValues<'de> { 95 95 const NSID: &'static str = "tools.ozone.set.deleteValues"; 96 96 const METHOD: jacquard_common::types::xrpc::XrpcMethod = jacquard_common::types::xrpc::XrpcMethod::Procedure( 97 97 "application/json", 98 98 ); 99 99 const OUTPUT_ENCODING: &'static str = "application/json"; 100 - type Output<'de> = (); 101 - type Err<'de> = DeleteValuesError<'de>; 100 + type Output = (); 101 + type Err = DeleteValuesError<'de>; 102 102 }
+3 -3
crates/jacquard-api/src/tools_ozone/set/get_values.rs
··· 111 111 } 112 112 } 113 113 114 - impl jacquard_common::types::xrpc::XrpcRequest for GetValues<'_> { 114 + impl<'de> jacquard_common::types::xrpc::XrpcRequest<'de> for GetValues<'de> { 115 115 const NSID: &'static str = "tools.ozone.set.getValues"; 116 116 const METHOD: jacquard_common::types::xrpc::XrpcMethod = jacquard_common::types::xrpc::XrpcMethod::Query; 117 117 const OUTPUT_ENCODING: &'static str = "application/json"; 118 - type Output<'de> = GetValuesOutput<'de>; 119 - type Err<'de> = GetValuesError<'de>; 118 + type Output = GetValuesOutput<'de>; 119 + type Err = GetValuesError<'de>; 120 120 }
+3 -3
crates/jacquard-api/src/tools_ozone/set/query_sets.rs
··· 75 75 } 76 76 } 77 77 78 - impl jacquard_common::types::xrpc::XrpcRequest for QuerySets<'_> { 78 + impl<'de> jacquard_common::types::xrpc::XrpcRequest<'de> for QuerySets<'de> { 79 79 const NSID: &'static str = "tools.ozone.set.querySets"; 80 80 const METHOD: jacquard_common::types::xrpc::XrpcMethod = jacquard_common::types::xrpc::XrpcMethod::Query; 81 81 const OUTPUT_ENCODING: &'static str = "application/json"; 82 - type Output<'de> = QuerySetsOutput<'de>; 83 - type Err<'de> = jacquard_common::types::xrpc::GenericError<'de>; 82 + type Output = QuerySetsOutput<'de>; 83 + type Err = jacquard_common::types::xrpc::GenericError<'de>; 84 84 }
+3 -3
crates/jacquard-api/src/tools_ozone/set/upsert_set.rs
··· 59 59 } 60 60 } 61 61 62 - impl jacquard_common::types::xrpc::XrpcRequest for UpsertSet<'_> { 62 + impl<'de> jacquard_common::types::xrpc::XrpcRequest<'de> for UpsertSet<'de> { 63 63 const NSID: &'static str = "tools.ozone.set.upsertSet"; 64 64 const METHOD: jacquard_common::types::xrpc::XrpcMethod = jacquard_common::types::xrpc::XrpcMethod::Procedure( 65 65 "application/json", 66 66 ); 67 67 const OUTPUT_ENCODING: &'static str = "application/json"; 68 - type Output<'de> = UpsertSetOutput<'de>; 69 - type Err<'de> = jacquard_common::types::xrpc::GenericError<'de>; 68 + type Output = UpsertSetOutput<'de>; 69 + type Err = jacquard_common::types::xrpc::GenericError<'de>; 70 70 }
+3 -3
crates/jacquard-api/src/tools_ozone/setting/list_options.rs
··· 73 73 } 74 74 } 75 75 76 - impl jacquard_common::types::xrpc::XrpcRequest for ListOptions<'_> { 76 + impl<'de> jacquard_common::types::xrpc::XrpcRequest<'de> for ListOptions<'de> { 77 77 const NSID: &'static str = "tools.ozone.setting.listOptions"; 78 78 const METHOD: jacquard_common::types::xrpc::XrpcMethod = jacquard_common::types::xrpc::XrpcMethod::Query; 79 79 const OUTPUT_ENCODING: &'static str = "application/json"; 80 - type Output<'de> = ListOptionsOutput<'de>; 81 - type Err<'de> = jacquard_common::types::xrpc::GenericError<'de>; 80 + type Output = ListOptionsOutput<'de>; 81 + type Err = jacquard_common::types::xrpc::GenericError<'de>; 82 82 }
+3 -3
crates/jacquard-api/src/tools_ozone/setting/remove_options.rs
··· 56 56 } 57 57 } 58 58 59 - impl jacquard_common::types::xrpc::XrpcRequest for RemoveOptions<'_> { 59 + impl<'de> jacquard_common::types::xrpc::XrpcRequest<'de> for RemoveOptions<'de> { 60 60 const NSID: &'static str = "tools.ozone.setting.removeOptions"; 61 61 const METHOD: jacquard_common::types::xrpc::XrpcMethod = jacquard_common::types::xrpc::XrpcMethod::Procedure( 62 62 "application/json", 63 63 ); 64 64 const OUTPUT_ENCODING: &'static str = "application/json"; 65 - type Output<'de> = RemoveOptionsOutput<'de>; 66 - type Err<'de> = jacquard_common::types::xrpc::GenericError<'de>; 65 + type Output = RemoveOptionsOutput<'de>; 66 + type Err = jacquard_common::types::xrpc::GenericError<'de>; 67 67 }
+3 -3
crates/jacquard-api/src/tools_ozone/setting/upsert_option.rs
··· 74 74 } 75 75 } 76 76 77 - impl jacquard_common::types::xrpc::XrpcRequest for UpsertOption<'_> { 77 + impl<'de> jacquard_common::types::xrpc::XrpcRequest<'de> for UpsertOption<'de> { 78 78 const NSID: &'static str = "tools.ozone.setting.upsertOption"; 79 79 const METHOD: jacquard_common::types::xrpc::XrpcMethod = jacquard_common::types::xrpc::XrpcMethod::Procedure( 80 80 "application/json", 81 81 ); 82 82 const OUTPUT_ENCODING: &'static str = "application/json"; 83 - type Output<'de> = UpsertOptionOutput<'de>; 84 - type Err<'de> = jacquard_common::types::xrpc::GenericError<'de>; 83 + type Output = UpsertOptionOutput<'de>; 84 + type Err = jacquard_common::types::xrpc::GenericError<'de>; 85 85 }
+3 -3
crates/jacquard-api/src/tools_ozone/signature/find_correlation.rs
··· 48 48 } 49 49 } 50 50 51 - impl jacquard_common::types::xrpc::XrpcRequest for FindCorrelation<'_> { 51 + impl<'de> jacquard_common::types::xrpc::XrpcRequest<'de> for FindCorrelation<'de> { 52 52 const NSID: &'static str = "tools.ozone.signature.findCorrelation"; 53 53 const METHOD: jacquard_common::types::xrpc::XrpcMethod = jacquard_common::types::xrpc::XrpcMethod::Query; 54 54 const OUTPUT_ENCODING: &'static str = "application/json"; 55 - type Output<'de> = FindCorrelationOutput<'de>; 56 - type Err<'de> = jacquard_common::types::xrpc::GenericError<'de>; 55 + type Output = FindCorrelationOutput<'de>; 56 + type Err = jacquard_common::types::xrpc::GenericError<'de>; 57 57 }
+3 -3
crates/jacquard-api/src/tools_ozone/signature/search_accounts.rs
··· 61 61 } 62 62 } 63 63 64 - impl jacquard_common::types::xrpc::XrpcRequest for SearchAccounts<'_> { 64 + impl<'de> jacquard_common::types::xrpc::XrpcRequest<'de> for SearchAccounts<'de> { 65 65 const NSID: &'static str = "tools.ozone.signature.searchAccounts"; 66 66 const METHOD: jacquard_common::types::xrpc::XrpcMethod = jacquard_common::types::xrpc::XrpcMethod::Query; 67 67 const OUTPUT_ENCODING: &'static str = "application/json"; 68 - type Output<'de> = SearchAccountsOutput<'de>; 69 - type Err<'de> = jacquard_common::types::xrpc::GenericError<'de>; 68 + type Output = SearchAccountsOutput<'de>; 69 + type Err = jacquard_common::types::xrpc::GenericError<'de>; 70 70 }
+3 -3
crates/jacquard-api/src/tools_ozone/team/add_member.rs
··· 108 108 } 109 109 } 110 110 111 - impl jacquard_common::types::xrpc::XrpcRequest for AddMember<'_> { 111 + impl<'de> jacquard_common::types::xrpc::XrpcRequest<'de> for AddMember<'de> { 112 112 const NSID: &'static str = "tools.ozone.team.addMember"; 113 113 const METHOD: jacquard_common::types::xrpc::XrpcMethod = jacquard_common::types::xrpc::XrpcMethod::Procedure( 114 114 "application/json", 115 115 ); 116 116 const OUTPUT_ENCODING: &'static str = "application/json"; 117 - type Output<'de> = AddMemberOutput<'de>; 118 - type Err<'de> = AddMemberError<'de>; 117 + type Output = AddMemberOutput<'de>; 118 + type Err = AddMemberError<'de>; 119 119 }
+3 -3
crates/jacquard-api/src/tools_ozone/team/delete_member.rs
··· 98 98 } 99 99 } 100 100 101 - impl jacquard_common::types::xrpc::XrpcRequest for DeleteMember<'_> { 101 + impl<'de> jacquard_common::types::xrpc::XrpcRequest<'de> for DeleteMember<'de> { 102 102 const NSID: &'static str = "tools.ozone.team.deleteMember"; 103 103 const METHOD: jacquard_common::types::xrpc::XrpcMethod = jacquard_common::types::xrpc::XrpcMethod::Procedure( 104 104 "application/json", 105 105 ); 106 106 const OUTPUT_ENCODING: &'static str = "application/json"; 107 - type Output<'de> = (); 108 - type Err<'de> = DeleteMemberError<'de>; 107 + type Output = (); 108 + type Err = DeleteMemberError<'de>; 109 109 }
+3 -3
crates/jacquard-api/src/tools_ozone/team/list_members.rs
··· 70 70 } 71 71 } 72 72 73 - impl jacquard_common::types::xrpc::XrpcRequest for ListMembers<'_> { 73 + impl<'de> jacquard_common::types::xrpc::XrpcRequest<'de> for ListMembers<'de> { 74 74 const NSID: &'static str = "tools.ozone.team.listMembers"; 75 75 const METHOD: jacquard_common::types::xrpc::XrpcMethod = jacquard_common::types::xrpc::XrpcMethod::Query; 76 76 const OUTPUT_ENCODING: &'static str = "application/json"; 77 - type Output<'de> = ListMembersOutput<'de>; 78 - type Err<'de> = jacquard_common::types::xrpc::GenericError<'de>; 77 + type Output = ListMembersOutput<'de>; 78 + type Err = jacquard_common::types::xrpc::GenericError<'de>; 79 79 }
+3 -3
crates/jacquard-api/src/tools_ozone/team/update_member.rs
··· 112 112 } 113 113 } 114 114 115 - impl jacquard_common::types::xrpc::XrpcRequest for UpdateMember<'_> { 115 + impl<'de> jacquard_common::types::xrpc::XrpcRequest<'de> for UpdateMember<'de> { 116 116 const NSID: &'static str = "tools.ozone.team.updateMember"; 117 117 const METHOD: jacquard_common::types::xrpc::XrpcMethod = jacquard_common::types::xrpc::XrpcMethod::Procedure( 118 118 "application/json", 119 119 ); 120 120 const OUTPUT_ENCODING: &'static str = "application/json"; 121 - type Output<'de> = UpdateMemberOutput<'de>; 122 - type Err<'de> = UpdateMemberError<'de>; 121 + type Output = UpdateMemberOutput<'de>; 122 + type Err = UpdateMemberError<'de>; 123 123 }
+3 -3
crates/jacquard-api/src/tools_ozone/verification/grant_verifications.rs
··· 85 85 } 86 86 } 87 87 88 - impl jacquard_common::types::xrpc::XrpcRequest for GrantVerifications<'_> { 88 + impl<'de> jacquard_common::types::xrpc::XrpcRequest<'de> for GrantVerifications<'de> { 89 89 const NSID: &'static str = "tools.ozone.verification.grantVerifications"; 90 90 const METHOD: jacquard_common::types::xrpc::XrpcMethod = jacquard_common::types::xrpc::XrpcMethod::Procedure( 91 91 "application/json", 92 92 ); 93 93 const OUTPUT_ENCODING: &'static str = "application/json"; 94 - type Output<'de> = GrantVerificationsOutput<'de>; 95 - type Err<'de> = jacquard_common::types::xrpc::GenericError<'de>; 94 + type Output = GrantVerificationsOutput<'de>; 95 + type Err = jacquard_common::types::xrpc::GenericError<'de>; 96 96 } 97 97 98 98 #[jacquard_derive::lexicon]
+3 -3
crates/jacquard-api/src/tools_ozone/verification/list_verifications.rs
··· 81 81 } 82 82 } 83 83 84 - impl jacquard_common::types::xrpc::XrpcRequest for ListVerifications<'_> { 84 + impl<'de> jacquard_common::types::xrpc::XrpcRequest<'de> for ListVerifications<'de> { 85 85 const NSID: &'static str = "tools.ozone.verification.listVerifications"; 86 86 const METHOD: jacquard_common::types::xrpc::XrpcMethod = jacquard_common::types::xrpc::XrpcMethod::Query; 87 87 const OUTPUT_ENCODING: &'static str = "application/json"; 88 - type Output<'de> = ListVerificationsOutput<'de>; 89 - type Err<'de> = jacquard_common::types::xrpc::GenericError<'de>; 88 + type Output = ListVerificationsOutput<'de>; 89 + type Err = jacquard_common::types::xrpc::GenericError<'de>; 90 90 }
+3 -3
crates/jacquard-api/src/tools_ozone/verification/revoke_verifications.rs
··· 69 69 } 70 70 } 71 71 72 - impl jacquard_common::types::xrpc::XrpcRequest for RevokeVerifications<'_> { 72 + impl<'de> jacquard_common::types::xrpc::XrpcRequest<'de> for RevokeVerifications<'de> { 73 73 const NSID: &'static str = "tools.ozone.verification.revokeVerifications"; 74 74 const METHOD: jacquard_common::types::xrpc::XrpcMethod = jacquard_common::types::xrpc::XrpcMethod::Procedure( 75 75 "application/json", 76 76 ); 77 77 const OUTPUT_ENCODING: &'static str = "application/json"; 78 - type Output<'de> = RevokeVerificationsOutput<'de>; 79 - type Err<'de> = jacquard_common::types::xrpc::GenericError<'de>; 78 + type Output = RevokeVerificationsOutput<'de>; 79 + type Err = jacquard_common::types::xrpc::GenericError<'de>; 80 80 } 81 81 82 82 ///Error object for failed revocations
+29
crates/jacquard-axum/Cargo.toml
··· 1 + [package] 2 + name = "jacquard-axum" 3 + edition.workspace = true 4 + version.workspace = true 5 + authors.workspace = true 6 + repository.workspace = true 7 + keywords.workspace = true 8 + categories.workspace = true 9 + readme.workspace = true 10 + exclude.workspace = true 11 + homepage.workspace = true 12 + license.workspace = true 13 + description = "Axum server helpers for Jacquard" 14 + 15 + [dependencies] 16 + axum = "0.8.6" 17 + bytes.workspace = true 18 + jacquard = { version = "0.3.0", path = "../jacquard" } 19 + jacquard-common = { version = "0.3.0", path = "../jacquard-common", features = ["reqwest-client"] } 20 + miette.workspace = true 21 + serde.workspace = true 22 + serde_ipld_dagcbor.workspace = true 23 + serde_json.workspace = true 24 + thiserror.workspace = true 25 + tokio.workspace = true 26 + 27 + [dev-dependencies] 28 + axum-test = "18.1.0" 29 + tokio-test = "0.4.4"
+80
crates/jacquard-axum/src/lib.rs
··· 1 + use axum::{ 2 + Router, 3 + body::{Body, Bytes}, 4 + extract::{FromRequest, Request}, 5 + http::{ 6 + StatusCode, 7 + header::{HeaderValue, USER_AGENT}, 8 + uri::PathAndQuery, 9 + }, 10 + response::{ErrorResponse, IntoResponse, Response}, 11 + routing::get, 12 + }; 13 + use jacquard::types::xrpc::{XrpcError, XrpcMethod, XrpcRequest}; 14 + use serde::Serialize; 15 + use serde_json::json; 16 + 17 + pub struct ExtractXrpc<R: XrpcRequest<'static>>(R); 18 + 19 + impl<S, R> FromRequest<S> for ExtractXrpc<R> 20 + where 21 + Bytes: FromRequest<S>, 22 + S: Send + Sync, 23 + R: for<'de> XrpcRequest<'de> + for<'de> serde::Deserialize<'de>, 24 + { 25 + type Rejection = Response; 26 + 27 + async fn from_request(req: Request, state: &S) -> Result<Self, Self::Rejection> { 28 + match R::METHOD { 29 + XrpcMethod::Procedure(encoding) => { 30 + let body = Bytes::from_request(req, state) 31 + .await 32 + .map_err(IntoResponse::into_response)?; 33 + match encoding { 34 + "application/json" => { 35 + let value: R = serde_json::from_slice::<R>(&body).map_err(|e| { 36 + ( 37 + StatusCode::BAD_REQUEST, 38 + serde_json::to_string(&json!({ 39 + "error": "InvalidRequest", 40 + "message": XrpcRequestError::JsonDecodeError(e).to_string() 41 + })) 42 + .expect("Failed to serialize error response"), 43 + ) 44 + .into_response() 45 + })?; 46 + Ok(ExtractXrpc(value)) 47 + } 48 + "*/*" => { 49 + // 50 + todo!() 51 + } 52 + _ => todo!(), 53 + } 54 + } 55 + XrpcMethod::Query => { 56 + if let Some(path_query) = req.uri().path_and_query() { 57 + let path = path_query.path(); 58 + let query = path_query.query(); 59 + if path.ends_with(R::NSID) { 60 + // success 61 + } else { 62 + // wrong endpoint 63 + } 64 + } 65 + 66 + todo!() 67 + } 68 + } 69 + } 70 + } 71 + 72 + #[derive(Debug, thiserror::Error, miette::Diagnostic)] 73 + pub enum XrpcRequestError { 74 + #[error("Unsupported encoding: {0}")] 75 + UnsupportedEncoding(String), 76 + #[error("JSON decode error: {0}")] 77 + JsonDecodeError(serde_json::Error), 78 + #[error("UTF-8 decode error: {0}")] 79 + Utf8DecodeError(std::string::FromUtf8Error), 80 + }
+15
crates/jacquard-common/src/error.rs
··· 1 1 //! Error types for XRPC client operations 2 2 3 3 use bytes::Bytes; 4 + use serde::{Deserialize, Serialize}; 4 5 5 6 use crate::types::xrpc::EncodeError; 6 7 ··· 156 157 #[error("Authentication error: {0:?}")] 157 158 Other(http::HeaderValue), 158 159 } 160 + 161 + impl crate::IntoStatic for AuthError { 162 + type Output = AuthError; 163 + 164 + fn into_static(self) -> Self::Output { 165 + match self { 166 + AuthError::TokenExpired => AuthError::TokenExpired, 167 + AuthError::InvalidToken => AuthError::InvalidToken, 168 + AuthError::RefreshFailed => AuthError::RefreshFailed, 169 + AuthError::NotAuthenticated => AuthError::NotAuthenticated, 170 + AuthError::Other(header) => AuthError::Other(header), 171 + } 172 + } 173 + }
+168 -72
crates/jacquard-common/src/types/xrpc.rs
··· 17 17 }; 18 18 use serde::{Deserialize, Serialize}; 19 19 use smol_str::SmolStr; 20 - use std::fmt::{self, Debug}; 20 + use std::fmt::{self, Debug, Display}; 21 21 use std::{error::Error, marker::PhantomData}; 22 22 use url::Url; 23 23 24 - use crate::IntoStatic; 25 24 use crate::error::TransportError; 26 25 use crate::http_client::HttpClient; 27 26 use crate::types::value::Data; 28 27 use crate::{AuthorizationToken, error::AuthError}; 29 28 use crate::{CowStr, error::XrpcResult}; 29 + use crate::{IntoStatic, error::DecodeError}; 30 30 31 31 /// Error type for encoding XRPC requests 32 32 #[derive(Debug, thiserror::Error, miette::Diagnostic)] ··· 83 83 /// HTTP method, encoding types, and associated output types. 84 84 /// 85 85 /// The trait is implemented on the request parameters/input type itself. 86 - pub trait XrpcRequest: Serialize { 86 + pub trait XrpcRequest<'de>: Serialize + Deserialize<'de> { 87 87 /// The NSID for this XRPC method 88 88 const NSID: &'static str; 89 89 ··· 94 94 const OUTPUT_ENCODING: &'static str; 95 95 96 96 /// Response output type 97 - type Output<'de>: Deserialize<'de> + IntoStatic; 97 + type Output: Deserialize<'de> + IntoStatic; 98 98 99 99 /// Error type for this request 100 - type Err<'de>: Error + Deserialize<'de> + IntoStatic; 100 + type Err: Error + Deserialize<'de> + IntoStatic; 101 101 102 102 /// Encode the request body for procedures. 103 103 /// ··· 105 105 fn encode_body(&self) -> Result<Vec<u8>, EncodeError> { 106 106 Ok(serde_json::to_vec(self)?) 107 107 } 108 + 109 + /// Decode the request body for procedures. 110 + /// 111 + /// Default implementation deserializes from JSON. Override for non-JSON encodings. 112 + fn decode_body(&self, body: &'de [u8]) -> Result<Box<Self>, DecodeError> { 113 + let body: Self = serde_json::from_slice(body).map_err(|e| DecodeError::Json(e))?; 114 + 115 + Ok(Box::new(body)) 116 + } 108 117 } 109 118 110 119 /// Error type for XRPC endpoints that don't define any errors 111 120 #[derive(Debug, Clone, PartialEq, Eq, Deserialize, Serialize)] 112 - #[serde(bound(deserialize = "'de: 'a"))] 113 - pub struct GenericError<'a>(Data<'a>); 121 + pub struct GenericError<'a>(#[serde(borrow)] Data<'a>); 114 122 115 - impl fmt::Display for GenericError<'_> { 123 + impl<'de> fmt::Display for GenericError<'de> { 116 124 fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { 117 125 self.0.fmt(f) 118 126 } ··· 270 278 /// inspect the header for `error="invalid_token"` or `error="use_dpop_nonce"` and react 271 279 /// (refresh/retry). If the header is absent, the 401 body flows through to `Response` and 272 280 /// can be parsed/mapped to `AuthError` as appropriate. 273 - pub async fn send<R: XrpcRequest + Send>(self, request: &R) -> XrpcResult<Response<R>> { 281 + pub async fn send<'de, R>(self, request: &'de R) -> XrpcResult<Response<'de, R>> 282 + where 283 + R: XrpcRequest<'de> + Send, 284 + { 274 285 let http_request = build_http_request(&self.base, request, &self.opts) 275 286 .map_err(crate::error::TransportError::from)?; 276 287 ··· 282 293 283 294 process_response(http_response) 284 295 } 296 + 297 + /// Send the given typed XRPC request and return an owned response wrapper. 298 + /// 299 + /// Note on 401 handling: 300 + /// - When the server returns 401 with a `WWW-Authenticate` header, this surfaces as 301 + /// `ClientError::Auth(AuthError::Other(header))` so higher layers (e.g., OAuth/DPoP) can 302 + /// inspect the header for `error="invalid_token"` or `error="use_dpop_nonce"` and react 303 + /// (refresh/retry). If the header is absent, the 401 body flows through to `Response` and 304 + /// can be parsed/mapped to `AuthError` as appropriate. 305 + pub async fn send_owned<'de, R, S>(self, request: R) -> XrpcResult<OwnedResponse<S>> 306 + where 307 + R: XrpcRequest<'de> + Send + 'de, 308 + S: XrpcRequest<'static>, 309 + { 310 + let http_request = build_http_request(&self.base, &request, &self.opts) 311 + .map_err(crate::error::TransportError::from)?; 312 + 313 + let http_response = self 314 + .client 315 + .send_http(http_request) 316 + .await 317 + .map_err(|e| crate::error::TransportError::Other(Box::new(e)))?; 318 + 319 + let resp: XrpcResult<Response<'de, R>> = process_response(http_response); 320 + match resp { 321 + Ok(response) => Ok(response.owned()), 322 + Err(err) => Err(err), 323 + } 324 + } 285 325 } 286 326 287 327 /// Process the HTTP response from the server into a proper xrpc response statelessly. 288 328 /// 289 329 /// Exposed to make things more easily pluggable 290 330 #[inline] 291 - pub fn process_response<R: XrpcRequest + Send>( 331 + pub fn process_response<'de, R: XrpcRequest<'de> + Send>( 292 332 http_response: http::Response<Vec<u8>>, 293 - ) -> XrpcResult<Response<R>> { 333 + ) -> XrpcResult<Response<'de, R>> { 294 334 let status = http_response.status(); 295 335 // If the server returned 401 with a WWW-Authenticate header, expose it so higher layers 296 336 // (e.g., DPoP handling) can detect `error="invalid_token"` and trigger refresh. ··· 340 380 } 341 381 342 382 /// Build an HTTP request for an XRPC call given base URL and options 343 - pub fn build_http_request<R: XrpcRequest>( 383 + pub fn build_http_request<'de, R: XrpcRequest<'de>>( 344 384 base: &Url, 345 385 req: &R, 346 386 opts: &CallOptions<'_>, ··· 418 458 /// XRPC response wrapper that owns the response buffer 419 459 /// 420 460 /// Allows borrowing from the buffer when parsing to avoid unnecessary allocations. 421 - /// Supports both borrowed parsing (with `parse()`) and owned parsing (with `into_output()`). 422 - pub struct Response<R: XrpcRequest> { 461 + pub struct Response<'de, R: XrpcRequest<'de>> { 462 + buffer: Bytes, 463 + status: StatusCode, 464 + _marker: PhantomData<&'de R>, 465 + } 466 + 467 + /// Owned response wrapper which allows taking ownership of the resulting response type 468 + pub struct OwnedResponse<R: XrpcRequest<'static>> { 423 469 buffer: Bytes, 424 470 status: StatusCode, 425 471 _marker: PhantomData<R>, 426 472 } 427 473 428 - impl<R: XrpcRequest> Response<R> { 474 + impl<'de, R: XrpcRequest<'de>> Response<'de, R> { 429 475 /// Create a new response from a buffer and status code 430 476 pub fn new(buffer: Bytes, status: StatusCode) -> Self { 431 477 Self { ··· 441 487 } 442 488 443 489 /// Parse the response, borrowing from the internal buffer 444 - pub fn parse(&self) -> Result<R::Output<'_>, XrpcError<R::Err<'_>>> { 490 + pub fn parse(&'de self) -> Result<R::Output, XrpcError<R::Err>> { 445 491 // Use a helper to make lifetime inference work 446 - fn parse_output<'b, R: XrpcRequest>( 492 + fn parse_output<'b, R: XrpcRequest<'b>>( 447 493 buffer: &'b [u8], 448 - ) -> Result<R::Output<'b>, serde_json::Error> { 494 + ) -> Result<R::Output, serde_json::Error> { 449 495 serde_json::from_slice(buffer) 450 496 } 451 497 452 - fn parse_error<'b, R: XrpcRequest>( 498 + fn parse_error<'b, R: XrpcRequest<'b>>( 453 499 buffer: &'b [u8], 454 - ) -> Result<R::Err<'b>, serde_json::Error> { 500 + ) -> Result<R::Err, serde_json::Error> { 455 501 serde_json::from_slice(buffer) 456 502 } 457 503 458 504 // 200: parse as output 459 505 if self.status.is_success() { 460 - match parse_output::<R>(&self.buffer) { 506 + match parse_output::<'de, R>(&self.buffer) { 461 507 Ok(output) => Ok(output), 462 508 Err(e) => Err(XrpcError::Decode(e)), 463 509 } 464 510 // 400: try typed XRPC error, fallback to generic error 465 511 } else if self.status.as_u16() == 400 { 466 - match parse_error::<R>(&self.buffer) { 512 + match parse_error::<'de, R>(&self.buffer) { 467 513 Ok(error) => Err(XrpcError::Xrpc(error)), 468 514 Err(_) => { 469 515 // Fallback to generic error (InvalidRequest, ExpiredToken, etc.) ··· 474 520 generic.http_status = self.status; 475 521 // Map auth-related errors to AuthError 476 522 match generic.error.as_str() { 477 - "ExpiredToken" => Err(XrpcError::Auth(AuthError::TokenExpired)), 478 - "InvalidToken" => Err(XrpcError::Auth(AuthError::InvalidToken)), 523 + "ExpiredToken" => { 524 + Err(XrpcError::<R::Err>::Auth(AuthError::TokenExpired)) 525 + } 526 + "InvalidToken" => { 527 + Err(XrpcError::<R::Err>::Auth(AuthError::InvalidToken)) 528 + } 479 529 _ => Err(XrpcError::Generic(generic)), 480 530 } 481 531 } ··· 491 541 generic.method = R::METHOD.as_str(); 492 542 generic.http_status = self.status; 493 543 match generic.error.as_str() { 494 - "ExpiredToken" => Err(XrpcError::Auth(AuthError::TokenExpired)), 495 - "InvalidToken" => Err(XrpcError::Auth(AuthError::InvalidToken)), 496 - _ => Err(XrpcError::Auth(AuthError::NotAuthenticated)), 544 + "ExpiredToken" => Err(XrpcError::<R::Err>::Auth(AuthError::TokenExpired)), 545 + "InvalidToken" => Err(XrpcError::<R::Err>::Auth(AuthError::InvalidToken)), 546 + _ => Err(XrpcError::<R::Err>::Auth(AuthError::NotAuthenticated)), 497 547 } 498 548 } 499 549 Err(e) => Err(XrpcError::Decode(e)), ··· 501 551 } 502 552 } 503 553 554 + /// Get the raw buffer 555 + pub fn buffer(&self) -> &Bytes { 556 + &self.buffer 557 + } 558 + 559 + /// Take ownership of the response so the original can be dropped 560 + pub fn owned<S>(&self) -> OwnedResponse<S> 561 + where 562 + S: XrpcRequest<'static>, 563 + { 564 + OwnedResponse { 565 + buffer: self.buffer.clone(), 566 + status: self.status, 567 + _marker: std::marker::PhantomData, 568 + } 569 + } 570 + } 571 + 572 + impl<R: XrpcRequest<'static>> OwnedResponse<R> { 504 573 /// Parse the response into an owned output 505 - pub fn into_output(self) -> Result<R::Output<'static>, XrpcError<R::Err<'static>>> 574 + pub fn output(self) -> Result<R::Output, XrpcError<R::Err>> 506 575 where 507 - for<'a> R::Output<'a>: IntoStatic<Output = R::Output<'static>>, 508 - for<'a> R::Err<'a>: IntoStatic<Output = R::Err<'static>>, 576 + for<'a> R::Output: IntoStatic<Output = R::Output>, 577 + for<'a> R::Err: IntoStatic<Output = R::Err>, 509 578 { 510 579 // Use a helper to make lifetime inference work 511 - fn parse_output<'b, R: XrpcRequest>( 512 - buffer: &'b [u8], 513 - ) -> Result<R::Output<'b>, serde_json::Error> { 514 - serde_json::from_slice(buffer) 580 + fn parse_output<'b, R: XrpcRequest<'b>>( 581 + buffer: Box<[u8]>, 582 + ) -> Result<R::Output, serde_json::Error> { 583 + let buf: &'static [u8] = Box::leak(buffer); 584 + serde_json::from_slice(buf) 515 585 } 516 586 517 - fn parse_error<'b, R: XrpcRequest>( 518 - buffer: &'b [u8], 519 - ) -> Result<R::Err<'b>, serde_json::Error> { 520 - serde_json::from_slice(buffer) 587 + fn parse_error<'b, R: XrpcRequest<'b>>( 588 + buffer: Box<[u8]>, 589 + ) -> Result<R::Err, serde_json::Error> { 590 + let buf: &'static [u8] = Box::leak(buffer); 591 + serde_json::from_slice(buf) 521 592 } 522 593 523 594 // 200: parse as output 524 595 if self.status.is_success() { 525 - match parse_output::<R>(&self.buffer) { 596 + match parse_output::<'static, R>(Box::from(self.buffer.as_ref())) { 526 597 Ok(output) => Ok(output.into_static()), 527 - Err(e) => Err(XrpcError::Decode(e)), 598 + Err(e) => Err(XrpcError::<R::Err>::Decode(e).into_static()), 528 599 } 529 600 // 400: try typed XRPC error, fallback to generic error 530 601 } else if self.status.as_u16() == 400 { 531 - match parse_error::<R>(&self.buffer) { 532 - Ok(error) => Err(XrpcError::Xrpc(error.into_static())), 602 + let result = match parse_error::<'static, R>(Box::from(self.buffer.as_ref())) { 603 + Ok(error) => XrpcError::Xrpc(error), 533 604 Err(_) => { 534 605 // Fallback to generic error (InvalidRequest, ExpiredToken, etc.) 535 606 match serde_json::from_slice::<GenericXrpcError>(&self.buffer) { ··· 539 610 generic.http_status = self.status; 540 611 // Map auth-related errors to AuthError 541 612 match generic.error.as_ref() { 542 - "ExpiredToken" => Err(XrpcError::Auth(AuthError::TokenExpired)), 543 - "InvalidToken" => Err(XrpcError::Auth(AuthError::InvalidToken)), 544 - _ => Err(XrpcError::Generic(generic)), 613 + "ExpiredToken" => { 614 + XrpcError::<R::Err>::Auth(AuthError::TokenExpired) 615 + } 616 + "InvalidToken" => { 617 + XrpcError::<R::Err>::Auth(AuthError::InvalidToken) 618 + } 619 + _ => XrpcError::Generic(generic), 545 620 } 546 621 } 547 - Err(e) => Err(XrpcError::Decode(e)), 622 + Err(e) => XrpcError::Decode(e), 548 623 } 549 624 } 550 - } 625 + }; 626 + Err(result.into_static()) 551 627 // 401: always auth error 552 628 } else { 553 - match serde_json::from_slice::<GenericXrpcError>(&self.buffer) { 629 + let result = match serde_json::from_slice::<GenericXrpcError>(&self.buffer) { 554 630 Ok(mut generic) => { 555 631 let status = self.status; 556 632 generic.nsid = R::NSID; 557 633 generic.method = R::METHOD.as_str(); 558 634 generic.http_status = status; 559 635 match generic.error.as_ref() { 560 - "ExpiredToken" => Err(XrpcError::Auth(AuthError::TokenExpired)), 561 - "InvalidToken" => Err(XrpcError::Auth(AuthError::InvalidToken)), 562 - _ => Err(XrpcError::Auth(AuthError::NotAuthenticated)), 636 + "ExpiredToken" => XrpcError::<R::Err>::Auth(AuthError::TokenExpired), 637 + "InvalidToken" => XrpcError::<R::Err>::Auth(AuthError::InvalidToken), 638 + _ => XrpcError::<R::Err>::Auth(AuthError::NotAuthenticated), 563 639 } 564 640 } 565 - Err(e) => Err(XrpcError::Decode(e)), 566 - } 641 + Err(e) => XrpcError::Decode(e), 642 + }; 643 + Err(result.into_static()) 567 644 } 568 645 } 569 - 570 - /// Get the raw buffer 571 - pub fn buffer(&self) -> &Bytes { 572 - &self.buffer 573 - } 574 646 } 575 647 576 648 /// Generic XRPC error format for untyped errors like InvalidRequest 577 649 /// 578 650 /// Used when the error doesn't match the endpoint's specific error enum 579 - #[derive(Debug, Clone, Deserialize)] 651 + #[derive(Debug, Clone, Deserialize, Serialize)] 580 652 pub struct GenericXrpcError { 581 653 /// Error code (e.g., "InvalidRequest") 582 654 pub error: SmolStr, ··· 611 683 } 612 684 } 613 685 686 + impl IntoStatic for GenericXrpcError { 687 + type Output = Self; 688 + 689 + fn into_static(self) -> Self::Output { 690 + self 691 + } 692 + } 693 + 614 694 impl std::error::Error for GenericXrpcError {} 615 695 616 696 /// XRPC-specific errors returned from endpoints ··· 618 698 /// Represents errors returned in the response body 619 699 /// Type parameter `E` is the endpoint's specific error enum type. 620 700 #[derive(Debug, thiserror::Error, miette::Diagnostic)] 621 - pub enum XrpcError<E: std::error::Error + IntoStatic> { 701 + pub enum XrpcError<E: Debug + Display + IntoStatic> { 622 702 /// Typed XRPC error from the endpoint's specific error enum 623 703 #[error("XRPC error: {0}")] 624 704 #[diagnostic(code(jacquard_common::xrpc::typed))] ··· 640 720 Decode(#[from] serde_json::Error), 641 721 } 642 722 723 + impl<E: std::error::Error + IntoStatic> IntoStatic for XrpcError<E> 724 + where 725 + <E as crate::into_static::IntoStatic>::Output: IntoStatic, 726 + <E as crate::into_static::IntoStatic>::Output: Debug + Display, 727 + { 728 + type Output = XrpcError<E::Output>; 729 + fn into_static(self) -> Self::Output { 730 + match self { 731 + XrpcError::Xrpc(e) => XrpcError::Xrpc(e.into_static()), 732 + XrpcError::Auth(e) => XrpcError::Auth(e.into_static()), 733 + XrpcError::Generic(e) => XrpcError::Generic(e), 734 + XrpcError::Decode(e) => XrpcError::Decode(e), 735 + } 736 + } 737 + } 738 + 643 739 #[cfg(test)] 644 740 mod tests { 645 741 use super::*; 646 742 use serde::{Deserialize, Serialize}; 647 743 648 - #[derive(Serialize)] 744 + #[derive(Serialize, Deserialize)] 649 745 struct DummyReq; 650 746 651 747 #[derive(Deserialize, Debug, thiserror::Error)] ··· 659 755 } 660 756 } 661 757 662 - impl XrpcRequest for DummyReq { 758 + impl<'de> XrpcRequest<'de> for DummyReq { 663 759 const NSID: &'static str = "test.dummy"; 664 760 const METHOD: XrpcMethod = XrpcMethod::Procedure("application/json"); 665 761 const OUTPUT_ENCODING: &'static str = "application/json"; 666 - type Output<'de> = (); 667 - type Err<'de> = DummyErr<'de>; 762 + type Output = (); 763 + type Err = DummyErr<'de>; 668 764 } 669 765 670 766 #[test] ··· 706 802 707 803 #[test] 708 804 fn no_double_slash_in_path() { 709 - #[derive(Serialize)] 805 + #[derive(Serialize, Deserialize)] 710 806 struct Req; 711 807 #[derive(Deserialize, Debug, thiserror::Error)] 712 808 #[error("{0}")] ··· 717 813 Err(self.0.into_static()) 718 814 } 719 815 } 720 - impl XrpcRequest for Req { 816 + impl<'de> XrpcRequest<'de> for Req { 721 817 const NSID: &'static str = "com.example.test"; 722 818 const METHOD: XrpcMethod = XrpcMethod::Query; 723 819 const OUTPUT_ENCODING: &'static str = "application/json"; 724 - type Output<'de> = (); 725 - type Err<'de> = Err<'de>; 820 + type Output = (); 821 + type Err = Err<'de>; 726 822 } 727 823 728 824 let opts = CallOptions::default(); ··· 749 845 async { CallOptions::default() } 750 846 } 751 847 /// Send an XRPC request and parse the response 752 - fn send<R: XrpcRequest + Send>( 753 - self, 754 - request: &R, 755 - ) -> impl Future<Output = XrpcResult<Response<R>>>; 848 + fn send<'de, R: XrpcRequest<'de> + Send>( 849 + &self, 850 + request: &'de R, 851 + ) -> impl Future<Output = XrpcResult<Response<'de, R>>>; 756 852 }
+16 -10
crates/jacquard-identity/src/lib.rs
··· 19 19 ResolverOptions, 20 20 }; 21 21 use bytes::Bytes; 22 - use jacquard_api::com_atproto::identity::resolve_did; 22 + use jacquard_api::com_atproto::identity::resolve_did::{self, ResolveDid}; 23 23 use jacquard_api::com_atproto::identity::resolve_handle::ResolveHandle; 24 24 use jacquard_common::error::TransportError; 25 25 use jacquard_common::http_client::HttpClient; 26 26 use jacquard_common::types::did::Did; 27 27 use jacquard_common::types::did_doc::DidDocument; 28 28 use jacquard_common::types::ident::AtIdentifier; 29 - use jacquard_common::types::xrpc::XrpcExt; 29 + use jacquard_common::types::xrpc::{OwnedResponse, XrpcExt}; 30 30 use jacquard_common::{IntoStatic, types::string::Handle}; 31 31 use percent_encoding::percent_decode_str; 32 32 use reqwest::StatusCode; ··· 199 199 Some(u) => u.clone(), 200 200 None => return Err(IdentityError::InvalidWellKnown), 201 201 }; 202 - let req = ResolveHandle::new().handle((*handle).clone()).build(); 202 + let req = ResolveHandle::new() 203 + .handle(handle.clone().into_static()) 204 + .build(); 203 205 let resp = self 204 206 .http 205 207 .xrpc(pds) 206 208 .send(&req) 207 209 .await 208 210 .map_err(|e| IdentityError::Xrpc(e.to_string()))?; 209 - let out = resp 210 - .into_output() 211 + let owned: OwnedResponse<ResolveHandle<'static>> = resp.owned(); 212 + let out = owned 213 + .output() 211 214 .map_err(|e| IdentityError::Xrpc(e.to_string()))?; 212 215 Did::new_owned(out.did.as_str()) 213 216 .map(|d| d.into_static()) ··· 230 233 .send(&req) 231 234 .await 232 235 .map_err(|e| IdentityError::Xrpc(e.to_string()))?; 233 - let out = resp 234 - .into_output() 236 + let owned: OwnedResponse<ResolveDid<'static>> = resp.owned(); 237 + let out = owned 238 + .output() 235 239 .map_err(|e| IdentityError::Xrpc(e.to_string()))?; 236 240 let doc_json = serde_json::to_value(&out.did_doc)?; 237 241 let s = serde_json::to_string(&doc_json)?; ··· 255 259 }; 256 260 let mut url = base; 257 261 url.set_path("/xrpc/com.bad-example.identity.resolveMiniDoc"); 258 - if let Ok(qs) = 259 - serde_html_form::to_string(&resolve_did::ResolveDid::new().did(did.clone()).build()) 260 - { 262 + if let Ok(qs) = serde_html_form::to_string( 263 + &resolve_did::ResolveDid::new() 264 + .did(did.clone().into_static()) 265 + .build(), 266 + ) { 261 267 url.set_query(Some(&qs)); 262 268 } 263 269 let (buf, status) = self.get_json_bytes(url).await?;
+25 -8
crates/jacquard-lexicon/src/codegen.rs
··· 2044 2044 quote! {} 2045 2045 }; 2046 2046 2047 + // Generate decode_body() method for binary inputs 2048 + let decode_body_method = if is_binary_input { 2049 + quote! { 2050 + fn decode_body( 2051 + &self, 2052 + body: &'de [u8], 2053 + ) -> Result<Box<Self>, jacquard_common::error::DecodeError> { 2054 + Ok(Box::new(Self { 2055 + body: bytes::Bytes::copy_from_slice(body), 2056 + })) 2057 + } 2058 + } 2059 + } else { 2060 + quote! {} 2061 + }; 2062 + 2047 2063 if has_params { 2048 2064 // Implement on the params/input struct itself 2049 2065 let request_ident = syn::Ident::new(type_base, proc_macro2::Span::call_site()); 2050 2066 let impl_target = if params_has_lifetime { 2051 - quote! { #request_ident<'_> } 2067 + quote! { #request_ident<'de> } 2052 2068 } else { 2053 2069 quote! { #request_ident } 2054 2070 }; 2055 2071 2056 2072 Ok(quote! { 2057 - impl jacquard_common::types::xrpc::XrpcRequest for #impl_target { 2073 + impl<'de> jacquard_common::types::xrpc::XrpcRequest<'de> for #impl_target { 2058 2074 const NSID: &'static str = #nsid; 2059 2075 const METHOD: jacquard_common::types::xrpc::XrpcMethod = #method; 2060 2076 const OUTPUT_ENCODING: &'static str = #output_encoding; 2061 2077 2062 - type Output<'de> = #output_type; 2063 - type Err<'de> = #error_type; 2078 + type Output = #output_type; 2079 + type Err = #error_type; 2064 2080 2065 2081 #encode_body_method 2082 + #decode_body_method 2066 2083 } 2067 2084 }) 2068 2085 } else { ··· 2071 2088 2072 2089 Ok(quote! { 2073 2090 /// XRPC request marker type 2074 - #[derive(Debug, Clone, Copy, PartialEq, Eq, serde::Serialize)] 2091 + #[derive(Debug, Clone, Copy, PartialEq, Eq, serde::Serialize, serde::Deserialize)] 2075 2092 pub struct #request_ident; 2076 2093 2077 - impl jacquard_common::types::xrpc::XrpcRequest for #request_ident { 2094 + impl<'de> jacquard_common::types::xrpc::XrpcRequest<'de> for #request_ident { 2078 2095 const NSID: &'static str = #nsid; 2079 2096 const METHOD: jacquard_common::types::xrpc::XrpcMethod = #method; 2080 2097 const OUTPUT_ENCODING: &'static str = #output_encoding; 2081 2098 2082 - type Output<'de> = #output_type; 2083 - type Err<'de> = #error_type; 2099 + type Output = #output_type; 2100 + type Err = #error_type; 2084 2101 } 2085 2102 }) 2086 2103 }
+19 -23
crates/jacquard-oauth/src/client.rs
··· 11 11 }; 12 12 use jacquard_common::{ 13 13 AuthorizationToken, CowStr, IntoStatic, 14 - error::{AuthError, ClientError, TransportError, XrpcResult}, 14 + error::{ClientError, TransportError, XrpcResult}, 15 15 http_client::HttpClient, 16 16 types::{ 17 17 did::Did, 18 - xrpc::{ 19 - CallOptions, Response, XrpcClient, XrpcExt, XrpcRequest, build_http_request, 20 - process_response, 21 - }, 18 + xrpc::{CallOptions, Response, XrpcClient, XrpcExt, build_http_request, process_response}, 22 19 }, 23 20 }; 24 21 use jacquard_identity::JacquardResolver; ··· 378 375 self.options.read().await.clone() 379 376 } 380 377 381 - async fn send<R: jacquard_common::types::xrpc::XrpcRequest + Send>( 382 - self, 383 - request: &R, 384 - ) -> XrpcResult<Response<R>> { 378 + async fn send<'de, R: jacquard_common::types::xrpc::XrpcRequest<'de> + Send>( 379 + &self, 380 + request: &'de R, 381 + ) -> XrpcResult<Response<'de, R>> { 385 382 let base_uri = self.base_uri(); 386 383 let mut opts = self.options.read().await.clone(); 387 384 opts.auth = Some(self.access_token().await); ··· 394 391 .await 395 392 .map_err(|e| TransportError::Other(Box::new(e)))?; 396 393 drop(guard); 397 - let res = process_response(http_response); 398 - if is_invalid_token_response(&res) { 394 + if is_invalid_token_response(&http_response) { 399 395 opts.auth = Some( 400 396 self.refresh() 401 397 .await ··· 411 407 .map_err(|e| TransportError::Other(Box::new(e)))?; 412 408 process_response(http_response) 413 409 } else { 414 - res 410 + process_response(http_response) 415 411 } 416 412 } 417 413 } 418 414 419 - fn is_invalid_token_response<R: XrpcRequest>(response: &XrpcResult<Response<R>>) -> bool { 420 - match response { 421 - Err(ClientError::Auth(AuthError::InvalidToken)) => true, 422 - Err(ClientError::Auth(AuthError::Other(value))) => value 423 - .to_str() 424 - .is_ok_and(|s| s.starts_with("DPoP ") && s.contains("error=\"invalid_token\"")), 425 - Ok(resp) => match resp.parse() { 426 - Err(jacquard_common::types::xrpc::XrpcError::Auth(AuthError::InvalidToken)) => true, 427 - _ => false, 428 - }, 429 - _ => false, 415 + fn is_invalid_token_response(response: &http::Response<Vec<u8>>) -> bool { 416 + let status = response.status(); 417 + if status.as_u16() == 401 { 418 + if let Some(www_auth) = response 419 + .headers() 420 + .get("WWW-Authenticate") 421 + .and_then(|v| v.to_str().ok()) 422 + { 423 + return www_auth.starts_with("DPoP") && www_auth.contains(r#"error="invalid_token""#); 424 + } 430 425 } 426 + false 431 427 }
+4 -4
crates/jacquard/src/client.rs
··· 248 248 fn opts(&self) -> impl Future<Output = CallOptions<'_>> { 249 249 self.inner.opts() 250 250 } 251 - fn send<R: XrpcRequest + Send>( 252 - self, 253 - request: &R, 254 - ) -> impl Future<Output = XrpcResult<Response<R>>> { 251 + fn send<'de, R: XrpcRequest<'de> + Send>( 252 + &self, 253 + request: &'de R, 254 + ) -> impl Future<Output = XrpcResult<Response<'de, R>>> { 255 255 async move { self.inner.send(request).await } 256 256 } 257 257 }
+16 -14
crates/jacquard/src/client/credential_session.rs
··· 1 1 use std::sync::Arc; 2 2 3 - use jacquard_api::com_atproto::server::refresh_session::RefreshSession; 3 + use jacquard_api::com_atproto::server::{ 4 + create_session::{CreateSession, CreateSessionOutput}, 5 + refresh_session::RefreshSession, 6 + }; 4 7 use jacquard_common::{ 5 8 AuthorizationToken, CowStr, IntoStatic, 6 9 error::{AuthError, ClientError, XrpcResult}, ··· 8 11 session::SessionStore, 9 12 types::{ 10 13 did::Did, 11 - xrpc::{CallOptions, Response, XrpcClient, XrpcError, XrpcExt, XrpcRequest}, 14 + xrpc::{CallOptions, Response, XrpcClient, XrpcExt, XrpcRequest}, 12 15 }, 13 16 }; 14 17 use tokio::sync::RwLock; ··· 129 132 .send(&RefreshSession) 130 133 .await?; 131 134 let refresh = response 132 - .into_output() 135 + .owned::<RefreshSession>() 136 + .output() 133 137 .map_err(|_| ClientError::Auth(jacquard_common::error::AuthError::RefreshFailed))?; 134 138 135 139 let new_session: AtpSession = refresh.into(); ··· 238 242 .with_options(self.options.read().await.clone()) 239 243 .send(&req) 240 244 .await?; 241 - let out = resp 242 - .into_output() 245 + let out: CreateSessionOutput<'_> = resp 246 + .owned::<CreateSession<'_>>() 247 + .output() 243 248 .map_err(|_| ClientError::Auth(AuthError::NotAuthenticated))?; 244 249 let session = AtpSession::from(out); 245 250 ··· 414 419 ) 415 420 } 416 421 } 417 - async fn send<R: jacquard_common::types::xrpc::XrpcRequest + Send>( 418 - self, 419 - request: &R, 420 - ) -> XrpcResult<Response<R>> { 422 + async fn send<'de, R: jacquard_common::types::xrpc::XrpcRequest<'de> + Send>( 423 + &self, 424 + request: &'de R, 425 + ) -> XrpcResult<Response<'de, R>> { 421 426 let base_uri = self.base_uri(); 422 427 let auth = self.access_token().await; 423 428 let mut opts = self.options.read().await.clone(); ··· 443 448 } 444 449 } 445 450 446 - fn is_expired<R: XrpcRequest>(response: &XrpcResult<Response<R>>) -> bool { 451 + fn is_expired<'de, R: XrpcRequest<'de>>(response: &XrpcResult<Response<'de, R>>) -> bool { 447 452 match response { 448 453 Err(ClientError::Auth(AuthError::TokenExpired)) => true, 449 - Ok(resp) => match resp.parse() { 450 - Err(XrpcError::Auth(AuthError::TokenExpired)) => true, 451 - _ => false, 452 - }, 454 + 453 455 _ => false, 454 456 } 455 457 }
+2 -1
crates/jacquard/src/main.rs
··· 76 76 let timeline = agent 77 77 .send(&GetTimeline::new().limit(5).build()) 78 78 .await? 79 - .into_output()?; 79 + .owned::<GetTimeline>() 80 + .output()?; 80 81 for (i, post) in timeline.feed.iter().enumerate() { 81 82 println!("\n{}. by {}", i + 1, post.post.author.handle); 82 83 println!(