diff --git a/Cargo.lock b/Cargo.lock index 5e8a860..2db7326 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -60,6 +60,12 @@ dependencies = [ "memchr", ] +[[package]] +name = "allocator-api2" +version = "0.2.16" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0942ffc6dcaadf03badf6e6a2d0228460359d5e34b57ccdc720b7382dfbd5ec5" + [[package]] name = "android-tzdata" version = "0.1.1" @@ -86,9 +92,9 @@ dependencies = [ [[package]] name = "anstream" -version = "0.5.0" +version = "0.6.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b1f58811cfac344940f1a400b6e6231ce35171f614f26439e80f8c1465c5cc0c" +checksum = "2ab91ebe16eb252986481c5b62f6098f3b698a45e34b5b98200cf20dd2484a44" dependencies = [ "anstyle", "anstyle-parse", @@ -124,9 +130,9 @@ dependencies = [ [[package]] name = "anstyle-wincon" -version = "2.1.0" +version = "3.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "58f54d10c6dfa51283a066ceab3ec1ab78d13fae00aa49243a45e4571fb79dfd" +checksum = "f0699d10d2f4d628a98ee7b57b289abbc98ff3bad977cb3152709d4bf2330628" dependencies = [ "anstyle", "windows-sys 0.48.0", @@ -151,7 +157,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "88903cb14723e4d4003335bb7f8a14f27691649105346a0f0957466c096adfe6" dependencies = [ "anstyle", - "bstr 1.6.0", + "bstr", "doc-comment", "predicates", "predicates-core", @@ -184,18 +190,18 @@ dependencies = [ "proc-macro2", "quote", "swc_macros_common", - "syn 2.0.29", + "syn 2.0.38", ] [[package]] name = "async-trait" -version = "0.1.72" +version = "0.1.74" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cc6dde6e4ed435a4c1ee4e73592f5ba9da2151af10076cc04858746af9352d09" +checksum = "a66537f1bb974b254c98ed142ff995236e81b9d0fe4db0575f46612cb15eb0f9" dependencies = [ "proc-macro2", "quote", - "syn 2.0.29", + "syn 2.0.38", ] [[package]] @@ -305,15 +311,6 @@ dependencies = [ "generic-array", ] -[[package]] -name = "brownstone" -version = "3.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c5839ee4f953e811bfdcf223f509cb2c6a3e1447959b0bff459405575bc17f22" -dependencies = [ - "arrayvec", -] - [[package]] name = "browserslist-rs" version = "0.12.4" @@ -325,7 +322,7 @@ dependencies = [ "chrono", "either", "getrandom", - "itertools", + "itertools 0.10.5", "js-sys", "nom", "once_cell", @@ -339,17 +336,6 @@ dependencies = [ "wasm-bindgen", ] -[[package]] -name = "bstr" -version = "0.2.17" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ba3569f383e8f1598449f1a423e72e99569137b47740b1da11ef19af3d5c3223" -dependencies = [ - "lazy_static", - "memchr", - "regex-automata 0.1.10", -] - [[package]] name = "bstr" version = "1.6.0" @@ -395,12 +381,6 @@ version = "1.13.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "17febce684fd15d89027105661fec94afb475cb995fbc59d2865198446ba2eea" -[[package]] -name = "byteorder" -version = "1.4.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "14c189c53d098945499cdfa7ecc63567cf3886b3332b312a5b4585d8d3a6a610" - [[package]] name = "bytes" version = "1.4.0" @@ -409,28 +389,25 @@ checksum = "89b2fd2a0dcf38d7971e2194b6b6eebab45ae01067456a7fd93d5547a61b70be" [[package]] name = "cached" -version = "0.44.0" +version = "0.46.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b195e4fbc4b6862bbd065b991a34750399c119797efff72492f28a5864de8700" +checksum = "8cead8ece0da6b744b2ad8ef9c58a4cdc7ef2921e60a6ddfb9eaaa86839b5fc5" dependencies = [ - "async-trait", + "ahash 0.8.3", "cached_proc_macro", "cached_proc_macro_types", - "futures", - "hashbrown 0.13.2", + "hashbrown 0.14.2", "instant", "once_cell", "thiserror", - "tokio", ] [[package]] name = "cached_proc_macro" -version = "0.17.0" +version = "0.18.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b48814962d2fd604c50d2b9433c2a41a0ab567779ee2c02f7fba6eca1221f082" +checksum = "7da8245dd5f576a41c3b76247b54c15b0e43139ceeb4f732033e15be7c005176" dependencies = [ - "cached_proc_macro_types", "darling 0.14.4", "proc-macro2", "quote", @@ -469,12 +446,21 @@ checksum = "eee4243f1f26fc7a42710e7439c149e2b10b05472f88090acce52632f231a73a" dependencies = [ "camino", "cargo-platform", - "semver 1.0.18", + "semver 1.0.20", "serde", "serde_json", "thiserror", ] +[[package]] +name = "castaway" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8a17ed5635fc8536268e5d4de1e22e81ac34419e5f052d4d51f4e01dcc263fcc" +dependencies = [ + "rustversion", +] + [[package]] name = "cc" version = "1.0.79" @@ -489,39 +475,23 @@ checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd" [[package]] name = "chrono" -version = "0.4.26" +version = "0.4.31" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ec837a71355b28f6556dbd569b37b3f363091c0bd4b2e735674521b4c5fd9bc5" +checksum = "7f2c685bad3eb3d45a01354cedb7d5faa66194d1d58ba6e267a8de788f79db38" dependencies = [ "android-tzdata", "iana-time-zone", "js-sys", "num-traits", - "time 0.1.45", "wasm-bindgen", - "winapi", -] - -[[package]] -name = "clap" -version = "3.2.25" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4ea181bf566f71cb9a5d17a59e1871af638180a18fb0035c92ae62b705207123" -dependencies = [ - "atty", - "bitflags 1.3.2", - "clap_lex 0.2.4", - "indexmap 1.9.3", - "strsim", - "termcolor", - "textwrap 0.16.0", + "windows-targets 0.48.1", ] [[package]] name = "clap" -version = "4.4.2" +version = "4.4.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6a13b88d2c62ff462f88e4a121f17a82c1af05693a2f192b5c38d14de73c19f6" +checksum = "d04704f56c2cde07f43e8e2c154b43f216dc5c92fc98ada720177362f953b956" dependencies = [ "clap_builder", "clap_derive", @@ -529,15 +499,15 @@ dependencies = [ [[package]] name = "clap_builder" -version = "4.4.2" +version = "4.4.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2bb9faaa7c2ef94b2743a21f5a29e6f0010dff4caa69ac8e9d6cf8b6fa74da08" +checksum = "0e231faeaca65ebd1ea3c737966bf858971cd38c3849107aa3ea7de90a804e45" dependencies = [ "anstream", "anstyle", - "clap_lex 0.5.0", + "clap_lex", "strsim", - "terminal_size 0.2.6", + "terminal_size 0.3.0", ] [[package]] @@ -549,16 +519,7 @@ dependencies = [ "heck", "proc-macro2", "quote", - "syn 2.0.29", -] - -[[package]] -name = "clap_lex" -version = "0.2.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2850f2f5a82cbf437dd5af4d49848fbdfc27c157c3d010345776f952765261c5" -dependencies = [ - "os_str_bytes", + "syn 2.0.38", ] [[package]] @@ -573,18 +534,25 @@ version = "0.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "aaa6b4b263a5d737e9bf6b7c09b72c41a5480aec4d7219af827f6564e950b6a5" -[[package]] -name = "color_quant" -version = "1.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3d7b894f5411737b7867f4827955924d7c254fc9f4d91a6aad6b097804b1018b" - [[package]] name = "colorchoice" version = "1.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "acbf1af155f9b9ef647e42cdc158db4b64a1b61f743629225fde6f3e0be2a7c7" +[[package]] +name = "compact_str" +version = "0.7.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f86b9c4c00838774a6d902ef931eff7470720c51d90c2e32cfe15dc304737b3f" +dependencies = [ + "castaway", + "cfg-if", + "itoa", + "ryu", + "static_assertions", +] + [[package]] name = "console" version = "0.15.7" @@ -627,6 +595,16 @@ dependencies = [ "unicode-segmentation", ] +[[package]] +name = "core-foundation" +version = "0.9.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "194a7a9e6de53fa55116934067c844d9d749312f75c6f6d0980e8c252f8c2146" +dependencies = [ + "core-foundation-sys", + "libc", +] + [[package]] name = "core-foundation-sys" version = "0.8.4" @@ -749,7 +727,7 @@ dependencies = [ "proc-macro2", "quote", "strsim", - "syn 2.0.29", + "syn 2.0.38", ] [[package]] @@ -771,7 +749,7 @@ checksum = "836a9bbc7ad63342d6d6e7b815ccab164bc77a2d95d84bc3117a8c0d5c98e2d5" dependencies = [ "darling_core 0.20.3", "quote", - "syn 2.0.29", + "syn 2.0.38", ] [[package]] @@ -781,7 +759,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6943ae99c34386c84a470c499d3414f66502a41340aa895406e0d2e4a207b91d" dependencies = [ "cfg-if", - "hashbrown 0.14.0", + "hashbrown 0.14.2", "lock_api", "once_cell", "parking_lot_core", @@ -795,12 +773,13 @@ checksum = "c2e66c9d817f1720209181c316d28635c050fa304f9c79e47a520882661b7308" [[package]] name = "dialoguer" -version = "0.10.4" +version = "0.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "59c6f2989294b9a498d3ad5491a79c6deb604617378e1cdc4bfc1c1361fe2f87" +checksum = "658bce805d770f407bc62102fca7c2c64ceef2fbcb2b8bd19d2765ce093980de" dependencies = [ "console", "shell-words", + "thiserror", ] [[package]] @@ -896,7 +875,18 @@ checksum = "eecf8589574ce9b895052fa12d69af7a233f99e6107f5cb8dd1044f2a17bfdcb" dependencies = [ "proc-macro2", "quote", - "syn 2.0.29", + "syn 2.0.38", +] + +[[package]] +name = "env_logger" +version = "0.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "85cdab6a89accf66733ad5a1693a4dcced6aeff64602b634530dd73c1f3ee9f0" +dependencies = [ + "is-terminal", + "log", + "termcolor", ] [[package]] @@ -930,7 +920,7 @@ dependencies = [ name = "espresso_cli" version = "0.1.0" dependencies = [ - "clap 4.4.2", + "clap", "console", "dialoguer", "espresso_common", @@ -955,12 +945,12 @@ dependencies = [ name = "espresso_common" version = "0.1.0" dependencies = [ - "clap 4.4.2", + "clap", "miette 5.10.0", "once_cell", "regex", "schematic", - "semver 1.0.18", + "semver 1.0.20", "serde", "spdx", "thiserror", @@ -1017,9 +1007,11 @@ dependencies = [ name = "espresso_package" version = "0.1.0" dependencies = [ + "espresso_common", "espresso_manifest", "miette 5.10.0", "relative-path", + "schematic", "starbase_sandbox", "starbase_styles", "starbase_utils", @@ -1077,15 +1069,6 @@ version = "2.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6999dc1837253364c2ebb0704ba97994bd874e8f195d665c50b7548f6ea92764" -[[package]] -name = "fdeflate" -version = "0.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d329bdeac514ee06249dabc27877490f17f5d371ec693360768b838e19f3ae10" -dependencies = [ - "simd-adler32", -] - [[package]] name = "filetime" version = "0.2.21" @@ -1106,9 +1089,9 @@ checksum = "0ce7134b9999ecaf8bcd65542e436736ef32ddca1b3e06094cb6ec5755203b80" [[package]] name = "flate2" -version = "1.0.27" +version = "1.0.28" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c6c98ee8095e9d1dcbf2fcc6d95acccb90d1c81db1e44725c6a984b1dbdfb010" +checksum = "46303f565772937ffe1d394a4fac6f411c6013172fadde9dcdb1e147a086940e" dependencies = [ "crc32fast", "miniz_oxide", @@ -1147,16 +1130,16 @@ dependencies = [ "pmutil", "proc-macro2", "swc_macros_common", - "syn 2.0.29", + "syn 2.0.38", ] [[package]] name = "fs4" -version = "0.6.6" +version = "0.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2eeb4ed9e12f43b7fa0baae3f9cdda28352770132ef2e09a23760c29cae8bd47" +checksum = "29f9df8a11882c4e3335eb2d18a0137c505d9ca927470b0cac9c6f0ae07d28f7" dependencies = [ - "rustix 0.38.4", + "rustix", "windows-sys 0.48.0", ] @@ -1222,7 +1205,7 @@ checksum = "89ca545a94061b6365f2c7355b4b32bd20df3ff95f02da9329b34ccc3bd6ee72" dependencies = [ "proc-macro2", "quote", - "syn 2.0.29", + "syn 2.0.38", ] [[package]] @@ -1257,26 +1240,28 @@ dependencies = [ [[package]] name = "garde" -version = "0.14.1" +version = "0.16.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "efbc4e06c5b4a8fef3ad41939c6116ea06a0d93f647c6430154d924bf021c374" +checksum = "94320acdd9159591d0f8079eb347fb52c2ffbe206b5214f6f4d482f2866e4d91" dependencies = [ + "compact_str", "garde_derive", "once_cell", "regex", + "smallvec", "url", ] [[package]] name = "garde_derive" -version = "0.14.0" +version = "0.16.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5d9df466e06c7de0744e5f14048ba5331d7a4d31e98542046d869e953fc3420f" +checksum = "c3c617dc2454b80bcf7232a47efccdbd7aee2acb2a92a332b3ea7398dcc7f31d" dependencies = [ "proc-macro2", "quote", "regex", - "syn 2.0.29", + "syn 2.0.38", ] [[package]] @@ -1298,7 +1283,7 @@ dependencies = [ "cfg-if", "js-sys", "libc", - "wasi 0.11.0+wasi-snapshot-preview1", + "wasi", "wasm-bindgen", ] @@ -1333,7 +1318,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1391ab1f92ffcc08911957149833e682aa3fe252b9f45f966d2ef972274c97df" dependencies = [ "aho-corasick", - "bstr 1.6.0", + "bstr", "fnv", "log", "regex", @@ -1389,9 +1374,13 @@ dependencies = [ [[package]] name = "hashbrown" -version = "0.14.0" +version = "0.14.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2c6201b9ff9fd90a5a3bac2e56a830d0caa509576f0e503818ee82c181b3437a" +checksum = "f93e7192158dbcda357bdec5fb5788eebf8bbac027f3f33e719d29135ae84156" +dependencies = [ + "ahash 0.8.3", + "allocator-api2", +] [[package]] name = "heck" @@ -1554,26 +1543,6 @@ dependencies = [ "winapi-util", ] -[[package]] -name = "image" -version = "0.24.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "527909aa81e20ac3a44803521443a765550f09b5130c2c2fa1ea59c2f8f50a3a" -dependencies = [ - "bytemuck", - "byteorder", - "color_quant", - "num-rational", - "num-traits", - "png", -] - -[[package]] -name = "indent_write" -version = "2.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0cfe9645a18782869361d9c8732246be7b410ad4e919d3609ebabdac00ba12c3" - [[package]] name = "indexmap" version = "1.9.3" @@ -1582,25 +1551,25 @@ checksum = "bd070e393353796e801d209ad339e89596eb4c8d430d18ede6a1cced8fafbd99" dependencies = [ "autocfg", "hashbrown 0.12.3", - "rayon", "serde", ] [[package]] name = "indexmap" -version = "2.0.0" +version = "2.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d5477fe2230a79769d8dc68e0eabf5437907c0457a5614a9e8dddb67f65eb65d" +checksum = "8adf3ddd720272c6ea8bf59463c04e0f93d0bbf7c5439b691bca2987e0270897" dependencies = [ "equivalent", - "hashbrown 0.14.0", + "hashbrown 0.14.2", + "rayon", ] [[package]] name = "insta" -version = "1.31.0" +version = "1.34.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a0770b0a3d4c70567f0d58331f3088b0e4c4f56c9b8d764efe654b4a5d46de3a" +checksum = "5d64600be34b2fcfc267740a243fa7744441bb4947a619ac4e5bb6507f35fbfc" dependencies = [ "console", "lazy_static", @@ -1618,17 +1587,6 @@ dependencies = [ "cfg-if", ] -[[package]] -name = "io-lifetimes" -version = "1.0.11" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "eae7b9aee968036d54dce06cebaefd919e4472e753296daccd6d344e3e2df0c2" -dependencies = [ - "hermit-abi 0.3.2", - "libc", - "windows-sys 0.48.0", -] - [[package]] name = "ipnet" version = "2.8.0" @@ -1645,7 +1603,7 @@ dependencies = [ "pmutil", "proc-macro2", "quote", - "syn 2.0.29", + "syn 2.0.38", ] [[package]] @@ -1655,7 +1613,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "cb0889898416213fab133e1d33a0e5858a48177452750691bde3666d0fdbaf8b" dependencies = [ "hermit-abi 0.3.2", - "rustix 0.38.4", + "rustix", "windows-sys 0.48.0", ] @@ -1675,16 +1633,19 @@ dependencies = [ ] [[package]] -name = "itoa" -version = "1.0.9" +name = "itertools" +version = "0.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "af150ab688ff2122fcef229be89cb50dd66af9e01a4ff320cc137eecc9bacc38" +checksum = "b1c173a5686ce8bfa551b3563d0c2170bf24ca44da99c7ca4bfdab5418c3fe57" +dependencies = [ + "either", +] [[package]] -name = "joinery" -version = "2.1.0" +name = "itoa" +version = "1.0.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "72167d68f5fce3b8655487b8038691a3c9984ee769590f93f2a631f4ad64e4f5" +checksum = "af150ab688ff2122fcef229be89cb50dd66af9e01a4ff320cc137eecc9bacc38" [[package]] name = "js-sys" @@ -1724,27 +1685,27 @@ checksum = "b4668fb0ea861c1df094127ac5f1da3409a82116a4ba74fca2e58ef927159bb3" [[package]] name = "libdeflate-sys" -version = "0.11.0" +version = "1.19.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cb6784b6b84b67d71b4307963d456a9c7c29f9b47c658f533e598de369e34277" +checksum = "67921a7f85100c1559efc3d1c7c472091b7da05f304b4bbd5356f075e97f1cc2" dependencies = [ "cc", ] [[package]] name = "libdeflater" -version = "0.11.0" +version = "1.19.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d8e285aa6a046fd338b2592c16bee148b2b00789138ed6b7bb56bb13d585050d" +checksum = "3a31b22f662350ec294b13859f935aea772ba7b2bc8776269f4a5627308eab7d" dependencies = [ "libdeflate-sys", ] [[package]] name = "libmimalloc-sys" -version = "0.1.34" +version = "0.1.35" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "25d058a81af0d1c22d7a1c948576bee6d673f7af3c0f35564abd6c81122f513d" +checksum = "3979b5c37ece694f1f5e51e7ecc871fdb0f517ed04ee45f88d15d6d553cb9664" dependencies = [ "cc", "libc", @@ -1756,12 +1717,6 @@ version = "0.5.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0717cef1bc8b636c6e1c1bbdefc09e6322da8a9321966e8928ef80d20f7f770f" -[[package]] -name = "linux-raw-sys" -version = "0.3.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ef53942eb7bf7ff43a617b3e2c1c4a5ecf5944a7c1bc12d7ee39bbb15e5c1519" - [[package]] name = "linux-raw-sys" version = "0.4.3" @@ -1780,9 +1735,9 @@ dependencies = [ [[package]] name = "log" -version = "0.4.19" +version = "0.4.20" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b06a4cde4c0f271a446782e3eff8de789548ce57dbc8eca9292c27f4a42004b4" +checksum = "b5e6163cb8c49088c2c36f57875e58ccd8c87c7427f7fbd50ea6710b2f3f2e8f" [[package]] name = "lru" @@ -1843,7 +1798,7 @@ dependencies = [ "supports-hyperlinks 1.2.0", "supports-unicode 1.0.2", "terminal_size 0.1.17", - "textwrap 0.15.2", + "textwrap", "thiserror", "unicode-width", ] @@ -1860,11 +1815,11 @@ dependencies = [ "miette-derive 5.10.0", "once_cell", "owo-colors", - "supports-color 2.0.0", + "supports-color 2.1.0", "supports-hyperlinks 2.1.0", "supports-unicode 2.0.0", "terminal_size 0.1.17", - "textwrap 0.15.2", + "textwrap", "thiserror", "unicode-width", ] @@ -1888,14 +1843,14 @@ checksum = "49e7bc1560b95a3c4a25d03de42fe76ca718ab92d1a22a55b9b4cf67b3ae635c" dependencies = [ "proc-macro2", "quote", - "syn 2.0.29", + "syn 2.0.38", ] [[package]] name = "mimalloc" -version = "0.1.38" +version = "0.1.39" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "972e5f23f6716f62665760b0f4cbf592576a80c7b879ba9beaafc0e558894127" +checksum = "fa01922b5ea280a911e323e4d2fd24b7fe5cc4042e0d2cda3c40775cdc4bdc9c" dependencies = [ "libmimalloc-sys", ] @@ -1919,7 +1874,6 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e7810e0be55b428ada41041c41f32c9f1a42817901b4ccf45fa3d4b6561e74c7" dependencies = [ "adler", - "simd-adler32", ] [[package]] @@ -1929,7 +1883,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "927a765cd3fc26206e66b296465fa9d3e5ab003e651c1b3c060e7956d96b19d2" dependencies = [ "libc", - "wasi 0.11.0+wasi-snapshot-preview1", + "wasi", "windows-sys 0.48.0", ] @@ -1949,19 +1903,6 @@ dependencies = [ "minimal-lexical", ] -[[package]] -name = "nom-supreme" -version = "0.8.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2bd3ae6c901f1959588759ff51c95d24b491ecb9ff91aa9c2ef4acc5b1dcab27" -dependencies = [ - "brownstone", - "indent_write", - "joinery", - "memchr", - "nom", -] - [[package]] name = "normalize-line-endings" version = "0.3.0" @@ -2009,17 +1950,6 @@ dependencies = [ "num-traits", ] -[[package]] -name = "num-rational" -version = "0.4.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0638a1c9d0a3c0914158145bc76cff373a75a627e6ecbfb71cbe6f453a5a19b0" -dependencies = [ - "autocfg", - "num-integer", - "num-traits", -] - [[package]] name = "num-traits" version = "0.2.15" @@ -2060,12 +1990,6 @@ version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "04744f49eae99ab78e0d5c0b603ab218f515ea8cfe5a456d7629ad883a3b6e7d" -[[package]] -name = "os_str_bytes" -version = "6.5.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4d5d9eb14b174ee9aa2ef96dc2b94637a2d4b6e7cb873c7e171f0c20c6cf3eac" - [[package]] name = "overload" version = "0.1.1" @@ -2080,25 +2004,23 @@ checksum = "c1b04fb49957986fdce4d6ee7a65027d55d4b6d2265e5848bbb507b58ccfdb6f" [[package]] name = "oxipng" -version = "8.0.0" +version = "9.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "630638e107fb436644c300e781d3f17e1b04656138ba0d40564be4be3b06db32" +checksum = "28e5c341ef78a228e47a551bfd15ff885d8c501af49f953358763a538c01f14d" dependencies = [ "bitvec", - "clap 3.2.25", + "clap", "crossbeam-channel", + "env_logger", "filetime", - "image", - "indexmap 1.9.3", - "itertools", + "glob", + "indexmap 2.0.2", "libdeflater", "log", "rayon", "rgb", "rustc-hash", "rustc_version 0.4.0", - "stderrlog", - "wild", "zopfli", ] @@ -2150,7 +2072,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e1d3afd2628e69da2be385eb6f2fd57c8ac7977ceeff6dc166ff1657b0e386a9" dependencies = [ "fixedbitset", - "indexmap 2.0.0", + "indexmap 2.0.2", ] [[package]] @@ -2223,20 +2145,7 @@ checksum = "52a40bc70c2c58040d2d8b167ba9a5ff59fc9dab7ad44771cfde3dcfde7a09c6" dependencies = [ "proc-macro2", "quote", - "syn 2.0.29", -] - -[[package]] -name = "png" -version = "0.17.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "59871cc5b6cce7eaccca5a802b4173377a1c2ba90654246789a8fa2334426d11" -dependencies = [ - "bitflags 1.3.2", - "crc32fast", - "fdeflate", - "flate2", - "miniz_oxide", + "syn 2.0.38", ] [[package]] @@ -2262,14 +2171,14 @@ checksum = "925383efa346730478fb4838dbe9137d2a47675ad789c546d150a6e1dd4ab31c" [[package]] name = "predicates" -version = "3.0.3" +version = "3.0.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "09963355b9f467184c04017ced4a2ba2d75cbcb4e7462690d388233253d4b1a9" +checksum = "6dfc28575c2e3f19cb3c73b93af36460ae898d426eba6fc15b9bd2a5220758a0" dependencies = [ "anstyle", "difflib", "float-cmp", - "itertools", + "itertools 0.11.0", "normalize-line-endings", "predicates-core", "regex", @@ -2303,7 +2212,7 @@ dependencies = [ "dashmap", "from_variant", "once_cell", - "semver 1.0.18", + "semver 1.0.20", "serde", "st-map", "tracing", @@ -2351,9 +2260,9 @@ checksum = "dc375e1527247fe1a97d8b7156678dfe7c1af2fc075c9a4db3690ecd2a148068" [[package]] name = "proc-macro2" -version = "1.0.66" +version = "1.0.69" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "18fb31db3f9bddb2ea821cde30a9f70117e3f119938b5ee630b7403aa6e2ead9" +checksum = "134c189feb4956b20f6f547d2cf727d4c0fe06722b20a0eec87ed445a97f92da" dependencies = [ "unicode-ident", ] @@ -2491,14 +2400,14 @@ dependencies = [ [[package]] name = "regex" -version = "1.9.5" +version = "1.10.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "697061221ea1b4a94a624f67d0ae2bfe4e22b8a17b6a192afb11046542cc8c47" +checksum = "380b951a9c5e80ddfd6136919eef32310721aa4aacd4889a8d39124b026ab343" dependencies = [ "aho-corasick", "memchr", - "regex-automata 0.3.8", - "regex-syntax 0.7.5", + "regex-automata 0.4.3", + "regex-syntax 0.8.2", ] [[package]] @@ -2515,10 +2424,16 @@ name = "regex-automata" version = "0.3.8" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c2f401f4955220693b56f8ec66ee9c78abffd8d1c4f23dc41a23839eb88f0795" + +[[package]] +name = "regex-automata" +version = "0.4.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5f804c7828047e88b2d32e2d7fe5a105da8ee3264f01902f796c8e067dc2483f" dependencies = [ "aho-corasick", "memchr", - "regex-syntax 0.7.5", + "regex-syntax 0.8.2", ] [[package]] @@ -2529,9 +2444,9 @@ checksum = "f162c6dd7b008981e4d40210aca20b4bd0f9b60ca9271061b07f78537722f2e1" [[package]] name = "regex-syntax" -version = "0.7.5" +version = "0.8.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dbb5fb1acd8a1a18b3dd5be62d25485eb770e05afb408a9627d14d451bae12da" +checksum = "c08c74e62047bb2de4ff487b251e4a92e24f48745648451635cec7d591162d9f" [[package]] name = "relative-path" @@ -2553,9 +2468,9 @@ dependencies = [ [[package]] name = "reqwest" -version = "0.11.20" +version = "0.11.22" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3e9ad3fe7488d7e34558a2033d45a0c90b72d97b4f80705666fea71472e2e6a1" +checksum = "046cd98826c46c2ac8ddecae268eb5c2e58628688a5fc7a2643704a73faba95b" dependencies = [ "base64 0.21.2", "bytes", @@ -2579,6 +2494,7 @@ dependencies = [ "serde", "serde_json", "serde_urlencoded", + "system-configuration", "tokio", "tokio-rustls", "tower-service", @@ -2669,21 +2585,7 @@ version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "bfa0f585226d2e68097d4f95d113b15b83a82e819ab25717ec0590d9584ef366" dependencies = [ - "semver 1.0.18", -] - -[[package]] -name = "rustix" -version = "0.37.23" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4d69718bf81c6127a49dc64e44a742e8bb9213c0ff8869a22c308f84c1d4ab06" -dependencies = [ - "bitflags 1.3.2", - "errno", - "io-lifetimes", - "libc", - "linux-raw-sys 0.3.8", - "windows-sys 0.48.0", + "semver 1.0.20", ] [[package]] @@ -2695,7 +2597,7 @@ dependencies = [ "bitflags 2.3.3", "errno", "libc", - "linux-raw-sys 0.4.3", + "linux-raw-sys", "windows-sys 0.48.0", ] @@ -2759,14 +2661,13 @@ dependencies = [ [[package]] name = "schematic" -version = "0.11.5" +version = "0.12.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0ed0b8b6eab649fc54d92728ecdef092e94ba11dc0af4ffa807425e24d2c6a58" +checksum = "08761c5bd6339c7da88d9076553af0415df49a538111e2fcc92ebe808c5fee79" dependencies = [ "garde", - "indexmap 2.0.0", + "indexmap 2.0.2", "miette 5.10.0", - "reqwest", "schematic_macros", "schematic_types", "serde", @@ -2779,25 +2680,25 @@ dependencies = [ [[package]] name = "schematic_macros" -version = "0.11.5" +version = "0.12.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "75c29961ca3807b70767cdac2966bd49bb97922b4c0e620a674b1a0fee8cb9f0" +checksum = "e42afd7352a9915f20bdce3e1bfb63030dedefce9d371db7b7b54a4960618797" dependencies = [ "convert_case", "darling 0.20.3", "proc-macro2", "quote", - "syn 2.0.29", + "syn 2.0.38", ] [[package]] name = "schematic_types" -version = "0.4.5" +version = "0.4.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3c1123bff4039f2c45e13f390fbffd3f3763869de5f8d716816955e34bf87f62" +checksum = "62ef6073b16a3870336d3cbbc69ab15d3abb089afc0c53944866079aa2578f59" dependencies = [ "relative-path", - "semver 1.0.18", + "semver 1.0.20", "url", ] @@ -2840,9 +2741,9 @@ dependencies = [ [[package]] name = "semver" -version = "1.0.18" +version = "1.0.20" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b0293b4b29daaf487284529cc2f5675b8e57c61f70167ba415a463651fd6a918" +checksum = "836fa6a3e1e547f9a2c4040802ec865b5d85f4014efe00555d7090a3dcaa1090" dependencies = [ "serde", ] @@ -2855,9 +2756,9 @@ checksum = "388a1df253eca08550bef6c72392cfe7c30914bf41df5269b68cbd6ff8f570a3" [[package]] name = "serde" -version = "1.0.188" +version = "1.0.190" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cf9e0fcba69a370eed61bcf2b728575f726b50b55cba78064753d708ddc7549e" +checksum = "91d3c334ca1ee894a2c6f6ad698fe8c435b76d504b13d436f0685d648d6d96f7" dependencies = [ "serde_derive", ] @@ -2875,20 +2776,20 @@ dependencies = [ [[package]] name = "serde_derive" -version = "1.0.188" +version = "1.0.190" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4eca7ac642d82aa35b60049a6eccb4be6be75e599bd2e9adb5f875a737654af2" +checksum = "67c5609f394e5c2bd7fc51efda478004ea80ef42fee983d5c67a65e34f32c0e3" dependencies = [ "proc-macro2", "quote", - "syn 2.0.29", + "syn 2.0.38", ] [[package]] name = "serde_json" -version = "1.0.105" +version = "1.0.107" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "693151e1ac27563d6dbcec9dee9fbd5da8539b20fa14ad3752b2e6d363ace360" +checksum = "6b420ce6e3d8bd882e9b243c6eed35dbc9a6110c9769e74b584e0d68d1f20c65" dependencies = [ "itoa", "ryu", @@ -2907,9 +2808,9 @@ dependencies = [ [[package]] name = "serde_spanned" -version = "0.6.3" +version = "0.6.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "96426c9936fd7a0124915f9185ea1d20aa9445cc9821142f0a73bc9207a2e186" +checksum = "12022b835073e5b11e90a14f86838ceb1c8fb0325b72416845c487ac0fa95e80" dependencies = [ "serde", ] @@ -2963,9 +2864,9 @@ dependencies = [ [[package]] name = "simd-adler32" -version = "0.3.5" +version = "0.3.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "238abfbb77c1915110ad968465608b68e869e0772622c9656714e73e5a1a522f" +checksum = "d66dc143e6b11c1eddc06d5c423cfc97062865baf299914ab64caa38182078fe" [[package]] name = "simdutf8" @@ -3098,9 +2999,9 @@ dependencies = [ [[package]] name = "starbase" -version = "0.2.5" +version = "0.2.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "328b77f92b09f8788a894d063cefd3f7876f0bef776baec6946bdd2e75f24117" +checksum = "e6d78e172dba2a6c0e98c4b45fd8f245efe7b4c9c6e08981705f03bffdb00288" dependencies = [ "async-trait", "chrono", @@ -3114,15 +3015,15 @@ dependencies = [ "tokio", "tracing", "tracing-appender", - "tracing-log", + "tracing-log 0.2.0", "tracing-subscriber", ] [[package]] name = "starbase_archive" -version = "0.2.0" +version = "0.2.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "12bb40d408fb474e6d0092eba4fa977aa40c85885931c62219bb12d512e515e8" +checksum = "935856c30da2f62a73bcc57eecb5508bedd313287bc0e00e7e7c4b7a07fb5995" dependencies = [ "flate2", "miette 5.10.0", @@ -3137,9 +3038,9 @@ dependencies = [ [[package]] name = "starbase_events" -version = "0.2.0" +version = "0.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6913545608418518959d13ac9e05568d0d059f53ab3a24cf3283b7958ee5e732" +checksum = "455a107aab23fa941399ed716e42776ac8e200f5f92706b7ce59b08949aaf153" dependencies = [ "async-trait", "miette 5.10.0", @@ -3149,21 +3050,21 @@ dependencies = [ [[package]] name = "starbase_macros" -version = "0.2.4" +version = "0.2.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cd2a77f76022474557803637dbefe72e38fa196564e9a1daf3c695c06b1ee222" +checksum = "70da3be1ac772cd1cf5b71a725988b64829da92664b8fc362be765462c28638c" dependencies = [ "darling 0.20.3", "proc-macro2", "quote", - "syn 2.0.29", + "syn 2.0.38", ] [[package]] name = "starbase_sandbox" -version = "0.1.8" +version = "0.1.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e03cea8d1fd34d42fc47979aa670e28f276f395c70a6e446b6e68c8136dd2ae2" +checksum = "49d8cc34f93dd97db45ad1a7240bc03e01ee8478af003f8d945e8031585a4f11" dependencies = [ "assert_cmd", "assert_fs", @@ -3177,21 +3078,21 @@ dependencies = [ [[package]] name = "starbase_styles" -version = "0.1.13" +version = "0.1.16" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bad293ee0bf20cc69aced802167871210db53994bb6dd4206d9cf48dd7517cd2" +checksum = "d5d5d3e494c96659752fd79227acff36f375d6f113cb5460acdfdfe9a5b95a0d" dependencies = [ "dirs", "miette 5.10.0", "owo-colors", - "supports-color 2.0.0", + "supports-color 2.1.0", ] [[package]] name = "starbase_utils" -version = "0.2.21" +version = "0.3.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "09593b70b1d477cd8f6e84c5934e13da13bc788ec9d626822f3edeaaaaaddec5" +checksum = "f9faf731068b919569efae7f6c7c6c3d2e29411c1cba666ef0c6fe20b82f50a1" dependencies = [ "dirs", "fs4", @@ -3204,6 +3105,7 @@ dependencies = [ "serde_json", "starbase_styles", "thiserror", + "tokio", "toml", "tracing", "wax", @@ -3218,7 +3120,7 @@ dependencies = [ "pmutil", "proc-macro2", "quote", - "syn 2.0.29", + "syn 2.0.38", ] [[package]] @@ -3227,18 +3129,6 @@ version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a2eb9349b6444b326872e140eb1cf5e7c522154d69e7a0ffb0fb81c06b37543f" -[[package]] -name = "stderrlog" -version = "0.5.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "69a26bbf6de627d389164afa9783739b56746c6c72c4ed16539f4ff54170327b" -dependencies = [ - "atty", - "log", - "termcolor", - "thread_local", -] - [[package]] name = "string_cache" version = "0.8.7" @@ -3275,7 +3165,7 @@ dependencies = [ "proc-macro2", "quote", "swc_macros_common", - "syn 2.0.29", + "syn 2.0.38", ] [[package]] @@ -3296,9 +3186,9 @@ dependencies = [ [[package]] name = "supports-color" -version = "2.0.0" +version = "2.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4950e7174bffabe99455511c39707310e7e9b440364a2fcb1cc21521be57b354" +checksum = "d6398cde53adc3c4557306a96ce67b302968513830a77a95b2b17305d9719a89" dependencies = [ "is-terminal", "is_ci", @@ -3342,9 +3232,9 @@ dependencies = [ [[package]] name = "swc" -version = "0.264.73" +version = "0.266.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1471b8a11d1a2c426a94ccd25050710548d7cf517b599cf4585b53f9132fffe6" +checksum = "c20d6c529a148fc73a81bde1e180c6513c3dac4f00e851fba5d96c608af7ac82" dependencies = [ "anyhow", "base64 0.13.1", @@ -3419,9 +3309,9 @@ dependencies = [ [[package]] name = "swc_common" -version = "0.32.0" +version = "0.32.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "39cb7fcd56655c8ae7dcf2344f0be6cbff4d9c7cb401fe3ec8e56e1de8dfe582" +checksum = "9c84742fc22df1c293da5354c1cc8a5b45a045e9dc941005c1fd9cb4e9bdabc1" dependencies = [ "ahash 0.8.3", "anyhow", @@ -3473,14 +3363,14 @@ dependencies = [ "proc-macro2", "quote", "swc_macros_common", - "syn 2.0.29", + "syn 2.0.38", ] [[package]] name = "swc_core" -version = "0.81.8" +version = "0.83.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1a71deb345d36d72f7342779cf4b9ee12fbca7de9edcd292b1594c79658822c1" +checksum = "478ed4f290aea8c82114db59b83d60c8362115e417cc361bf156577a16b21a4f" dependencies = [ "once_cell", "swc_atoms", @@ -3498,9 +3388,9 @@ dependencies = [ [[package]] name = "swc_ecma_ast" -version = "0.108.0" +version = "0.109.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ea17cbb8d9814c42565e3b8fc40bb1749cb953ef97604360753d4e904bf7b3a4" +checksum = "e063a1614daed3ea8be56e5dd8edb17003409088d2fc9ce4aca3378879812607" dependencies = [ "bitflags 2.3.3", "bytecheck", @@ -3517,9 +3407,9 @@ dependencies = [ [[package]] name = "swc_ecma_codegen" -version = "0.143.2" +version = "0.145.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a21c92322844ff3c8da35bc9623165d8e2b9a48f3315816ce234b1507cac841e" +checksum = "3387d6ec9e636999b76af7d604e430f62ac16aee7cff1ff9aa466d7387b59143" dependencies = [ "memchr", "num-bigint", @@ -3544,14 +3434,14 @@ dependencies = [ "proc-macro2", "quote", "swc_macros_common", - "syn 2.0.29", + "syn 2.0.38", ] [[package]] name = "swc_ecma_ext_transforms" -version = "0.107.1" +version = "0.109.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b25b1a19da62b28b586370e5546b34cdc4e2accb13fdffca033ebdc9b8830b37" +checksum = "d995f94740b4cde4919e6e03d982230f755f49dac9dac52f0218254a1fd69f2b" dependencies = [ "phf", "swc_atoms", @@ -3563,9 +3453,9 @@ dependencies = [ [[package]] name = "swc_ecma_lints" -version = "0.86.2" +version = "0.88.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "54461fbb247609ae41d694b110d31434ea50a47169f51919d8110de3180305ca" +checksum = "c79cd55fe7b36ba9399fa66609c97cc9220f09a8e7d12e86d721360df1f9c107" dependencies = [ "auto_impl", "dashmap", @@ -3583,9 +3473,9 @@ dependencies = [ [[package]] name = "swc_ecma_loader" -version = "0.44.2" +version = "0.44.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e7d7c322462657ae27ac090a2c89f7e456c94416284a2f5ecf66c43a6a3c19d1" +checksum = "7b2b3a3ec38fc9c691b787d32ac2aa5eb6871d1fe74ac4a10638fbd9b9bc407b" dependencies = [ "anyhow", "dashmap", @@ -3604,9 +3494,9 @@ dependencies = [ [[package]] name = "swc_ecma_minifier" -version = "0.185.6" +version = "0.187.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "32a12d61ac8e604dec3de8deef1590f7e275380195792cfb6436c1653f59ab02" +checksum = "a15ae90ce1242d0858623fa66d8fbe1a60520a1a7f4e0719cedb96ded132a6d7" dependencies = [ "arrayvec", "indexmap 1.9.3", @@ -3638,9 +3528,9 @@ dependencies = [ [[package]] name = "swc_ecma_parser" -version = "0.138.1" +version = "0.140.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cb16763342dd3d3e4b00cc578a81a0b5fc44cd06d994a69d81bf6c2743e8703e" +checksum = "3c968599841fcecfdc2e490188ad93251897a1bb912882547e6889e14a368399" dependencies = [ "either", "num-bigint", @@ -3658,9 +3548,9 @@ dependencies = [ [[package]] name = "swc_ecma_preset_env" -version = "0.199.5" +version = "0.201.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "406eec88327463a46659199c5ba30e81748940168d792ab638136644b92c4776" +checksum = "fde91f02d28196911aec302e52af1b53504ef4a798506a153b52e99424d36819" dependencies = [ "anyhow", "dashmap", @@ -3668,7 +3558,7 @@ dependencies = [ "once_cell", "preset_env_base", "rustc-hash", - "semver 1.0.18", + "semver 1.0.20", "serde", "serde_json", "st-map", @@ -3683,9 +3573,9 @@ dependencies = [ [[package]] name = "swc_ecma_testing" -version = "0.21.0" +version = "0.21.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8924413a32153210ddac17ad92e69e1533063304e549c56cf16010224d489e29" +checksum = "0b776795afd44c8df3977391e239a8dedbe2139c5eeb1ea053c1e29314b6d8a7" dependencies = [ "anyhow", "hex", @@ -3696,9 +3586,9 @@ dependencies = [ [[package]] name = "swc_ecma_transforms" -version = "0.222.5" +version = "0.224.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8cab6b2970aa3047467c9c324234432719f7c0c5ec9964e5bac057700a50765b" +checksum = "6ea04ce7c40595c30a2ce297c4c03cb538d5f05bec04b362dce389075a9c8c35" dependencies = [ "swc_atoms", "swc_common", @@ -3716,9 +3606,9 @@ dependencies = [ [[package]] name = "swc_ecma_transforms_base" -version = "0.131.2" +version = "0.133.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d3bd8b793b526588e3fa83dcbf25edb6c4fb2c62251ff838b166365e74032f40" +checksum = "d7787d3607d628ad0cc2e7173770f6a43229ce46e55136e81e5fdeb0951dd6c9" dependencies = [ "better_scoped_tls", "bitflags 2.3.3", @@ -3739,9 +3629,9 @@ dependencies = [ [[package]] name = "swc_ecma_transforms_classes" -version = "0.120.2" +version = "0.122.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "53c236809c0898dcc56576f8c550de0e83475d364532b3bfa94f7105b0010e82" +checksum = "ad3878381c7a115528f90bd1df4a97ac82711b7013f60b1cbf43982ad31ec645" dependencies = [ "swc_atoms", "swc_common", @@ -3753,9 +3643,9 @@ dependencies = [ [[package]] name = "swc_ecma_transforms_compat" -version = "0.157.2" +version = "0.159.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "aea1d104284dd662756289ad8f4fc47119860e05ea0236c15f7dac689a2b84dc" +checksum = "64d4fbea0d55e51492c6bedb37f42b57968df0b1469ef58a9d2532f978131aeb" dependencies = [ "arrayvec", "indexmap 1.9.3", @@ -3786,14 +3676,14 @@ dependencies = [ "proc-macro2", "quote", "swc_macros_common", - "syn 2.0.29", + "syn 2.0.38", ] [[package]] name = "swc_ecma_transforms_module" -version = "0.174.5" +version = "0.176.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "78df42b2b255c3bb5c101a2d1b14ad2d55a006e1cab3d64d425f9804f391534b" +checksum = "e014179fb83055c2673c8242d94691311d0ff771361022f37eb0ad61d056807e" dependencies = [ "Inflector", "anyhow", @@ -3818,9 +3708,9 @@ dependencies = [ [[package]] name = "swc_ecma_transforms_optimization" -version = "0.191.5" +version = "0.193.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dd759f1f89ed3f69f96c7e256b203d1bb09f5a1dc61f2e5d6252a68d6d487801" +checksum = "377e47e806833e348ab44947ee2ee87e4444927a43a9c80e24521343efc6cbf7" dependencies = [ "dashmap", "indexmap 1.9.3", @@ -3842,9 +3732,9 @@ dependencies = [ [[package]] name = "swc_ecma_transforms_proposal" -version = "0.165.4" +version = "0.167.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f3e6757c26f02c62c5f6b8f481202a946209f8fc8921cb5ce30f86e0512a2e00" +checksum = "049fdac0d6b5b7b550d29c67e0f2619793b04979d6071913f8bd679c0c6b0a8c" dependencies = [ "either", "rustc-hash", @@ -3862,9 +3752,9 @@ dependencies = [ [[package]] name = "swc_ecma_transforms_react" -version = "0.177.5" +version = "0.179.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d6cd7d999296796dd796143ab5dd33fb9b48120906eb2b859672dfe1b56a9767" +checksum = "29f0aa6770531287dd6f7d39eb68f89d06feb9b910bc019cc7adaee54351eaf6" dependencies = [ "base64 0.13.1", "dashmap", @@ -3886,9 +3776,9 @@ dependencies = [ [[package]] name = "swc_ecma_transforms_testing" -version = "0.134.2" +version = "0.136.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cdfa46d819c66bfdf4b181f6be51ee6712d62299365e739d7c1cfd96487ea260" +checksum = "d430225f8e2da7643db81e5891aa370ac58364a11f99ae23dfb99599004d19fe" dependencies = [ "ansi_term", "anyhow", @@ -3912,9 +3802,9 @@ dependencies = [ [[package]] name = "swc_ecma_transforms_typescript" -version = "0.181.5" +version = "0.183.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "55d70f79fe84808365939ab7f8940e5042fcca64f109fc5cdb9906328a4ec382" +checksum = "ecfe7a8e7914727a5abb262c13ef35e135c001197b04bf5452c63b1d4379ca4b" dependencies = [ "serde", "swc_atoms", @@ -3928,9 +3818,9 @@ dependencies = [ [[package]] name = "swc_ecma_usage_analyzer" -version = "0.17.1" +version = "0.19.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2baac67fc2ef9653ed6c649cadf96766d9a9f352be44a955fcff9b240209a03b" +checksum = "d71dc9b35f1f137c72badbadb705a2325d161ff603224ab0e07e6834774ea281" dependencies = [ "indexmap 1.9.3", "rustc-hash", @@ -3945,9 +3835,9 @@ dependencies = [ [[package]] name = "swc_ecma_utils" -version = "0.121.1" +version = "0.123.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f8b2d3c4b6dfe2a98d1075b831a8a0fc63323d4bdb339beff77964408a3e55a7" +checksum = "5b6d6b59ebd31b25fe2692ff705c806961e7856de8b7e91fd0942328886cd315" dependencies = [ "indexmap 1.9.3", "num_cpus", @@ -3963,9 +3853,9 @@ dependencies = [ [[package]] name = "swc_ecma_visit" -version = "0.94.0" +version = "0.95.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3930e7a18c12648f4cb079cd5408569db9f2caf2a8aa169d298b4b3e281ad433" +checksum = "2774848b306e17fa280c598ecb192cc2c72a1163942b02d48606514336e9e7c5" dependencies = [ "num-bigint", "swc_atoms", @@ -3984,14 +3874,14 @@ dependencies = [ "pmutil", "proc-macro2", "quote", - "syn 2.0.29", + "syn 2.0.38", ] [[package]] name = "swc_error_reporters" -version = "0.16.0" +version = "0.16.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6530d0def50c33d14064a43837b7e3c1fe8716ee6c3495a478835793caae2c97" +checksum = "c76b479ad1a69bec65b261354b8e2dec8ed0f9ed43c7b54ab053dc4923e1c90e" dependencies = [ "anyhow", "miette 4.7.1", @@ -4002,9 +3892,9 @@ dependencies = [ [[package]] name = "swc_fast_graph" -version = "0.20.0" +version = "0.20.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a407fff2eb5ce3bee7513bdd9531a7be0285bc1213500b6d98ad235428d94cce" +checksum = "e2f7297cdefdb54d8d09e0294c1aec3826825b1feefd0c25978365aa7f447a1c" dependencies = [ "indexmap 1.9.3", "petgraph", @@ -4021,14 +3911,14 @@ dependencies = [ "pmutil", "proc-macro2", "quote", - "syn 2.0.29", + "syn 2.0.38", ] [[package]] name = "swc_node_comments" -version = "0.19.0" +version = "0.19.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "73cee5dededc1e0d19e53dd0a41a343a43e21ed9b62c3df0fdd5801c11533bc9" +checksum = "b2b9597573f1ab8bae72329eef550d214ced0955c7a4f1b6b4ae5e216219e710" dependencies = [ "dashmap", "swc_atoms", @@ -4052,14 +3942,14 @@ checksum = "785309d342a69df4c929ee59e14e36889ca832f1d2a3c1d03c47c93126c72dbc" dependencies = [ "proc-macro2", "quote", - "syn 2.0.29", + "syn 2.0.38", ] [[package]] name = "swc_plugin_proxy" -version = "0.37.0" +version = "0.38.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2f58d16ec0e7aef60b31ef2c01caad888aa6dd6a8185587e6db4c560387b31ae" +checksum = "a76ccadcc63a459e096f332730b2d4e09548fc10e0be63df9f3bacecdf5332fe" dependencies = [ "better_scoped_tls", "rkyv", @@ -4071,9 +3961,9 @@ dependencies = [ [[package]] name = "swc_timer" -version = "0.20.0" +version = "0.20.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "95c548665c811d1c5def583d3d6ca0291e5397122c0de6362bb201cc2de8beff" +checksum = "b740ce6b402ed04176bd28dc4f4f92c764fe0defe8437c2f3b6e1b5818b4e10c" dependencies = [ "tracing", ] @@ -4086,7 +3976,7 @@ checksum = "ff9719b6085dd2824fd61938a881937be14b08f95e2d27c64c825a9f65e052ba" dependencies = [ "proc-macro2", "quote", - "syn 2.0.29", + "syn 2.0.38", ] [[package]] @@ -4110,7 +4000,7 @@ dependencies = [ "proc-macro2", "quote", "swc_macros_common", - "syn 2.0.29", + "syn 2.0.38", ] [[package]] @@ -4126,15 +4016,36 @@ dependencies = [ [[package]] name = "syn" -version = "2.0.29" +version = "2.0.38" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c324c494eba9d92503e6f1ef2e6df781e78f6a7705a0202d9801b198807d518a" +checksum = "e96b79aaa137db8f61e26363a0c9b47d8b4ec75da28b7d1d614c2303e232408b" dependencies = [ "proc-macro2", "quote", "unicode-ident", ] +[[package]] +name = "system-configuration" +version = "0.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ba3a3adc5c275d719af8cb4272ea1c4a6d668a777f37e115f6d11ddbc1c8e0e7" +dependencies = [ + "bitflags 1.3.2", + "core-foundation", + "system-configuration-sys", +] + +[[package]] +name = "system-configuration-sys" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a75fb188eb626b924683e3b95e3a48e63551fcfb51949de2f06a9d91dbee93c9" +dependencies = [ + "core-foundation-sys", + "libc", +] + [[package]] name = "tap" version = "1.0.1" @@ -4152,6 +4063,16 @@ dependencies = [ "xattr", ] +[[package]] +name = "tardar" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "900c942f83b6a8b9998cc8f74ad3ffa24b7ff3c4279ea1c1c52d95dced9f3516" +dependencies = [ + "miette 5.10.0", + "vec1", +] + [[package]] name = "tempfile" version = "3.7.0" @@ -4161,7 +4082,7 @@ dependencies = [ "cfg-if", "fastrand", "redox_syscall 0.3.5", - "rustix 0.38.4", + "rustix", "windows-sys 0.48.0", ] @@ -4186,11 +4107,11 @@ dependencies = [ [[package]] name = "terminal_size" -version = "0.2.6" +version = "0.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8e6bf6f19e9f8ed8d4048dc22981458ebcf406d67e94cd422e5ecd73d63b3237" +checksum = "21bebf2b7c9e0a515f6e0f8c51dc0f8e4696391e6f1ff30379559f8365fb0df7" dependencies = [ - "rustix 0.37.23", + "rustix", "windows-sys 0.48.0", ] @@ -4202,9 +4123,9 @@ checksum = "3369f5ac52d5eb6ab48c6b4ffdc8efbcad6b89c765749064ba298f2c68a16a76" [[package]] name = "testing" -version = "0.34.0" +version = "0.34.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b199c2fbfc063718d1599d6caaa67868f130c39152bb00baf9534237b1037585" +checksum = "dc31f7f4a7baef94495386462c2a55caa0f0885b61b28c120f783132d14938ed" dependencies = [ "ansi_term", "cargo_metadata", @@ -4234,7 +4155,7 @@ dependencies = [ "quote", "regex", "relative-path", - "syn 2.0.29", + "syn 2.0.38", ] [[package]] @@ -4248,30 +4169,24 @@ dependencies = [ "unicode-width", ] -[[package]] -name = "textwrap" -version = "0.16.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "222a222a5bfe1bba4a77b45ec488a741b3cb8872e5e499451fd7d0129c9c7c3d" - [[package]] name = "thiserror" -version = "1.0.48" +version = "1.0.50" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9d6d7a740b8a666a7e828dd00da9c0dc290dff53154ea77ac109281de90589b7" +checksum = "f9a7210f5c9a7156bb50aa36aed4c95afb51df0df00713949448cf9e97d382d2" dependencies = [ "thiserror-impl", ] [[package]] name = "thiserror-impl" -version = "1.0.48" +version = "1.0.50" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "49922ecae66cc8a249b77e68d1d0623c1b2c514f0060c27cdc68bd62a1219d35" +checksum = "266b2e40bc00e5a6c09c3584011e08b06f123c00362c92b975ba9843aaaa14b8" dependencies = [ "proc-macro2", "quote", - "syn 2.0.29", + "syn 2.0.38", ] [[package]] @@ -4284,17 +4199,6 @@ dependencies = [ "once_cell", ] -[[package]] -name = "time" -version = "0.1.45" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1b797afad3f312d1c66a56d11d0316f916356d11bd158fbc6ca6389ff6bf805a" -dependencies = [ - "libc", - "wasi 0.10.0+wasi-snapshot-preview1", - "winapi", -] - [[package]] name = "time" version = "0.3.23" @@ -4339,9 +4243,9 @@ checksum = "1f3ccbac311fea05f86f61904b462b55fb3df8837a366dfc601a0161d0532f20" [[package]] name = "tokio" -version = "1.32.0" +version = "1.33.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "17ed6077ed6cd6c74735e21f37eb16dc3935f96878b1fe961074089cc80893f9" +checksum = "4f38200e3ef7995e5ef13baec2f432a6da0aa9ac495b2c0e8f3b7eec2c92d653" dependencies = [ "backtrace", "bytes", @@ -4365,7 +4269,7 @@ checksum = "630bdcf245f78637c13ec01ffae6187cca34625e8c63150d424b59e55af2675e" dependencies = [ "proc-macro2", "quote", - "syn 2.0.29", + "syn 2.0.38", ] [[package]] @@ -4394,9 +4298,9 @@ dependencies = [ [[package]] name = "toml" -version = "0.7.6" +version = "0.8.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c17e963a819c331dcacd7ab957d80bc2b9a9c1e71c804826d2f283dd65306542" +checksum = "8ff9e3abce27ee2c9a37f9ad37238c1bdd4e789c84ba37df76aa4d528f5072cc" dependencies = [ "serde", "serde_spanned", @@ -4406,20 +4310,20 @@ dependencies = [ [[package]] name = "toml_datetime" -version = "0.6.3" +version = "0.6.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7cda73e2f1397b1262d6dfdcef8aafae14d1de7748d66822d3bfeeb6d03e5e4b" +checksum = "3550f4e9685620ac18a50ed434eb3aec30db8ba93b0287467bca5826ea25baf1" dependencies = [ "serde", ] [[package]] name = "toml_edit" -version = "0.19.14" +version = "0.20.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f8123f27e969974a3dfba720fdb560be359f57b44302d280ba72e76a74480e8a" +checksum = "70f427fce4d84c72b5b732388bf4a9f4531b53f74e2887e3ecb2481f68f66d81" dependencies = [ - "indexmap 2.0.0", + "indexmap 2.0.2", "serde", "serde_spanned", "toml_datetime", @@ -4434,11 +4338,10 @@ checksum = "b6bc1c9ce2b5135ac7f93c72918fc37feb872bdc6a5533a8b85eb4b86bfdae52" [[package]] name = "tracing" -version = "0.1.37" +version = "0.1.40" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8ce8c33a8d48bd45d624a6e523445fd21ec13d3653cd51f681abf67418f54eb8" +checksum = "c3523ab5a71916ccf420eebdf5521fcef02141234bbc0b8a49f2fdc4544364ef" dependencies = [ - "cfg-if", "pin-project-lite", "tracing-attributes", "tracing-core", @@ -4451,26 +4354,26 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "09d48f71a791638519505cefafe162606f706c25592e4bde4d97600c0195312e" dependencies = [ "crossbeam-channel", - "time 0.3.23", + "time", "tracing-subscriber", ] [[package]] name = "tracing-attributes" -version = "0.1.26" +version = "0.1.27" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5f4f31f56159e98206da9efd823404b79b6ef3143b4a7ab76e67b1751b25a4ab" +checksum = "34704c8d6ebcbc939824180af020566b01a7c01f80641264eba0999f6c2b6be7" dependencies = [ "proc-macro2", "quote", - "syn 2.0.29", + "syn 2.0.38", ] [[package]] name = "tracing-core" -version = "0.1.31" +version = "0.1.32" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0955b8137a1df6f1a2e9a37d8a6656291ff0297c1a97c24e0d8425fe2312f79a" +checksum = "c06d3da6113f116aaee68e4d601191614c9053067f9ab7f6edbcb161237daa54" dependencies = [ "once_cell", "valuable", @@ -4487,6 +4390,17 @@ dependencies = [ "tracing-core", ] +[[package]] +name = "tracing-log" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ee855f1f400bd0e5c02d150ae5de3840039a3f54b025156404e34c23c03f47c3" +dependencies = [ + "log", + "once_cell", + "tracing-core", +] + [[package]] name = "tracing-subscriber" version = "0.3.17" @@ -4502,7 +4416,7 @@ dependencies = [ "thread_local", "tracing", "tracing-core", - "tracing-log", + "tracing-log 0.1.3", ] [[package]] @@ -4624,6 +4538,12 @@ version = "0.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "830b7e5d4d90034032940e4ace0d9a9a057e7a45cd94e6c007832e39edb82f6d" +[[package]] +name = "vec1" +version = "1.10.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2bda7c41ca331fe9a1c278a9e7ee055f4be7f5eb1c2b72f079b4ff8b5fce9d5c" + [[package]] name = "vergen" version = "7.5.1" @@ -4636,7 +4556,7 @@ dependencies = [ "getset", "rustversion", "thiserror", - "time 0.3.23", + "time", ] [[package]] @@ -4656,9 +4576,9 @@ dependencies = [ [[package]] name = "walkdir" -version = "2.3.3" +version = "2.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "36df944cda56c7d8d8b7496af378e6b16de9284591917d307c9b4d313c44e698" +checksum = "d71d857dc86794ca4c280d616f7da00d2dbfd8cd788846559a6813e6aa4b54ee" dependencies = [ "same-file", "winapi-util", @@ -4673,12 +4593,6 @@ dependencies = [ "try-lock", ] -[[package]] -name = "wasi" -version = "0.10.0+wasi-snapshot-preview1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1a143597ca7c7793eff794def352d41792a93c481eb1042423ff7ff72ba2c31f" - [[package]] name = "wasi" version = "0.11.0+wasi-snapshot-preview1" @@ -4706,7 +4620,7 @@ dependencies = [ "once_cell", "proc-macro2", "quote", - "syn 2.0.29", + "syn 2.0.38", "wasm-bindgen-shared", ] @@ -4740,7 +4654,7 @@ checksum = "54681b18a46765f095758388f2d0cf16eb8d4169b639ab575a8f5693af210c7b" dependencies = [ "proc-macro2", "quote", - "syn 2.0.29", + "syn 2.0.38", "wasm-bindgen-backend", "wasm-bindgen-shared", ] @@ -4753,18 +4667,17 @@ checksum = "ca6ad05a4870b2bf5fe995117d3728437bd27d7cd5f06f13c17443ef369775a1" [[package]] name = "wax" -version = "0.5.0" +version = "0.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "06c7a3bac6110ac062b7b422a442b7ee23e07209e2784a036654cab1e71bbafc" +checksum = "8d12a78aa0bab22d2f26ed1a96df7ab58e8a93506a3e20adb47c51a93b4e1357" dependencies = [ - "bstr 0.2.17", "const_format", - "itertools", + "itertools 0.11.0", + "miette 5.10.0", "nom", - "nom-supreme", "pori", "regex", - "smallvec", + "tardar", "thiserror", "walkdir", ] @@ -4785,15 +4698,6 @@ version = "0.25.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "14247bb57be4f377dfb94c72830b8ce8fc6beac03cf4bf7b9732eadd414123fc" -[[package]] -name = "wild" -version = "2.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "05b116685a6be0c52f5a103334cbff26db643826c7b3735fc0a3ba9871310a74" -dependencies = [ - "glob", -] - [[package]] name = "winapi" version = "0.3.9" @@ -5029,9 +4933,9 @@ checksum = "09041cd90cf85f7f8b2df60c646f853b7f535ce68f85244eb6731cf89fa498ec" [[package]] name = "zopfli" -version = "0.7.4" +version = "0.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4e0650ae6a051326d798eb099b632f1afb0d323d25ee4ec82ffb0779512084d5" +checksum = "5c1f48f3508a3a3f2faee01629564400bc12260f6214a056d06a3aaaa6ef0736" dependencies = [ "crc32fast", "log", diff --git a/Cargo.toml b/Cargo.toml index ebcf62d..a024972 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -3,17 +3,18 @@ resolver = "2" members = ["crates/*"] [workspace.dependencies] -cached = "0.44.0" -clap = { version = "4.4.2", features = ["derive"] } +cached = "0.46.0" +clap = { version = "4.4.6", features = ["derive"] } miette = "5.10.0" once_cell = "1.18.0" once_map = "0.4.8" petgraph = "0.6.4" relative-path = { version = "1.9.0", features = ["serde"] } -reqwest = { version = "0.11.20", default-features = false, features = [ +reqwest = { version = "0.11.22", default-features = false, features = [ "rustls-tls", ] } -schematic = { version = "0.11.5", default-features = false, features = [ +schematic = { version = "0.12.7", default-features = false, features = [ + "config", "schema", "toml", "type_relative_path", @@ -21,19 +22,19 @@ schematic = { version = "0.11.5", default-features = false, features = [ "type_url", "valid_url", ] } -semver = "1.0.18" -serde = "1.0.188" -serde_json = "1.0.105" -starbase = { version = "0.2.5" } -starbase_archive = { version = "0.2.0", default-features = false } -starbase_sandbox = { version = "0.1.8" } -starbase_styles = "0.1.13" -starbase_utils = { version = "0.2.21", default-features = false, features = [ +semver = "1.0.20" +serde = "1.0.189" +serde_json = "1.0.107" +starbase = { version = "0.2.9" } +starbase_archive = { version = "0.2.4", default-features = false } +starbase_sandbox = { version = "0.1.12" } +starbase_styles = "0.1.16" +starbase_utils = { version = "0.3.6", default-features = false, features = [ "glob", ] } -thiserror = "1.0.48" -tokio = { version = "1.32.0", features = ["full", "tracing"] } -tracing = "0.1.37" +thiserror = "1.0.50" +tokio = { version = "1.33.0", features = ["full", "tracing"] } +tracing = "0.1.40" url = { version = "2.4.1", features = ["serde"] } # Config for 'cargo dist' diff --git a/crates/cli/Cargo.toml b/crates/cli/Cargo.toml index f4d1b2c..16e612a 100644 --- a/crates/cli/Cargo.toml +++ b/crates/cli/Cargo.toml @@ -27,9 +27,9 @@ espresso_store = { path = "../store" } espresso_workspace = { path = "../workspace" } clap = { workspace = true, features = ["derive", "env", "wrap_help"] } console = "0.15.7" -dialoguer = { version = "0.10.4", default-features = false } +dialoguer = { version = "0.11.0", default-features = false } miette = { workspace = true } -mimalloc = { version = "0.1.38", default-features = false } +mimalloc = { version = "0.1.39", default-features = false } relative-path = { workspace = true } starbase = { workspace = true } starbase_styles = { workspace = true } diff --git a/crates/cli/src/app.rs b/crates/cli/src/app.rs index c6b3afa..c61fa97 100644 --- a/crates/cli/src/app.rs +++ b/crates/cli/src/app.rs @@ -1,4 +1,4 @@ -use crate::commands::{BuildArgs, NewArgs}; +use crate::commands::{BuildArgs, NewArgs, PublishArgs}; use clap::{Parser, Subcommand}; use espresso_common::PackageName; use espresso_workspace::SelectQuery; @@ -7,7 +7,7 @@ use starbase::State; pub const BIN_NAME: &str = if cfg!(windows) { "espm.exe" } else { "espm" }; static HEADING_FILTER: &str = "Package selection"; -static HEADING_PKG_MANAGEMENT: &str = "Package management"; +// static HEADING_PKG_MANAGEMENT: &str = "Package management"; #[derive(Clone, Debug, State)] pub struct GlobalArgs { @@ -28,6 +28,14 @@ impl GlobalArgs { #[derive(Clone, Debug, Subcommand)] pub enum Commands { + #[command( + alias = "b", + name = "build", + about = "Build a package.", + long_about = "Build a package by transforming source files (from the package's `src` directory) to the `.espm/` output directory." + )] + Build(BuildArgs), + #[command(name = "debug", about = "Debug espresso instance.", hide = true)] Debug, @@ -38,23 +46,15 @@ pub enum Commands { )] Init(NewArgs), - // PACKAGE MANAGEMENT - #[command( - alias = "b", - name = "build", - about = "Build a package.", - long_about = "Build a package by transforming source files (from the package's `src` directory) to the `.espm/` output directory.", - next_help_heading = HEADING_PKG_MANAGEMENT, - )] - Build(BuildArgs), + #[command(alias = "n", name = "new", about = "Create a new package.")] + New(NewArgs), #[command( - alias = "n", - name = "new", - about = "Create a new package.", - next_help_heading = HEADING_PKG_MANAGEMENT, + alias = "p", + name = "publish", + about = "Publish a package to the espresso registry." )] - New(NewArgs), + Publish(PublishArgs), } #[derive(Clone, Debug, Parser, State)] diff --git a/crates/cli/src/commands/build.rs b/crates/cli/src/commands/build.rs index 5d86158..8dae7e5 100644 --- a/crates/cli/src/commands/build.rs +++ b/crates/cli/src/commands/build.rs @@ -3,10 +3,12 @@ use crate::helpers::loop_packages; use clap::Args; use espresso_common::EsTarget; use espresso_compiler::Compiler; +use espresso_package::Package; use espresso_store::Store; use espresso_workspace::Workspace; -use starbase::system; +use starbase::{system, AppResult}; use starbase_styles::color; +use std::path::PathBuf; use std::sync::Arc; #[derive(Args, Clone, Debug)] @@ -22,6 +24,20 @@ pub struct BuildArgs { pub target: EsTarget, } +pub async fn internal_build( + store: Arc, + package: Arc, + target: EsTarget, +) -> AppResult { + let out_dir = Compiler::new(Arc::clone(&package), store)? + .compile(target) + .await?; + + package.copy_info_files(&out_dir)?; + + Ok(out_dir) +} + #[system] pub async fn build( args: ArgsRef, @@ -35,11 +51,7 @@ pub async fn build( loop_packages(packages, |package| async { println!("Building target {}", color::symbol(args.target.to_string())); - let out_dir = Compiler::new(package, Arc::clone(&store))? - .compile(args.target) - .await?; - - package.copy_info_files(&out_dir)?; + let out_dir = internal_build(Arc::clone(&store), package, args.target).await?; println!("Built to {}", color::path(out_dir)); diff --git a/crates/cli/src/commands/mod.rs b/crates/cli/src/commands/mod.rs index 4021ced..2a82fce 100644 --- a/crates/cli/src/commands/mod.rs +++ b/crates/cli/src/commands/mod.rs @@ -2,8 +2,10 @@ mod build; mod debug; mod init; mod new; +mod publish; pub use build::*; pub use debug::*; pub use init::*; pub use new::*; +pub use publish::*; diff --git a/crates/cli/src/commands/publish.rs b/crates/cli/src/commands/publish.rs new file mode 100644 index 0000000..0e4d6d1 --- /dev/null +++ b/crates/cli/src/commands/publish.rs @@ -0,0 +1,52 @@ +use super::build::internal_build; +use crate::app::GlobalArgs; +use crate::helpers::start_checkpoint; +use clap::Args; +use espresso_common::{Channel, EsTarget}; +use espresso_store::Store; +use espresso_workspace::Workspace; +use starbase::system; +use starbase_styles::color; +use std::sync::Arc; +use tracing::debug; + +#[derive(Args, Clone, Debug)] +pub struct PublishArgs { + #[arg( + value_enum, + long, + env = "ESPM_CHANNEL", + help = "Release channel to publish to.", + default_value_t + )] + pub channel: Channel, +} + +#[system] +pub async fn publish( + _args: ArgsRef, + global_args: StateRef, + workspace: ResourceRef, + store: ResourceRef, +) { + let store = Arc::new(store.to_owned()); + let packages = workspace.select_packages(global_args.to_package_select_query())?; + + start_checkpoint("Validating manifests"); + + for package in &packages { + debug!("Validating {}", color::id(package.name())); + + package.validate_for_publish()?; + } + + start_checkpoint("Running test builds"); + + for package in &packages { + debug!("Building {}", color::id(package.name())); + + internal_build(Arc::clone(&store), Arc::clone(package), EsTarget::Es2015).await?; + } + + start_checkpoint("Publishing packages (TODO)"); +} diff --git a/crates/cli/src/helpers.rs b/crates/cli/src/helpers.rs index 7c58bdb..1d8bb0b 100644 --- a/crates/cli/src/helpers.rs +++ b/crates/cli/src/helpers.rs @@ -3,6 +3,7 @@ use dialoguer::theme::ColorfulTheme; use espresso_package::Package; use starbase_styles::color::{create_style, Color, OwoStyle}; use std::future::Future; +use std::sync::Arc; pub fn create_theme() -> ColorfulTheme { ColorfulTheme { @@ -51,24 +52,20 @@ pub fn create_theme() -> ColorfulTheme { .bold() .color256(Color::Teal as u8), unpicked_item_prefix: style(" ".to_string()).for_stderr(), - ..ColorfulTheme::default() } } pub fn start_checkpoint>(label: T) { println!( "{} {}", - create_style(Color::Yellow as u8).bold().style("===>"), + create_style(Color::Yellow as u8).bold().style("==>"), OwoStyle::new().bold().style(label.as_ref()), ); } -pub async fn loop_packages<'pkg, F, Fut>( - packages: Vec<&'pkg Package>, - func: F, -) -> miette::Result<()> +pub async fn loop_packages(packages: Vec>, func: F) -> miette::Result<()> where - F: Fn(&'pkg Package) -> Fut, + F: Fn(Arc) -> Fut, Fut: Future>, { let last_index = packages.len() - 1; @@ -76,7 +73,7 @@ where for (index, package) in packages.iter().enumerate() { start_checkpoint(package.name()); - func(package).await?; + func(Arc::clone(package)).await?; if index != last_index { println!(); diff --git a/crates/cli/src/main.rs b/crates/cli/src/main.rs index 6fadf61..8c091f9 100644 --- a/crates/cli/src/main.rs +++ b/crates/cli/src/main.rs @@ -55,6 +55,9 @@ async fn main() -> MainResult { Commands::New(args) => { app.execute_with_args(commands::new, args); } + Commands::Publish(args) => { + app.execute_with_args(commands::publish, args); + } }; app.run().await?; diff --git a/crates/cli/tests/utils.rs b/crates/cli/tests/utils.rs index a0ef940..c04b5e7 100644 --- a/crates/cli/tests/utils.rs +++ b/crates/cli/tests/utils.rs @@ -8,10 +8,10 @@ pub fn create_espm_command(sandbox: &Path) -> starbase_sandbox::assert_cmd::Comm let mut cmd = create_command_with_name(sandbox, "espm"); cmd.env("ESPM_LOG", "trace"); cmd.env("ESPM_TEST", "true"); - cmd.env( - "ESPM_ROOT", - sandbox.join(".espresso").to_string_lossy().to_string(), - ); + // cmd.env( + // "ESPM_ROOT", + // sandbox.join(".espresso").to_string_lossy().to_string(), + // ); cmd } diff --git a/crates/common/Cargo.toml b/crates/common/Cargo.toml index 47014b2..3c98ef4 100644 --- a/crates/common/Cargo.toml +++ b/crates/common/Cargo.toml @@ -9,7 +9,7 @@ publish = false clap = { workspace = true } miette = { workspace = true } once_cell = { workspace = true } -regex = "1.9.5" +regex = "1.10.2" schematic = { workspace = true } semver = { workspace = true } serde = { workspace = true } diff --git a/crates/common/src/channel.rs b/crates/common/src/channel.rs index b951bab..94f99d2 100644 --- a/crates/common/src/channel.rs +++ b/crates/common/src/channel.rs @@ -2,9 +2,10 @@ use clap::ValueEnum; use schematic::{derive_enum, ConfigEnum}; derive_enum!( - #[derive(ConfigEnum, ValueEnum)] + #[derive(ConfigEnum, Default, ValueEnum)] pub enum Channel { - Stable, // latest + #[default] + Stable, // latest Unstable, // next, beta, alpha, etc Experimental, // one-off Nightly, diff --git a/crates/compiler/Cargo.toml b/crates/compiler/Cargo.toml index 2a4c390..50c268a 100644 --- a/crates/compiler/Cargo.toml +++ b/crates/compiler/Cargo.toml @@ -15,10 +15,10 @@ anyhow = "1.0.75" cached = { workspace = true } futures = "0.3.28" miette = { workspace = true } -oxipng = "8.0.0" +oxipng = "9.0.0" relative-path = { workspace = true } -swc = "0.264.71" -swc_core = { version = "0.81.6", default-features = false, features = [ +swc = "0.266.1" +swc_core = { version = "0.83.2", default-features = false, features = [ "common", "ecma_ast", "ecma_parser", diff --git a/crates/compiler/src/compiler.rs b/crates/compiler/src/compiler.rs index 631005e..9270e7e 100644 --- a/crates/compiler/src/compiler.rs +++ b/crates/compiler/src/compiler.rs @@ -16,14 +16,14 @@ use swc_core::common::{FilePathMapping, SourceMap}; use tokio::task::{self, JoinHandle}; use tracing::debug; -pub struct Compiler<'pkg> { +pub struct Compiler { compiler: Arc, - package: &'pkg Package, + package: Arc, store: Arc, } -impl<'pkg> Compiler<'pkg> { - pub fn new(package: &Package, store: Arc) -> miette::Result { +impl Compiler { + pub fn new(package: Arc, store: Arc) -> miette::Result { debug!(package = package.name(), "Creating compiler"); Ok(Compiler { diff --git a/crates/compiler/tests/compiler_test.rs b/crates/compiler/tests/compiler_test.rs index b5d30dc..966aa06 100644 --- a/crates/compiler/tests/compiler_test.rs +++ b/crates/compiler/tests/compiler_test.rs @@ -17,7 +17,7 @@ mod compile_modules { async fn compiles_js_files_to_each_target() { let sandbox = create_sandbox("js-files"); let package = Package::new(sandbox.path()).unwrap(); - let compiler = create_compiler(sandbox.path(), &package); + let compiler = create_compiler(package); for target in [EsTarget::Es2015, EsTarget::Es2018, EsTarget::Es2022] { let out_dir = compiler.compile(target).await.unwrap(); @@ -45,7 +45,7 @@ mod compile_assets { async fn copies_non_js_files() { let sandbox = create_sandbox("assets"); let package = Package::new(sandbox.path()).unwrap(); - let compiler = create_compiler(sandbox.path(), &package); + let compiler = create_compiler(package); let out_dir = compiler.compile(EsTarget::Es2015).await.unwrap(); assert!(out_dir.join("cat.png").exists()); @@ -56,7 +56,7 @@ mod compile_assets { async fn optimizes_png() { let sandbox = create_sandbox("assets"); let package = Package::new(sandbox.path()).unwrap(); - let compiler = create_compiler(sandbox.path(), &package); + let compiler = create_compiler(package); let out_dir = compiler.compile(EsTarget::Es2015).await.unwrap(); assert_ne!( @@ -70,12 +70,12 @@ mod compile_assets { #[tokio::test] async fn optimizes_png_with_diff_level() { let sandbox = create_sandbox("assets"); - let mut package = Package::new(sandbox.path()).unwrap(); + let mut package = Package::new(sandbox.path()).unwrap(); package.manifest.build.optimize_png = BuildOptimizePng::Level(1); let base_size = fs::metadata( - create_compiler(sandbox.path(), &package) + create_compiler(package) .compile(EsTarget::Es2015) .await .unwrap() @@ -84,10 +84,11 @@ mod compile_assets { .unwrap() .len(); + let mut package = Package::new(sandbox.path()).unwrap(); package.manifest.build.optimize_png = BuildOptimizePng::Level(6); let next_size = fs::metadata( - create_compiler(sandbox.path(), &package) + create_compiler(package) .compile(EsTarget::Es2020) .await .unwrap() @@ -107,7 +108,7 @@ mod compile_declarations { async fn generates_dmts_for_ts_files() { let sandbox = create_sandbox("ts-files"); let package = Package::new(sandbox.path()).unwrap(); - let compiler = create_compiler(sandbox.path(), &package); + let compiler = create_compiler(package); let out_dir = compiler.compile(EsTarget::Es2018).await.unwrap(); @@ -124,7 +125,7 @@ mod compile_declarations { async fn doesnt_generate_dmts_for_js_files() { let sandbox = create_sandbox("js-files"); let package = Package::new(sandbox.path()).unwrap(); - let compiler = create_compiler(sandbox.path(), &package); + let compiler = create_compiler(package); let out_dir = compiler.compile(EsTarget::Es2018).await.unwrap(); diff --git a/crates/compiler/tests/detect_cjs_test.rs b/crates/compiler/tests/detect_cjs_test.rs index 8961bc8..ddc36c9 100644 --- a/crates/compiler/tests/detect_cjs_test.rs +++ b/crates/compiler/tests/detect_cjs_test.rs @@ -14,7 +14,7 @@ macro_rules! test_cjs { sandbox.create_file(MANIFEST_NAME, "[package]\nname = \"ns/detect-cjs\""); let package = Package::new(sandbox.path()).unwrap(); - let compiler = create_compiler(sandbox.path(), &package); + let compiler = create_compiler(package); if let Err(error) = compiler.compile(EsTarget::Es2015).await { match error.downcast::().unwrap() { diff --git a/crates/compiler/tests/plugin_output_test.rs b/crates/compiler/tests/plugin_output_test.rs index 9884b4d..f780ef9 100644 --- a/crates/compiler/tests/plugin_output_test.rs +++ b/crates/compiler/tests/plugin_output_test.rs @@ -12,7 +12,7 @@ mod plugin_output { async fn adds_mjs_ext_to_imports_exports() { let sandbox = create_sandbox("imports-exports"); let package = Package::new(sandbox.path()).unwrap(); - let compiler = create_compiler(sandbox.path(), &package); + let compiler = create_compiler(package); let out_dir = compiler.compile(EsTarget::Es2020).await.unwrap(); diff --git a/crates/compiler/tests/target_output_test.rs b/crates/compiler/tests/target_output_test.rs index 72735c0..fe5bfab 100644 --- a/crates/compiler/tests/target_output_test.rs +++ b/crates/compiler/tests/target_output_test.rs @@ -1,11 +1,8 @@ mod utils; use espresso_common::EsTarget; -use espresso_compiler::Compiler; use espresso_package::Package; -use espresso_store::Store; use starbase_sandbox::{assert_snapshot, create_sandbox}; -use std::sync::Arc; use utils::*; macro_rules! test_target { @@ -17,7 +14,7 @@ macro_rules! test_target { async fn transforms_modules() { let sandbox = create_sandbox("syntax"); let package = Package::new(sandbox.path()).unwrap(); - let compiler = create_compiler(sandbox.path(), &package); + let compiler = create_compiler(package); let out_dir = compiler.compile($target).await.unwrap(); @@ -28,7 +25,7 @@ macro_rules! test_target { async fn creates_tsconfig() { let sandbox = create_sandbox("syntax"); let package = Package::new(sandbox.path()).unwrap(); - let compiler = create_compiler(sandbox.path(), &package); + let compiler = create_compiler(package); let out_dir = compiler.compile($target).await.unwrap(); let tsconfig = format!("tsconfig.{}.json", $target.to_string()); @@ -55,11 +52,7 @@ mod target_output { async fn supports_legacy_decorators() { let sandbox = create_sandbox("syntax-legacy-decorators"); let package = Package::new(sandbox.path()).unwrap(); - let compiler = Compiler::new( - &package, - Arc::new(Store::load_from(sandbox.path()).unwrap()), - ) - .unwrap(); + let compiler = create_compiler(package); let out_dir = compiler.compile(EsTarget::Es2018).await.unwrap(); assert_snapshot!(read_file(out_dir.join("index.mjs"))); diff --git a/crates/compiler/tests/utils.rs b/crates/compiler/tests/utils.rs index d92e90d..0149b5a 100644 --- a/crates/compiler/tests/utils.rs +++ b/crates/compiler/tests/utils.rs @@ -12,6 +12,6 @@ pub fn read_file>(path: P) -> String { fs::read_to_string(path.as_ref()).unwrap() } -pub fn create_compiler<'comp>(path: &Path, package: &'comp Package) -> Compiler<'comp> { - Compiler::new(package, Arc::new(Store::load_from(path).unwrap())).unwrap() +pub fn create_compiler(package: Package) -> Compiler { + Compiler::new(Arc::new(package), Arc::new(Store::load().unwrap())).unwrap() } diff --git a/crates/package/Cargo.toml b/crates/package/Cargo.toml index d975248..b77e18b 100644 --- a/crates/package/Cargo.toml +++ b/crates/package/Cargo.toml @@ -6,9 +6,11 @@ license = "MIT" publish = false [dependencies] +espresso_common = { path = "../common" } espresso_manifest = { path = "../manifest" } miette = { workspace = true } relative-path = { workspace = true } +schematic = { workspace = true } starbase_styles = { workspace = true } starbase_utils = { workspace = true } thiserror = { workspace = true } diff --git a/crates/package/src/package.rs b/crates/package/src/package.rs index 298047f..ee1cb0d 100644 --- a/crates/package/src/package.rs +++ b/crates/package/src/package.rs @@ -3,11 +3,13 @@ use crate::source_files::SourceFiles; use espresso_manifest::{ManifestLoader, PackageManifest}; use miette::IntoDiagnostic; use relative_path::RelativePathBuf; +use schematic::{Path as SettingPath, ValidateError, ValidateErrorType, ValidatorError}; use starbase_utils::{fs, glob}; use std::path::{Path, PathBuf}; +use std::process::Command; use tracing::{debug, trace}; -#[derive(Debug)] +#[derive(Debug, Default)] pub struct Package { pub manifest: PackageManifest, pub root: PathBuf, @@ -161,6 +163,80 @@ impl Package { self.locate_file_in_root(&["README", "ABOUT"]) } + pub fn validate_for_publish(&self) -> miette::Result<()> { + let mut errors = vec![]; + let package_path = SettingPath::default().join_key("package"); + + if !self.manifest.package.publish { + errors.push(ValidateErrorType::Setting { + path: package_path.join_key("publish"), + error: ValidateError::new("this package cannot be published"), + }); + } + + if self.manifest.package.version.is_none() { + errors.push(ValidateErrorType::Setting { + path: package_path.join_key("version"), + error: ValidateError::new("a semantic version is required"), + }); + } + + if self.manifest.package.description.is_empty() { + errors.push(ValidateErrorType::Setting { + path: package_path.join_key("description"), + error: ValidateError::new("a description is required"), + }); + } + + if self.manifest.package.license.is_none() { + errors.push(ValidateErrorType::Setting { + path: package_path.join_key("license"), + error: ValidateError::new("a license (in SPDX format) is required"), + }); + } + + if self.manifest.package.categories.is_empty() { + errors.push(ValidateErrorType::Setting { + path: package_path.join_key("categories"), + error: ValidateError::new("at least 1 category is required"), + }); + } + + if let Some(url) = &self.manifest.package.repository { + let output = Command::new("git") + .arg("ls-remote") + .arg("--exit-code") + .arg("--heads") + .arg(url.to_string()) + .output(); + + if output.is_err() || output.is_ok_and(|o| !o.status.success()) { + errors.push(ValidateErrorType::Setting { + path: package_path.join_key("repository"), + error: ValidateError::new("not a valid Git repository"), + }); + } + } else if self.manifest.package.repository.is_none() { + errors.push(ValidateErrorType::Setting { + path: package_path.join_key("repository"), + error: ValidateError::new("a Git repository URL is required"), + }); + } + + if !errors.is_empty() { + return Err(PackageError::InvalidForPublish { + name: self.manifest.package.name.clone(), + error: ValidatorError { + path: SettingPath::default(), + errors, + }, + } + .into()); + } + + Ok(()) + } + fn locate_file_in_root(&self, lookups: &[&str]) -> Option { let mut files = vec![]; diff --git a/crates/package/src/package_error.rs b/crates/package/src/package_error.rs index c826038..17bf829 100644 --- a/crates/package/src/package_error.rs +++ b/crates/package/src/package_error.rs @@ -1,10 +1,26 @@ +use espresso_common::PackageName; +use espresso_manifest::MANIFEST_NAME; use miette::Diagnostic; +use schematic::ValidatorError; use starbase_styles::{Style, Stylize}; use std::path::PathBuf; use thiserror::Error; #[derive(Debug, Diagnostic, Error)] pub enum PackageError { + #[diagnostic(code(package::publish::invalid_settings))] + #[error( + "Unable to publish package {}, invalid {} settings.", + .name.to_string().style(Style::Id), + MANIFEST_NAME.style(Style::File), + )] + InvalidForPublish { + name: PackageName, + + #[source] + error: ValidatorError, + }, + #[diagnostic(code(package::missing))] #[error( "No package was found at {}.", diff --git a/crates/package/tests/package_publish_test.rs b/crates/package/tests/package_publish_test.rs new file mode 100644 index 0000000..287d261 --- /dev/null +++ b/crates/package/tests/package_publish_test.rs @@ -0,0 +1,95 @@ +use espresso_common::*; +use espresso_manifest::{PackageManifest, PackageManifestMetadata}; +use espresso_package::*; + +fn create_package() -> Package { + Package { + manifest: PackageManifest { + package: PackageManifestMetadata { + publish: true, + version: Some(Version::new(1, 2, 3)), + description: "Hello".into(), + license: Some(LicenseType::parse("MIT").unwrap()), + categories: vec![Category::Accessibility], + repository: Some("https://github.com/moonrepo/espresso".try_into().unwrap()), + ..PackageManifestMetadata::default() + }, + ..PackageManifest::default() + }, + ..Default::default() + } +} + +mod package_publish { + use super::*; + + #[test] + fn doesnt_error_if_all_good() { + let package = create_package(); + + package.validate_for_publish().unwrap() + } + + #[test] + #[should_panic(expected = "this package cannot be published")] + fn errors_if_publish_off() { + let mut package = create_package(); + package.manifest.package.publish = false; + + package.validate_for_publish().unwrap() + } + + #[test] + #[should_panic(expected = "a semantic version is required")] + fn errors_if_no_version() { + let mut package = create_package(); + package.manifest.package.version = None; + + package.validate_for_publish().unwrap() + } + + #[test] + #[should_panic(expected = "a description is required")] + fn errors_if_no_description() { + let mut package = create_package(); + package.manifest.package.description = "".into(); + + package.validate_for_publish().unwrap() + } + + #[test] + #[should_panic(expected = "a license (in SPDX format) is required")] + fn errors_if_no_license() { + let mut package = create_package(); + package.manifest.package.license = None; + + package.validate_for_publish().unwrap() + } + + #[test] + #[should_panic(expected = "at least 1 category is required")] + fn errors_if_no_categories() { + let mut package = create_package(); + package.manifest.package.categories = vec![]; + + package.validate_for_publish().unwrap() + } + + #[test] + #[should_panic(expected = "a Git repository URL is required")] + fn errors_if_no_repository() { + let mut package = create_package(); + package.manifest.package.repository = None; + + package.validate_for_publish().unwrap() + } + + #[test] + #[should_panic(expected = "not a valid Git repository")] + fn errors_if_not_a_git_repository() { + let mut package = create_package(); + package.manifest.package.repository = Some("https://moonrepo.dev".try_into().unwrap()); + + package.validate_for_publish().unwrap() + } +} diff --git a/crates/store/src/store.rs b/crates/store/src/store.rs index f8fc52a..c8e54f9 100644 --- a/crates/store/src/store.rs +++ b/crates/store/src/store.rs @@ -3,11 +3,8 @@ use crate::store_error::StoreError; use starbase::Resource; use starbase_archive::Archiver; use starbase_utils::{dirs, fs}; -use std::collections::HashMap; use std::env; use std::path::{Path, PathBuf}; -use std::sync::Arc; -use tokio::sync::Mutex; use tracing::debug; #[derive(Clone, Resource)] @@ -16,8 +13,6 @@ pub struct Store { pub cache_dir: PathBuf, pub packages_dir: PathBuf, pub root: PathBuf, - - locks: Arc>>>>, } impl Store { @@ -54,35 +49,26 @@ impl Store { cache_dir, packages_dir, root: root.to_path_buf(), - locks: Arc::new(Mutex::new(HashMap::new())), }) } pub async fn store_item(&self, url: &str, item: impl StorageItem) -> miette::Result { - let mut locks = self.locks.lock().await; - - // Create a lock for this item, so that we avoid multiple processes - // all attempting to download and unpack the same archive! - let entry = Arc::clone( - locks - .entry(item.to_file_prefix()) - .or_insert_with(|| Arc::new(Mutex::new(()))), - ); - - drop(locks); - - let _entry_lock = entry.lock().await; - - // After we've acquired the lock, we can check if the item already - // exists in the store. If we do this before the lock, other processes would - // return true while the archive is being unpacked, resulting in breakages! let output_dir = self.packages_dir.join(item.to_file_path()); - let _fs_lock = fs::lock_directory(&output_dir)?; - if output_dir.exists() && !output_dir.join(".lock").exists() { + if output_dir.exists() && !fs::is_dir_locked(&output_dir) { + debug!( + item = item.get_label(), + output_dir = ?output_dir, + "Package already exists in the store, skipping unpack", + ); + return Ok(output_dir); } + // Create a lock for this item, so that we avoid multiple processes + // all attempting to download and unpack the same archive! + let _dir_lock = fs::lock_directory(&output_dir)?; + let result = self .unpack_archive(&self.download_archive(url, &item).await?, &item) .await?; @@ -143,7 +129,7 @@ impl Store { .await .map_err(|error| StoreError::Http { error })?; - fs::write_file_with_lock(&archive_file, contents)?; + fs::write_file(&archive_file, contents)?; debug!( item = item.get_label(), @@ -161,16 +147,6 @@ impl Store { ) -> miette::Result { let output_dir = self.packages_dir.join(item.to_file_path()); - if output_dir.exists() && !output_dir.join(".lock").exists() { - debug!( - item = item.get_label(), - output_dir = ?output_dir, - "Package already exists in the store, skipping unpack", - ); - - return Ok(output_dir); - } - debug!( item = item.get_label(), archive_file = ?archive_file, diff --git a/crates/workspace/src/package_graph.rs b/crates/workspace/src/package_graph.rs index 90cd375..10ee7a1 100644 --- a/crates/workspace/src/package_graph.rs +++ b/crates/workspace/src/package_graph.rs @@ -5,6 +5,7 @@ use petgraph::algo::toposort; use petgraph::stable_graph::{NodeIndex, StableDiGraph}; use starbase_styles::color; use std::collections::BTreeMap; +use std::sync::Arc; use tracing::{debug, trace}; // This is a simple DAG that represents the dependency graph of local @@ -13,11 +14,11 @@ use tracing::{debug, trace}; pub struct PackageGraph<'ws> { graph: StableDiGraph<&'ws PackageName, ()>, indices: BTreeMap<&'ws PackageName, NodeIndex>, - packages: &'ws BTreeMap, + packages: &'ws BTreeMap>, } impl<'ws> PackageGraph<'ws> { - pub fn new(packages: &BTreeMap) -> PackageGraph { + pub fn new(packages: &BTreeMap>) -> PackageGraph { debug!("Creating a package graph with {} packages", packages.len()); let mut graph = PackageGraph { diff --git a/crates/workspace/src/workspace.rs b/crates/workspace/src/workspace.rs index f3a635e..560db67 100644 --- a/crates/workspace/src/workspace.rs +++ b/crates/workspace/src/workspace.rs @@ -11,6 +11,7 @@ use starbase_utils::{dirs, fs, glob}; use std::collections::{BTreeMap, HashSet}; use std::fmt; use std::path::{Path, PathBuf}; +use std::sync::Arc; use tracing::{debug, trace}; #[derive(Default)] @@ -27,7 +28,7 @@ pub struct Workspace { pub root: PathBuf, pub working_dir: PathBuf, - packages: OnceCell>, + packages: OnceCell>>, } impl Workspace { @@ -77,7 +78,7 @@ impl Workspace { }) } - pub fn load_packages(&self) -> miette::Result<&BTreeMap> { + pub fn load_packages(&self) -> miette::Result<&BTreeMap>> { self.packages.get_or_try_init(|| { let mut packages = BTreeMap::new(); @@ -93,7 +94,7 @@ impl Workspace { color::id(package.name()), ); - packages.insert(package.manifest.package.name.clone(), package); + packages.insert(package.manifest.package.name.clone(), Arc::new(package)); Ok(()) }; @@ -123,11 +124,11 @@ impl Workspace { } }; - Ok::, miette::Report>(packages) + Ok::>, miette::Report>(packages) }) } - pub fn select_packages(&self, query: SelectQuery) -> miette::Result> { + pub fn select_packages(&self, query: SelectQuery) -> miette::Result>> { let packages = self.load_packages()?; let mut selected_names = HashSet::new(); @@ -171,7 +172,7 @@ impl Workspace { for name in PackageGraph::new(packages).toposort()? { if selected_names.contains(name) { - results.push(packages.get(name).unwrap()); + results.push(Arc::clone(packages.get(name).unwrap())); } }