AWS SDK

AWS SDK

rev. 963a7658bbf225c6d1a1c7fb193fd36768750666

Files changed:

tmp-codegen-diff/aws-sdk/Cargo.lock

@@ -311,311 +405,405 @@
  331    331   
checksum = "1505bd5d3d116872e7271a6d4e16d81d0c8570876c8de68093a09ac269d8aac0"
  332    332   
  333    333   
[[package]]
  334    334   
name = "autocfg"
  335    335   
version = "1.5.0"
  336    336   
source = "registry+https://github.com/rust-lang/crates.io-index"
  337    337   
checksum = "c08606f8c3cbf4ce6ec8e28fb0014a2c086708fe954eaa885384a6165172e7e8"
  338    338   
  339    339   
[[package]]
  340    340   
name = "aws-config"
  341         -
version = "1.8.5"
         341  +
version = "1.8.6"
  342    342   
dependencies = [
  343    343   
 "aws-credential-types",
  344    344   
 "aws-runtime",
  345    345   
 "aws-sdk-sso",
  346    346   
 "aws-sdk-ssooidc",
  347    347   
 "aws-sdk-sts",
  348    348   
 "aws-smithy-async",
  349    349   
 "aws-smithy-http",
  350    350   
 "aws-smithy-http-client",
  351    351   
 "aws-smithy-json",
  352    352   
 "aws-smithy-runtime",
  353    353   
 "aws-smithy-runtime-api",
  354    354   
 "aws-smithy-types",
  355    355   
 "aws-types",
  356    356   
 "bytes",
  357    357   
 "fastrand 2.3.0",
  358    358   
 "futures-util",
  359    359   
 "hex",
  360    360   
 "http 1.3.1",
  361    361   
 "ring",
  362    362   
 "serde",
  363    363   
 "serde_json",
  364    364   
 "time",
  365    365   
 "tokio",
  366    366   
 "tracing",
  367    367   
 "tracing-subscriber",
  368    368   
 "tracing-test",
  369    369   
 "url",
  370    370   
 "zeroize",
  371    371   
]
  372    372   
  373    373   
[[package]]
  374    374   
name = "aws-credential-types"
  375         -
version = "1.2.5"
         375  +
version = "1.2.6"
  376    376   
dependencies = [
  377    377   
 "async-trait",
  378    378   
 "aws-smithy-async",
  379    379   
 "aws-smithy-runtime-api",
  380    380   
 "aws-smithy-types",
  381    381   
 "tokio",
  382    382   
 "zeroize",
  383    383   
]
  384    384   
  385    385   
[[package]]
@@ -1140,1140 +1200,1200 @@
 1160   1160   
name = "aws-smithy-cbor"
 1161   1161   
version = "0.61.1"
 1162   1162   
dependencies = [
 1163   1163   
 "aws-smithy-types",
 1164   1164   
 "criterion",
 1165   1165   
 "minicbor",
 1166   1166   
]
 1167   1167   
 1168   1168   
[[package]]
 1169   1169   
name = "aws-smithy-checksums"
 1170         -
version = "0.63.7"
        1170  +
version = "0.63.8"
 1171   1171   
dependencies = [
 1172   1172   
 "aws-smithy-http",
 1173   1173   
 "aws-smithy-types",
 1174   1174   
 "bytes",
 1175   1175   
 "bytes-utils",
 1176   1176   
 "crc-fast",
 1177   1177   
 "hex",
 1178   1178   
 "http 0.2.12",
 1179   1179   
 "http-body 0.4.6",
 1180   1180   
 "md-5",
@@ -1279,1279 +1339,1339 @@
 1299   1299   
 "tower",
 1300   1300   
 "tracing",
 1301   1301   
]
 1302   1302   
 1303   1303   
[[package]]
 1304   1304   
name = "aws-smithy-http-tower"
 1305   1305   
version = "0.60.3"
 1306   1306   
 1307   1307   
[[package]]
 1308   1308   
name = "aws-smithy-json"
 1309         -
version = "0.61.4"
        1309  +
version = "0.61.5"
 1310   1310   
dependencies = [
 1311   1311   
 "aws-smithy-types",
 1312   1312   
 "proptest",
 1313   1313   
 "serde_json",
 1314   1314   
]
 1315   1315   
 1316   1316   
[[package]]
 1317   1317   
name = "aws-smithy-mocks"
 1318   1318   
version = "0.1.1"
 1319   1319   
dependencies = [
@@ -1345,1345 +1429,1430 @@
 1365   1365   
 "assert-json-diff",
 1366   1366   
 "aws-smithy-runtime-api",
 1367   1367   
 "base64-simd",
 1368   1368   
 "cbor-diag",
 1369   1369   
 "ciborium",
 1370   1370   
 "http 0.2.12",
 1371   1371   
 "pretty_assertions",
 1372   1372   
 "regex-lite",
 1373   1373   
 "roxmltree",
 1374   1374   
 "serde_json",
 1375         -
 "thiserror 2.0.15",
        1375  +
 "thiserror 2.0.16",
 1376   1376   
]
 1377   1377   
 1378   1378   
[[package]]
 1379   1379   
name = "aws-smithy-query"
 1380   1380   
version = "0.60.7"
 1381   1381   
dependencies = [
 1382   1382   
 "aws-smithy-types",
 1383   1383   
 "urlencoding",
 1384   1384   
]
 1385   1385   
 1386   1386   
[[package]]
 1387   1387   
name = "aws-smithy-runtime"
 1388         -
version = "1.9.0"
        1388  +
version = "1.9.1"
 1389   1389   
dependencies = [
 1390   1390   
 "approx",
 1391   1391   
 "aws-smithy-async",
 1392   1392   
 "aws-smithy-http",
 1393   1393   
 "aws-smithy-http-client",
 1394   1394   
 "aws-smithy-observability",
 1395   1395   
 "aws-smithy-runtime-api",
 1396   1396   
 "aws-smithy-types",
 1397   1397   
 "bytes",
 1398   1398   
 "fastrand 2.3.0",
 1399   1399   
 "futures-util",
        1400  +
 "hickory-resolver",
 1400   1401   
 "http 0.2.12",
 1401   1402   
 "http 1.3.1",
 1402   1403   
 "http-body 0.4.6",
 1403   1404   
 "http-body 1.0.1",
 1404   1405   
 "hyper 0.14.32",
 1405   1406   
 "pin-project-lite",
 1406   1407   
 "pin-utils",
 1407   1408   
 "pretty_assertions",
 1408   1409   
 "tokio",
 1409   1410   
 "tracing",
@@ -1916,1917 +1975,1982 @@
 1936   1937   
[[package]]
 1937   1938   
name = "criterion-plot"
 1938   1939   
version = "0.5.0"
 1939   1940   
source = "registry+https://github.com/rust-lang/crates.io-index"
 1940   1941   
checksum = "6b50826342786a51a89e2da3a28f1c32b06e387201bc2d19791f622c673706b1"
 1941   1942   
dependencies = [
 1942   1943   
 "cast",
 1943   1944   
 "itertools 0.10.5",
 1944   1945   
]
 1945   1946   
        1947  +
[[package]]
        1948  +
name = "critical-section"
        1949  +
version = "1.2.0"
        1950  +
source = "registry+https://github.com/rust-lang/crates.io-index"
        1951  +
checksum = "790eea4361631c5e7d22598ecd5723ff611904e3344ce8720784c93e3d83d40b"
        1952  +
 1946   1953   
[[package]]
 1947   1954   
name = "crossbeam-channel"
 1948   1955   
version = "0.5.15"
 1949   1956   
source = "registry+https://github.com/rust-lang/crates.io-index"
 1950   1957   
checksum = "82b8f8f868b36967f9606790d1903570de9ceaf870a7bf9fbbd3016d636a2cb2"
 1951   1958   
dependencies = [
 1952   1959   
 "crossbeam-utils",
 1953   1960   
]
 1954   1961   
 1955   1962   
[[package]]
@@ -2096,2103 +2155,2174 @@
 2116   2123   
 "ff",
 2117   2124   
 "generic-array",
 2118   2125   
 "group",
 2119   2126   
 "pkcs8",
 2120   2127   
 "rand_core 0.6.4",
 2121   2128   
 "sec1",
 2122   2129   
 "subtle",
 2123   2130   
 "zeroize",
 2124   2131   
]
 2125   2132   
        2133  +
[[package]]
        2134  +
name = "enum-as-inner"
        2135  +
version = "0.6.1"
        2136  +
source = "registry+https://github.com/rust-lang/crates.io-index"
        2137  +
checksum = "a1e6a265c649f3f5979b601d26f1d05ada116434c87741c9493cb56218f76cbc"
        2138  +
dependencies = [
        2139  +
 "heck",
        2140  +
 "proc-macro2",
        2141  +
 "quote",
        2142  +
 "syn",
        2143  +
]
        2144  +
 2126   2145   
[[package]]
 2127   2146   
name = "equivalent"
 2128   2147   
version = "1.0.2"
 2129   2148   
source = "registry+https://github.com/rust-lang/crates.io-index"
 2130   2149   
checksum = "877a4ace8713b0bcf2a4e7eec82529c029f1d0619886d18145fea96c3ffe5c0f"
 2131   2150   
 2132   2151   
[[package]]
 2133   2152   
name = "errno"
 2134   2153   
version = "0.3.13"
 2135   2154   
source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -2199,2218 +2261,2280 @@
 2219   2238   
checksum = "3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1"
 2220   2239   
 2221   2240   
[[package]]
 2222   2241   
name = "foldhash"
 2223   2242   
version = "0.1.5"
 2224   2243   
source = "registry+https://github.com/rust-lang/crates.io-index"
 2225   2244   
checksum = "d9c4f5dac5e15c24eb999c26181a6ca40b39fe946cbe4c263c7209467bc83af2"
 2226   2245   
 2227   2246   
[[package]]
 2228   2247   
name = "form_urlencoded"
 2229         -
version = "1.2.1"
        2248  +
version = "1.2.2"
 2230   2249   
source = "registry+https://github.com/rust-lang/crates.io-index"
 2231         -
checksum = "e13624c2627564efccf4934284bdd98cbaa14e79b0b5a141218e507b3a823456"
        2250  +
checksum = "cb4cb245038516f5f85277875cdaa4f7d2c9a0fa0468de06ed190163b1581fcf"
 2232   2251   
dependencies = [
 2233   2252   
 "percent-encoding",
 2234   2253   
]
 2235   2254   
 2236   2255   
[[package]]
 2237   2256   
name = "fs_extra"
 2238   2257   
version = "1.3.0"
 2239   2258   
source = "registry+https://github.com/rust-lang/crates.io-index"
 2240   2259   
checksum = "42703706b716c37f96a77aea830392ad231f44c9e9a67872fa5548707e11b11c"
 2241   2260   
@@ -2329,2348 +2388,2421 @@
 2349   2368   
 "futures-io",
 2350   2369   
 "futures-macro",
 2351   2370   
 "futures-sink",
 2352   2371   
 "futures-task",
 2353   2372   
 "memchr",
 2354   2373   
 "pin-project-lite",
 2355   2374   
 "pin-utils",
 2356   2375   
 "slab",
 2357   2376   
]
 2358   2377   
        2378  +
[[package]]
        2379  +
name = "generator"
        2380  +
version = "0.8.7"
        2381  +
source = "registry+https://github.com/rust-lang/crates.io-index"
        2382  +
checksum = "605183a538e3e2a9c1038635cc5c2d194e2ee8fd0d1b66b8349fad7dbacce5a2"
        2383  +
dependencies = [
        2384  +
 "cc",
        2385  +
 "cfg-if",
        2386  +
 "libc",
        2387  +
 "log",
        2388  +
 "rustversion",
        2389  +
 "windows",
        2390  +
]
        2391  +
 2359   2392   
[[package]]
 2360   2393   
name = "generic-array"
 2361   2394   
version = "0.14.7"
 2362   2395   
source = "registry+https://github.com/rust-lang/crates.io-index"
 2363   2396   
checksum = "85649ca51fd72272d7821adaf274ad91c288277713d9c18820d8499a7ff69e9a"
 2364   2397   
dependencies = [
 2365   2398   
 "typenum",
 2366   2399   
 "version_check",
 2367   2400   
]
 2368   2401   
@@ -2470,2503 +2553,2638 @@
 2490   2523   
checksum = "765c9198f173dd59ce26ff9f95ef0aafd0a0fe01fb9d72841bc5066a4c06511d"
 2491   2524   
dependencies = [
 2492   2525   
 "base64 0.21.7",
 2493   2526   
 "byteorder",
 2494   2527   
 "crossbeam-channel",
 2495   2528   
 "flate2",
 2496   2529   
 "nom",
 2497   2530   
 "num-traits",
 2498   2531   
]
 2499   2532   
        2533  +
[[package]]
        2534  +
name = "heck"
        2535  +
version = "0.5.0"
        2536  +
source = "registry+https://github.com/rust-lang/crates.io-index"
        2537  +
checksum = "2304e00983f87ffb38b55b444b5e3b60a884b5d30c0fca7d82fe33449bbe55ea"
        2538  +
 2500   2539   
[[package]]
 2501   2540   
name = "hermit-abi"
 2502   2541   
version = "0.3.9"
 2503   2542   
source = "registry+https://github.com/rust-lang/crates.io-index"
 2504   2543   
checksum = "d231dfb89cfffdbc30e7fc41579ed6066ad03abda9e567ccafae602b97ec5024"
 2505   2544   
 2506   2545   
[[package]]
 2507   2546   
name = "hermit-abi"
 2508   2547   
version = "0.5.2"
 2509   2548   
source = "registry+https://github.com/rust-lang/crates.io-index"
 2510   2549   
checksum = "fc0fef456e4baa96da950455cd02c081ca953b141298e41db3fc7e36b1da849c"
 2511   2550   
 2512   2551   
[[package]]
 2513   2552   
name = "hex"
 2514   2553   
version = "0.4.3"
 2515   2554   
source = "registry+https://github.com/rust-lang/crates.io-index"
 2516   2555   
checksum = "7f24254aa9a54b5c858eaee2f5bccdb46aaf0e486a595ed5fd8f86ba55232a70"
 2517   2556   
 2518   2557   
[[package]]
 2519   2558   
name = "hex-literal"
 2520   2559   
version = "0.4.1"
 2521   2560   
source = "registry+https://github.com/rust-lang/crates.io-index"
 2522   2561   
checksum = "6fe2267d4ed49bc07b63801559be28c718ea06c4738b7a03c94df7386d2cde46"
 2523   2562   
        2563  +
[[package]]
        2564  +
name = "hickory-proto"
        2565  +
version = "0.25.2"
        2566  +
source = "registry+https://github.com/rust-lang/crates.io-index"
        2567  +
checksum = "f8a6fe56c0038198998a6f217ca4e7ef3a5e51f46163bd6dd60b5c71ca6c6502"
        2568  +
dependencies = [
        2569  +
 "async-trait",
        2570  +
 "cfg-if",
        2571  +
 "data-encoding",
        2572  +
 "enum-as-inner",
        2573  +
 "futures-channel",
        2574  +
 "futures-io",
        2575  +
 "futures-util",
        2576  +
 "idna",
        2577  +
 "ipnet",
        2578  +
 "once_cell",
        2579  +
 "rand 0.9.2",
        2580  +
 "ring",
        2581  +
 "thiserror 2.0.16",
        2582  +
 "tinyvec",
        2583  +
 "tokio",
        2584  +
 "tracing",
        2585  +
 "url",
        2586  +
]
        2587  +
        2588  +
[[package]]
        2589  +
name = "hickory-resolver"
        2590  +
version = "0.25.2"
        2591  +
source = "registry+https://github.com/rust-lang/crates.io-index"
        2592  +
checksum = "dc62a9a99b0bfb44d2ab95a7208ac952d31060efc16241c87eaf36406fecf87a"
        2593  +
dependencies = [
        2594  +
 "cfg-if",
        2595  +
 "futures-util",
        2596  +
 "hickory-proto",
        2597  +
 "ipconfig",
        2598  +
 "moka",
        2599  +
 "once_cell",
        2600  +
 "parking_lot",
        2601  +
 "rand 0.9.2",
        2602  +
 "resolv-conf",
        2603  +
 "smallvec",
        2604  +
 "thiserror 2.0.16",
        2605  +
 "tokio",
        2606  +
 "tracing",
        2607  +
]
        2608  +
 2524   2609   
[[package]]
 2525   2610   
name = "hmac"
 2526   2611   
version = "0.12.1"
 2527   2612   
source = "registry+https://github.com/rust-lang/crates.io-index"
 2528   2613   
checksum = "6c49c37c09c17a53d937dfbb742eb3a961d65a994e6bcdcf37e7399d0cc8ab5e"
 2529   2614   
dependencies = [
 2530   2615   
 "digest",
 2531   2616   
]
 2532   2617   
 2533   2618   
[[package]]
@@ -2781,2866 +2901,2998 @@
 2801   2886   
 "tinystr",
 2802   2887   
 "writeable",
 2803   2888   
 "yoke",
 2804   2889   
 "zerofrom",
 2805   2890   
 "zerotrie",
 2806   2891   
 "zerovec",
 2807   2892   
]
 2808   2893   
 2809   2894   
[[package]]
 2810   2895   
name = "idna"
 2811         -
version = "1.0.3"
        2896  +
version = "1.1.0"
 2812   2897   
source = "registry+https://github.com/rust-lang/crates.io-index"
 2813         -
checksum = "686f825264d630750a544639377bae737628043f20d38bbc029e8f29ea968a7e"
        2898  +
checksum = "3b0875f23caa03898994f6ddc501886a45c7d3d62d04d2d90788d47be1b1e4de"
 2814   2899   
dependencies = [
 2815   2900   
 "idna_adapter",
 2816   2901   
 "smallvec",
 2817   2902   
 "utf8_iter",
 2818   2903   
]
 2819   2904   
 2820   2905   
[[package]]
 2821   2906   
name = "idna_adapter"
 2822   2907   
version = "1.2.1"
 2823   2908   
source = "registry+https://github.com/rust-lang/crates.io-index"
 2824   2909   
checksum = "3acae9609540aa318d1bc588455225fb2085b9ed0c4f6bd0d9d5bcd86f1a0344"
 2825   2910   
dependencies = [
 2826   2911   
 "icu_normalizer",
 2827   2912   
 "icu_properties",
 2828   2913   
]
 2829   2914   
 2830   2915   
[[package]]
 2831   2916   
name = "indexmap"
 2832   2917   
version = "2.10.0"
 2833   2918   
source = "registry+https://github.com/rust-lang/crates.io-index"
 2834   2919   
checksum = "fe4cd85333e22411419a0bcae1297d25e58c9443848b11dc6a86fefe8c78a661"
 2835   2920   
dependencies = [
 2836   2921   
 "equivalent",
 2837   2922   
 "hashbrown",
 2838   2923   
 "serde",
 2839   2924   
]
 2840   2925   
 2841   2926   
[[package]]
 2842   2927   
name = "instant"
 2843   2928   
version = "0.1.13"
 2844   2929   
source = "registry+https://github.com/rust-lang/crates.io-index"
 2845   2930   
checksum = "e0242819d153cba4b4b05a5a8f2a7e9bbf97b6055b2a002b395c96b5ff3c0222"
 2846   2931   
dependencies = [
 2847   2932   
 "cfg-if",
 2848   2933   
]
 2849   2934   
 2850   2935   
[[package]]
 2851   2936   
name = "io-lifetimes"
 2852   2937   
version = "1.0.11"
 2853   2938   
source = "registry+https://github.com/rust-lang/crates.io-index"
 2854   2939   
checksum = "eae7b9aee968036d54dce06cebaefd919e4472e753296daccd6d344e3e2df0c2"
 2855   2940   
dependencies = [
 2856   2941   
 "hermit-abi 0.3.9",
 2857   2942   
 "libc",
 2858   2943   
 "windows-sys 0.48.0",
 2859   2944   
]
 2860   2945   
 2861   2946   
[[package]]
 2862   2947   
name = "io-uring"
 2863   2948   
version = "0.7.9"
 2864   2949   
source = "registry+https://github.com/rust-lang/crates.io-index"
 2865   2950   
checksum = "d93587f37623a1a17d94ef2bc9ada592f5465fe7732084ab7beefabe5c77c0c4"
 2866   2951   
dependencies = [
 2867   2952   
 "bitflags 2.9.2",
 2868   2953   
 "cfg-if",
 2869   2954   
 "libc",
 2870   2955   
]
 2871   2956   
        2957  +
[[package]]
        2958  +
name = "ipconfig"
        2959  +
version = "0.3.2"
        2960  +
source = "registry+https://github.com/rust-lang/crates.io-index"
        2961  +
checksum = "b58db92f96b720de98181bbbe63c831e87005ab460c1bf306eb2622b4707997f"
        2962  +
dependencies = [
        2963  +
 "socket2 0.5.10",
        2964  +
 "widestring",
        2965  +
 "windows-sys 0.48.0",
        2966  +
 "winreg",
        2967  +
]
        2968  +
 2872   2969   
[[package]]
 2873   2970   
name = "ipnet"
 2874   2971   
version = "2.11.0"
 2875   2972   
source = "registry+https://github.com/rust-lang/crates.io-index"
 2876   2973   
checksum = "469fb0b9cefa57e3ef31275ee7cacb78f2fdca44e4765491884a2b119d4eb130"
 2877   2974   
 2878   2975   
[[package]]
 2879   2976   
name = "is-terminal"
 2880   2977   
version = "0.4.16"
 2881   2978   
source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -3013,3110 +3072,3182 @@
 3033   3130   
 3034   3131   
[[package]]
 3035   3132   
name = "log"
 3036   3133   
version = "0.4.27"
 3037   3134   
source = "registry+https://github.com/rust-lang/crates.io-index"
 3038   3135   
checksum = "13dc2df351e3202783a1fe0d44375f7295ffb4049267b0f3018346dc122a1d94"
 3039   3136   
dependencies = [
 3040   3137   
 "value-bag",
 3041   3138   
]
 3042   3139   
        3140  +
[[package]]
        3141  +
name = "loom"
        3142  +
version = "0.7.2"
        3143  +
source = "registry+https://github.com/rust-lang/crates.io-index"
        3144  +
checksum = "419e0dc8046cb947daa77eb95ae174acfbddb7673b4151f56d1eed8e93fbfaca"
        3145  +
dependencies = [
        3146  +
 "cfg-if",
        3147  +
 "generator",
        3148  +
 "scoped-tls",
        3149  +
 "tracing",
        3150  +
 "tracing-subscriber",
        3151  +
]
        3152  +
 3043   3153   
[[package]]
 3044   3154   
name = "lru"
 3045   3155   
version = "0.12.5"
 3046   3156   
source = "registry+https://github.com/rust-lang/crates.io-index"
 3047   3157   
checksum = "234cf4f4a04dc1f57e24b96cc0cd600cf2af460d4161ac5ecdd0af8e1f3b2a38"
 3048   3158   
dependencies = [
 3049   3159   
 "hashbrown",
 3050   3160   
]
 3051   3161   
 3052   3162   
[[package]]
@@ -3103,3213 +3162,3291 @@
 3123   3233   
name = "mio"
 3124   3234   
version = "1.0.4"
 3125   3235   
source = "registry+https://github.com/rust-lang/crates.io-index"
 3126   3236   
checksum = "78bed444cc8a2160f01cbcf811ef18cac863ad68ae8ca62092e8db51d51c761c"
 3127   3237   
dependencies = [
 3128   3238   
 "libc",
 3129   3239   
 "wasi 0.11.1+wasi-snapshot-preview1",
 3130   3240   
 "windows-sys 0.59.0",
 3131   3241   
]
 3132   3242   
        3243  +
[[package]]
        3244  +
name = "moka"
        3245  +
version = "0.12.10"
        3246  +
source = "registry+https://github.com/rust-lang/crates.io-index"
        3247  +
checksum = "a9321642ca94a4282428e6ea4af8cc2ca4eac48ac7a6a4ea8f33f76d0ce70926"
        3248  +
dependencies = [
        3249  +
 "crossbeam-channel",
        3250  +
 "crossbeam-epoch",
        3251  +
 "crossbeam-utils",
        3252  +
 "loom",
        3253  +
 "parking_lot",
        3254  +
 "portable-atomic",
        3255  +
 "rustc_version",
        3256  +
 "smallvec",
        3257  +
 "tagptr",
        3258  +
 "thiserror 1.0.69",
        3259  +
 "uuid",
        3260  +
]
        3261  +
 3133   3262   
[[package]]
 3134   3263   
name = "nom"
 3135   3264   
version = "7.1.3"
 3136   3265   
source = "registry+https://github.com/rust-lang/crates.io-index"
 3137   3266   
checksum = "d273983c5a657a70a3e8f2a01329822f3b8c8172b73826411a55751e404a0a4a"
 3138   3267   
dependencies = [
 3139   3268   
 "memchr",
 3140   3269   
 "minimal-lexical",
 3141   3270   
]
 3142   3271   
@@ -3182,3311 +3241,3374 @@
 3202   3331   
checksum = "62948e14d923ea95ea2c7c86c71013138b66525b86bdc08d2dcc262bdb497b87"
 3203   3332   
dependencies = [
 3204   3333   
 "memchr",
 3205   3334   
]
 3206   3335   
 3207   3336   
[[package]]
 3208   3337   
name = "once_cell"
 3209   3338   
version = "1.21.3"
 3210   3339   
source = "registry+https://github.com/rust-lang/crates.io-index"
 3211   3340   
checksum = "42f5e15c9953c5e4ccceeb2e7382a716482c34515315f7b03532b8b4e8393d2d"
        3341  +
dependencies = [
        3342  +
 "critical-section",
        3343  +
 "portable-atomic",
        3344  +
]
 3212   3345   
 3213   3346   
[[package]]
 3214   3347   
name = "oorandom"
 3215   3348   
version = "11.1.5"
 3216   3349   
source = "registry+https://github.com/rust-lang/crates.io-index"
 3217   3350   
checksum = "d6790f58c7ff633d8771f42965289203411a5e5c68388703c06e14f24770b41e"
 3218   3351   
 3219   3352   
[[package]]
 3220   3353   
name = "openssl-probe"
 3221   3354   
version = "0.1.6"
@@ -3285,3418 +3347,3480 @@
 3305   3438   
dependencies = [
 3306   3439   
 "cfg-if",
 3307   3440   
 "libc",
 3308   3441   
 "redox_syscall",
 3309   3442   
 "smallvec",
 3310   3443   
 "windows-targets 0.52.6",
 3311   3444   
]
 3312   3445   
 3313   3446   
[[package]]
 3314   3447   
name = "percent-encoding"
 3315         -
version = "2.3.1"
        3448  +
version = "2.3.2"
 3316   3449   
source = "registry+https://github.com/rust-lang/crates.io-index"
 3317         -
checksum = "e3148f5046208a5d56bcfc03053e3ca6334e51da8dfb19b6cdc8b306fae3283e"
        3450  +
checksum = "9b4f627cb1b25917193a259e49bdad08f671f8d9708acfd5fe0a8c1455d87220"
 3318   3451   
 3319   3452   
[[package]]
 3320   3453   
name = "pin-project-lite"
 3321   3454   
version = "0.2.16"
 3322   3455   
source = "registry+https://github.com/rust-lang/crates.io-index"
 3323   3456   
checksum = "3b3cff922bd51709b605d9ead9aa71031d81447142d828eb4a6eba76fe619f9b"
 3324   3457   
 3325   3458   
[[package]]
 3326   3459   
name = "pin-utils"
 3327   3460   
version = "0.1.0"
@@ -3380,3513 +3439,3578 @@
 3400   3533   
checksum = "b5bd19146350fe804f7cb2669c851c03d69da628803dab0d98018142aaa5d829"
 3401   3534   
dependencies = [
 3402   3535   
 "cfg-if",
 3403   3536   
 "concurrent-queue",
 3404   3537   
 "hermit-abi 0.5.2",
 3405   3538   
 "pin-project-lite",
 3406   3539   
 "rustix 1.0.8",
 3407   3540   
 "windows-sys 0.60.2",
 3408   3541   
]
 3409   3542   
        3543  +
[[package]]
        3544  +
name = "portable-atomic"
        3545  +
version = "1.11.1"
        3546  +
source = "registry+https://github.com/rust-lang/crates.io-index"
        3547  +
checksum = "f84267b20a16ea918e43c6a88433c2d54fa145c92a811b5b047ccbe153674483"
        3548  +
 3410   3549   
[[package]]
 3411   3550   
name = "potential_utf"
 3412   3551   
version = "0.1.2"
 3413   3552   
source = "registry+https://github.com/rust-lang/crates.io-index"
 3414   3553   
checksum = "e5a7c30837279ca13e7c867e9e40053bc68740f988cb07f7ca6df43cc734b585"
 3415   3554   
dependencies = [
 3416   3555   
 "zerovec",
 3417   3556   
]
 3418   3557   
 3419   3558   
[[package]]
@@ -3621,3760 +3680,3825 @@
 3641   3780   
version = "0.6.29"
 3642   3781   
source = "registry+https://github.com/rust-lang/crates.io-index"
 3643   3782   
checksum = "f162c6dd7b008981e4d40210aca20b4bd0f9b60ca9271061b07f78537722f2e1"
 3644   3783   
 3645   3784   
[[package]]
 3646   3785   
name = "regex-syntax"
 3647   3786   
version = "0.8.5"
 3648   3787   
source = "registry+https://github.com/rust-lang/crates.io-index"
 3649   3788   
checksum = "2b15c43186be67a4fd63bee50d0303afffcef381492ebe2c5d87f324e1b8815c"
 3650   3789   
        3790  +
[[package]]
        3791  +
name = "resolv-conf"
        3792  +
version = "0.7.4"
        3793  +
source = "registry+https://github.com/rust-lang/crates.io-index"
        3794  +
checksum = "95325155c684b1c89f7765e30bc1c42e4a6da51ca513615660cb8a62ef9a88e3"
        3795  +
 3651   3796   
[[package]]
 3652   3797   
name = "rfc6979"
 3653   3798   
version = "0.3.1"
 3654   3799   
source = "registry+https://github.com/rust-lang/crates.io-index"
 3655   3800   
checksum = "7743f17af12fa0b03b803ba12cd6a8d9483a587e89c69445e3909655c0b9fabb"
 3656   3801   
dependencies = [
 3657   3802   
 "crypto-bigint 0.4.9",
 3658   3803   
 "hmac",
 3659   3804   
 "zeroize",
 3660   3805   
]
@@ -3919,4064 +3978,4129 @@
 3939   4084   
 3940   4085   
[[package]]
 3941   4086   
name = "schannel"
 3942   4087   
version = "0.1.27"
 3943   4088   
source = "registry+https://github.com/rust-lang/crates.io-index"
 3944   4089   
checksum = "1f29ebaa345f945cec9fbbc532eb307f0fdad8161f281b6369539c8d84876b3d"
 3945   4090   
dependencies = [
 3946   4091   
 "windows-sys 0.59.0",
 3947   4092   
]
 3948   4093   
        4094  +
[[package]]
        4095  +
name = "scoped-tls"
        4096  +
version = "1.0.1"
        4097  +
source = "registry+https://github.com/rust-lang/crates.io-index"
        4098  +
checksum = "e1cf6437eb19a8f4a6cc0f7dca544973b0b78843adbfeb3683d1a94a0024a294"
        4099  +
 3949   4100   
[[package]]
 3950   4101   
name = "scopeguard"
 3951   4102   
version = "1.2.0"
 3952   4103   
source = "registry+https://github.com/rust-lang/crates.io-index"
 3953   4104   
checksum = "94143f37725109f92c262ed2cf5e59bce7498c01bcc1502d7b9afe439a4e9f49"
 3954   4105   
 3955   4106   
[[package]]
 3956   4107   
name = "sct"
 3957   4108   
version = "0.7.1"
 3958   4109   
source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -4247,4398 +4353,4510 @@
 4267   4418   
[[package]]
 4268   4419   
name = "system-configuration-sys"
 4269   4420   
version = "0.6.0"
 4270   4421   
source = "registry+https://github.com/rust-lang/crates.io-index"
 4271   4422   
checksum = "8e1d1b10ced5ca923a1fcb8d03e96b8d3268065d724548c0211415ff6ac6bac4"
 4272   4423   
dependencies = [
 4273   4424   
 "core-foundation-sys",
 4274   4425   
 "libc",
 4275   4426   
]
 4276   4427   
        4428  +
[[package]]
        4429  +
name = "tagptr"
        4430  +
version = "0.2.0"
        4431  +
source = "registry+https://github.com/rust-lang/crates.io-index"
        4432  +
checksum = "7b2093cf4c8eb1e67749a6762251bc9cd836b6fc171623bd0a9d324d37af2417"
        4433  +
 4277   4434   
[[package]]
 4278   4435   
name = "tempfile"
 4279         -
version = "3.20.0"
        4436  +
version = "3.21.0"
 4280   4437   
source = "registry+https://github.com/rust-lang/crates.io-index"
 4281         -
checksum = "e8a64e3985349f2441a1a9ef0b853f869006c3855f2cda6862a94d26ebb9d6a1"
        4438  +
checksum = "15b61f8f20e3a6f7e0649d825294eaf317edce30f82cf6026e7e4cb9222a7d1e"
 4282   4439   
dependencies = [
 4283   4440   
 "fastrand 2.3.0",
 4284   4441   
 "getrandom 0.3.3",
 4285   4442   
 "once_cell",
 4286   4443   
 "rustix 1.0.8",
 4287         -
 "windows-sys 0.59.0",
        4444  +
 "windows-sys 0.60.2",
 4288   4445   
]
 4289   4446   
 4290   4447   
[[package]]
 4291   4448   
name = "thiserror"
 4292   4449   
version = "1.0.69"
 4293   4450   
source = "registry+https://github.com/rust-lang/crates.io-index"
 4294   4451   
checksum = "b6aaf5339b578ea85b50e080feb250a3e8ae8cfcdff9a461c9ec2904bc923f52"
 4295   4452   
dependencies = [
 4296   4453   
 "thiserror-impl 1.0.69",
 4297   4454   
]
 4298   4455   
 4299   4456   
[[package]]
 4300   4457   
name = "thiserror"
 4301         -
version = "2.0.15"
        4458  +
version = "2.0.16"
 4302   4459   
source = "registry+https://github.com/rust-lang/crates.io-index"
 4303         -
checksum = "80d76d3f064b981389ecb4b6b7f45a0bf9fdac1d5b9204c7bd6714fecc302850"
        4460  +
checksum = "3467d614147380f2e4e374161426ff399c91084acd2363eaf549172b3d5e60c0"
 4304   4461   
dependencies = [
 4305         -
 "thiserror-impl 2.0.15",
        4462  +
 "thiserror-impl 2.0.16",
 4306   4463   
]
 4307   4464   
 4308   4465   
[[package]]
 4309   4466   
name = "thiserror-impl"
 4310   4467   
version = "1.0.69"
 4311   4468   
source = "registry+https://github.com/rust-lang/crates.io-index"
 4312   4469   
checksum = "4fee6c4efc90059e10f81e6d42c60a18f76588c3d74cb83a0b242a2b6c7504c1"
 4313   4470   
dependencies = [
 4314   4471   
 "proc-macro2",
 4315   4472   
 "quote",
 4316   4473   
 "syn",
 4317   4474   
]
 4318   4475   
 4319   4476   
[[package]]
 4320   4477   
name = "thiserror-impl"
 4321         -
version = "2.0.15"
        4478  +
version = "2.0.16"
 4322   4479   
source = "registry+https://github.com/rust-lang/crates.io-index"
 4323         -
checksum = "44d29feb33e986b6ea906bd9c3559a856983f92371b3eaa5e83782a351623de0"
        4480  +
checksum = "6c5e1be1c48b9172ee610da68fd9cd2770e7a4056cb3fc98710ee6906f0c7960"
 4324   4481   
dependencies = [
 4325   4482   
 "proc-macro2",
 4326   4483   
 "quote",
 4327   4484   
 "syn",
 4328   4485   
]
 4329   4486   
 4330   4487   
[[package]]
 4331   4488   
name = "thread_local"
 4332   4489   
version = "1.1.9"
 4333   4490   
source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -4636,4793 +4722,4880 @@
 4656   4813   
checksum = "a156c684c91ea7d62626509bce3cb4e1d9ed5c4d978f7b4352658f96a4c26b4a"
 4657   4814   
 4658   4815   
[[package]]
 4659   4816   
name = "untrusted"
 4660   4817   
version = "0.9.0"
 4661   4818   
source = "registry+https://github.com/rust-lang/crates.io-index"
 4662   4819   
checksum = "8ecb6da28b8a351d773b68d5825ac39017e680750f980f3a1a85cd8dd28a47c1"
 4663   4820   
 4664   4821   
[[package]]
 4665   4822   
name = "url"
 4666         -
version = "2.5.4"
        4823  +
version = "2.5.6"
 4667   4824   
source = "registry+https://github.com/rust-lang/crates.io-index"
 4668         -
checksum = "32f8b686cadd1473f4bd0117a5d28d36b1ade384ea9b5069a1c40aefed7fda60"
        4825  +
checksum = "137a3c834eaf7139b73688502f3f1141a0337c5d8e4d9b536f9b8c796e26a7c4"
 4669   4826   
dependencies = [
 4670   4827   
 "form_urlencoded",
 4671   4828   
 "idna",
 4672   4829   
 "percent-encoding",
 4673   4830   
]
 4674   4831   
 4675   4832   
[[package]]
 4676   4833   
name = "urlencoding"
 4677   4834   
version = "2.1.3"
 4678   4835   
source = "registry+https://github.com/rust-lang/crates.io-index"
 4679   4836   
checksum = "daf8dba3b7eb870caf1ddeed7bc9d2a049f3cfdfae7cb521b087cc33ae4c49da"
 4680   4837   
 4681   4838   
[[package]]
 4682   4839   
name = "utf8_iter"
 4683   4840   
version = "1.0.4"
 4684   4841   
source = "registry+https://github.com/rust-lang/crates.io-index"
 4685   4842   
checksum = "b6c140620e7ffbb22c2dee59cafe6084a59b5ffc27a8859a5f0d494b5d52b6be"
 4686   4843   
 4687   4844   
[[package]]
 4688   4845   
name = "uuid"
 4689   4846   
version = "1.18.0"
 4690   4847   
source = "registry+https://github.com/rust-lang/crates.io-index"
 4691   4848   
checksum = "f33196643e165781c20a5ead5582283a7dacbb87855d867fbc2df3f81eddc1be"
 4692   4849   
dependencies = [
        4850  +
 "getrandom 0.3.3",
 4693   4851   
 "js-sys",
 4694   4852   
 "wasm-bindgen",
 4695   4853   
]
 4696   4854   
 4697   4855   
[[package]]
 4698   4856   
name = "valuable"
 4699   4857   
version = "0.1.1"
 4700   4858   
source = "registry+https://github.com/rust-lang/crates.io-index"
 4701   4859   
checksum = "ba73ea9cf16a25df0c8caa16c51acb937d5712a8429db78a3ee29d5dcacd3a65"
 4702   4860   
@@ -4848,5006 +4944,5186 @@
 4868   5026   
version = "4.4.2"
 4869   5027   
source = "registry+https://github.com/rust-lang/crates.io-index"
 4870   5028   
checksum = "87ba24419a2078cd2b0f2ede2691b6c66d8e47836da3b6db8265ebad47afbfc7"
 4871   5029   
dependencies = [
 4872   5030   
 "either",
 4873   5031   
 "home",
 4874   5032   
 "once_cell",
 4875   5033   
 "rustix 0.38.44",
 4876   5034   
]
 4877   5035   
        5036  +
[[package]]
        5037  +
name = "widestring"
        5038  +
version = "1.2.0"
        5039  +
source = "registry+https://github.com/rust-lang/crates.io-index"
        5040  +
checksum = "dd7cf3379ca1aac9eea11fba24fd7e315d621f8dfe35c8d7d2be8b793726e07d"
        5041  +
 4878   5042   
[[package]]
 4879   5043   
name = "winapi"
 4880   5044   
version = "0.3.9"
 4881   5045   
source = "registry+https://github.com/rust-lang/crates.io-index"
 4882   5046   
checksum = "5c839a674fcd7a98952e593242ea400abe93992746761e38641405d28b00f419"
 4883   5047   
dependencies = [
 4884   5048   
 "winapi-i686-pc-windows-gnu",
 4885   5049   
 "winapi-x86_64-pc-windows-gnu",
 4886   5050   
]
 4887   5051   
 4888   5052   
[[package]]
 4889   5053   
name = "winapi-i686-pc-windows-gnu"
 4890   5054   
version = "0.4.0"
 4891   5055   
source = "registry+https://github.com/rust-lang/crates.io-index"
 4892   5056   
checksum = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6"
 4893   5057   
 4894   5058   
[[package]]
 4895   5059   
name = "winapi-util"
 4896   5060   
version = "0.1.10"
 4897   5061   
source = "registry+https://github.com/rust-lang/crates.io-index"
 4898   5062   
checksum = "0978bf7171b3d90bac376700cb56d606feb40f251a475a5d6634613564460b22"
 4899   5063   
dependencies = [
 4900   5064   
 "windows-sys 0.60.2",
 4901   5065   
]
 4902   5066   
 4903   5067   
[[package]]
 4904   5068   
name = "winapi-x86_64-pc-windows-gnu"
 4905   5069   
version = "0.4.0"
 4906   5070   
source = "registry+https://github.com/rust-lang/crates.io-index"
 4907   5071   
checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f"
 4908   5072   
        5073  +
[[package]]
        5074  +
name = "windows"
        5075  +
version = "0.61.3"
        5076  +
source = "registry+https://github.com/rust-lang/crates.io-index"
        5077  +
checksum = "9babd3a767a4c1aef6900409f85f5d53ce2544ccdfaa86dad48c91782c6d6893"
        5078  +
dependencies = [
        5079  +
 "windows-collections",
        5080  +
 "windows-core",
        5081  +
 "windows-future",
        5082  +
 "windows-link",
        5083  +
 "windows-numerics",
        5084  +
]
        5085  +
        5086  +
[[package]]
        5087  +
name = "windows-collections"
        5088  +
version = "0.2.0"
        5089  +
source = "registry+https://github.com/rust-lang/crates.io-index"
        5090  +
checksum = "3beeceb5e5cfd9eb1d76b381630e82c4241ccd0d27f1a39ed41b2760b255c5e8"
        5091  +
dependencies = [
        5092  +
 "windows-core",
        5093  +
]
        5094  +
        5095  +
[[package]]
        5096  +
name = "windows-core"
        5097  +
version = "0.61.2"
        5098  +
source = "registry+https://github.com/rust-lang/crates.io-index"
        5099  +
checksum = "c0fdd3ddb90610c7638aa2b3a3ab2904fb9e5cdbecc643ddb3647212781c4ae3"
        5100  +
dependencies = [
        5101  +
 "windows-implement",
        5102  +
 "windows-interface",
        5103  +
 "windows-link",
        5104  +
 "windows-result",
        5105  +
 "windows-strings",
        5106  +
]
        5107  +
        5108  +
[[package]]
        5109  +
name = "windows-future"
        5110  +
version = "0.2.1"
        5111  +
source = "registry+https://github.com/rust-lang/crates.io-index"
        5112  +
checksum = "fc6a41e98427b19fe4b73c550f060b59fa592d7d686537eebf9385621bfbad8e"
        5113  +
dependencies = [
        5114  +
 "windows-core",
        5115  +
 "windows-link",
        5116  +
 "windows-threading",
        5117  +
]
        5118  +
        5119  +
[[package]]
        5120  +
name = "windows-implement"
        5121  +
version = "0.60.0"
        5122  +
source = "registry+https://github.com/rust-lang/crates.io-index"
        5123  +
checksum = "a47fddd13af08290e67f4acabf4b459f647552718f683a7b415d290ac744a836"
        5124  +
dependencies = [
        5125  +
 "proc-macro2",
        5126  +
 "quote",
        5127  +
 "syn",
        5128  +
]
        5129  +
        5130  +
[[package]]
        5131  +
name = "windows-interface"
        5132  +
version = "0.59.1"
        5133  +
source = "registry+https://github.com/rust-lang/crates.io-index"
        5134  +
checksum = "bd9211b69f8dcdfa817bfd14bf1c97c9188afa36f4750130fcdf3f400eca9fa8"
        5135  +
dependencies = [
        5136  +
 "proc-macro2",
        5137  +
 "quote",
        5138  +
 "syn",
        5139  +
]
        5140  +
 4909   5141   
[[package]]
 4910   5142   
name = "windows-link"
 4911   5143   
version = "0.1.3"
 4912   5144   
source = "registry+https://github.com/rust-lang/crates.io-index"
 4913   5145   
checksum = "5e6ad25900d524eaabdbbb96d20b4311e1e7ae1699af4fb28c17ae66c80d798a"
 4914   5146   
        5147  +
[[package]]
        5148  +
name = "windows-numerics"
        5149  +
version = "0.2.0"
        5150  +
source = "registry+https://github.com/rust-lang/crates.io-index"
        5151  +
checksum = "9150af68066c4c5c07ddc0ce30421554771e528bde427614c61038bc2c92c2b1"
        5152  +
dependencies = [
        5153  +
 "windows-core",
        5154  +
 "windows-link",
        5155  +
]
        5156  +
 4915   5157   
[[package]]
 4916   5158   
name = "windows-registry"
 4917   5159   
version = "0.5.3"
 4918   5160   
source = "registry+https://github.com/rust-lang/crates.io-index"
 4919   5161   
checksum = "5b8a9ed28765efc97bbc954883f4e6796c33a06546ebafacbabee9696967499e"
 4920   5162   
dependencies = [
 4921   5163   
 "windows-link",
 4922   5164   
 "windows-result",
 4923   5165   
 "windows-strings",
 4924   5166   
]
@@ -4998,5240 +5057,5308 @@
 5018   5260   
 "windows_aarch64_gnullvm 0.53.0",
 5019   5261   
 "windows_aarch64_msvc 0.53.0",
 5020   5262   
 "windows_i686_gnu 0.53.0",
 5021   5263   
 "windows_i686_gnullvm 0.53.0",
 5022   5264   
 "windows_i686_msvc 0.53.0",
 5023   5265   
 "windows_x86_64_gnu 0.53.0",
 5024   5266   
 "windows_x86_64_gnullvm 0.53.0",
 5025   5267   
 "windows_x86_64_msvc 0.53.0",
 5026   5268   
]
 5027   5269   
        5270  +
[[package]]
        5271  +
name = "windows-threading"
        5272  +
version = "0.1.0"
        5273  +
source = "registry+https://github.com/rust-lang/crates.io-index"
        5274  +
checksum = "b66463ad2e0ea3bbf808b7f1d371311c80e115c0b71d60efc142cafbcfb057a6"
        5275  +
dependencies = [
        5276  +
 "windows-link",
        5277  +
]
        5278  +
 5028   5279   
[[package]]
 5029   5280   
name = "windows_aarch64_gnullvm"
 5030   5281   
version = "0.48.5"
 5031   5282   
source = "registry+https://github.com/rust-lang/crates.io-index"
 5032   5283   
checksum = "2b38e32f0abccf9987a4e3079dfb67dcd799fb61361e53e2882c3cbaf0d905d8"
 5033   5284   
 5034   5285   
[[package]]
 5035   5286   
name = "windows_aarch64_gnullvm"
 5036   5287   
version = "0.52.6"
 5037   5288   
source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -5136,5387 +5195,5456 @@
 5156   5407   
version = "0.52.6"
 5157   5408   
source = "registry+https://github.com/rust-lang/crates.io-index"
 5158   5409   
checksum = "589f6da84c646204747d1270a2a5661ea66ed1cced2631d546fdfb155959f9ec"
 5159   5410   
 5160   5411   
[[package]]
 5161   5412   
name = "windows_x86_64_msvc"
 5162   5413   
version = "0.53.0"
 5163   5414   
source = "registry+https://github.com/rust-lang/crates.io-index"
 5164   5415   
checksum = "271414315aff87387382ec3d271b52d7ae78726f5d44ac98b4f4030c91880486"
 5165   5416   
        5417  +
[[package]]
        5418  +
name = "winreg"
        5419  +
version = "0.50.0"
        5420  +
source = "registry+https://github.com/rust-lang/crates.io-index"
        5421  +
checksum = "524e57b2c537c0f9b1e69f1965311ec12182b4122e45035b1508cd24d2adadb1"
        5422  +
dependencies = [
        5423  +
 "cfg-if",
        5424  +
 "windows-sys 0.48.0",
        5425  +
]
        5426  +
 5166   5427   
[[package]]
 5167   5428   
name = "wit-bindgen"
 5168   5429   
version = "0.19.2"
 5169   5430   
source = "registry+https://github.com/rust-lang/crates.io-index"
 5170   5431   
checksum = "b37d270da94012e0ac490ac633ad5bdd76a10a3fb15069edb033c1b771ce931f"
 5171   5432   
dependencies = [
 5172   5433   
 "bitflags 2.9.2",
 5173   5434   
]
 5174   5435   
 5175   5436   
[[package]]

tmp-codegen-diff/aws-sdk/sdk/aws-config/Cargo.toml

@@ -39,39 +99,99 @@
   59     59   
path = "../aws-smithy-http"
   60     60   
version = "0.62.3"
   61     61   
   62     62   
[dependencies.aws-smithy-json]
   63     63   
path = "../aws-smithy-json"
   64     64   
version = "0.61.5"
   65     65   
   66     66   
[dependencies.aws-smithy-runtime]
   67     67   
path = "../aws-smithy-runtime"
   68     68   
features = ["client"]
   69         -
version = "1.9.0"
          69  +
version = "1.9.1"
   70     70   
   71     71   
[dependencies.aws-smithy-runtime-api]
   72     72   
path = "../aws-smithy-runtime-api"
   73     73   
features = ["client"]
   74     74   
version = "1.9.0"
   75     75   
   76     76   
[dependencies.aws-smithy-types]
   77     77   
path = "../aws-smithy-types"
   78     78   
version = "1.3.2"
   79     79   
@@ -106,106 +157,157 @@
  126    126   
version = "1.2.5"
  127    127   
  128    128   
[dev-dependencies.aws-smithy-http-client]
  129    129   
path = "../aws-smithy-http-client"
  130    130   
features = ["default-client", "test-util"]
  131    131   
version = "1.1.0"
  132    132   
  133    133   
[dev-dependencies.aws-smithy-runtime]
  134    134   
path = "../aws-smithy-runtime"
  135    135   
features = ["client", "test-util"]
  136         -
version = "1.9.0"
         136  +
version = "1.9.1"
  137    137   
  138    138   
[dev-dependencies.aws-smithy-runtime-api]
  139    139   
path = "../aws-smithy-runtime-api"
  140    140   
features = ["test-util"]
  141    141   
version = "1.9.0"
  142    142   
  143    143   
[dev-dependencies.futures-util]
  144    144   
version = "0.3.29"
  145    145   
default-features = false
  146    146   

tmp-codegen-diff/aws-sdk/sdk/aws-runtime/Cargo.toml

@@ -28,28 +88,88 @@
   48     48   
optional = true
   49     49   
version = "0.60.11"
   50     50   
   51     51   
[dependencies.aws-smithy-http]
   52     52   
path = "../aws-smithy-http"
   53     53   
version = "0.62.3"
   54     54   
   55     55   
[dependencies.aws-smithy-runtime]
   56     56   
path = "../aws-smithy-runtime"
   57     57   
features = ["client"]
   58         -
version = "1.9.0"
          58  +
version = "1.9.1"
   59     59   
   60     60   
[dependencies.aws-smithy-runtime-api]
   61     61   
path = "../aws-smithy-runtime-api"
   62     62   
features = ["client"]
   63     63   
version = "1.9.0"
   64     64   
   65     65   
[dependencies.aws-smithy-types]
   66     66   
path = "../aws-smithy-types"
   67     67   
version = "1.3.2"
   68     68   

tmp-codegen-diff/aws-sdk/sdk/aws-smithy-mocks/Cargo.toml

@@ -14,14 +0,44 @@
   34     34   
features = ["full"]
   35     35   
   36     36   
[dev-dependencies.aws-smithy-async]
   37     37   
path = "../aws-smithy-async"
   38     38   
features = ["rt-tokio"]
   39     39   
version = "1.2.5"
   40     40   
   41     41   
[dev-dependencies.aws-smithy-runtime]
   42     42   
path = "../aws-smithy-runtime"
   43     43   
features = ["client"]
   44         -
version = "1.9.0"
          44  +
version = "1.9.1"

tmp-codegen-diff/aws-sdk/sdk/aws-smithy-runtime/Cargo.toml

@@ -1,1 +57,57 @@
    1      1   
# Code generated by software.amazon.smithy.rust.codegen.smithy-rs. DO NOT EDIT.
    2      2   
[package]
    3      3   
name = "aws-smithy-runtime"
    4         -
version = "1.9.0"
           4  +
version = "1.9.1"
    5      5   
authors = ["AWS Rust SDK Team <aws-sdk-rust@amazon.com>", "Zelda Hessler <zhessler@amazon.com>"]
    6      6   
description = "The new smithy runtime crate"
    7      7   
edition = "2021"
    8      8   
license = "Apache-2.0"
    9      9   
repository = "https://github.com/smithy-lang/smithy-rs"
   10     10   
[package.metadata.docs.rs]
   11     11   
all-features = true
   12     12   
targets = ["x86_64-unknown-linux-gnu"]
   13     13   
cargo-args = ["-Zunstable-options", "-Zrustdoc-scrape-examples"]
   14     14   
rustdoc-args = ["--cfg", "docsrs"]
   15     15   
   16     16   
[package.metadata.smithy-rs-release-tooling]
   17     17   
stable = true
   18     18   
[package.metadata.cargo-udeps.ignore]
   19     19   
normal = ["aws-smithy-http"]
   20     20   
   21     21   
[features]
   22     22   
client = ["aws-smithy-runtime-api/client", "aws-smithy-types/http-body-1-x"]
   23     23   
http-auth = ["aws-smithy-runtime-api/http-auth"]
   24     24   
connector-hyper-0-14-x = ["dep:aws-smithy-http-client", "aws-smithy-http-client?/hyper-014"]
   25     25   
tls-rustls = ["dep:aws-smithy-http-client", "aws-smithy-http-client?/legacy-rustls-ring", "connector-hyper-0-14-x"]
   26     26   
default-https-client = ["dep:aws-smithy-http-client", "aws-smithy-http-client?/rustls-aws-lc"]
   27         -
rt-tokio = ["tokio/rt"]
          27  +
rt-tokio = ["tokio/rt", "hickory-resolver"]
   28     28   
test-util = ["aws-smithy-runtime-api/test-util", "dep:tracing-subscriber", "aws-smithy-http-client/test-util", "legacy-test-util"]
   29     29   
legacy-test-util = ["aws-smithy-runtime-api/test-util", "dep:tracing-subscriber", "aws-smithy-http-client/test-util", "connector-hyper-0-14-x", "aws-smithy-http-client/legacy-test-util"]
   30     30   
wire-mock = ["legacy-test-util", "aws-smithy-http-client/wire-mock"]
   31     31   
   32     32   
[dependencies]
   33     33   
bytes = "1.10.0"
   34     34   
fastrand = "2.3.0"
   35     35   
pin-project-lite = "0.2.14"
   36     36   
pin-utils = "0.1.0"
   37     37   
tracing = "0.1.40"
@@ -59,59 +118,121 @@
   79     79   
version = "1"
   80     80   
   81     81   
[dependencies.tokio]
   82     82   
version = "1.40.0"
   83     83   
features = []
   84     84   
   85     85   
[dependencies.tracing-subscriber]
   86     86   
version = "0.3.16"
   87     87   
optional = true
   88     88   
features = ["env-filter", "fmt", "json"]
          89  +
[target."cfg(not(target_family = \"wasm\"))".dependencies.hickory-resolver]
          90  +
version = "0.25.2"
          91  +
optional = true
   89     92   
   90     93   
[dev-dependencies]
   91     94   
approx = "0.5.1"
   92     95   
fastrand = "2.3.0"
   93     96   
futures-util = "0.3.29"
   94     97   
pretty_assertions = "1.4.0"
   95     98   
tracing-test = "0.2.1"
   96     99   
   97    100   
[dev-dependencies.aws-smithy-async]
   98    101   
path = "../aws-smithy-async"

tmp-codegen-diff/aws-sdk/sdk/aws-smithy-runtime/src/client/dns.rs

@@ -1,1 +0,18 @@
    1      1   
/*
    2      2   
 * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
    3      3   
 * SPDX-License-Identifier: Apache-2.0
    4      4   
 */
    5      5   
    6      6   
//! Built-in DNS resolver implementations.
    7      7   
    8      8   
#[cfg(all(feature = "rt-tokio", not(target_family = "wasm")))]
    9         -
mod tokio {
   10         -
    use aws_smithy_runtime_api::client::dns::{DnsFuture, ResolveDns, ResolveDnsError};
   11         -
    use std::io::{Error as IoError, ErrorKind as IoErrorKind};
   12         -
    use std::net::ToSocketAddrs;
           9  +
mod tokio;
   13     10   
   14         -
    /// DNS resolver that uses `tokio::spawn_blocking` to resolve DNS using the standard library.
   15         -
    ///
   16         -
    /// This implementation isn't available for WASM targets.
   17         -
    #[non_exhaustive]
   18         -
    #[derive(Debug, Default)]
   19         -
    pub struct TokioDnsResolver;
   20         -
   21         -
    impl TokioDnsResolver {
   22         -
        /// Creates a new Tokio DNS resolver
   23         -
        pub fn new() -> Self {
   24         -
            Self
   25         -
        }
   26         -
    }
          11  +
#[cfg(all(feature = "rt-tokio", not(target_family = "wasm")))]
          12  +
pub use self::tokio::TokioDnsResolver;
   27     13   
   28         -
    impl ResolveDns for TokioDnsResolver {
   29         -
        fn resolve_dns<'a>(&'a self, name: &'a str) -> DnsFuture<'a> {
   30         -
            let name = name.to_string();
   31         -
            DnsFuture::new(async move {
   32         -
                let result = tokio::task::spawn_blocking(move || (name, 0).to_socket_addrs()).await;
   33         -
                match result {
   34         -
                    Err(join_failure) => Err(ResolveDnsError::new(IoError::new(
   35         -
                        IoErrorKind::Other,
   36         -
                        join_failure,
   37         -
                    ))),
   38         -
                    Ok(Ok(dns_result)) => {
   39         -
                        Ok(dns_result.into_iter().map(|addr| addr.ip()).collect())
   40         -
                    }
   41         -
                    Ok(Err(dns_failure)) => Err(ResolveDnsError::new(dns_failure)),
   42         -
                }
   43         -
            })
   44         -
        }
   45         -
    }
   46         -
}
          14  +
#[cfg(all(feature = "rt-tokio", not(target_family = "wasm")))]
          15  +
mod caching;
   47     16   
   48     17   
#[cfg(all(feature = "rt-tokio", not(target_family = "wasm")))]
   49         -
pub use self::tokio::TokioDnsResolver;
          18  +
pub use self::caching::CachingDnsResolver;

tmp-codegen-diff/aws-sdk/sdk/aws-smithy-runtime/src/client/dns/caching.rs

@@ -0,1 +0,157 @@
           1  +
/*
           2  +
 * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
           3  +
 * SPDX-License-Identifier: Apache-2.0
           4  +
 */
           5  +
           6  +
use std::{
           7  +
    io::{Error as IoError, ErrorKind as IoErrorKind},
           8  +
    net::IpAddr,
           9  +
    time::Duration,
          10  +
};
          11  +
          12  +
use aws_smithy_runtime_api::client::dns::{DnsFuture, ResolveDns, ResolveDnsError};
          13  +
use hickory_resolver::{
          14  +
    config::{NameServerConfigGroup, ResolverConfig},
          15  +
    name_server::TokioConnectionProvider,
          16  +
    Resolver,
          17  +
};
          18  +
          19  +
/// DNS resolver that uses [hickory_resolver] and caches DNS entries in memory.
          20  +
///
          21  +
/// This resolver requires a [tokio] runtime to function and isn't available for WASM targets.
          22  +
#[non_exhaustive]
          23  +
#[derive(Debug)]
          24  +
pub struct CachingDnsResolver {
          25  +
    resolver: Resolver<TokioConnectionProvider>,
          26  +
}
          27  +
          28  +
impl Default for CachingDnsResolver {
          29  +
    /// Constructs a new Tokio based [ResolveDns] with the system configuration.
          30  +
    /// This uses `/etc/resolv.conf` on Unix OSes and registry settings on Windows.
          31  +
    fn default() -> Self {
          32  +
        Self {
          33  +
            resolver: Resolver::builder_tokio().expect("In tokio runtime").build(),
          34  +
        }
          35  +
    }
          36  +
}
          37  +
          38  +
impl CachingDnsResolver {
          39  +
    /// Creates a new DNS resolver that caches IP addresses in memory.
          40  +
    pub fn builder() -> CachingDnsResolverBuilder {
          41  +
        CachingDnsResolverBuilder {
          42  +
            nameservers: None,
          43  +
            timeout: None,
          44  +
            attempts: None,
          45  +
            cache_size: None,
          46  +
            num_concurrent_reqs: None,
          47  +
        }
          48  +
    }
          49  +
          50  +
    /// Flush the cache
          51  +
    pub fn clear_cache(&self) {
          52  +
        self.resolver.clear_cache();
          53  +
    }
          54  +
}
          55  +
          56  +
impl ResolveDns for CachingDnsResolver {
          57  +
    fn resolve_dns<'a>(&'a self, name: &'a str) -> DnsFuture<'a> {
          58  +
        DnsFuture::new(async move {
          59  +
            let result = self.resolver.lookup_ip(name).await;
          60  +
          61  +
            match result {
          62  +
                Ok(ips) => Ok(ips.into_iter().collect()),
          63  +
                Err(failure) => Err(ResolveDnsError::new(IoError::new(
          64  +
                    IoErrorKind::Other,
          65  +
                    failure,
          66  +
                ))),
          67  +
            }
          68  +
        })
          69  +
    }
          70  +
}
          71  +
          72  +
pub struct CachingDnsResolverBuilder {
          73  +
    nameservers: Option<Nameservers>,
          74  +
    timeout: Option<Duration>,
          75  +
    attempts: Option<usize>,
          76  +
    cache_size: Option<usize>,
          77  +
    num_concurrent_reqs: Option<usize>,
          78  +
}
          79  +
          80  +
struct Nameservers {
          81  +
    ips: Vec<IpAddr>,
          82  +
    port: u16,
          83  +
}
          84  +
          85  +
impl CachingDnsResolverBuilder {
          86  +
    /// Configure upstream nameservers and the port to use for resolution. Defaults to the system
          87  +
    /// configuration.
          88  +
    pub fn nameservers(mut self, ips: &[IpAddr], port: u16) -> Self {
          89  +
        self.nameservers = Some(Nameservers {
          90  +
            ips: ips.to_vec(),
          91  +
            port,
          92  +
        });
          93  +
        self
          94  +
    }
          95  +
          96  +
    /// Specify the timeout for a request. Defaults to 5 seconds.
          97  +
    pub fn timeout(mut self, timeout: Duration) -> Self {
          98  +
        self.timeout = Some(timeout);
          99  +
        self
         100  +
    }
         101  +
         102  +
    /// Number of retries after lookup failure before giving up. Defaults to 2.
         103  +
    pub fn attempts(mut self, attempts: usize) -> Self {
         104  +
        self.attempts = Some(attempts);
         105  +
        self
         106  +
    }
         107  +
         108  +
    /// Cache size is in number of records (some records can be large). Defaults to 32.
         109  +
    pub fn cache_size(mut self, cache_size: usize) -> Self {
         110  +
        self.cache_size = Some(cache_size);
         111  +
        self
         112  +
    }
         113  +
         114  +
    /// Number of concurrent requests per query.
         115  +
    ///
         116  +
    /// Where more than one nameserver is configured, this configures the resolver
         117  +
    /// to send queries to a number of servers in parallel. Defaults to 2. Setting
         118  +
    /// to 0 or 1 will execute requests serially.
         119  +
    pub fn num_concurrent_reqs(mut self, num_concurrent_reqs: usize) -> Self {
         120  +
        self.num_concurrent_reqs = Some(num_concurrent_reqs);
         121  +
        self
         122  +
    }
         123  +
         124  +
    pub fn build(self) -> CachingDnsResolver {
         125  +
        let mut builder = if let Some(nameservers) = self.nameservers {
         126  +
            let nameserver_config =
         127  +
                NameServerConfigGroup::from_ips_clear(&nameservers.ips, nameservers.port, true);
         128  +
            let resolver_config = ResolverConfig::from_parts(None, vec![], nameserver_config);
         129  +
         130  +
            Resolver::builder_with_config(resolver_config, TokioConnectionProvider::default())
         131  +
        } else {
         132  +
            Resolver::builder_tokio().expect("Successfully read system config")
         133  +
        };
         134  +
         135  +
        let opts = builder.options_mut();
         136  +
         137  +
        if let Some(timeout) = self.timeout {
         138  +
            opts.timeout = timeout;
         139  +
        }
         140  +
         141  +
        if let Some(attempts) = self.attempts {
         142  +
            opts.attempts = attempts;
         143  +
        }
         144  +
         145  +
        if let Some(cache_size) = self.cache_size {
         146  +
            opts.cache_size = cache_size;
         147  +
        }
         148  +
         149  +
        if let Some(num_concurrent_reqs) = self.num_concurrent_reqs {
         150  +
            opts.num_concurrent_reqs = num_concurrent_reqs;
         151  +
        }
         152  +
         153  +
        CachingDnsResolver {
         154  +
            resolver: builder.build(),
         155  +
        }
         156  +
    }
         157  +
}

tmp-codegen-diff/aws-sdk/sdk/aws-smithy-runtime/src/client/dns/tokio.rs

@@ -0,1 +0,39 @@
           1  +
/*
           2  +
 * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
           3  +
 * SPDX-License-Identifier: Apache-2.0
           4  +
 */
           5  +
           6  +
use aws_smithy_runtime_api::client::dns::{DnsFuture, ResolveDns, ResolveDnsError};
           7  +
use std::io::{Error as IoError, ErrorKind as IoErrorKind};
           8  +
use std::net::ToSocketAddrs;
           9  +
          10  +
/// DNS resolver that uses `tokio::spawn_blocking` to resolve DNS using the standard library.
          11  +
///
          12  +
/// This implementation isn't available for WASM targets.
          13  +
#[non_exhaustive]
          14  +
#[derive(Debug, Default)]
          15  +
pub struct TokioDnsResolver;
          16  +
          17  +
impl TokioDnsResolver {
          18  +
    /// Creates a new Tokio DNS resolver
          19  +
    pub fn new() -> Self {
          20  +
        Self
          21  +
    }
          22  +
}
          23  +
          24  +
impl ResolveDns for TokioDnsResolver {
          25  +
    fn resolve_dns<'a>(&'a self, name: &'a str) -> DnsFuture<'a> {
          26  +
        let name = name.to_string();
          27  +
        DnsFuture::new(async move {
          28  +
            let result = tokio::task::spawn_blocking(move || (name, 0).to_socket_addrs()).await;
          29  +
            match result {
          30  +
                Err(join_failure) => Err(ResolveDnsError::new(IoError::new(
          31  +
                    IoErrorKind::Other,
          32  +
                    join_failure,
          33  +
                ))),
          34  +
                Ok(Ok(dns_result)) => Ok(dns_result.into_iter().map(|addr| addr.ip()).collect()),
          35  +
                Ok(Err(dns_failure)) => Err(ResolveDnsError::new(dns_failure)),
          36  +
            }
          37  +
        })
          38  +
    }
          39  +
}

tmp-codegen-diff/aws-sdk/sdk/aws-smithy-runtime/tests/dns_caching.rs

@@ -0,1 +0,333 @@
           1  +
/*
           2  +
 * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
           3  +
 * SPDX-License-Identifier: Apache-2.0
           4  +
 */
           5  +
           6  +
#![cfg(all(feature = "client", feature = "rt-tokio", not(target_family = "wasm")))]
           7  +
           8  +
use aws_smithy_runtime::client::dns::CachingDnsResolver;
           9  +
use aws_smithy_runtime_api::client::dns::ResolveDns;
          10  +
use std::{
          11  +
    net::{IpAddr, Ipv4Addr},
          12  +
    time::{Duration, Instant},
          13  +
};
          14  +
use tokio::test;
          15  +
          16  +
#[test]
          17  +
async fn test_dns_caching_performance() {
          18  +
    let dns_server = test_dns_server::setup_dns_server().await;
          19  +
    let (dns_ip, dns_port) = dns_server.addr();
          20  +
          21  +
    let resolver = CachingDnsResolver::builder()
          22  +
        .nameservers(&[dns_ip], dns_port)
          23  +
        .cache_size(1)
          24  +
        .build();
          25  +
          26  +
    let hostname = "example.com";
          27  +
          28  +
    // First resolution should hit the network
          29  +
    let start = Instant::now();
          30  +
    let first_result = resolver.resolve_dns(hostname).await;
          31  +
    let first_duration = start.elapsed();
          32  +
          33  +
    let first_ips = first_result.unwrap();
          34  +
    assert!(!first_ips.is_empty());
          35  +
          36  +
    // Second resolution should hit the cache
          37  +
    let start = Instant::now();
          38  +
    let second_result = resolver.resolve_dns(hostname).await;
          39  +
    let second_duration = start.elapsed();
          40  +
          41  +
    let second_ips = second_result.unwrap();
          42  +
          43  +
    // Verify same IPs returned
          44  +
    assert_eq!(first_ips, second_ips);
          45  +
          46  +
    // Verify correct IP returned
          47  +
    assert_eq!(vec![IpAddr::V4(Ipv4Addr::new(1, 2, 3, 4))], first_ips);
          48  +
          49  +
    // Cache hit should be faster
          50  +
    assert!(second_duration < first_duration);
          51  +
}
          52  +
          53  +
// Ignored since the cache is only eventually consistent w.r.t. size. So hard to get
          54  +
// an exact measure. But the logs here are useful to manually check the performance,
          55  +
// so not deleting this.
          56  +
#[test]
          57  +
#[ignore = "Cache is eventually consistent w.r.t. size."]
          58  +
async fn test_dns_cache_size_limit() {
          59  +
    let dns_server = test_dns_server::setup_dns_server().await;
          60  +
    let (dns_ip, dns_port) = dns_server.addr();
          61  +
          62  +
    let resolver = CachingDnsResolver::builder()
          63  +
        .nameservers(&[dns_ip], dns_port)
          64  +
        .cache_size(1)
          65  +
        .build();
          66  +
          67  +
    // Resolve first hostname
          68  +
    let start = Instant::now();
          69  +
    let result1 = resolver.resolve_dns("example.com").await.unwrap();
          70  +
    let result1_duration = start.elapsed();
          71  +
    assert_eq!(vec![IpAddr::V4(Ipv4Addr::new(1, 2, 3, 4))], result1);
          72  +
          73  +
    // Resolve second hostname (should replace first response in cache)
          74  +
    let start = Instant::now();
          75  +
    let result2 = resolver.resolve_dns("aws.com").await.unwrap();
          76  +
    let result2_duration = start.elapsed();
          77  +
    assert_eq!(vec![IpAddr::V4(Ipv4Addr::new(5, 6, 7, 8))], result2);
          78  +
          79  +
    println!("RESULT1 DURATION: {result1_duration:#?}");
          80  +
    println!("RESULT2 DURATION: {result2_duration:#?}");
          81  +
          82  +
    let start = Instant::now();
          83  +
    let _result1_again = resolver.resolve_dns("example.com").await.unwrap();
          84  +
    let result1_again_duration = start.elapsed();
          85  +
          86  +
    let start = Instant::now();
          87  +
    let _result2_again = resolver.resolve_dns("aws.com").await.unwrap();
          88  +
    let result2_again_duration = start.elapsed();
          89  +
          90  +
    println!("RESULT1 AGAIN DURATION: {result1_again_duration:#?}");
          91  +
    println!("RESULT2 AGAIN DURATION: {result2_again_duration:#?}");
          92  +
    assert!(result1_again_duration < result2_again_duration);
          93  +
}
          94  +
          95  +
#[test]
          96  +
async fn test_dns_error_handling() {
          97  +
    let dns_server = test_dns_server::setup_dns_server().await;
          98  +
    let (dns_ip, dns_port) = dns_server.addr();
          99  +
         100  +
    let resolver = CachingDnsResolver::builder()
         101  +
        .nameservers(&[dns_ip], dns_port)
         102  +
        .timeout(Duration::from_millis(100))
         103  +
        .attempts(1)
         104  +
        .build();
         105  +
         106  +
    // Try to resolve an invalid hostname
         107  +
    let result = resolver
         108  +
        .resolve_dns("invalid.nonexistent.domain.test")
         109  +
        .await;
         110  +
    assert!(result.is_err());
         111  +
}
         112  +
         113  +
// Kind of janky minimal test utility for creating a local DNS server
         114  +
#[cfg(test)]
         115  +
mod test_dns_server {
         116  +
    use std::{
         117  +
        collections::HashMap,
         118  +
        net::{IpAddr, Ipv4Addr, SocketAddr},
         119  +
        sync::Arc,
         120  +
        time::Duration,
         121  +
    };
         122  +
    use tokio::{net::UdpSocket, sync::Notify, task::JoinHandle};
         123  +
         124  +
    pub async fn setup_dns_server() -> TestDnsServer {
         125  +
        let mut records = HashMap::new();
         126  +
        records.insert(
         127  +
            "example.com".to_string(),
         128  +
            IpAddr::V4(Ipv4Addr::new(1, 2, 3, 4)),
         129  +
        );
         130  +
        records.insert("aws.com".to_string(), IpAddr::V4(Ipv4Addr::new(5, 6, 7, 8)));
         131  +
        records.insert(
         132  +
            "foo.com".to_string(),
         133  +
            IpAddr::V4(Ipv4Addr::new(9, 10, 11, 12)),
         134  +
        );
         135  +
         136  +
        TestDnsServer::start(records).await.unwrap()
         137  +
    }
         138  +
         139  +
    pub struct TestDnsServer {
         140  +
        handle: JoinHandle<()>,
         141  +
        addr: SocketAddr,
         142  +
        shutdown: Arc<Notify>,
         143  +
    }
         144  +
         145  +
    impl TestDnsServer {
         146  +
        pub async fn start(
         147  +
            records: HashMap<String, IpAddr>,
         148  +
        ) -> Result<Self, Box<dyn std::error::Error + Send + Sync>> {
         149  +
            // localhost, random port
         150  +
            let socket = UdpSocket::bind("127.0.0.1:0").await?;
         151  +
            let addr = socket.local_addr()?;
         152  +
         153  +
            let shutdown = Arc::new(Notify::new());
         154  +
            let shutdown_clone = shutdown.clone();
         155  +
         156  +
            let handle = tokio::spawn(async move {
         157  +
                let mut buf = [0; 512];
         158  +
                loop {
         159  +
                    tokio::select! {
         160  +
                        _ = shutdown_clone.notified() => break,
         161  +
                        result = socket.recv_from(&mut buf) => {
         162  +
                            if let Ok((len, src)) = result {
         163  +
                                // Short sleep before returning DNS response to simulate network latency
         164  +
                                tokio::time::sleep(Duration::from_millis(1000)).await;
         165  +
                                let response = create_dns_response(&buf[..len], &records);
         166  +
                                let _ = socket.send_to(&response, src).await;
         167  +
                            }
         168  +
                        }
         169  +
                    }
         170  +
                }
         171  +
            });
         172  +
         173  +
            Ok(TestDnsServer {
         174  +
                handle,
         175  +
                addr,
         176  +
                shutdown,
         177  +
            })
         178  +
        }
         179  +
         180  +
        pub fn addr(&self) -> (IpAddr, u16) {
         181  +
            (self.addr.ip(), self.addr.port())
         182  +
        }
         183  +
    }
         184  +
         185  +
    impl Drop for TestDnsServer {
         186  +
        fn drop(&mut self) {
         187  +
            self.shutdown.notify_one();
         188  +
            self.handle.abort();
         189  +
        }
         190  +
    }
         191  +
         192  +
    fn create_dns_response(query: &[u8], records: &HashMap<String, IpAddr>) -> Vec<u8> {
         193  +
        let parsed = DnsQuery::parse(query).unwrap_or_default();
         194  +
        let ip = records.get(&parsed.domain).copied().unwrap();
         195  +
         196  +
        let response = DnsResponse {
         197  +
            id: parsed.id,
         198  +
            flags: 0x8180, // Standard response flags
         199  +
            question: parsed.domain,
         200  +
            answer_ip: ip,
         201  +
            ttl: 300,
         202  +
        };
         203  +
         204  +
        response.to_bytes()
         205  +
    }
         206  +
         207  +
    #[derive(Debug, Default)]
         208  +
    #[allow(dead_code)]
         209  +
    struct DnsQuery {
         210  +
        id: u16,
         211  +
        flags: u16,
         212  +
        question_count: u16,
         213  +
        domain: String,
         214  +
        query_type: u16,
         215  +
        query_class: u16,
         216  +
    }
         217  +
         218  +
    impl DnsQuery {
         219  +
        fn parse(data: &[u8]) -> Option<Self> {
         220  +
            if data.len() < 12 {
         221  +
                return None;
         222  +
            }
         223  +
         224  +
            let id = u16::from_be_bytes([data[0], data[1]]);
         225  +
            let flags = u16::from_be_bytes([data[2], data[3]]);
         226  +
            let question_count = u16::from_be_bytes([data[4], data[5]]);
         227  +
         228  +
            if question_count == 0 {
         229  +
                return None;
         230  +
            }
         231  +
         232  +
            // Parse domain name starting at byte 12
         233  +
            let mut pos = 12;
         234  +
            let mut domain = String::new();
         235  +
         236  +
            while pos < data.len() {
         237  +
                let len = data[pos] as usize;
         238  +
                if len == 0 {
         239  +
                    pos += 1;
         240  +
                    break;
         241  +
                }
         242  +
         243  +
                if !domain.is_empty() {
         244  +
                    domain.push('.');
         245  +
                }
         246  +
         247  +
                pos += 1;
         248  +
                if pos + len > data.len() {
         249  +
                    return None;
         250  +
                }
         251  +
         252  +
                if let Ok(label) = std::str::from_utf8(&data[pos..pos + len]) {
         253  +
                    domain.push_str(label);
         254  +
                }
         255  +
                pos += len;
         256  +
            }
         257  +
         258  +
            if pos + 4 > data.len() {
         259  +
                return None;
         260  +
            }
         261  +
         262  +
            let query_type = u16::from_be_bytes([data[pos], data[pos + 1]]);
         263  +
            let query_class = u16::from_be_bytes([data[pos + 2], data[pos + 3]]);
         264  +
         265  +
            Some(DnsQuery {
         266  +
                id,
         267  +
                flags,
         268  +
                question_count,
         269  +
                domain,
         270  +
                query_type,
         271  +
                query_class,
         272  +
            })
         273  +
        }
         274  +
    }
         275  +
         276  +
    #[derive(Debug)]
         277  +
    #[allow(dead_code)]
         278  +
    struct DnsResponse {
         279  +
        id: u16,
         280  +
        flags: u16,
         281  +
        question: String,
         282  +
        answer_ip: IpAddr,
         283  +
        ttl: u32,
         284  +
    }
         285  +
         286  +
    impl DnsResponse {
         287  +
        fn to_bytes(&self) -> Vec<u8> {
         288  +
            // 30ish required bytes, 11 more added for the question section
         289  +
            // since the longest domain we currently use is 11 bytes long
         290  +
            let mut response = Vec::with_capacity(41);
         291  +
         292  +
            // Header (12 bytes) all values besides id/flags hardcoded
         293  +
            response.extend_from_slice(&self.id.to_be_bytes());
         294  +
            response.extend_from_slice(&self.flags.to_be_bytes());
         295  +
            response.extend_from_slice(&1u16.to_be_bytes()); // Questions: 1
         296  +
            response.extend_from_slice(&1u16.to_be_bytes()); // Answers: 1
         297  +
            response.extend_from_slice(&0u16.to_be_bytes()); // Authority: 0
         298  +
            response.extend_from_slice(&0u16.to_be_bytes()); // Additional: 0
         299  +
         300  +
            // Question section
         301  +
            // In a more ideal world the DnsResponse would contain a ref to the
         302  +
            // DnsQuery that triggered this response and recreate the question section
         303  +
            // from that
         304  +
            for label in self.question.split('.') {
         305  +
                response.push(label.len() as u8);
         306  +
                response.extend_from_slice(label.as_bytes());
         307  +
            }
         308  +
            response.push(0); // End of name
         309  +
            response.extend_from_slice(&1u16.to_be_bytes()); // Type A
         310  +
            response.extend_from_slice(&1u16.to_be_bytes()); // Class IN
         311  +
         312  +
            // Answer section
         313  +
            response.extend_from_slice(&[0xc0, 0x0c]); // Name pointer
         314  +
            response.extend_from_slice(&1u16.to_be_bytes()); // Type A
         315  +
            response.extend_from_slice(&1u16.to_be_bytes()); // Class IN
         316  +
            response.extend_from_slice(&self.ttl.to_be_bytes()); // TTL
         317  +
         318  +
            match self.answer_ip {
         319  +
                IpAddr::V4(ipv4) => {
         320  +
                    response.extend_from_slice(&4u16.to_be_bytes()); // Data length
         321  +
                    response.extend_from_slice(&ipv4.octets());
         322  +
                }
         323  +
                IpAddr::V6(_) => {
         324  +
                    // Unsupported, fallback to IPv4
         325  +
                    response.extend_from_slice(&4u16.to_be_bytes());
         326  +
                    response.extend_from_slice(&[127, 0, 0, 1]);
         327  +
                }
         328  +
            }
         329  +
         330  +
            response
         331  +
        }
         332  +
    }
         333  +
}

tmp-codegen-diff/aws-sdk/sdk/aws-types/Cargo.toml

@@ -12,12 +69,69 @@
   32     32   
path = "../aws-smithy-async"
   33     33   
version = "1.2.5"
   34     34   
   35     35   
[dependencies.aws-smithy-types]
   36     36   
path = "../aws-smithy-types"
   37     37   
version = "1.3.2"
   38     38   
   39     39   
[dependencies.aws-smithy-runtime]
   40     40   
path = "../aws-smithy-runtime"
   41     41   
optional = true
   42         -
version = "1.9.0"
          42  +
version = "1.9.1"
   43     43   
   44     44   
[dependencies.aws-smithy-runtime-api]
   45     45   
path = "../aws-smithy-runtime-api"
   46     46   
features = ["client"]
   47     47   
version = "1.9.0"
   48     48   
   49     49   
[dependencies.hyper-rustls]
   50     50   
version = "0.24"
   51     51   
optional = true
   52     52   
features = ["rustls-native-certs", "http2", "webpki-roots"]

tmp-codegen-diff/aws-sdk/sdk/bedrockruntime/Cargo.toml

@@ -20,20 +80,80 @@
   40     40   
features = ["event-stream"]
   41     41   
version = "0.62.3"
   42     42   
   43     43   
[dependencies.aws-smithy-json]
   44     44   
path = "../aws-smithy-json"
   45     45   
version = "0.61.5"
   46     46   
   47     47   
[dependencies.aws-smithy-runtime]
   48     48   
path = "../aws-smithy-runtime"
   49     49   
features = ["client", "http-auth"]
   50         -
version = "1.9.0"
          50  +
version = "1.9.1"
   51     51   
   52     52   
[dependencies.aws-smithy-runtime-api]
   53     53   
path = "../aws-smithy-runtime-api"
   54     54   
features = ["client", "http-02x", "http-auth"]
   55     55   
version = "1.9.0"
   56     56   
   57     57   
[dependencies.aws-smithy-types]
   58     58   
path = "../aws-smithy-types"
   59     59   
features = ["http-body-0-4-x"]
   60     60   
version = "1.3.2"
@@ -90,90 +150,150 @@
  110    110   
features = ["test-util", "wire-mock"]
  111    111   
version = "1.1.0"
  112    112   
  113    113   
[dev-dependencies.aws-smithy-protocol-test]
  114    114   
path = "../aws-smithy-protocol-test"
  115    115   
version = "0.63.4"
  116    116   
  117    117   
[dev-dependencies.aws-smithy-runtime]
  118    118   
path = "../aws-smithy-runtime"
  119    119   
features = ["test-util"]
  120         -
version = "1.9.0"
         120  +
version = "1.9.1"
  121    121   
  122    122   
[dev-dependencies.aws-smithy-runtime-api]
  123    123   
path = "../aws-smithy-runtime-api"
  124    124   
features = ["test-util"]
  125    125   
version = "1.9.0"
  126    126   
  127    127   
[dev-dependencies.aws-smithy-types]
  128    128   
path = "../aws-smithy-types"
  129    129   
features = ["test-util"]
  130    130   
version = "1.3.2"

tmp-codegen-diff/aws-sdk/sdk/cloudwatchlogs/Cargo.toml

@@ -16,16 +76,76 @@
   36     36   
features = ["event-stream"]
   37     37   
version = "0.62.3"
   38     38   
   39     39   
[dependencies.aws-smithy-json]
   40     40   
path = "../aws-smithy-json"
   41     41   
version = "0.61.5"
   42     42   
   43     43   
[dependencies.aws-smithy-runtime]
   44     44   
path = "../aws-smithy-runtime"
   45     45   
features = ["client"]
   46         -
version = "1.9.0"
          46  +
version = "1.9.1"
   47     47   
   48     48   
[dependencies.aws-smithy-runtime-api]
   49     49   
path = "../aws-smithy-runtime-api"
   50     50   
features = ["client", "http-02x"]
   51     51   
version = "1.9.0"
   52     52   
   53     53   
[dependencies.aws-smithy-types]
   54     54   
path = "../aws-smithy-types"
   55     55   
version = "1.3.2"
   56     56   
@@ -81,81 +141,141 @@
  101    101   
features = ["test-util", "wire-mock"]
  102    102   
version = "1.1.0"
  103    103   
  104    104   
[dev-dependencies.aws-smithy-protocol-test]
  105    105   
path = "../aws-smithy-protocol-test"
  106    106   
version = "0.63.4"
  107    107   
  108    108   
[dev-dependencies.aws-smithy-runtime]
  109    109   
path = "../aws-smithy-runtime"
  110    110   
features = ["test-util"]
  111         -
version = "1.9.0"
         111  +
version = "1.9.1"
  112    112   
  113    113   
[dev-dependencies.aws-smithy-runtime-api]
  114    114   
path = "../aws-smithy-runtime-api"
  115    115   
features = ["test-util"]
  116    116   
version = "1.9.0"
  117    117   
  118    118   
[dev-dependencies.aws-smithy-types]
  119    119   
path = "../aws-smithy-types"
  120    120   
features = ["test-util"]
  121    121   
version = "1.3.2"

tmp-codegen-diff/aws-sdk/sdk/codecatalyst/Cargo.toml

@@ -10,10 +130,130 @@
   30     30   
path = "../aws-smithy-http"
   31     31   
version = "0.62.3"
   32     32   
   33     33   
[dependencies.aws-smithy-json]
   34     34   
path = "../aws-smithy-json"
   35     35   
version = "0.61.5"
   36     36   
   37     37   
[dependencies.aws-smithy-runtime]
   38     38   
path = "../aws-smithy-runtime"
   39     39   
features = ["client", "http-auth"]
   40         -
version = "1.9.0"
          40  +
version = "1.9.1"
   41     41   
   42     42   
[dependencies.aws-smithy-runtime-api]
   43     43   
path = "../aws-smithy-runtime-api"
   44     44   
features = ["client", "http-02x", "http-auth"]
   45     45   
version = "1.9.0"
   46     46   
   47     47   
[dependencies.aws-smithy-types]
   48     48   
path = "../aws-smithy-types"
   49     49   
version = "1.3.2"
   50     50   
   51     51   
[dependencies.aws-types]
   52     52   
path = "../aws-types"
   53     53   
version = "1.3.8"
   54     54   
   55     55   
[dependencies.bytes]
   56     56   
version = "1.4.0"
   57     57   
   58     58   
[dependencies.fastrand]
   59     59   
version = "2.0.0"
   60     60   
   61     61   
[dependencies.http]
   62     62   
version = "0.2.9"
   63     63   
   64     64   
[dependencies.regex-lite]
   65     65   
version = "0.1.5"
   66     66   
   67     67   
[dependencies.tracing]
   68     68   
version = "0.1"
   69     69   
[dev-dependencies.aws-config]
   70     70   
path = "../aws-config"
   71     71   
version = "1.8.6"
   72     72   
   73     73   
[dev-dependencies.aws-credential-types]
   74     74   
path = "../aws-credential-types"
   75     75   
features = ["test-util"]
   76     76   
version = "1.2.6"
   77     77   
   78     78   
[dev-dependencies.aws-runtime]
   79     79   
path = "../aws-runtime"
   80     80   
features = ["test-util"]
   81     81   
version = "1.5.10"
   82     82   
   83     83   
[dev-dependencies.aws-smithy-async]
   84     84   
path = "../aws-smithy-async"
   85     85   
features = ["test-util"]
   86     86   
version = "1.2.5"
   87     87   
   88     88   
[dev-dependencies.aws-smithy-http-client]
   89     89   
path = "../aws-smithy-http-client"
   90     90   
features = ["test-util", "wire-mock"]
   91     91   
version = "1.1.0"
   92     92   
   93     93   
[dev-dependencies.aws-smithy-protocol-test]
   94     94   
path = "../aws-smithy-protocol-test"
   95     95   
version = "0.63.4"
   96     96   
   97     97   
[dev-dependencies.aws-smithy-runtime]
   98     98   
path = "../aws-smithy-runtime"
   99     99   
features = ["test-util"]
  100         -
version = "1.9.0"
         100  +
version = "1.9.1"
  101    101   
  102    102   
[dev-dependencies.aws-smithy-runtime-api]
  103    103   
path = "../aws-smithy-runtime-api"
  104    104   
features = ["test-util"]
  105    105   
version = "1.9.0"
  106    106   
  107    107   
[dev-dependencies.aws-smithy-types]
  108    108   
path = "../aws-smithy-types"
  109    109   
features = ["test-util"]
  110    110   
version = "1.3.2"

tmp-codegen-diff/aws-sdk/sdk/config/Cargo.toml

@@ -10,10 +70,70 @@
   30     30   
path = "../aws-smithy-http"
   31     31   
version = "0.62.3"
   32     32   
   33     33   
[dependencies.aws-smithy-json]
   34     34   
path = "../aws-smithy-json"
   35     35   
version = "0.61.5"
   36     36   
   37     37   
[dependencies.aws-smithy-runtime]
   38     38   
path = "../aws-smithy-runtime"
   39     39   
features = ["client"]
   40         -
version = "1.9.0"
          40  +
version = "1.9.1"
   41     41   
   42     42   
[dependencies.aws-smithy-runtime-api]
   43     43   
path = "../aws-smithy-runtime-api"
   44     44   
features = ["client", "http-02x"]
   45     45   
version = "1.9.0"
   46     46   
   47     47   
[dependencies.aws-smithy-types]
   48     48   
path = "../aws-smithy-types"
   49     49   
version = "1.3.2"
   50     50   

tmp-codegen-diff/aws-sdk/sdk/dynamodb/Cargo.toml

@@ -10,10 +70,70 @@
   30     30   
path = "../aws-smithy-http"
   31     31   
version = "0.62.3"
   32     32   
   33     33   
[dependencies.aws-smithy-json]
   34     34   
path = "../aws-smithy-json"
   35     35   
version = "0.61.5"
   36     36   
   37     37   
[dependencies.aws-smithy-runtime]
   38     38   
path = "../aws-smithy-runtime"
   39     39   
features = ["client"]
   40         -
version = "1.9.0"
          40  +
version = "1.9.1"
   41     41   
   42     42   
[dependencies.aws-smithy-runtime-api]
   43     43   
path = "../aws-smithy-runtime-api"
   44     44   
features = ["client", "http-02x"]
   45     45   
version = "1.9.0"
   46     46   
   47     47   
[dependencies.aws-smithy-types]
   48     48   
path = "../aws-smithy-types"
   49     49   
version = "1.3.2"
   50     50   
@@ -73,73 +133,133 @@
   93     93   
features = ["test-util", "wire-mock"]
   94     94   
version = "1.1.0"
   95     95   
   96     96   
[dev-dependencies.aws-smithy-protocol-test]
   97     97   
path = "../aws-smithy-protocol-test"
   98     98   
version = "0.63.4"
   99     99   
  100    100   
[dev-dependencies.aws-smithy-runtime]
  101    101   
path = "../aws-smithy-runtime"
  102    102   
features = ["test-util"]
  103         -
version = "1.9.0"
         103  +
version = "1.9.1"
  104    104   
  105    105   
[dev-dependencies.aws-smithy-runtime-api]
  106    106   
path = "../aws-smithy-runtime-api"
  107    107   
features = ["test-util"]
  108    108   
version = "1.9.0"
  109    109   
  110    110   
[dev-dependencies.aws-smithy-types]
  111    111   
path = "../aws-smithy-types"
  112    112   
features = ["test-util"]
  113    113   
version = "1.3.2"