diff --git a/Cargo.lock b/Cargo.lock index 7a9088a7d..178f2f5cd 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1,6 +1,6 @@ # This file is automatically @generated by Cargo. # It is not intended for manual editing. -version = 3 +version = 4 [[package]] name = "addr2line" @@ -8,7 +8,16 @@ version = "0.21.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8a30b2e23b9e17a9f90641c7ab1549cd9b44f296d3ccbf309d2863cfe398a0cb" dependencies = [ - "gimli", + "gimli 0.28.1", +] + +[[package]] +name = "addr2line" +version = "0.24.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dfbe277e56a376000877090da837660b4427aad530e3028d44e0bffe4f89a1c1" +dependencies = [ + "gimli 0.31.1", ] [[package]] @@ -17,6 +26,12 @@ version = "1.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f26201604c87b1e01bd3d98f8d5d9a8fcbb815e8cedb41ffccbeb4bf593a35fe" +[[package]] +name = "adler2" +version = "2.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "512761e0bb2578dd7380c6baaa0f4ce03e84f95e960231d1dec8bf4d7d6e2627" + [[package]] name = "ahash" version = "0.8.11" @@ -147,7 +162,7 @@ checksum = "c980ee35e870bd1a4d2c8294d4c04d0499e67bca1e4b5cefcc693c2fa00caea9" dependencies = [ "proc-macro2", "quote", - "syn 2.0.52", + "syn 2.0.93", ] [[package]] @@ -158,7 +173,7 @@ checksum = "3c87f3f15e7794432337fc718554eaa4dc8f04c9677a950ffe366f20a162ae42" dependencies = [ "proc-macro2", "quote", - "syn 2.0.52", + "syn 2.0.93", ] [[package]] @@ -271,17 +286,17 @@ dependencies = [ [[package]] name = "backtrace" -version = "0.3.69" +version = "0.3.74" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2089b7e3f35b9dd2d0ed921ead4f6d318c27680d4a5bd167b3ee120edb105837" +checksum = "8d82cb332cdfaed17ae235a638438ac4d4839913cc2af585c3c6746e8f8bee1a" dependencies = [ - "addr2line", - "cc", + "addr2line 0.24.2", "cfg-if", "libc", - "miniz_oxide", - "object", + "miniz_oxide 0.8.2", + "object 0.36.7", "rustc-demangle", + "windows-targets 0.52.6", ] [[package]] @@ -305,6 +320,259 @@ dependencies = [ "serde", ] +[[package]] +name = "biome_console" +version = "0.5.7" +source = "git+https://github.com/biomejs/biome#6ea885f0cec47a6db48d662cbd828f4f335209ba" +dependencies = [ + "biome_markup", + "biome_text_size", + "schemars", + "serde", + "termcolor", + "unicode-segmentation", + "unicode-width", +] + +[[package]] +name = "biome_deserialize" +version = "0.6.0" +source = "git+https://github.com/biomejs/biome#6ea885f0cec47a6db48d662cbd828f4f335209ba" +dependencies = [ + "biome_console", + "biome_deserialize_macros", + "biome_diagnostics", + "biome_json_parser", + "biome_json_syntax", + "biome_rowan", + "enumflags2", + "indexmap 2.7.0", + "serde", +] + +[[package]] +name = "biome_deserialize_macros" +version = "0.6.0" +source = "git+https://github.com/biomejs/biome#6ea885f0cec47a6db48d662cbd828f4f335209ba" +dependencies = [ + "biome_string_case", + "proc-macro-error", + "proc-macro2", + "quote", + "syn 1.0.109", +] + +[[package]] +name = "biome_diagnostics" +version = "0.5.7" +source = "git+https://github.com/biomejs/biome#6ea885f0cec47a6db48d662cbd828f4f335209ba" +dependencies = [ + "backtrace", + "biome_console", + "biome_diagnostics_categories", + "biome_diagnostics_macros", + "biome_rowan", + "biome_text_edit", + "biome_text_size", + "bpaf", + "enumflags2", + "oxc_resolver", + "serde", + "serde_ini", + "serde_json", + "termcolor", + "unicode-width", +] + +[[package]] +name = "biome_diagnostics_categories" +version = "0.5.7" +source = "git+https://github.com/biomejs/biome#6ea885f0cec47a6db48d662cbd828f4f335209ba" +dependencies = [ + "quote", + "serde", +] + +[[package]] +name = "biome_diagnostics_macros" +version = "0.5.7" +source = "git+https://github.com/biomejs/biome#6ea885f0cec47a6db48d662cbd828f4f335209ba" +dependencies = [ + "proc-macro-error", + "proc-macro2", + "quote", + "syn 1.0.109", +] + +[[package]] +name = "biome_formatter" +version = "0.5.7" +source = "git+https://github.com/biomejs/biome#6ea885f0cec47a6db48d662cbd828f4f335209ba" +dependencies = [ + "biome_console", + "biome_deserialize", + "biome_deserialize_macros", + "biome_diagnostics", + "biome_rowan", + "biome_string_case", + "cfg-if", + "countme", + "drop_bomb", + "indexmap 2.7.0", + "rustc-hash 2.1.0", + "tracing", + "unicode-width", +] + +[[package]] +name = "biome_grit_factory" +version = "0.5.7" +source = "git+https://github.com/biomejs/biome#6ea885f0cec47a6db48d662cbd828f4f335209ba" +dependencies = [ + "biome_grit_syntax", + "biome_rowan", +] + +[[package]] +name = "biome_grit_formatter" +version = "0.0.0" +source = "git+https://github.com/biomejs/biome#6ea885f0cec47a6db48d662cbd828f4f335209ba" +dependencies = [ + "biome_formatter", + "biome_grit_syntax", + "biome_rowan", +] + +[[package]] +name = "biome_grit_parser" +version = "0.1.0" +source = "git+https://github.com/biomejs/biome#6ea885f0cec47a6db48d662cbd828f4f335209ba" +dependencies = [ + "biome_console", + "biome_diagnostics", + "biome_grit_factory", + "biome_grit_syntax", + "biome_parser", + "biome_rowan", + "serde", + "serde_json", + "smallvec", + "tracing", + "unicode-bom", +] + +[[package]] +name = "biome_grit_syntax" +version = "0.5.7" +source = "git+https://github.com/biomejs/biome#6ea885f0cec47a6db48d662cbd828f4f335209ba" +dependencies = [ + "biome_rowan", + "biome_string_case", + "serde", +] + +[[package]] +name = "biome_json_factory" +version = "0.5.7" +source = "git+https://github.com/biomejs/biome#6ea885f0cec47a6db48d662cbd828f4f335209ba" +dependencies = [ + "biome_json_syntax", + "biome_rowan", +] + +[[package]] +name = "biome_json_parser" +version = "0.5.7" +source = "git+https://github.com/biomejs/biome#6ea885f0cec47a6db48d662cbd828f4f335209ba" +dependencies = [ + "biome_console", + "biome_diagnostics", + "biome_json_factory", + "biome_json_syntax", + "biome_parser", + "biome_rowan", + "biome_unicode_table", + "tracing", + "unicode-bom", +] + +[[package]] +name = "biome_json_syntax" +version = "0.5.7" +source = "git+https://github.com/biomejs/biome#6ea885f0cec47a6db48d662cbd828f4f335209ba" +dependencies = [ + "biome_rowan", + "biome_string_case", + "serde", +] + +[[package]] +name = "biome_markup" +version = "0.5.7" +source = "git+https://github.com/biomejs/biome#6ea885f0cec47a6db48d662cbd828f4f335209ba" +dependencies = [ + "proc-macro-error", + "proc-macro2", + "quote", +] + +[[package]] +name = "biome_parser" +version = "0.5.7" +source = "git+https://github.com/biomejs/biome#6ea885f0cec47a6db48d662cbd828f4f335209ba" +dependencies = [ + "biome_console", + "biome_diagnostics", + "biome_rowan", + "biome_unicode_table", + "drop_bomb", + "enumflags2", + "unicode-bom", +] + +[[package]] +name = "biome_rowan" +version = "0.5.7" +source = "git+https://github.com/biomejs/biome#6ea885f0cec47a6db48d662cbd828f4f335209ba" +dependencies = [ + "biome_text_edit", + "biome_text_size", + "countme", + "hashbrown 0.14.5", + "rustc-hash 2.1.0", + "serde", + "tracing", +] + +[[package]] +name = "biome_string_case" +version = "0.5.7" +source = "git+https://github.com/biomejs/biome#6ea885f0cec47a6db48d662cbd828f4f335209ba" + +[[package]] +name = "biome_text_edit" +version = "0.5.7" +source = "git+https://github.com/biomejs/biome#6ea885f0cec47a6db48d662cbd828f4f335209ba" +dependencies = [ + "biome_text_size", + "serde", + "similar", +] + +[[package]] +name = "biome_text_size" +version = "0.5.7" +source = "git+https://github.com/biomejs/biome#6ea885f0cec47a6db48d662cbd828f4f335209ba" +dependencies = [ + "schemars", + "serde", +] + +[[package]] +name = "biome_unicode_table" +version = "0.5.7" +source = "git+https://github.com/biomejs/biome#6ea885f0cec47a6db48d662cbd828f4f335209ba" + [[package]] name = "bitflags" version = "1.3.2" @@ -326,6 +594,26 @@ dependencies = [ "generic-array", ] +[[package]] +name = "bpaf" +version = "0.9.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "50fd5174866dc2fa2ddc96e8fb800852d37f064f32a45c7b7c2f8fa2c64c77fa" +dependencies = [ + "bpaf_derive", +] + +[[package]] +name = "bpaf_derive" +version = "0.5.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cf95d9c7e6aba67f8fc07761091e93254677f4db9e27197adecebc7039a58722" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.93", +] + [[package]] name = "bstr" version = "1.9.1" @@ -500,7 +788,7 @@ dependencies = [ "num-traits", "serde", "wasm-bindgen", - "windows-targets 0.52.4", + "windows-targets 0.52.6", ] [[package]] @@ -542,7 +830,7 @@ dependencies = [ "heck", "proc-macro2", "quote", - "syn 2.0.52", + "syn 2.0.93", ] [[package]] @@ -620,6 +908,12 @@ version = "0.8.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "06ea2b9bc92be3c2baa9334a323ebca2d6f074ff852cd1d7b11064035cd3868f" +[[package]] +name = "countme" +version = "3.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7704b5fdd17b18ae31c4c1da5a2e0305a2bf17b5249300a9ee9ed7b72114c636" + [[package]] name = "cpp_demangle" version = "0.3.5" @@ -660,8 +954,8 @@ dependencies = [ "cranelift-control", "cranelift-entity", "cranelift-isle", - "gimli", - "hashbrown 0.14.3", + "gimli 0.28.1", + "hashbrown 0.14.5", "log", "regalloc2", "smallvec", @@ -807,7 +1101,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "edb49164822f3ee45b17acd4a208cfc1251410cf0cad9a833234c9890774dd9f" dependencies = [ "quote", - "syn 2.0.52", + "syn 2.0.93", ] [[package]] @@ -852,7 +1146,21 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "978747c1d849a7d2ee5e8adc0159961c48fb7e5db2f06af6723b80123bb53856" dependencies = [ "cfg-if", - "hashbrown 0.14.3", + "hashbrown 0.14.5", + "lock_api", + "once_cell", + "parking_lot_core", +] + +[[package]] +name = "dashmap" +version = "6.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5041cc499144891f3790297212f32a74fb938e5136a14943f338ef9e0ae276cf" +dependencies = [ + "cfg-if", + "crossbeam-utils", + "hashbrown 0.14.5", "lock_api", "once_cell", "parking_lot_core", @@ -973,6 +1281,18 @@ version = "0.3.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "fea41bba32d969b513997752735605054bc0dfa92b4c56bf1189f2e174be7a10" +[[package]] +name = "drop_bomb" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9bda8e21c04aca2ae33ffc2fd8c23134f3cac46db123ba97bd9d3f3b8a4a85e1" + +[[package]] +name = "dyn-clone" +version = "1.0.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0d6ef0072f8a535281e4876be788938b528e9a1d43900b82c2569af7da799125" + [[package]] name = "either" version = "1.10.0" @@ -1017,7 +1337,27 @@ dependencies = [ "once_cell", "proc-macro2", "quote", - "syn 2.0.52", + "syn 2.0.93", +] + +[[package]] +name = "enumflags2" +version = "0.7.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d232db7f5956f3f14313dc2f87985c58bd2c695ce124c8cdd984e08e15ac133d" +dependencies = [ + "enumflags2_derive", +] + +[[package]] +name = "enumflags2_derive" +version = "0.7.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "de0d48a183585823424a4ce1aa132d174a6a81bd540895822eb4c8373a8e49e8" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.93", ] [[package]] @@ -1100,7 +1440,7 @@ dependencies = [ "proc-macro-crate", "proc-macro2", "quote", - "syn 2.0.52", + "syn 2.0.93", ] [[package]] @@ -1156,7 +1496,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "46303f565772937ffe1d394a4fac6f411c6013172fadde9dcdb1e147a086940e" dependencies = [ "crc32fast", - "miniz_oxide", + "miniz_oxide 0.7.2", ] [[package]] @@ -1289,7 +1629,7 @@ checksum = "87750cf4b7a4c0625b1529e4c543c2182106e4dedc60a2a6455e00d212c489ac" dependencies = [ "proc-macro2", "quote", - "syn 2.0.52", + "syn 2.0.93", ] [[package]] @@ -1374,10 +1714,16 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "4271d37baee1b8c7e4b708028c57d816cf9d2434acb33a549475f78c181f6253" dependencies = [ "fallible-iterator", - "indexmap 2.2.5", + "indexmap 2.7.0", "stable_deref_trait", ] +[[package]] +name = "gimli" +version = "0.31.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "07e28edb80900c19c28f1072f2e8aeca7fa06b23cd4169cefe1af5aa3260783f" + [[package]] name = "git2" version = "0.19.0" @@ -1513,7 +1859,7 @@ dependencies = [ "futures-sink", "futures-util", "http 0.2.12", - "indexmap 2.2.5", + "indexmap 2.7.0", "slab", "tokio", "tokio-util", @@ -1537,13 +1883,19 @@ dependencies = [ [[package]] name = "hashbrown" -version = "0.14.3" +version = "0.14.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "290f1a1d9242c78d09ce40a5e87e7554ee637af1351968159f4952f028f75604" +checksum = "e5274423e17b7c9fc20b6e7e208532f9b19825d82dfd615708b70edd83df41f1" dependencies = [ "ahash", ] +[[package]] +name = "hashbrown" +version = "0.15.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bf151400ff0baff5465007dd2f3e717f3fe502074ca563069ce3a6629d07b289" + [[package]] name = "heck" version = "0.4.1" @@ -1834,12 +2186,12 @@ dependencies = [ [[package]] name = "indexmap" -version = "2.2.5" +version = "2.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7b0b929d511467233429c45a44ac1dcaa21ba0f5ba11e4879e6ed28ddb4f9df4" +checksum = "62f822373a4fe84d4bb149bf54e584a7f4abec90e072ed49cda0edea5b95471f" dependencies = [ "equivalent", - "hashbrown 0.14.3", + "hashbrown 0.15.2", "serde", ] @@ -2007,6 +2359,15 @@ dependencies = [ "wasm-bindgen", ] +[[package]] +name = "json-strip-comments" +version = "1.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b271732a960335e715b6b2ae66a086f115c74eb97360e996d2bd809bfc063bba" +dependencies = [ + "memchr", +] + [[package]] name = "kqueue" version = "1.0.8" @@ -2041,9 +2402,9 @@ checksum = "884e2677b40cc8c339eaefcb701c32ef1fd2493d71118dc0ca4b6a736c93bd67" [[package]] name = "libc" -version = "0.2.153" +version = "0.2.169" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9c198f91728a82281a64e1f4f9eeb25d82cb32a5de251c6bd1b5154d63a8e7bd" +checksum = "b5aba8db14291edd000dfcc4d620c7ebfb122c613afb886ca8803fa4e128a20a" [[package]] name = "libgit2-sys" @@ -2066,7 +2427,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0c2a198fb6b0eada2a8df47933734e6d35d350665a33a3593d7164fa52c75c19" dependencies = [ "cfg-if", - "windows-targets 0.52.4", + "windows-targets 0.48.5", ] [[package]] @@ -2165,7 +2526,7 @@ dependencies = [ "manyhow-macros", "proc-macro2", "quote", - "syn 2.0.52", + "syn 2.0.93", ] [[package]] @@ -2201,13 +2562,15 @@ dependencies = [ "ai_builtins", "anyhow", "axoupdater", + "biome_grit_formatter", + "biome_grit_parser", "chrono", "clap", "clap-markdown", "cli_server", "colored", "console", - "dashmap", + "dashmap 5.5.3", "dialoguer", "env_logger", "flate2", @@ -2370,7 +2733,7 @@ version = "0.1.0" dependencies = [ "ai_builtins", "anyhow", - "dashmap", + "dashmap 5.5.3", "grit-util", "grit_cache", "marzano-core", @@ -2463,9 +2826,9 @@ checksum = "4facc753ae494aeb6e3c22f839b158aebd4f9270f55cd3c79906c45476c47ab4" [[package]] name = "memchr" -version = "2.7.1" +version = "2.7.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "523dc4f511e55ab87b694dc30d0f820d60906ef06413f93d4d7a1385599cc149" +checksum = "78ca9ab1a0babb1e7d5695e3530886289c18cf2f87ec19a575a0abdce112e3a3" [[package]] name = "memfd" @@ -2514,7 +2877,7 @@ checksum = "dcf09caffaac8068c346b6df2a7fc27a177fd20b39421a39ce0a211bde679a6c" dependencies = [ "proc-macro2", "quote", - "syn 2.0.52", + "syn 2.0.93", ] [[package]] @@ -2532,6 +2895,15 @@ dependencies = [ "adler", ] +[[package]] +name = "miniz_oxide" +version = "0.8.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4ffbe83022cedc1d264172192511ae958937694cd57ce297164951b8b3568394" +dependencies = [ + "adler2", +] + [[package]] name = "mio" version = "0.8.11" @@ -2569,7 +2941,7 @@ dependencies = [ "napi-derive-backend", "proc-macro2", "quote", - "syn 2.0.52", + "syn 2.0.93", ] [[package]] @@ -2584,7 +2956,7 @@ dependencies = [ "quote", "regex", "semver", - "syn 2.0.52", + "syn 2.0.93", ] [[package]] @@ -2738,8 +3110,17 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a6a622008b6e321afc04970976f62ee297fdbaa6f95318ca343e3eebb9648441" dependencies = [ "crc32fast", - "hashbrown 0.14.3", - "indexmap 2.2.5", + "hashbrown 0.14.5", + "indexmap 2.7.0", + "memchr", +] + +[[package]] +name = "object" +version = "0.36.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "62948e14d923ea95ea2c7c86c71013138b66525b86bdc08d2dcc262bdb497b87" +dependencies = [ "memchr", ] @@ -2772,7 +3153,7 @@ checksum = "a948666b637a0f465e8564c73e89d4dde00d72d4d473cc972f390fc3dcee7d9c" dependencies = [ "proc-macro2", "quote", - "syn 2.0.52", + "syn 2.0.93", ] [[package]] @@ -2811,7 +3192,7 @@ checksum = "1e32339a5dc40459130b3bd269e9892439f55b33e772d2a9d402a789baaf4e8a" dependencies = [ "futures-core", "futures-sink", - "indexmap 2.2.5", + "indexmap 2.7.0", "js-sys", "once_cell", "pin-project-lite", @@ -2912,6 +3293,25 @@ version = "0.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b15813163c1d831bf4a13c3610c05c0d03b39feb07f7e09fa234dac9b15aaf39" +[[package]] +name = "oxc_resolver" +version = "3.0.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bed381b6ab4bbfebfc7a011ad43b110ace8d201d02a39c0e09855f16b8f3f741" +dependencies = [ + "cfg-if", + "dashmap 6.1.0", + "indexmap 2.7.0", + "json-strip-comments", + "once_cell", + "rustc-hash 2.1.0", + "serde", + "serde_json", + "simdutf8", + "thiserror", + "tracing", +] + [[package]] name = "parking_lot" version = "0.12.1" @@ -2996,7 +3396,7 @@ dependencies = [ "pest_meta", "proc-macro2", "quote", - "syn 2.0.52", + "syn 2.0.93", ] [[package]] @@ -3027,7 +3427,7 @@ checksum = "2f38a4412a78282e09a2cf38d195ea5420d15ba0602cb375210efbc877243965" dependencies = [ "proc-macro2", "quote", - "syn 2.0.52", + "syn 2.0.93", ] [[package]] @@ -3099,6 +3499,29 @@ dependencies = [ "toml_edit 0.21.1", ] +[[package]] +name = "proc-macro-error" +version = "1.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "da25490ff9892aab3fcf7c36f08cfb902dd3e71ca0f9f9517bea02a73a5ce38c" +dependencies = [ + "proc-macro-error-attr", + "proc-macro2", + "quote", + "version_check", +] + +[[package]] +name = "proc-macro-error-attr" +version = "1.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a1be40180e52ecc98ad80b184934baf3d0d29f979574e439af5a55274b35f869" +dependencies = [ + "proc-macro2", + "quote", + "version_check", +] + [[package]] name = "proc-macro-utils" version = "0.8.0" @@ -3112,9 +3535,9 @@ dependencies = [ [[package]] name = "proc-macro2" -version = "1.0.78" +version = "1.0.92" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e2422ad645d89c99f8f3e6b88a9fdeca7fabeac836b1002371c4367c8f984aae" +checksum = "37d3544b3f2748c54e147655edb5025752e2303145b5aefb3c3ea2c78b973bb0" dependencies = [ "unicode-ident", ] @@ -3162,7 +3585,7 @@ dependencies = [ "itertools 0.11.0", "proc-macro2", "quote", - "syn 2.0.52", + "syn 2.0.93", ] [[package]] @@ -3184,7 +3607,7 @@ dependencies = [ "pin-project-lite", "quinn-proto", "quinn-udp", - "rustc-hash 2.0.0", + "rustc-hash 2.1.0", "rustls 0.23.7", "socket2", "thiserror", @@ -3201,7 +3624,7 @@ dependencies = [ "bytes", "rand", "ring", - "rustc-hash 2.0.0", + "rustc-hash 2.1.0", "rustls 0.23.7", "slab", "thiserror", @@ -3224,9 +3647,9 @@ dependencies = [ [[package]] name = "quote" -version = "1.0.35" +version = "1.0.38" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "291ec9ab5efd934aaf503a6466c5d5251535d108ee747472c3977cc5acc868ef" +checksum = "0e4dccaaaf89514f546c693ddc140f729f958c247918a13380cccc6078391acc" dependencies = [ "proc-macro2", ] @@ -3442,6 +3865,12 @@ dependencies = [ "winreg 0.52.0", ] +[[package]] +name = "result" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "194d8e591e405d1eecf28819740abed6d719d1a2db87fc0bcdedee9a26d55560" + [[package]] name = "ring" version = "0.17.8" @@ -3481,9 +3910,9 @@ dependencies = [ [[package]] name = "rustc-demangle" -version = "0.1.23" +version = "0.1.24" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d626bb9dae77e28219937af045c257c28bfd3f69333c512553507f5f9798cb76" +checksum = "719b953e2095829ee67db738b3bfa9fa368c94900df327b3f07fe6e794d2fe1f" [[package]] name = "rustc-hash" @@ -3493,9 +3922,9 @@ checksum = "08d43f7aa6b08d49f382cde6a7982047c3426db949b1424bc4b7ec9ae12c6ce2" [[package]] name = "rustc-hash" -version = "2.0.0" +version = "2.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "583034fd73374156e66797ed8e5b0d5690409c9226b22d87cb7f19821c05d152" +checksum = "c7fb8039b3032c191086b10f11f319a6e99e1e82889c5cc6046f515c9db1d497" [[package]] name = "rustix" @@ -3606,6 +4035,32 @@ dependencies = [ "windows-sys 0.52.0", ] +[[package]] +name = "schemars" +version = "0.8.21" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "09c024468a378b7e36765cd36702b7a90cc3cba11654f6685c8f233408e89e92" +dependencies = [ + "dyn-clone", + "indexmap 2.7.0", + "schemars_derive", + "serde", + "serde_json", + "smallvec", +] + +[[package]] +name = "schemars_derive" +version = "0.8.21" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b1eee588578aff73f856ab961cd2f79e36bc45d7ded33a7562adba4667aecc0e" +dependencies = [ + "proc-macro2", + "quote", + "serde_derive_internals", + "syn 2.0.93", +] + [[package]] name = "scoped-tls" version = "1.0.1" @@ -3649,9 +4104,9 @@ checksum = "92d43fe69e652f3df9bdc2b85b2854a0825b86e4fb76bc44d945137d053639ca" [[package]] name = "serde" -version = "1.0.208" +version = "1.0.217" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cff085d2cb684faa248efb494c39b68e522822ac0de72ccf08109abde717cfb2" +checksum = "02fc4265df13d6fa1d00ecff087228cc0a2b5f3c0e87e258d8b94a156e984c70" dependencies = [ "serde_derive", ] @@ -3669,22 +4124,44 @@ dependencies = [ [[package]] name = "serde_derive" -version = "1.0.208" +version = "1.0.217" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5a9bf7cf98d04a2b28aead066b7496853d4779c9cc183c440dbac457641e19a0" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.93", +] + +[[package]] +name = "serde_derive_internals" +version = "0.29.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "24008e81ff7613ed8e5ba0cfaf24e2c2f1e5b8a0495711e44fcd4882fca62bcf" +checksum = "18d26a20a969b9e3fdf2fc2d9f21eda6c40e2de84c9408bb5d3b05d499aae711" dependencies = [ "proc-macro2", "quote", - "syn 2.0.52", + "syn 2.0.93", +] + +[[package]] +name = "serde_ini" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "eb236687e2bb073a7521c021949be944641e671b8505a94069ca37b656c81139" +dependencies = [ + "result", + "serde", + "void", ] [[package]] name = "serde_json" -version = "1.0.125" +version = "1.0.134" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "83c8e735a073ccf5be70aa8066aa984eaf2fa000db6c8d0100ae605b366d31ed" +checksum = "d00f4175c42ee48b15416f6193a959ba3a0d67fc699a0db9ad12df9f83991c7d" dependencies = [ - "indexmap 2.2.5", + "indexmap 2.7.0", "itoa", "memchr", "ryu", @@ -3699,7 +4176,7 @@ checksum = "0b2e6b945e9d3df726b65d6ee24060aff8e3533d431f677a9695db04eff9dfdb" dependencies = [ "proc-macro2", "quote", - "syn 2.0.52", + "syn 2.0.93", ] [[package]] @@ -3729,7 +4206,7 @@ version = "0.9.32" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8fd075d994154d4a774f95b51fb96bdc2832b0ea48425c92546073816cda1f2f" dependencies = [ - "indexmap 2.2.5", + "indexmap 2.7.0", "itoa", "ryu", "serde", @@ -3780,11 +4257,21 @@ dependencies = [ "libc", ] +[[package]] +name = "simdutf8" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e3a9fe34e3e7a50316060351f37187a3f546bce95496156754b601a5fa71b76e" + [[package]] name = "similar" -version = "2.4.0" +version = "2.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "32fea41aca09ee824cc9724996433064c89f7777e60762749a4170a14abbfa21" +checksum = "1de1d4f81173b03af4c0cbed3c898f6bff5b870e4a7f5d6f4057d62a7a4b686e" +dependencies = [ + "bstr", + "unicode-segmentation", +] [[package]] name = "slab" @@ -3803,9 +4290,12 @@ checksum = "826167069c09b99d56f31e9ae5c99049e932a98c9dc2dac47645b08dbbf76ba7" [[package]] name = "smallvec" -version = "1.13.1" +version = "1.13.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e6ecd384b10a64542d77071bd64bd7b231f4ed5940fba55e98c3de13824cf3d7" +checksum = "3c5e1a9a646d36c3599cd173a41282daf47c44583ad367b8e6837255952e5c67" +dependencies = [ + "serde", +] [[package]] name = "socket2" @@ -3866,9 +4356,9 @@ dependencies = [ [[package]] name = "syn" -version = "2.0.52" +version = "2.0.93" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b699d15b36d1f02c3e7c69f8ffef53de37aefae075d8488d4ba1a7788d574a07" +checksum = "9c786062daee0d6db1132800e623df74274a0a87322d8e183338e01b3d98d058" dependencies = [ "proc-macro2", "quote", @@ -3974,7 +4464,7 @@ checksum = "a4558b58466b9ad7ca0f102865eccc95938dca1a74a856f2b57b6629050da261" dependencies = [ "proc-macro2", "quote", - "syn 2.0.52", + "syn 2.0.93", ] [[package]] @@ -4039,7 +4529,7 @@ checksum = "5b8a1e28f2deaa14e508979454cb3a223b10b938b45af148bc0986de36f1923b" dependencies = [ "proc-macro2", "quote", - "syn 2.0.52", + "syn 2.0.93", ] [[package]] @@ -4124,7 +4614,7 @@ version = "0.21.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6a8534fd7f78b5405e860340ad6575217ce99f38d4d5c8f2442cb5ecb50090e1" dependencies = [ - "indexmap 2.2.5", + "indexmap 2.7.0", "toml_datetime", "winnow 0.5.40", ] @@ -4135,7 +4625,7 @@ version = "0.22.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "2c1b5fd4128cc8d3e0cb74d4ed9a9cc7c7284becd4df68f5f940e1ad123606f6" dependencies = [ - "indexmap 2.2.5", + "indexmap 2.7.0", "serde", "serde_spanned", "toml_datetime", @@ -4205,7 +4695,7 @@ dependencies = [ "async-trait", "auto_impl", "bytes", - "dashmap", + "dashmap 5.5.3", "futures", "httparse", "lsp-types", @@ -4227,7 +4717,7 @@ checksum = "84fd902d4e0b9a4b27f2f440108dc034e1758628a9b702f8ec61ad66355422fa" dependencies = [ "proc-macro2", "quote", - "syn 2.0.52", + "syn 2.0.93", ] [[package]] @@ -4238,9 +4728,9 @@ checksum = "b6bc1c9ce2b5135ac7f93c72918fc37feb872bdc6a5533a8b85eb4b86bfdae52" [[package]] name = "tracing" -version = "0.1.40" +version = "0.1.41" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c3523ab5a71916ccf420eebdf5521fcef02141234bbc0b8a49f2fdc4544364ef" +checksum = "784e0ac535deb450455cbfa28a6f0df145ea1bb7ae51b821cf5e7927fdcfbdd0" dependencies = [ "log", "pin-project-lite", @@ -4250,20 +4740,20 @@ dependencies = [ [[package]] name = "tracing-attributes" -version = "0.1.27" +version = "0.1.28" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "34704c8d6ebcbc939824180af020566b01a7c01f80641264eba0999f6c2b6be7" +checksum = "395ae124c09f9e6918a2310af6038fba074bcf474ac352496d5910dd59a2226d" dependencies = [ "proc-macro2", "quote", - "syn 2.0.52", + "syn 2.0.93", ] [[package]] name = "tracing-core" -version = "0.1.32" +version = "0.1.33" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c06d3da6113f116aaee68e4d601191614c9053067f9ab7f6edbcb161237daa54" +checksum = "e672c95779cf947c5311f83787af4fa8fffd12fb27e4993211a84bdfd9610f9c" dependencies = [ "once_cell", "valuable", @@ -4532,6 +5022,12 @@ version = "0.3.15" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "08f95100a766bf4f8f28f90d77e0a5461bbdb219042e7679bebe79004fed8d75" +[[package]] +name = "unicode-bom" +version = "2.0.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7eec5d1121208364f6793f7d2e222bf75a915c19557537745b195b253dd64217" + [[package]] name = "unicode-ident" version = "1.0.12" @@ -4549,15 +5045,15 @@ dependencies = [ [[package]] name = "unicode-segmentation" -version = "1.11.0" +version = "1.12.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d4c87d22b6e3f4a18d4d40ef354e97c90fcb14dd91d7dc0aa9d8a1172ebf7202" +checksum = "f6ccf251212114b54433ec949fd6a7841275f9ada20dddd2f29e9ceea4501493" [[package]] name = "unicode-width" -version = "0.1.11" +version = "0.1.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e51733f11c9c4f72aa0c160008246859e340b00807569a0da0e7a1079b27ba85" +checksum = "7dd6e30e90baa6f72411720665d41d89b9a3d039dc45b8faea1ddd07f617f6af" [[package]] name = "unicode-xid" @@ -4646,6 +5142,12 @@ version = "0.9.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "49874b5167b65d7193b8aba1567f5c7d93d001cafc34600cee003eda787e483f" +[[package]] +name = "void" +version = "1.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6a02e4885ed3bc0f2de90ea6dd45ebcbb66dacffe03547fadbb0eeae2770887d" + [[package]] name = "wait-timeout" version = "0.2.0" @@ -4746,7 +5248,7 @@ dependencies = [ "once_cell", "proc-macro2", "quote", - "syn 2.0.52", + "syn 2.0.93", "wasm-bindgen-shared", ] @@ -4780,7 +5282,7 @@ checksum = "e94f17b526d0a461a191c78ea52bbce64071ed5c04c9ffe424dcb38f74171bb7" dependencies = [ "proc-macro2", "quote", - "syn 2.0.52", + "syn 2.0.93", "wasm-bindgen-backend", "wasm-bindgen-shared", ] @@ -4813,7 +5315,7 @@ checksum = "b7f89739351a2e03cb94beb799d47fb2cac01759b40ec441f7de39b00cbf7ef0" dependencies = [ "proc-macro2", "quote", - "syn 2.0.52", + "syn 2.0.93", ] [[package]] @@ -4853,7 +5355,7 @@ version = "0.118.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "77f1154f1ab868e2a01d9834a805faca7bf8b50d041b4ca714d005d0dab1c50c" dependencies = [ - "indexmap 2.2.5", + "indexmap 2.7.0", "semver", ] @@ -4864,7 +5366,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9dbe55c8f9d0dbd25d9447a5a889ff90c0cc3feaa7395310d3d826b2c703eaab" dependencies = [ "bitflags 2.4.2", - "indexmap 2.2.5", + "indexmap 2.7.0", "semver", ] @@ -4891,10 +5393,10 @@ dependencies = [ "cfg-if", "encoding_rs", "fxprof-processed-profile", - "indexmap 2.2.5", + "indexmap 2.7.0", "libc", "log", - "object", + "object 0.32.2", "once_cell", "paste", "rayon", @@ -4955,7 +5457,7 @@ dependencies = [ "anyhow", "proc-macro2", "quote", - "syn 2.0.52", + "syn 2.0.93", "wasmtime-component-util", "wasmtime-wit-bindgen", "wit-parser", @@ -4981,9 +5483,9 @@ dependencies = [ "cranelift-frontend", "cranelift-native", "cranelift-wasm", - "gimli", + "gimli 0.28.1", "log", - "object", + "object 0.32.2", "target-lexicon", "thiserror", "wasmparser 0.118.2", @@ -5002,8 +5504,8 @@ dependencies = [ "cranelift-codegen", "cranelift-control", "cranelift-native", - "gimli", - "object", + "gimli 0.28.1", + "object 0.32.2", "target-lexicon", "wasmtime-environ", ] @@ -5016,10 +5518,10 @@ checksum = "099836c3583b85d16e8d1801fe793fa017e9256c5d08bd032cdab0754425be64" dependencies = [ "anyhow", "cranelift-entity", - "gimli", - "indexmap 2.2.5", + "gimli 0.28.1", + "indexmap 2.7.0", "log", - "object", + "object 0.32.2", "serde", "serde_derive", "target-lexicon", @@ -5052,15 +5554,15 @@ version = "17.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "cdae2c6da571b051c3c1520c9c4206a49939e855cb64c4119ab06ff08a3fc460" dependencies = [ - "addr2line", + "addr2line 0.21.0", "anyhow", "bincode", "cfg-if", "cpp_demangle", - "gimli", + "gimli 0.28.1", "ittapi", "log", - "object", + "object 0.32.2", "rustc-demangle", "rustix", "serde", @@ -5079,7 +5581,7 @@ version = "17.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "793787308417b7ad72cfa22e54d97324d1d9810c2ecf47b8fd8263d5b122e30c" dependencies = [ - "object", + "object 0.32.2", "once_cell", "rustix", "wasmtime-versioned-export-macros", @@ -5106,7 +5608,7 @@ dependencies = [ "cc", "cfg-if", "encoding_rs", - "indexmap 2.2.5", + "indexmap 2.7.0", "libc", "log", "mach", @@ -5147,7 +5649,7 @@ checksum = "e78ba3989894471c172329d42d1fc03edf2efe883fcc05a5d42f7bd5030de0ff" dependencies = [ "proc-macro2", "quote", - "syn 2.0.52", + "syn 2.0.93", ] [[package]] @@ -5193,8 +5695,8 @@ checksum = "131924cb850fd2c96e87868e101490f738e607fe0eba5ec8dc7c3b43115d8223" dependencies = [ "anyhow", "cranelift-codegen", - "gimli", - "object", + "gimli 0.28.1", + "object 0.32.2", "target-lexicon", "wasmparser 0.118.2", "wasmtime-cranelift-shared", @@ -5210,7 +5712,7 @@ checksum = "81b149b61bd1402bcd5d456c616302812f8bebd65c56f720cefd86ab6cf5c8d8" dependencies = [ "anyhow", "heck", - "indexmap 2.2.5", + "indexmap 2.7.0", "wit-parser", ] @@ -5321,7 +5823,7 @@ dependencies = [ "proc-macro2", "quote", "shellexpand", - "syn 2.0.52", + "syn 2.0.93", "witx", ] @@ -5333,7 +5835,7 @@ checksum = "505e4f6b7b46e693e0027f650956b662de0fcedfc3a2506ce6a4f9f08281791c" dependencies = [ "proc-macro2", "quote", - "syn 2.0.52", + "syn 2.0.93", "wiggle-generate", ] @@ -5376,7 +5878,7 @@ checksum = "f114f3f980c00f13ee164e431e3abac9cd20b10853849fa6b030d3e4d6be307a" dependencies = [ "anyhow", "cranelift-codegen", - "gimli", + "gimli 0.28.1", "regalloc2", "smallvec", "target-lexicon", @@ -5393,7 +5895,7 @@ dependencies = [ "windows-core", "windows-implement", "windows-interface", - "windows-targets 0.52.4", + "windows-targets 0.52.6", ] [[package]] @@ -5402,7 +5904,7 @@ version = "0.52.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "33ab640c8d7e35bf8ba19b884ba838ceb4fba93a4e8c65a9059d08afcfc683d9" dependencies = [ - "windows-targets 0.52.4", + "windows-targets 0.52.6", ] [[package]] @@ -5413,7 +5915,7 @@ checksum = "12168c33176773b86799be25e2a2ba07c7aab9968b37541f1094dbd7a60c8946" dependencies = [ "proc-macro2", "quote", - "syn 2.0.52", + "syn 2.0.93", ] [[package]] @@ -5424,7 +5926,7 @@ checksum = "9d8dc32e0095a7eeccebd0e3f09e9509365ecb3fc6ac4d6f5f14a3f6392942d1" dependencies = [ "proc-macro2", "quote", - "syn 2.0.52", + "syn 2.0.93", ] [[package]] @@ -5442,7 +5944,7 @@ version = "0.52.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "282be5f36a8ce781fad8c8ae18fa3f9beff57ec1b52cb3de0789201425d9a33d" dependencies = [ - "windows-targets 0.52.4", + "windows-targets 0.52.6", ] [[package]] @@ -5462,17 +5964,18 @@ dependencies = [ [[package]] name = "windows-targets" -version = "0.52.4" +version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7dd37b7e5ab9018759f893a1952c9420d060016fc19a472b4bb20d1bdd694d1b" +checksum = "9b724f72796e036ab90c1021d4780d4d3d648aca59e491e6b98e725b84e99973" dependencies = [ - "windows_aarch64_gnullvm 0.52.4", - "windows_aarch64_msvc 0.52.4", - "windows_i686_gnu 0.52.4", - "windows_i686_msvc 0.52.4", - "windows_x86_64_gnu 0.52.4", - "windows_x86_64_gnullvm 0.52.4", - "windows_x86_64_msvc 0.52.4", + "windows_aarch64_gnullvm 0.52.6", + "windows_aarch64_msvc 0.52.6", + "windows_i686_gnu 0.52.6", + "windows_i686_gnullvm", + "windows_i686_msvc 0.52.6", + "windows_x86_64_gnu 0.52.6", + "windows_x86_64_gnullvm 0.52.6", + "windows_x86_64_msvc 0.52.6", ] [[package]] @@ -5483,9 +5986,9 @@ checksum = "2b38e32f0abccf9987a4e3079dfb67dcd799fb61361e53e2882c3cbaf0d905d8" [[package]] name = "windows_aarch64_gnullvm" -version = "0.52.4" +version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bcf46cf4c365c6f2d1cc93ce535f2c8b244591df96ceee75d8e83deb70a9cac9" +checksum = "32a4622180e7a0ec044bb555404c800bc9fd9ec262ec147edd5989ccd0c02cd3" [[package]] name = "windows_aarch64_msvc" @@ -5495,9 +5998,9 @@ checksum = "dc35310971f3b2dbbf3f0690a219f40e2d9afcf64f9ab7cc1be722937c26b4bc" [[package]] name = "windows_aarch64_msvc" -version = "0.52.4" +version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "da9f259dd3bcf6990b55bffd094c4f7235817ba4ceebde8e6d11cd0c5633b675" +checksum = "09ec2a7bb152e2252b53fa7803150007879548bc709c039df7627cabbd05d469" [[package]] name = "windows_i686_gnu" @@ -5507,9 +6010,15 @@ checksum = "a75915e7def60c94dcef72200b9a8e58e5091744960da64ec734a6c6e9b3743e" [[package]] name = "windows_i686_gnu" -version = "0.52.4" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8e9b5ad5ab802e97eb8e295ac6720e509ee4c243f69d781394014ebfe8bbfa0b" + +[[package]] +name = "windows_i686_gnullvm" +version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b474d8268f99e0995f25b9f095bc7434632601028cf86590aea5c8a5cb7801d3" +checksum = "0eee52d38c090b3caa76c563b86c3a4bd71ef1a819287c19d586d7334ae8ed66" [[package]] name = "windows_i686_msvc" @@ -5519,9 +6028,9 @@ checksum = "8f55c233f70c4b27f66c523580f78f1004e8b5a8b659e05a4eb49d4166cca406" [[package]] name = "windows_i686_msvc" -version = "0.52.4" +version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1515e9a29e5bed743cb4415a9ecf5dfca648ce85ee42e15873c3cd8610ff8e02" +checksum = "240948bc05c5e7c6dabba28bf89d89ffce3e303022809e73deaefe4f6ec56c66" [[package]] name = "windows_x86_64_gnu" @@ -5531,9 +6040,9 @@ checksum = "53d40abd2583d23e4718fddf1ebec84dbff8381c07cae67ff7768bbf19c6718e" [[package]] name = "windows_x86_64_gnu" -version = "0.52.4" +version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5eee091590e89cc02ad514ffe3ead9eb6b660aedca2183455434b93546371a03" +checksum = "147a5c80aabfbf0c7d901cb5895d1de30ef2907eb21fbbab29ca94c5b08b1a78" [[package]] name = "windows_x86_64_gnullvm" @@ -5543,9 +6052,9 @@ checksum = "0b7b52767868a23d5bab768e390dc5f5c55825b6d30b86c844ff2dc7414044cc" [[package]] name = "windows_x86_64_gnullvm" -version = "0.52.4" +version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "77ca79f2451b49fa9e2af39f0747fe999fcda4f5e241b2898624dca97a1f2177" +checksum = "24d5b23dc417412679681396f2b49f3de8c1473deb516bd34410872eff51ed0d" [[package]] name = "windows_x86_64_msvc" @@ -5555,9 +6064,9 @@ checksum = "ed94fce61571a4006852b7389a063ab983c02eb1bb37b47f8272ce92d06d9538" [[package]] name = "windows_x86_64_msvc" -version = "0.52.4" +version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "32b752e52a2da0ddfbdbcc6fceadfeede4c939ed16d13e648833a61dfb611ed8" +checksum = "589f6da84c646204747d1270a2a5661ea66ed1cced2631d546fdfb155959f9ec" [[package]] name = "winnow" @@ -5615,7 +6124,7 @@ checksum = "316b36a9f0005f5aa4b03c39bc3728d045df136f8c13a73b7db4510dec725e08" dependencies = [ "anyhow", "id-arena", - "indexmap 2.2.5", + "indexmap 2.7.0", "log", "semver", "serde", @@ -5676,7 +6185,7 @@ checksum = "9ce1b18ccd8e73a9321186f97e46f9f04b778851177567b1975109d26a08d2a6" dependencies = [ "proc-macro2", "quote", - "syn 2.0.52", + "syn 2.0.93", ] [[package]] diff --git a/crates/cli/Cargo.toml b/crates/cli/Cargo.toml index 65b90d1da..dde1773a0 100644 --- a/crates/cli/Cargo.toml +++ b/crates/cli/Cargo.toml @@ -20,7 +20,7 @@ anyhow = { version = "1.0.70" } clap = { version = "4.1.13", features = ["derive"] } indicatif = { version = "0.17.5" } # Do *NOT* upgrade beyond 1.0.171 until https://github.com/serde-rs/serde/issues/2538 is fixed -serde = { version = "1.0.164", features = ["derive"] } +serde = { version = "1.0.217", features = ["derive"] } serde_json = { version = "1.0.96" } uuid = { version = "1.1", features = ["v4", "serde"] } tokio = { version = "1", features = ["full"] } @@ -88,6 +88,8 @@ tracing-subscriber = { version = "0.3", default-features = false, optional = tru tracing-log = { version = "0.2.0", optional = true } fs-err = { version = "2.11.0" } +biome_grit_parser = { git = "https://github.com/biomejs/biome" } +biome_grit_formatter = { git = "https://github.com/biomejs/biome" } [target.'cfg(not(windows))'.dependencies] openssl = { version = "0.10", features = ["vendored"] } diff --git a/crates/cli/src/commands/format.rs b/crates/cli/src/commands/format.rs new file mode 100644 index 000000000..de6fa1160 --- /dev/null +++ b/crates/cli/src/commands/format.rs @@ -0,0 +1,238 @@ +use crate::{ + resolver::{resolve_from_cwd, GritModuleResolver, Source}, + ux::{format_diff, DiffString}, +}; +use anyhow::{anyhow, bail, ensure, Context, Result}; +use biome_grit_formatter::context::GritFormatOptions; +use clap::Args; +use colored::Colorize; +use marzano_core::api::MatchResult; +use marzano_gritmodule::{config::ResolvedGritDefinition, parser::PatternFileExt}; +use marzano_util::{rich_path::RichFile, runtime::ExecutionContext}; +use rayon::iter::{IntoParallelIterator, ParallelIterator}; +use serde::Serialize; +use std::collections::BTreeMap; + +#[derive(Args, Debug, Serialize, Clone)] +pub struct FormatArgs { + /// Write formats to file instead of just showing them + #[clap(long)] + pub write: bool, +} + +pub async fn run_format(arg: &FormatArgs) -> Result<()> { + let (resolved, _) = resolve_from_cwd(&Source::Local).await?; + + let file_path_to_resolved = group_resolved_patterns_by_group(resolved); + let mut results = file_path_to_resolved + .into_par_iter() + .map(|(file_path, resolved_patterns)| { + let result = format_file_resolved_patterns(&file_path, resolved_patterns, arg.clone()); + (file_path, result) + }) + .collect::>(); + + // sort outputs to ensure consistent stdout output + // also avoid using sort_by_key to prevent additional cloning of file_path + results.sort_by(|(file_path, _), (other_file_path, _)| file_path.cmp(other_file_path)); + + for (file_path, result) in results { + match result { + Err(error) => eprintln!("couldn't format '{}': {error:?}", file_path), + Ok(Some(diff)) => println!("{}:\n{}", file_path.bold(), diff), + Ok(None) => (), // `args.write` is true or file is already formated + } + } + Ok(()) +} + +fn group_resolved_patterns_by_group( + resolved: Vec, +) -> Vec<(String, Vec)> { + resolved.into_iter().fold(Vec::new(), |mut acc, resolved| { + let file_path = &resolved.config.path; + if let Some((_, resolved_patterns)) = acc + .iter_mut() + .find(|(resolv_file_path, _)| resolv_file_path == file_path) + { + resolved_patterns.push(resolved); + } else { + acc.push((file_path.clone(), vec![resolved])); + } + acc + }) +} + +fn format_file_resolved_patterns( + file_path: &str, + patterns: Vec, + arg: FormatArgs, +) -> Result> { + let first_pattern = patterns + .first() + .ok_or_else(|| anyhow!("patterns is empty"))?; + let first_pattern_raw_data = first_pattern + .config + .raw + .as_ref() + .ok_or_else(|| anyhow!("pattern doesn't have raw data"))?; + let old_file_content = &first_pattern_raw_data.content; + + let new_file_content = match first_pattern_raw_data.format { + PatternFileExt::Yaml => format_yaml_file(&patterns, old_file_content)?, + PatternFileExt::Grit => format_grit_code(old_file_content)?, + PatternFileExt::Md => { + let hunks = patterns + .iter() + .map(format_pattern_as_hunk_changes) + .collect::>>()?; + apply_hunk_changes(old_file_content, hunks) + } + }; + + if &new_file_content == old_file_content { + return Ok(None); + } + + if arg.write { + std::fs::write(file_path, new_file_content).with_context(|| "could not write to file")?; + Ok(None) + } else { + Ok(Some(format_diff(old_file_content, &new_file_content))) + } +} + +/// bubble clause that finds a grit pattern with name "\" in yaml and +/// replaces it's body to "\", `format_yaml_file` uses this pattern to replace +/// pattern bodies with formatted ones +const YAML_REPLACE_BODY_PATERN: &str = r#" + bubble file($body) where { + $body <: contains block_mapping(items=$items) where { + $items <: within `patterns: $_`, + $items <: contains `name: $name`, + $name <: "", + $items <: contains `body: $yaml_body`, + $new_body = "", + $yaml_body => $new_body + }, + } +"#; + +/// format each pattern and use gritql pattern to match and rewrite +fn format_yaml_file(patterns: &[ResolvedGritDefinition], file_content: &str) -> Result { + let bubbles = patterns + .iter() + .map(|pattern| { + let formatted_body = format_grit_code(&pattern.body) + .with_context(|| format!("could not format '{}'", pattern.name()))?; + let bubble = YAML_REPLACE_BODY_PATERN + .replace("", pattern.name()) + .replace("", &format_yaml_body_code(&formatted_body)); + Ok(bubble) + }) + .collect::>>()? + .join(",\n"); + let pattern_body = format!("language yaml\nsequential{{ {bubbles} }}"); + apply_grit_rewrite(file_content, &pattern_body) +} + +fn format_yaml_body_code(input: &str) -> String { + // yaml body still needs two indentation to look good + let body_with_prefix = prefix_lines(input, &" ".repeat(2)); + let escaped_body = body_with_prefix.replace("\"", "\\\""); + // body: | + // escaped_body + format!("|\n{escaped_body}") +} + +fn prefix_lines(input: &str, prefix: &str) -> String { + input + .lines() + .map(|line| { + if line.is_empty() { + line.to_owned() + } else { + format!("{prefix}{line}") + } + }) + .collect::>() + .join("\n") +} + +fn apply_grit_rewrite(input: &str, pattern: &str) -> Result { + let resolver = GritModuleResolver::new(); + let rich_pattern = resolver.make_pattern(pattern, None)?; + + let compiled = rich_pattern + .compile(&BTreeMap::new(), None, None, None) + .map(|cr| cr.problem) + .with_context(|| "could not compile pattern")?; + + let rich_file = RichFile::new(String::new(), input.to_owned()); + let runtime = ExecutionContext::default(); + for result in compiled.execute_file(&rich_file, &runtime) { + if let MatchResult::Rewrite(rewrite) = result { + let content = rewrite + .rewritten + .content + .ok_or_else(|| anyhow!("rewritten content is empty"))?; + return Ok(content); + } + } + bail!("no rewrite result after applying grit pattern") +} + +fn format_pattern_as_hunk_changes(pattern: &ResolvedGritDefinition) -> Result { + let formatted_grit_code = format_grit_code(&pattern.body)?; + let body_range = pattern + .config + .range + .ok_or_else(|| anyhow!("pattern doesn't have config range"))?; + Ok(HunkChange { + starting_byte: body_range.start_byte as usize, + ending_byte: body_range.end_byte as usize, + new_content: formatted_grit_code, + }) +} + +/// format grit code using `biome` +fn format_grit_code(source: &str) -> Result { + let parsed = biome_grit_parser::parse_grit(source); + ensure!( + parsed.diagnostics().is_empty(), + "biome couldn't parse: {}", + parsed + .diagnostics() + .iter() + .map(|diag| diag.message.to_string()) + .collect::>() + .join("\n") + ); + + let options = GritFormatOptions::default(); + let doc = biome_grit_formatter::format_node(options, &parsed.syntax()) + .with_context(|| "biome couldn't format")?; + Ok(doc.print()?.into_code()) +} + +/// Represent a hunk of text that needs to be changed +#[derive(Debug)] +struct HunkChange { + starting_byte: usize, + ending_byte: usize, + new_content: String, +} + +/// returns a new string that applies hunk changes +fn apply_hunk_changes(input: &str, mut hunks: Vec) -> String { + if hunks.is_empty() { + return input.to_string(); + } + hunks.sort_by_key(|hunk| -(hunk.starting_byte as isize)); + let mut buffer = input.to_owned(); + for hunk in hunks { + let hunk_range = hunk.starting_byte..hunk.ending_byte; + buffer.replace_range(hunk_range, &hunk.new_content); + } + buffer +} diff --git a/crates/cli/src/commands/mod.rs b/crates/cli/src/commands/mod.rs index 28874b433..4e8a7c5bd 100644 --- a/crates/cli/src/commands/mod.rs +++ b/crates/cli/src/commands/mod.rs @@ -22,6 +22,7 @@ pub(crate) mod patterns_list; pub(crate) mod patterns_test; pub(crate) mod plumbing; pub(crate) mod version; +pub(crate) mod format; #[cfg(feature = "workflows_v2")] pub(crate) mod apply_migration; @@ -84,6 +85,7 @@ use indicatif_log_bridge::LogWrapper; use init::InitArgs; use install::InstallArgs; use list::ListArgs; +use format::{run_format, FormatArgs}; use log::LevelFilter; use lsp::LspArgs; use marzano_messenger::emit::ApplyDetails; @@ -164,6 +166,8 @@ pub enum Commands { Plumbing(PlumbingArgs), /// Display version information about the CLI and agents Version(VersionArgs), + /// Format grit files under current directory + Format(FormatArgs), /// Generate documentation for the Grit CLI (internal use only) #[cfg(feature = "docgen")] #[clap(hide = true)] @@ -204,6 +208,7 @@ impl fmt::Display for Commands { }, Commands::Plumbing(_) => write!(f, "plumbing"), Commands::Version(_) => write!(f, "version"), + Commands::Format(_) => write!(f, "format"), #[cfg(feature = "docgen")] Commands::Docgen(_) => write!(f, "docgen"), #[cfg(feature = "server")] @@ -439,6 +444,7 @@ async fn run_command(_use_tracing: bool) -> Result<()> { run_plumbing(arg, multi, &mut apply_details, app.format_flags).await } Commands::Version(arg) => run_version(arg).await, + Commands::Format(arg) => run_format(&arg).await, #[cfg(feature = "docgen")] Commands::Docgen(arg) => run_docgen(arg).await, #[cfg(feature = "server")] diff --git a/crates/cli/src/ux.rs b/crates/cli/src/ux.rs index 22a5ea80f..96b7007c6 100644 --- a/crates/cli/src/ux.rs +++ b/crates/cli/src/ux.rs @@ -125,7 +125,7 @@ impl fmt::Display for DiffString { } } -fn format_diff(expected: &str, actual: &str) -> DiffString { +pub fn format_diff(expected: &str, actual: &str) -> DiffString { let mut output = String::new(); let diff = TextDiff::from_lines(expected, actual); diff --git a/crates/cli_bin/fixtures/unformatted_patterns/.grit/grit.yaml b/crates/cli_bin/fixtures/unformatted_patterns/.grit/grit.yaml new file mode 100644 index 000000000..58db20033 --- /dev/null +++ b/crates/cli_bin/fixtures/unformatted_patterns/.grit/grit.yaml @@ -0,0 +1,21 @@ +version: 0.0.1 +patterns: + - name: aspect_ratio_yaml + description: Yaml version of aspect_ratio.md + body: | + language css + + `a { $props }` where { + $props <: contains `aspect-ratio: $x` + } + + - file: ./others/test_move_import.md + + - name: some_json_pattern + body: | + language json + + `account: $val` where { + $val <: contains `password: $password`, + $password => raw`hidden` + } diff --git a/crates/cli_bin/fixtures/unformatted_patterns/.grit/others/test_move_import.md b/crates/cli_bin/fixtures/unformatted_patterns/.grit/others/test_move_import.md new file mode 100644 index 000000000..91c95f650 --- /dev/null +++ b/crates/cli_bin/fixtures/unformatted_patterns/.grit/others/test_move_import.md @@ -0,0 +1,11 @@ +--- +private: true +tags: [private] +--- +```grit +language js + +`sanitizeFilePath` as $s where { + move_import(`sanitizeFilePath`, `'@getgrit/universal'`) +} +``` diff --git a/crates/cli_bin/fixtures/unformatted_patterns/.grit/patterns/aspect_ratio.md b/crates/cli_bin/fixtures/unformatted_patterns/.grit/patterns/aspect_ratio.md new file mode 100644 index 000000000..99d39f5b9 --- /dev/null +++ b/crates/cli_bin/fixtures/unformatted_patterns/.grit/patterns/aspect_ratio.md @@ -0,0 +1,57 @@ +--- +title: Aspect ratio +--- + +```grit +language css + +`a { $props }` where { + $props <: contains `aspect-ratio: $x` +} +``` + +## Matches the right selector and declaration block + +```css +a { + width: calc(100% - 80px); + aspect-ratio: 1/2; + font-size: calc(10px + (56 - 10) * ((100vw - 320px) / (1920 - 320))); +} + +#some-id { + some-property: 5px; +} + +a.b ~ c.d { +} +.e.f + .g.h { +} + +@font-face { + font-family: 'Open Sans'; + src: url('/a') format('woff2'), url('/b/c') format('woff'); +} +``` + +```css +a { + width: calc(100% - 80px); + aspect-ratio: 1/2; + font-size: calc(10px + (56 - 10) * ((100vw - 320px) / (1920 - 320))); +} + +#some-id { + some-property: 5px; +} + +a.b ~ c.d { +} +.e.f + .g.h { +} + +@font-face { + font-family: 'Open Sans'; + src: url('/a') format('woff2'), url('/b/c') format('woff'); +} +``` diff --git a/crates/cli_bin/fixtures/unformatted_patterns/.grit/patterns/dependency.grit b/crates/cli_bin/fixtures/unformatted_patterns/.grit/patterns/dependency.grit new file mode 100644 index 000000000..d9f6f1f06 --- /dev/null +++ b/crates/cli_bin/fixtures/unformatted_patterns/.grit/patterns/dependency.grit @@ -0,0 +1,23 @@ +language json + +pattern upgrade_dependency($target_dep, $target_version, $dependency_key) { + or { + `$key: $value` where { + $key <: `"$target_dep"`, + $value => `"$target_version"` + }, + pair($key, $value) where { + $key <: `"$dependency_key"`, + $value <: object($properties) where { + $properties <: not contains pair(key=$dep_key) where { + $dep_key <: contains `$target_dep` + }, + $properties => `"$target_dep": "$target_version",\n$properties` + } + } + } +} + +pattern console_method_to_info($method) { + `console.$method($message)` => `console.info($message)` +} diff --git a/crates/cli_bin/fixtures/unformatted_patterns/.grit/patterns/not_parsable.grit b/crates/cli_bin/fixtures/unformatted_patterns/.grit/patterns/not_parsable.grit new file mode 100644 index 000000000..44f204705 --- /dev/null +++ b/crates/cli_bin/fixtures/unformatted_patterns/.grit/patterns/not_parsable.grit @@ -0,0 +1,10 @@ +language json + +pattern some_pattern($target_dep, $target_version) { + or { + `$key: $value` where { + $key <: `"$target_dep"`, + no_meta_variable => `"$target_version"` + }, + } +} diff --git a/crates/cli_bin/tests/format.rs b/crates/cli_bin/tests/format.rs new file mode 100644 index 000000000..67081ad4a --- /dev/null +++ b/crates/cli_bin/tests/format.rs @@ -0,0 +1,42 @@ +use crate::common::get_test_cmd; +use anyhow::Result; +use common::get_fixture; +use insta::assert_yaml_snapshot; + +mod common; + +#[test] +fn format_patterns_with_rewrite() -> Result<()> { + let (_temp_dir, grit_dir) = get_fixture("unformatted_patterns", true)?; + + let mut cmd = get_test_cmd()?; + cmd.arg("format") + .arg("--write") + .current_dir(grit_dir.clone()); + let output = cmd.output()?; + + println!("stderr: {}", String::from_utf8(output.stderr.clone())?); + println!("stdout: {}", String::from_utf8(output.stdout.clone())?); + + assert!(output.stdout.is_empty()); + assert!( + output.status.success(), + "Command didn't finish successfully" + ); + assert_eq!(output.stderr, b"couldn't format '.grit/patterns/not_parsable.grit': biome couldn't parse: Expected a predicate here.\n"); + + let yaml_file_content = std::fs::read_to_string(grit_dir.join(".grit/grit.yaml"))?; + let test_move_import_file_content = + std::fs::read_to_string(grit_dir.join(".grit/others/test_move_import.md"))?; + let aspect_ratio_md_file_content = + std::fs::read_to_string(grit_dir.join(".grit/patterns/aspect_ratio.md"))?; + let dependency_grit_file_content = + std::fs::read_to_string(grit_dir.join(".grit/patterns/dependency.grit"))?; + assert_yaml_snapshot!(vec![ + yaml_file_content, + test_move_import_file_content, + aspect_ratio_md_file_content, + dependency_grit_file_content + ]); + Ok(()) +} diff --git a/crates/cli_bin/tests/snapshots/format__format_patterns_with_rewrite.snap b/crates/cli_bin/tests/snapshots/format__format_patterns_with_rewrite.snap new file mode 100644 index 000000000..e0f02c9d0 --- /dev/null +++ b/crates/cli_bin/tests/snapshots/format__format_patterns_with_rewrite.snap @@ -0,0 +1,9 @@ +--- +source: crates/cli_bin/tests/format.rs +expression: "vec![yaml_file_content, test_move_import_file_content,\naspect_ratio_md_file_content, dependency_grit_file_content]" +snapshot_kind: text +--- +- "version: 0.0.1\npatterns:\n - name: aspect_ratio_yaml\n description: Yaml version of aspect_ratio.md\n body: |\n language css;\n `a { $props }` where { $props <: contains `aspect-ratio: $x` }\n\n - file: ./others/test_move_import.md\n\n - name: some_json_pattern\n body: |\n language json;\n `account: $val` where {\n \t$val <: contains `password: $password`,\n \t$password => raw`hidden`\n }" +- "---\nprivate: true\ntags: [private]\n---\n```grit\nlanguage js;\n`sanitizeFilePath` as $s where {\n\tmove_import(`sanitizeFilePath`, `'@getgrit/universal'`)\n}\n```\n" +- "---\ntitle: Aspect ratio\n---\n\n```grit\nlanguage css;\n`a { $props }` where { $props <: contains `aspect-ratio: $x` }\n```\n\n## Matches the right selector and declaration block\n\n```css\na {\n width: calc(100% - 80px);\n aspect-ratio: 1/2;\n font-size: calc(10px + (56 - 10) * ((100vw - 320px) / (1920 - 320)));\n}\n\n#some-id {\n some-property: 5px;\n}\n\na.b ~ c.d {\n}\n.e.f + .g.h {\n}\n\n@font-face {\n font-family: 'Open Sans';\n src: url('/a') format('woff2'), url('/b/c') format('woff');\n}\n```\n\n```css\na {\n width: calc(100% - 80px);\n aspect-ratio: 1/2;\n font-size: calc(10px + (56 - 10) * ((100vw - 320px) / (1920 - 320)));\n}\n\n#some-id {\n some-property: 5px;\n}\n\na.b ~ c.d {\n}\n.e.f + .g.h {\n}\n\n@font-face {\n font-family: 'Open Sans';\n src: url('/a') format('woff2'), url('/b/c') format('woff');\n}\n```\n" +- "language json;\npattern upgrade_dependency($target_dep, $target_version, $dependency_key) {\n\tor {\n\t\t`$key: $value` where {\n\t\t\t$key <: `\"$target_dep\"`,\n\t\t\t$value => `\"$target_version\"`\n\t\t},\n\t\tpair($key, $value) where {\n\t\t\t$key <: `\"$dependency_key\"`,\n\t\t\t$value <: object($properties) where {\n\t\t\t\t$properties <: notcontains pair(key = $dep_key) where {\n\t\t\t\t\t$dep_key <: contains `$target_dep`\n\t\t\t\t},\n\t\t\t\t$properties => `\"$target_dep\": \"$target_version\",\\n$properties`\n\t\t\t}\n\t\t}\n\t}}\n\npattern console_method_to_info($method) {\n\t`console.$method($message)` => `console.info($message)`}\n" diff --git a/crates/gritmodule/src/dot_grit.rs b/crates/gritmodule/src/dot_grit.rs index 13673647d..e48c6281d 100644 --- a/crates/gritmodule/src/dot_grit.rs +++ b/crates/gritmodule/src/dot_grit.rs @@ -1,10 +1,10 @@ use crate::{ config::{ DefinitionKind, GritDefinitionConfig, GritPatternMetadata, ModuleGritPattern, - PatternVisibility, + PatternVisibility, RawGritDefinition, }, fetcher::ModuleRepo, - parser::extract_relative_file_path, + parser::{extract_relative_file_path, PatternFileExt}, }; use anyhow::{anyhow, bail, Result}; use grit_util::{Ast, AstNode, Position, Range}; @@ -87,6 +87,10 @@ pub fn get_patterns_from_grit( }, ..Default::default() }, + raw: Some(RawGritDefinition { + format: PatternFileExt::Grit, + content: file.content.clone(), + }), ..Default::default() }, visibility: if is_public { diff --git a/crates/gritmodule/src/yaml.rs b/crates/gritmodule/src/yaml.rs index cfc6f6f37..593708c8d 100644 --- a/crates/gritmodule/src/yaml.rs +++ b/crates/gritmodule/src/yaml.rs @@ -11,7 +11,8 @@ use tokio::fs; use crate::{ config::{ pattern_config_to_model, DefinitionKind, GritConfig, GritDefinitionConfig, - ModuleGritPattern, SerializedGritConfig, CONFIG_FILE_NAMES, REPO_CONFIG_DIR_NAME, + ModuleGritPattern, RawGritDefinition, SerializedGritConfig, CONFIG_FILE_NAMES, + REPO_CONFIG_DIR_NAME, }, fetcher::ModuleRepo, parser::{extract_relative_file_path, get_patterns_from_file, PatternFileExt}, @@ -38,10 +39,13 @@ pub fn get_grit_config(source: &str, source_path: &str) -> Result { pattern_files.push(file); } crate::config::GritPatternConfig::Pattern(p) => { - patterns.push(GritDefinitionConfig::from_serialized( - p, - source_path.to_string(), - )); + let mut definitation = + GritDefinitionConfig::from_serialized(p, source_path.to_string()); + definitation.raw = Some(RawGritDefinition { + format: PatternFileExt::Yaml, + content: source.to_owned(), + }); + patterns.push(definitation); } } }