diff --git a/.github/workflows/publish.yml b/.github/workflows/publish.yml index f55775097..6da90695e 100644 --- a/.github/workflows/publish.yml +++ b/.github/workflows/publish.yml @@ -54,6 +54,14 @@ jobs: - run: bun run build - name: Benchmark run: bun run benchmark + - name: Profile Devup UI Turbopack + env: + DEVUP_UI_PROFILE: "1" + run: | + rm -rf benchmark/next-devup-ui-single-turbo/.next \ + benchmark/next-devup-ui-single-turbo/df \ + benchmark/next-devup-ui-single-turbo/tsconfig.tsbuildinfo + bun run --filter next-devup-ui-single-turbo-benchmark build # The landing app is the only real-scale acceptance target in this repo, and # `publish` runs it against the deployed vinext/@devup-ui/vite-plugin build. diff --git a/Cargo.lock b/Cargo.lock index ccd36f113..1e3138787 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -59,6 +59,18 @@ version = "0.7.8" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d3fb67a6e08acf24fdeccbac2cb6ac4305825bd1f117462e0e6f2f193345ad56" +[[package]] +name = "async-channel" +version = "2.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "924ed96dd52d1b75e9c1a3e6275715fd320f5f9439fb5a4a11fa51f4221158d2" +dependencies = [ + "concurrent-queue", + "event-listener-strategy", + "futures-core", + "pin-project-lite", +] + [[package]] name = "async-trait" version = "0.1.92" @@ -67,7 +79,7 @@ checksum = "82f6aeea286b8eb4dd3431a1be1b59d290ace00f5bfd8e2a159bc2a05e2c1667" dependencies = [ "proc-macro2", "quote", - "syn 3.0.3", + "syn 3.0.4", ] [[package]] @@ -109,27 +121,29 @@ checksum = "b588b76d00fde79687d7646a9b5bdf3cc0f655e0bbd080335a95d7e96f3587da" [[package]] name = "boa_ast" -version = "0.21.1" +version = "0.22.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6339a700715bda376f5ea65c76e8fe8fc880930d8b0638cea68e7f3da6538e0a" +checksum = "9221b0a090572b4a118b46c5874c0781fe4bc9546b85f0a615b8bfb609ca4ed7" dependencies = [ "bitflags", "boa_interner", "boa_macros", "boa_string", "indexmap", - "num-bigint 0.4.8", + "num-bigint", "rustc-hash", + "strum", ] [[package]] name = "boa_engine" -version = "0.21.1" +version = "0.22.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1521be326f8a5c8887e95d4ce7f002917a002a23f7b93b9a6a2bf50ed4157824" +checksum = "5d6aaf7fdc4299df68adb67e1a5440a51d34630a1f5271b9698fd74bc97b60d9" dependencies = [ "aligned-vec", "arrayvec", + "async-channel", "bitflags", "boa_ast", "boa_gc", @@ -144,19 +158,20 @@ dependencies = [ "dynify", "fast-float2", "float16", - "futures-channel", "futures-concurrency", "futures-lite", - "hashbrown 0.16.1", + "hashbrown 0.17.1", + "icu_calendar", "icu_normalizer", "indexmap", "intrusive-collections", - "itertools 0.14.0", - "num-bigint 0.4.8", + "itertools 0.15.0", + "num-bigint", "num-integer", "num-traits", "num_enum", - "paste", + "oneshot", + "pastey", "portable-atomic", "rand", "regress", @@ -168,59 +183,62 @@ dependencies = [ "static_assertions", "tag_ptr", "tap", + "temporal_rs", "thin-vec", "thiserror", "time", + "timezone_provider", "xsum", ] [[package]] name = "boa_gc" -version = "0.21.1" +version = "0.22.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "17323a98cf2e631afacf1a6d659c1212c48a68bacfa85afab0a66ade80582e51" +checksum = "af82119558ab1002d1978c8459b53a3ebb506177d29a3aca37c07c1777b1d966" dependencies = [ + "arrayvec", "boa_macros", "boa_string", - "hashbrown 0.16.1", + "hashbrown 0.17.1", "thin-vec", ] [[package]] name = "boa_interner" -version = "0.21.1" +version = "0.22.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "20510b8b02bcde9b0a01cf34c0c308c56156503d1d91cdab4c8cfbd292b747ea" +checksum = "317c631e791f5cb7d0017e43c0a758b0eaffd40c34c4c360e2a6be7752b78cd1" dependencies = [ "boa_gc", "boa_macros", - "hashbrown 0.16.1", + "hashbrown 0.17.1", "indexmap", "once_cell", - "phf 0.13.1", + "phf", "rustc-hash", "static_assertions", ] [[package]] name = "boa_macros" -version = "0.21.1" +version = "0.22.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5822cb4f146d243060e588bc5a5f2e709683fdad3d7111f42c48e6b5c921d23d" +checksum = "b882fd440dc0f4b7441367cf89567bb077920356750c9a76a16c002d8ec2fa5c" dependencies = [ "cfg-if", "cow-utils", "proc-macro2", "quote", - "syn 2.0.119", - "synstructure", + "syn 3.0.4", + "synstructure 0.14.0", ] [[package]] name = "boa_parser" -version = "0.21.1" +version = "0.22.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "35bd957fa9fa93e3a001a8aba5a5cd40c2bbfde486378be4c4b472fd304aaddb" +checksum = "641e81b3c8cbb7a2140547fb3ea534e9edf210b4e8c920b5fa864a919e11fbcf" dependencies = [ "bitflags", "boa_ast", @@ -228,7 +246,7 @@ dependencies = [ "boa_macros", "fast-float2", "icu_properties", - "num-bigint 0.4.8", + "num-bigint", "num-traits", "regress", "rustc-hash", @@ -236,13 +254,13 @@ dependencies = [ [[package]] name = "boa_string" -version = "0.21.1" +version = "0.22.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ca2da1d7f4a76fd9040788a122f0d807910800a7b86f5952e9244848c36511de" +checksum = "30bf86c2bcff5bf2547acbfc516c5d3108ca527cb131511d749bf6fbef762c0e" dependencies = [ "fast-float2", "itoa", - "paste", + "pastey", "rustc-hash", "ryu-js", "static_assertions", @@ -277,7 +295,17 @@ checksum = "fc0e56a716f1e132ff6bf4bdac1c944a3fcdc1cae65f70a4a2a1ac3b401d2d1f" dependencies = [ "proc-macro2", "quote", - "syn 3.0.3", + "syn 3.0.4", +] + +[[package]] +name = "calendrical_calculations" +version = "0.2.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5abbd6eeda6885048d357edc66748eea6e0268e3dd11f326fff5bd248d779c26" +dependencies = [ + "core_maths", + "displaydoc", ] [[package]] @@ -297,9 +325,9 @@ dependencies = [ [[package]] name = "cc" -version = "1.4.3" +version = "1.4.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "509591b7bcd67f4ef775afad7662703b4935daaa6ec0e5605cfb1090b32a2b6d" +checksum = "0ad534f4357a5264cce5019c989cf66a4f0dc4e0d1b1d15f8aacec0ff7360273" dependencies = [ "find-msvc-tools", "shlex", @@ -311,6 +339,17 @@ version = "1.0.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9330f8b2ff13f34540b44e946ef35111825727b38d33286ef986142615121801" +[[package]] +name = "chacha20" +version = "0.10.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "65c35e4b699c7e15ccbe7ee35c005e4fc0a278d22238a2857e6ce2dadeda1b06" +dependencies = [ + "cfg-if", + "cpufeatures", + "rand_core", +] + [[package]] name = "ciborium" version = "0.2.2" @@ -385,6 +424,15 @@ dependencies = [ "zmij", ] +[[package]] +name = "concurrent-queue" +version = "2.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4ca0197aee26d1ae37445ee532fefce43251d24cc7c166799f4d46817f1d3973" +dependencies = [ + "crossbeam-utils", +] + [[package]] name = "console" version = "0.16.4" @@ -406,12 +454,30 @@ dependencies = [ "wasm-bindgen", ] +[[package]] +name = "core_maths" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "77745e017f5edba1a9c1d854f6f3a52dac8a12dd5af5d2f54aecf61e43d80d30" +dependencies = [ + "libm", +] + [[package]] name = "cow-utils" version = "0.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "417bef24afe1460300965a25ff4a24b8b45ad011948302ec221e8a0a81eb2c79" +[[package]] +name = "cpufeatures" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5ca28b0ae3115b884660db4118d803791fd6756b6e88f39c0f3f7859060d7566" +dependencies = [ + "libc", +] + [[package]] name = "criterion" version = "0.8.2" @@ -484,7 +550,7 @@ version = "0.1.0" dependencies = [ "bimap", "criterion", - "phf 0.14.0", + "phf", "regex-lite", "rstest", "serde", @@ -519,7 +585,7 @@ dependencies = [ "console_error_panic_hook", "css", "extractor", - "getrandom 0.3.4", + "getrandom", "insta", "js-sys", "rstest", @@ -540,7 +606,7 @@ checksum = "c6232dd377dcc64799954cbd3a9bb882e9cdc1308ccd87b1c098f1fb2eaf82a8" dependencies = [ "proc-macro2", "quote", - "syn 3.0.3", + "syn 3.0.4", ] [[package]] @@ -629,6 +695,26 @@ dependencies = [ "windows-sys", ] +[[package]] +name = "event-listener" +version = "5.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5a23add41df1562121a9393cb065eab5146a1242410f23a644851e90cfd669d2" +dependencies = [ + "parking", + "pin-project-lite", +] + +[[package]] +name = "event-listener-strategy" +version = "0.5.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8be9f3dfaaffdae2972880079a491a1a8bb7cbed0b8dd7a347f668b4150a3b93" +dependencies = [ + "event-listener", + "pin-project-lite", +] + [[package]] name = "extractor" version = "0.1.0" @@ -646,7 +732,7 @@ dependencies = [ "oxc_span", "oxc_syntax", "oxc_transformer", - "phf 0.14.0", + "phf", "rstest", "rustc-hash", "serde_json", @@ -696,15 +782,6 @@ version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "77ce24cb58228fbb8aa041425bb1050850ac19177686ea6e0f41a70416f56fdb" -[[package]] -name = "futures-channel" -version = "0.3.34" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b1f9e3d69d39e4862ffed03ed071a76f9a13ba1d9109d355b0f0aa6b15e393c4" -dependencies = [ - "futures-core", -] - [[package]] name = "futures-concurrency" version = "7.7.1" @@ -762,7 +839,7 @@ checksum = "9fb9654ba8355388abeb8dcb4fc62f511300867002afc858860463bdd9fe0c44" dependencies = [ "proc-macro2", "quote", - "syn 3.0.3", + "syn 3.0.4", ] [[package]] @@ -790,20 +867,6 @@ dependencies = [ "slab", ] -[[package]] -name = "getrandom" -version = "0.3.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "899def5c37c4fd7b2664648c28120ecec138e4d395b459e5ca34f9cce2dd77fd" -dependencies = [ - "cfg-if", - "js-sys", - "libc", - "r-efi 5.3.0", - "wasip2", - "wasm-bindgen", -] - [[package]] name = "getrandom" version = "0.4.3" @@ -811,8 +874,11 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "300e883d756b2e4ec94e02791f39b04b522276138852cfc41d9fb7e904106099" dependencies = [ "cfg-if", + "js-sys", "libc", - "r-efi 6.0.0", + "r-efi", + "rand_core", + "wasm-bindgen", ] [[package]] @@ -838,17 +904,6 @@ version = "0.14.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e5274423e17b7c9fc20b6e7e208532f9b19825d82dfd615708b70edd83df41f1" -[[package]] -name = "hashbrown" -version = "0.16.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "841d1cc9bed7f9236f321df977030373f4a4163ae1a7dbfe1a51a2c1a51d9100" -dependencies = [ - "allocator-api2", - "equivalent", - "foldhash", -] - [[package]] name = "hashbrown" version = "0.17.1" @@ -856,6 +911,8 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ed5909b6e89a2db4456e54cd5f673791d7eca6732202bbf2a9cc504fe2f9b84a" dependencies = [ "allocator-api2", + "equivalent", + "foldhash", ] [[package]] @@ -870,14 +927,37 @@ version = "1.1.7" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b0b3ba31f6dc772cc8221ce81dbbbd64fa1e668255a6737d95eeace59b5a8823" +[[package]] +name = "icu_calendar" +version = "2.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "58655df2f728e46e4eee80bddebefacf52ec3e77cdb925014b47c5a5905eb55c" +dependencies = [ + "calendrical_calculations", + "displaydoc", + "icu_calendar_data", + "icu_locale_core", + "icu_locale_fallback", + "icu_provider", + "tinystr", + "zerovec", +] + +[[package]] +name = "icu_calendar_data" +version = "2.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dc00caaa3fb3201ff7a18aa458e8c3ab042b9da154cfdf948bdde3936c31c36e" + [[package]] name = "icu_collections" -version = "2.0.0" +version = "2.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "200072f5d0e3614556f94a9930d5dc3e0662a652823904c3a75dc3b0af7fee47" +checksum = "fa68d21081c4a05d5a901a1c62add574c77048b6a1c67be3b50ce0b60d4ca513" dependencies = [ "displaydoc", "potential_utf", + "utf8_iter", "yoke", "zerofrom", "zerovec", @@ -897,13 +977,32 @@ dependencies = [ "zerovec", ] +[[package]] +name = "icu_locale_fallback" +version = "2.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "251af8e57c9400e3eb58242fe5b8b1152b2a64fdf4cf632f923c38ccee6f2fa9" +dependencies = [ + "icu_locale_core", + "icu_locale_fallback_data", + "icu_provider", + "potential_utf", + "tinystr", + "zerovec", +] + +[[package]] +name = "icu_locale_fallback_data" +version = "2.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "decf2a22ec8fa68f1a0c1129a3f8583f8f8bc24e8b9ccbe98ead99f62a4dc3a8" + [[package]] name = "icu_normalizer" -version = "2.0.1" +version = "2.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8b24a59706036ba941c9476a55cd57b82b77f38a3c667d637ee7cabbc85eaedc" +checksum = "12f9cf5f235641ed274641dd81c3f28d870e276763d0797aeeab72317b1c646f" dependencies = [ - "displaydoc", "icu_collections", "icu_normalizer_data", "icu_properties", @@ -916,31 +1015,30 @@ dependencies = [ [[package]] name = "icu_normalizer_data" -version = "2.0.0" +version = "2.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "00210d6893afc98edb752b664b8890f0ef174c8adbb8d0be9710fa66fbbf72d3" +checksum = "1563da1ed3e0b3bf3d74c9b85917ac9c56464d2f57242270c09c9e752f8021a0" [[package]] name = "icu_properties" -version = "2.0.2" +version = "2.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f5a97b8ac6235e69506e8dacfb2adf38461d2ce6d3e9bd9c94c4cbc3cd4400a4" +checksum = "7e7ca276ad3145661a65914e6daf131ca5120cd3dcee8f8f3214b8875184a148" dependencies = [ "displaydoc", "icu_collections", "icu_locale_core", "icu_properties_data", "icu_provider", - "potential_utf", "zerotrie", "zerovec", ] [[package]] name = "icu_properties_data" -version = "2.0.1" +version = "2.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "298459143998310acd25ffe6810ed544932242d3f07083eee1084d83a71bd632" +checksum = "e590f038c1464a96894fd6d10127e90a8be4509f56ff7ecef851b15cee0b7caa" [[package]] name = "icu_provider" @@ -961,9 +1059,9 @@ dependencies = [ [[package]] name = "indexmap" -version = "2.14.0" +version = "2.14.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d466e9454f08e4a911e14806c24e16fba1b4c121d1ea474396f396069cf949d9" +checksum = "07aa2048142242915a31d35844fb311e0e53fcca590c3a0a40dcf1b841fa09eb" dependencies = [ "equivalent", "hashbrown 0.17.1", @@ -983,12 +1081,9 @@ dependencies = [ [[package]] name = "intrusive-collections" -version = "0.9.7" +version = "0.10.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "189d0897e4cbe8c75efedf3502c18c887b05046e59d28404d4d8e46cbc4d1e86" -dependencies = [ - "memoffset", -] +checksum = "4275b20e6057cd7733fd8df8a5a31701e4fe44497dad0f3fa0e1c4fb971506be" [[package]] name = "itertools" @@ -999,15 +1094,6 @@ dependencies = [ "either", ] -[[package]] -name = "itertools" -version = "0.14.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2b192c782037fadd9cfa75548310488aabdbf3d2da73885b31bd0abd03351285" -dependencies = [ - "either", -] - [[package]] name = "itertools" version = "0.15.0" @@ -1023,6 +1109,12 @@ version = "1.0.18" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8f42a60cbdf9a97f5d2305f08a87dc4e09308d1276d28c869c684d7777685682" +[[package]] +name = "ixdtf" +version = "0.6.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4d3667095d64c3ecffc96463a21157b04bf3e252f6e8d5750b20c02e33c194e3" + [[package]] name = "js-sys" version = "0.3.104" @@ -1075,9 +1167,9 @@ dependencies = [ [[package]] name = "log" -version = "0.4.33" +version = "0.4.34" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0ceec5bc11778974d1bcb055b18002eba7f4b3518b6a0081b3af5f21666da9ad" +checksum = "f9f8bd3e56ce4dfc153cf470fffbfa98c7620958b312ca5c3a4b8d5181fd13c6" [[package]] name = "memchr" @@ -1085,15 +1177,6 @@ version = "2.8.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "cf8baf1c55e62ffcace7a9f06f4bd9cd3f0c4beb022d3b367256b91b87513d98" -[[package]] -name = "memoffset" -version = "0.9.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "488016bfae457b036d996092f6cb448677611ce4449e970ceaf42695203f218a" -dependencies = [ - "autocfg", -] - [[package]] name = "minicov" version = "0.3.9" @@ -1128,17 +1211,6 @@ dependencies = [ "windows-sys", ] -[[package]] -name = "num-bigint" -version = "0.4.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c89e69e7e0f03bea5ef08013795c25018e101932225a656383bd384495ecc367" -dependencies = [ - "num-integer", - "num-traits", - "serde", -] - [[package]] name = "num-bigint" version = "0.5.1" @@ -1147,6 +1219,7 @@ checksum = "93e7820bc0a80a0238e650327316f929ba18d5be054b647490a3a6a339f3e7c0" dependencies = [ "num-integer", "num-traits", + "serde", ] [[package]] @@ -1211,6 +1284,12 @@ version = "1.21.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9f7c3e4beb33f85d45ae3e3a1792185706c8e16d043238c593331cc7cd313b50" +[[package]] +name = "oneshot" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cfe21416a02c693fb9f980befcb230ecc70b0b3d1cc4abf88b9675c4c1457f0c" + [[package]] name = "oorandom" version = "11.1.5" @@ -1225,9 +1304,9 @@ checksum = "1a80800c0488c3a21695ea981a54918fbb37abf04f4d0720c453632255e2ff0e" [[package]] name = "owo-colors" -version = "4.3.0" +version = "4.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d211803b9b6b570f68772237e415a029d5a50c65d382910b879fb19d3271f94d" +checksum = "13c45bb4a6ae1280ec0803b1ef9d3455eb50f01efbbe1447ab020f1d54fba9d8" [[package]] name = "oxc-browserslist" @@ -1246,9 +1325,9 @@ dependencies = [ [[package]] name = "oxc_allocator" -version = "0.146.0" +version = "0.147.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "064fce871c5cb07e557049ed27c8ca2aa530db797f73424c67e4bb8cfe61175e" +checksum = "c4e69b2400ab3c2f96eb3ae474ed80fa3a2959ba05e26afc5df45e634fc9a071" dependencies = [ "allocator-api2", "hashbrown 0.17.1", @@ -1258,9 +1337,9 @@ dependencies = [ [[package]] name = "oxc_ast" -version = "0.146.0" +version = "0.147.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a999fd4494b604fc0328fc43443bc1298722500587d87d7e993118bd82c65d7b" +checksum = "3dcf0e905263cc649c07e3494489de620462390de12cb2b5933247f91785a421" dependencies = [ "bitflags", "oxc_allocator", @@ -1276,21 +1355,21 @@ dependencies = [ [[package]] name = "oxc_ast_macros" -version = "0.146.0" +version = "0.147.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d715e3c300c95b1d797b05526567161fd86fcac2ac68235101c61b736f216cde" +checksum = "aa520723c19e83bcc683a988ac77d56bbca4b88178d5fc6c0c89fb73a45893cf" dependencies = [ - "phf 0.14.0", + "phf", "proc-macro2", "quote", - "syn 3.0.3", + "syn 3.0.4", ] [[package]] name = "oxc_ast_visit" -version = "0.146.0" +version = "0.147.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "81b9d77b5c27575ef7d624de1f226caeca3c0d3fcc2347bdaa788d5c4a85512d" +checksum = "7bcdfe65eec7cc091e52f73ea7f6546375a2dd5b88c43900afc94dafffebfb8c" dependencies = [ "oxc_allocator", "oxc_ast", @@ -1300,9 +1379,9 @@ dependencies = [ [[package]] name = "oxc_codegen" -version = "0.146.0" +version = "0.147.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "57b5180ce6f991eacd8c4a85eb28f9fbbff145422dd8ece782f48626957661d0" +checksum = "bd265be822054de498537a8df29f0afef75f9e804f9c499c81c0ec8c9b9212bd" dependencies = [ "bitflags", "cow-utils", @@ -1317,13 +1396,14 @@ dependencies = [ "oxc_str", "oxc_syntax", "rustc-hash", + "smallvec", ] [[package]] name = "oxc_compat" -version = "0.146.0" +version = "0.147.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bfdfa97a1bb7a8f144937dfb4118ea6e2d681f619c886034f72675b788e1a251" +checksum = "970fe81a0a43846ebe37c9250f3a1948e984ba79cbdf866681fd117dffe27e3d" dependencies = [ "cow-utils", "oxc-browserslist", @@ -1334,18 +1414,18 @@ dependencies = [ [[package]] name = "oxc_data_structures" -version = "0.146.0" +version = "0.147.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d15a23b57a931fda6bc9a4fdc3fbabcac6a2edfd0b7216cb7c81432f0e9f54d9" +checksum = "e7903e8f1f76f148c943b5a2e192bf908d600b5fe0df1efc77ebeb75591ace56" dependencies = [ "ropey", ] [[package]] name = "oxc_diagnostics" -version = "0.146.0" +version = "0.147.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f2d0ce1ec51b07b6501eecedd5ab50835b7ebe5c8463cada3b2e6d984d0943af" +checksum = "acb70f89da6524e6a2d097f0d747f14731156996ee5400474ef19ad3f318646b" dependencies = [ "bytecount", "cow-utils", @@ -1362,13 +1442,13 @@ dependencies = [ [[package]] name = "oxc_ecmascript" -version = "0.146.0" +version = "0.147.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8b5d3d07165b7aadcd021f62cd95fb7d62cb6977b8bbfb42fa12adbfb7e75257" +checksum = "9f1fdd494072a511d7df691282dbd4fe656ad6fd0bea24d4366c019ed1172a4f" dependencies = [ "dragonbox_ecma", "itoa", - "num-bigint 0.5.1", + "num-bigint", "num-traits", "oxc_ast", "oxc_data_structures", @@ -1378,9 +1458,9 @@ dependencies = [ [[package]] name = "oxc_estree" -version = "0.146.0" +version = "0.147.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fc7af86a59b7aeb2845ffea2cc21ae259053865b175e9ac936a7d72f2744abe5" +checksum = "e2ef8cdc8d02a7e0b91ee51a2572963c914d3bb38261e11a54d068a092c4dc42" [[package]] name = "oxc_index" @@ -1394,14 +1474,14 @@ dependencies = [ [[package]] name = "oxc_parser" -version = "0.146.0" +version = "0.147.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "311c29dfdf55ea8bf065cf300b3d0dca5fe1c0fb8059c9ba70a6c98cce75306e" +checksum = "12a55bfce994289467c88ed9732dbc4c8f03f3186af2b77e48dc4a71c502cb2c" dependencies = [ "bitflags", "cow-utils", "memchr", - "num-bigint 0.5.1", + "num-bigint", "num-traits", "oxc_allocator", "oxc_ast", @@ -1418,9 +1498,9 @@ dependencies = [ [[package]] name = "oxc_regular_expression" -version = "0.146.0" +version = "0.147.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "31839a373ad02a37fad54244a3eb710f9a94b5e2e16ca0e1d28a37b4c75b8ebc" +checksum = "d8455a292e58e24a0c51cfa2ec1d44e219e22d59a04b9af1ae050d4944a19d51" dependencies = [ "bitflags", "oxc_allocator", @@ -1428,16 +1508,16 @@ dependencies = [ "oxc_diagnostics", "oxc_span", "oxc_str", - "phf 0.14.0", + "phf", "rustc-hash", "unicode-id-start", ] [[package]] name = "oxc_semantic" -version = "0.146.0" +version = "0.147.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "366191309f606847936aade62707b06683ed5e0b0c8cb66c27710a61f64a50f1" +checksum = "b9c35fc29f969e7f93ee41dc37c9d82816e9c2597495f6cc302477831c8fd2ed" dependencies = [ "itertools 0.15.0", "memchr", @@ -1471,9 +1551,9 @@ dependencies = [ [[package]] name = "oxc_span" -version = "0.146.0" +version = "0.147.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c355ae1fa3e865c28cb8a85735ecafd1bb6340a5b880c638d127c1f2d61a98a5" +checksum = "378737bf42338e31badcdae2e6e2afc7a63cb7ffe82c418ac12d506c554adda4" dependencies = [ "compact_str", "oxc_allocator", @@ -1484,9 +1564,9 @@ dependencies = [ [[package]] name = "oxc_str" -version = "0.146.0" +version = "0.147.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7ba45ef9efa8296e647aa37b2b21936cb520953031edc1ef6352281bbea22faa" +checksum = "8564a0269f93153f856100db908af25434efdd1ec9d403ffa099cdab57385c8c" dependencies = [ "compact_str", "hashbrown 0.17.1", @@ -1496,9 +1576,9 @@ dependencies = [ [[package]] name = "oxc_syntax" -version = "0.146.0" +version = "0.147.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0970d9be099a082711b574d58add258549580a70fe6546b99a067bbd7ad4a264" +checksum = "59f05978138676c9d54f021391409fcf1314a46adcdbbaabc670c2990f8387dd" dependencies = [ "bitflags", "cow-utils", @@ -1510,15 +1590,15 @@ dependencies = [ "oxc_index", "oxc_span", "oxc_str", - "phf 0.14.0", + "phf", "unicode-id-start", ] [[package]] name = "oxc_transformer" -version = "0.146.0" +version = "0.147.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d286f586303c23502786e31959de18c57bfc66299d1f55b9dc2d56c3f4863f6e" +checksum = "2e4443b3e36410882b44ed13e415ef8ddc3d31e6786d03f5a0e486e4c1d18090" dependencies = [ "base64", "compact_str", @@ -1546,9 +1626,9 @@ dependencies = [ [[package]] name = "oxc_traverse" -version = "0.146.0" +version = "0.147.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f214c06bfb15427400f7c11fe4487ebeb4d5740b0803ff5f1a1c895198e40a30" +checksum = "02a3cc8f1a31a1b08104ede1a6631dfc984282234249f4503f51f4d2b22036e4" dependencies = [ "itoa", "oxc_allocator", @@ -1603,10 +1683,10 @@ dependencies = [ ] [[package]] -name = "paste" -version = "1.0.15" +name = "pastey" +version = "0.2.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "57c0d7b74b563b49d38dae00a0c37d4d6de9b432382b2892f0574ddcae73fd0a" +checksum = "2ee67f1008b1ba2321834326597b8e186293b049a023cdef258527550b9935b4" [[package]] name = "percent-encoding" @@ -1614,37 +1694,17 @@ version = "2.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9b4f627cb1b25917193a259e49bdad08f671f8d9708acfd5fe0a8c1455d87220" -[[package]] -name = "phf" -version = "0.13.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c1562dc717473dbaa4c1f85a36410e03c047b2e7df7f45ee938fbef64ae7fadf" -dependencies = [ - "phf_macros 0.13.1", - "phf_shared 0.13.1", -] - [[package]] name = "phf" version = "0.14.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "010378780309880b08997fae13be7834dba947d36393bd372f2b1556deb2a2f6" dependencies = [ - "phf_macros 0.14.0", - "phf_shared 0.14.0", + "phf_macros", + "phf_shared", "serde", ] -[[package]] -name = "phf_generator" -version = "0.13.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "135ace3a761e564ec88c03a77317a7c6b80bb7f7135ef2544dbe054243b89737" -dependencies = [ - "fastrand", - "phf_shared 0.13.1", -] - [[package]] name = "phf_generator" version = "0.14.0" @@ -1652,20 +1712,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "aeb62e0959d5a1bebc965f4d15d9e2b7cea002b6b0f5ba8cde6cc26738467100" dependencies = [ "fastrand", - "phf_shared 0.14.0", -] - -[[package]] -name = "phf_macros" -version = "0.13.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "812f032b54b1e759ccd5f8b6677695d5268c588701effba24601f6932f8269ef" -dependencies = [ - "phf_generator 0.13.1", - "phf_shared 0.13.1", - "proc-macro2", - "quote", - "syn 2.0.119", + "phf_shared", ] [[package]] @@ -1674,22 +1721,13 @@ version = "0.14.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "5fa8d0ca26d424d27630da600c6624696e7dec8bf7b3b492b383c5dc49e5e085" dependencies = [ - "phf_generator 0.14.0", - "phf_shared 0.14.0", + "phf_generator", + "phf_shared", "proc-macro2", "quote", "syn 2.0.119", ] -[[package]] -name = "phf_shared" -version = "0.13.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e57fef6bc5981e38c2ce2d63bfa546861309f875b8a75f092d1d54ae2d64f266" -dependencies = [ - "siphasher", -] - [[package]] name = "phf_shared" version = "0.14.0" @@ -1777,6 +1815,8 @@ version = "0.1.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d83eb9bc6d8e5cf568e7a1101d60ee05e81ed50ea106026f3d18deeb046d7661" dependencies = [ + "serde_core", + "writeable", "zerovec", ] @@ -1786,15 +1826,6 @@ version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "439ee305def115ba05938db6eb1644ff94165c5ab5e9420d1c1bcedbba909391" -[[package]] -name = "ppv-lite86" -version = "0.2.21" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "85eae3c4ed2f50dcfe72643da4befc30deadb458a9b590d720cde2f2b1e97da9" -dependencies = [ - "zerocopy", -] - [[package]] name = "proc-macro-crate" version = "3.5.0" @@ -1822,12 +1853,6 @@ dependencies = [ "proc-macro2", ] -[[package]] -name = "r-efi" -version = "5.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "69cdb34c158ceb288df11e18b4bd39de994f6657d83847bdffdbd7f346754b0f" - [[package]] name = "r-efi" version = "6.0.0" @@ -1836,32 +1861,20 @@ checksum = "f8dcc9c7d52a811697d2151c701e0d08956f92b0e24136cf4cf27b57a6a0d9bf" [[package]] name = "rand" -version = "0.9.5" +version = "0.10.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b9ef1d0d795eb7d84685bca4f72f3649f064e6641543d3a8c415898726a57b41" +checksum = "c7f5fa3a058cd35567ef9bfa5e75732bee0f9e4c55fa90477bef2dfcdbc4be80" dependencies = [ - "rand_chacha", - "rand_core", -] - -[[package]] -name = "rand_chacha" -version = "0.9.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d3022b5f1df60f26e1ffddd6c66e8aa15de382ae63b3a0c1bfc0e4d3e3f325cb" -dependencies = [ - "ppv-lite86", + "chacha20", + "getrandom", "rand_core", ] [[package]] name = "rand_core" -version = "0.9.5" +version = "0.10.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "76afc826de14238e6e8c374ddcc1fa19e374fd8dd986b0d2af0d02377261d83c" -dependencies = [ - "getrandom 0.3.4", -] +checksum = "63b8176103e19a2643978565ca18b50549f6101881c443590420e4dc998a3c69" [[package]] name = "rayon" @@ -1929,11 +1942,10 @@ checksum = "d6f6ff9a378485b298a5286656da665ba74413d36db0979633275d2e708145d4" [[package]] name = "regress" -version = "0.10.5" +version = "0.12.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2057b2325e68a893284d1538021ab90279adac1139957ca2a74426c6f118fb48" +checksum = "32eef8b209c3c1c15dbad02c1f30f9539f00dc7253e0cbcdaae442a50a09d7c1" dependencies = [ - "hashbrown 0.16.1", "memchr", ] @@ -2093,7 +2105,7 @@ checksum = "e7a5d71263a5a7d47b41f6b3f06ba276f10cc18b0931f1799f710578e2309348" dependencies = [ "proc-macro2", "quote", - "syn 3.0.3", + "syn 3.0.4", ] [[package]] @@ -2131,7 +2143,7 @@ checksum = "a22144e767da4ddd8416dbf383700542ffd8a5dc493dfecedfe1fe3ad03c98ae" dependencies = [ "proc-macro2", "quote", - "syn 3.0.3", + "syn 3.0.4", ] [[package]] @@ -2221,6 +2233,9 @@ name = "strum" version = "0.28.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9628de9b8791db39ceda2b119bbe13134770b56c138ec1d3af810d045c04f9bd" +dependencies = [ + "strum_macros", +] [[package]] name = "strum_macros" @@ -2247,9 +2262,9 @@ dependencies = [ [[package]] name = "syn" -version = "3.0.3" +version = "3.0.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "53e9bae58849f64dfa4f5d5ae372c8341f7305f82a3868709269343628b659a3" +checksum = "e6275cddf4610d1775e6d1fe9469b2e77d0f39fd98fb7450901b821e0c53649f" dependencies = [ "proc-macro2", "quote", @@ -2267,6 +2282,17 @@ dependencies = [ "syn 2.0.119", ] +[[package]] +name = "synstructure" +version = "0.14.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "901704edd0dfe137f1987838ee4f259e4e063c31371bdb423f7ae38ec6f77f02" +dependencies = [ + "proc-macro2", + "quote", + "syn 3.0.4", +] + [[package]] name = "tag_ptr" version = "0.1.0" @@ -2286,12 +2312,29 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "32497e9a4c7b38532efcdebeef879707aa9f794296a4f0244f6f69e9bc8574bd" dependencies = [ "fastrand", - "getrandom 0.4.3", + "getrandom", "once_cell", "rustix", "windows-sys", ] +[[package]] +name = "temporal_rs" +version = "0.2.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1a978fef907a27736827d336c0bfaab14fb8a7509dd6dc2b43c44e51d59aca5b" +dependencies = [ + "calendrical_calculations", + "core_maths", + "icu_calendar", + "icu_locale_core", + "ixdtf", + "num-traits", + "timezone_provider", + "tinystr", + "writeable", +] + [[package]] name = "textwrap" version = "0.16.2" @@ -2326,7 +2369,7 @@ checksum = "bc04cd3e1236dd4a98afca4569f2deb3f120e5422a4023be2cb683f8486292af" dependencies = [ "proc-macro2", "quote", - "syn 3.0.3", + "syn 3.0.4", ] [[package]] @@ -2361,6 +2404,18 @@ dependencies = [ "time-core", ] +[[package]] +name = "timezone_provider" +version = "0.2.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "89ec4f4eebb4817fde02a411aedc7ac5f66c89c68c49e5d4b17a8139f077af52" +dependencies = [ + "tinystr", + "zerofrom", + "zerotrie", + "zerovec", +] + [[package]] name = "tinystr" version = "0.8.4" @@ -2448,6 +2503,12 @@ version = "1.0.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c8232dd3cdaed5356e0f716d285e4b40b932ac434100fe9b7e0e8e935b9e6246" +[[package]] +name = "utf8_iter" +version = "1.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b6c140620e7ffbb22c2dee59cafe6084a59b5ffc27a8859a5f0d494b5d52b6be" + [[package]] name = "vsimd" version = "0.8.0" @@ -2464,15 +2525,6 @@ dependencies = [ "winapi-util", ] -[[package]] -name = "wasip2" -version = "1.0.4+wasi-0.2.12" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b67efb37e106e55ce722a510d6b5f9c17f083e5fc79afc2badeb12cc313d9487" -dependencies = [ - "wit-bindgen", -] - [[package]] name = "wasm-bindgen" version = "0.2.127" @@ -2632,12 +2684,6 @@ dependencies = [ "memchr", ] -[[package]] -name = "wit-bindgen" -version = "0.57.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1ebf944e87a7c253233ad6766e082e3cd714b5d03812acc24c318f549614536e" - [[package]] name = "write16" version = "1.0.0" @@ -2676,7 +2722,7 @@ dependencies = [ "proc-macro2", "quote", "syn 2.0.119", - "synstructure", + "synstructure 0.13.2", ] [[package]] @@ -2717,7 +2763,7 @@ dependencies = [ "proc-macro2", "quote", "syn 2.0.119", - "synstructure", + "synstructure 0.13.2", ] [[package]] @@ -2752,7 +2798,7 @@ checksum = "34df6fc39dbd26ddc9c10e6a2984476e13acce22e64e4487636ef494369225da" dependencies = [ "proc-macro2", "quote", - "syn 3.0.3", + "syn 3.0.4", ] [[package]] diff --git a/Cargo.toml b/Cargo.toml index 26cba5dc1..b74fcdbe4 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -23,7 +23,6 @@ unwrap_used = "deny" cast_possible_truncation = "allow" cast_sign_loss = "allow" default_trait_access = "allow" -from_iter_instead_of_collect = "allow" implicit_hasher = "allow" inline_always = "allow" fallible_impl_from = "allow" @@ -50,8 +49,8 @@ use_self = "allow" used_underscore_binding = "allow" [profile.release] -# Optimize for small code size (critical for WASM binary) -opt-level = "s" +# Minimize the WASM that every build must read, compile, and retain in memory. +opt-level = "z" # Link-time optimization: enables cross-crate inlining and dead code elimination lto = true # Single codegen unit: maximizes optimization at cost of compile time diff --git a/README.md b/README.md index cd5ff8e14..d51c35d6b 100644 --- a/README.md +++ b/README.md @@ -79,21 +79,31 @@ npm install @devup-ui/webpack-plugin ## Comparison Benchmarks -Next.js Build Time and Build Size (github action - ubuntu-latest) - -| Library | Version | Build Time | Build Size | -| ---------------------------------- | ------- | ---------- | -------------------- | -| tailwindcss | 4.1.13 | 19.31s | 59,521,539 bytes | -| styleX | 0.15.4 | 41.78s | 86,869,452 bytes | -| vanilla-extract | 1.17.4 | 19.50s | 61,494,033 bytes | -| kuma-ui | 1.5.9 | 20.93s | 69,924,179 bytes | -| panda-css | 1.3.1 | 20.64s | 64,573,260 bytes | -| chakra-ui | 3.27.0 | 28.81s | 222,435,802 bytes | -| mui | 7.3.2 | 20.86s | 97,964,458 bytes | -| **devup-ui(per-file css)** | 1.0.18 | **16.90s** | 59,540,459 bytes | -| **devup-ui(single css)** | 1.0.18 | **17.05s** | **59,520,196 bytes** | -| tailwindcss(turbopack) | 4.1.13 | 6.72s | 5,355,082 bytes | -| **devup-ui(single css+turbopack)** | 1.0.18 | 10.34s | **4,772,050 bytes** | +[Latest CI benchmark](https://github.com/dev-five-git/devup-ui/actions/runs/33254030962) on `ubuntu-latest` with Next.js 16.3.3. All Next.js builds use the native TypeScript 7 CLI for type checking. + +Webpack values are one cold build: + +| Library | Version | Build Time | Build Size | +| --------------------------- | ------- | ---------- | ----------------- | +| tailwindcss | 4.3.3 | 12.81s | 66,453,190 bytes | +| styleX | 0.19.0 | 27.61s | 95,413,403 bytes | +| vanilla-extract | 1.21.2 | 11.96s | 67,689,923 bytes | +| kuma-ui | 1.6.4 | 13.07s | 74,747,637 bytes | +| panda-css | 1.12.0 | 13.20s | 70,970,208 bytes | +| chakra-ui | 3.37.0 | 19.98s | 206,589,898 bytes | +| mui | 9.4.0 | 13.78s | 100,603,186 bytes | +| **devup-ui (per-file CSS)** | 1.0.40 | **10.73s** | 66,535,095 bytes | +| **devup-ui (single CSS)** | 1.0.40 | **10.81s** | 66,535,321 bytes | + +Turbopack values are medians of six cold builds in alternating order: + +| Library | Version | Median Build Time | Build Size | +| -------------------------------------- | ------- | ----------------- | -------------------- | +| tailwindcss | 4.3.3 | 5.52s | 38,425,132 bytes | +| **devup-ui (direct APIs, single CSS)** | 1.0.40 | **5.46s** | **36,507,782 bytes** | +| **devup-ui (static `.css.ts`)** | 1.0.40 | **5.41s** | 36,586,883 bytes | + +The Turbopack ranges overlap, so the direct-API median is 0.06s (1.1%) ahead but still effectively parity with Tailwind on this fixture. The six cold samples were Tailwind `5.42, 5.56, 5.70, 5.53, 5.41, 5.52s`, direct Devup UI `5.64, 5.40, 5.42, 5.46, 5.54, 5.46s`, and static `.css.ts` `5.42, 5.38, 5.42, 5.47, 5.40, 5.38s`. The fixtures have comparable app shapes, not pixel-identical styling: Tailwind styles the leading paragraph and button more heavily, while Devup UI exercises typed component/style props. Treat these as build-pipeline results rather than a per-rule microbenchmark. The static `.css.ts` row uses the `lite` WASM fast path; dynamic `.css.ts` modules use the full Boa evaluator and are not represented by that median. ## How it works diff --git a/README_ko.md b/README_ko.md index b609d2ab2..095a0183c 100644 --- a/README_ko.md +++ b/README_ko.md @@ -79,21 +79,31 @@ npm install @devup-ui/webpack-plugin ## 비교 벤치마크 -Next.js Build Time and Build Size (github action - ubuntu-latest) - -| 라이브러리 | 버전 | 빌드 시간 | 빌드 사이즈 | -| ---------------------------------- | ------ | ---------- | -------------------- | -| tailwindcss | 4.1.13 | 19.31s | 59,521,539 bytes | -| styleX | 0.15.4 | 41.78s | 86,869,452 bytes | -| vanilla-extract | 1.17.4 | 19.50s | 61,494,033 bytes | -| kuma-ui | 1.5.9 | 20.93s | 69,924,179 bytes | -| panda-css | 1.3.1 | 20.64s | 64,573,260 bytes | -| chakra-ui | 3.27.0 | 28.81s | 222,435,802 bytes | -| mui | 7.3.2 | 20.86s | 97,964,458 bytes | -| **devup-ui(per-file css)** | 1.0.18 | **16.90s** | 59,540,459 bytes | -| **devup-ui(single css)** | 1.0.18 | **17.05s** | **59,520,196 bytes** | -| tailwindcss(turbopack) | 4.1.13 | 6.72s | 5,355,082 bytes | -| **devup-ui(single css+turbopack)** | 1.0.18 | 10.34s | **4,772,050 bytes** | +[최신 CI 벤치마크](https://github.com/dev-five-git/devup-ui/actions/runs/33239265133)는 `ubuntu-latest`에서 실행했습니다. 모든 Next.js 빌드는 네이티브 TypeScript 7 CLI로 타입 검사를 수행합니다. + +Webpack 값은 cold build 1회 결과입니다. + +| 라이브러리 | 버전 | 빌드 시간 | 빌드 사이즈 | +| --------------------------- | ------ | ---------- | -------------------- | +| tailwindcss | 4.3.3 | 15.55s | 66,479,450 bytes | +| styleX | 0.19.0 | 34.27s | 95,417,163 bytes | +| vanilla-extract | 1.21.2 | 14.91s | 67,711,539 bytes | +| kuma-ui | 1.6.4 | 16.43s | 74,774,187 bytes | +| panda-css | 1.12.0 | 16.82s | 70,983,831 bytes | +| chakra-ui | 3.37.0 | 24.79s | 206,598,161 bytes | +| mui | 9.4.0 | 17.12s | 100,621,370 bytes | +| **devup-ui (per-file CSS)** | 1.0.40 | **13.43s** | 66,577,087 bytes | +| **devup-ui (single CSS)** | 1.0.40 | **13.37s** | **66,564,796 bytes** | + +Turbopack 값은 실행 순서를 번갈아 측정한 cold build 6회의 중앙값입니다. + +| 라이브러리 | 버전 | 빌드 시간 중앙값 | 빌드 사이즈 | +| -------------------------------------- | ------ | ---------------- | -------------------- | +| tailwindcss | 4.3.3 | 6.55s | 38,386,955 bytes | +| **devup-ui (direct APIs, single CSS)** | 1.0.40 | **6.54s** | **36,519,234 bytes** | +| **devup-ui (static `.css.ts`)** | 1.0.40 | **6.47s** | 36,550,197 bytes | + +Turbopack 측정 범위는 서로 겹치므로 direct API 결과는 이 fixture에서 Tailwind와 사실상 동률입니다. static `.css.ts` 행은 `lite` WASM 빠른 경로를 사용하며, full Boa evaluator가 필요한 dynamic `.css.ts`는 해당 중앙값에 포함되지 않습니다. ## 작동 원리 diff --git a/apps/landing/next.config.ts b/apps/landing/next.config.ts index 84115a0d7..6ebfab29d 100644 --- a/apps/landing/next.config.ts +++ b/apps/landing/next.config.ts @@ -4,7 +4,12 @@ import type { NextConfig } from 'next' import { STATIC_EXPORT_DEPLOYMENT_ID } from './src/utils/static-export-rsc-transport' -const baseConfig: NextConfig = { +const baseConfig: NextConfig & { + experimental: NonNullable & { + useTypeScriptCli: true + } +} = { + experimental: { useTypeScriptCli: true }, output: 'export', pageExtensions: ['js', 'jsx', 'md', 'mdx', 'ts', 'tsx'], reactCompiler: true, diff --git a/apps/landing/package.json b/apps/landing/package.json index d7ae275bd..92a0a58ac 100644 --- a/apps/landing/package.json +++ b/apps/landing/package.json @@ -42,7 +42,7 @@ "@vitejs/plugin-react": "^6.1", "@vitejs/plugin-rsc": "^0.5.34", "babel-plugin-react-compiler": "^1.0", - "typescript": "^7", + "typescript": "^7.0.2", "vite": "^8.2" } } diff --git a/apps/landing/src/app/(detail)/docs/RightIndex.tsx b/apps/landing/src/app/(detail)/docs/RightIndex.tsx index 9c2e75b76..17c6db1ae 100644 --- a/apps/landing/src/app/(detail)/docs/RightIndex.tsx +++ b/apps/landing/src/app/(detail)/docs/RightIndex.tsx @@ -74,8 +74,7 @@ export function RightIndex() { ) } - updateMenus() - + const animationFrameId = requestAnimationFrame(updateMenus) const timeoutId = setTimeout(updateMenus, 100) const observer = new MutationObserver(updateMenus) @@ -88,6 +87,7 @@ export function RightIndex() { } return () => { + cancelAnimationFrame(animationFrameId) clearTimeout(timeoutId) observer.disconnect() } diff --git a/apps/landing/src/app/(detail)/docs/overview/page.mdx b/apps/landing/src/app/(detail)/docs/overview/page.mdx index 2f40a4bc6..9c337acd6 100644 --- a/apps/landing/src/app/(detail)/docs/overview/page.mdx +++ b/apps/landing/src/app/(detail)/docs/overview/page.mdx @@ -129,7 +129,11 @@ const Card = styled('div', { ### Proven Performance -Benchmarks on Next.js (GitHub Actions - ubuntu-latest): +Latest Next.js 16.3.3 cold-build results from [GitHub Actions run 33254030962](https://github.com/dev-five-git/devup-ui/actions/runs/33254030962) on `ubuntu-latest`. +Devup rows use `@devup-ui/react` 1.0.40 and `@devup-ui/next-plugin` 1.0.83. +All Next.js builds use the native TypeScript 7 CLI for type checking. + +Webpack values are one cold build: @@ -143,73 +147,96 @@ Benchmarks on Next.js (GitHub Actions - ubuntu-latest): tailwindcss - 4.1.13 - 19.31s - 59,521,539 bytes + 4.3.3 + 12.81s + 66,453,190 bytes styleX - 0.15.4 - 41.78s - 86,869,452 bytes + 0.19.0 + 27.61s + 95,413,403 bytes vanilla-extract - 1.17.4 - 19.50s - 61,494,033 bytes + 1.21.2 + 11.96s + 67,689,923 bytes kuma-ui - 1.5.9 - 20.93s - 69,924,179 bytes + 1.6.4 + 13.07s + 74,747,637 bytes panda-css - 1.3.1 - 20.64s - 64,573,260 bytes + 1.12.0 + 13.20s + 70,970,208 bytes chakra-ui - 3.27.0 - 28.81s - 222,435,802 bytes + 3.37.0 + 19.98s + 206,589,898 bytes mui - 7.3.2 - 20.86s - 97,964,458 bytes + 9.4.0 + 13.78s + 100,603,186 bytes + + + **devup-ui (per-file CSS)** + **1.0.40** + **10.73s** + 66,535,095 bytes + + + **devup-ui (single CSS)** + **1.0.40** + **10.81s** + **66,535,321 bytes** + +
+ +Turbopack values are medians of six cold builds in alternating order. Build size is the output from the same commit's representative run: + + + - **devup-ui (per-file css)** - **1.0.18** - **16.90s** - 59,540,459 bytes + Library + Version + Median Build Time + Build Size + + - **devup-ui (single css)** - **1.0.18** - **17.05s** - **59,520,196 bytes** + tailwindcss + 4.3.3 + 5.52s + 38,425,132 bytes - tailwindcss (turbopack) - 4.1.13 - 6.72s - 5,355,082 bytes + **devup-ui (direct APIs, single CSS)** + **1.0.40** + **5.46s** + **36,507,782 bytes** - **devup-ui (single css + turbopack)** - **1.0.18** - 10.34s - **4,772,050 bytes** + **devup-ui (static `.css.ts`)** + **1.0.40** + **5.41s** + 36,586,883 bytes
+The Turbopack ranges overlap, so the direct-API median is 0.06s (1.1%) ahead but still effectively parity with Tailwind on this fixture. The six cold samples were Tailwind `5.42, 5.56, 5.70, 5.53, 5.41, 5.52s`, direct Devup UI `5.64, 5.40, 5.42, 5.46, 5.54, 5.46s`, and static `.css.ts` `5.42, 5.38, 5.42, 5.47, 5.40, 5.38s`. The fixtures have comparable app shapes, not pixel-identical styling: Tailwind styles the leading paragraph and button more heavily, while Devup UI exercises typed component/style props. Treat these as build-pipeline results rather than a per-rule microbenchmark. The static `.css.ts` row uses the `lite` WASM fast path; dynamic `.css.ts` modules use the full Boa evaluator and are not represented by that median. + ### Get Started Ready to experience the future of CSS-in-JS? Head to the [Installation](/docs/installation) guide to get started in minutes. diff --git a/apps/landing/src/app/(detail)/team/TeamCard.tsx b/apps/landing/src/app/(detail)/team/TeamCard.tsx index 5b4f60f47..79ebf0cad 100644 --- a/apps/landing/src/app/(detail)/team/TeamCard.tsx +++ b/apps/landing/src/app/(detail)/team/TeamCard.tsx @@ -1,5 +1,6 @@ import { Box, Flex, Image, Text, VStack } from '@devup-ui/react' import Link from 'next/link' +import { cache } from 'react' import { Github } from '../../../components/Header/Github' import { Insta } from '../../../components/Header/Insta' @@ -10,12 +11,23 @@ interface TeamCardProps { instaId?: string } +interface GithubUser { + avatar_url: string + name: string | null +} + +const getGithubUser = cache(async (userId: string) => { + const response = await fetch(`https://api.github.com/users/${userId}`) + if (!response.ok) { + throw new Error(`GitHub user request failed with ${response.status}`) + } + return response.json() as Promise +}) + export async function TeamCard({ userId, role, instaId }: TeamCardProps) { - const data = await fetch(`https://api.github.com/users/${userId}`).then( - (res) => res.json(), - ) + const data = await getGithubUser(userId) const avatarUrl = data.avatar_url - const name = data.name + const name = data.name ?? userId return ( {`${name}'s - Comparison Bechmarks + Comparison Benchmarks - Next.js Build Time and Build Size (github action - ubuntu-latest) + Next.js 16.3.3 cold build (GitHub Actions, run 33254030962) diff --git a/apps/landing/src/app/DevupUICard.tsx b/apps/landing/src/app/DevupUICard.tsx index 8d1312121..21ed70758 100644 --- a/apps/landing/src/app/DevupUICard.tsx +++ b/apps/landing/src/app/DevupUICard.tsx @@ -30,13 +30,13 @@ export function DevupUICard() { Devup UI - 1.0.18 + 1.0.40 - Next.js Build Time + Next.js Build Time (single CSS) - 18.23s + 10.81s - Bulid Size + Build Size - 54.75MB + 63.45MB diff --git a/apps/landing/src/app/OtherCard.tsx b/apps/landing/src/app/OtherCard.tsx index d7f7d7e66..1c213b66c 100644 --- a/apps/landing/src/app/OtherCard.tsx +++ b/apps/landing/src/app/OtherCard.tsx @@ -48,7 +48,7 @@ export function OtherCard({ - Bulid Time + Build Time {buildTime} @@ -56,7 +56,7 @@ export function OtherCard({ - Bulid Size + Build Size {buildSize} diff --git a/apps/landing/src/app/layout.tsx b/apps/landing/src/app/layout.tsx index 5652aaa92..b9598f701 100644 --- a/apps/landing/src/app/layout.tsx +++ b/apps/landing/src/app/layout.tsx @@ -12,7 +12,13 @@ import { STATIC_EXPORT_DEPLOYMENT_ID, } from '../utils/static-export-rsc-transport' -const staticExportRscTransport = `(${installStaticExportRscTransport.toString()})(${JSON.stringify(STATIC_EXPORT_DEPLOYMENT_ID)})` +function escapeScriptClosingTag(script: string) { + return script.replace(/<\/script/giu, '\\u003c/script') +} + +const staticExportRscTransport = escapeScriptClosingTag( + `(${installStaticExportRscTransport.toString()})(${JSON.stringify(STATIC_EXPORT_DEPLOYMENT_ID)})`, +) // The transport only exists to feed vinext's navigation runtime from `.rsc` // artifacts on a plain static host. The CI-only Next build emits no such @@ -22,13 +28,13 @@ const needsStaticExportRscTransport = process.env.NODE_ENV === 'production' && process.env.LANDING_BUILD_MODE !== 'next' -const googleTagManagerScript = `(function(w,d,s,l,i){ +const googleTagManagerScript = escapeScriptClosingTag(`(function(w,d,s,l,i){ if(w.location.hostname!=='devup-ui.com')return; w[l]=w[l]||[];w[l].push({'gtm.start':new Date().getTime(),event:'gtm.js'}); var f=d.getElementsByTagName(s)[0],j=d.createElement(s),dl=l!='dataLayer'?'&l='+l:''; j.async=true;j.src='https://www.googletagmanager.com/gtm.js?id='+i+dl; f.parentNode.insertBefore(j,f); -})(window,document,'script','dataLayer','GTM-PSRKC4QZ')` +})(window,document,'script','dataLayer','GTM-PSRKC4QZ')`) export const metadata: Metadata = { title: 'Devup UI', @@ -122,12 +128,11 @@ export default function RootLayout({ {needsStaticExportRscTransport && ( - )} - start) { + parts.push({ + highlighted: false, + start, + text: text.slice(start, matchStart), + }) + } + + const matchEnd = matchStart + match[0].length + parts.push({ + highlighted: true, + start: matchStart, + text: text.slice(matchStart, matchEnd), + }) + start = matchEnd + } + + if (start < text.length || parts.length === 0) { + parts.push({ highlighted: false, start, text: text.slice(start) }) + } + + return parts +} + export function SearchContent() { const query = useQueryParam('query') - const [data, setData] = useState< - { - title: string - text: string - url: string - }[] - >() + const [data, setData] = useState() useEffect(() => { - if (query) { - fetch('/search.json') - .then((response) => response.json()) - .then( - ( - data: { - title: string - text: string - url: string - }[], - ) => { - setData( - data.filter( - (item) => - item.title.toLowerCase().includes(query.toLowerCase()) || - item.text.toLowerCase().includes(query.toLowerCase()), - ), - ) - }, + if (!query) return + + const controller = new AbortController() + const normalizedQuery = query.toLowerCase() + + void fetch('/search.json', { signal: controller.signal }) + .then((response) => { + if (!response.ok) { + throw new Error(`Search index request failed with ${response.status}`) + } + return response.json() as Promise + }) + .then((results) => { + setData( + results.filter( + (item) => + item.title.toLowerCase().includes(normalizedQuery) || + item.text.toLowerCase().includes(normalizedQuery), + ), ) - } + }) + .catch(() => { + if (!controller.signal.aborted) setData([]) + }) + + return () => controller.abort() }, [query]) - const reg = useMemo(() => new RegExp(`(${query})`, 'gi'), [query]) if (!query) return const inner = data ? ( <> @@ -59,20 +95,22 @@ export function SearchContent() { > {item.title} - {item.text - .substring(0, 100) - .split(reg) - .map((part, idx) => - part.toLowerCase() === query.toLowerCase() ? ( - - {part} + {getHighlightedParts(item.text.substring(0, 100), query).map( + (part) => + part.highlighted ? ( + + {part.text} ) : ( - - {part} + + {part.text} ), - )} + )} ... diff --git a/apps/landing/src/components/mdx/components/CustomCode.tsx b/apps/landing/src/components/mdx/components/CustomCode.tsx index ef4a8ee25..d4c2badbb 100644 --- a/apps/landing/src/components/mdx/components/CustomCode.tsx +++ b/apps/landing/src/components/mdx/components/CustomCode.tsx @@ -1,12 +1,14 @@ import { Box, Text } from '@devup-ui/react' +import { splitCodeLines } from './split-code-lines' + export function CustomCode({ children }: { children: string }) { return ( - {children.split('
').map((line, index) => ( - - {index > 0 &&
} - {line} + {splitCodeLines(children).map((line) => ( + + {line.startsNewLine &&
} + {line.text}
))}
diff --git a/apps/landing/src/components/mdx/components/CustomCodeBlock.tsx b/apps/landing/src/components/mdx/components/CustomCodeBlock.tsx index 0fa1957d6..aafad20f8 100644 --- a/apps/landing/src/components/mdx/components/CustomCodeBlock.tsx +++ b/apps/landing/src/components/mdx/components/CustomCodeBlock.tsx @@ -1,5 +1,7 @@ import { Box, Text } from '@devup-ui/react' +import { splitCodeLines } from './split-code-lines' + export function CustomCodeBlock({ children }: { children: string }) { return ( - {children.split('
').map((line, index) => ( - - {index > 0 &&
} - {line} + {splitCodeLines(children).map((line) => ( + + {line.startsNewLine &&
} + {line.text}
))}
diff --git a/apps/landing/src/components/mdx/components/split-code-lines.ts b/apps/landing/src/components/mdx/components/split-code-lines.ts new file mode 100644 index 000000000..59e9128b4 --- /dev/null +++ b/apps/landing/src/components/mdx/components/split-code-lines.ts @@ -0,0 +1,16 @@ +const LINE_BREAK = '
' + +export function splitCodeLines(code: string) { + let offset = 0 + + return code.split(LINE_BREAK).map((text) => { + const line = { + key: offset, + startsNewLine: offset > 0, + text, + } + + offset += text.length + LINE_BREAK.length + return line + }) +} diff --git a/apps/next/next.config.mjs b/apps/next/next.config.mjs index 6efaf4c9d..69b5bb896 100644 --- a/apps/next/next.config.mjs +++ b/apps/next/next.config.mjs @@ -2,6 +2,7 @@ import { DevupUI } from '@devup-ui/next-plugin' const nextConfig = { + experimental: { useTypeScriptCli: true }, trailingSlash: true, /* config options here */ } diff --git a/apps/next/package.json b/apps/next/package.json index 8f2d249ad..b13c5cb6f 100644 --- a/apps/next/package.json +++ b/apps/next/package.json @@ -18,7 +18,7 @@ }, "devDependencies": { "@devup-ui/next-plugin": "workspace:^", - "typescript": "^7", + "typescript": "^7.0.2", "@types/node": "^26", "@types/react": "^19.2", "@types/react-dom": "^19.2" diff --git a/apps/rsbuild/package.json b/apps/rsbuild/package.json index 1b1f5a299..7e0e5255b 100644 --- a/apps/rsbuild/package.json +++ b/apps/rsbuild/package.json @@ -8,7 +8,7 @@ "dev": "rsbuild dev --open", "preview": "rsbuild preview", "start": "npx serve ./dist", - "lint": "tsc && eslint" + "lint": "bun ../../node_modules/@typescript/native/bin/tsc && eslint" }, "dependencies": { "react": "^19.2", @@ -16,7 +16,7 @@ "@devup-ui/react": "workspace:^" }, "devDependencies": { - "@rsbuild/core": "^2.1", + "@rsbuild/core": "^2.2", "@rsbuild/plugin-react": "^2.1", "@devup-ui/rsbuild-plugin": "workspace:^" } diff --git a/apps/vite-lib/package.json b/apps/vite-lib/package.json index 667781ef2..54aa7531c 100644 --- a/apps/vite-lib/package.json +++ b/apps/vite-lib/package.json @@ -9,7 +9,7 @@ }, "scripts": { "build": "vite build", - "lint": "tsc && eslint" + "lint": "bun ../../node_modules/@typescript/native/bin/tsc && eslint" }, "dependencies": { "react": "^19.2", @@ -18,9 +18,9 @@ "devDependencies": { "vite-plugin-dts": "^5.0", "@devup-ui/vite-plugin": "workspace:^", - "@vitejs/plugin-react": "^6.1.0", + "@vitejs/plugin-react": "^6.1.1", "vite": "^8.2", - "typescript": "^7", + "typescript": "^7.0.2", "@types/node": "^26", "@types/react": "^19" } diff --git a/apps/vite/package.json b/apps/vite/package.json index 2cb1b81e6..c8562e951 100644 --- a/apps/vite/package.json +++ b/apps/vite/package.json @@ -7,7 +7,7 @@ "dev": "vite dev", "build": "vite build", "start": "npx serve ./dist", - "lint": "tsc && eslint" + "lint": "bun ../../node_modules/@typescript/native/bin/tsc && eslint" }, "dependencies": { "react": "^19.2", @@ -19,7 +19,7 @@ "@devup-ui/vite-plugin": "workspace:^", "vite": "^8.2", "@vitejs/plugin-react": "^6.1", - "typescript": "^7", + "typescript": "^7.0.2", "@types/node": "^26", "@types/react": "^19", "@types/react-dom": "^19" diff --git a/benchmark.js b/benchmark.js index abe9a0f67..0f266988c 100644 --- a/benchmark.js +++ b/benchmark.js @@ -1,97 +1,139 @@ -import { existsSync, readdirSync, rmSync, statSync } from 'node:fs' -import { join } from 'node:path' - -import { execSync } from 'child_process' - -function clearBuildFile() { - const dirs = readdirSync('./benchmark') - for (const dir of dirs) { - const base = join('./benchmark', dir) - if (!statSync(base).isDirectory()) continue - for (const output of ['.next', 'dist', 'df']) { - const target = join(base, output) - if (existsSync(target)) rmSync(target, { recursive: true, force: true }) - } - } -} - -function checkDirSize(path, filter) { - let totalSize = 0 - - function calculateSize(directory) { - const entries = readdirSync(directory) - for (const entry of entries) { - const entryPath = join(directory, entry) - if (statSync(entryPath).isDirectory()) { - calculateSize(entryPath) // 재귀적으로 하위 폴더 크기 계산 - } else if (!filter || filter(entryPath)) { - const stats = statSync(entryPath) - totalSize += stats.size // 파일 크기 합산 - } - } - } - - calculateSize(path) - return totalSize -} - -// Sum only the size of emitted CSS files. Build-size totals are dominated by -// JS/assets and hide CSS-only differences (e.g. single-importer collapse). -function checkCssSize(path) { - return checkDirSize(path, (p) => p.endsWith('.css')) -} - -clearBuildFile() - -function benchmark(target) { - // Support both short names ('tailwind' -> next-tailwind) and full names ('vinext-devup-ui') - const hasDir = existsSync(join('./benchmark', target, 'package.json')) - const dir = hasDir ? target : 'next-' + target - - performance.mark(target + '-start') - console.profile(target) - execSync('bun run --filter ' + dir + '-benchmark build', { - stdio: 'inherit', - }) - console.profileEnd(target) - performance.mark(target + '-end') - performance.measure(target, target + '-start', target + '-end') - - const benchmarkDir = join('./benchmark', dir) - // Resolve the real build-output dir. Next.js emits to `.next`; Vite emits to - // `dist`. vinext (Next-on-Vite) emits its real artifacts to `dist` but ALSO - // leaves a tiny vestigial `.next` stub (~988 B, no CSS) - so checking `.next` - // first measured the empty stub and reported "988 bytes (css 0 bytes)" even - // though dist held ~1.28 MB incl. the extracted CSS. Prefer `dist` when it - // exists; fall back to `.next` for pure Next.js apps (which never emit dist). - const distDir = join(benchmarkDir, 'dist') - const outputDir = existsSync(distDir) ? distDir : join(benchmarkDir, '.next') - const duration = ( - performance.getEntriesByName(target)[0].duration / 1000 - ).toFixed(2) - return `${target} ${duration}s ${checkDirSize(outputDir).toLocaleString()} bytes (css ${checkCssSize(outputDir).toLocaleString()} bytes)` -} - -let result = [] - -result.push(benchmark('tailwind')) -result.push(benchmark('stylex')) -result.push(benchmark('stylex-turbo')) -result.push(benchmark('stylex-turbo-devup-ui')) -result.push(benchmark('vanilla-extract')) -result.push(benchmark('kuma-ui')) -result.push(benchmark('panda-css')) -result.push(benchmark('chakra-ui')) -result.push(benchmark('mui')) -result.push(benchmark('devup-ui')) -result.push(benchmark('devup-ui-single')) -result.push(benchmark('tailwind-turbo')) -result.push(benchmark('devup-ui-single-turbo')) -result.push(benchmark('devup-ui-turbo')) -result.push(benchmark('vanilla-extract-devup-ui')) -result.push(benchmark('tailwind-turbo-devup-ui')) -result.push(benchmark('vinext-devup-ui')) -// Multi-component app exercising single-importer collapse (atom dedup). -result.push(benchmark('devup-ui-collapse')) - -console.info(result.join('\n')) +import { existsSync, readdirSync, rmSync, statSync } from 'node:fs' +import { join } from 'node:path' + +import { execSync } from 'child_process' + +function clearBuildFile(dir) { + const base = join('./benchmark', dir) + for (const output of ['.next', 'dist', 'df', 'tsconfig.tsbuildinfo']) { + const target = join(base, output) + if (existsSync(target)) rmSync(target, { recursive: true, force: true }) + } +} + +function checkDirSize(path, filter) { + let totalSize = 0 + + function calculateSize(directory) { + const entries = readdirSync(directory) + for (const entry of entries) { + const entryPath = join(directory, entry) + if (statSync(entryPath).isDirectory()) { + calculateSize(entryPath) // 재귀적으로 하위 폴더 크기 계산 + } else if (!filter || filter(entryPath)) { + const stats = statSync(entryPath) + totalSize += stats.size // 파일 크기 합산 + } + } + } + + calculateSize(path) + return totalSize +} + +// Sum only the size of emitted CSS files. Build-size totals are dominated by +// JS/assets and hide CSS-only differences (e.g. single-importer collapse). +function checkCssSize(path) { + return checkDirSize(path, (p) => p.endsWith('.css')) +} + +let benchmarkRun = 0 + +function benchmark(target) { + // Support both short names ('tailwind' -> next-tailwind) and full names ('vinext-devup-ui') + const hasDir = existsSync(join('./benchmark', target, 'package.json')) + const dir = hasDir ? target : 'next-' + target + const run = `${target}-${benchmarkRun++}` + + clearBuildFile(dir) + performance.mark(run + '-start') + console.profile(run) + execSync('bun run --filter ' + dir + '-benchmark build', { + stdio: 'inherit', + }) + console.profileEnd(run) + performance.mark(run + '-end') + performance.measure(run, run + '-start', run + '-end') + + const benchmarkDir = join('./benchmark', dir) + // Resolve the real build-output dir. Next.js emits to `.next`; Vite emits to + // `dist`. vinext (Next-on-Vite) emits its real artifacts to `dist` but ALSO + // leaves a tiny vestigial `.next` stub (~988 B, no CSS) - so checking `.next` + // first measured the empty stub and reported "988 bytes (css 0 bytes)" even + // though dist held ~1.28 MB incl. the extracted CSS. Prefer `dist` when it + // exists; fall back to `.next` for pure Next.js apps (which never emit dist). + const distDir = join(benchmarkDir, 'dist') + const outputDir = existsSync(distDir) ? distDir : join(benchmarkDir, '.next') + const duration = performance.getEntriesByName(run)[0].duration / 1000 + return { + duration, + result: `${target} ${duration.toFixed(2)}s ${checkDirSize(outputDir).toLocaleString()} bytes (css ${checkCssSize(outputDir).toLocaleString()} bytes)`, + } +} + +let result = [] +const turboSamples = new Map([ + ['tailwind-turbo', []], + ['devup-ui-single-turbo', []], + ['vanilla-extract-devup-ui', []], +]) + +function record(target) { + const sample = benchmark(target) + result.push(sample.result) +} + +record('tailwind') +record('stylex') +record('stylex-turbo') +record('stylex-turbo-devup-ui') +record('vanilla-extract') +record('kuma-ui') +record('panda-css') +record('chakra-ui') +record('mui') +record('devup-ui') +record('devup-ui-single') +record('tailwind-turbo') +record('devup-ui-single-turbo') +record('devup-ui-turbo') +record('vanilla-extract-devup-ui') +record('tailwind-turbo-devup-ui') +record('vinext-devup-ui') +// Multi-component app exercising single-importer collapse (atom dedup). +record('devup-ui-collapse') + +// A single fixed-order result on a shared CI runner is too noisy for direct +// comparisons. Run six cold samples in a repeated Latin-square order so each +// target occupies each position twice, then report their medians. The vanilla +// target contains a static `.css.ts` module; the single target uses Devup APIs. +const turboTargets = [ + 'tailwind-turbo', + 'devup-ui-single-turbo', + 'vanilla-extract-devup-ui', +] +for (let sample = 0; sample < 6; sample++) { + const offset = sample % turboTargets.length + const order = [ + ...turboTargets.slice(offset), + ...turboTargets.slice(0, offset), + ] + for (const target of order) { + turboSamples.get(target).push(benchmark(target).duration) + } +} + +function median(samples) { + const sorted = samples.toSorted((a, b) => a - b) + const middle = sorted.length / 2 + return (sorted[middle - 1] + sorted[middle]) / 2 +} + +for (const target of turboTargets) { + const samples = turboSamples.get(target) + result.push( + `${target} median ${median(samples).toFixed(2)}s (${samples.length} cold samples: ${samples.map((sample) => sample.toFixed(2) + 's').join(', ')})`, + ) +} + +console.info(result.join('\n')) diff --git a/benchmark/next-chakra-ui/next.config.mjs b/benchmark/next-chakra-ui/next.config.mjs index 7339eefba..6a64402c5 100644 --- a/benchmark/next-chakra-ui/next.config.mjs +++ b/benchmark/next-chakra-ui/next.config.mjs @@ -1,5 +1,6 @@ export default { experimental: { optimizePackageImports: ['@chakra-ui/react'], + useTypeScriptCli: true, }, } diff --git a/benchmark/next-chakra-ui/package.json b/benchmark/next-chakra-ui/package.json index 02fc3eb3b..bcdd34965 100644 --- a/benchmark/next-chakra-ui/package.json +++ b/benchmark/next-chakra-ui/package.json @@ -5,12 +5,12 @@ "private": true, "scripts": { "dev": "next dev", - "build": "next build --experimental-debug-memory-usage --webpack", + "build": "next build --webpack", "start": "next start", "lint": "next lint" }, "dependencies": { - "@chakra-ui/react": "^3.36", + "@chakra-ui/react": "^3.37", "@emotion/react": "^11.14", "next": "^16.3", "next-themes": "^0.4", @@ -22,6 +22,6 @@ "@types/node": "^26", "@types/react": "^19", "@types/react-dom": "^19", - "typescript": "^7" + "typescript": "^7.0.2" } } diff --git a/benchmark/next-chakra-ui/src/components/ui/color-mode.tsx b/benchmark/next-chakra-ui/src/components/ui/color-mode.tsx index 098680642..f2be15a55 100644 --- a/benchmark/next-chakra-ui/src/components/ui/color-mode.tsx +++ b/benchmark/next-chakra-ui/src/components/ui/color-mode.tsx @@ -4,7 +4,7 @@ import type { IconButtonProps } from '@chakra-ui/react' import { ClientOnly, IconButton, Skeleton } from '@chakra-ui/react' import type { ThemeProviderProps } from 'next-themes' import { ThemeProvider, useTheme } from 'next-themes' -import * as React from 'react' +import type { Ref } from 'react' import { LuMoon, LuSun } from 'react-icons/lu' export type ColorModeProviderProps = ThemeProviderProps @@ -32,12 +32,11 @@ export function ColorModeIcon() { return colorMode === 'light' ? : } -type ColorModeButtonProps = Omit +type ColorModeButtonProps = Omit & { + ref?: Ref +} -export const ColorModeButton = React.forwardRef< - HTMLButtonElement, - ColorModeButtonProps ->(function ColorModeButton(props, ref) { +export function ColorModeButton({ ref, ...props }: ColorModeButtonProps) { const { toggleColorMode } = useColorMode() return ( }> @@ -59,4 +58,4 @@ export const ColorModeButton = React.forwardRef< ) -}) +} diff --git a/benchmark/next-devup-ui-collapse/next.config.ts b/benchmark/next-devup-ui-collapse/next.config.ts index 0cf3a9e06..5af9af04e 100644 --- a/benchmark/next-devup-ui-collapse/next.config.ts +++ b/benchmark/next-devup-ui-collapse/next.config.ts @@ -1,5 +1,5 @@ import { DevupUI } from '@devup-ui/next-plugin' -const nextConfig = {/* config options here */} +const nextConfig = { experimental: { useTypeScriptCli: true } } export default DevupUI(nextConfig, {}) diff --git a/benchmark/next-devup-ui-collapse/package.json b/benchmark/next-devup-ui-collapse/package.json index 4e1a9def5..c15179cd5 100644 --- a/benchmark/next-devup-ui-collapse/package.json +++ b/benchmark/next-devup-ui-collapse/package.json @@ -5,7 +5,7 @@ "private": true, "scripts": { "dev": "next dev", - "build": "next build --experimental-debug-memory-usage", + "build": "next build", "start": "next start", "lint": "eslint" }, @@ -17,7 +17,7 @@ }, "devDependencies": { "@devup-ui/next-plugin": "workspace:^", - "typescript": "^7", + "typescript": "^7.0.2", "@types/node": "^26", "@types/react": "^19", "@types/react-dom": "^19" diff --git a/benchmark/next-devup-ui-single-turbo/next.config.mjs b/benchmark/next-devup-ui-single-turbo/next.config.mjs new file mode 100644 index 000000000..8b2b3bf05 --- /dev/null +++ b/benchmark/next-devup-ui-single-turbo/next.config.mjs @@ -0,0 +1,8 @@ +// @ts-check + +import { DevupUI } from '@devup-ui/next-plugin' + +/** @satisfies {import('next').NextConfig} */ +const nextConfig = { experimental: { useTypeScriptCli: true } } + +export default DevupUI(nextConfig, { singleCss: true }) diff --git a/benchmark/next-devup-ui-single-turbo/next.config.ts b/benchmark/next-devup-ui-single-turbo/next.config.ts deleted file mode 100644 index c8460f9d7..000000000 --- a/benchmark/next-devup-ui-single-turbo/next.config.ts +++ /dev/null @@ -1,5 +0,0 @@ -import { DevupUI } from '@devup-ui/next-plugin' - -const nextConfig = {/* config options here */} - -export default DevupUI(nextConfig, { singleCss: true }) diff --git a/benchmark/next-devup-ui-single-turbo/package.json b/benchmark/next-devup-ui-single-turbo/package.json index de2da4643..d88d06545 100644 --- a/benchmark/next-devup-ui-single-turbo/package.json +++ b/benchmark/next-devup-ui-single-turbo/package.json @@ -5,7 +5,7 @@ "private": true, "scripts": { "dev": "next dev", - "build": "next build --experimental-debug-memory-usage", + "build": "next build", "start": "next start", "lint": "eslint" }, @@ -17,7 +17,7 @@ }, "devDependencies": { "@devup-ui/next-plugin": "workspace:^", - "typescript": "^7", + "typescript": "^7.0.2", "@types/node": "^26", "@types/react": "^19", "@types/react-dom": "^19" diff --git a/benchmark/next-devup-ui-single/next.config.ts b/benchmark/next-devup-ui-single/next.config.ts index c8460f9d7..978420890 100644 --- a/benchmark/next-devup-ui-single/next.config.ts +++ b/benchmark/next-devup-ui-single/next.config.ts @@ -1,5 +1,5 @@ import { DevupUI } from '@devup-ui/next-plugin' -const nextConfig = {/* config options here */} +const nextConfig = { experimental: { useTypeScriptCli: true } } export default DevupUI(nextConfig, { singleCss: true }) diff --git a/benchmark/next-devup-ui-single/package.json b/benchmark/next-devup-ui-single/package.json index 5b19bc77e..3edc67717 100644 --- a/benchmark/next-devup-ui-single/package.json +++ b/benchmark/next-devup-ui-single/package.json @@ -5,7 +5,7 @@ "private": true, "scripts": { "dev": "next dev", - "build": "next build --experimental-debug-memory-usage --webpack", + "build": "next build --webpack", "start": "next start", "lint": "eslint" }, @@ -17,7 +17,7 @@ }, "devDependencies": { "@devup-ui/next-plugin": "workspace:^", - "typescript": "^7", + "typescript": "^7.0.2", "@types/node": "^26", "@types/react": "^19", "@types/react-dom": "^19" diff --git a/benchmark/next-devup-ui-turbo/next.config.ts b/benchmark/next-devup-ui-turbo/next.config.ts index 0cf3a9e06..5af9af04e 100644 --- a/benchmark/next-devup-ui-turbo/next.config.ts +++ b/benchmark/next-devup-ui-turbo/next.config.ts @@ -1,5 +1,5 @@ import { DevupUI } from '@devup-ui/next-plugin' -const nextConfig = {/* config options here */} +const nextConfig = { experimental: { useTypeScriptCli: true } } export default DevupUI(nextConfig, {}) diff --git a/benchmark/next-devup-ui-turbo/package.json b/benchmark/next-devup-ui-turbo/package.json index 1dbaeeffe..f8b39d37c 100644 --- a/benchmark/next-devup-ui-turbo/package.json +++ b/benchmark/next-devup-ui-turbo/package.json @@ -5,7 +5,7 @@ "private": true, "scripts": { "dev": "next dev", - "build": "next build --experimental-debug-memory-usage", + "build": "next build", "start": "next start", "lint": "eslint" }, @@ -17,7 +17,7 @@ }, "devDependencies": { "@devup-ui/next-plugin": "workspace:^", - "typescript": "^7", + "typescript": "^7.0.2", "@types/node": "^26", "@types/react": "^19", "@types/react-dom": "^19" diff --git a/benchmark/next-devup-ui/next.config.ts b/benchmark/next-devup-ui/next.config.ts index 0cf3a9e06..5af9af04e 100644 --- a/benchmark/next-devup-ui/next.config.ts +++ b/benchmark/next-devup-ui/next.config.ts @@ -1,5 +1,5 @@ import { DevupUI } from '@devup-ui/next-plugin' -const nextConfig = {/* config options here */} +const nextConfig = { experimental: { useTypeScriptCli: true } } export default DevupUI(nextConfig, {}) diff --git a/benchmark/next-devup-ui/package.json b/benchmark/next-devup-ui/package.json index 676a1adb6..e2aa48098 100644 --- a/benchmark/next-devup-ui/package.json +++ b/benchmark/next-devup-ui/package.json @@ -5,7 +5,7 @@ "private": true, "scripts": { "dev": "next dev", - "build": "next build --experimental-debug-memory-usage --webpack", + "build": "next build --webpack", "start": "next start", "lint": "eslint" }, @@ -17,7 +17,7 @@ }, "devDependencies": { "@devup-ui/next-plugin": "workspace:^", - "typescript": "^7", + "typescript": "^7.0.2", "@types/node": "^26", "@types/react": "^19", "@types/react-dom": "^19" diff --git a/benchmark/next-kuma-ui/next.config.mjs b/benchmark/next-kuma-ui/next.config.mjs index 8edc5a2bf..74c4ae056 100644 --- a/benchmark/next-kuma-ui/next.config.mjs +++ b/benchmark/next-kuma-ui/next.config.mjs @@ -1,5 +1,5 @@ import { withKumaUI } from '@kuma-ui/next-plugin' -const nextConfig = {/* config options here */} +const nextConfig = { experimental: { useTypeScriptCli: true } } export default withKumaUI(nextConfig) diff --git a/benchmark/next-kuma-ui/package.json b/benchmark/next-kuma-ui/package.json index 25fa09c78..a1a33d60d 100644 --- a/benchmark/next-kuma-ui/package.json +++ b/benchmark/next-kuma-ui/package.json @@ -5,7 +5,7 @@ "private": true, "scripts": { "dev": "next dev", - "build": "next build --experimental-debug-memory-usage --webpack", + "build": "next build --webpack", "start": "next start", "lint": "next lint" }, @@ -17,7 +17,7 @@ }, "devDependencies": { "@kuma-ui/next-plugin": "^1.4", - "typescript": "^7", + "typescript": "^7.0.2", "@types/node": "^26", "@types/react": "^19", "@types/react-dom": "^19" diff --git a/benchmark/next-mui/next.config.mjs b/benchmark/next-mui/next.config.mjs index b1c6ea436..7e934a7bb 100644 --- a/benchmark/next-mui/next.config.mjs +++ b/benchmark/next-mui/next.config.mjs @@ -1 +1 @@ -export default {} +export default { experimental: { useTypeScriptCli: true } } diff --git a/benchmark/next-mui/package.json b/benchmark/next-mui/package.json index 60324edc6..4773002d5 100644 --- a/benchmark/next-mui/package.json +++ b/benchmark/next-mui/package.json @@ -5,14 +5,14 @@ "private": true, "scripts": { "dev": "next dev", - "build": "next build --experimental-debug-memory-usage --webpack", + "build": "next build --webpack", "start": "next start", "lint": "next lint" }, "dependencies": { "@emotion/react": "^11.14", "@emotion/styled": "^11.14", - "@mui/material": "9.3", + "@mui/material": "9.4", "next": "^16.3", "react": "^19.2", "react-dom": "^19.2", @@ -22,6 +22,6 @@ "@types/node": "^26", "@types/react": "^19", "@types/react-dom": "^19", - "typescript": "^7" + "typescript": "^7.0.2" } } diff --git a/benchmark/next-panda-css/next.config.mjs b/benchmark/next-panda-css/next.config.mjs index b76173717..b0427162a 100644 --- a/benchmark/next-panda-css/next.config.mjs +++ b/benchmark/next-panda-css/next.config.mjs @@ -1,3 +1,3 @@ -const nextConfig = {/* config options here */} +const nextConfig = { experimental: { useTypeScriptCli: true } } export default nextConfig diff --git a/benchmark/next-panda-css/package.json b/benchmark/next-panda-css/package.json index a3f39c989..bfae670c6 100644 --- a/benchmark/next-panda-css/package.json +++ b/benchmark/next-panda-css/package.json @@ -6,7 +6,7 @@ "scripts": { "prepare": "panda codegen", "dev": "next dev", - "build": "next build --experimental-debug-memory-usage --webpack", + "build": "next build --webpack", "start": "next start", "lint": "next lint" }, @@ -17,7 +17,7 @@ }, "devDependencies": { "@pandacss/dev": "^1.12", - "typescript": "^7", + "typescript": "^7.0.2", "@types/node": "^26", "@types/react": "^19", "@types/react-dom": "^19" diff --git a/benchmark/next-stylex-turbo-devup-ui/app/page.tsx b/benchmark/next-stylex-turbo-devup-ui/app/page.tsx index c590de33c..aa0c81b01 100644 --- a/benchmark/next-stylex-turbo-devup-ui/app/page.tsx +++ b/benchmark/next-stylex-turbo-devup-ui/app/page.tsx @@ -46,7 +46,7 @@ globalCss({ }) export default function HomePage() { - const [_, setColor] = useState('yellow') + const [color, setColor] = useState('yellow') const [enabled, setEnabled] = useState(false) return ( @@ -54,7 +54,7 @@ export default function HomePage() { Track & field champions: - +
hello
hello
diff --git a/benchmark/next-stylex-turbo-devup-ui/next.config.mjs b/benchmark/next-stylex-turbo-devup-ui/next.config.mjs index ca6aae5d6..bbd839d60 100644 --- a/benchmark/next-stylex-turbo-devup-ui/next.config.mjs +++ b/benchmark/next-stylex-turbo-devup-ui/next.config.mjs @@ -1,3 +1,6 @@ import { DevupUI } from '@devup-ui/next-plugin' -export default DevupUI({}, { singleCss: true }) +export default DevupUI( + { experimental: { useTypeScriptCli: true } }, + { singleCss: true }, +) diff --git a/benchmark/next-stylex-turbo-devup-ui/package.json b/benchmark/next-stylex-turbo-devup-ui/package.json index 398b2e55b..63cb3ec8d 100644 --- a/benchmark/next-stylex-turbo-devup-ui/package.json +++ b/benchmark/next-stylex-turbo-devup-ui/package.json @@ -7,7 +7,7 @@ "predev": "rimraf .next df", "prebuild": "rimraf .next df", "dev": "next dev", - "build": "next build --experimental-debug-memory-usage", + "build": "next build", "start": "next start" }, "dependencies": { @@ -19,10 +19,10 @@ }, "devDependencies": { "@devup-ui/next-plugin": "workspace:^", - "@types/node": "^26.2", + "@types/node": "^26.4", "@types/react": "^19.2", "@types/react-dom": "^19.2", "rimraf": "^6.1", - "typescript": "^7.0" + "typescript": "^7.0.2" } } diff --git a/benchmark/next-stylex-turbo/app/page.tsx b/benchmark/next-stylex-turbo/app/page.tsx index 5cfba2de6..74abf5eaa 100644 --- a/benchmark/next-stylex-turbo/app/page.tsx +++ b/benchmark/next-stylex-turbo/app/page.tsx @@ -37,13 +37,13 @@ const styles = stylex.create({ }) export default function HomePage() { - const [_, setColor] = useState('yellow') + const [color, setColor] = useState('yellow') const [enabled, setEnabled] = useState(false) return (

Track & field champions:

-
+
hello
hello
diff --git a/benchmark/next-stylex-turbo/next.config.js b/benchmark/next-stylex-turbo/next.config.js index 5a877d2db..80a1a5fa5 100644 --- a/benchmark/next-stylex-turbo/next.config.js +++ b/benchmark/next-stylex-turbo/next.config.js @@ -1,2 +1,2 @@ /** @type {import('next').NextConfig} */ -module.exports = {} +module.exports = { experimental: { useTypeScriptCli: true } } diff --git a/benchmark/next-stylex-turbo/package.json b/benchmark/next-stylex-turbo/package.json index 1dd2cc0c8..ee59962ca 100644 --- a/benchmark/next-stylex-turbo/package.json +++ b/benchmark/next-stylex-turbo/package.json @@ -6,7 +6,7 @@ "predev": "rimraf .next", "prebuild": "rimraf .next", "dev": "next dev", - "build": "next build --experimental-debug-memory-usage", + "build": "next build", "start": "next start" }, "dependencies": { @@ -18,11 +18,11 @@ "devDependencies": { "@stylexjs/babel-plugin": "0.19.0", "@stylexjs/postcss-plugin": "0.19.0", - "@types/node": "^26.2", + "@types/node": "^26.4", "@types/react": "^19.2", "@types/react-dom": "^19.2", "postcss": "^8.5", "rimraf": "^6.1", - "typescript": "^7.0" + "typescript": "^7.0.2" } } diff --git a/benchmark/next-stylex/app/page.tsx b/benchmark/next-stylex/app/page.tsx index 461b4bf74..06004c32b 100644 --- a/benchmark/next-stylex/app/page.tsx +++ b/benchmark/next-stylex/app/page.tsx @@ -38,7 +38,7 @@ const styles = stylex.create({ }) export default function HomePage() { - const [_, setColor] = useState('yellow') + const [color, setColor] = useState('yellow') const [enabled, setEnabled] = useState(false) return ( @@ -50,7 +50,7 @@ export default function HomePage() { > Track & field champions:

-
+
hello
hello
diff --git a/benchmark/next-stylex/next.config.js b/benchmark/next-stylex/next.config.js index ddeab360f..bcc8a4b4c 100644 --- a/benchmark/next-stylex/next.config.js +++ b/benchmark/next-stylex/next.config.js @@ -2,6 +2,7 @@ const stylexPlugin = require('@stylexjs/nextjs-plugin') const nextConfig = { + experimental: { useTypeScriptCli: true }, // Configure `pageExtensions` to include MDX files pageExtensions: ['js', 'jsx', 'mdx', 'ts', 'tsx'], transpilePackages: ['@stylexjs/open-props'], diff --git a/benchmark/next-stylex/package.json b/benchmark/next-stylex/package.json index 2a2ca50bb..944a2a35d 100644 --- a/benchmark/next-stylex/package.json +++ b/benchmark/next-stylex/package.json @@ -6,7 +6,7 @@ "predev": "rimraf .next", "prebuild": "rimraf .next", "dev": "next dev", - "build": "next build --experimental-debug-memory-usage --webpack", + "build": "next build --webpack", "start": "next start", "lint": "next lint" }, @@ -25,7 +25,7 @@ "@babel/plugin-syntax-typescript": "^8.0", "@stylexjs/babel-plugin": "^0.19", "@stylexjs/nextjs-plugin": "^0.11", - "@types/node": "26.2", + "@types/node": "26.4", "@types/react": "19.2", "@types/react-dom": "19.2", "@types/react-test-renderer": "^19.1", @@ -33,6 +33,6 @@ "react-test-renderer": "^19.2", "rimraf": "^6.1", "ts_dependency_graph": "^2.1", - "typescript": "7.0" + "typescript": "^7.0.2" } } diff --git a/benchmark/next-tailwind-turbo-devup-ui/next.config.mjs b/benchmark/next-tailwind-turbo-devup-ui/next.config.mjs index 00a680c82..e0668cb13 100644 --- a/benchmark/next-tailwind-turbo-devup-ui/next.config.mjs +++ b/benchmark/next-tailwind-turbo-devup-ui/next.config.mjs @@ -1,3 +1,3 @@ import { DevupUI } from '@devup-ui/next-plugin' -export default DevupUI({}) +export default DevupUI({ experimental: { useTypeScriptCli: true } }) diff --git a/benchmark/next-tailwind-turbo-devup-ui/package.json b/benchmark/next-tailwind-turbo-devup-ui/package.json index ac60a615c..c07d12056 100644 --- a/benchmark/next-tailwind-turbo-devup-ui/package.json +++ b/benchmark/next-tailwind-turbo-devup-ui/package.json @@ -5,7 +5,7 @@ "private": true, "scripts": { "dev": "next dev", - "build": "next build --experimental-debug-memory-usage", + "build": "next build", "start": "next start", "lint": "next lint" }, @@ -22,7 +22,7 @@ "@types/node": "^26", "@types/react": "^19", "@types/react-dom": "^19", - "typescript": "^7", + "typescript": "^7.0.2", "tailwindcss": "^4.3", "@devup-ui/next-plugin": "workspace:^" } diff --git a/benchmark/next-tailwind-turbo/next.config.mjs b/benchmark/next-tailwind-turbo/next.config.mjs index b1c6ea436..7e934a7bb 100644 --- a/benchmark/next-tailwind-turbo/next.config.mjs +++ b/benchmark/next-tailwind-turbo/next.config.mjs @@ -1 +1 @@ -export default {} +export default { experimental: { useTypeScriptCli: true } } diff --git a/benchmark/next-tailwind-turbo/package.json b/benchmark/next-tailwind-turbo/package.json index 4dfa67367..eb5013c67 100644 --- a/benchmark/next-tailwind-turbo/package.json +++ b/benchmark/next-tailwind-turbo/package.json @@ -5,7 +5,7 @@ "private": true, "scripts": { "dev": "next dev", - "build": "next build --experimental-debug-memory-usage", + "build": "next build", "start": "next start", "lint": "next lint" }, @@ -21,7 +21,7 @@ "@types/node": "^26", "@types/react": "^19", "@types/react-dom": "^19", - "typescript": "^7", + "typescript": "^7.0.2", "tailwindcss": "^4.3" } } diff --git a/benchmark/next-tailwind/next.config.mjs b/benchmark/next-tailwind/next.config.mjs index b1c6ea436..7e934a7bb 100644 --- a/benchmark/next-tailwind/next.config.mjs +++ b/benchmark/next-tailwind/next.config.mjs @@ -1 +1 @@ -export default {} +export default { experimental: { useTypeScriptCli: true } } diff --git a/benchmark/next-tailwind/package.json b/benchmark/next-tailwind/package.json index 24d7589c3..6be29f23c 100644 --- a/benchmark/next-tailwind/package.json +++ b/benchmark/next-tailwind/package.json @@ -5,7 +5,7 @@ "private": true, "scripts": { "dev": "next dev", - "build": "next build --experimental-debug-memory-usage --webpack", + "build": "next build --webpack", "start": "next start", "lint": "next lint" }, @@ -21,7 +21,7 @@ "@types/node": "^26", "@types/react": "^19", "@types/react-dom": "^19", - "typescript": "^7", + "typescript": "^7.0.2", "tailwindcss": "^4.3" } } diff --git a/benchmark/next-vanilla-extract-devup-ui/next.config.mjs b/benchmark/next-vanilla-extract-devup-ui/next.config.mjs index 00a680c82..e0668cb13 100644 --- a/benchmark/next-vanilla-extract-devup-ui/next.config.mjs +++ b/benchmark/next-vanilla-extract-devup-ui/next.config.mjs @@ -1,3 +1,3 @@ import { DevupUI } from '@devup-ui/next-plugin' -export default DevupUI({}) +export default DevupUI({ experimental: { useTypeScriptCli: true } }) diff --git a/benchmark/next-vanilla-extract-devup-ui/package.json b/benchmark/next-vanilla-extract-devup-ui/package.json index 99c7e3aff..eaab3df40 100644 --- a/benchmark/next-vanilla-extract-devup-ui/package.json +++ b/benchmark/next-vanilla-extract-devup-ui/package.json @@ -5,7 +5,7 @@ "private": true, "scripts": { "dev": "next dev", - "build": "next build --experimental-debug-memory-usage --webpack", + "build": "next build", "start": "next start", "lint": "next lint" }, @@ -20,7 +20,7 @@ "@types/node": "^26", "@types/react": "^19", "@types/react-dom": "^19", - "typescript": "^7", + "typescript": "^7.0.2", "@devup-ui/next-plugin": "workspace:^" } } diff --git a/benchmark/next-vanilla-extract-devup-ui/src/app/page.tsx b/benchmark/next-vanilla-extract-devup-ui/src/app/page.tsx index 7a3e17243..5cecdb545 100644 --- a/benchmark/next-vanilla-extract-devup-ui/src/app/page.tsx +++ b/benchmark/next-vanilla-extract-devup-ui/src/app/page.tsx @@ -12,7 +12,7 @@ import { } from './index.css' export default function HomePage() { - const [_, setColor] = useState('yellow') + const [color, setColor] = useState('yellow') const [enabled, setEnabled] = useState(false) return ( @@ -24,7 +24,7 @@ export default function HomePage() { > Track & field champions:

-
+
hello
hello
diff --git a/benchmark/next-vanilla-extract/next.config.mjs b/benchmark/next-vanilla-extract/next.config.mjs index a3fdb85e7..dcf3d1035 100644 --- a/benchmark/next-vanilla-extract/next.config.mjs +++ b/benchmark/next-vanilla-extract/next.config.mjs @@ -2,4 +2,4 @@ import { createVanillaExtractPlugin } from '@vanilla-extract/next-plugin' const withVanillaExtract = createVanillaExtractPlugin() -export default withVanillaExtract({}) +export default withVanillaExtract({ experimental: { useTypeScriptCli: true } }) diff --git a/benchmark/next-vanilla-extract/package.json b/benchmark/next-vanilla-extract/package.json index 497864c08..0b49c3dac 100644 --- a/benchmark/next-vanilla-extract/package.json +++ b/benchmark/next-vanilla-extract/package.json @@ -5,7 +5,7 @@ "private": true, "scripts": { "dev": "next dev", - "build": "next build --experimental-debug-memory-usage --webpack", + "build": "next build --webpack", "start": "next start", "lint": "next lint" }, @@ -20,7 +20,7 @@ "@types/node": "^26", "@types/react": "^19", "@types/react-dom": "^19", - "typescript": "^7", + "typescript": "^7.0.2", "@vanilla-extract/next-plugin": "^2.5" } } diff --git a/benchmark/next-vanilla-extract/src/app/page.tsx b/benchmark/next-vanilla-extract/src/app/page.tsx index 7a3e17243..5cecdb545 100644 --- a/benchmark/next-vanilla-extract/src/app/page.tsx +++ b/benchmark/next-vanilla-extract/src/app/page.tsx @@ -12,7 +12,7 @@ import { } from './index.css' export default function HomePage() { - const [_, setColor] = useState('yellow') + const [color, setColor] = useState('yellow') const [enabled, setEnabled] = useState(false) return ( @@ -24,7 +24,7 @@ export default function HomePage() { > Track & field champions:

-
+
hello
hello
diff --git a/benchmark/vinext-devup-ui/package.json b/benchmark/vinext-devup-ui/package.json index 9c9b8605e..e46828f38 100644 --- a/benchmark/vinext-devup-ui/package.json +++ b/benchmark/vinext-devup-ui/package.json @@ -21,7 +21,7 @@ "@types/react-dom": "^19", "@vitejs/plugin-rsc": "^0.5.34", "react-server-dom-webpack": "^19.2", - "typescript": "^7", + "typescript": "^7.0.2", "vite": "^8.2" } } diff --git a/bindings/devup-ui-wasm/Cargo.toml b/bindings/devup-ui-wasm/Cargo.toml index cd8419bcd..d43750ec8 100644 --- a/bindings/devup-ui-wasm/Cargo.toml +++ b/bindings/devup-ui-wasm/Cargo.toml @@ -14,12 +14,13 @@ categories = ["development-tools", "wasm", "web-programming"] crate-type = ["cdylib"] [features] -default = [] +default = ["vanilla-extract"] +vanilla-extract = ["extractor/vanilla-extract", "sheet/vanilla-extract"] [dependencies] wasm-bindgen = "0.2.127" -extractor = { path = "../../libs/extractor" } -sheet = { path = "../../libs/sheet" } +extractor = { path = "../../libs/extractor", default-features = false } +sheet = { path = "../../libs/sheet", default-features = false } css = { path = "../../libs/css" } rustc-hash = "2" @@ -33,11 +34,11 @@ js-sys = "0.3.104" serde_json = "1.0.151" serde-wasm-bindgen = "0.6.5" # Not used directly. Declared only to enable the `wasm_js` feature on the -# `getrandom` version that boa_engine pulls in (boa_engine -> rand 0.9 -> -# rand_core 0.9 -> getrandom 0.3), which `.cargo/config.toml`'s +# `getrandom` version that boa_engine pulls in (boa_engine -> rand 0.10 -> +# rand_core 0.10 -> getrandom 0.4), which `.cargo/config.toml`'s # `getrandom_backend="wasm_js"` cfg requires on wasm32 targets. # Keep this major version in sync with boa_engine's transitive getrandom. -getrandom = { version = "0.3", features = ["wasm_js"] } +getrandom = { version = "0.4", features = ["wasm_js"] } [dev-dependencies] wasm-bindgen-test = "0.3.77" diff --git a/bindings/devup-ui-wasm/package.json b/bindings/devup-ui-wasm/package.json index 1643e8803..c6a17d446 100644 --- a/bindings/devup-ui-wasm/package.json +++ b/bindings/devup-ui-wasm/package.json @@ -19,7 +19,7 @@ ], "version": "1.0.78", "scripts": { - "build": "wasm-pack build --target nodejs --out-dir ./pkg --out-name index && node script.js", + "build": "wasm-pack build --target nodejs --out-dir ./pkg --out-name index && wasm-pack build --target nodejs --out-dir ./pkg/lite --out-name index --no-default-features && node script.js", "test": "wasm-pack test --node" }, "publishConfig": { @@ -33,7 +33,12 @@ "pkg/index.js", "pkg/package.json", "pkg/index_bg.wasm", - "pkg/index_bg.wasm.d.ts" + "pkg/index_bg.wasm.d.ts", + "pkg/lite/index.d.ts", + "pkg/lite/index.js", + "pkg/lite/package.json", + "pkg/lite/index_bg.wasm", + "pkg/lite/index_bg.wasm.d.ts" ], "type": "module", "exports": { @@ -41,6 +46,11 @@ "types": "./pkg/index.d.ts", "import": "./pkg/index.js", "require": "./pkg/index.js" + }, + "./lite": { + "types": "./pkg/lite/index.d.ts", + "import": "./pkg/lite/index.js", + "require": "./pkg/lite/index.js" } }, "types": "./pkg/index.d.ts" diff --git a/bindings/devup-ui-wasm/script.js b/bindings/devup-ui-wasm/script.js index 27b3139cc..9fafac1be 100644 --- a/bindings/devup-ui-wasm/script.js +++ b/bindings/devup-ui-wasm/script.js @@ -2,3 +2,4 @@ import { writeFileSync } from 'node:fs' // support mjs config writeFileSync('pkg/package.json', JSON.stringify({}), 'utf8') +writeFileSync('pkg/lite/package.json', JSON.stringify({}), 'utf8') diff --git a/bindings/devup-ui-wasm/src/lib.rs b/bindings/devup-ui-wasm/src/lib.rs index b039fad10..6e7a0b735 100644 --- a/bindings/devup-ui-wasm/src/lib.rs +++ b/bindings/devup-ui-wasm/src/lib.rs @@ -3,7 +3,7 @@ use css::file_map::{ canonical, is_global, set_canonical_map, set_file_map, with_canonical_map, with_file_map, }; use extractor::extract_style::extract_style_value::ExtractStyleValue; -use extractor::{ExtractOption, ImportAlias, extract, has_devup_ui}; +use extractor::{ExtractOption, ImportAlias, extract, extract_without_source_map, has_devup_ui}; use rustc_hash::FxHashSet; use sheet::StyleSheet; use std::collections::{BTreeMap, HashMap}; @@ -14,6 +14,12 @@ use wasm_bindgen::prelude::*; static GLOBAL_STYLE_SHEET: LazyLock> = LazyLock::new(|| Mutex::new(StyleSheet::default())); +#[derive(Clone, Copy)] +enum SourceMapMode { + Generate, + Skip, +} + fn with_style_sheet(f: F) -> R where F: FnOnce(&StyleSheet) -> R, @@ -321,17 +327,68 @@ pub fn code_extract_internal( import_main_css_in_css: bool, import_aliases: HashMap, ) -> Result { - match extract( + code_extract_internal_impl( filename, code, - ExtractOption { - package: package.to_string(), - css_dir, - single_css, - import_main_css: import_main_css_in_code, - import_aliases, - }, - ) { + package, + css_dir, + single_css, + import_main_css_in_code, + import_main_css_in_css, + import_aliases, + SourceMapMode::Generate, + ) +} + +#[allow(clippy::too_many_arguments)] +pub fn code_extract_without_source_map_internal( + filename: &str, + code: &str, + package: &str, + css_dir: String, + single_css: bool, + import_main_css_in_code: bool, + import_main_css_in_css: bool, + import_aliases: HashMap, +) -> Result { + code_extract_internal_impl( + filename, + code, + package, + css_dir, + single_css, + import_main_css_in_code, + import_main_css_in_css, + import_aliases, + SourceMapMode::Skip, + ) +} + +#[allow(clippy::too_many_arguments)] +fn code_extract_internal_impl( + filename: &str, + code: &str, + package: &str, + css_dir: String, + single_css: bool, + import_main_css_in_code: bool, + import_main_css_in_css: bool, + import_aliases: HashMap, + source_map: SourceMapMode, +) -> Result { + let option = ExtractOption { + package: package.to_string(), + css_dir, + single_css, + import_main_css: import_main_css_in_code, + import_aliases, + }; + let extracted = match source_map { + SourceMapMode::Generate => extract(filename, code, option), + SourceMapMode::Skip => extract_without_source_map(filename, code, option), + }; + + match extracted { Ok(output) => Ok(Output::new( output.code, output.styles, @@ -345,6 +402,24 @@ pub fn code_extract_internal( } } +#[cfg(not(tarpaulin_include))] +fn import_aliases_from_js( + import_aliases: JsValue, +) -> Result, JsValue> { + let aliases: HashMap> = + serde_wasm_bindgen::from_value(import_aliases).map_err(js_error)?; + Ok(aliases + .into_iter() + .map(|(key, value)| { + let alias = match value { + Some(name) => ImportAlias::DefaultToNamed(name), + None => ImportAlias::NamedToNamed, + }; + (key, alias) + }) + .collect()) +} + #[cfg(not(tarpaulin_include))] #[wasm_bindgen(js_name = "codeExtract")] #[allow(clippy::too_many_arguments)] @@ -358,23 +433,6 @@ pub fn code_extract( import_main_css_in_css: bool, import_aliases: JsValue, ) -> Result { - // Deserialize import_aliases from JsValue - // Format: { "package": "namedExport" } or { "package": null } for named exports - let aliases: HashMap> = - serde_wasm_bindgen::from_value(import_aliases).map_err(js_error)?; - - // Convert to ImportAlias enum - let import_aliases: HashMap = aliases - .into_iter() - .map(|(k, v)| { - let alias = match v { - Some(name) => ImportAlias::DefaultToNamed(name), - None => ImportAlias::NamedToNamed, - }; - (k, alias) - }) - .collect(); - code_extract_internal( filename, code, @@ -383,7 +441,33 @@ pub fn code_extract( single_css, import_main_css_in_code, import_main_css_in_css, - import_aliases, + import_aliases_from_js(import_aliases)?, + ) + .map_err(js_error) +} + +#[cfg(not(tarpaulin_include))] +#[wasm_bindgen(js_name = "codeExtractWithoutSourceMap")] +#[allow(clippy::too_many_arguments)] +pub fn code_extract_without_source_map( + filename: &str, + code: &str, + package: &str, + css_dir: String, + single_css: bool, + import_main_css_in_code: bool, + import_main_css_in_css: bool, + import_aliases: JsValue, +) -> Result { + code_extract_without_source_map_internal( + filename, + code, + package, + css_dir, + single_css, + import_main_css_in_code, + import_main_css_in_css, + import_aliases_from_js(import_aliases)?, ) .map_err(js_error) } @@ -1710,6 +1794,31 @@ mod tests { assert!(result.is_ok()); let output = result.unwrap(); assert!(!output.code().is_empty()); + assert!(output.map().is_some()); + } + + #[test] + #[serial] + fn test_code_extract_without_source_map_internal() { + *GLOBAL_STYLE_SHEET.lock().unwrap() = StyleSheet::default(); + css::class_map::reset_class_map(); + + let result = code_extract_without_source_map_internal( + "test.tsx", + r#"import {Box} from '@devup-ui/react' +"#, + "@devup-ui/react", + "@devup-ui/react".to_string(), + false, + false, + false, + HashMap::new(), + ); + + assert!(result.is_ok()); + let output = result.unwrap(); + assert!(!output.code().is_empty()); + assert!(output.map().is_none()); } #[test] diff --git a/bun.lock b/bun.lock index 8659c8127..97d2bdd00 100644 --- a/bun.lock +++ b/bun.lock @@ -1,5 +1,5 @@ { - "lockfileVersion": 1, + "lockfileVersion": 2, "configVersion": 1, "workspaces": { "": { @@ -8,16 +8,18 @@ "@devup-ui/eslint-plugin": "workspace:^", "@playwright/test": "^1.62.1", "@types/bun": "latest", - "@types/node": "^26.2", + "@types/node": "^26.4", + "@typescript/native": "npm:typescript@^7.0.2", + "@typescript/typescript6": "^6.0.2", "bun-test-env-dom": "^1.0.3", - "eslint": "^10.8", + "eslint": "^10.9", "eslint-plugin-devup": "^2.1", "eslint-plugin-eslint-plugin": "^7.6", "eslint-plugin-jsonc": "^3.4", "eslint-plugin-mdx": "^3.8", "globals": "^17.11", "husky": "^9.1", - "typescript": "^6.0", + "typescript": "^7.0.2", }, }, "apps/landing": { @@ -54,7 +56,7 @@ "@vitejs/plugin-react": "^6.1", "@vitejs/plugin-rsc": "^0.5.34", "babel-plugin-react-compiler": "^1.0", - "typescript": "^7", + "typescript": "^7.0.2", "vite": "^8.2", }, }, @@ -73,7 +75,7 @@ "@types/node": "^26", "@types/react": "^19.2", "@types/react-dom": "^19.2", - "typescript": "^7", + "typescript": "^7.0.2", }, }, "apps/rsbuild": { @@ -86,7 +88,7 @@ }, "devDependencies": { "@devup-ui/rsbuild-plugin": "workspace:^", - "@rsbuild/core": "^2.1", + "@rsbuild/core": "^2.2", "@rsbuild/plugin-react": "^2.1", }, }, @@ -105,7 +107,7 @@ "@types/react": "^19", "@types/react-dom": "^19", "@vitejs/plugin-react": "^6.1", - "typescript": "^7", + "typescript": "^7.0.2", "vite": "^8.2", }, }, @@ -120,8 +122,8 @@ "@devup-ui/vite-plugin": "workspace:^", "@types/node": "^26", "@types/react": "^19", - "@vitejs/plugin-react": "^6.1.0", - "typescript": "^7", + "@vitejs/plugin-react": "^6.1.1", + "typescript": "^7.0.2", "vite": "^8.2", "vite-plugin-dts": "^5.0", }, @@ -130,7 +132,7 @@ "name": "next-chakra-ui-benchmark", "version": "0.1.0", "dependencies": { - "@chakra-ui/react": "^3.36", + "@chakra-ui/react": "^3.37", "@emotion/react": "^11.14", "next": "^16.3", "next-themes": "^0.4", @@ -142,7 +144,7 @@ "@types/node": "^26", "@types/react": "^19", "@types/react-dom": "^19", - "typescript": "^7", + "typescript": "^7.0.2", }, }, "benchmark/next-devup-ui": { @@ -159,7 +161,7 @@ "@types/node": "^26", "@types/react": "^19", "@types/react-dom": "^19", - "typescript": "^7", + "typescript": "^7.0.2", }, }, "benchmark/next-devup-ui-collapse": { @@ -176,7 +178,7 @@ "@types/node": "^26", "@types/react": "^19", "@types/react-dom": "^19", - "typescript": "^7", + "typescript": "^7.0.2", }, }, "benchmark/next-devup-ui-single": { @@ -193,7 +195,7 @@ "@types/node": "^26", "@types/react": "^19", "@types/react-dom": "^19", - "typescript": "^7", + "typescript": "^7.0.2", }, }, "benchmark/next-devup-ui-single-turbo": { @@ -210,7 +212,7 @@ "@types/node": "^26", "@types/react": "^19", "@types/react-dom": "^19", - "typescript": "^7", + "typescript": "^7.0.2", }, }, "benchmark/next-devup-ui-turbo": { @@ -227,7 +229,7 @@ "@types/node": "^26", "@types/react": "^19", "@types/react-dom": "^19", - "typescript": "^7", + "typescript": "^7.0.2", }, }, "benchmark/next-kuma-ui": { @@ -244,7 +246,7 @@ "@types/node": "^26", "@types/react": "^19", "@types/react-dom": "^19", - "typescript": "^7", + "typescript": "^7.0.2", }, }, "benchmark/next-mui": { @@ -253,7 +255,7 @@ "dependencies": { "@emotion/react": "^11.14", "@emotion/styled": "^11.14", - "@mui/material": "9.3", + "@mui/material": "9.4", "next": "^16.3", "react": "^19.2", "react-dom": "^19.2", @@ -263,7 +265,7 @@ "@types/node": "^26", "@types/react": "^19", "@types/react-dom": "^19", - "typescript": "^7", + "typescript": "^7.0.2", }, }, "benchmark/next-panda-css": { @@ -279,7 +281,7 @@ "@types/node": "^26", "@types/react": "^19", "@types/react-dom": "^19", - "typescript": "^7", + "typescript": "^7.0.2", }, }, "benchmark/next-stylex": { @@ -300,7 +302,7 @@ "@babel/plugin-syntax-typescript": "^8.0", "@stylexjs/babel-plugin": "^0.19", "@stylexjs/nextjs-plugin": "^0.11", - "@types/node": "26.2", + "@types/node": "26.4", "@types/react": "19.2", "@types/react-dom": "19.2", "@types/react-test-renderer": "^19.1", @@ -308,7 +310,7 @@ "react-test-renderer": "^19.2", "rimraf": "^6.1", "ts_dependency_graph": "^2.1", - "typescript": "7.0", + "typescript": "^7.0.2", }, }, "benchmark/next-stylex-turbo": { @@ -323,12 +325,12 @@ "devDependencies": { "@stylexjs/babel-plugin": "0.19.0", "@stylexjs/postcss-plugin": "0.19.0", - "@types/node": "^26.2", + "@types/node": "^26.4", "@types/react": "^19.2", "@types/react-dom": "^19.2", "postcss": "^8.5", "rimraf": "^6.1", - "typescript": "^7.0", + "typescript": "^7.0.2", }, }, "benchmark/next-stylex-turbo-devup-ui": { @@ -343,11 +345,11 @@ }, "devDependencies": { "@devup-ui/next-plugin": "workspace:^", - "@types/node": "^26.2", + "@types/node": "^26.4", "@types/react": "^19.2", "@types/react-dom": "^19.2", "rimraf": "^6.1", - "typescript": "^7.0", + "typescript": "^7.0.2", }, }, "benchmark/next-tailwind": { @@ -366,7 +368,7 @@ "@types/react-dom": "^19", "postcss": "^8.5", "tailwindcss": "^4.3", - "typescript": "^7", + "typescript": "^7.0.2", }, }, "benchmark/next-tailwind-turbo": { @@ -385,7 +387,7 @@ "@types/react-dom": "^19", "postcss": "^8.5", "tailwindcss": "^4.3", - "typescript": "^7", + "typescript": "^7.0.2", }, }, "benchmark/next-tailwind-turbo-devup-ui": { @@ -406,7 +408,7 @@ "@types/react-dom": "^19", "postcss": "^8.5", "tailwindcss": "^4.3", - "typescript": "^7", + "typescript": "^7.0.2", }, }, "benchmark/next-vanilla-extract": { @@ -424,7 +426,7 @@ "@types/react": "^19", "@types/react-dom": "^19", "@vanilla-extract/next-plugin": "^2.5", - "typescript": "^7", + "typescript": "^7.0.2", }, }, "benchmark/next-vanilla-extract-devup-ui": { @@ -442,7 +444,7 @@ "@types/node": "^26", "@types/react": "^19", "@types/react-dom": "^19", - "typescript": "^7", + "typescript": "^7.0.2", }, }, "benchmark/vinext-devup-ui": { @@ -461,24 +463,24 @@ "@types/react-dom": "^19", "@vitejs/plugin-rsc": "^0.5.34", "react-server-dom-webpack": "^19.2", - "typescript": "^7", + "typescript": "^7.0.2", "vite": "^8.2", }, }, "bindings/devup-ui-wasm": { "name": "@devup-ui/wasm", - "version": "1.0.77", + "version": "1.0.78", }, "packages/bun-plugin": { "name": "@devup-ui/bun-plugin", - "version": "1.0.14", + "version": "1.0.15", "dependencies": { "@devup-ui/plugin-utils": "workspace:^", "@devup-ui/wasm": "workspace:^", }, "devDependencies": { "@types/bun": "latest", - "typescript": "^7.0", + "typescript": "^7.0.2", }, "peerDependencies": { "@devup-ui/wasm": "*", @@ -486,7 +488,7 @@ }, "packages/components": { "name": "@devup-ui/components", - "version": "0.1.52", + "version": "0.1.53", "dependencies": { "@devup-ui/react": "workspace:^", "clsx": "^2.1", @@ -502,7 +504,7 @@ "eslint-plugin-storybook": "^10.5", "rollup-plugin-preserve-directives": "^0.4", "storybook": "^10.5", - "typescript": "^7.0", + "typescript": "^7.0.2", "vite": "^8.2", "vite-plugin-dts": "^5.0", }, @@ -513,14 +515,15 @@ }, "packages/eslint-plugin": { "name": "@devup-ui/eslint-plugin", - "version": "1.0.17", + "version": "1.0.18", "dependencies": { - "@typescript-eslint/utils": "^8.67", - "typescript-eslint": "^8.67", + "@typescript-eslint/utils": "^8.68", + "typescript-eslint": "^8.68", }, "devDependencies": { - "@typescript-eslint/rule-tester": "^8.67", - "typescript": "^6.0", + "@typescript-eslint/rule-tester": "^8.68", + "@typescript/native": "npm:typescript@^7.0.2", + "typescript": "npm:@typescript/typescript6@^6.0.2", }, "peerDependencies": { "@typescript-eslint/utils": "*", @@ -529,7 +532,7 @@ }, "packages/next-plugin": { "name": "@devup-ui/next-plugin", - "version": "1.0.82", + "version": "1.0.83", "dependencies": { "@devup-ui/plugin-utils": "workspace:^", "@devup-ui/wasm": "workspace:^", @@ -537,7 +540,7 @@ }, "devDependencies": { "@types/webpack": "^5.28", - "typescript": "^7.0", + "typescript": "^7.0.2", }, "peerDependencies": { "@devup-ui/wasm": "*", @@ -547,24 +550,24 @@ }, "packages/plugin-utils": { "name": "@devup-ui/plugin-utils", - "version": "1.0.12", + "version": "1.0.13", "devDependencies": { - "typescript": "^7.0", + "typescript": "^7.0.2", }, }, "packages/react": { "name": "@devup-ui/react", - "version": "1.0.39", + "version": "1.0.40", "dependencies": { "csstype-extra": "latest", "react": "^19.2", }, "devDependencies": { - "@types/node": "^26.2", + "@types/node": "^26.4", "@types/react": "^19.2", "@typescript/typescript6": "^6.0", "rollup-plugin-preserve-directives": "^0.4", - "typescript": "^7.0", + "typescript": "^7.0.2", "vite": "^8.2", "vite-plugin-dts": "^5.0", }, @@ -575,12 +578,12 @@ }, "packages/reset-css": { "name": "@devup-ui/reset-css", - "version": "1.0.26", + "version": "1.0.27", "dependencies": { "@devup-ui/react": "workspace:^", }, "devDependencies": { - "typescript": "^7.0", + "typescript": "^7.0.2", }, "peerDependencies": { "@devup-ui/react": "workspace:^", @@ -588,14 +591,14 @@ }, "packages/rsbuild-plugin": { "name": "@devup-ui/rsbuild-plugin", - "version": "1.0.60", + "version": "1.0.61", "dependencies": { "@devup-ui/plugin-utils": "workspace:^", "@devup-ui/wasm": "workspace:^", }, "devDependencies": { - "@rsbuild/core": "^2.1", - "typescript": "^7.0", + "@rsbuild/core": "^2.2", + "typescript": "^7.0.2", }, "peerDependencies": { "@devup-ui/wasm": "*", @@ -604,13 +607,13 @@ }, "packages/vite-plugin": { "name": "@devup-ui/vite-plugin", - "version": "1.0.66", + "version": "1.0.67", "dependencies": { "@devup-ui/plugin-utils": "workspace:^", "@devup-ui/wasm": "workspace:^", }, "devDependencies": { - "typescript": "^7.0", + "typescript": "^7.0.2", }, "peerDependencies": { "@devup-ui/wasm": "*", @@ -619,14 +622,14 @@ }, "packages/webpack-plugin": { "name": "@devup-ui/webpack-plugin", - "version": "1.0.65", + "version": "1.0.66", "dependencies": { "@devup-ui/plugin-utils": "workspace:^", "@devup-ui/wasm": "workspace:^", }, "devDependencies": { "@types/webpack": "^5.28", - "typescript": "^7.0", + "typescript": "^7.0.2", }, "peerDependencies": { "@devup-ui/wasm": "*", @@ -638,7 +641,7 @@ "@alloc/quick-lru": ["@alloc/quick-lru@5.2.0", "", {}, "sha512-UrcABB+4bUrFABwbluTIBErXwvbsU/V7TZWfmbgJfbkwiBuziS9gxdODUyuiecfdGQ85jglMW6juS3+z5TsKLw=="], - "@ark-ui/react": ["@ark-ui/react@5.37.2", "", { "dependencies": { "@internationalized/date": "3.12.2", "@zag-js/accordion": "1.41.2", "@zag-js/anatomy": "1.41.2", "@zag-js/angle-slider": "1.41.2", "@zag-js/async-list": "1.41.2", "@zag-js/auto-resize": "1.41.2", "@zag-js/avatar": "1.41.2", "@zag-js/carousel": "1.41.2", "@zag-js/cascade-select": "1.41.2", "@zag-js/checkbox": "1.41.2", "@zag-js/clipboard": "1.41.2", "@zag-js/collapsible": "1.41.2", "@zag-js/collection": "1.41.2", "@zag-js/color-picker": "1.41.2", "@zag-js/color-utils": "1.41.2", "@zag-js/combobox": "1.41.2", "@zag-js/core": "1.41.2", "@zag-js/date-input": "1.41.2", "@zag-js/date-picker": "1.41.2", "@zag-js/date-utils": "1.41.2", "@zag-js/dialog": "1.41.2", "@zag-js/dom-query": "1.41.2", "@zag-js/drawer": "1.41.2", "@zag-js/editable": "1.41.2", "@zag-js/file-upload": "1.41.2", "@zag-js/file-utils": "1.41.2", "@zag-js/floating-panel": "1.41.2", "@zag-js/focus-trap": "1.41.2", "@zag-js/focus-visible": "1.41.2", "@zag-js/highlight-word": "1.41.2", "@zag-js/hover-card": "1.41.2", "@zag-js/i18n-utils": "1.41.2", "@zag-js/image-cropper": "1.41.2", "@zag-js/json-tree-utils": "1.41.2", "@zag-js/listbox": "1.41.2", "@zag-js/marquee": "1.41.2", "@zag-js/menu": "1.41.2", "@zag-js/navigation-menu": "1.41.2", "@zag-js/number-input": "1.41.2", "@zag-js/pagination": "1.41.2", "@zag-js/password-input": "1.41.2", "@zag-js/pin-input": "1.41.2", "@zag-js/popover": "1.41.2", "@zag-js/presence": "1.41.2", "@zag-js/progress": "1.41.2", "@zag-js/qr-code": "1.41.2", "@zag-js/radio-group": "1.41.2", "@zag-js/rating-group": "1.41.2", "@zag-js/react": "1.41.2", "@zag-js/scroll-area": "1.41.2", "@zag-js/select": "1.41.2", "@zag-js/signature-pad": "1.41.2", "@zag-js/slider": "1.41.2", "@zag-js/splitter": "1.41.2", "@zag-js/steps": "1.41.2", "@zag-js/switch": "1.41.2", "@zag-js/tabs": "1.41.2", "@zag-js/tags-input": "1.41.2", "@zag-js/timer": "1.41.2", "@zag-js/toast": "1.41.2", "@zag-js/toggle": "1.41.2", "@zag-js/toggle-group": "1.41.2", "@zag-js/tooltip": "1.41.2", "@zag-js/tour": "1.41.2", "@zag-js/tree-view": "1.41.2", "@zag-js/types": "1.41.2", "@zag-js/utils": "1.41.2" }, "peerDependencies": { "react": ">=18.0.0", "react-dom": ">=18.0.0" } }, "sha512-Q0R2Ah50kUhup0Ljxg65zGJq5yBV52BLm1coRkjHHid40d1yclaDGfhPL48kcF/xtjAFlGLkL6SiENkGvfh+mw=="], + "@ark-ui/react": ["@ark-ui/react@5.39.0", "", { "dependencies": { "@internationalized/date": "3.12.3", "@zag-js/accordion": "1.43.3", "@zag-js/anatomy": "1.43.3", "@zag-js/angle-slider": "1.43.3", "@zag-js/async-list": "1.43.3", "@zag-js/auto-resize": "1.43.3", "@zag-js/avatar": "1.43.3", "@zag-js/carousel": "1.43.3", "@zag-js/cascade-select": "1.43.3", "@zag-js/checkbox": "1.43.3", "@zag-js/clipboard": "1.43.3", "@zag-js/collapsible": "1.43.3", "@zag-js/collection": "1.43.3", "@zag-js/color-picker": "1.43.3", "@zag-js/color-utils": "1.43.3", "@zag-js/combobox": "1.43.3", "@zag-js/core": "1.43.3", "@zag-js/date-input": "1.43.3", "@zag-js/date-picker": "1.43.3", "@zag-js/date-utils": "1.43.3", "@zag-js/dialog": "1.43.3", "@zag-js/dom-query": "1.43.3", "@zag-js/drawer": "1.43.3", "@zag-js/editable": "1.43.3", "@zag-js/file-upload": "1.43.3", "@zag-js/file-utils": "1.43.3", "@zag-js/floating-panel": "1.43.3", "@zag-js/focus-trap": "1.43.3", "@zag-js/focus-visible": "1.43.3", "@zag-js/highlight-word": "1.43.3", "@zag-js/hotkeys": "1.43.3", "@zag-js/hover-card": "1.43.3", "@zag-js/i18n-utils": "1.43.3", "@zag-js/image-cropper": "1.43.3", "@zag-js/json-tree-utils": "1.43.3", "@zag-js/listbox": "1.43.3", "@zag-js/marquee": "1.43.3", "@zag-js/menu": "1.43.3", "@zag-js/navigation-menu": "1.43.3", "@zag-js/number-input": "1.43.3", "@zag-js/pagination": "1.43.3", "@zag-js/password-input": "1.43.3", "@zag-js/pin-input": "1.43.3", "@zag-js/popover": "1.43.3", "@zag-js/presence": "1.43.3", "@zag-js/progress": "1.43.3", "@zag-js/qr-code": "1.43.3", "@zag-js/radio-group": "1.43.3", "@zag-js/rating-group": "1.43.3", "@zag-js/react": "1.43.3", "@zag-js/scroll-area": "1.43.3", "@zag-js/select": "1.43.3", "@zag-js/signature-pad": "1.43.3", "@zag-js/slider": "1.43.3", "@zag-js/splitter": "1.43.3", "@zag-js/steps": "1.43.3", "@zag-js/switch": "1.43.3", "@zag-js/tabs": "1.43.3", "@zag-js/tags-input": "1.43.3", "@zag-js/timer": "1.43.3", "@zag-js/toast": "1.43.3", "@zag-js/toc": "1.43.3", "@zag-js/toggle": "1.43.3", "@zag-js/toggle-group": "1.43.3", "@zag-js/tooltip": "1.43.3", "@zag-js/tour": "1.43.3", "@zag-js/tree-view": "1.43.3", "@zag-js/types": "1.43.3", "@zag-js/utils": "1.43.3" }, "peerDependencies": { "react": ">=18.0.0", "react-dom": ">=18.0.0" } }, "sha512-qKMyliIHgkp4TPrdr9xmkXeP9lmuEvhRJNPNah7Wnp54lspsZJY4b08rNM+NWtlnhxO1P8iChKRKcohSQgXL/g=="], "@babel/code-frame": ["@babel/code-frame@8.0.0", "", { "dependencies": { "@babel/helper-validator-identifier": "^8.0.0", "js-tokens": "^10.0.0" } }, "sha512-dYYg153EyN2Ekbqw2zAsbd6/JR+9N2SEoC7YV2GyyqMM7x9bLDTjBD6XBhSMLH0wtIVyJj03jWNriQhaN+eoCw=="], @@ -842,7 +845,7 @@ "@babel/types": ["@babel/types@7.29.8", "", { "dependencies": { "@babel/helper-string-parser": "^7.29.7", "@babel/helper-validator-identifier": "^7.29.7" } }, "sha512-Vj1jF3cPfxg7OAfoI7QnVKLoILlm2JF9pnVHrX8qx7AHMiYWT+NDAA7jChlNgRS4WTLc/fD1lXLmPixluj+3Gg=="], - "@chakra-ui/react": ["@chakra-ui/react@3.36.1", "", { "dependencies": { "@ark-ui/react": "5.37.2", "@emotion/is-prop-valid": "^1.4.0", "@emotion/serialize": "^1.3.3", "@emotion/use-insertion-effect-with-fallbacks": "^1.2.0", "@emotion/utils": "^1.4.2", "@pandacss/is-valid-prop": "^1.4.2", "csstype": "^3.2.3" }, "peerDependencies": { "@emotion/react": ">=11", "react": ">=18", "react-dom": ">=18" } }, "sha512-8uPVBdkw9CfwDQSGGmNqx8jLygUanV9virh2dwbj3x02Cu5bmw12ZCRdD/RZ+00+KrklJZlVnmG20y7PwLhyqg=="], + "@chakra-ui/react": ["@chakra-ui/react@3.37.0", "", { "dependencies": { "@ark-ui/react": "5.39.0", "@emotion/is-prop-valid": "^1.4.0", "@emotion/serialize": "^1.3.3", "@emotion/use-insertion-effect-with-fallbacks": "^1.2.0", "@emotion/utils": "^1.4.2", "@pandacss/is-valid-prop": "^1.4.2", "csstype": "^3.2.3" }, "peerDependencies": { "@emotion/react": ">=11", "react": ">=18", "react-dom": ">=18" } }, "sha512-TaFju5LTT7GEZ8brcyZOhM7fNN54tJ/rMaMFvUAD7UE8tsUJb/j3zCUYPjchkoVXD1vinXtN9S31cp2QcOTUPg=="], "@clack/core": ["@clack/core@1.4.2", "", { "dependencies": { "fast-wrap-ansi": "^0.2.0", "sisteransi": "^1.0.5" } }, "sha512-0Ty/1Gfm+Kb07sXcuESjyKfwEhSy4Ns1AgeEisHb/bDY5fWme0tTeTkU14T1Gmcs17YIjB/teiDe4uaCghbYqQ=="], @@ -894,13 +897,13 @@ "@emotion/memoize": ["@emotion/memoize@0.9.0", "", {}, "sha512-30FAj7/EoJ5mwVPOWhAyCX+FPfMDrVecJAM+Iw9NRoSl4BBAQeqj4cApHHUXOVvIPgLVDsCFoz/hGD+5QQD1GQ=="], - "@emotion/react": ["@emotion/react@11.14.0", "", { "dependencies": { "@babel/runtime": "^7.18.3", "@emotion/babel-plugin": "^11.13.5", "@emotion/cache": "^11.14.0", "@emotion/serialize": "^1.3.3", "@emotion/use-insertion-effect-with-fallbacks": "^1.2.0", "@emotion/utils": "^1.4.2", "@emotion/weak-memoize": "^0.4.0", "hoist-non-react-statics": "^3.3.1" }, "peerDependencies": { "react": ">=16.8.0" } }, "sha512-O000MLDBDdk/EohJPFUqvnp4qnHeYkVP5B0xEG0D/L7cOKP9kefu2DXn8dj74cQfsEzUqh+sr1RzFqiL1o+PpA=="], + "@emotion/react": ["@emotion/react@11.14.0", "", { "dependencies": { "@babel/runtime": "^7.18.3", "@emotion/babel-plugin": "^11.13.5", "@emotion/cache": "^11.14.0", "@emotion/serialize": "^1.3.3", "@emotion/use-insertion-effect-with-fallbacks": "^1.2.0", "@emotion/utils": "^1.4.2", "@emotion/weak-memoize": "^0.4.0", "hoist-non-react-statics": "^3.3.1" }, "peerDependencies": { "@types/react": "*", "react": ">=16.8.0" }, "optionalPeers": ["@types/react"] }, "sha512-O000MLDBDdk/EohJPFUqvnp4qnHeYkVP5B0xEG0D/L7cOKP9kefu2DXn8dj74cQfsEzUqh+sr1RzFqiL1o+PpA=="], "@emotion/serialize": ["@emotion/serialize@1.3.3", "", { "dependencies": { "@emotion/hash": "^0.9.2", "@emotion/memoize": "^0.9.0", "@emotion/unitless": "^0.10.0", "@emotion/utils": "^1.4.2", "csstype": "^3.0.2" } }, "sha512-EISGqt7sSNWHGI76hC7x1CksiXPahbxEOrC5RjmFRJTqLyEK9/9hZvBbiYn70dw4wuwMKiEMCUlR6ZXTSWQqxA=="], "@emotion/sheet": ["@emotion/sheet@1.4.0", "", {}, "sha512-fTBW9/8r2w3dXWYM4HCB1Rdp8NLibOw2+XELH5m5+AkWiL/KqYX6dc0kKYlaYyKjrQ6ds33MCdMPEwgs2z1rqg=="], - "@emotion/styled": ["@emotion/styled@11.14.1", "", { "dependencies": { "@babel/runtime": "^7.18.3", "@emotion/babel-plugin": "^11.13.5", "@emotion/is-prop-valid": "^1.3.0", "@emotion/serialize": "^1.3.3", "@emotion/use-insertion-effect-with-fallbacks": "^1.2.0", "@emotion/utils": "^1.4.2" }, "peerDependencies": { "@emotion/react": "^11.0.0-rc.0", "react": ">=16.8.0" } }, "sha512-qEEJt42DuToa3gurlH4Qqc1kVpNq8wO8cJtDzU46TjlzWjDlsVyevtYCRijVq3SrHsROS+gVQ8Fnea108GnKzw=="], + "@emotion/styled": ["@emotion/styled@11.14.1", "", { "dependencies": { "@babel/runtime": "^7.18.3", "@emotion/babel-plugin": "^11.13.5", "@emotion/is-prop-valid": "^1.3.0", "@emotion/serialize": "^1.3.3", "@emotion/use-insertion-effect-with-fallbacks": "^1.2.0", "@emotion/utils": "^1.4.2" }, "peerDependencies": { "@emotion/react": "^11.0.0-rc.0", "@types/react": "*", "react": ">=16.8.0" }, "optionalPeers": ["@types/react"] }, "sha512-qEEJt42DuToa3gurlH4Qqc1kVpNq8wO8cJtDzU46TjlzWjDlsVyevtYCRijVq3SrHsROS+gVQ8Fnea108GnKzw=="], "@emotion/unitless": ["@emotion/unitless@0.10.0", "", {}, "sha512-dFoMUuQA20zvtVTuxZww6OHoJYgrzfKM1t52mVySDJnMSEa08ruEvdYQbhvyu6soU+NeLVd3yKfTfT0NeV6qGg=="], @@ -998,7 +1001,7 @@ "@floating-ui/utils": ["@floating-ui/utils@0.2.12", "", {}, "sha512-HpCo8tmWzLVad5s2d19EhAz5zqrrQ6s69qd6moPMQvkOuSwDT1YgRfWSVuc4ennqrgv3OHppiOGMQ7oC13yIww=="], - "@happy-dom/global-registrator": ["@happy-dom/global-registrator@20.11.6", "", { "dependencies": { "@types/node": ">=20.0.0", "happy-dom": "^20.11.6" } }, "sha512-ZQ47qUTeNbGhHkCGExJ1oZhruoxKRaxO44RgFETl3T4c1rRxIBlAOnM3SAH4XHu7Ue2owJXP+jOx1vOuKuxcSg=="], + "@happy-dom/global-registrator": ["@happy-dom/global-registrator@20.11.15", "", { "dependencies": { "@types/node": ">=20.0.0", "happy-dom": "^20.11.15" } }, "sha512-pr1k24oG6T+tTnc+axwaexmuteylDIjAex/1bH2Tm2eaKUIXmg4sGKlCIAPUtBQOOaL2cXU1NbPxiu5V158VFA=="], "@humanfs/core": ["@humanfs/core@0.19.2", "", { "dependencies": { "@humanfs/types": "^0.15.0" } }, "sha512-UhXNm+CFMWcbChXywFwkmhqjs3PRCmcSa/hfBgLIb7oQ5HNb1wS0icWsGtSAUNgefHeI+eBrA8I1fxmbHsGdvA=="], @@ -1012,61 +1015,61 @@ "@img/colour": ["@img/colour@1.1.0", "", {}, "sha512-Td76q7j57o/tLVdgS746cYARfSyxk8iEfRxewL9h4OMzYhbW4TAcppl0mT4eyqXddh6L/jwoM75mo7ixa/pCeQ=="], - "@img/sharp-darwin-arm64": ["@img/sharp-darwin-arm64@0.35.3", "", { "optionalDependencies": { "@img/sharp-libvips-darwin-arm64": "1.3.2" }, "os": "darwin", "cpu": "arm64" }, "sha512-RMnFX7YQsMoh7lWfcM4NEHHymBX/rLuKNPVM84XE9ONPcaSCDgE7CHIHpSgPcO2xcRthgBy1HfNO319mwhIAkg=="], + "@img/sharp-darwin-arm64": ["@img/sharp-darwin-arm64@0.35.4", "", { "optionalDependencies": { "@img/sharp-libvips-darwin-arm64": "1.3.3" }, "os": "darwin", "cpu": "arm64" }, "sha512-Uhfl4V4lhP2nbUVF9+hyH1+luj86f1gUFeo8ALYxFoULoU+G87D43BfeMP8XHsk9boxAnCY/bf2EHwhA7MuGsA=="], - "@img/sharp-darwin-x64": ["@img/sharp-darwin-x64@0.35.3", "", { "optionalDependencies": { "@img/sharp-libvips-darwin-x64": "1.3.2" }, "os": "darwin", "cpu": "x64" }, "sha512-Xo+5uFBtLN0BKqieTxiFzFPQAUlBbbH5iBKyRX/z1JrbnYsHTfKJnUfL8+p2TPXr1pXqao4eeL4Rl144uDpK9w=="], + "@img/sharp-darwin-x64": ["@img/sharp-darwin-x64@0.35.4", "", { "optionalDependencies": { "@img/sharp-libvips-darwin-x64": "1.3.3" }, "os": "darwin", "cpu": "x64" }, "sha512-hWniXY3bG5qKpkKrAwPe4y+VTPmf086YQAnkxWh7uA1YrlRouWGa0M0Mxj3ZjnXFkv7/TD1bTy9lGUK26vRvWw=="], - "@img/sharp-freebsd-wasm32": ["@img/sharp-freebsd-wasm32@0.35.3", "", { "dependencies": { "@img/sharp-wasm32": "0.35.3" }, "os": "freebsd" }, "sha512-lUxcqWIj2wMQ9BrwNjngcr1gWUr5xgaGThBRqPPalIC2n67Cqj1uPh8NnA/ZhAg8hUbKl+kVHKwgUIwe6ZYPrg=="], + "@img/sharp-freebsd-wasm32": ["@img/sharp-freebsd-wasm32@0.35.4", "", { "dependencies": { "@img/sharp-wasm32": "0.35.4" }, "os": "freebsd" }, "sha512-lIsKw/BU+kjB4eZjxrYrZmwOJYi3Ajrv66iAlBmUPyKc3HpnloevB1g3wxGD9P/5BbQ1brBGl65VRRrCvQDEqA=="], - "@img/sharp-libvips-darwin-arm64": ["@img/sharp-libvips-darwin-arm64@1.3.2", "", { "os": "darwin", "cpu": "arm64" }, "sha512-9J6ypZFpQBj4YnePGoq/S38w6nz+vqg5WZLrLGY4YuSemdMq47GMLBPO42MzwdGwpg/agZ7xzZcFHa48xlywfg=="], + "@img/sharp-libvips-darwin-arm64": ["@img/sharp-libvips-darwin-arm64@1.3.3", "", { "os": "darwin", "cpu": "arm64" }, "sha512-suTBPTDGrI9WodccaDdwZItTSaBYASlBk1NSfElSHrUfzu3szG6lvIF58+WiFvnfzuK8ZBFS5zE00PxqxnRiPg=="], - "@img/sharp-libvips-darwin-x64": ["@img/sharp-libvips-darwin-x64@1.3.2", "", { "os": "darwin", "cpu": "x64" }, "sha512-m2pW1n6cns9VaubNwsZ+c3CRYjxNQWgJ5gPlnL1nbBcpkBvFm6SCFN5o0psFHI8w9n11NKhFkeEDns98tiqbEw=="], + "@img/sharp-libvips-darwin-x64": ["@img/sharp-libvips-darwin-x64@1.3.3", "", { "os": "darwin", "cpu": "x64" }, "sha512-FVJZ5mITMobmXIz/hPDTw0EintTW5H3WfrxwLqEqjiIihlu+hVRyGrFQ60xl0Lxn7Bt3zdpevPaQi0HEzqz9fw=="], - "@img/sharp-libvips-linux-arm": ["@img/sharp-libvips-linux-arm@1.3.2", "", { "os": "linux", "cpu": "arm" }, "sha512-1eMLzy92I4J6rmi4mAT8yC3HxOtniyGELlzGbNMLLeqe052ahFQ0h6LFq+lh5DsDIdYViIDst08abvSbcEdLXQ=="], + "@img/sharp-libvips-linux-arm": ["@img/sharp-libvips-linux-arm@1.3.3", "", { "os": "linux", "cpu": "arm" }, "sha512-3rbU4vqXXc3hY/OiXdl52xZvT0F1yEngWfvqudtPJg/KkyiaQw2DRsFrNzpmLvfavbwOq3qXn36GP8obHRULQA=="], - "@img/sharp-libvips-linux-arm64": ["@img/sharp-libvips-linux-arm64@1.3.2", "", { "os": "linux", "cpu": "arm64" }, "sha512-dqVSFynCox4C/J8kT16V7SIFAns0IjgLwkvYT7p8LQVmJ5OS5b6tI9IGflxTeuBS//zXeFIUbwt5dwxyZ17cnA=="], + "@img/sharp-libvips-linux-arm64": ["@img/sharp-libvips-linux-arm64@1.3.3", "", { "os": "linux", "cpu": "arm64" }, "sha512-0DaL0A6Xu6sQSQFwe4iVCrKWU2cCTItnRsYsCdxAMm9NF6twAA9BKnoqy4hqz4+azQ0JHuA26qiUKsf1XJ/v5A=="], - "@img/sharp-libvips-linux-ppc64": ["@img/sharp-libvips-linux-ppc64@1.3.2", "", { "os": "linux", "cpu": "ppc64" }, "sha512-3z0NHDxD6n5I9gc05U1eW1AyRm+Gznzq3naMrthPNqE6oYykcogW0l/jfpJdjYnuNl8R7yI9pNbE1XiUeyq0Aw=="], + "@img/sharp-libvips-linux-ppc64": ["@img/sharp-libvips-linux-ppc64@1.3.3", "", { "os": "linux", "cpu": "ppc64" }, "sha512-cdn1OvUBwsXhbC0zSzJnNzf5MZ/mTrobawDvNXBTxe8VtqKAm0sRuEY2Evzovb/w9JMk4TvRxqt1mekSuJz64w=="], - "@img/sharp-libvips-linux-riscv64": ["@img/sharp-libvips-linux-riscv64@1.3.2", "", { "os": "linux", "cpu": "none" }, "sha512-bsb4rI+NldGOsXuej2r8OdSS8+zXDVaCWxyWrcv6kneTOlgAHtZABRzBBCwdsPiD90J4myNJuHpg6kA20ImW/w=="], + "@img/sharp-libvips-linux-riscv64": ["@img/sharp-libvips-linux-riscv64@1.3.3", "", { "os": "linux", "cpu": "none" }, "sha512-HjPVx7yKz+0lqdhDlTw1tt90wamBoxhiXpvl1XZpJLiHH4RCJ5yDTqH+VlYPv2fwFs89JFw4c1IexYOcQUi4IQ=="], - "@img/sharp-libvips-linux-s390x": ["@img/sharp-libvips-linux-s390x@1.3.2", "", { "os": "linux", "cpu": "s390x" }, "sha512-/ABshyj8gCpyIrNXnHn4LorDJ0HHm1VhXPBlxZ8zAtfVPAaSafXPGn+sUSIRiwaSBy0mmFjSjiXI5mkcwdChKQ=="], + "@img/sharp-libvips-linux-s390x": ["@img/sharp-libvips-linux-s390x@1.3.3", "", { "os": "linux", "cpu": "s390x" }, "sha512-neWLh+3yCNThxnfy3c4BbVBeGgt9aftno+XbT56iK28RgeDs3UOFWviLWlUu0bArYVYJaFDK+RRohbicUNCm8Q=="], - "@img/sharp-libvips-linux-x64": ["@img/sharp-libvips-linux-x64@1.3.2", "", { "os": "linux", "cpu": "x64" }, "sha512-ITPEtgffGJ0S6G9dRyw/366tJQqFRcHWPHhC+Stpg3Z8AEMrDrTr2lhdz4f/Y/HMbRh//7Z5mBzEpVdi62Oc3w=="], + "@img/sharp-libvips-linux-x64": ["@img/sharp-libvips-linux-x64@1.3.3", "", { "os": "linux", "cpu": "x64" }, "sha512-4vKmvAst9nrowcqquKFAyZJUDolUaIp8uRiN0mWFguJ1IplC9/pitXtlnnlU4aa/eJw3J7i67V+pwUL+wZGdsA=="], - "@img/sharp-libvips-linuxmusl-arm64": ["@img/sharp-libvips-linuxmusl-arm64@1.3.2", "", { "os": "linux", "cpu": "arm64" }, "sha512-zE9EdiUzUmg5mDT5a1rk5fYJ6GWPloTwWBYDS14naqHsL+EaMpDj1AWnpLgh3u0YCORv2Tt50wrcrpYqkP97Kw=="], + "@img/sharp-libvips-linuxmusl-arm64": ["@img/sharp-libvips-linuxmusl-arm64@1.3.3", "", { "os": "linux", "cpu": "arm64" }, "sha512-Y9kQaLMuNoB0bPYOOdcZMaseNrFpPodIWWMrx+CZyydf2xn68j9WYc6sWWRrDwNkzCQjKYfc68L7jKjGlHMibw=="], - "@img/sharp-libvips-linuxmusl-x64": ["@img/sharp-libvips-linuxmusl-x64@1.3.2", "", { "os": "linux", "cpu": "x64" }, "sha512-m0lrLiUt+lBYnCFr8qV/65yMR4E/c7/wf78I5eKTdkEakFAlZ9QlzEM3QIhhAwVeUhLAHLcCq7a7Vszq/oFNZQ=="], + "@img/sharp-libvips-linuxmusl-x64": ["@img/sharp-libvips-linuxmusl-x64@1.3.3", "", { "os": "linux", "cpu": "x64" }, "sha512-fj8Mv0HHfD1Rr+4I68+3agJynxDWtBFgicTbSOb9Bke6pIwzGcJ+RX/yHjmiEGFMCavY/dxvem7MyNaJF+wDiw=="], - "@img/sharp-linux-arm": ["@img/sharp-linux-arm@0.35.3", "", { "optionalDependencies": { "@img/sharp-libvips-linux-arm": "1.3.2" }, "os": "linux", "cpu": "arm" }, "sha512-affVWCTLooy8TSxbDx2qkzuDeaWLNVBA+P//FNBirHsXpP2fuBhk5AuboYUnrDnzoXes8GFjpTx0SBFOCRg+FA=="], + "@img/sharp-linux-arm": ["@img/sharp-linux-arm@0.35.4", "", { "optionalDependencies": { "@img/sharp-libvips-linux-arm": "1.3.3" }, "os": "linux", "cpu": "arm" }, "sha512-7OAS8gI0EReKGVN2HssHlM6umJgxF5VI3xN0p9FA91p/YO+ou5hiNghLdZ5BEHztwaaK5+bLKRf8x/o2L2nk9A=="], - "@img/sharp-linux-arm64": ["@img/sharp-linux-arm64@0.35.3", "", { "optionalDependencies": { "@img/sharp-libvips-linux-arm64": "1.3.2" }, "os": "linux", "cpu": "arm64" }, "sha512-QgKDspHPnrU+GQ55XPhGwyhC8acLVOOSyAvo1oVfFmrIXLkDNmGWzAfDZ4xK8oSA1qBQrALcHX0G5UZni/SuFQ=="], + "@img/sharp-linux-arm64": ["@img/sharp-linux-arm64@0.35.4", "", { "optionalDependencies": { "@img/sharp-libvips-linux-arm64": "1.3.3" }, "os": "linux", "cpu": "arm64" }, "sha512-De4jpEnAU8Hd5oT0j1G3uL4ZvTuipVMn7YC6vPaJhy6/7EwEae0SVAoBrUMYQbkLGDm85taVWwuPc1a44LTzCQ=="], - "@img/sharp-linux-ppc64": ["@img/sharp-linux-ppc64@0.35.3", "", { "optionalDependencies": { "@img/sharp-libvips-linux-ppc64": "1.3.2" }, "os": "linux", "cpu": "ppc64" }, "sha512-sMd8rDxmpLOwv/7N44klFjOD5DUO7FLdjiXDI0hoxYaf7Ar262dQIEkosE98bps+5HPLtp/EvNqeqQtOycP/IA=="], + "@img/sharp-linux-ppc64": ["@img/sharp-linux-ppc64@0.35.4", "", { "optionalDependencies": { "@img/sharp-libvips-linux-ppc64": "1.3.3" }, "os": "linux", "cpu": "ppc64" }, "sha512-2oYZJeIl4kCcMGk4ouZVjnkCtFrpQFlNEtJ6GbxzhHQchwH0NH/qEb9ykmOl29dqwMq+JhFdZn+1ak2FKhI9fQ=="], - "@img/sharp-linux-riscv64": ["@img/sharp-linux-riscv64@0.35.3", "", { "optionalDependencies": { "@img/sharp-libvips-linux-riscv64": "1.3.2" }, "os": "linux", "cpu": "none" }, "sha512-0Eob78yjlYPfL5vMNWAW55l3R9Y6BQS/gOfe0ZcP9mEz9ohhKSt4im1hayiknXgf8AWrFqMvJcKIdmLmEe7yeQ=="], + "@img/sharp-linux-riscv64": ["@img/sharp-linux-riscv64@0.35.4", "", { "optionalDependencies": { "@img/sharp-libvips-linux-riscv64": "1.3.3" }, "os": "linux", "cpu": "none" }, "sha512-cPbNChoRURAWdebDIHSenxRpgEdy7JkPydSnUxRm9VvKD7m0/xVaR/8Fzlu81pk5nHEvHH87UZUA7cTtwnbJSA=="], - "@img/sharp-linux-s390x": ["@img/sharp-linux-s390x@0.35.3", "", { "optionalDependencies": { "@img/sharp-libvips-linux-s390x": "1.3.2" }, "os": "linux", "cpu": "s390x" }, "sha512-KgAxQ0DxpNOq1rG2t5cgTgShJFGSuU7XO45cqC+1NVOuZnP6tlgZRuSYOfNupGkHID0o3cJOsw4DVeJpMovcGw=="], + "@img/sharp-linux-s390x": ["@img/sharp-linux-s390x@0.35.4", "", { "optionalDependencies": { "@img/sharp-libvips-linux-s390x": "1.3.3" }, "os": "linux", "cpu": "s390x" }, "sha512-RY0JFY8Fd6RonCBtHz+DvadaPkXDSI1AUn6yWL9TipqkZ1vY8w8evqdgyDFnkm4/K1ve1TvZiaePP5oSd4+WVQ=="], - "@img/sharp-linux-x64": ["@img/sharp-linux-x64@0.35.3", "", { "optionalDependencies": { "@img/sharp-libvips-linux-x64": "1.3.2" }, "os": "linux", "cpu": "x64" }, "sha512-8pqvxubL2PGdhlPy6GLqzDYMUjyRmKAwKHYKixpdJYBUK7PJ0C029XdsnpFIdgRZG68fZiGdHVWcKPvtiPB4cA=="], + "@img/sharp-linux-x64": ["@img/sharp-linux-x64@0.35.4", "", { "optionalDependencies": { "@img/sharp-libvips-linux-x64": "1.3.3" }, "os": "linux", "cpu": "x64" }, "sha512-9qvvEAuk8k89TfWUoX2htWjbAMX8p+NxCppjpcg5k6xMsjhBQPTsoIh36h9Qde4WRuGpJeYnOjdosDn/cnv+OA=="], - "@img/sharp-linuxmusl-arm64": ["@img/sharp-linuxmusl-arm64@0.35.3", "", { "optionalDependencies": { "@img/sharp-libvips-linuxmusl-arm64": "1.3.2" }, "os": "linux", "cpu": "arm64" }, "sha512-Vz0iQjzzcSX3HCbfwFfCSG/9SCIqyO0mH2sXyiHaAYfBk0cRsCWXRyQYX0ovCK/PAQBbTzQ0dsPQHh5MAFL59w=="], + "@img/sharp-linuxmusl-arm64": ["@img/sharp-linuxmusl-arm64@0.35.4", "", { "optionalDependencies": { "@img/sharp-libvips-linuxmusl-arm64": "1.3.3" }, "os": "linux", "cpu": "arm64" }, "sha512-KB5jxpfWQTr0nc3xdHtWChdbifHrBGsd2SM62Eyxrl8afikm+f5qGBU75SJIZBT/S1MC8XyacdlXBMSWq6OURA=="], - "@img/sharp-linuxmusl-x64": ["@img/sharp-linuxmusl-x64@0.35.3", "", { "optionalDependencies": { "@img/sharp-libvips-linuxmusl-x64": "1.3.2" }, "os": "linux", "cpu": "x64" }, "sha512-6O1NPKcDVj9QEdg7Hx549EX8U0rp6yXQERqru6yRN7fGBn32UvIRJUlWnk+8xDCiG76hXVBbX82NZ/ZKr0euIg=="], + "@img/sharp-linuxmusl-x64": ["@img/sharp-linuxmusl-x64@0.35.4", "", { "optionalDependencies": { "@img/sharp-libvips-linuxmusl-x64": "1.3.3" }, "os": "linux", "cpu": "x64" }, "sha512-f+eZJZIQNEEd26RPSW+76chwOf1XtA2Y/O+5ocVyLliHkeih3e+jhLVBdNTd2rS3IbNXK8+ug93Vf5ZXtF5Lxg=="], - "@img/sharp-wasm32": ["@img/sharp-wasm32@0.35.3", "", { "dependencies": { "@emnapi/runtime": "^1.11.1" } }, "sha512-cZ0XkcYGpHZkqW6iCkqTcmUC0CD9DhD5d/qeZlZkfRBn6GnHniZXLUo5+9xw8Iv76YE6LQFN9YNBlKREcCG76w=="], + "@img/sharp-wasm32": ["@img/sharp-wasm32@0.35.4", "", { "dependencies": { "@emnapi/runtime": "^1.11.3" } }, "sha512-zQnl4Kwp7Q6NHsENtU2T/00Zi+w3AQNwz3+UaTyVBy2FpXrzXzGjndpK61onhZjRtRpQXxCTeqw19bVyXOh7jA=="], - "@img/sharp-webcontainers-wasm32": ["@img/sharp-webcontainers-wasm32@0.35.3", "", { "dependencies": { "@img/sharp-wasm32": "0.35.3" }, "cpu": "none" }, "sha512-2rnq7bX3NzeR2T4YWgz8qiG4h3TSdMe+vN1iQXpJleSJ3SM5zQ8Fy2SyyXAWlbxpEZ2Y+Z4u1BePgJEYbSy80Q=="], + "@img/sharp-webcontainers-wasm32": ["@img/sharp-webcontainers-wasm32@0.35.4", "", { "dependencies": { "@img/sharp-wasm32": "0.35.4" }, "cpu": "none" }, "sha512-ESfNkywmCfPNyaZjxooddJQiQ+l/nTpGEOGthxiLnIHXC/CmcBixnfwUleX9mCz9ovrUUvKMap/pm8RYbzfwaA=="], - "@img/sharp-win32-arm64": ["@img/sharp-win32-arm64@0.35.3", "", { "os": "win32", "cpu": "arm64" }, "sha512-4bPwFdMbeC4JQ8L8LOyWp6nsHcboP5fxkp6iPOXz2Vg49R42TuMs2whkJ5OAP4/Ul035qOzy0AecOF9VOscn4w=="], + "@img/sharp-win32-arm64": ["@img/sharp-win32-arm64@0.35.4", "", { "os": "win32", "cpu": "arm64" }, "sha512-iNdlBX9gLVvqe2I3uIJSIKTq6wckP/DYxZtcqxm09x5Gi24DnFBmPAWZmr60ZyYMG0xlzo6goG3670ar+RXvRw=="], - "@img/sharp-win32-ia32": ["@img/sharp-win32-ia32@0.35.3", "", { "os": "win32", "cpu": "ia32" }, "sha512-r53mXsBN6lFUDiST764SvgwUdHAqM4rPAiDzAmf4fLoB6X/rkfyTrLCg6+g17wJJiCmB3JYgHuUldCWUIRFSXw=="], + "@img/sharp-win32-ia32": ["@img/sharp-win32-ia32@0.35.4", "", { "os": "win32", "cpu": "ia32" }, "sha512-kqRsbaa5CS6KHlpxnN7WhE6vAAugXyZButpRdvDWetlv6Qv4N9WTcrWzF7tXfB9T7MsoadqdI8hmwLq6UlLvtw=="], - "@img/sharp-win32-x64": ["@img/sharp-win32-x64@0.35.3", "", { "os": "win32", "cpu": "x64" }, "sha512-D4y1vNeZrIIJCN+uHaWVtH86B+aCrdMYYjicy9pXHvbGZeGYLLSd3wdVuC37FxVXlU1ARsk84eKWfWMXGYEqvA=="], + "@img/sharp-win32-x64": ["@img/sharp-win32-x64@0.35.4", "", { "os": "win32", "cpu": "x64" }, "sha512-XtmnYhBcrORsJ4XJngyzr/EWP0hRZLAZRFaApdKuviyqF78+ylxh2y06ZmtULAMOnObJ3ucpN0AcwSWnMowTRg=="], - "@internationalized/date": ["@internationalized/date@3.12.2", "", { "dependencies": { "@swc/helpers": "^0.5.0" } }, "sha512-FY1Y+H64NDs+HAF6omlnWxm3mEpfgaCSWtL5l551ZZfImA+kGjPFgrnJrGjH6lfmLL0g8Z/mBu1R3kufeCp6Jw=="], + "@internationalized/date": ["@internationalized/date@3.12.3", "", { "dependencies": { "@swc/helpers": "^0.5.0" } }, "sha512-fuLX+3ZKLsxI73y8b01EG/WjHb6gE6weCqlfawPO27kBWGMh9G1yH6Csv1uU7/cac9H2GHmOMt6CjmuQ1aia4Q=="], - "@internationalized/number": ["@internationalized/number@3.6.6", "", { "dependencies": { "@swc/helpers": "^0.5.0" } }, "sha512-iFgmQaXHE0vytNfpLZWOC2mEJCBRzcUxt53Xf/yCXG93lRvqas237i3r7X4RKMwO3txiyZD4mQjKAByFv6UGSQ=="], + "@internationalized/number": ["@internationalized/number@3.6.7", "", { "dependencies": { "@swc/helpers": "^0.5.0" } }, "sha512-3ji1fcrT+FPAK86UqEhB/psHixYo6niWPJtt7+qRaYFynt/BaJG8GhAPimtWUpEiVSTq8ZM8L5psMxGquiB/Vg=="], "@isaacs/cliui": ["@isaacs/cliui@8.0.2", "", { "dependencies": { "string-width": "^5.1.2", "string-width-cjs": "npm:string-width@^4.2.0", "strip-ansi": "^7.0.1", "strip-ansi-cjs": "npm:strip-ansi@^6.0.1", "wrap-ansi": "^8.1.0", "wrap-ansi-cjs": "npm:wrap-ansi@^7.0.0" } }, "sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA=="], @@ -1080,7 +1083,7 @@ "@jridgewell/source-map": ["@jridgewell/source-map@0.3.11", "", { "dependencies": { "@jridgewell/gen-mapping": "^0.3.5", "@jridgewell/trace-mapping": "^0.3.25" } }, "sha512-ZMp1V8ZFcPG5dIWnQLr3NSI1MiCU7UETdS/A0G8V/XWHvJv3ZsFqutJn1Y5RPmAPX6F3BiE397OqveU/9NCuIA=="], - "@jridgewell/sourcemap-codec": ["@jridgewell/sourcemap-codec@1.5.5", "", {}, "sha512-cYQ9310grqxueWbl+WuIUIaiUaDcj7WOq5fVhEljNVgRfOUhY9fy2zTvfoqWsnebh8Sl70VScFbICvJnLKB0Og=="], + "@jridgewell/sourcemap-codec": ["@jridgewell/sourcemap-codec@1.6.0", "", {}, "sha512-T7jf+5zgsZHwNJ4lvQ7/aezbyk0nNX+zJVWpmHA7VYsEx7a7qr5Rg5IbtJFqkgze5Y2sruq1RUY8Q837Od7iFw=="], "@jridgewell/trace-mapping": ["@jridgewell/trace-mapping@0.3.31", "", { "dependencies": { "@jridgewell/resolve-uri": "^3.1.0", "@jridgewell/sourcemap-codec": "^1.4.14" } }, "sha512-zzNR+SdQSDJzc8joaeP8QQoCQr8NuYx2dIIytl1QeBEZHJ9uW6hebsrYgbz8hJwUQao3TWCMtmfV8Nu1twOLAw=="], @@ -1108,43 +1111,43 @@ "@mdx-js/rollup": ["@mdx-js/rollup@3.1.1", "", { "dependencies": { "@mdx-js/mdx": "^3.0.0", "@rollup/pluginutils": "^5.0.0", "source-map": "^0.7.0", "vfile": "^6.0.0" }, "peerDependencies": { "rollup": ">=2" } }, "sha512-v8satFmBB+DqDzYohnm1u2JOvxx6Hl3pUvqzJvfs2Zk/ngZ1aRUhsWpXvwPkNeGN9c2NCm/38H29ZqXQUjf8dw=="], - "@mui/core-downloads-tracker": ["@mui/core-downloads-tracker@9.3.1", "", {}, "sha512-IAyAFNQbT7hysJ9HXphiOmWJF7G1OglzHanqCgvQgH9LA2ydxtmaTBDbcBqw6euZesyShiwvpvbnYO1GY1AyXQ=="], + "@mui/core-downloads-tracker": ["@mui/core-downloads-tracker@9.4.0", "", {}, "sha512-d+gIYM1raJP87yrVQcVg+Q3vycVMArMkgu/TjJLi2vTvO9FHKWNRR1xs9nnN4eLpM9nGxxm02UMvc9BrmcUKvQ=="], - "@mui/material": ["@mui/material@9.3.1", "", { "dependencies": { "@babel/runtime": "^7.29.7", "@mui/core-downloads-tracker": "^9.3.1", "@mui/system": "^9.3.0", "@mui/types": "^9.3.0", "@mui/utils": "^9.3.0", "@popperjs/core": "^2.11.8", "@types/react-transition-group": "^4.4.12", "clsx": "^2.1.1", "csstype": "^3.2.3", "prop-types": "^15.8.1", "react-is": "^19.2.8", "react-transition-group": "^4.4.5" }, "peerDependencies": { "@emotion/react": "^11.5.0", "@emotion/styled": "^11.3.0", "@mui/material-pigment-css": "^9.3.0", "@types/react": "^17.0.0 || ^18.0.0 || ^19.0.0", "react": "^17.0.0 || ^18.0.0 || ^19.0.0", "react-dom": "^17.0.0 || ^18.0.0 || ^19.0.0" }, "optionalPeers": ["@emotion/react", "@emotion/styled", "@mui/material-pigment-css", "@types/react"] }, "sha512-NahAEGIXqS1K0bA4th1jeFxBguS59NOcLbMA0vU+fSaPWKjtwGBGGHeTwlc9PSmzMjOZKceeFWESB8fVHr31hA=="], + "@mui/material": ["@mui/material@9.4.0", "", { "dependencies": { "@babel/runtime": "^7.29.7", "@mui/core-downloads-tracker": "^9.4.0", "@mui/system": "^9.4.0", "@mui/types": "^9.4.0", "@mui/utils": "^9.4.0", "@popperjs/core": "^2.11.8", "@types/react-transition-group": "^4.4.12", "clsx": "^2.1.1", "csstype": "^3.2.3", "prop-types": "^15.8.1", "react-is": "^19.2.8", "react-transition-group": "^4.4.5" }, "peerDependencies": { "@emotion/react": "^11.5.0", "@emotion/styled": "^11.3.0", "@mui/material-pigment-css": "^9.4.0", "@types/react": "^17.0.0 || ^18.0.0 || ^19.0.0", "react": "^17.0.0 || ^18.0.0 || ^19.0.0", "react-dom": "^17.0.0 || ^18.0.0 || ^19.0.0" }, "optionalPeers": ["@emotion/react", "@emotion/styled", "@mui/material-pigment-css", "@types/react"] }, "sha512-6KKUIvkQ2r/s48s9VZV9JEZ1W2dRa7RndVsF+Ipx4CYxDOQeozeRsS5r9NiheFf8A5hpbqJJIGoX7hjg5X4XUw=="], - "@mui/private-theming": ["@mui/private-theming@9.3.0", "", { "dependencies": { "@babel/runtime": "^7.29.7", "@mui/utils": "^9.3.0", "prop-types": "^15.8.1" }, "peerDependencies": { "@types/react": "^17.0.0 || ^18.0.0 || ^19.0.0", "react": "^17.0.0 || ^18.0.0 || ^19.0.0" }, "optionalPeers": ["@types/react"] }, "sha512-ERvqk5pejf9aRnQcDILSWGtFmsEMiVxlQ4+xsVCjsEvmK0fV9BiVP/cQwAF5dwyDFbve4lTrlcgeFEecVzTNiA=="], + "@mui/private-theming": ["@mui/private-theming@9.4.0", "", { "dependencies": { "@babel/runtime": "^7.29.7", "@mui/utils": "^9.4.0", "prop-types": "^15.8.1" }, "peerDependencies": { "@types/react": "^17.0.0 || ^18.0.0 || ^19.0.0", "react": "^17.0.0 || ^18.0.0 || ^19.0.0" }, "optionalPeers": ["@types/react"] }, "sha512-qQpX/2XPGDz5F2OIWzo4kkorURlDeXGKytRQudXCdLS5TuwKsMKaZyx77LZEVSB73c7o3UrLWwQ/goRuHBdtjw=="], - "@mui/styled-engine": ["@mui/styled-engine@9.3.0", "", { "dependencies": { "@babel/runtime": "^7.29.7", "@emotion/cache": "^11.14.0", "@emotion/serialize": "^1.3.3", "@emotion/sheet": "^1.4.0", "csstype": "^3.2.3", "prop-types": "^15.8.1" }, "peerDependencies": { "@emotion/react": "^11.4.1", "@emotion/styled": "^11.3.0", "react": "^17.0.0 || ^18.0.0 || ^19.0.0" }, "optionalPeers": ["@emotion/react", "@emotion/styled"] }, "sha512-x9+KYxhjoHYZ4nioxdKnvQWdw0RScbhoZfQ4tv3Db742683U3wlYSp6zV6Us78dMFnKnyTrPTkQKyutp14gnKA=="], + "@mui/styled-engine": ["@mui/styled-engine@9.4.0", "", { "dependencies": { "@babel/runtime": "^7.29.7", "@emotion/cache": "^11.14.0", "@emotion/serialize": "^1.3.3", "@emotion/sheet": "^1.4.0", "csstype": "^3.2.3", "prop-types": "^15.8.1" }, "peerDependencies": { "@emotion/react": "^11.4.1", "@emotion/styled": "^11.3.0", "react": "^17.0.0 || ^18.0.0 || ^19.0.0" }, "optionalPeers": ["@emotion/react", "@emotion/styled"] }, "sha512-SlqVEYqnyEgXMFW4JuIDMelyhKzoWBJ85v2mNCQd0XtU0uk7U9E1zaJZ06XqodhA8oJrb+4Q+3E/JlwBe4jWkw=="], - "@mui/system": ["@mui/system@9.3.0", "", { "dependencies": { "@babel/runtime": "^7.29.7", "@mui/private-theming": "^9.3.0", "@mui/styled-engine": "^9.3.0", "@mui/types": "^9.3.0", "@mui/utils": "^9.3.0", "clsx": "^2.1.1", "csstype": "^3.2.3", "prop-types": "^15.8.1" }, "peerDependencies": { "@emotion/react": "^11.5.0", "@emotion/styled": "^11.3.0", "@types/react": "^17.0.0 || ^18.0.0 || ^19.0.0", "react": "^17.0.0 || ^18.0.0 || ^19.0.0" }, "optionalPeers": ["@emotion/react", "@emotion/styled", "@types/react"] }, "sha512-0l4LqHJxZj65xSrioniGsxm7VNoGXonPo203oZjhBUvIDPeBqRTb7Mqc45Qxs6sO6WGR7WE/9cJ6lb4lkvHkjg=="], + "@mui/system": ["@mui/system@9.4.0", "", { "dependencies": { "@babel/runtime": "^7.29.7", "@mui/private-theming": "^9.4.0", "@mui/styled-engine": "^9.4.0", "@mui/types": "^9.4.0", "@mui/utils": "^9.4.0", "clsx": "^2.1.1", "csstype": "^3.2.3", "prop-types": "^15.8.1" }, "peerDependencies": { "@emotion/react": "^11.5.0", "@emotion/styled": "^11.3.0", "@types/react": "^17.0.0 || ^18.0.0 || ^19.0.0", "react": "^17.0.0 || ^18.0.0 || ^19.0.0" }, "optionalPeers": ["@emotion/react", "@emotion/styled", "@types/react"] }, "sha512-AZz9z13oGS1J0BYeAFHTbV7PegCtPiE/uMEIi7TJ1kTx3Vkt+jUpLyXF/2uV8B6Y79iTh98kVeOH9fX3x3zXXg=="], - "@mui/types": ["@mui/types@9.3.0", "", { "dependencies": { "@babel/runtime": "^7.29.7" }, "peerDependencies": { "@types/react": "^17.0.0 || ^18.0.0 || ^19.0.0" }, "optionalPeers": ["@types/react"] }, "sha512-2JSxyfpEFWNUB2vKs/T1BvkfyNisMHWph8bLMj8T0uHwmLl/0qfAwQkfwMT6kxLXN9uIum9AEbECXU8er3amIg=="], + "@mui/types": ["@mui/types@9.4.0", "", { "dependencies": { "@babel/runtime": "^7.29.7" }, "peerDependencies": { "@types/react": "^17.0.0 || ^18.0.0 || ^19.0.0" }, "optionalPeers": ["@types/react"] }, "sha512-13DH0Oniua4WmGqeYbQAZqmiN7r4nfd0zwIoGJ5QeJwyIHgEmf+LkRw/jV1HZb6AiUoHX8Oxf4xgalq3vYHcIw=="], - "@mui/utils": ["@mui/utils@9.3.0", "", { "dependencies": { "@babel/runtime": "^7.29.7", "@mui/types": "^9.3.0", "@types/prop-types": "^15.7.15", "clsx": "^2.1.1", "prop-types": "^15.8.1", "react-is": "^19.2.8" }, "peerDependencies": { "@types/react": "^17.0.0 || ^18.0.0 || ^19.0.0", "react": "^17.0.0 || ^18.0.0 || ^19.0.0" }, "optionalPeers": ["@types/react"] }, "sha512-2HZdHwWJ6eB+7lVGSOHsByGw8jeRulT4g0NZ608Wb8Q57DE2jbNqrWPFuJsvkQQiBiTmlpvQL3i+/62zsiPrkw=="], + "@mui/utils": ["@mui/utils@9.4.0", "", { "dependencies": { "@babel/runtime": "^7.29.7", "@mui/types": "^9.4.0", "@types/prop-types": "^15.7.15", "clsx": "^2.1.1", "prop-types": "^15.8.1", "react-is": "^19.2.8" }, "peerDependencies": { "@types/react": "^17.0.0 || ^18.0.0 || ^19.0.0", "react": "^17.0.0 || ^18.0.0 || ^19.0.0" }, "optionalPeers": ["@types/react"] }, "sha512-WkzY8uYtqUDyGKPShrRQRBomfMQHddlsyKu/gRRESYO24tDPD2z0xRE8CBoUsWqpBa+YrFs9KixiS7kQRjsPAQ=="], "@napi-rs/lzma-linux-x64-gnu": ["@napi-rs/lzma-linux-x64-gnu@1.5.1", "", { "os": "linux", "cpu": "x64" }, "sha512-oTXEIha4SsuXdTA4Iyskj0kpdx2yVXdhd75c2v3xGrHFfVMsbhTPZU/nMPL4sWKo4pBHm3aucLaqGlF696dTyQ=="], "@napi-rs/wasm-runtime": ["@napi-rs/wasm-runtime@1.2.3", "", { "dependencies": { "@tybys/wasm-util": "^0.10.3" }, "peerDependencies": { "@emnapi/core": "^1.7.1 || ^2.0.0-alpha.4", "@emnapi/runtime": "^1.7.1 || ^2.0.0-alpha.4" } }, "sha512-UMduMbqO5s5zF2NkNacMT/yK5Y5QiKvWr2+50bzIIxFDwVJ2h49b+oyjaCGPhJxd2/gC2x39EHv/gHVuu36x2Q=="], - "@next/env": ["@next/env@16.3.1", "", {}, "sha512-35G3xwkQUb2oETSDjFXGrVugknoayLFBh7vSE+yAcl9IP2zT9wyGwq7297AYHR11kJld807t5f8AJBs6WBzXsQ=="], + "@next/env": ["@next/env@16.3.3", "", {}, "sha512-U2eYQRwXj+dsqxV79zFqExDdatnNY/ZWc2nsJU1p/OgT7fd3dXwlF6OjYaFQCfMoeTA19PWq+wVmYgimVA+V+g=="], - "@next/mdx": ["@next/mdx@16.3.2", "", { "dependencies": { "source-map": "^0.7.0" }, "peerDependencies": { "@mdx-js/loader": ">=0.15.0", "@mdx-js/react": ">=0.15.0" }, "optionalPeers": ["@mdx-js/loader", "@mdx-js/react"] }, "sha512-3Ch2ayTuBW9rBaOO9KLlRBUdsZpAm2rpuUxWrDjS9+2lcRzyWKlQoss3A66Nql3BnCBnsLE7j7+M3fR7Gssqdw=="], + "@next/mdx": ["@next/mdx@16.3.3", "", { "dependencies": { "source-map": "^0.7.0" }, "peerDependencies": { "@mdx-js/loader": ">=0.15.0", "@mdx-js/react": ">=0.15.0" }, "optionalPeers": ["@mdx-js/loader", "@mdx-js/react"] }, "sha512-DR5rq7bLDntGu49rUBAYOEjDwXsMHJ/Q/qjF+7dxLZwq9RZOVm/YoaVfrf1Mal3zBf3expNVtn8oQp590bt/Gw=="], - "@next/swc-darwin-arm64": ["@next/swc-darwin-arm64@16.3.1", "", { "os": "darwin", "cpu": "arm64" }, "sha512-ABMIu2zQ7cnNIHm5ivKGwZwUrm0pAai3yiJ/gK/rF1c1VP9UOnj7XECbMKFdVKp9I9eMYq9NoDs1WXOoowxzJw=="], + "@next/swc-darwin-arm64": ["@next/swc-darwin-arm64@16.3.3", "", { "os": "darwin", "cpu": "arm64" }, "sha512-8Hiv32QJPwdV6KYJ8meR9SBA061tQqnIKTJDocvOXlEQqib0xMFpzArosuffFUUc0sslbh7QQ8a3Yey1QV8EIw=="], - "@next/swc-darwin-x64": ["@next/swc-darwin-x64@16.3.1", "", { "os": "darwin", "cpu": "x64" }, "sha512-gNG21e/UnrroeScbY/QndUEdl0mF1FRibW7BBeYUz/5ABCepjqDdEdgr592vpzMtCn/m7FTjYq3TN4TpyDnutw=="], + "@next/swc-darwin-x64": ["@next/swc-darwin-x64@16.3.3", "", { "os": "darwin", "cpu": "x64" }, "sha512-A1lgKgwVchRYmSe467zdwhxT9040dd8lH+o65sL5Jet8fjB4kegw/rDyPIpYVRb6jAqwXFOJpjIXJLxQKLiE3A=="], - "@next/swc-linux-arm64-gnu": ["@next/swc-linux-arm64-gnu@16.3.1", "", { "os": "linux", "cpu": "arm64" }, "sha512-6B6Lw016iwNUQuaJoraMMTLh6TwHzFUtxipSScD1F3YyymcrRWkobodRS2ftIOkF5vrs4zNlyUrTC5YZQ9Lz5w=="], + "@next/swc-linux-arm64-gnu": ["@next/swc-linux-arm64-gnu@16.3.3", "", { "os": "linux", "cpu": "arm64" }, "sha512-bf0FIssMFueU2dm7vQEWWxk0c8UjKTdW0yzuh0sQsD8pf1+KCLDdaqhYZNMYGmXwEOiHAUzgBKudovIlcvvBjg=="], - "@next/swc-linux-arm64-musl": ["@next/swc-linux-arm64-musl@16.3.1", "", { "os": "linux", "cpu": "arm64" }, "sha512-JUiPXZKK9wOhjf4MgDiH29GZLxfqOesbLtHq2pDxwH/WwscTRV2ToymnOTh1egzaZf0ueUf8T2+CeYTGHjW0Iw=="], + "@next/swc-linux-arm64-musl": ["@next/swc-linux-arm64-musl@16.3.3", "", { "os": "linux", "cpu": "arm64" }, "sha512-W7viwCk9JY/cAkdz/A273rd5bb3RgT/IHwR7Upv90tunjBWNtAAhGhoecHh+teRNRSinuAFmE+l7fwZ4YKkrXg=="], - "@next/swc-linux-x64-gnu": ["@next/swc-linux-x64-gnu@16.3.1", "", { "os": "linux", "cpu": "x64" }, "sha512-Uog9jsrmIRIL/lfvIp9htmskSNC7JcQsMVucXL2V2YY1y/D9IUN3LPEafqy0zRJ2cIU1SQ0V6F6TlffQ+pLAGg=="], + "@next/swc-linux-x64-gnu": ["@next/swc-linux-x64-gnu@16.3.3", "", { "os": "linux", "cpu": "x64" }, "sha512-0W46zw1N3ODpI6n0GeivHvvob1pooozgZVqy65k0mh4/7vr+FbY9+WpHzNVXjHipJf/A3FDheBG19H1s5A25rA=="], - "@next/swc-linux-x64-musl": ["@next/swc-linux-x64-musl@16.3.1", "", { "os": "linux", "cpu": "x64" }, "sha512-6yy3FT13KgUFOj5H8bl8w/6nKiJwHIvbtwh1V+1acsu+7y4tJjnemSa6mhsh53BeoVrlozE+fMgZhXH46WmjMA=="], + "@next/swc-linux-x64-musl": ["@next/swc-linux-x64-musl@16.3.3", "", { "os": "linux", "cpu": "x64" }, "sha512-H4mBso8ZTMBPtdT0PN0pBx2ayTvQuTuvS6qT13d77yVFJXAPCxkyIhLTmdMaGTJs0krQYI/qpzdHijCeihXhbg=="], - "@next/swc-win32-arm64-msvc": ["@next/swc-win32-arm64-msvc@16.3.1", "", { "os": "win32", "cpu": "arm64" }, "sha512-iOoN1QecUoGNZik536U/vtK43YwgyrCsGIkth52yIkl612n+0C9MjSnJbQAikISpb+WYRooBVhaDlUW7iZoKog=="], + "@next/swc-win32-arm64-msvc": ["@next/swc-win32-arm64-msvc@16.3.3", "", { "os": "win32", "cpu": "arm64" }, "sha512-cTMUJpcEGmeywofCUfhR+rSsoE33+rVPnPEYNTNdLNlsOeEg/vktOsKUSTb28vUGqD2jkm4Zaskcwn7OCI6FQg=="], - "@next/swc-win32-x64-msvc": ["@next/swc-win32-x64-msvc@16.3.1", "", { "os": "win32", "cpu": "x64" }, "sha512-d/k+PpAriUPaeMJJOG7HUSdqfEX46FEPWU1p3/nm2ACmXhj9hFEWdFODUBIpkuijXYkfL90qZzTqVPRp4BW/hw=="], + "@next/swc-win32-x64-msvc": ["@next/swc-win32-x64-msvc@16.3.3", "", { "os": "win32", "cpu": "x64" }, "sha512-2VR4cTBzHXaBjnGsuH6GyJjENzQOmHeAh11uY1iUhjm3j5dEUrVJuUj+VL78jaGi/Dik8xS76zEj18BsFhlVZQ=="], "@nodelib/fs.scandir": ["@nodelib/fs.scandir@2.1.5", "", { "dependencies": { "@nodelib/fs.stat": "2.0.5", "run-parallel": "^1.1.9" } }, "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g=="], @@ -1294,125 +1297,125 @@ "@resvg/resvg-wasm": ["@resvg/resvg-wasm@2.4.0", "", {}, "sha512-C7c51Nn4yTxXFKvgh2txJFNweaVcfUPQxwEUFw4aWsCmfiBDJsTSwviIF8EcwjQ6k8bPyMWCl1vw4BdxE569Cg=="], - "@rolldown/binding-android-arm-eabi": ["@rolldown/binding-android-arm-eabi@1.2.5", "", { "os": "android", "cpu": "arm" }, "sha512-DLe/i+l8ynIBY7XEQ191TeZvCoowIGa18R+dIV30GW7DiOtp74i/xX8hs8GUjW5ARV7VZuie3d6AumSmCwbeRA=="], + "@rolldown/binding-android-arm-eabi": ["@rolldown/binding-android-arm-eabi@1.2.6", "", { "os": "android", "cpu": "arm" }, "sha512-b+jTcARdTiFLI6jB4a5XjTm0RWd6KcRfQj/I2356fxUZemiho9zQLxo0RtCuMDAyKcLo6cEltkgbQp6d1+sjjQ=="], - "@rolldown/binding-android-arm64": ["@rolldown/binding-android-arm64@1.2.5", "", { "os": "android", "cpu": "arm64" }, "sha512-zXcwKlQApYAOELHd8PwKDFkagYF9Wy4e0RJ+0qnzl9Pjnpj75TEG8ufv40p2J7kCEfwZAsNiuzRIyNNMWT38ig=="], + "@rolldown/binding-android-arm64": ["@rolldown/binding-android-arm64@1.2.6", "", { "os": "android", "cpu": "arm64" }, "sha512-lkWU8ZJaRk9q3CIEY1Tc7vIFALp3Xw5NfGJo2hQg5oIqNgxWi1zI+IiDEK3r70BF5Dzol1tcXsnzsRc8NLhG+Q=="], - "@rolldown/binding-darwin-arm64": ["@rolldown/binding-darwin-arm64@1.2.5", "", { "os": "darwin", "cpu": "arm64" }, "sha512-dK4QakI42nzWgJT5sm4y4y/O//D4OxM75/cH28RLV+nzIN9AY+YsbuUVrUTjlLjXR6vpyxFbSsbmNuJ6BP9sww=="], + "@rolldown/binding-darwin-arm64": ["@rolldown/binding-darwin-arm64@1.2.6", "", { "os": "darwin", "cpu": "arm64" }, "sha512-dgR56NYnvAszm7Ob1B2/Vn0e8bUQYZH2UjVaMMtMVOCKFSfjhfLmuA/9+O+F+ajUdG6B/bSssrKW6JJYASa8jA=="], - "@rolldown/binding-darwin-x64": ["@rolldown/binding-darwin-x64@1.2.5", "", { "os": "darwin", "cpu": "x64" }, "sha512-fqSALaUu1Wjd1nK2uW2kJDWdLCc8lx1IcY+MTY26Aurfdx19anlzhqXOgCFbBFQnlFDTn4TC1/7Nz4Bl2mLP3A=="], + "@rolldown/binding-darwin-x64": ["@rolldown/binding-darwin-x64@1.2.6", "", { "os": "darwin", "cpu": "x64" }, "sha512-vpVxFvUCFioJqug7OTvqptkc4yb8UX0AwfDmJpaR/0sWz+BUmqSVAf7c8JkUgnN8YLspb4a/N6NhTyMAmdyQ7Q=="], - "@rolldown/binding-freebsd-x64": ["@rolldown/binding-freebsd-x64@1.2.5", "", { "os": "freebsd", "cpu": "x64" }, "sha512-/vCnNxlkxs9tKxNDcyWUePpJ/PgTzxIaVhoM5SmG8UV+GR/IcPam4VYxi7GIMo7PSDuNqlJqvprqii9NqqVCMw=="], + "@rolldown/binding-freebsd-x64": ["@rolldown/binding-freebsd-x64@1.2.6", "", { "os": "freebsd", "cpu": "x64" }, "sha512-h1wG6Y6K3JlRswxsI64qQJqBAy4vrLuHgRbc8CZMGSWTOFRY6ghMApM1NKzB2I0n5xV1fjkE18SuVl2QpLeNpA=="], - "@rolldown/binding-linux-arm-gnueabihf": ["@rolldown/binding-linux-arm-gnueabihf@1.2.5", "", { "os": "linux", "cpu": "arm" }, "sha512-abk0NLA519LxRCszmbE0jYKuQ9YPocOXTiOXOo6Yr+YAT95VH+PtqYAjOJvGKt3viEd/x4qzabAlwd5bHOOARg=="], + "@rolldown/binding-linux-arm-gnueabihf": ["@rolldown/binding-linux-arm-gnueabihf@1.2.6", "", { "os": "linux", "cpu": "arm" }, "sha512-tbCiqub0q2MVWJKgF5PoAlNWCtQydiOYSLIkd8sByqK/6MMYLJRcSXSYodqYtd0O+Fw7QaVmKKlS4oL94YRZ0w=="], - "@rolldown/binding-linux-arm64-gnu": ["@rolldown/binding-linux-arm64-gnu@1.2.5", "", { "os": "linux", "cpu": "arm64" }, "sha512-Y7eALiJ8lr0M2HH103Js+g7V34wf6snlpZLAsHI90uLhr3PVlNsbFVAXJC9d/V6BnPyKtpSwI+NcB/RLxsQxuA=="], + "@rolldown/binding-linux-arm64-gnu": ["@rolldown/binding-linux-arm64-gnu@1.2.6", "", { "os": "linux", "cpu": "arm64" }, "sha512-oxK9+baEBPhZG5HB4URY+uU04zJWeZlH6Tb9rB5DK4DF9XR1uXNLXt5Q5ZsugTKayNCNLhkcwz/ye74hRI98dg=="], - "@rolldown/binding-linux-arm64-musl": ["@rolldown/binding-linux-arm64-musl@1.2.5", "", { "os": "linux", "cpu": "arm64" }, "sha512-xMvZgnbZg4YVnR/AX2b3oOPDTFYJvUVaJg5FedA/LuvexAtXibZQej4cnTkw3rjsJ/ggUROB64TdtETiim+FYA=="], + "@rolldown/binding-linux-arm64-musl": ["@rolldown/binding-linux-arm64-musl@1.2.6", "", { "os": "linux", "cpu": "arm64" }, "sha512-muWCk27FVBEZtv0MsK8gnfSmgczA8KQ0uRVJbTABKhkRfQc38aUrcb7fhi3BNiyseFmgcRsoMfQsSNJ+DbZdSw=="], - "@rolldown/binding-linux-ppc64-gnu": ["@rolldown/binding-linux-ppc64-gnu@1.2.5", "", { "os": "linux", "cpu": "ppc64" }, "sha512-GRjeqTUDHTo5GwntsLaAMcBahG3nlpjftXWZLN73HiYQlhwEowvarFgQnRnQZtIp4keXX7quXFbG38uPZBa2EA=="], + "@rolldown/binding-linux-ppc64-gnu": ["@rolldown/binding-linux-ppc64-gnu@1.2.6", "", { "os": "linux", "cpu": "ppc64" }, "sha512-eWDoSfU7Co2qj3vgB3Dt4lj1mG6CoWbcJQkRMP3XJplyCMtuaq3LHvPFjS9QIPvMGWVadJC04Xiy0IdcVPtnwQ=="], - "@rolldown/binding-linux-s390x-gnu": ["@rolldown/binding-linux-s390x-gnu@1.2.5", "", { "os": "linux", "cpu": "s390x" }, "sha512-vLNTR45F2Uwc8AufkNXPmB4VliaXs+FvcheEogIzOXzO4l+LzieXF5A/TWxLy5HtqpsRCHUfd0lPVrrdgXdLHQ=="], + "@rolldown/binding-linux-s390x-gnu": ["@rolldown/binding-linux-s390x-gnu@1.2.6", "", { "os": "linux", "cpu": "s390x" }, "sha512-2bWNjRSIayvupRKxXUY2tWG9fYdoUlTqWywHRvE8Eq3GvuQ+f2HeIkve697fIt+IQs/PV8yFsdWuhp1aJ1PdnA=="], - "@rolldown/binding-linux-x64-gnu": ["@rolldown/binding-linux-x64-gnu@1.2.5", "", { "os": "linux", "cpu": "x64" }, "sha512-Mgj59/HTuYeK9Gz2MA+mBWKnHsAgkBSec15ZMb1st3oIfFbX7gCjOae7GydHhzcyQi9Z/7M1QuN9bR3oFqF0jQ=="], + "@rolldown/binding-linux-x64-gnu": ["@rolldown/binding-linux-x64-gnu@1.2.6", "", { "os": "linux", "cpu": "x64" }, "sha512-KekI0gS0wLxe1UBSQSjenBVwou/JkcQPDzBPICGZjxUv9k3RteHDPBQaiOicZUFKRIH2wKEimGwVpnJsbPzu7w=="], - "@rolldown/binding-linux-x64-musl": ["@rolldown/binding-linux-x64-musl@1.2.5", "", { "os": "linux", "cpu": "x64" }, "sha512-mY8AP0/ichsbhAxGnLa3d3+MwV0EfgrPND2bplI3Ym8T6R2pJ0N87bvrKVwNXmdy3jnr6eQBecdqx/HMknBmpA=="], + "@rolldown/binding-linux-x64-musl": ["@rolldown/binding-linux-x64-musl@1.2.6", "", { "os": "linux", "cpu": "x64" }, "sha512-TvtPnfVr+HtyGiDmPK4VWmlNm7QhNNAcK5Q9A7aOXsI8545yCyaoMaicXrFZ72JzeYjaUVk7yT243zT0jzjFKQ=="], - "@rolldown/binding-openharmony-arm64": ["@rolldown/binding-openharmony-arm64@1.2.5", "", { "os": "none", "cpu": "arm64" }, "sha512-8SLssA2oweAxyRgDp789ACfRb/3P+zNRJpzZxSizxF9m8NUDQ4+3xjo8ttjhVGGw6Qxb70oZiEtIjaKikCO7Yw=="], + "@rolldown/binding-openharmony-arm64": ["@rolldown/binding-openharmony-arm64@1.2.6", "", { "os": "none", "cpu": "arm64" }, "sha512-iOo0VEay2XFhaCcH0sps5XIimkSuOnNaZrf6+ZkoSOQBJPKNU48RkmJv0/lSpipexu5P+ouFgafe5IGr/DiQfg=="], - "@rolldown/binding-win32-arm64-msvc": ["@rolldown/binding-win32-arm64-msvc@1.2.5", "", { "os": "win32", "cpu": "arm64" }, "sha512-vGbruD5zquhoc8D9SViXgN2FBJtNdTyQ4DtG+SWiEGlJiAzoKcZ2xp+xuXCffhubVdt0NJlTZqkeRuERy7g8Cw=="], + "@rolldown/binding-win32-arm64-msvc": ["@rolldown/binding-win32-arm64-msvc@1.2.6", "", { "os": "win32", "cpu": "arm64" }, "sha512-y5NTmmasMS455JlOCO4ZM9krIchv3Mvm1crL1iUPGOPgEzSkves9n0SdC5Sjz6+qWDFhd8/JpfWMH8NSWNHe+A=="], - "@rolldown/binding-win32-x64-msvc": ["@rolldown/binding-win32-x64-msvc@1.2.5", "", { "os": "win32", "cpu": "x64" }, "sha512-e/SXpgISz+IoqVcSSI0rx/d/he8zqLex+/rCWpnHpmVfmPIUjag9H6P7zotf0gJHwPUhQxZ/mF8tr6acebT9yw=="], + "@rolldown/binding-win32-x64-msvc": ["@rolldown/binding-win32-x64-msvc@1.2.6", "", { "os": "win32", "cpu": "x64" }, "sha512-np8iZSLfXlAD4kWhiyq/u0Yt8oZDtRQ8lGhQaCXo2rl37KNjeU0GjJuwr4P3oeZ++ROfofsKNBqR5LTO8aXyWQ=="], "@rolldown/pluginutils": ["@rolldown/pluginutils@1.0.1", "", {}, "sha512-2j9bGt5Jh8hj+vPtgzPtl72j0yRxHAyumoo6TNfAjsLB04UtpSvPbPcDcBMxz7n+9CYB0c1GxQFxYRg2jimqGw=="], "@rollup/pluginutils": ["@rollup/pluginutils@5.4.0", "", { "dependencies": { "@types/estree": "^1.0.0", "estree-walker": "^2.0.2", "picomatch": "^4.0.2" }, "peerDependencies": { "rollup": "^1.20.0||^2.0.0||^3.0.0||^4.0.0" }, "optionalPeers": ["rollup"] }, "sha512-MfPp06CjRLfXQ3wY0R8vJDYBy/MvVcc9OulEfR0B8Iv9ko+GCNaRZ+EpJYFl27LhKsZK0o420sYCRHCjfCgeUg=="], - "@rollup/rollup-android-arm-eabi": ["@rollup/rollup-android-arm-eabi@4.62.5", "", { "os": "android", "cpu": "arm" }, "sha512-jfkGfTwhQpsiSckPF8r9bU3pn3vyd72NlWaO+TgEO6WPSDnUhXzrNYCHBMOYj0ACaUgjm6eERLF+XV9a6RstoA=="], + "@rollup/rollup-android-arm-eabi": ["@rollup/rollup-android-arm-eabi@4.63.1", "", { "os": "android", "cpu": "arm" }, "sha512-UZ8sUxPTiHWYX9QNdJedb1kDZSpS1t/VPWBWGSgqHNi9w3Cu6IXvu2mzbhiTiPvtrqgTQJ+zqiAq2iPIPilpaQ=="], - "@rollup/rollup-android-arm64": ["@rollup/rollup-android-arm64@4.62.5", "", { "os": "android", "cpu": "arm64" }, "sha512-oGVqyQlxnrz9/ty89oHpU857VUHEl5/Xu4R2lS+aivCTrNnSsbiENzTnNaBsjxH0CNWGPhzHArOLFwo+oKXveA=="], + "@rollup/rollup-android-arm64": ["@rollup/rollup-android-arm64@4.63.1", "", { "os": "android", "cpu": "arm64" }, "sha512-cQ4nFQABN5cDvDpbvJ7bMStCpnaVxynZrRMfUJYgxcIk9Sh54FIO1vtfkg0B69REjER77ioZ/ov+eAApx/KmLQ=="], - "@rollup/rollup-darwin-arm64": ["@rollup/rollup-darwin-arm64@4.62.5", "", { "os": "darwin", "cpu": "arm64" }, "sha512-bW7B8xMEq8n99Q3ieEcPRGuphurdZAaFzQc9Efyyw3FL6DZO6pMy9xhdN+kBoD7Sy05xNXSr4OyPPnpkYriS/A=="], + "@rollup/rollup-darwin-arm64": ["@rollup/rollup-darwin-arm64@4.63.1", "", { "os": "darwin", "cpu": "arm64" }, "sha512-FQNqd1lRy/0QhDk3xeRIkSBiCpXCiDnZO3YLVdcDKN1UBiKToNftCzcXYNLshmPDUMlu2TdeS8tGcsU6f3YF1Q=="], - "@rollup/rollup-darwin-x64": ["@rollup/rollup-darwin-x64@4.62.5", "", { "os": "darwin", "cpu": "x64" }, "sha512-YSwBS86QeHOGlrxJ1PSOIZSkzRL/JmKeunhc+lV6M1a6En8QuVCD/T/qIA0J4Gd2Y86RIOBYrLcOUtqGh9+/1w=="], + "@rollup/rollup-darwin-x64": ["@rollup/rollup-darwin-x64@4.63.1", "", { "os": "darwin", "cpu": "x64" }, "sha512-pvD16V939D3CloK0+qikpGaxiPrDUXTe7Y5cWOMkMSy7m1cawa8EGy/kXYi/G/cKAC4HDAbSnzCIk1WmsoOKXg=="], - "@rollup/rollup-freebsd-arm64": ["@rollup/rollup-freebsd-arm64@4.62.5", "", { "os": "freebsd", "cpu": "arm64" }, "sha512-2fST8lILgl7cKbme/1KDdPCmbXbG+gqoV3bHp19L0ypX/3akYMBVdOunPleRCwonoLnXOZ/0F+Mt/v8POFmfcQ=="], + "@rollup/rollup-freebsd-arm64": ["@rollup/rollup-freebsd-arm64@4.63.1", "", { "os": "freebsd", "cpu": "arm64" }, "sha512-pcFGeL2345VwdTnJhA6zLbew+YgWB0qBG2+dMtXjCicf6+rm6kO6cOoh5VnTe0ZMrMRgRyuHmCJxZWrIdzYuOw=="], - "@rollup/rollup-freebsd-x64": ["@rollup/rollup-freebsd-x64@4.62.5", "", { "os": "freebsd", "cpu": "x64" }, "sha512-cpIxQCP9J+EVad0a6LO1kY3ZGODlk80VlI+2I96B8xMcdHZ4pLVhfQ49JFpYqjPF91FFkQWftf57YlDcTiw9yQ=="], + "@rollup/rollup-freebsd-x64": ["@rollup/rollup-freebsd-x64@4.63.1", "", { "os": "freebsd", "cpu": "x64" }, "sha512-mRJlqSRulVzcKq/LKA6ICSIc3K/l4fzlVn/gePn2nXIHy8seRi5z/eeRE0d/XMBxcMldiXtQTSpRj0tkkC3g8Q=="], - "@rollup/rollup-linux-arm-gnueabihf": ["@rollup/rollup-linux-arm-gnueabihf@4.62.5", "", { "os": "linux", "cpu": "arm" }, "sha512-r9fGh3eFs3e/udWh5ZjXQtxiYK/xoFxQaYR/cELxac/Udkl5Th+IsFm0CX3Kl9hmUH/we7EoMpjJgeQNnE0+IA=="], + "@rollup/rollup-linux-arm-gnueabihf": ["@rollup/rollup-linux-arm-gnueabihf@4.63.1", "", { "os": "linux", "cpu": "arm" }, "sha512-YDUNvVM85TI3g/1OpnqKP1h4NeW/j64DfWMf+G3M809xNk1bJSnpFp4sh83NpmVE5DXnkh8ULor4LTVZKoYLHw=="], - "@rollup/rollup-linux-arm-musleabihf": ["@rollup/rollup-linux-arm-musleabihf@4.62.5", "", { "os": "linux", "cpu": "arm" }, "sha512-xdvFdp7OM6KLJviJT2g/YuRSUjnZgGHk4RNgwIbN7X6cPugOucV60DdHXWzsBVCUdrGb6qSXnJQrrAKMmQuj3Q=="], + "@rollup/rollup-linux-arm-musleabihf": ["@rollup/rollup-linux-arm-musleabihf@4.63.1", "", { "os": "linux", "cpu": "arm" }, "sha512-7Mcn71p9ZuQFAj+h+dhQXy/yeLePRS2yKRnmW1DijA9thKO5qap0GNOIQK4yQ6iP3SU0Mrb/yWo8h8vgRba8lw=="], - "@rollup/rollup-linux-arm64-gnu": ["@rollup/rollup-linux-arm64-gnu@4.62.5", "", { "os": "linux", "cpu": "arm64" }, "sha512-rRqILAndyzHzP7T9NFQrq+4HFWNhqkqkKur7eiBpfLmz01PO0JKx5Vchu3YllE4YXI/Ftgq/szrDWg5GJ0mI8g=="], + "@rollup/rollup-linux-arm64-gnu": ["@rollup/rollup-linux-arm64-gnu@4.63.1", "", { "os": "linux", "cpu": "arm64" }, "sha512-4YiLQTX6U4CSl0L9cluep9A9W6UmTfqBDc2/CH6wlu54pl4E7Jn3cOD8oxzvBDEGk/JMKgJ47C8g+radF7mwvg=="], - "@rollup/rollup-linux-arm64-musl": ["@rollup/rollup-linux-arm64-musl@4.62.5", "", { "os": "linux", "cpu": "arm64" }, "sha512-Gf4X3qVMucayUvux6aXXPgXovocSFUC0rrffDuPI/S2nHhNMhjcZxsrAFYCOF350PRreW1XwzFj3CT/3bKsWCw=="], + "@rollup/rollup-linux-arm64-musl": ["@rollup/rollup-linux-arm64-musl@4.63.1", "", { "os": "linux", "cpu": "arm64" }, "sha512-2ra8F7w8OquwZN9z2/fKFnli69wa8PLwaVzRMIPGb13ByMJwC28Fbp8YcVGoUhlYMTt7j5j9bNgpysrN2UM+vw=="], - "@rollup/rollup-linux-loong64-gnu": ["@rollup/rollup-linux-loong64-gnu@4.62.5", "", { "os": "linux", "cpu": "none" }, "sha512-+s5qA0TNM0qm8PK/a5gt/1Hpx+NV08uSuCncvhziIlQzT6AEV2fnUQo7eBtFTFO0nA9scauvoR2HusfXmQnO4w=="], + "@rollup/rollup-linux-loong64-gnu": ["@rollup/rollup-linux-loong64-gnu@4.63.1", "", { "os": "linux", "cpu": "none" }, "sha512-Sy20ncyhjmBP0Ml+UvQbimjlk6VFgjW5uNP+qqwHB00mTE8Bl2C1TuHTlRwK2YoXeZbee5lP2XevBWVkAQAtSQ=="], - "@rollup/rollup-linux-loong64-musl": ["@rollup/rollup-linux-loong64-musl@4.62.5", "", { "os": "linux", "cpu": "none" }, "sha512-ybb6QvWwWJCbBWqERpc8K3pYVGIrXlG8MEQ8IIuJY6Y9KdHQxoFoNyfkAOtKn1VHu3KuLidXvwrvGR1mEjeWCw=="], + "@rollup/rollup-linux-loong64-musl": ["@rollup/rollup-linux-loong64-musl@4.63.1", "", { "os": "linux", "cpu": "none" }, "sha512-noITLp8oNjYliPnGWmLyelIHwULGqbHloQHGw1rtxbWhTuWooRpnZarZQJ1y9EUC4szuCusCc+HEpUtxpIwYvA=="], - "@rollup/rollup-linux-ppc64-gnu": ["@rollup/rollup-linux-ppc64-gnu@4.62.5", "", { "os": "linux", "cpu": "ppc64" }, "sha512-nZb1DtnOyhCmYvsC8A2CwOkopVg+IS1+fPUa7rMOAXtNw5+lLCLLPqd6XAiNrGtoQKsbvIBOwsHnBH/3wnb4HQ=="], + "@rollup/rollup-linux-ppc64-gnu": ["@rollup/rollup-linux-ppc64-gnu@4.63.1", "", { "os": "linux", "cpu": "ppc64" }, "sha512-hlxxXd+F1mWiAcaFR7Sv9ZQT6m6UfI8+Vy/kFJzztq2pDMU/0wZ9sish0iszNZvsQDo8Gc0i5yuFEOz5dDf6fA=="], - "@rollup/rollup-linux-ppc64-musl": ["@rollup/rollup-linux-ppc64-musl@4.62.5", "", { "os": "linux", "cpu": "ppc64" }, "sha512-yMbj63Sp89ryrXLWyz+sy+fYD2HpOnMCLGbe4Oa1smclFSUukdtD/BgdiHaAetJNb74URD8U4hM+qG5KVzMEkg=="], + "@rollup/rollup-linux-ppc64-musl": ["@rollup/rollup-linux-ppc64-musl@4.63.1", "", { "os": "linux", "cpu": "ppc64" }, "sha512-EF7OpqQTQ/BvGqLzUi4rEHuagCV9MugAUXSHemwPW5vxZ75RR+jxO/2j95Ph2dalMpFHSVECjRoioHZgA9zOYA=="], - "@rollup/rollup-linux-riscv64-gnu": ["@rollup/rollup-linux-riscv64-gnu@4.62.5", "", { "os": "linux", "cpu": "none" }, "sha512-mhoan3OJw2kYV/e1jtIdmvUZgyBFeA6zGWsOswmR0Tg19TQbowZuR+JMLID6spbbBN7Zee2ejrgmy3+FxGrIdA=="], + "@rollup/rollup-linux-riscv64-gnu": ["@rollup/rollup-linux-riscv64-gnu@4.63.1", "", { "os": "linux", "cpu": "none" }, "sha512-wQO3JesW9PRkwlabQ27y7sPfVOOTLRG73I4F2UYHG5PXun3J9U3y+b7ezVKSYbsvSKGQ1k1cq8Qlun4C9kLt3w=="], - "@rollup/rollup-linux-riscv64-musl": ["@rollup/rollup-linux-riscv64-musl@4.62.5", "", { "os": "linux", "cpu": "none" }, "sha512-5ZTLmjWbb1VZdjuyhe83K/8QO0/h11midQCBP+X5OYn32ra7eOBoM0ZqtaY4nkgNsYgmdVhMYPoyVPTjUpHf3w=="], + "@rollup/rollup-linux-riscv64-musl": ["@rollup/rollup-linux-riscv64-musl@4.63.1", "", { "os": "linux", "cpu": "none" }, "sha512-ouAGwhO6wHRXdnOVCOsB0tRFkA7nhNB2Nwax6oECXN0YiN8EYUTBAOudADOB1PI+yDL61TeNx/u7MVCzksNbkQ=="], - "@rollup/rollup-linux-s390x-gnu": ["@rollup/rollup-linux-s390x-gnu@4.62.5", "", { "os": "linux", "cpu": "s390x" }, "sha512-m53kG+br6PGxOTmgBEM2DHSDs9RVjsyEbUwjJPJGTFm1grWOG8EKJggDCTb60unD4Tjby8fi7/m9XfkEWasVWg=="], + "@rollup/rollup-linux-s390x-gnu": ["@rollup/rollup-linux-s390x-gnu@4.63.1", "", { "os": "linux", "cpu": "s390x" }, "sha512-q2R38Sn+1J8RxhfJ+T54wSWmyKXWec+9jgDfqO2AtArEqHO5R2aeayp5H5OYLr5UYDVGsVaZPEFUooMhYCdz5A=="], - "@rollup/rollup-linux-x64-gnu": ["@rollup/rollup-linux-x64-gnu@4.62.5", "", { "os": "linux", "cpu": "x64" }, "sha512-6RHPJR1g/uvdYU8uXBnfq3nlqyZCP82Fr6NHgfGoaIeSh0YEqnX/x6uA9MmJJbnSH7swqX4F+CkGdUF+6doiQA=="], + "@rollup/rollup-linux-x64-gnu": ["@rollup/rollup-linux-x64-gnu@4.63.1", "", { "os": "linux", "cpu": "x64" }, "sha512-gfI5T24WLLuFfSKw7Go/zDXjAAV0fny0swTaDv+WjK7vqcw4cRhFfdsyKL1n+ukI+ooBxn3bVQnyrn06WpI50w=="], - "@rollup/rollup-linux-x64-musl": ["@rollup/rollup-linux-x64-musl@4.62.5", "", { "os": "linux", "cpu": "x64" }, "sha512-xs+OXQtEXgpXT0DmA5+U3qnRZHdCST/5HRQxS8wSPZTUZN/EMWeHuSIod32LQklTBZBV9DyfncKBQ8n5V3eFdw=="], + "@rollup/rollup-linux-x64-musl": ["@rollup/rollup-linux-x64-musl@4.63.1", "", { "os": "linux", "cpu": "x64" }, "sha512-4h6XqthmB4Hspji84wvgk+ElodTsGj+dbZqHJHHtKxj4mYq0ANSEEPX9ys3moJueqsRjwpaJYH7874Itwnj2ow=="], - "@rollup/rollup-openbsd-x64": ["@rollup/rollup-openbsd-x64@4.62.5", "", { "os": "openbsd", "cpu": "x64" }, "sha512-e7hD+sl3s+mcLQDZ8pbudBVsdG6r5yN4w3LqG2TJ8sQHDpblWj5lrJs/3m01Cvlxbt4x13zu5thLjgypgtkYzw=="], + "@rollup/rollup-openbsd-x64": ["@rollup/rollup-openbsd-x64@4.63.1", "", { "os": "openbsd", "cpu": "x64" }, "sha512-dlfCOa87o1VAYegLQ9EKilx2JCeRofiyPGhTCmqnuXZ6bMPiycO1rq1+sKoulAp7pGLIsTIw+1x5R+zgh5LhhA=="], - "@rollup/rollup-openharmony-arm64": ["@rollup/rollup-openharmony-arm64@4.62.5", "", { "os": "none", "cpu": "arm64" }, "sha512-GiyJaCf+WpMub/17aPcKk27QMl5W6f+KhdPTjlFOn5akH5Wa/DCM9Stdx5cDfmasyKB08MqpVQ1uJE2RkkpbXg=="], + "@rollup/rollup-openharmony-arm64": ["@rollup/rollup-openharmony-arm64@4.63.1", "", { "os": "none", "cpu": "arm64" }, "sha512-cjkLbOlfcm3QGhMM1J5zaZjsw1GggbN6rw9UTSSRrPrR1KkcXnN7Uq9rPw34xImQ9VOY9GN+6u2Zj80B9ptkcw=="], - "@rollup/rollup-win32-arm64-msvc": ["@rollup/rollup-win32-arm64-msvc@4.62.5", "", { "os": "win32", "cpu": "arm64" }, "sha512-+OQ8U2DdoEfXl8T4Fb18AjmEwbXMerKDKCL8yCPAYhKCEEKoul7rkbeGCBFCbAlaGaa7pmtRTpkAJM2LE/i5FA=="], + "@rollup/rollup-win32-arm64-msvc": ["@rollup/rollup-win32-arm64-msvc@4.63.1", "", { "os": "win32", "cpu": "arm64" }, "sha512-Li1KdUnWGE4N3e1F/B4RTB1ms+nG4WBgjByO46pkeBVX/2UBsY53xf5vK9WygVmnH3RwncIST7lkSdLSY6P9lg=="], - "@rollup/rollup-win32-ia32-msvc": ["@rollup/rollup-win32-ia32-msvc@4.62.5", "", { "os": "win32", "cpu": "ia32" }, "sha512-KanvAZrPKbDBFwrgiU9yEVpQoox9QPV1WZOXX7HudJQY+eSlu82CtWxDU8WtuRRvtN5EGkLczkd6Y6DTcvm9wA=="], + "@rollup/rollup-win32-ia32-msvc": ["@rollup/rollup-win32-ia32-msvc@4.63.1", "", { "os": "win32", "cpu": "ia32" }, "sha512-t4ZYOSoLTgwhuFMrmTMLx/+i1DQVK7HYqMc6kY46EApwi8X0nIVphzdNoThU3xt6n+N5urG1/gxBdCaKDLavfg=="], - "@rollup/rollup-win32-x64-gnu": ["@rollup/rollup-win32-x64-gnu@4.62.5", "", { "os": "win32", "cpu": "x64" }, "sha512-1aC3UEWTtRl3RK3VpDJ/Tqk1XI4SLTmXIthAq6wRWo8XiSXJNd+VprJM4/1P4+i6HIaFEFlVi9sTTziniD2tOQ=="], + "@rollup/rollup-win32-x64-gnu": ["@rollup/rollup-win32-x64-gnu@4.63.1", "", { "os": "win32", "cpu": "x64" }, "sha512-RgroPfMmKlD1RzSDxvwgcPiy2HNQKoYV7OmwIXDsk73uKW5t6B/V8KIy27SMv/FNXFo/oSBtWc9J0X7t91ezZg=="], - "@rollup/rollup-win32-x64-msvc": ["@rollup/rollup-win32-x64-msvc@4.62.5", "", { "os": "win32", "cpu": "x64" }, "sha512-/gDJaRs4gl0NPIwqCz+6PkpmhhjRAD2j6P4rSNHBzUkO3naEx2mIU0pRle1vUNRQ7mE/+8OOeXLTv/J56FKiQg=="], + "@rollup/rollup-win32-x64-msvc": ["@rollup/rollup-win32-x64-msvc@4.63.1", "", { "os": "win32", "cpu": "x64" }, "sha512-at8QVep6S3h5Y6gSbdGU06bRY5WJkf6WUduM9YtvYMbYhB1MOFfUgc6kehitQXzOtMSaT70q7f9ydPhpqu821w=="], - "@rsbuild/core": ["@rsbuild/core@2.1.13", "", { "dependencies": { "@rspack/core": "~2.1.10", "@swc/helpers": "^0.5.23" }, "peerDependencies": { "core-js": ">= 3.0.0" }, "optionalPeers": ["core-js"], "bin": { "rsbuild": "./bin/rsbuild.js" } }, "sha512-Z+6MzmjOio4+bFZQ24k+7ge/oNCOdXIunAssrswTNE8AIf6mcyXpJZevRXRiOEMZasRPA8VNyh+9JngQLg729Q=="], + "@rsbuild/core": ["@rsbuild/core@2.2.1", "", { "dependencies": { "@rspack/core": "~2.2.1", "@swc/helpers": "^0.5.23" }, "peerDependencies": { "core-js": ">= 3.0.0" }, "optionalPeers": ["core-js"], "bin": { "rsbuild": "./bin/rsbuild.js" } }, "sha512-JcGtG4bo7PBihj6fBL6gaxaJihqLf7nGWW/t4zEmXpMJkV6XNdr1jAo9B0xI4mLAOmtFeva8cUbn9SE2ZEmAIw=="], "@rsbuild/plugin-react": ["@rsbuild/plugin-react@2.1.0", "", { "dependencies": { "@rspack/plugin-react-refresh": "^2.0.2", "react-refresh": "^0.18.0" }, "peerDependencies": { "@rsbuild/core": "^2.0.0" }, "optionalPeers": ["@rsbuild/core"] }, "sha512-RQTIAWB/CwPjoWt9iAl+8HixeQVgZ7kEIBrWPCixfITyHdiD84h0YpUTpEUuz6kGHw1KXT9mHZ3Rwy6WG7aRDA=="], - "@rspack/binding": ["@rspack/binding@2.1.10", "", { "optionalDependencies": { "@rspack/binding-darwin-arm64": "2.1.10", "@rspack/binding-darwin-x64": "2.1.10", "@rspack/binding-linux-arm64-gnu": "2.1.10", "@rspack/binding-linux-arm64-musl": "2.1.10", "@rspack/binding-linux-ppc64-gnu": "2.1.10", "@rspack/binding-linux-riscv64-gnu": "2.1.10", "@rspack/binding-linux-riscv64-musl": "2.1.10", "@rspack/binding-linux-s390x-gnu": "2.1.10", "@rspack/binding-linux-x64-gnu": "2.1.10", "@rspack/binding-linux-x64-musl": "2.1.10", "@rspack/binding-wasm32-wasi": "2.1.10", "@rspack/binding-win32-arm64-msvc": "2.1.10", "@rspack/binding-win32-ia32-msvc": "2.1.10", "@rspack/binding-win32-x64-msvc": "2.1.10" } }, "sha512-vnu/UP5HnrND15lO9+VeG6eUrbTyycHNQNQ3XEiRiFojuoiGZkIZC3Hbzr8qQH44C6vScPODEPvvIVvLcO2LpQ=="], + "@rspack/binding": ["@rspack/binding@2.2.1", "", { "optionalDependencies": { "@rspack/binding-darwin-arm64": "2.2.1", "@rspack/binding-darwin-x64": "2.2.1", "@rspack/binding-linux-arm64-gnu": "2.2.1", "@rspack/binding-linux-arm64-musl": "2.2.1", "@rspack/binding-linux-ppc64-gnu": "2.2.1", "@rspack/binding-linux-riscv64-gnu": "2.2.1", "@rspack/binding-linux-riscv64-musl": "2.2.1", "@rspack/binding-linux-s390x-gnu": "2.2.1", "@rspack/binding-linux-x64-gnu": "2.2.1", "@rspack/binding-linux-x64-musl": "2.2.1", "@rspack/binding-wasm32-wasi": "2.2.1", "@rspack/binding-win32-arm64-msvc": "2.2.1", "@rspack/binding-win32-ia32-msvc": "2.2.1", "@rspack/binding-win32-x64-msvc": "2.2.1" } }, "sha512-56TqztuEMd+aHGv1jDXnkJQGSLTb4NoO146flFxJqPG8931UdXPO2pNR9M0Q2Pz+GvmO0fLHGPLYBHoRVrRlHw=="], - "@rspack/binding-darwin-arm64": ["@rspack/binding-darwin-arm64@2.1.10", "", { "os": "darwin", "cpu": "arm64" }, "sha512-DZlcTpbIb2mjeS1aSG4k01UH33Zj7T+k8ZylPK6HmsKs4JvK4wgpWFC78WVv3p/Aj3MZS6DwtDLwpZ2Ihj/fpg=="], + "@rspack/binding-darwin-arm64": ["@rspack/binding-darwin-arm64@2.2.1", "", { "os": "darwin", "cpu": "arm64" }, "sha512-Y/Naw/7V76QiUYdYRuBzBZtzRjt/3fjDUuF8GK0+/BO7BP1RrpY4tk1ln+iiqegRUD8u9uGn08fi8No1rwfyUg=="], - "@rspack/binding-darwin-x64": ["@rspack/binding-darwin-x64@2.1.10", "", { "os": "darwin", "cpu": "x64" }, "sha512-my/0h2LwxCRT6cg3oDDC2e0ZOxQLVajAdIcv0fqnQk5JRNvVuL89PuTutitnSqie1A0/JSL8OQz5XHwmoS3kow=="], + "@rspack/binding-darwin-x64": ["@rspack/binding-darwin-x64@2.2.1", "", { "os": "darwin", "cpu": "x64" }, "sha512-rTIG/xZIW7RbEEuMR9hnNn5dv3fDBpX0N4FAQUwfhUYy3tN2+3vibTTq/Nj1Sd9Vn4yWydbWIEwBX6m/aGejig=="], - "@rspack/binding-linux-arm64-gnu": ["@rspack/binding-linux-arm64-gnu@2.1.10", "", { "os": "linux", "cpu": "arm64" }, "sha512-laevn9g+E5PAUEGqiKe6Ju5KApsuQYp+bPI17XS3Lkl8eqL5pS/BmHYU7QMlst4GzV8+wlruVTMh//+st6Vqzg=="], + "@rspack/binding-linux-arm64-gnu": ["@rspack/binding-linux-arm64-gnu@2.2.1", "", { "os": "linux", "cpu": "arm64" }, "sha512-53rAMU6Hqiat21IMU1hTt4Si2F33h+ZbXOt+Y18W39AFjcwmleIBId2u7beqJeGXLJuBgIAm31jcbJj/PN7mWQ=="], - "@rspack/binding-linux-arm64-musl": ["@rspack/binding-linux-arm64-musl@2.1.10", "", { "os": "linux", "cpu": "arm64" }, "sha512-V71+Qz5G72+ROZXrJn5zxOszdG1AEbO8pcC/itXXtf4yRR6a3bVHKNKGhipBNxb8eI6cnD/01FH1h3ZG655jLw=="], + "@rspack/binding-linux-arm64-musl": ["@rspack/binding-linux-arm64-musl@2.2.1", "", { "os": "linux", "cpu": "arm64" }, "sha512-o7zFiWkt4MqSfSdTbxUdF27fcrWKpRizcuVB8H3yd2G6xW9V2OfYbhVGQnOlbKi+GK74RkCmoJtANB+QboIqKQ=="], - "@rspack/binding-linux-ppc64-gnu": ["@rspack/binding-linux-ppc64-gnu@2.1.10", "", { "os": "linux", "cpu": "ppc64" }, "sha512-U7HlNzHcDtZ+LYOtOJmtx67kHEybZzUUAaP7aEXjGYO5WTCgh/176sW2UYP0rmZLrgUNFUuzn+B98RLaClNaVg=="], + "@rspack/binding-linux-ppc64-gnu": ["@rspack/binding-linux-ppc64-gnu@2.2.1", "", { "os": "linux", "cpu": "ppc64" }, "sha512-pvx1oeg1z7cr8OcNt7PAt1SJTHzdsN/pvu7HkGnfks2fWE7GDs9DLL2KvN7tUkzQvJm6bGgUwqSCOrqV4uSwAg=="], - "@rspack/binding-linux-riscv64-gnu": ["@rspack/binding-linux-riscv64-gnu@2.1.10", "", { "os": "linux", "cpu": "none" }, "sha512-GMGTJpy9/ecE+5F5IfxZH4bXv0Wx/b2TiehTlCbTksbL+pKpLHYy0rwGdjWDKbmBkhxMMqPiC7PDnn9LbdnnLA=="], + "@rspack/binding-linux-riscv64-gnu": ["@rspack/binding-linux-riscv64-gnu@2.2.1", "", { "os": "linux", "cpu": "none" }, "sha512-WQ6P94Wz2tgwOsgifTWP2/bV63iZH5+rkxngQwF22FC8KmIXXy/Yug7lyMH1ld8Hzg4p1qXjBBr4i1cCyJTR+w=="], - "@rspack/binding-linux-riscv64-musl": ["@rspack/binding-linux-riscv64-musl@2.1.10", "", { "os": "linux", "cpu": "none" }, "sha512-rkurnAWc04vIbzG1QCrPBWSJadZvaOt1mazFH3EdiJO8VUiu0I1T9zdiwuDOPrd50lOKIZlcTXbd5aaAkWEnvQ=="], + "@rspack/binding-linux-riscv64-musl": ["@rspack/binding-linux-riscv64-musl@2.2.1", "", { "os": "linux", "cpu": "none" }, "sha512-GEFUFHQkjKU7OYyHXnrIo8wWcUHM7jeKov5z6Lxd3i+3hKo11yBOgb7b+uD94Rx2tPuWF4jyFdWmcNu46Njb/A=="], - "@rspack/binding-linux-s390x-gnu": ["@rspack/binding-linux-s390x-gnu@2.1.10", "", { "os": "linux", "cpu": "s390x" }, "sha512-X+DyxkriZEAF/wihI7ERDv+CAS0mbMv36aEuQ+vXzTlvS6cSmpou/r29AHbvIF3NlG1UeAbDVlOs9QrMBZjpUQ=="], + "@rspack/binding-linux-s390x-gnu": ["@rspack/binding-linux-s390x-gnu@2.2.1", "", { "os": "linux", "cpu": "s390x" }, "sha512-Cqw2UjSmFGZaw1EjQXClKDud86ThynGEEIazy2PZfPzZG4WjICK1WjdeFCJd7xWsSbUQ3jGyzb7/EHiDVa+sKA=="], - "@rspack/binding-linux-x64-gnu": ["@rspack/binding-linux-x64-gnu@2.1.10", "", { "os": "linux", "cpu": "x64" }, "sha512-Fat09V6jUuyo9qG7Wyj9cQ31VDfLmokXyBtGqKxY5OvSWHereB7QUub5btbPXHwbp6Iq4aAQyUbbLTzvR1YaBw=="], + "@rspack/binding-linux-x64-gnu": ["@rspack/binding-linux-x64-gnu@2.2.1", "", { "os": "linux", "cpu": "x64" }, "sha512-QX+gRxg2CS9ri2fUG5eNurdsrOCWoJ56SsD2O7kcVGiRm+S2+muNb/QhkdkAdt/u/m++7Ve5TMIpHTnaKYCpCw=="], - "@rspack/binding-linux-x64-musl": ["@rspack/binding-linux-x64-musl@2.1.10", "", { "os": "linux", "cpu": "x64" }, "sha512-lhHOnIJ4ClpIlA1f1L8aoxEZivYLjnjq5A6jKKz7BKsm+cHK8kqqEm6lO5KqA5xQT0Lonq1o28bmKHEj6JHInw=="], + "@rspack/binding-linux-x64-musl": ["@rspack/binding-linux-x64-musl@2.2.1", "", { "os": "linux", "cpu": "x64" }, "sha512-mBZQl1NdGbEB3y5M9d0tkuF7RL1GLz3Hb3gqFa3QRZBymP9PCV83Jiji8s2PJimNUJIVcdZRIw8+VGYs/35c2A=="], - "@rspack/binding-wasm32-wasi": ["@rspack/binding-wasm32-wasi@2.1.10", "", { "dependencies": { "@emnapi/core": "1.11.3", "@emnapi/runtime": "1.11.3", "@napi-rs/wasm-runtime": "1.1.6" }, "cpu": "none" }, "sha512-KY5YbWbuvYcoaLXnV+vzZOvGRCeb6jt4EpVpKdph1h1IJjwX/ju15EQ+GOe3iecZEdf0OttQcNVcwBkLkFT9ag=="], + "@rspack/binding-wasm32-wasi": ["@rspack/binding-wasm32-wasi@2.2.1", "", { "dependencies": { "@emnapi/core": "1.11.3", "@emnapi/runtime": "1.11.3", "@napi-rs/wasm-runtime": "1.1.6" }, "cpu": "none" }, "sha512-/d2ImKDS+lT+FJ07MxKBeUkTat84tr2Nm2+nIRt8HmZK7/N8odkQml9vb4MHr8E7oYOp4B+jm6W5frdRzKrkJQ=="], - "@rspack/binding-win32-arm64-msvc": ["@rspack/binding-win32-arm64-msvc@2.1.10", "", { "os": "win32", "cpu": "arm64" }, "sha512-z4GWzMLofaDGpAt9Z+MlN88LlUBDm+zM6R2GdOOPM6/4g/h3/+47OP7casmSL3AwTGYBEJqogwt08sRSosB6Cg=="], + "@rspack/binding-win32-arm64-msvc": ["@rspack/binding-win32-arm64-msvc@2.2.1", "", { "os": "win32", "cpu": "arm64" }, "sha512-TfmaKPF3KC7uoZb6A+8ZUbLS8g8P5EdeXFGLCaJ+UgdkJ20TsapcfJXZXWNnKzFEkV8dUO/t5oNxNLYy2URusw=="], - "@rspack/binding-win32-ia32-msvc": ["@rspack/binding-win32-ia32-msvc@2.1.10", "", { "os": "win32", "cpu": "ia32" }, "sha512-7qcWdsZ+GuGtzKjqgy7wTN7Dso/ezIY8yhx1r2yIbcczdmXj4FhaEampMDp/25HwtKwIGBBoh6HHSt3JWxpTUg=="], + "@rspack/binding-win32-ia32-msvc": ["@rspack/binding-win32-ia32-msvc@2.2.1", "", { "os": "win32", "cpu": "ia32" }, "sha512-rdBXayngvpQFMSUIC4b71FDZrSBJszSHNEkln/Nis3a17DMAE7IkgJcqe7SqLWbk2OPF/N920AOWmBEDQQCaMg=="], - "@rspack/binding-win32-x64-msvc": ["@rspack/binding-win32-x64-msvc@2.1.10", "", { "os": "win32", "cpu": "x64" }, "sha512-pgp23pLrzfhGnKycxzr7ifP17lAbWZEfnx1bX8gXtYrnpJ66DRNyTKSzxB6sa/HBWjS1L8PX5TjMZ44WfPydqQ=="], + "@rspack/binding-win32-x64-msvc": ["@rspack/binding-win32-x64-msvc@2.2.1", "", { "os": "win32", "cpu": "x64" }, "sha512-l3K4s7nrQJc+3LacPFjZGjX8Jk1sf8Q4TK6IXAsdSucOjTqYSpD8PMl2NUXCBDXOl8T2V4v323z1LfxwW8BPmA=="], - "@rspack/core": ["@rspack/core@2.1.10", "", { "dependencies": { "@rspack/binding": "2.1.10" }, "peerDependencies": { "@module-federation/runtime-tools": "^0.24.1 || ^2.0.0", "@swc/helpers": "^0.5.23" }, "optionalPeers": ["@module-federation/runtime-tools", "@swc/helpers"] }, "sha512-YSS2/Xxz8uiG/KXDkqOoA3dTetNo/vysk7bAexQOrU8iuq7JuzDTTAwLKvWZnwmvME8M8m5wcM4YvfIwYmidHA=="], + "@rspack/core": ["@rspack/core@2.2.1", "", { "dependencies": { "@rspack/binding": "2.2.1" }, "peerDependencies": { "@module-federation/runtime-tools": "^0.24.1 || ^2.0.0", "@swc/helpers": "^0.5.23" }, "optionalPeers": ["@module-federation/runtime-tools", "@swc/helpers"] }, "sha512-EHFX2oWCY1HkHJkG/Ev8HXCcl4gQzgETyairdIlBkKaypuW8i7kowBxUFzpHHg/ObF70vB3focToel9Wwg4MRA=="], "@rspack/plugin-react-refresh": ["@rspack/plugin-react-refresh@2.0.2", "", { "peerDependencies": { "@rspack/core": "^2.0.0", "react-refresh": ">=0.10.0 <1.0.0" }, "optionalPeers": ["@rspack/core"] }, "sha512-dGNZiCxQxgAUI9sah7gd8u+O7OJZRCmqtEJNDOd8xW5RqcieC86F7p5qcShyw6onH5pKf57evpr2VjGbaFGkZg=="], @@ -1512,15 +1515,15 @@ "@tailwindcss/postcss": ["@tailwindcss/postcss@4.3.3", "", { "dependencies": { "@alloc/quick-lru": "^5.2.0", "@tailwindcss/node": "4.3.3", "@tailwindcss/oxide": "4.3.3", "postcss": "^8.5.16", "tailwindcss": "4.3.3" } }, "sha512-JTSZZGQi1AyKirbLN3azmjVzef92tcX7h+iSqPdaeStyFpGpDlKvvpxeOE8njhbUanbRwr3z8DyzhICWnMtQeg=="], - "@tanstack/eslint-plugin-query": ["@tanstack/eslint-plugin-query@5.101.4", "", { "dependencies": { "@typescript-eslint/utils": "^8.58.1" }, "peerDependencies": { "eslint": "^8.57.0 || ^9.0.0 || ^10.0.0", "typescript": "^5.4.0 || ^6.0.0" }, "optionalPeers": ["typescript"] }, "sha512-jqAZJWXGd5PthJYH9wmC2O5Ry5xAN2/7zxi9qcANQ+Xix8V5JkqNRjZ8Fh+rYzqzVYGiHqbrHekt+uh38OZVpw=="], + "@tanstack/eslint-plugin-query": ["@tanstack/eslint-plugin-query@5.102.8", "", { "dependencies": { "@typescript-eslint/utils": "^8.58.1" }, "peerDependencies": { "eslint": "^8.57.0 || ^9.0.0 || ^10.0.0", "typescript": "^5.6.0 || ^6.0.0 || ^7.0.0" }, "optionalPeers": ["typescript"] }, "sha512-zRjG2PL3zvoqnsSNJFyfX5Mo+OwRwTbLERwZVO3oNQQn82V949INwaLrprzsOW/ivuow7gASeAUUC24xH7kwSQ=="], "@testing-library/dom": ["@testing-library/dom@10.4.1", "", { "dependencies": { "@babel/code-frame": "^7.10.4", "@babel/runtime": "^7.12.5", "@types/aria-query": "^5.0.1", "aria-query": "5.3.0", "dom-accessibility-api": "^0.5.9", "lz-string": "^1.5.0", "picocolors": "1.1.1", "pretty-format": "^27.0.2" } }, "sha512-o4PXJQidqJl82ckFaXUeoAW+XysPLauYI43Abki5hABd853iMhitooc6znOnczgbTYmEP6U6/y1ZyKAIsvMKGg=="], "@testing-library/jest-dom": ["@testing-library/jest-dom@7.0.1", "", { "dependencies": { "@adobe/css-tools": "^4.4.0", "aria-query": "^5.0.0", "css.escape": "^1.5.1", "dom-accessibility-api": "^0.6.3", "picocolors": "^1.1.1", "redent": "^3.0.0" }, "peerDependencies": { "@testing-library/dom": ">=10 <11", "vitest": ">= 0.32" }, "optionalPeers": ["vitest"] }, "sha512-oMDTC3oA+6CXSO2JZnvOI7CA6oVub6kij5ggk9ohwye5slmkwxYDXcPOVxgMw/RQlticjtO0C1RZkR97HgrWMw=="], - "@testing-library/react": ["@testing-library/react@16.3.2", "", { "dependencies": { "@babel/runtime": "^7.12.5" }, "peerDependencies": { "@testing-library/dom": "^10.0.0", "@types/react": "^18.0.0 || ^19.0.0", "@types/react-dom": "^18.0.0 || ^19.0.0", "react": "^18.0.0 || ^19.0.0", "react-dom": "^18.0.0 || ^19.0.0" }, "optionalPeers": ["@types/react", "@types/react-dom"] }, "sha512-XU5/SytQM+ykqMnAnvB2umaJNIOsLF3PVv//1Ew4CTcpz0/BRyy/af40qqrt7SjKpDdT1saBMc42CUok5gaw+g=="], + "@testing-library/react": ["@testing-library/react@16.3.3", "", { "dependencies": { "@babel/runtime": "^7.12.5" }, "peerDependencies": { "@testing-library/dom": "^10.0.0", "@types/react": "^18.0.0 || ^19.0.0", "@types/react-dom": "^18.0.0 || ^19.0.0", "react": "^18.0.0 || ^19.0.0", "react-dom": "^18.0.0 || ^19.0.0" }, "optionalPeers": ["@types/react", "@types/react-dom"] }, "sha512-Uo193NgQbPMz6lrrhtRQQFcMC6Re/ELLFbbuVL30WDlZxlpZf9/lMHTAVxPRLw1q1iu9OJmR1c2BLiENRstdBg=="], - "@testing-library/user-event": ["@testing-library/user-event@14.6.5", "", { "peerDependencies": { "@testing-library/dom": ">=7.21.4" } }, "sha512-FhqjldLTpteueBaKflhNFlMT3+PM0O5fiBUivht6b9CZ1eesJyy7+g3Jr7XwJzt/Hip3ZG5hWwK1MX1FuDiE4w=="], + "@testing-library/user-event": ["@testing-library/user-event@14.6.6", "", { "peerDependencies": { "@testing-library/dom": ">=7.21.4" } }, "sha512-Jbs9FpkkIDw8FgSc6kOVsOv8JuuqGAL7J4X1oot77JxAoDlkNn2GRkd0aYRVuQ+pVQAiHWVkE4rX/dkF5fBiCw=="], "@ts-morph/common": ["@ts-morph/common@0.29.0", "", { "dependencies": { "minimatch": "^10.0.1", "path-browserify": "^1.0.1", "tinyglobby": "^0.2.14" } }, "sha512-35oUmphHbJvQ/+UTwFNme/t2p3FoKiGJ5auTjjpNTop2dyREspirjMy82PLSC1pnDJ8ah1GU98hwpVt64YXQsg=="], @@ -1572,7 +1575,7 @@ "@types/ms": ["@types/ms@2.1.0", "", {}, "sha512-GsCCIZDE/p3i96vtEqx+7dBUGXrc7zeSK3wwPHIaRThS+9OhWIXRqzs4d6k1SVU8g91DrNRWxWUGhp5KXQb2VA=="], - "@types/node": ["@types/node@26.2.0", "", { "dependencies": { "undici-types": "~8.3.0" } }, "sha512-5IviulTZeRNp2vAJ514cc/HUlY5nZ9fCbq9DMyC52BrhFZACo3nI0R7qBxhQmo/d27NFe96ur/b7Wwxklda+kg=="], + "@types/node": ["@types/node@26.4.0", "", { "dependencies": { "undici-types": "~8.3.0" } }, "sha512-faiGnoIrLH/V8cibOMEAZ8pMw6oXqSukl29ra4mN8GdaB2ZewzeaLj+INpV5N+Z1eKWzY+IzaIZH2EIR6YZRNQ=="], "@types/parse-json": ["@types/parse-json@4.0.2", "", {}, "sha512-dISoDXWWQwUquiKsyZ4Ng+HX2KsPL7LyHKHQwgGFEA3IaKac4Obd+h2a/a6waisAoepJlBcx9paWqjA8/HVjCw=="], @@ -1582,7 +1585,7 @@ "@types/react": ["@types/react@19.2.18", "", { "dependencies": { "csstype": "^3.2.2" } }, "sha512-AnzbBERsrLKtk2XSfTbYRLjQPdy116Sty4q+T+Bp3IC4l6jNBvreVPAHmpq9qhXQM7CXZPjLVmGMw9sy+hxQ3w=="], - "@types/react-dom": ["@types/react-dom@19.2.4", "", { "peerDependencies": { "@types/react": "^19.2.0" } }, "sha512-Bsc+QHgp+P/F02XDzNCY9jnZNCUuLki36KT7VKrTXXLdHf+vHMNZnW1rVu5DNW/rCK+fya3DATySbLM4yhtKUw=="], + "@types/react-dom": ["@types/react-dom@19.2.5", "", { "peerDependencies": { "@types/react": "^19.2.0" } }, "sha512-fMPwH9v7r/pp43yUd2/Mbiex5KouJwwR3dzHkhLREUC6764VyDsqxhAxv6OFEYR1RhjOyD1naqba8ECDBe7ZQg=="], "@types/react-syntax-highlighter": ["@types/react-syntax-highlighter@15.5.13", "", { "dependencies": { "@types/react": "*" } }, "sha512-uLGJ87j6Sz8UaBAooU0T6lWJ0dBmjZgN1PZTrj05TNql2/XpC6+4HhMT5syIdFUUt+FASfCeLLv4kBygNU+8qA=="], @@ -1604,27 +1607,29 @@ "@types/ws": ["@types/ws@8.18.1", "", { "dependencies": { "@types/node": "*" } }, "sha512-ThVF6DCVhA8kUGy+aazFQ4kXQ7E1Ty7A3ypFOe0IcJV8O/M511G99AW24irKrW56Wt44yG9+ij8FaqoBGkuBXg=="], - "@typescript-eslint/eslint-plugin": ["@typescript-eslint/eslint-plugin@8.67.0", "", { "dependencies": { "@eslint-community/regexpp": "^4.12.2", "@typescript-eslint/scope-manager": "8.67.0", "@typescript-eslint/type-utils": "8.67.0", "@typescript-eslint/utils": "8.67.0", "@typescript-eslint/visitor-keys": "8.67.0", "ignore": "^7.0.5", "natural-compare": "^1.4.0", "ts-api-utils": "^2.5.0" }, "peerDependencies": { "@typescript-eslint/parser": "^8.67.0", "eslint": "^8.57.0 || ^9.0.0 || ^10.0.0", "typescript": ">=4.8.4 <6.1.0" } }, "sha512-Un7Heoyj65NREbKAyIrFxeM143NZpExWmy1Nep4DLeQOeLlTeumPjoNKnBrU5D5moWXbPJgRa5Uwcdu0faVNGQ=="], + "@typescript-eslint/eslint-plugin": ["@typescript-eslint/eslint-plugin@8.68.0", "", { "dependencies": { "@eslint-community/regexpp": "^4.12.2", "@typescript-eslint/scope-manager": "8.68.0", "@typescript-eslint/type-utils": "8.68.0", "@typescript-eslint/utils": "8.68.0", "@typescript-eslint/visitor-keys": "8.68.0", "ignore": "^7.0.5", "natural-compare": "^1.4.0", "ts-api-utils": "^2.5.0" }, "peerDependencies": { "@typescript-eslint/parser": "^8.68.0", "eslint": "^8.57.0 || ^9.0.0 || ^10.0.0", "typescript": ">=4.8.4 <6.1.0" } }, "sha512-WASHDpCm6qO5jj9g1a+8NiW5+GCkAyLReR56/4VruYmNgfUmqpxOfZ2Yfb8xGfJPWv5Qi6LSD8sXdces3vbp/Q=="], + + "@typescript-eslint/parser": ["@typescript-eslint/parser@8.68.0", "", { "dependencies": { "@typescript-eslint/scope-manager": "8.68.0", "@typescript-eslint/types": "8.68.0", "@typescript-eslint/typescript-estree": "8.68.0", "@typescript-eslint/visitor-keys": "8.68.0", "debug": "^4.4.3" }, "peerDependencies": { "eslint": "^8.57.0 || ^9.0.0 || ^10.0.0", "typescript": ">=4.8.4 <6.1.0" } }, "sha512-fHq2VC1kpyYfvEcbiMjOpySY4WS7voEp89yAThrHRX5sm9j2lzYppCb2umFMEed4fWcyeLjHxrz0mpjNBaBxMQ=="], - "@typescript-eslint/parser": ["@typescript-eslint/parser@8.67.0", "", { "dependencies": { "@typescript-eslint/scope-manager": "8.67.0", "@typescript-eslint/types": "8.67.0", "@typescript-eslint/typescript-estree": "8.67.0", "@typescript-eslint/visitor-keys": "8.67.0", "debug": "^4.4.3" }, "peerDependencies": { "eslint": "^8.57.0 || ^9.0.0 || ^10.0.0", "typescript": ">=4.8.4 <6.1.0" } }, "sha512-fUBfTuuEulWqX6V8+O3PtScV01tzYYRUDTAirHFKoRAt7nOzoGiPt0M/bB47wWNy0coOOcgEwAMUtBpykMxl6w=="], + "@typescript-eslint/project-service": ["@typescript-eslint/project-service@8.68.0", "", { "dependencies": { "@typescript-eslint/tsconfig-utils": "^8.68.0", "@typescript-eslint/types": "^8.68.0", "debug": "^4.4.3" }, "peerDependencies": { "typescript": ">=4.8.4 <6.1.0" } }, "sha512-5GQtWZCXFcFYux955pvoS02WLc49pXNlvIxocKjS0clvwo3in1RdlzVKyiqQH9vE5AKWFLTaUgeQkOrTS+0Qxw=="], - "@typescript-eslint/project-service": ["@typescript-eslint/project-service@8.67.0", "", { "dependencies": { "@typescript-eslint/tsconfig-utils": "^8.67.0", "@typescript-eslint/types": "^8.67.0", "debug": "^4.4.3" }, "peerDependencies": { "typescript": ">=4.8.4 <6.1.0" } }, "sha512-cvE8c7ulYeXN9fYuszhCeCsbzyVEXuhrRCybnBre7TUmqb5nRmBfQAwCj0O3WJFDeyAZt4VYv51vMCC9LHSdYw=="], + "@typescript-eslint/rule-tester": ["@typescript-eslint/rule-tester@8.68.0", "", { "dependencies": { "@typescript-eslint/parser": "8.68.0", "@typescript-eslint/typescript-estree": "8.68.0", "@typescript-eslint/utils": "8.68.0", "ajv": "^6.12.6", "json-stable-stringify-without-jsonify": "^1.0.1", "lodash.merge": "4.6.2", "semver": "^7.7.3" }, "peerDependencies": { "eslint": "^8.57.0 || ^9.0.0 || ^10.0.0", "typescript": ">=4.8.4 <6.1.0" } }, "sha512-sKEZYhHPtTXGGDu7RC+xAXLvBQt1fqojRmfOglKRnAJwmv+/d/DAgrvAGkwuMV01QTckGmsU0+gkn7qv09rhuQ=="], - "@typescript-eslint/rule-tester": ["@typescript-eslint/rule-tester@8.67.0", "", { "dependencies": { "@typescript-eslint/parser": "8.67.0", "@typescript-eslint/typescript-estree": "8.67.0", "@typescript-eslint/utils": "8.67.0", "ajv": "^6.12.6", "json-stable-stringify-without-jsonify": "^1.0.1", "lodash.merge": "4.6.2", "semver": "^7.7.3" }, "peerDependencies": { "eslint": "^8.57.0 || ^9.0.0 || ^10.0.0", "typescript": ">=4.8.4 <6.1.0" } }, "sha512-aOPA7+XgoRe4idCQZH9V1+ObHW6wslSp/GWwXoRwsTFUW1AZnHVvcnCFvQwTUdDtOhzwT3F/G2nOls7UuiOBiA=="], + "@typescript-eslint/scope-manager": ["@typescript-eslint/scope-manager@8.68.0", "", { "dependencies": { "@typescript-eslint/types": "8.68.0", "@typescript-eslint/visitor-keys": "8.68.0" } }, "sha512-T5eXpcaJNg8bhjHJ8Rjp68Vq/QBteYtTKY8TZqVNPaUbuz0f6jI9t6aDkylwvalpAB9XTTFeFOjrjXAZ3YvmVA=="], - "@typescript-eslint/scope-manager": ["@typescript-eslint/scope-manager@8.67.0", "", { "dependencies": { "@typescript-eslint/types": "8.67.0", "@typescript-eslint/visitor-keys": "8.67.0" } }, "sha512-EgvsleTwS4E+WzzSvem8fAUubLwatMNF1B5hHSLQxcvs7q2dtRhGyujHwLJSYlG41niJ7GP24Aha2+0mb1b2kg=="], + "@typescript-eslint/tsconfig-utils": ["@typescript-eslint/tsconfig-utils@8.68.0", "", { "peerDependencies": { "typescript": ">=4.8.4 <6.1.0" } }, "sha512-F7zrGQfiJHojPwi8vhxZQC1tWtJzvL74cK/nqri2lk8YUXvYaYwl263xOJ69jDWPUk1hmcdoayFwk9lX09npVw=="], - "@typescript-eslint/tsconfig-utils": ["@typescript-eslint/tsconfig-utils@8.67.0", "", { "peerDependencies": { "typescript": ">=4.8.4 <6.1.0" } }, "sha512-vV+LUSv5njUWsknE71fqKTlXUva+R76SaeORd6Zojcunk/6DvKFXONU3BrAs2H49mbygUXt6gbYunzwqNwlhdg=="], + "@typescript-eslint/type-utils": ["@typescript-eslint/type-utils@8.68.0", "", { "dependencies": { "@typescript-eslint/types": "8.68.0", "@typescript-eslint/typescript-estree": "8.68.0", "@typescript-eslint/utils": "8.68.0", "debug": "^4.4.3", "ts-api-utils": "^2.5.0" }, "peerDependencies": { "eslint": "^8.57.0 || ^9.0.0 || ^10.0.0", "typescript": ">=4.8.4 <6.1.0" } }, "sha512-X77zqoY1EjeWGs/0JNxeaMfp5C5lIz4Tw8y66F1Ne8Faq6g424sBNYM6xBAqElfGZPLpWS+CZAp0DXyKDzWiHg=="], - "@typescript-eslint/type-utils": ["@typescript-eslint/type-utils@8.67.0", "", { "dependencies": { "@typescript-eslint/types": "8.67.0", "@typescript-eslint/typescript-estree": "8.67.0", "@typescript-eslint/utils": "8.67.0", "debug": "^4.4.3", "ts-api-utils": "^2.5.0" }, "peerDependencies": { "eslint": "^8.57.0 || ^9.0.0 || ^10.0.0", "typescript": ">=4.8.4 <6.1.0" } }, "sha512-aVWDXbRmdXO9siTfX4ditQI1T9+zVcNazT48EJCD0v40/9RIFoUgZ05CmGEq9H2gixRpjUn/iplwvlcvutJW/Q=="], + "@typescript-eslint/types": ["@typescript-eslint/types@8.68.0", "", {}, "sha512-9RnpsGJjrAllCMefGVVsImJM24YurhC0Q1h4UbvivtvOqXmR/vEJge2OoE++z9m6hyg8T1Q8t5SNT6tHSbrxcg=="], - "@typescript-eslint/types": ["@typescript-eslint/types@8.67.0", "", {}, "sha512-sBtgslww8nsMYUjhdPBiSyUqSzT8uR6g93A2QXnQC8+cGdjz0CyaOdqHDRJb1AtORbZCNUJBBeFA/tNR2uQmww=="], + "@typescript-eslint/typescript-estree": ["@typescript-eslint/typescript-estree@8.68.0", "", { "dependencies": { "@typescript-eslint/project-service": "8.68.0", "@typescript-eslint/tsconfig-utils": "8.68.0", "@typescript-eslint/types": "8.68.0", "@typescript-eslint/visitor-keys": "8.68.0", "debug": "^4.4.3", "minimatch": "^10.2.2", "semver": "^7.7.3", "tinyglobby": "^0.2.15", "ts-api-utils": "^2.5.0" }, "peerDependencies": { "typescript": ">=4.8.4 <6.1.0" } }, "sha512-OKKsD0tYmoNiU5PW2zehO1yO56jYOm1ShYlxon/Z0SJNidAkdVg86eg9ruRuoXf8xfnuWZGbwDsStkoXbZtIIA=="], - "@typescript-eslint/typescript-estree": ["@typescript-eslint/typescript-estree@8.67.0", "", { "dependencies": { "@typescript-eslint/project-service": "8.67.0", "@typescript-eslint/tsconfig-utils": "8.67.0", "@typescript-eslint/types": "8.67.0", "@typescript-eslint/visitor-keys": "8.67.0", "debug": "^4.4.3", "minimatch": "^10.2.2", "semver": "^7.7.3", "tinyglobby": "^0.2.15", "ts-api-utils": "^2.5.0" }, "peerDependencies": { "typescript": ">=4.8.4 <6.1.0" } }, "sha512-EKQBCE9yNlRJYm7jdTW5AhDacDUmSwQb0FAJAmK2EKYrNXIsa2vxcSZx6PvJ/dEdI6lS+Y9W+EXckLj0iPFGcw=="], + "@typescript-eslint/utils": ["@typescript-eslint/utils@8.68.0", "", { "dependencies": { "@eslint-community/eslint-utils": "^4.9.1", "@typescript-eslint/scope-manager": "8.68.0", "@typescript-eslint/types": "8.68.0", "@typescript-eslint/typescript-estree": "8.68.0" }, "peerDependencies": { "eslint": "^8.57.0 || ^9.0.0 || ^10.0.0", "typescript": ">=4.8.4 <6.1.0" } }, "sha512-PB5gJMMOg0Q5P1tsgWtEAqQacJXq0qEqRHDX/YJ4FaTMLfZPpHB3gjl2EJuiZyPABxmj4ZQYiY9m1bdAJ5y7tQ=="], - "@typescript-eslint/utils": ["@typescript-eslint/utils@8.67.0", "", { "dependencies": { "@eslint-community/eslint-utils": "^4.9.1", "@typescript-eslint/scope-manager": "8.67.0", "@typescript-eslint/types": "8.67.0", "@typescript-eslint/typescript-estree": "8.67.0" }, "peerDependencies": { "eslint": "^8.57.0 || ^9.0.0 || ^10.0.0", "typescript": ">=4.8.4 <6.1.0" } }, "sha512-U9D1FdwEWBwok3hxxSdhclMb0twvt9QnjIQ0VfQ1AiX2epnpSgv2ubVDsayOFyY8K6FX+AQ7E0FKWVG3iKsj1A=="], + "@typescript-eslint/visitor-keys": ["@typescript-eslint/visitor-keys@8.68.0", "", { "dependencies": { "@typescript-eslint/types": "8.68.0", "eslint-visitor-keys": "^5.0.0" } }, "sha512-YR65gGdGvTUAWLldC3xLOvOzamdGzB4A5/N8rehEaHs3Zvoe39BhgY+u0SPch1OvrVTfLcc55wsSgK2NcnTS/A=="], - "@typescript-eslint/visitor-keys": ["@typescript-eslint/visitor-keys@8.67.0", "", { "dependencies": { "@typescript-eslint/types": "8.67.0", "eslint-visitor-keys": "^5.0.0" } }, "sha512-fkv8dHRDqfGtTHuJeebdrQ7cX6Ad4WAS00rgHh9UGvMycF1mjBfsxry1XsLIFhWZ6Judlh6UdzK+TYlbpCXgnA=="], + "@typescript/native": ["typescript@7.0.2", "", { "optionalDependencies": { "@typescript/typescript-aix-ppc64": "7.0.2", "@typescript/typescript-darwin-arm64": "7.0.2", "@typescript/typescript-darwin-x64": "7.0.2", "@typescript/typescript-freebsd-arm64": "7.0.2", "@typescript/typescript-freebsd-x64": "7.0.2", "@typescript/typescript-linux-arm": "7.0.2", "@typescript/typescript-linux-arm64": "7.0.2", "@typescript/typescript-linux-loong64": "7.0.2", "@typescript/typescript-linux-mips64el": "7.0.2", "@typescript/typescript-linux-ppc64": "7.0.2", "@typescript/typescript-linux-riscv64": "7.0.2", "@typescript/typescript-linux-s390x": "7.0.2", "@typescript/typescript-linux-x64": "7.0.2", "@typescript/typescript-netbsd-arm64": "7.0.2", "@typescript/typescript-netbsd-x64": "7.0.2", "@typescript/typescript-openbsd-arm64": "7.0.2", "@typescript/typescript-openbsd-x64": "7.0.2", "@typescript/typescript-sunos-x64": "7.0.2", "@typescript/typescript-win32-arm64": "7.0.2", "@typescript/typescript-win32-x64": "7.0.2" }, "bin": { "tsc": "bin/tsc" } }, "sha512-8FYau96o3NKOhbjKi/qNvG/W5jhzxkbdm5sj9AbZ/5T5sWqn3hJgLfGx27sRKZWTvyzCP8dLRBTf5tBTSRVUNA=="], "@typescript/old": ["typescript@6.0.3", "", { "bin": { "tsc": "bin/tsc", "tsserver": "bin/tsserver" } }, "sha512-y2TvuxSZPDyQakkFRPZHKFm+KKVqIisdg9/CZwm9ftvKXLP8NRWj38/ODjNbr43SsoXqNuAisEf1GdCxqWcdBw=="], @@ -1670,7 +1675,7 @@ "@typescript/typescript6": ["@typescript/typescript6@6.0.2", "", { "dependencies": { "@typescript/old": "npm:typescript@^6" }, "bin": { "tsc6": "bin/tsc6" } }, "sha512-mbCddXd+jm7hfx7w2YU64/Av4/NqqeG3GoRZgxPcgoTxYjhrcfJRw9ULch71SS4G+Q3bOXFhRvPqjguN0Hyp5w=="], - "@ungap/structured-clone": ["@ungap/structured-clone@1.3.3", "", {}, "sha512-60YRaenCQcVjYEKOcG824+DRGGIQ3VKErcBoAEDJZz5bKIs2ZG+X/H9Nk+Q6EVkwJk5QNApxbrc5QtBSwtrXAg=="], + "@ungap/structured-clone": ["@ungap/structured-clone@1.4.0", "", {}, "sha512-1mEZtMKPM09vDmQt5y7YvmN2+DFTP7Tg0EWXdic8/C6VRnpb33e4ghisCIE3WZjsE2N8mf+QV1Zqh7ZFYLWInQ=="], "@unpic/core": ["@unpic/core@1.0.3", "", { "dependencies": { "unpic": "^4.2.2" } }, "sha512-aum9YNVUGso7MjGLD0Rp/08kywCGLqZ03/q6VQBFFakDBOXWEc8D4kPGcZ8v5wEnGRex3lE+++bOuucBp3KJ/w=="], @@ -1688,7 +1693,7 @@ "@vanilla-extract/private": ["@vanilla-extract/private@1.0.9", "", {}, "sha512-gT2jbfZuaaCLrAxwXbRgIhGhcXbRZCG3v4TTUnjw0EJ7ArdBRxkq4msNJkbuRkCgfIK5ATmprB5t9ljvLeFDEA=="], - "@vanilla-extract/turbopack-plugin": ["@vanilla-extract/turbopack-plugin@0.1.3", "", { "dependencies": { "@swc/core": "^1.13.5", "@vanilla-extract/compiler": "^0.7.0", "@vanilla-extract/integration": "^8.0.9" }, "peerDependencies": { "next": ">=12.1.7" } }, "sha512-ZTViI5/3xAviQ3aRzZMjYG50NIFVsXqvsavZF+rMxl/RYZQ42ufBT2jDRlScrIvig2V27ODESDEJRQcEX/u3+Q=="], + "@vanilla-extract/turbopack-plugin": ["@vanilla-extract/turbopack-plugin@0.1.4", "", { "dependencies": { "@swc/core": "^1.13.5", "@vanilla-extract/compiler": "^0.7.2", "@vanilla-extract/integration": "^8.0.10" }, "peerDependencies": { "next": ">=12.1.7" } }, "sha512-fhUO88e2npKjV3Kb+fY9AciFlS6L8a31hdhD1R8uWz8QaHc5x9OWM+H/v4Sdr1Yw9p9sALvNIXMIS1oI12EnNg=="], "@vanilla-extract/webpack-plugin": ["@vanilla-extract/webpack-plugin@2.3.27", "", { "dependencies": { "@vanilla-extract/integration": "^8.0.10", "debug": "^4.3.1", "loader-utils": "^2.0.0", "picocolors": "^1.0.0" }, "peerDependencies": { "webpack": "^4.30.0 || ^5.20.2" } }, "sha512-i/GFQPifTkGYXYpkVYzScBPwXB82f+5GMLg9rh9UBgTG6M/YUebIDVjVOC9Mn5VMvc8Fk2w/FmagDRLugHA09w=="], @@ -1696,7 +1701,7 @@ "@vinext/types": ["@vinext/types@1.0.0-beta.2", "", {}, "sha512-kbKY/H1RWlf7yox4G6Vwk1JeM6x0Tv1EAv28f3tDYkK3brq+89vp5eZHbdw3L/pZMbAhG4oFyhT9C976y+jkhQ=="], - "@vitejs/plugin-react": ["@vitejs/plugin-react@6.1.0", "", { "dependencies": { "@rolldown/pluginutils": "^1.0.1" }, "peerDependencies": { "@rolldown/plugin-babel": "^0.1.7 || ^0.2.0", "babel-plugin-react-compiler": "^1.0.0", "oxc-transform-react": "^0.145.0", "vite": "^8.0.0" }, "optionalPeers": ["@rolldown/plugin-babel", "babel-plugin-react-compiler", "oxc-transform-react"] }, "sha512-qd2BzUBehkov86WFhg0JkEFEYyCLG9uPCe6qWTY/kRlss9OvJrOF2UbIWT7p+8IzZHkEu0DNGHc4HSv+JdDLsw=="], + "@vitejs/plugin-react": ["@vitejs/plugin-react@6.1.1", "", { "dependencies": { "@rolldown/pluginutils": "^1.0.1" }, "peerDependencies": { "@rolldown/plugin-babel": "^0.1.7 || ^0.2.0", "babel-plugin-react-compiler": "^1.0.0", "oxc-transform-react": "^0.145.0", "vite": "^8.0.0" }, "optionalPeers": ["@rolldown/plugin-babel", "babel-plugin-react-compiler", "oxc-transform-react"] }, "sha512-yxLaQV9gkhS8ezJqCM6+ndU7mDY6gqAg75NQ+0IjwEI8IYOmQCgkRwHKVSfWXW076DsqMo0Dk+0FK1U+M5RgFw=="], "@vitejs/plugin-rsc": ["@vitejs/plugin-rsc@0.5.34", "", { "dependencies": { "@rolldown/pluginutils": "^1.0.1", "es-module-lexer": "^2.3.1", "estree-walker": "^3.0.3", "magic-string": "^0.30.21", "srvx": "^0.12.4", "strip-literal": "^3.1.0", "turbo-stream": "^3.2.0", "vitefu": "^1.1.3" }, "peerDependencies": { "react": "*", "react-dom": "*", "react-server-dom-webpack": "*", "vite": "*" }, "optionalPeers": ["react-server-dom-webpack"] }, "sha512-95V6fyGQklQMYIWTr5qwwNmpDYxsHkTunuzq8i/keIcgdckL9zb6nyEgTnb1CEl1IPJWVxGgORMkTFHrct7XJg=="], @@ -1760,155 +1765,159 @@ "@xtuc/long": ["@xtuc/long@4.2.2", "", {}, "sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ=="], - "@zag-js/accordion": ["@zag-js/accordion@1.41.2", "", { "dependencies": { "@zag-js/anatomy": "1.41.2", "@zag-js/core": "1.41.2", "@zag-js/dom-query": "1.41.2", "@zag-js/types": "1.41.2", "@zag-js/utils": "1.41.2" } }, "sha512-7G//V7svGGT8k5avw7bbQvbRC0Q/9QtX51b4iyAB1alR9E5mFd6Ch8q4njwcXClMQ7xePS3jUfVnzVGiRInEiQ=="], + "@zag-js/accordion": ["@zag-js/accordion@1.43.3", "", { "dependencies": { "@zag-js/anatomy": "1.43.3", "@zag-js/core": "1.43.3", "@zag-js/dom-query": "1.43.3", "@zag-js/types": "1.43.3", "@zag-js/utils": "1.43.3" } }, "sha512-J6rGbMPXhYDa2dLgp66DPpwC3OcNAJH71kuGakz7SfCvQWiR9lIyB26G/QdSjJjf0rVARM8rN90e5PxZjYdWjA=="], - "@zag-js/anatomy": ["@zag-js/anatomy@1.41.2", "", {}, "sha512-Fm9hqdrvaCzCsdcf19G8WZxYtHElKltkGHdhqMEt4XU+ULTr1DK7KbOtDDv9J27CuzqSLALUz5QfRjPftoKHwg=="], + "@zag-js/anatomy": ["@zag-js/anatomy@1.43.3", "", {}, "sha512-KzosWgu0TTtdBNHPUZg2W8E5JsGsExQ8oGkLDmV6Sym9twaATU2YVMCWsfitq3Isss4099wNMsHdjEPK2UyCjw=="], - "@zag-js/angle-slider": ["@zag-js/angle-slider@1.41.2", "", { "dependencies": { "@zag-js/anatomy": "1.41.2", "@zag-js/core": "1.41.2", "@zag-js/dom-query": "1.41.2", "@zag-js/rect-utils": "1.41.2", "@zag-js/types": "1.41.2", "@zag-js/utils": "1.41.2" } }, "sha512-+7bZHAZx0MEbjTMr2tD+meFJ0EJwFfUEcTqmdLzFGr/ySAMCWlcadDBz+ZmrSn03aKLps8FxliVLzsFJNgUqIQ=="], + "@zag-js/angle-slider": ["@zag-js/angle-slider@1.43.3", "", { "dependencies": { "@zag-js/anatomy": "1.43.3", "@zag-js/core": "1.43.3", "@zag-js/dom-query": "1.43.3", "@zag-js/rect-utils": "1.43.3", "@zag-js/types": "1.43.3", "@zag-js/utils": "1.43.3" } }, "sha512-/WbbxE/0YhFsoKO/5t/c4LlWRg0VFXD1t3H0u40ic7jnsyNyH9RWoIjwbVSvNC98Ij3s7qmUBY63GwTPGuS/rA=="], - "@zag-js/aria-hidden": ["@zag-js/aria-hidden@1.41.2", "", { "dependencies": { "@zag-js/dom-query": "1.41.2" } }, "sha512-qEcYmwlQr3qjA0T/IZ5a/o7fRUxfQ14tXjAFhR3GXCtxBKaqS+wnq/LN09Xw4bin3QWTINU+Z0oXFs9spWtNwA=="], + "@zag-js/aria-hidden": ["@zag-js/aria-hidden@1.43.3", "", { "dependencies": { "@zag-js/dom-query": "1.43.3" } }, "sha512-f8mqntgsDQFwPDlClF30oXJolY26sg1lnYe6avQB79kwgUQKvw10aYeiUou2INYN7mACNs4nNERfAf1/p54jHw=="], - "@zag-js/async-list": ["@zag-js/async-list@1.41.2", "", { "dependencies": { "@zag-js/core": "1.41.2", "@zag-js/utils": "1.41.2" } }, "sha512-NZZEIGFdeDp2uHjsLVegLAGJOYGwI9HPJI1V2c/P1TQmfmrfWyWELAvnnW4kWYVUKYD9TxKQkm6LvqpHrQzgfQ=="], + "@zag-js/async-list": ["@zag-js/async-list@1.43.3", "", { "dependencies": { "@zag-js/core": "1.43.3", "@zag-js/utils": "1.43.3" } }, "sha512-gTtQE0ZbPohOaInzXa3bsqBKDfHcyCtyq5GXXoGGC/JEn1+xbx9fssG4aydG4GBjReutOmZ5vMa5il+PB6huyA=="], - "@zag-js/auto-resize": ["@zag-js/auto-resize@1.41.2", "", { "dependencies": { "@zag-js/dom-query": "1.41.2" } }, "sha512-CYq+JQ1TTkEiK7OcNcMTS0f4wFvtmManvUltije5o50gDQ7vFYA81oQh4A9pAB1keUi9Zv06CNefFARaTcne5w=="], + "@zag-js/auto-resize": ["@zag-js/auto-resize@1.43.3", "", { "dependencies": { "@zag-js/dom-query": "1.43.3" } }, "sha512-Qb47USNXmbg5p2s8QjUwnTBWI5waVz8YHDCQO75sMoXi1CCxcdW3lSjsOI12FIBD0tiEhjkNGZrhTKnNu1gDkQ=="], - "@zag-js/avatar": ["@zag-js/avatar@1.41.2", "", { "dependencies": { "@zag-js/anatomy": "1.41.2", "@zag-js/core": "1.41.2", "@zag-js/dom-query": "1.41.2", "@zag-js/types": "1.41.2", "@zag-js/utils": "1.41.2" } }, "sha512-+4K0tRtIQysMGuERh5JRmn46uq7gJ6IjJd5DKj74VBtVVY8T6HGk0D0DZxmOIgADHP1qSvowLDoOX8kUyBHarQ=="], + "@zag-js/avatar": ["@zag-js/avatar@1.43.3", "", { "dependencies": { "@zag-js/anatomy": "1.43.3", "@zag-js/core": "1.43.3", "@zag-js/dom-query": "1.43.3", "@zag-js/types": "1.43.3", "@zag-js/utils": "1.43.3" } }, "sha512-cAQFzmZRBoV8M2oGUMHYiBlF2hiwwSJOzmRLjz/yCElK2EHs63O9BzhRk05EZeFqJLvQXoz6bpZ/ug5YX48cRg=="], - "@zag-js/carousel": ["@zag-js/carousel@1.41.2", "", { "dependencies": { "@zag-js/anatomy": "1.41.2", "@zag-js/core": "1.41.2", "@zag-js/dom-query": "1.41.2", "@zag-js/scroll-snap": "1.41.2", "@zag-js/types": "1.41.2", "@zag-js/utils": "1.41.2" } }, "sha512-H6sDxyWIzkvtHN4M/BYvFy7pi8j+kLEtfPZvgNl2+gRnfAHVK9/XqpoUsjw1DAo5Fh25pPuaTnh52Kml9OK0iA=="], + "@zag-js/carousel": ["@zag-js/carousel@1.43.3", "", { "dependencies": { "@zag-js/anatomy": "1.43.3", "@zag-js/core": "1.43.3", "@zag-js/dom-query": "1.43.3", "@zag-js/scroll-snap": "1.43.3", "@zag-js/types": "1.43.3", "@zag-js/utils": "1.43.3" } }, "sha512-hXnG0XL/mpBPCJ3a+H88CZMSCzVsKnOLY7i1Fza+hKxUiGovxojCAitoASeg6ETd7bOzAbz0pvfGgwJPCdnGTQ=="], - "@zag-js/cascade-select": ["@zag-js/cascade-select@1.41.2", "", { "dependencies": { "@zag-js/anatomy": "1.41.2", "@zag-js/collection": "1.41.2", "@zag-js/core": "1.41.2", "@zag-js/dismissable": "1.41.2", "@zag-js/dom-query": "1.41.2", "@zag-js/focus-visible": "1.41.2", "@zag-js/popper": "1.41.2", "@zag-js/rect-utils": "1.41.2", "@zag-js/types": "1.41.2", "@zag-js/utils": "1.41.2" } }, "sha512-dBByZmIAJU/B+YIAzczng05lCJXEwEm4df6GmUZtioKHZdeN+WEKUP4qzFDFZdytXympGfJCIBvtgf87gACYVQ=="], + "@zag-js/cascade-select": ["@zag-js/cascade-select@1.43.3", "", { "dependencies": { "@zag-js/anatomy": "1.43.3", "@zag-js/collection": "1.43.3", "@zag-js/core": "1.43.3", "@zag-js/dismissable": "1.43.3", "@zag-js/dom-query": "1.43.3", "@zag-js/focus-visible": "1.43.3", "@zag-js/popper": "1.43.3", "@zag-js/rect-utils": "1.43.3", "@zag-js/types": "1.43.3", "@zag-js/utils": "1.43.3" } }, "sha512-zSHgbaPuD369sVwlc1cEn0XB4UgK+7RpHRRD/Lw0h7FJLbXvhz6afByK+3/3NpAuQ1YBg6wdiRfikxcVdkyPOQ=="], - "@zag-js/checkbox": ["@zag-js/checkbox@1.41.2", "", { "dependencies": { "@zag-js/anatomy": "1.41.2", "@zag-js/core": "1.41.2", "@zag-js/dom-query": "1.41.2", "@zag-js/focus-visible": "1.41.2", "@zag-js/types": "1.41.2", "@zag-js/utils": "1.41.2" } }, "sha512-aQ5dZWHUHRIw4cbLtzrR+dc8M0N6wSiiCml/zbU3ciHOTBXSrs2rKnp/L99xhi97Lj2uCEhpIZ704Ou/MjGuCg=="], + "@zag-js/checkbox": ["@zag-js/checkbox@1.43.3", "", { "dependencies": { "@zag-js/anatomy": "1.43.3", "@zag-js/core": "1.43.3", "@zag-js/dom-query": "1.43.3", "@zag-js/focus-visible": "1.43.3", "@zag-js/types": "1.43.3", "@zag-js/utils": "1.43.3" } }, "sha512-1vikdGcAokmLSMAnHQo5lYG/DMMNej2FlaAxiuyna2n0XJy/VFhv/3+/FZNB9CAJBkeqwLm9kqo94c7iEL7cxA=="], - "@zag-js/clipboard": ["@zag-js/clipboard@1.41.2", "", { "dependencies": { "@zag-js/anatomy": "1.41.2", "@zag-js/core": "1.41.2", "@zag-js/dom-query": "1.41.2", "@zag-js/types": "1.41.2", "@zag-js/utils": "1.41.2" } }, "sha512-FM+PNGEeY+YpF1dVr9d8kg3DQM66LRnkR4Mva1oprqnrCXTYWj+k7uig893ubSG2xw1GO5b/WJd27kSmNoKnmw=="], + "@zag-js/clipboard": ["@zag-js/clipboard@1.43.3", "", { "dependencies": { "@zag-js/anatomy": "1.43.3", "@zag-js/core": "1.43.3", "@zag-js/dom-query": "1.43.3", "@zag-js/types": "1.43.3", "@zag-js/utils": "1.43.3" } }, "sha512-PHcYmVdmQltIWdtQ+QAP6EHTdjaeN4+TVocdQskBGPEW/0Vf05C/kOuznbl4mdIlhN6GGkNKJCL8D07b+etW+A=="], - "@zag-js/collapsible": ["@zag-js/collapsible@1.41.2", "", { "dependencies": { "@zag-js/anatomy": "1.41.2", "@zag-js/core": "1.41.2", "@zag-js/dom-query": "1.41.2", "@zag-js/types": "1.41.2", "@zag-js/utils": "1.41.2" } }, "sha512-uMIp4rqd3iI6VFPMAOcbu9dh9WV4l85nNPYQiBtMKRHgbkfaZdfzF+E+NX3KquIeHW6JiBFUiIyCU0Sf2Cscdw=="], + "@zag-js/collapsible": ["@zag-js/collapsible@1.43.3", "", { "dependencies": { "@zag-js/anatomy": "1.43.3", "@zag-js/core": "1.43.3", "@zag-js/dom-query": "1.43.3", "@zag-js/types": "1.43.3", "@zag-js/utils": "1.43.3" } }, "sha512-ABOmW6o2SxKfuG5qNWeLXYgVDQDe30dyeRCbEGBhWFeYFO0IMvjlOLiLdk6MSXmFjMynUTIuYxaEv8gNhoOkCA=="], - "@zag-js/collection": ["@zag-js/collection@1.41.2", "", { "dependencies": { "@zag-js/utils": "1.41.2" } }, "sha512-ZZWuvfPZI8ccWd4aLpuU47k1jSc9eO+F3FM3iBJuvgegCH6g3+HDEwGN6wdePHnYfv7zyIKCGKr816zXcIWQbw=="], + "@zag-js/collection": ["@zag-js/collection@1.43.3", "", { "dependencies": { "@zag-js/utils": "1.43.3" } }, "sha512-POufSu17mxTic09DP3CD2sGiRCaNODv/gAYyotrM/ynWSeb2+TjSxlKxuiyQS0amiY+BwJ3+m5qJ4odmU9TLMQ=="], - "@zag-js/color-picker": ["@zag-js/color-picker@1.41.2", "", { "dependencies": { "@zag-js/anatomy": "1.41.2", "@zag-js/color-utils": "1.41.2", "@zag-js/core": "1.41.2", "@zag-js/dismissable": "1.41.2", "@zag-js/dom-query": "1.41.2", "@zag-js/popper": "1.41.2", "@zag-js/types": "1.41.2", "@zag-js/utils": "1.41.2" } }, "sha512-UynyJ/bTBeSlq6ziHr9GVrFycDjVxfLFIb8Aivu/XvihrAAvkhXUxwy+1ax+hj7peGlTY590xoQAvQixV+McBA=="], + "@zag-js/color-picker": ["@zag-js/color-picker@1.43.3", "", { "dependencies": { "@zag-js/anatomy": "1.43.3", "@zag-js/color-utils": "1.43.3", "@zag-js/core": "1.43.3", "@zag-js/dismissable": "1.43.3", "@zag-js/dom-query": "1.43.3", "@zag-js/popper": "1.43.3", "@zag-js/types": "1.43.3", "@zag-js/utils": "1.43.3" } }, "sha512-EevMgWLagXzxa1nkcyk1HKfb+tPU0CXGNhzCdnN1bZSOeQ5eH/4Y0xDIDez0IPXp+L7wnMwIGy5ATTKCGSmVWA=="], - "@zag-js/color-utils": ["@zag-js/color-utils@1.41.2", "", { "dependencies": { "@zag-js/utils": "1.41.2" } }, "sha512-Lsi5c2ztGZqud0oeDtAn3xFhgrYMaeaz1zi4p+mr0zXOuQNuZzfsrJ0stQ45s8L/xT8UJtGhYyEVy1+xjE4ARA=="], + "@zag-js/color-utils": ["@zag-js/color-utils@1.43.3", "", { "dependencies": { "@zag-js/utils": "1.43.3" } }, "sha512-a7R2TfWAlxwObDt1ohdBJzL+HfrYQ/6gLwP2Vj4o7nSaUFhrj5uvT56gg1Uhzp4ALnDcg6cLLEJlwWUaYLpq6g=="], - "@zag-js/combobox": ["@zag-js/combobox@1.41.2", "", { "dependencies": { "@zag-js/anatomy": "1.41.2", "@zag-js/collection": "1.41.2", "@zag-js/core": "1.41.2", "@zag-js/dismissable": "1.41.2", "@zag-js/dom-query": "1.41.2", "@zag-js/focus-visible": "1.41.2", "@zag-js/live-region": "1.41.2", "@zag-js/popper": "1.41.2", "@zag-js/types": "1.41.2", "@zag-js/utils": "1.41.2" } }, "sha512-V9jQteyQHs8ZNQx/FcA98P1NVZas/yjiW1V7s4L+h8MnRS3AK97+FAHAT83KCiZ34/vkpLF6ZEHI2zkcQpNXcg=="], + "@zag-js/combobox": ["@zag-js/combobox@1.43.3", "", { "dependencies": { "@zag-js/anatomy": "1.43.3", "@zag-js/collection": "1.43.3", "@zag-js/core": "1.43.3", "@zag-js/dismissable": "1.43.3", "@zag-js/dom-query": "1.43.3", "@zag-js/focus-visible": "1.43.3", "@zag-js/live-region": "1.43.3", "@zag-js/popper": "1.43.3", "@zag-js/types": "1.43.3", "@zag-js/utils": "1.43.3" } }, "sha512-qdm81w9PnR7/f/YNxie5iT50+7tXkKgiRJZEN59pYqwRA2AbwtE87jk7CQAuBVD1ko/wfcSBfIocoeltVKy2Kw=="], - "@zag-js/core": ["@zag-js/core@1.41.2", "", { "dependencies": { "@zag-js/dom-query": "1.41.2", "@zag-js/utils": "1.41.2" } }, "sha512-xXTN3zKwOtMI4+5dG2cG+T1B4WR3X9alXiYaPJKaGd4N2eYRj9JEPte3Hv9gtFm+RM0b9VIwksHEg25rqE4apw=="], + "@zag-js/core": ["@zag-js/core@1.43.3", "", { "dependencies": { "@zag-js/dom-query": "1.43.3", "@zag-js/utils": "1.43.3" } }, "sha512-afREBcZWvPLHz/2AxJeuAP2o6+o3V7NZO/MutLhdclKaVSBlPzCr6qqP9k8hq1zOxk1jogKT5VVGielzWDY2Dw=="], - "@zag-js/date-input": ["@zag-js/date-input@1.41.2", "", { "dependencies": { "@zag-js/anatomy": "1.41.2", "@zag-js/core": "1.41.2", "@zag-js/date-utils": "1.41.2", "@zag-js/dom-query": "1.41.2", "@zag-js/live-region": "1.41.2", "@zag-js/types": "1.41.2", "@zag-js/utils": "1.41.2" }, "peerDependencies": { "@internationalized/date": ">=3.0.0" } }, "sha512-J8PdpEpM9TBxZBEE8/Nxi39LNJOZY7lilTbgcDABR5uiviZUk5++5GSdUTspcjFUIXx5SvqmdCk2RF7hsUEHVQ=="], + "@zag-js/date-input": ["@zag-js/date-input@1.43.3", "", { "dependencies": { "@zag-js/anatomy": "1.43.3", "@zag-js/core": "1.43.3", "@zag-js/date-utils": "1.43.3", "@zag-js/dom-query": "1.43.3", "@zag-js/live-region": "1.43.3", "@zag-js/types": "1.43.3", "@zag-js/utils": "1.43.3" }, "peerDependencies": { "@internationalized/date": ">=3.0.0" } }, "sha512-jw1hEJg1yjoRUp2U//b57w/w0bolrTTTrzO89WeKU1P/UoW1G5j5zAw1TMnL6fp2IsRP/7QgjGR4HSkAgrOhkw=="], - "@zag-js/date-picker": ["@zag-js/date-picker@1.41.2", "", { "dependencies": { "@zag-js/anatomy": "1.41.2", "@zag-js/core": "1.41.2", "@zag-js/date-utils": "1.41.2", "@zag-js/dismissable": "1.41.2", "@zag-js/dom-query": "1.41.2", "@zag-js/live-region": "1.41.2", "@zag-js/popper": "1.41.2", "@zag-js/types": "1.41.2", "@zag-js/utils": "1.41.2" }, "peerDependencies": { "@internationalized/date": ">=3.0.0" } }, "sha512-j9LaznCV4QCfrq/y/mNAN9XgIRFFg+414TxGT4TK8mfWouIaFvxEoKdGP0l/LL4DFv1NRDaRdSBBcw3eXtMVnA=="], + "@zag-js/date-picker": ["@zag-js/date-picker@1.43.3", "", { "dependencies": { "@zag-js/anatomy": "1.43.3", "@zag-js/core": "1.43.3", "@zag-js/date-utils": "1.43.3", "@zag-js/dismissable": "1.43.3", "@zag-js/dom-query": "1.43.3", "@zag-js/live-region": "1.43.3", "@zag-js/popper": "1.43.3", "@zag-js/types": "1.43.3", "@zag-js/utils": "1.43.3" }, "peerDependencies": { "@internationalized/date": ">=3.0.0" } }, "sha512-2nQZsMkb1EddF6qTvjinsrZdZbXcor+VluniK85bg9JQsA4WvtkmIHpy/pMQQ6zS8i9fbMBYbYH7bQVbfk2JtA=="], - "@zag-js/date-utils": ["@zag-js/date-utils@1.41.2", "", { "peerDependencies": { "@internationalized/date": ">=3.0.0" } }, "sha512-jdcWLa5fYLTsvGWJkx4v/9Hzqf6UHdvJDeP6NxHpwoEmzYy7+AghYKBNSnRrJIBCQJgl1vM9OkpMvYrLNHr9jw=="], + "@zag-js/date-utils": ["@zag-js/date-utils@1.43.3", "", { "peerDependencies": { "@internationalized/date": ">=3.0.0" } }, "sha512-EUQ2OUJs7crXy3OOgt8DhI2pm/jH+5IF2hzxfI7YRiVuvBtL6YbzHAWrT+CpcMcJZwwMiM2WJ9+lph7V7SoyZQ=="], - "@zag-js/dialog": ["@zag-js/dialog@1.41.2", "", { "dependencies": { "@zag-js/anatomy": "1.41.2", "@zag-js/aria-hidden": "1.41.2", "@zag-js/core": "1.41.2", "@zag-js/dismissable": "1.41.2", "@zag-js/dom-query": "1.41.2", "@zag-js/focus-trap": "1.41.2", "@zag-js/remove-scroll": "1.41.2", "@zag-js/types": "1.41.2", "@zag-js/utils": "1.41.2" } }, "sha512-t1N72snpFGiKj7cg2PivPdsy+X1YdgXPv7bzovpqjMLy0kN+gYTPoV1Iy/hQA+g021dz9XGgXzkDuU45sJqsFA=="], + "@zag-js/dialog": ["@zag-js/dialog@1.43.3", "", { "dependencies": { "@zag-js/anatomy": "1.43.3", "@zag-js/aria-hidden": "1.43.3", "@zag-js/core": "1.43.3", "@zag-js/dismissable": "1.43.3", "@zag-js/dom-query": "1.43.3", "@zag-js/focus-trap": "1.43.3", "@zag-js/remove-scroll": "1.43.3", "@zag-js/types": "1.43.3", "@zag-js/utils": "1.43.3" } }, "sha512-DGIUQ686slMHiphl5di/0hmsg+sWL5vlTxZtVZ+5zvNYTWgEVpz8bUXXnGrIsVBXkWgK8CVL34pdMCs3jAmQXA=="], - "@zag-js/dismissable": ["@zag-js/dismissable@1.41.2", "", { "dependencies": { "@zag-js/dom-query": "1.41.2", "@zag-js/interact-outside": "1.41.2", "@zag-js/utils": "1.41.2" } }, "sha512-hO/tFhRZ7S+LOOljGOQJIubbc3MXg41+iWR1yUXKl76cAenbxaCit1LZmUCwQPvRN0GndK6bDQo5ETjHZz/k7A=="], + "@zag-js/dismissable": ["@zag-js/dismissable@1.43.3", "", { "dependencies": { "@zag-js/dom-query": "1.43.3", "@zag-js/interact-outside": "1.43.3", "@zag-js/utils": "1.43.3" } }, "sha512-3znmDAC6qv7I9h/ZInVE+sFxE2wcBeQhT0bEiUjXAlgFGgaVmgA6A0ElGI7CDrot8qhgC88BZQisMWfYRRWgeg=="], - "@zag-js/dom-query": ["@zag-js/dom-query@1.41.2", "", { "dependencies": { "@zag-js/types": "1.41.2" } }, "sha512-+eBk1nlJA312mNmY/GSThLRwcCRqMIL+A1pLsWvTlQLQjmH1/UxoAuv6l2yvRCT33XmC8FBlBIKnXhOCpDvIZA=="], + "@zag-js/dom-query": ["@zag-js/dom-query@1.43.3", "", { "dependencies": { "@zag-js/types": "1.43.3" } }, "sha512-kpTTYMemMmHxhp4gyOllK7/Lf86AySTO+AlGds9iQM21eUwi1jvc9q3VTxP+qD/KwHePGftfPwkwxifC3iSGbw=="], - "@zag-js/drawer": ["@zag-js/drawer@1.41.2", "", { "dependencies": { "@zag-js/anatomy": "1.41.2", "@zag-js/aria-hidden": "1.41.2", "@zag-js/core": "1.41.2", "@zag-js/dismissable": "1.41.2", "@zag-js/dom-query": "1.41.2", "@zag-js/focus-trap": "1.41.2", "@zag-js/remove-scroll": "1.41.2", "@zag-js/types": "1.41.2", "@zag-js/utils": "1.41.2" } }, "sha512-aJql6L0cfHd1wXbemfLcNnjqTA/CbwVgQdWEVn5Qci6zhy4UJXPQeBBfxfgPgEOAbW60gL/gaaXG3d9Vx6+6oA=="], + "@zag-js/drawer": ["@zag-js/drawer@1.43.3", "", { "dependencies": { "@zag-js/anatomy": "1.43.3", "@zag-js/aria-hidden": "1.43.3", "@zag-js/core": "1.43.3", "@zag-js/dismissable": "1.43.3", "@zag-js/dom-query": "1.43.3", "@zag-js/focus-trap": "1.43.3", "@zag-js/remove-scroll": "1.43.3", "@zag-js/types": "1.43.3", "@zag-js/utils": "1.43.3" } }, "sha512-/oWCjJZLxB4cNfrjjobVkrLdPgAO5uCLnpaDZ9p4ZmIY/ENO2QesboqdAK4WfypiMeYEoVpA3DFbGIVt4qzazA=="], - "@zag-js/editable": ["@zag-js/editable@1.41.2", "", { "dependencies": { "@zag-js/anatomy": "1.41.2", "@zag-js/core": "1.41.2", "@zag-js/dom-query": "1.41.2", "@zag-js/interact-outside": "1.41.2", "@zag-js/types": "1.41.2", "@zag-js/utils": "1.41.2" } }, "sha512-loTM1lrHBBqYfR8SJZrYayVdWHMpXCLVir+aDTQ8/d4bb/Gfl/L8CJNs3BRj3yt9zvLoWTLO+4LOY3hLyQSR2w=="], + "@zag-js/editable": ["@zag-js/editable@1.43.3", "", { "dependencies": { "@zag-js/anatomy": "1.43.3", "@zag-js/core": "1.43.3", "@zag-js/dom-query": "1.43.3", "@zag-js/interact-outside": "1.43.3", "@zag-js/types": "1.43.3", "@zag-js/utils": "1.43.3" } }, "sha512-G+cFSuRQoqvTAWV1cWAxnAf1W9lJdqlzjy1BJi3rK2jMThdZUUV97dq19W0u/Qvd5V9sTnhUHjkOtq0z1fActw=="], - "@zag-js/file-upload": ["@zag-js/file-upload@1.41.2", "", { "dependencies": { "@zag-js/anatomy": "1.41.2", "@zag-js/core": "1.41.2", "@zag-js/dom-query": "1.41.2", "@zag-js/file-utils": "1.41.2", "@zag-js/i18n-utils": "1.41.2", "@zag-js/types": "1.41.2", "@zag-js/utils": "1.41.2" } }, "sha512-WFwIaKvHpCUjyYMvp42VoydT1WIP5DhDlpmG/nrF4i0ro7pLGb1A4dvyBrAfGcozCB88yR1y1iZKPDY1I9/uUw=="], + "@zag-js/file-upload": ["@zag-js/file-upload@1.43.3", "", { "dependencies": { "@zag-js/anatomy": "1.43.3", "@zag-js/core": "1.43.3", "@zag-js/dom-query": "1.43.3", "@zag-js/file-utils": "1.43.3", "@zag-js/i18n-utils": "1.43.3", "@zag-js/types": "1.43.3", "@zag-js/utils": "1.43.3" } }, "sha512-kpXjL4XD0kZD+OukpjoENytE9qbs/rpshOwPR+g1IJHvl45IUFXzdXZn3m8SQD4Fa5ZTp4ZiExGBjUNceTaJcg=="], - "@zag-js/file-utils": ["@zag-js/file-utils@1.41.2", "", { "dependencies": { "@zag-js/i18n-utils": "1.41.2" } }, "sha512-Ih+8ULbId0M+CFR4IsqG5y/0VLCk2l+1rgPH+21L40dlSB6z6qKSP2tG7W69Cj2/3vryZsn67ibn26iCPG/vOw=="], + "@zag-js/file-utils": ["@zag-js/file-utils@1.43.3", "", { "dependencies": { "@zag-js/i18n-utils": "1.43.3" } }, "sha512-iawUjq0klSsjhuEI43u/cPlNbA+b/7gvJi5TT+KHh9DxAr3u2CTnZUCurBLeuAPtrSXvlR4MQ6MmH93NlNnj7A=="], - "@zag-js/floating-panel": ["@zag-js/floating-panel@1.41.2", "", { "dependencies": { "@zag-js/anatomy": "1.41.2", "@zag-js/core": "1.41.2", "@zag-js/dom-query": "1.41.2", "@zag-js/popper": "1.41.2", "@zag-js/rect-utils": "1.41.2", "@zag-js/store": "1.41.2", "@zag-js/types": "1.41.2", "@zag-js/utils": "1.41.2" } }, "sha512-nJP3oZ4YrJh+7H5YdwNccSzPGXFqjQN1ujZ/xGDhegjz4XtL48QMFnAasxlRI8VGjse9Tj8VXlQZxXPrASGzlA=="], + "@zag-js/floating-panel": ["@zag-js/floating-panel@1.43.3", "", { "dependencies": { "@zag-js/anatomy": "1.43.3", "@zag-js/core": "1.43.3", "@zag-js/dom-query": "1.43.3", "@zag-js/rect-utils": "1.43.3", "@zag-js/types": "1.43.3", "@zag-js/utils": "1.43.3" } }, "sha512-DnB71JgNSk+AZNHl1PF2DFp2HkzuN7D/tsFIaV4sOK+5wgiNH4dWth7RlYkIrX9m2vpqunaQ+4/C2aZpVErYsQ=="], - "@zag-js/focus-trap": ["@zag-js/focus-trap@1.41.2", "", { "dependencies": { "@zag-js/dom-query": "1.41.2" } }, "sha512-3QTtGUjFU2OLbyrDlyoYWvKZecCmtn/+bsfsHW159jJHiEGHVYK6CY8AI1ePsMk9gVay48bXh008j+lVli7gAw=="], + "@zag-js/focus-trap": ["@zag-js/focus-trap@1.43.3", "", { "dependencies": { "@zag-js/dom-query": "1.43.3" } }, "sha512-/U4xWaHvHL83yDylTjLE1txCd0FR3As/1qgFWpzb1qOGWiCp/9NrLHVfegjDPgaoKLHRC4kEHzN+0NYNGHBXgQ=="], - "@zag-js/focus-visible": ["@zag-js/focus-visible@1.41.2", "", { "dependencies": { "@zag-js/dom-query": "1.41.2" } }, "sha512-oRjwtgafUdGVwLJUN6mKsnBQbez/CHYAPkPg1FxOnr5GFpEpr8oMTOZJ3wdPM2U1ynS9QnUUu/sXc3KQv/jX0Q=="], + "@zag-js/focus-visible": ["@zag-js/focus-visible@1.43.3", "", { "dependencies": { "@zag-js/dom-query": "1.43.3" } }, "sha512-32l21nQUI328nfNTe2adXyXj+8t1ltDaEm7IQGmhtAw/DuIKvjpEkhJZHL1zUSlp47QGNfuYGPeD+ZXaZWFWMA=="], - "@zag-js/highlight-word": ["@zag-js/highlight-word@1.41.2", "", {}, "sha512-95zcZKqNrL7JlqAckfzHa+LRbnfoz1lj6skUhq/uHSnni1vH6+8fNWT8ruo9G7vpGopbyRmmcie5p41SbAwQjQ=="], + "@zag-js/highlight-word": ["@zag-js/highlight-word@1.43.3", "", {}, "sha512-oN87IS5aA58jj1jMnhepLdQQ85bcjK6dWK+XK3QHAFdJZLSpCK++5HjGYng/G9xsnu+FWh8RMais9c5Ci738NQ=="], - "@zag-js/hover-card": ["@zag-js/hover-card@1.41.2", "", { "dependencies": { "@zag-js/anatomy": "1.41.2", "@zag-js/core": "1.41.2", "@zag-js/dismissable": "1.41.2", "@zag-js/dom-query": "1.41.2", "@zag-js/popper": "1.41.2", "@zag-js/types": "1.41.2", "@zag-js/utils": "1.41.2" } }, "sha512-Xn9RVzgTkKaVzyJTDdBJiXmCleNi1/hmW8z73tC0vOiQvSSvPejg/JkzqTOLFODvQHK3NOw54QHZvmjYp9Mubw=="], + "@zag-js/hotkeys": ["@zag-js/hotkeys@1.43.3", "", { "dependencies": { "@zag-js/dom-query": "1.43.3" } }, "sha512-uC3bc6WakCe0T2Hx73q+ywGiogibErBQep5UtRZGfTBhyKGyKa158NFmhl64oYx4RnlNyZliQ5cF/d74+HNtdA=="], - "@zag-js/i18n-utils": ["@zag-js/i18n-utils@1.41.2", "", { "dependencies": { "@zag-js/dom-query": "1.41.2" } }, "sha512-f1xqaEY79awBxgUyjFso0UEpIoEHZq+zRvB0nUVFHJRW7Ds/QhaFHKSRnf2QBTlP/ObvCT225R+piNAAc17Aaw=="], + "@zag-js/hover-card": ["@zag-js/hover-card@1.43.3", "", { "dependencies": { "@zag-js/anatomy": "1.43.3", "@zag-js/core": "1.43.3", "@zag-js/dismissable": "1.43.3", "@zag-js/dom-query": "1.43.3", "@zag-js/popper": "1.43.3", "@zag-js/types": "1.43.3", "@zag-js/utils": "1.43.3" } }, "sha512-1gyT11fRK9r2XKwgxH6uS+Y0HYvr95QU4TjgnkzHJ2d6Q+wf89Fxb2zG7HCer0VV/rwz0ZmWZRDgKkZHCNxS7Q=="], - "@zag-js/image-cropper": ["@zag-js/image-cropper@1.41.2", "", { "dependencies": { "@zag-js/anatomy": "1.41.2", "@zag-js/core": "1.41.2", "@zag-js/dom-query": "1.41.2", "@zag-js/types": "1.41.2", "@zag-js/utils": "1.41.2" } }, "sha512-750aT4U+J/TJw/Z1QVoLU9JG0luCtf9CyvShtJFIxeS+i25aUoBI9pOKgSFABsOutIqNJTPq4gYpqtuxFjSxRw=="], + "@zag-js/i18n-utils": ["@zag-js/i18n-utils@1.43.3", "", { "dependencies": { "@zag-js/dom-query": "1.43.3" } }, "sha512-bVCZxrd7xWTMhWks8zk/xRQNMPZz3CVoXjG9207b0GVTTQOwoiVg+MEIHDqirEaDJtzUKR6VbV0dRpC8LsceFg=="], - "@zag-js/interact-outside": ["@zag-js/interact-outside@1.41.2", "", { "dependencies": { "@zag-js/dom-query": "1.41.2", "@zag-js/utils": "1.41.2" } }, "sha512-dM4Fn9iyqQeqkCMRYZP+bAgWEPKRVQRqMmcPsN0OXBhhFKC31Em15LTIZXaOtVKAjH+iwx+UvSYFRiWwEjkOEA=="], + "@zag-js/image-cropper": ["@zag-js/image-cropper@1.43.3", "", { "dependencies": { "@zag-js/anatomy": "1.43.3", "@zag-js/core": "1.43.3", "@zag-js/dom-query": "1.43.3", "@zag-js/types": "1.43.3", "@zag-js/utils": "1.43.3" } }, "sha512-MBoWA7V8TMx1pxSZYK2pCbiQC5NRhsnJot8JmAjqz52EcgQM5I2Qw3mISfZ558Idg/w1ilxD0MyAw8MBHOuiDA=="], - "@zag-js/json-tree-utils": ["@zag-js/json-tree-utils@1.41.2", "", {}, "sha512-gNaOzsbCwmTd2HM3/u0xQdWX5UDBfl8tCXFavzbamkFH0iYQOXJb7cqUXBVuI4KScIbHPCKwrzZjqA5Sg9qzAQ=="], + "@zag-js/interact-outside": ["@zag-js/interact-outside@1.43.3", "", { "dependencies": { "@zag-js/dom-query": "1.43.3", "@zag-js/utils": "1.43.3" } }, "sha512-qgyAyWELSzFrHUtB6D7IzemI48NjX7E5oIDCXsz/DBPh+ybsK+pKMGsZkduTCK+uEqJcA/w+DAWaDUOxhjqvWA=="], - "@zag-js/listbox": ["@zag-js/listbox@1.41.2", "", { "dependencies": { "@zag-js/anatomy": "1.41.2", "@zag-js/collection": "1.41.2", "@zag-js/core": "1.41.2", "@zag-js/dom-query": "1.41.2", "@zag-js/focus-visible": "1.41.2", "@zag-js/types": "1.41.2", "@zag-js/utils": "1.41.2" } }, "sha512-iDGrZleP3ui2Q6Jgmr9RYlbd7njdJHs8Qb3IJrSIZBIeYyYmFvVUfAFjk0g/z/amjTx6uYxRASWSPy/RETd4ug=="], + "@zag-js/json-tree-utils": ["@zag-js/json-tree-utils@1.43.3", "", {}, "sha512-Fal5YYy3+E+eHIreqZtrS8s6o+8+tiq02z2FsmQNRz/txOKb0rgMiP81C//dGLH0eVJK8GUBvj5moeJ1ueRN7A=="], - "@zag-js/live-region": ["@zag-js/live-region@1.41.2", "", {}, "sha512-7ubIW5AQt1wx9S/gFN+rU4TyvuFWJrL/DhnDWPNlH5g3luDVHSNeYGeeqf4d4tkcibtpYZa0pg9CbXxRxrfwVA=="], + "@zag-js/listbox": ["@zag-js/listbox@1.43.3", "", { "dependencies": { "@zag-js/anatomy": "1.43.3", "@zag-js/collection": "1.43.3", "@zag-js/core": "1.43.3", "@zag-js/dom-query": "1.43.3", "@zag-js/focus-visible": "1.43.3", "@zag-js/types": "1.43.3", "@zag-js/utils": "1.43.3" } }, "sha512-1u1O002M5hXuJSQmiaWgG2isdaJwqyLe/5F6Uv6ApOcl7i0GjO4fIF0aGCDrHfGki98A9TWn4ioaU0ExL3SeUw=="], - "@zag-js/marquee": ["@zag-js/marquee@1.41.2", "", { "dependencies": { "@zag-js/anatomy": "1.41.2", "@zag-js/core": "1.41.2", "@zag-js/dom-query": "1.41.2", "@zag-js/types": "1.41.2", "@zag-js/utils": "1.41.2" } }, "sha512-cT77aMhrtAK3oe2O6+X3TLtQs8wupdPUtZgHMWVxCcQOwagrk7RUBEQwU3Cx7cTswpBdTKSuDYgUggfgCs96wg=="], + "@zag-js/live-region": ["@zag-js/live-region@1.43.3", "", {}, "sha512-lB2ryGpRjTgbfJ5D86MQnvZRCJupKbpwS53jfCkEP0EBC9Tk7Crq9p0pobzXgH5U9fnjn4BPsqBSyuSOxPOJnw=="], - "@zag-js/menu": ["@zag-js/menu@1.41.2", "", { "dependencies": { "@zag-js/anatomy": "1.41.2", "@zag-js/core": "1.41.2", "@zag-js/dismissable": "1.41.2", "@zag-js/dom-query": "1.41.2", "@zag-js/focus-visible": "1.41.2", "@zag-js/popper": "1.41.2", "@zag-js/rect-utils": "1.41.2", "@zag-js/types": "1.41.2", "@zag-js/utils": "1.41.2" } }, "sha512-wwix8hcAUSi0scpWXCiDppfdZV01Za8nN0gqLt9GdhCiVSlr0rs9pK1ROgPKJTyc43UZfyFPqtTWVHvEHMM70w=="], + "@zag-js/marquee": ["@zag-js/marquee@1.43.3", "", { "dependencies": { "@zag-js/anatomy": "1.43.3", "@zag-js/core": "1.43.3", "@zag-js/dom-query": "1.43.3", "@zag-js/types": "1.43.3", "@zag-js/utils": "1.43.3" } }, "sha512-NdWm4vwd9BfgcUPGwlQNvd+uaC9LcrG9sL7Jo0nZjmuxiABSO/lfyd/B4h8Md3u0lj3fVUGxO/tisrfwGo/9kA=="], - "@zag-js/navigation-menu": ["@zag-js/navigation-menu@1.41.2", "", { "dependencies": { "@zag-js/anatomy": "1.41.2", "@zag-js/core": "1.41.2", "@zag-js/dismissable": "1.41.2", "@zag-js/dom-query": "1.41.2", "@zag-js/types": "1.41.2", "@zag-js/utils": "1.41.2" } }, "sha512-aROB9CHzskZpnoFuGFkp7dbkZdsXvp2nxQgsgld02I1sDqiwcQd+YMdB0/6Ik0oz6X8I70RKdUuQM9WQFQfDnA=="], + "@zag-js/menu": ["@zag-js/menu@1.43.3", "", { "dependencies": { "@zag-js/anatomy": "1.43.3", "@zag-js/core": "1.43.3", "@zag-js/dismissable": "1.43.3", "@zag-js/dom-query": "1.43.3", "@zag-js/focus-visible": "1.43.3", "@zag-js/popper": "1.43.3", "@zag-js/rect-utils": "1.43.3", "@zag-js/types": "1.43.3", "@zag-js/utils": "1.43.3" } }, "sha512-RGCqRv/GeEehBYOB3JV0NUfyfaWW5KBN79RHUUYpxF9DMsPM8igHOzuoOoz+FaYoepjC34oMtmWicF1Dan6apA=="], - "@zag-js/number-input": ["@zag-js/number-input@1.41.2", "", { "dependencies": { "@internationalized/number": "3.6.6", "@zag-js/anatomy": "1.41.2", "@zag-js/core": "1.41.2", "@zag-js/dom-query": "1.41.2", "@zag-js/types": "1.41.2", "@zag-js/utils": "1.41.2" } }, "sha512-QoQWCiVHO+ciUbq8uL8Kxhtk4o3UpwzYpJkfsOfitzsZoYpPc7V/A6+n5yABV2SOwpqBODwNASZdxiEa60kfow=="], + "@zag-js/navigation-menu": ["@zag-js/navigation-menu@1.43.3", "", { "dependencies": { "@zag-js/anatomy": "1.43.3", "@zag-js/core": "1.43.3", "@zag-js/dismissable": "1.43.3", "@zag-js/dom-query": "1.43.3", "@zag-js/types": "1.43.3", "@zag-js/utils": "1.43.3" } }, "sha512-7pVwpWwe/CtfvPclwd9k6Ja89RSdnYYC/rAC5Oaj5BUCVwdjNxh0VuyLS/awozNQclPFA6ww22KQSaLf4lAnPQ=="], - "@zag-js/pagination": ["@zag-js/pagination@1.41.2", "", { "dependencies": { "@zag-js/anatomy": "1.41.2", "@zag-js/core": "1.41.2", "@zag-js/dom-query": "1.41.2", "@zag-js/types": "1.41.2", "@zag-js/utils": "1.41.2" } }, "sha512-vZTxz4DrIDfedMcTjDeEkOc1iXD9wkP8eKuEcDieHOodnjSnNNwtmoFw5DCWv+yEa/TByIamXBZ8ZxHY144JgA=="], + "@zag-js/number-input": ["@zag-js/number-input@1.43.3", "", { "dependencies": { "@internationalized/number": "3.6.7", "@zag-js/anatomy": "1.43.3", "@zag-js/core": "1.43.3", "@zag-js/dom-query": "1.43.3", "@zag-js/types": "1.43.3", "@zag-js/utils": "1.43.3" } }, "sha512-XBuky+uuFXnshBHbIFfpUCly5nKZi+hW0R6pvgmqirqVyc4K/lwg4nz88/Z6U/q4uRQarKRr22fOMLthc7q7Yw=="], - "@zag-js/password-input": ["@zag-js/password-input@1.41.2", "", { "dependencies": { "@zag-js/anatomy": "1.41.2", "@zag-js/core": "1.41.2", "@zag-js/dom-query": "1.41.2", "@zag-js/types": "1.41.2", "@zag-js/utils": "1.41.2" } }, "sha512-OWKFl0S12Qnlf4R4WbMCJ/YU0kGfezm5tP0UiyubMO/Fixv6H0twDFaJSPg2F6POv5uomCcGubc1H7gO+fIhsQ=="], + "@zag-js/pagination": ["@zag-js/pagination@1.43.3", "", { "dependencies": { "@zag-js/anatomy": "1.43.3", "@zag-js/core": "1.43.3", "@zag-js/dom-query": "1.43.3", "@zag-js/types": "1.43.3", "@zag-js/utils": "1.43.3" } }, "sha512-8shW+/WwkLNKh9nhVXQCi2mQ50un52obzgheIm/BwlUlHu+qY/dM2al3Kx9L4yK7YYTDaXFxKyvP1iaYUQd7ZA=="], - "@zag-js/pin-input": ["@zag-js/pin-input@1.41.2", "", { "dependencies": { "@zag-js/anatomy": "1.41.2", "@zag-js/core": "1.41.2", "@zag-js/dom-query": "1.41.2", "@zag-js/types": "1.41.2", "@zag-js/utils": "1.41.2" } }, "sha512-Wrn3YDbmWL3qvUIzN4QyLO7PzEhunX7z8DwBpmrK04p7HxR9pniTLVIPk27xk2MzyAPYcl4mwd9/Mc88tBxHsg=="], + "@zag-js/password-input": ["@zag-js/password-input@1.43.3", "", { "dependencies": { "@zag-js/anatomy": "1.43.3", "@zag-js/core": "1.43.3", "@zag-js/dom-query": "1.43.3", "@zag-js/types": "1.43.3", "@zag-js/utils": "1.43.3" } }, "sha512-r7RPikBcwN8zTpuah54Bo3jclkz+ze+wV6g5SC7Ox6yOWdbC6A6ORyvXc3yqw2YG4tvwOtrD4p9w21zCVzNaqQ=="], - "@zag-js/popover": ["@zag-js/popover@1.41.2", "", { "dependencies": { "@zag-js/anatomy": "1.41.2", "@zag-js/aria-hidden": "1.41.2", "@zag-js/core": "1.41.2", "@zag-js/dismissable": "1.41.2", "@zag-js/dom-query": "1.41.2", "@zag-js/focus-trap": "1.41.2", "@zag-js/popper": "1.41.2", "@zag-js/remove-scroll": "1.41.2", "@zag-js/types": "1.41.2", "@zag-js/utils": "1.41.2" } }, "sha512-h/LlVMIERM+NWzYV0ZHURlJuaqkT8XxwyEV96XfVzjknDRFNoPSl5IttVYtoaPoUqC0p/Y4oTSiee4mUZKOLHw=="], + "@zag-js/pin-input": ["@zag-js/pin-input@1.43.3", "", { "dependencies": { "@zag-js/anatomy": "1.43.3", "@zag-js/core": "1.43.3", "@zag-js/dom-query": "1.43.3", "@zag-js/types": "1.43.3", "@zag-js/utils": "1.43.3" } }, "sha512-eUIyyJeA07yJzdGPh7vkQdnd/32OtU9xMppQDGIKHSJFA1ZIeqxdmy33Safj41XFurLBTStQAKLCSJmBGgY2Gg=="], - "@zag-js/popper": ["@zag-js/popper@1.41.2", "", { "dependencies": { "@floating-ui/dom": "^1.7.6", "@zag-js/dom-query": "1.41.2", "@zag-js/utils": "1.41.2" } }, "sha512-Iz4D5YAIiIPn4IHGjhX3QatR/RyGaDt43lBSZv0RYcPQYtFg9sUuek3wizjW9qXgdvItevvNMqRdpl7f3es09g=="], + "@zag-js/popover": ["@zag-js/popover@1.43.3", "", { "dependencies": { "@zag-js/anatomy": "1.43.3", "@zag-js/aria-hidden": "1.43.3", "@zag-js/core": "1.43.3", "@zag-js/dismissable": "1.43.3", "@zag-js/dom-query": "1.43.3", "@zag-js/focus-trap": "1.43.3", "@zag-js/popper": "1.43.3", "@zag-js/remove-scroll": "1.43.3", "@zag-js/types": "1.43.3", "@zag-js/utils": "1.43.3" } }, "sha512-kLQIj+9XaaEvSbviG+r8hI1OJxC4P4JTETNcnHV4w4aE5nR2r/LDP3JoJSEQsAvTR/MMYpZQDL5pdVQj0M/Oqg=="], - "@zag-js/presence": ["@zag-js/presence@1.41.2", "", { "dependencies": { "@zag-js/core": "1.41.2", "@zag-js/dom-query": "1.41.2", "@zag-js/types": "1.41.2" } }, "sha512-OhOLPAf/DYPmgoEntrlrf3LOrkwA+Y0J3K03NXHXPnkRB7h8jyIbHqzHS0jRTb1pvsO2P/yowRyoYtptY2Zmog=="], + "@zag-js/popper": ["@zag-js/popper@1.43.3", "", { "dependencies": { "@floating-ui/dom": "^1.7.6", "@zag-js/dom-query": "1.43.3", "@zag-js/utils": "1.43.3" } }, "sha512-99PPQerLylh+ouG16d0Go0UgpLR3rCQvWMmJoO5Ti8+2Ww3aqBNLTqpF0rJuLPe1Ps4BfEt5Lr4dYhL1ixgbRQ=="], - "@zag-js/progress": ["@zag-js/progress@1.41.2", "", { "dependencies": { "@zag-js/anatomy": "1.41.2", "@zag-js/core": "1.41.2", "@zag-js/dom-query": "1.41.2", "@zag-js/types": "1.41.2", "@zag-js/utils": "1.41.2" } }, "sha512-SnzrqN+Z568NoO4rrgjrIc/S4EXMEne5CDgWwt2kQ8yq9VysdH8TtHAjyciFRIio7cdgEZNHKw9jSccpMWgRwA=="], + "@zag-js/presence": ["@zag-js/presence@1.43.3", "", { "dependencies": { "@zag-js/core": "1.43.3", "@zag-js/dom-query": "1.43.3", "@zag-js/types": "1.43.3" } }, "sha512-b+HxlhTOxTn/I0q1lmt8Afyk+pZpXV/FqHUkbUzy3m+2t9QgMONi5NDuRc6gNRTXIeG6lLVDHSDHT/FxxMLDWw=="], - "@zag-js/qr-code": ["@zag-js/qr-code@1.41.2", "", { "dependencies": { "@zag-js/anatomy": "1.41.2", "@zag-js/core": "1.41.2", "@zag-js/dom-query": "1.41.2", "@zag-js/types": "1.41.2", "@zag-js/utils": "1.41.2", "proxy-memoize": "3.0.1", "uqr": "0.1.3" } }, "sha512-+JLswCNnzf58aQTaX0SMUA9wRC8Hb/a/ZveJIXTz6853Siemay2HqOqB2WQIeF33HNldUFD/a4+4Q8ugg93ubA=="], + "@zag-js/progress": ["@zag-js/progress@1.43.3", "", { "dependencies": { "@zag-js/anatomy": "1.43.3", "@zag-js/core": "1.43.3", "@zag-js/dom-query": "1.43.3", "@zag-js/types": "1.43.3", "@zag-js/utils": "1.43.3" } }, "sha512-hGZGtncpNWsKoU5lgXWzKAPMaG5w/B5kCNnlYnCZ30TnK9Zg5GwCkvYC45pKiY+Z9i8DxLNPkxIVWHG2oyYbcg=="], - "@zag-js/radio-group": ["@zag-js/radio-group@1.41.2", "", { "dependencies": { "@zag-js/anatomy": "1.41.2", "@zag-js/core": "1.41.2", "@zag-js/dom-query": "1.41.2", "@zag-js/focus-visible": "1.41.2", "@zag-js/types": "1.41.2", "@zag-js/utils": "1.41.2" } }, "sha512-EZjos61jKHZlNw8ez80vG2T9gUwpooxcVpYOKS2hyhuEXn3wEoefS5v1WFbmpoA/8TUpUQnYxisAeNuQfEQCuQ=="], + "@zag-js/qr-code": ["@zag-js/qr-code@1.43.3", "", { "dependencies": { "@zag-js/anatomy": "1.43.3", "@zag-js/core": "1.43.3", "@zag-js/dom-query": "1.43.3", "@zag-js/types": "1.43.3", "@zag-js/utils": "1.43.3", "proxy-memoize": "3.0.1", "uqr": "0.1.3" } }, "sha512-moSv0oTbO/XSAPnpPJGp5n4mpRlCsJYOaJW/I6zK1Ls6/YHWt7K9HUjZE06AwHwU+050ftivgWmXBlVgozc5GA=="], - "@zag-js/rating-group": ["@zag-js/rating-group@1.41.2", "", { "dependencies": { "@zag-js/anatomy": "1.41.2", "@zag-js/core": "1.41.2", "@zag-js/dom-query": "1.41.2", "@zag-js/types": "1.41.2", "@zag-js/utils": "1.41.2" } }, "sha512-SbJP4HiK5XRy/oC3xRowjZOCThq1n/QA2Z/XAkvKLJArVQCYjrH3MoWwWvMVNfNC5+ZJluborR2AGF7tlVLzxA=="], + "@zag-js/radio-group": ["@zag-js/radio-group@1.43.3", "", { "dependencies": { "@zag-js/anatomy": "1.43.3", "@zag-js/core": "1.43.3", "@zag-js/dom-query": "1.43.3", "@zag-js/focus-visible": "1.43.3", "@zag-js/types": "1.43.3", "@zag-js/utils": "1.43.3" } }, "sha512-1QM1rNnK6mQ36aYEshFVlboBDMQTth2wxHuh5V+ALIXf4Dl1Eexy0dyLVFkYV7R3E90e6b8d+xZZ3tziTvnRDg=="], - "@zag-js/react": ["@zag-js/react@1.41.2", "", { "dependencies": { "@zag-js/core": "1.41.2", "@zag-js/store": "1.41.2", "@zag-js/types": "1.41.2", "@zag-js/utils": "1.41.2" }, "peerDependencies": { "react": ">=18.0.0", "react-dom": ">=18.0.0" } }, "sha512-5Bx7mQAron4LFWI8Hhs/uw5kwQ19s2Tn30HhctozLqmCu4nnJSTSh7GRvX+uwRZnztGXBXoOrgBWIepU4RXFGg=="], + "@zag-js/rating-group": ["@zag-js/rating-group@1.43.3", "", { "dependencies": { "@zag-js/anatomy": "1.43.3", "@zag-js/core": "1.43.3", "@zag-js/dom-query": "1.43.3", "@zag-js/types": "1.43.3", "@zag-js/utils": "1.43.3" } }, "sha512-BiKcyo3z7q4UBMsGuOs8w6u827pQ50eOuRCh1oqVpKqBoyRL0z9aFQYg9YeYnxXn8eyoEBMiVv01MTogJ2JBQA=="], - "@zag-js/rect-utils": ["@zag-js/rect-utils@1.41.2", "", {}, "sha512-GWBTamaMLMG1p7Fe6V0dsXeTEmk+tqG3ciovzmjxURCJ3Yq2EkAMRhS0v5DG0oo+PyrPEIzEWukGBQkh/XRgYQ=="], + "@zag-js/react": ["@zag-js/react@1.43.3", "", { "dependencies": { "@zag-js/core": "1.43.3", "@zag-js/store": "1.43.3", "@zag-js/types": "1.43.3", "@zag-js/utils": "1.43.3" }, "peerDependencies": { "react": ">=18.0.0", "react-dom": ">=18.0.0" } }, "sha512-PVfq738OhicFsGOZNqrsBmdOHuh54XnIhkyJ9HSWDpzQcGHq4fuFWIvfmqW/5o/Xkj+JwFQLoIDVX/KHaUjcXA=="], - "@zag-js/remove-scroll": ["@zag-js/remove-scroll@1.41.2", "", { "dependencies": { "@zag-js/dom-query": "1.41.2" } }, "sha512-ieIrOgPKlCikAGEBIboQJoU7oxrL5BEY670tDOu7Eg7rNOdAwGXLEKPX2A/q+lREhOiVYjx0D3//vHTvdte80Q=="], + "@zag-js/rect-utils": ["@zag-js/rect-utils@1.43.3", "", {}, "sha512-xZA5IKUtQeRKdzM+9jGj8R18MXmORDO0smXAAoyFj1Swj/uB17eVwvsWoQLXbb/AaYXEzSIJXNUt21n3GAX24Q=="], - "@zag-js/scroll-area": ["@zag-js/scroll-area@1.41.2", "", { "dependencies": { "@zag-js/anatomy": "1.41.2", "@zag-js/core": "1.41.2", "@zag-js/dom-query": "1.41.2", "@zag-js/types": "1.41.2", "@zag-js/utils": "1.41.2" } }, "sha512-hJFAwfIFuS7XmNsS3nB5rPm9OWXfB4d98sID7fjurcaZtDH5LqFriqfXhceNvs7rz7K4f/u8rufXrb6tcvATIA=="], + "@zag-js/remove-scroll": ["@zag-js/remove-scroll@1.43.3", "", { "dependencies": { "@zag-js/dom-query": "1.43.3" } }, "sha512-1bX6IQM7q26uL0476wFqtaebeIeDheyJd8fuje2zXTCg1XDRHJmRsM/tzcmcdi4W5s+hG0cUCfuVzUTXvODM5Q=="], - "@zag-js/scroll-snap": ["@zag-js/scroll-snap@1.41.2", "", { "dependencies": { "@zag-js/dom-query": "1.41.2" } }, "sha512-+70Al6LSASyEZtFyyffUJlDbE88KgYJDud05z8oZTqyEOLlTqnlSNkXq/P3siO7r3sNykg9H+TmAKn+/dVSKuw=="], + "@zag-js/scroll-area": ["@zag-js/scroll-area@1.43.3", "", { "dependencies": { "@zag-js/anatomy": "1.43.3", "@zag-js/core": "1.43.3", "@zag-js/dom-query": "1.43.3", "@zag-js/types": "1.43.3", "@zag-js/utils": "1.43.3" } }, "sha512-qJpVs70vGM+Ogl8rQCG0iuZ7oliKlk6ZwzJMPQXnoRGeG6NzwIR0S3O+lJGmgR+xBul1gXkaAJzlyxGQr82bmA=="], - "@zag-js/select": ["@zag-js/select@1.41.2", "", { "dependencies": { "@zag-js/anatomy": "1.41.2", "@zag-js/collection": "1.41.2", "@zag-js/core": "1.41.2", "@zag-js/dismissable": "1.41.2", "@zag-js/dom-query": "1.41.2", "@zag-js/focus-visible": "1.41.2", "@zag-js/popper": "1.41.2", "@zag-js/types": "1.41.2", "@zag-js/utils": "1.41.2" } }, "sha512-3wGaKABILexoNBJ1bJiHqLLTctR/VMZaNA4cyKiqZeBEWtAkdMhgyY2xKobrP6KtUTqAeUFNVSTu4yCDrAQnUw=="], + "@zag-js/scroll-snap": ["@zag-js/scroll-snap@1.43.3", "", { "dependencies": { "@zag-js/dom-query": "1.43.3" } }, "sha512-izT8eXvwqZMEKNM3lLcAWz9MpUwvZ0UCjBnfQX2JLHLcjYxLOytMd6rfGM2hE1erD0CBYlBUi5bIqstwQFLmCA=="], - "@zag-js/signature-pad": ["@zag-js/signature-pad@1.41.2", "", { "dependencies": { "@zag-js/anatomy": "1.41.2", "@zag-js/core": "1.41.2", "@zag-js/dom-query": "1.41.2", "@zag-js/types": "1.41.2", "@zag-js/utils": "1.41.2", "perfect-freehand": "^1.2.3" } }, "sha512-iNrOxY4gtqhsZdXYvlhF7s+LiOvwV7/kBpNnq8tJ1oYhgTs8wvKtJHrP86/CR05irEXQTaLfmeAJZuBEys9iRA=="], + "@zag-js/select": ["@zag-js/select@1.43.3", "", { "dependencies": { "@zag-js/anatomy": "1.43.3", "@zag-js/collection": "1.43.3", "@zag-js/core": "1.43.3", "@zag-js/dismissable": "1.43.3", "@zag-js/dom-query": "1.43.3", "@zag-js/focus-visible": "1.43.3", "@zag-js/popper": "1.43.3", "@zag-js/types": "1.43.3", "@zag-js/utils": "1.43.3" } }, "sha512-vd5uKPOoRXXrHlL8VPNk5Mih6XRhIzXAon7emEupCe6UAAShqYnxumrLBbr5LifiePP93CGJx3rGn8RZky/OVg=="], - "@zag-js/slider": ["@zag-js/slider@1.41.2", "", { "dependencies": { "@zag-js/anatomy": "1.41.2", "@zag-js/core": "1.41.2", "@zag-js/dom-query": "1.41.2", "@zag-js/types": "1.41.2", "@zag-js/utils": "1.41.2" } }, "sha512-mKK2BwoDbIGxAdkdKkPZJA1SHtEQt3lS9hJ6WghefYU2vyd0BXoIKvcDV3xJOzly5LXYhH5cJITn6JtGK8353A=="], + "@zag-js/signature-pad": ["@zag-js/signature-pad@1.43.3", "", { "dependencies": { "@zag-js/anatomy": "1.43.3", "@zag-js/core": "1.43.3", "@zag-js/dom-query": "1.43.3", "@zag-js/types": "1.43.3", "@zag-js/utils": "1.43.3", "perfect-freehand": "^1.2.3" } }, "sha512-5AbaVRXIwJQGheffPsvFiShQyjb4ufgvt6eyJX5ovpF9PiPuvaP6mnVYdJwK/YelWltW41b7NABtSghUYl5gIw=="], - "@zag-js/splitter": ["@zag-js/splitter@1.41.2", "", { "dependencies": { "@zag-js/anatomy": "1.41.2", "@zag-js/core": "1.41.2", "@zag-js/dom-query": "1.41.2", "@zag-js/types": "1.41.2", "@zag-js/utils": "1.41.2" } }, "sha512-Ubp4hkmzvVysU31jCINYbBXVqruu7rEPGqugWMzeXC5Hwda648aHpbg4Jix/wRtaGLjsyh6KOVEwAmoJU9NwhQ=="], + "@zag-js/slider": ["@zag-js/slider@1.43.3", "", { "dependencies": { "@zag-js/anatomy": "1.43.3", "@zag-js/core": "1.43.3", "@zag-js/dom-query": "1.43.3", "@zag-js/types": "1.43.3", "@zag-js/utils": "1.43.3" } }, "sha512-SwnwdabVPouHraF4fcICz9szGMARxUd8CPA0+x+w48D8hEn0GzFXDRI0ntXByEstwbpyzvy4ptRvh0WRvwCJbw=="], - "@zag-js/steps": ["@zag-js/steps@1.41.2", "", { "dependencies": { "@zag-js/anatomy": "1.41.2", "@zag-js/core": "1.41.2", "@zag-js/dom-query": "1.41.2", "@zag-js/types": "1.41.2", "@zag-js/utils": "1.41.2" } }, "sha512-m0t2r8+FWwa2b2aU5JiNrHVdYHyNZYHK0G3Tq9lCOSQoDeoJIkyta+sIVehLVSY+0Ba9kOlkRUmYLbsnfXaW+Q=="], + "@zag-js/splitter": ["@zag-js/splitter@1.43.3", "", { "dependencies": { "@zag-js/anatomy": "1.43.3", "@zag-js/core": "1.43.3", "@zag-js/dom-query": "1.43.3", "@zag-js/types": "1.43.3", "@zag-js/utils": "1.43.3" } }, "sha512-iQDlQvAD+ldG0QEj6pwQazIiEjR5bvJhZFeqoSRy11BHOls5mT978QNOcCTZ0gQ1ilwsWoAMnESY8d33U1v1Vw=="], - "@zag-js/store": ["@zag-js/store@1.41.2", "", { "dependencies": { "proxy-compare": "3.0.1" } }, "sha512-dVZF7E1ezXzynrKhMH3rfSr2rBbCfvTjvXbXz7//1PNULuq58UU5dG93V+9l834npCZxI2+PrpY45wZLJPTsIA=="], + "@zag-js/steps": ["@zag-js/steps@1.43.3", "", { "dependencies": { "@zag-js/anatomy": "1.43.3", "@zag-js/core": "1.43.3", "@zag-js/dom-query": "1.43.3", "@zag-js/types": "1.43.3", "@zag-js/utils": "1.43.3" } }, "sha512-Au4LFM0jqn/v66HSU1ZIpb8Dl9LK3yDQ1pPhE2k2tuJz0ksq9s61m47Vf1FjQhlfBFgXkh20xASAgsVVbDXZdg=="], - "@zag-js/switch": ["@zag-js/switch@1.41.2", "", { "dependencies": { "@zag-js/anatomy": "1.41.2", "@zag-js/core": "1.41.2", "@zag-js/dom-query": "1.41.2", "@zag-js/focus-visible": "1.41.2", "@zag-js/types": "1.41.2", "@zag-js/utils": "1.41.2" } }, "sha512-qHbQK95UUHN0tj+bf9LLphLcMo/uTg2Pvs0c1Gs03Zh4g3NtHf0uYIhMZKYlCH0hNVlKrmdzLKWgeoDxv9gySw=="], + "@zag-js/store": ["@zag-js/store@1.43.3", "", { "dependencies": { "proxy-compare": "3.0.1" } }, "sha512-NL3Uxk5Rszjd+X+cPXw0N7Kn5TNMyrS6cTMazlBOcN2+J68mzXhNFvM/0H38m0X+3ybK3sE5Ta6NPlhOQADRqw=="], - "@zag-js/tabs": ["@zag-js/tabs@1.41.2", "", { "dependencies": { "@zag-js/anatomy": "1.41.2", "@zag-js/core": "1.41.2", "@zag-js/dom-query": "1.41.2", "@zag-js/types": "1.41.2", "@zag-js/utils": "1.41.2" } }, "sha512-7YVj2mCcxRbn1wMXP9anaTOVf+J0fa5uaPScr8e4+e2xc+/1WKzqN6V8IDeKS5wV/xzi1r3Ny307sX7Xz4ZJVQ=="], + "@zag-js/switch": ["@zag-js/switch@1.43.3", "", { "dependencies": { "@zag-js/anatomy": "1.43.3", "@zag-js/core": "1.43.3", "@zag-js/dom-query": "1.43.3", "@zag-js/focus-visible": "1.43.3", "@zag-js/types": "1.43.3", "@zag-js/utils": "1.43.3" } }, "sha512-MZxRjKE9RAb0qq6bBGj9PKX4m+wWKrNJ7MxdZuopcyWxRe7c6B389bprbgAUmDmm1WB8EMQwluEqyvXqC2j9tA=="], - "@zag-js/tags-input": ["@zag-js/tags-input@1.41.2", "", { "dependencies": { "@zag-js/anatomy": "1.41.2", "@zag-js/auto-resize": "1.41.2", "@zag-js/core": "1.41.2", "@zag-js/dom-query": "1.41.2", "@zag-js/interact-outside": "1.41.2", "@zag-js/live-region": "1.41.2", "@zag-js/types": "1.41.2", "@zag-js/utils": "1.41.2" } }, "sha512-aIPEndSO+9LHxyoXLUr0Uttxw2cYMyDuii5w50wn/N7lFJD49U3Sj+6XaB/oJSbDAwn10WrsRDtb7Gs2kmU+Qw=="], + "@zag-js/tabs": ["@zag-js/tabs@1.43.3", "", { "dependencies": { "@zag-js/anatomy": "1.43.3", "@zag-js/core": "1.43.3", "@zag-js/dom-query": "1.43.3", "@zag-js/types": "1.43.3", "@zag-js/utils": "1.43.3" } }, "sha512-uLT5YiQAcDkSi9T1plYQyXAXaqGi1H5iw/PA0yXsWDOoNFU9jlPM5s8SuXbBJzXiufSFekdhzpNhMUhcapnBdA=="], - "@zag-js/timer": ["@zag-js/timer@1.41.2", "", { "dependencies": { "@zag-js/anatomy": "1.41.2", "@zag-js/core": "1.41.2", "@zag-js/dom-query": "1.41.2", "@zag-js/types": "1.41.2", "@zag-js/utils": "1.41.2" } }, "sha512-PRYLWaip0+1FeVGEMNk5wMGAAIYgBIWwulZ4U5I+2Ayjohzp2NUAfwJ3sqoYvRrfjNYUNAPdU4eGu1zetC+oVQ=="], + "@zag-js/tags-input": ["@zag-js/tags-input@1.43.3", "", { "dependencies": { "@zag-js/anatomy": "1.43.3", "@zag-js/auto-resize": "1.43.3", "@zag-js/core": "1.43.3", "@zag-js/dom-query": "1.43.3", "@zag-js/interact-outside": "1.43.3", "@zag-js/live-region": "1.43.3", "@zag-js/types": "1.43.3", "@zag-js/utils": "1.43.3" } }, "sha512-JJx8WbN75PzKDBCWuIwZ6Anw2bk+CDPkB0gkCobuvAVhlYh0nN8HAWYPzMSzGZ+P2AhWN8KYEF9l8Pyx17XRXA=="], - "@zag-js/toast": ["@zag-js/toast@1.41.2", "", { "dependencies": { "@zag-js/anatomy": "1.41.2", "@zag-js/core": "1.41.2", "@zag-js/dismissable": "1.41.2", "@zag-js/dom-query": "1.41.2", "@zag-js/types": "1.41.2", "@zag-js/utils": "1.41.2" } }, "sha512-+F3PsAo6EIz4rh73IOMCb/+FOUp7e3VjUY2q5sdU4IbfOzJBIbVSJxn0PQmHkuxkzWdCom0Lv0qSPFg/UTplnQ=="], + "@zag-js/timer": ["@zag-js/timer@1.43.3", "", { "dependencies": { "@zag-js/anatomy": "1.43.3", "@zag-js/core": "1.43.3", "@zag-js/dom-query": "1.43.3", "@zag-js/types": "1.43.3", "@zag-js/utils": "1.43.3" } }, "sha512-HioBlMnCf+DO5T/tJPm8EnHF+Tp/jjrAYqCA5R2FgLGBC0kBWI2eFqpc74wXlH3jjTzeFaZJgaq2HnkQNvAG/w=="], - "@zag-js/toggle": ["@zag-js/toggle@1.41.2", "", { "dependencies": { "@zag-js/anatomy": "1.41.2", "@zag-js/core": "1.41.2", "@zag-js/dom-query": "1.41.2", "@zag-js/types": "1.41.2", "@zag-js/utils": "1.41.2" } }, "sha512-EFB9pb3pEtwXt7RSivVLWXV64dKUF8gsn75tt8TbYBgfy+zW85MsRLu8U48TXZN5teQWAKKNujr9bxQsW/CWvQ=="], + "@zag-js/toast": ["@zag-js/toast@1.43.3", "", { "dependencies": { "@zag-js/anatomy": "1.43.3", "@zag-js/core": "1.43.3", "@zag-js/dismissable": "1.43.3", "@zag-js/dom-query": "1.43.3", "@zag-js/types": "1.43.3", "@zag-js/utils": "1.43.3" } }, "sha512-XBDewuymsIzZy23xrcx1v6F/HeDlk3NAfZ2C02P+DHiNKdj+a53PpqUGZg2e2FX7ZGibag+aywWG4pnvKaSQWg=="], - "@zag-js/toggle-group": ["@zag-js/toggle-group@1.41.2", "", { "dependencies": { "@zag-js/anatomy": "1.41.2", "@zag-js/core": "1.41.2", "@zag-js/dom-query": "1.41.2", "@zag-js/types": "1.41.2", "@zag-js/utils": "1.41.2" } }, "sha512-C6wn3A89h24hTs0BN9ryEuKatfR493u7QqxS06TeK9oI/KZBvm5Rwm8FPHSUJvsUTkAkow4PsXC0Ra19duzEdQ=="], + "@zag-js/toc": ["@zag-js/toc@1.43.3", "", { "dependencies": { "@zag-js/anatomy": "1.43.3", "@zag-js/core": "1.43.3", "@zag-js/dom-query": "1.43.3", "@zag-js/types": "1.43.3", "@zag-js/utils": "1.43.3" } }, "sha512-ciIs9byITgsziuGdXKTVnAP3oYd4Nti2hsI0a5VqFMBslWiU/jO6pqRAPTj5V+e2z+Z7gM1RzzMNs8di5HuUFQ=="], - "@zag-js/tooltip": ["@zag-js/tooltip@1.41.2", "", { "dependencies": { "@zag-js/anatomy": "1.41.2", "@zag-js/core": "1.41.2", "@zag-js/dom-query": "1.41.2", "@zag-js/focus-visible": "1.41.2", "@zag-js/popper": "1.41.2", "@zag-js/types": "1.41.2", "@zag-js/utils": "1.41.2" } }, "sha512-68okWJCFXfW8r0h97kEcU2yKPkq6e0S6QkiYh09ifMXoYjrQw/shPol8PgrS1poqKJigUWtsKm+bw73abhMn3w=="], + "@zag-js/toggle": ["@zag-js/toggle@1.43.3", "", { "dependencies": { "@zag-js/anatomy": "1.43.3", "@zag-js/core": "1.43.3", "@zag-js/dom-query": "1.43.3", "@zag-js/types": "1.43.3", "@zag-js/utils": "1.43.3" } }, "sha512-zZR4D6BRfdAzoEyPYqmkCw8GPh5s87E+dr3U+mHa3kabQBiVJ0Z3fvY2pNb3DBBCLJne+1+OF9NWiDTI8cRqGA=="], - "@zag-js/tour": ["@zag-js/tour@1.41.2", "", { "dependencies": { "@zag-js/anatomy": "1.41.2", "@zag-js/core": "1.41.2", "@zag-js/dismissable": "1.41.2", "@zag-js/dom-query": "1.41.2", "@zag-js/focus-trap": "1.41.2", "@zag-js/interact-outside": "1.41.2", "@zag-js/popper": "1.41.2", "@zag-js/types": "1.41.2", "@zag-js/utils": "1.41.2" } }, "sha512-Q7UsvuHYYBo1Cs4b4OS0e/D8lxd2GpSRII93s5BQPi5HTcBjaWhVysAykmCFbat6Z56z0NBmFHNdhZ8oVPls1A=="], + "@zag-js/toggle-group": ["@zag-js/toggle-group@1.43.3", "", { "dependencies": { "@zag-js/anatomy": "1.43.3", "@zag-js/core": "1.43.3", "@zag-js/dom-query": "1.43.3", "@zag-js/types": "1.43.3", "@zag-js/utils": "1.43.3" } }, "sha512-ED8LA8cXEaC/MZtFNBY4+yCoP1qFYPZH0rBq0NszaxdYSw0hBTo7WfSbSlthF2IAl4z52ZrneTjQjB4LDEUNBw=="], - "@zag-js/tree-view": ["@zag-js/tree-view@1.41.2", "", { "dependencies": { "@zag-js/anatomy": "1.41.2", "@zag-js/collection": "1.41.2", "@zag-js/core": "1.41.2", "@zag-js/dom-query": "1.41.2", "@zag-js/types": "1.41.2", "@zag-js/utils": "1.41.2" } }, "sha512-QNi0VpV+RyzF4NP72+kSleUpauF9SMAzOAe59nxvs8jAUHqV5diDCInnbQos4+cyFDXFzGq3lElot26A1yI+7Q=="], + "@zag-js/tooltip": ["@zag-js/tooltip@1.43.3", "", { "dependencies": { "@zag-js/anatomy": "1.43.3", "@zag-js/core": "1.43.3", "@zag-js/dom-query": "1.43.3", "@zag-js/focus-visible": "1.43.3", "@zag-js/popper": "1.43.3", "@zag-js/types": "1.43.3", "@zag-js/utils": "1.43.3" } }, "sha512-sBVhcejAQN5oDFE3PoGrvvjqOt5+9rHQjtjnnuhPZqeghsiX/IaL7AY8KelwDoNkMf2npN5i7loQvAZMZLVFaw=="], - "@zag-js/types": ["@zag-js/types@1.41.2", "", { "dependencies": { "csstype": "3.2.3" } }, "sha512-L6CNvK06lIVpy0X8eG3kbDIx8Uuv+3KHElxXYSzRXSJ7/OLCv1sTRgEvnxNtdIWOrksGgxF4JtT7PXtoClGqNQ=="], + "@zag-js/tour": ["@zag-js/tour@1.43.3", "", { "dependencies": { "@zag-js/anatomy": "1.43.3", "@zag-js/core": "1.43.3", "@zag-js/dismissable": "1.43.3", "@zag-js/dom-query": "1.43.3", "@zag-js/focus-trap": "1.43.3", "@zag-js/interact-outside": "1.43.3", "@zag-js/popper": "1.43.3", "@zag-js/types": "1.43.3", "@zag-js/utils": "1.43.3" } }, "sha512-Wxp2HJBnHI0Nm94PvItCEdKyBnwp/PJ1Y5u45X/VTebgVXggPug88ZD51Mm6twIDPpCTkOstOcSy8zz+FlTYlQ=="], - "@zag-js/utils": ["@zag-js/utils@1.41.2", "", {}, "sha512-Yj8FSrR7vGA6ahUhjrThfHAF+PM2Y1Yv2lkXkqZZd60mPBhixcot1+SHOfEMV63JimQcWrmQ8QbeYYMmF+ZpLQ=="], + "@zag-js/tree-view": ["@zag-js/tree-view@1.43.3", "", { "dependencies": { "@zag-js/anatomy": "1.43.3", "@zag-js/collection": "1.43.3", "@zag-js/core": "1.43.3", "@zag-js/dom-query": "1.43.3", "@zag-js/types": "1.43.3", "@zag-js/utils": "1.43.3" } }, "sha512-5fj6RWe4FSRbE3QewuqbghS+ojd2vaWfTrn0jUmH3KHzay2h/w1464oW0IYOONzwOmUUHj4wLDZZKwVyzPvmJA=="], + + "@zag-js/types": ["@zag-js/types@1.43.3", "", { "dependencies": { "csstype": "3.2.3" } }, "sha512-QokzUgkJ7a/TRE8SAXqlm1XfiNDbyM8y+mx0PpmzHa8bvmWXLEe/Zx2TRz8aYoGim75NluYzDy3x+WWileF7uA=="], + + "@zag-js/utils": ["@zag-js/utils@1.43.3", "", {}, "sha512-9P9fvFFxuiDcLqX0BYgGNkf0/a/id32nHvQpwgv/Xv3b9n5yeyw2U8nKefpWr+1VfFsrpf2XMXiA2CDSWZgt2g=="], "abbrev": ["abbrev@2.0.0", "", {}, "sha512-6/mh1E2u2YgEsCHdY0Yx5oW+61gZU+1vXaoiHHrpKeuRNNgFvS+/jrwHiQhB5apAf5oB7UB7E19ol2R2LKH8hQ=="], @@ -1960,7 +1969,7 @@ "base64-js": ["base64-js@0.0.8", "", {}, "sha512-3XSA2cR/h/73EzlXXdU6YNycmYI7+kicTxks4eJg2g39biHR84slg2+des+p7iHYhbRg/udIS4TD53WabcOUkw=="], - "baseline-browser-mapping": ["baseline-browser-mapping@2.11.16", "", { "bin": { "baseline-browser-mapping": "dist/cli.cjs" } }, "sha512-H/bNPUFHewJHyCTdjn1n3Pit5+2GmWT6mmeHImPX+8MA9NA6b67jO4gYmi4jTbCJb2otq34KMZnovndDPqJwhQ=="], + "baseline-browser-mapping": ["baseline-browser-mapping@2.11.20", "", { "bin": { "baseline-browser-mapping": "dist/cli.cjs" } }, "sha512-H0ulySigv6icDJ1F7SjtdCD6PrhTpdYCmP0CactWy1+ekh0AFd0o1Wn5T8b+hnTmdBx19u9yhL6wvCylXMY7zw=="], "big.js": ["big.js@5.2.2", "", {}, "sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ=="], @@ -1994,7 +2003,7 @@ "camelize": ["camelize@1.0.1", "", {}, "sha512-dU+Tx2fsypxTgtLoE36npi3UqcjSSMNYfkqgmoEhtZrraP5VWq0K7FkWVTYa8eMPtnU/G2txVsfdCJTn9uzpuQ=="], - "caniuse-lite": ["caniuse-lite@1.0.30001809", "", {}, "sha512-xxWVywk6a6Arlk+hymeycyn/VgqEfLDxupvhH/xiY5SJ/18kmi9o6MiO320DCUzypORHLtvh0I4i04tUhCNHNQ=="], + "caniuse-lite": ["caniuse-lite@1.0.30001810", "", {}, "sha512-TITQPUkaz+aVk5GL6NhOdwk1aEaNTSDPsGFWrTuhKGtjTF70jL/Oht2W4c6rXUe5fu7Ie19VIahAXHIIiWWNeg=="], "ccount": ["ccount@2.0.1", "", {}, "sha512-eyrF0jiFpY+3drT6383f1qhkbGsLSifNAjA61IUjZjmLCWjItY6LB9ft9YhoDgwfmclB2zhu51Lc7+95b8NRAg=="], @@ -2076,7 +2085,7 @@ "csstype-extra": ["csstype-extra@0.1.35", "", { "peerDependencies": { "typescript": "^5" } }, "sha512-pEJ+ZP1nE0TT5E5XXRuNBiU44O2CCwgm1zd0ogXOX/We8GxX++T7KhThrQaSO2V2Yvdmh2OsqBWLH0+OQTUXKA=="], - "debug": ["debug@4.4.3", "", { "dependencies": { "ms": "^2.1.3" } }, "sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA=="], + "debug": ["debug@4.4.3", "", { "dependencies": { "ms": "^2.1.3" }, "peerDependencies": { "supports-color": "*" }, "optionalPeers": ["supports-color"] }, "sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA=="], "decamelize": ["decamelize@1.2.0", "", {}, "sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA=="], @@ -2114,7 +2123,7 @@ "eastasianwidth": ["eastasianwidth@0.2.0", "", {}, "sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA=="], - "electron-to-chromium": ["electron-to-chromium@1.5.412", "", {}, "sha512-z4rMe3esBzlzovKHj4gxJnsCGZRK5l4baUvm+gCGJBPE+gsyUMKsuU9tnEUtI1dOebXz1ytAPGjvXhmQ7rIPwA=="], + "electron-to-chromium": ["electron-to-chromium@1.5.416", "", {}, "sha512-K6bvB2BjnNrugtIih6ewlbBI9DXa976jIdiIlRLHhBoEI9a4JaQjjHyF+A1IQI543aQYR4LnmOrT/K5fZj0aPA=="], "emoji-regex": ["emoji-regex@8.0.0", "", {}, "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A=="], @@ -2148,11 +2157,11 @@ "escape-string-regexp": ["escape-string-regexp@4.0.0", "", {}, "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA=="], - "eslint": ["eslint@10.8.1", "", { "dependencies": { "@eslint-community/eslint-utils": "^4.8.0", "@eslint-community/regexpp": "^4.12.2", "@eslint/config-array": "^0.23.5", "@eslint/config-helpers": "^0.7.0", "@eslint/core": "^1.2.1", "@eslint/plugin-kit": "^0.7.2", "@humanfs/node": "^0.16.6", "@humanwhocodes/module-importer": "^1.0.1", "@humanwhocodes/retry": "^0.4.2", "@types/estree": "^1.0.6", "ajv": "^6.14.0", "cross-spawn": "^7.0.6", "debug": "^4.3.2", "escape-string-regexp": "^4.0.0", "eslint-scope": "^9.1.2", "eslint-visitor-keys": "^5.0.1", "espree": "^11.2.0", "esquery": "^1.7.0", "esutils": "^2.0.2", "fast-deep-equal": "^3.1.3", "file-entry-cache": "^8.0.0", "find-up": "^5.0.0", "glob-parent": "^6.0.2", "ignore": "^5.2.0", "imurmurhash": "^0.1.4", "is-glob": "^4.0.0", "json-stable-stringify-without-jsonify": "^1.0.1", "minimatch": "^10.2.5", "natural-compare": "^1.4.0", "optionator": "^0.9.3" }, "peerDependencies": { "jiti": "*" }, "optionalPeers": ["jiti"], "bin": { "eslint": "bin/eslint.js" } }, "sha512-wqA7W2jbsC/BnV9Iv1UZpKVFkO1AdNoSmYW8NWG4HNOBbkAMvIqDZ27pI2f07dqn583NcIC44ckjAcOXDL1QbQ=="], + "eslint": ["eslint@10.9.1", "", { "dependencies": { "@eslint-community/eslint-utils": "^4.8.0", "@eslint-community/regexpp": "^4.12.2", "@eslint/config-array": "^0.23.5", "@eslint/config-helpers": "^0.7.0", "@eslint/core": "^1.2.1", "@eslint/plugin-kit": "^0.7.2", "@humanfs/node": "^0.16.6", "@humanwhocodes/module-importer": "^1.0.1", "@humanwhocodes/retry": "^0.4.2", "@types/estree": "^1.0.6", "ajv": "^6.14.0", "cross-spawn": "^7.0.6", "debug": "^4.3.2", "escape-string-regexp": "^4.0.0", "eslint-scope": "^9.1.2", "eslint-visitor-keys": "^5.0.1", "espree": "^11.2.0", "esquery": "^1.7.0", "esutils": "^2.0.2", "fast-deep-equal": "^3.1.3", "file-entry-cache": "^8.0.0", "find-up": "^5.0.0", "glob-parent": "^6.0.2", "ignore": "^5.2.0", "imurmurhash": "^0.1.4", "is-glob": "^4.0.0", "json-stable-stringify-without-jsonify": "^1.0.1", "minimatch": "^10.2.5", "natural-compare": "^1.4.0", "optionator": "^0.9.3" }, "peerDependencies": { "jiti": "*" }, "optionalPeers": ["jiti"], "bin": { "eslint": "bin/eslint.js" } }, "sha512-9VaAkDURekixUQJy0oJYl2DcN6oKMfxay7XzaGYAWQwsb6qfKf+x76R2k1L8kb1boc+FyCAaTA9GmiKaaiaF+A=="], "eslint-config-prettier": ["eslint-config-prettier@10.1.8", "", { "peerDependencies": { "eslint": ">=7.0.0" }, "bin": { "eslint-config-prettier": "bin/cli.js" } }, "sha512-82GZUjRS0p/jganf6q1rEO25VSoHH0hKPCTrgillPjdI/3bgBhAE1QzHrHTizjpRvy6pGAvKjDJtk2pF9NDq8w=="], - "eslint-json-compat-utils": ["eslint-json-compat-utils@0.2.3", "", { "dependencies": { "esquery": "^1.6.0" }, "peerDependencies": { "eslint": "*", "jsonc-eslint-parser": "^2.4.0 || ^3.0.0" } }, "sha512-RbBmDFyu7FqnjE8F0ZxPNzx5UaptdeS9Uu50r7A+D7s/+FCX+ybiyViYEgFUaFIFqSWJgZRTpL5d8Kanxxl2lQ=="], + "eslint-json-compat-utils": ["eslint-json-compat-utils@0.2.3", "", { "dependencies": { "esquery": "^1.6.0" }, "peerDependencies": { "@eslint/json": "*", "eslint": "*", "jsonc-eslint-parser": "^2.4.0 || ^3.0.0" }, "optionalPeers": ["@eslint/json"] }, "sha512-RbBmDFyu7FqnjE8F0ZxPNzx5UaptdeS9Uu50r7A+D7s/+FCX+ybiyViYEgFUaFIFqSWJgZRTpL5d8Kanxxl2lQ=="], "eslint-mdx": ["eslint-mdx@3.8.1", "", { "dependencies": { "acorn": "^8.15.0", "acorn-jsx": "^5.3.2", "espree": "^9.6.1 || ^10.4.0 || ^11.2.0", "estree-util-visit": "^2.0.0", "remark-mdx": "^3.1.0", "remark-parse": "^11.0.0", "remark-stringify": "^11.0.0", "synckit": "^0.11.8", "unified": "^11.0.5", "unified-engine": "^11.2.2", "unist-util-visit": "^5.0.0", "vfile": "^6.0.3" }, "peerDependencies": { "eslint": ">=8.0.0", "remark-lint-file-extension": "*" }, "optionalPeers": ["remark-lint-file-extension"] }, "sha512-hnsqWwMOHqUANwxWEGt8XbwABPEr5sTOolAzqyUDFdlERpqjFE/icylb+mJl60VICL+kLbbvXWbnFLWZdTqJ2g=="], @@ -2160,7 +2169,7 @@ "eslint-plugin-eslint-plugin": ["eslint-plugin-eslint-plugin@7.6.2", "", { "dependencies": { "@eslint-community/eslint-utils": "^4.4.0", "estraverse": "^5.3.0" }, "peerDependencies": { "eslint": ">=9.0.0" } }, "sha512-MWE0tzCq0VatvFzELsTfmnMZHFZEQc2lK7HjeLLFiQDUPD8M1pCDlpOuQxGBzjbFvyvz4bfYjI03HQlbS5qdQQ=="], - "eslint-plugin-jsonc": ["eslint-plugin-jsonc@3.4.1", "", { "dependencies": { "@eslint-community/eslint-utils": "^4.5.1", "@eslint/core": "^1.0.1", "@eslint/plugin-kit": "^0.7.0", "@ota-meshi/ast-token-store": "^0.3.0", "diff-sequences": "^29.6.3", "eslint-json-compat-utils": "^0.2.3", "jsonc-eslint-parser": "^3.1.0", "natural-compare": "^1.4.0", "synckit": "^0.11.12" }, "peerDependencies": { "eslint": ">=9.38.0" } }, "sha512-HHWkjAmVJ3QAffCkfo0XKl3CstLtgbIu5EGfFfVDLQT6vqPrxl4pFbUwFwY03nOlvyuDiiBixhHFrlbzn9u09Q=="], + "eslint-plugin-jsonc": ["eslint-plugin-jsonc@3.4.2", "", { "dependencies": { "@eslint-community/eslint-utils": "^4.5.1", "@eslint/core": "^1.0.1", "@eslint/plugin-kit": "^0.7.0", "@ota-meshi/ast-token-store": "^0.3.0", "diff-sequences": "^29.6.3", "eslint-json-compat-utils": "^0.2.3", "jsonc-eslint-parser": "^3.1.0", "natural-compare": "^1.4.0", "synckit": "^0.11.12" }, "peerDependencies": { "eslint": ">=9.38.0" } }, "sha512-q5xzjCYFQuhFomTbctXzd3STfDJ8XduvaigjQmMEbP2gzSKrc58y3Fv6D775/cIK1/sRUn+4kpljiU2iW8k0zw=="], "eslint-plugin-mdx": ["eslint-plugin-mdx@3.8.1", "", { "dependencies": { "eslint-mdx": "^3.8.1", "mdast-util-from-markdown": "^2.0.2", "mdast-util-mdx": "^3.0.0", "micromark-extension-mdxjs": "^3.0.0", "remark-mdx": "^3.1.0", "remark-parse": "^11.0.0", "remark-stringify": "^11.0.0", "synckit": "^0.11.8", "unified": "^11.0.5", "vfile": "^6.0.3" }, "peerDependencies": { "eslint": ">=8.0.0" } }, "sha512-4OLgotfBxUDc1f6ihXSagT/1+JCCUABA/2r6Kzl6gqFftg4dCV0wBfdwFo6X6UO/FzTHr3g6mVt+6prRXffc/Q=="], @@ -2208,7 +2217,7 @@ "estree-util-is-identifier-name": ["estree-util-is-identifier-name@3.0.0", "", {}, "sha512-hFtqIDZTIUZ9BXLb8y4pYGyk6+wekIivNVTcmvk8NoOh+VeRn5y6cEHzbURrWbfp1fIqdVipilzj+lfaadNZmg=="], - "estree-util-scope": ["estree-util-scope@1.0.0", "", { "dependencies": { "@types/estree": "^1.0.0", "devlop": "^1.0.0" } }, "sha512-2CAASclonf+JFWBNJPndcOpA8EMJwa0Q8LUFJEKqXLW6+qBvbFZuF5gItbQOs/umBUkjviCSDCbBwU2cXbmrhQ=="], + "estree-util-scope": ["estree-util-scope@1.0.1", "", { "dependencies": { "@types/estree": "^1.0.0", "devlop": "^1.0.0" } }, "sha512-B0np3dcdxqILX5e9nEi5/Fr4K7gL4oYFVPV1zRa2e9wRCbQoZZNWOZFYyoInvXUPJXBXjss+QXlWLJChDEHDkA=="], "estree-util-to-js": ["estree-util-to-js@2.0.0", "", { "dependencies": { "@types/estree-jsx": "^1.0.0", "astring": "^1.8.0", "source-map": "^0.7.0" } }, "sha512-WDF+xj5rRWmD5tj6bIqRi6CkLIXbbNQUcxQHzGysQzvHmdYG2G7p/Tf0J0gpxGgkeMZNTIjT/AoSvC9Xehcgdg=="], @@ -2240,11 +2249,11 @@ "fast-string-width": ["fast-string-width@3.0.2", "", { "dependencies": { "fast-string-truncated-width": "^3.0.2" } }, "sha512-gX8LrtNEI5hq8DVUfRQMbr5lpaS4nMIWV+7XEbXk2b8kiQIizgnlr12B4dA3ZEx3308ze0O4Q1R+cHts8kyUJg=="], - "fast-uri": ["fast-uri@3.1.5", "", {}, "sha512-gHwA1O9LDIcKunMKhObS/HimwtehO1nPUECKAu5TpKgaO19fcWEl4bliWe1jWxVFvIXztJjjQ4L8XQ1EU9f7Jw=="], + "fast-uri": ["fast-uri@3.1.6", "", {}, "sha512-7Ical1vFEMr0onbVzEDIreM22I4khW+fzyQPwvAFWBp1iwdshSZRsL4jjRvPG9JP1uiqMHRto+YU6R2/CzDz5Q=="], "fast-wrap-ansi": ["fast-wrap-ansi@0.2.2", "", { "dependencies": { "fast-string-width": "^3.0.2" } }, "sha512-7F2Fl+TjRSenLqlU3UjSH0iyqopqoZIu7eZVpEirP2g1GtWa2G/ecEmBdgz31+Mxr+ELclgg6sokpSFIQiZ02Q=="], - "fastq": ["fastq@1.20.1", "", { "dependencies": { "reusify": "^1.0.4" } }, "sha512-GGToxJ/w1x32s/D2EKND7kTil4n8OVk/9mycTc4VDza13lOvpUZTGX3mFSCtV9ksdGBVzvsyAVLM6mHFThxXxw=="], + "fastq": ["fastq@1.20.3", "", { "dependencies": { "reusify": "^1.0.4" } }, "sha512-XKv5nnLs6nLF71NgiKJLIZFLkPyIEuOselLG7ujZnGrRfQK8HpvY+WqKhAJUAdLomwVHErVS4LfxFlPq0/FTAw=="], "fault": ["fault@1.0.4", "", { "dependencies": { "format": "^0.2.0" } }, "sha512-CJ0HCB5tL5fYTEA7ToAq5+kTwd++Borf1/bifxd9iT70QcXr4MRrO3Llf8Ifs70q+SJcGHFtnIE/Nw6giCtECA=="], @@ -2292,7 +2301,7 @@ "graceful-fs": ["graceful-fs@4.2.11", "", {}, "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ=="], - "happy-dom": ["happy-dom@20.11.6", "", { "dependencies": { "@types/node": ">=20.0.0", "@types/whatwg-mimetype": "^3.0.2", "@types/ws": "^8.18.1", "buffer-image-size": "^0.6.4", "entities": "^7.0.1", "whatwg-mimetype": "^3.0.0", "ws": "^8.21.0" } }, "sha512-Hldbg8AdAa5a5oDcZpjqnGitp7JB0hqWmfv/8qr+kft4vzSD8BHsbdRfzYvL/0QcbKcURC/yyoygbeDQarPvYg=="], + "happy-dom": ["happy-dom@20.11.15", "", { "dependencies": { "@types/node": ">=20.0.0", "@types/whatwg-mimetype": "^3.0.2", "@types/ws": "^8.18.1", "buffer-image-size": "^0.6.4", "entities": "^7.0.1", "whatwg-mimetype": "^3.0.0", "ws": "^8.21.0" } }, "sha512-bj2gQIKzOYB6GAAJ/jrN/IFHQe79MhEOiMAspRRWiKebRoegvGDv2B6eUt8KiZMTEDvx6ri0fAF7Xh/umAUUZA=="], "has-flag": ["has-flag@4.0.0", "", {}, "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ=="], @@ -2572,7 +2581,7 @@ "minimist": ["minimist@1.2.8", "", {}, "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA=="], - "minimizer-webpack-plugin": ["minimizer-webpack-plugin@5.6.1", "", { "dependencies": { "@jridgewell/trace-mapping": "^0.3.25", "jest-worker": "^27.4.5", "schema-utils": "^4.3.0", "terser": "^5.31.1" }, "peerDependencies": { "webpack": "^5.1.0" } }, "sha512-DoeAZz8Q1C1znwsUzej1fdoi4jCf7/+Em27ouLqfK/+3m8G+D7yDhUwrc3CNhjSzGUN1kn7Iv4sWmjflQHenpw=="], + "minimizer-webpack-plugin": ["minimizer-webpack-plugin@5.8.0", "", { "dependencies": { "@jridgewell/trace-mapping": "^0.3.31", "jest-worker": "^27.4.5", "schema-utils": "^4.3.3", "terser": "^5.51.0" }, "peerDependencies": { "@minify-html/node": "*", "@swc/core": "*", "@swc/css": "*", "@swc/html": "*", "clean-css": "*", "cssnano": "*", "csso": "*", "esbuild": "*", "html-minifier-terser": "*", "lightningcss": "*", "postcss": "*", "uglify-js": "*", "webpack": "^5.1.0" }, "optionalPeers": ["@minify-html/node", "@swc/core", "@swc/css", "@swc/html", "clean-css", "cssnano", "csso", "esbuild", "html-minifier-terser", "lightningcss", "postcss", "uglify-js"] }, "sha512-2cT9+goJfBhtMz+gJqejSf09ClgmYhPhccRb/fb0ztVbixt0BkO8mRuI26FoPPuUNkRk6iEDryWAIouc5W8eJA=="], "minipass": ["minipass@7.1.3", "", {}, "sha512-tEBHqDnIoM/1rXME1zgka9g6Q2lcoCkxHLuc7ODJ5BxbP5d4c2Z5cGgtXAku59200Cx7diuHTOYfSBD8n6mm8A=="], @@ -2592,7 +2601,7 @@ "neo-async": ["neo-async@2.6.2", "", {}, "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw=="], - "next": ["next@16.3.1", "", { "dependencies": { "@next/env": "16.3.1", "@swc/helpers": "0.5.23", "baseline-browser-mapping": "^2.9.19", "caniuse-lite": "^1.0.30001579", "postcss": "8.5.23", "styled-jsx": "5.1.6" }, "optionalDependencies": { "@next/swc-darwin-arm64": "16.3.1", "@next/swc-darwin-x64": "16.3.1", "@next/swc-linux-arm64-gnu": "16.3.1", "@next/swc-linux-arm64-musl": "16.3.1", "@next/swc-linux-x64-gnu": "16.3.1", "@next/swc-linux-x64-musl": "16.3.1", "@next/swc-win32-arm64-msvc": "16.3.1", "@next/swc-win32-x64-msvc": "16.3.1", "sharp": "^0.35.3" }, "peerDependencies": { "@opentelemetry/api": "^1.1.0", "@playwright/test": "^1.51.1", "babel-plugin-react-compiler": "*", "react": "^18.2.0 || 19.0.0-rc-de68d2f4-20241204 || ^19.0.0", "react-dom": "^18.2.0 || 19.0.0-rc-de68d2f4-20241204 || ^19.0.0", "sass": "^1.3.0" }, "optionalPeers": ["@opentelemetry/api", "@playwright/test", "babel-plugin-react-compiler", "sass"], "bin": { "next": "dist/bin/next" } }, "sha512-hsAp0i7Rh+/dhe7DGIeN2YlpLM1DP4MNxti9EtDMtqcO612X81MvvEj388/oTce9U1EcEIOWDlGq0zRwrBKvuA=="], + "next": ["next@16.3.3", "", { "dependencies": { "@next/env": "16.3.3", "@swc/helpers": "0.5.23", "baseline-browser-mapping": "^2.9.19", "caniuse-lite": "^1.0.30001579", "postcss": "8.5.23", "styled-jsx": "5.1.6" }, "optionalDependencies": { "@next/swc-darwin-arm64": "16.3.3", "@next/swc-darwin-x64": "16.3.3", "@next/swc-linux-arm64-gnu": "16.3.3", "@next/swc-linux-arm64-musl": "16.3.3", "@next/swc-linux-x64-gnu": "16.3.3", "@next/swc-linux-x64-musl": "16.3.3", "@next/swc-win32-arm64-msvc": "16.3.3", "@next/swc-win32-x64-msvc": "16.3.3", "sharp": "^0.35.3" }, "peerDependencies": { "@opentelemetry/api": "^1.1.0", "@playwright/test": "^1.51.1", "babel-plugin-react-compiler": "*", "react": "^18.2.0 || 19.0.0-rc-de68d2f4-20241204 || ^19.0.0", "react-dom": "^18.2.0 || 19.0.0-rc-de68d2f4-20241204 || ^19.0.0", "sass": "^1.3.0" }, "optionalPeers": ["@opentelemetry/api", "@playwright/test", "babel-plugin-react-compiler", "sass"], "bin": { "next": "dist/bin/next" } }, "sha512-tuRTx1nQ/yVw83cwJBo9F+njGUgMn3UHQycreWHB8XsStvvAh1AthbI8/4IpKnFaF58F+iSiHejYOlMQ/eq83g=="], "next-chakra-ui-benchmark": ["next-chakra-ui-benchmark@workspace:benchmark/next-chakra-ui"], @@ -2632,7 +2641,7 @@ "next-vanilla-extract-devup-ui-benchmark": ["next-vanilla-extract-devup-ui-benchmark@workspace:benchmark/next-vanilla-extract-devup-ui"], - "node-releases": ["node-releases@2.0.53", "", {}, "sha512-D9UOmYG3UH1V+ENW56t5QXBwJw1YEY18ruVeus89Rw+SyIgjPkCO84bRzO3uNIYosJbNwiabWVn48o3uJLjxFQ=="], + "node-releases": ["node-releases@2.0.54", "", {}, "sha512-YHs7BmmcsdAI5Ozuf8JZo6PT0mv2GIWC9vMfvUC3dp65M8hn7Ux8CPL+2oBI7juNuj9d0ndhTcznq2ODBps9cQ=="], "nopt": ["nopt@7.2.1", "", { "dependencies": { "abbrev": "^2.0.0" }, "bin": { "nopt": "bin/nopt.js" } }, "sha512-taM24ViiimT/XntxbPyJQzCG+p4EKOpgD3mxFwW38mGjVUrfERQOeY4EDHjdnptttfHuHQXFx+lTP08Q+mLa/w=="], @@ -2708,7 +2717,7 @@ "picocolors": ["picocolors@1.1.1", "", {}, "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA=="], - "picomatch": ["picomatch@4.0.5", "", {}, "sha512-RvwwcruNjI1ncT5xRakeyS9Lf8lcItv34KD+aif+VH9kduAyfYBipGh12274xtenIPZ119/R9BdTBa8gAwSh0A=="], + "picomatch": ["picomatch@4.0.7", "", {}, "sha512-qcJu88Q2IWqJsDD529JKMdwGm/dvInW4HvQnRwiH9JtihJvzGOscDtHE3x1pBKeUOTysQ8kVmLnJ2kJu7yhcGA=="], "pkg-dir": ["pkg-dir@7.0.0", "", { "dependencies": { "find-up": "^6.3.0" } }, "sha512-Ie9z/WINcxxLp27BKOCHGde4ITq9UklYKDzVo1nhk5sqGEXU3FpkwP5GM2voTGJkGd9B3Otl+Q4uwSOeSUtOBA=="], @@ -2850,9 +2859,9 @@ "rimraf": ["rimraf@6.1.3", "", { "dependencies": { "glob": "^13.0.3", "package-json-from-dist": "^1.0.1" }, "bin": { "rimraf": "dist/esm/bin.mjs" } }, "sha512-LKg+Cr2ZF61fkcaK1UdkH2yEBBKnYjTyWzTJT6KNPcSPaiT7HSdhtMXQuN5wkTX0Xu72KQ1l8S42rlmexS2hSA=="], - "rolldown": ["rolldown@1.2.5", "", { "dependencies": { "@oxc-project/types": "=0.146.0", "@rolldown/pluginutils": "^1.0.0" }, "optionalDependencies": { "@rolldown/binding-android-arm-eabi": "1.2.5", "@rolldown/binding-android-arm64": "1.2.5", "@rolldown/binding-darwin-arm64": "1.2.5", "@rolldown/binding-darwin-x64": "1.2.5", "@rolldown/binding-freebsd-x64": "1.2.5", "@rolldown/binding-linux-arm-gnueabihf": "1.2.5", "@rolldown/binding-linux-arm64-gnu": "1.2.5", "@rolldown/binding-linux-arm64-musl": "1.2.5", "@rolldown/binding-linux-ppc64-gnu": "1.2.5", "@rolldown/binding-linux-s390x-gnu": "1.2.5", "@rolldown/binding-linux-x64-gnu": "1.2.5", "@rolldown/binding-linux-x64-musl": "1.2.5", "@rolldown/binding-openharmony-arm64": "1.2.5", "@rolldown/binding-win32-arm64-msvc": "1.2.5", "@rolldown/binding-win32-x64-msvc": "1.2.5" }, "bin": { "rolldown": "./bin/cli.mjs" } }, "sha512-VD2IE5PUG4Oj8zz2VGykiYd5wbnjdIiSsNQb8Qu5B+noEp+A78mu2iVvpp27g8es14Tk9rofNs5Tku9iQCS4fA=="], + "rolldown": ["rolldown@1.2.6", "", { "dependencies": { "@oxc-project/types": "=0.147.0", "@rolldown/pluginutils": "^1.0.0" }, "optionalDependencies": { "@rolldown/binding-android-arm-eabi": "1.2.6", "@rolldown/binding-android-arm64": "1.2.6", "@rolldown/binding-darwin-arm64": "1.2.6", "@rolldown/binding-darwin-x64": "1.2.6", "@rolldown/binding-freebsd-x64": "1.2.6", "@rolldown/binding-linux-arm-gnueabihf": "1.2.6", "@rolldown/binding-linux-arm64-gnu": "1.2.6", "@rolldown/binding-linux-arm64-musl": "1.2.6", "@rolldown/binding-linux-ppc64-gnu": "1.2.6", "@rolldown/binding-linux-s390x-gnu": "1.2.6", "@rolldown/binding-linux-x64-gnu": "1.2.6", "@rolldown/binding-linux-x64-musl": "1.2.6", "@rolldown/binding-openharmony-arm64": "1.2.6", "@rolldown/binding-win32-arm64-msvc": "1.2.6", "@rolldown/binding-win32-x64-msvc": "1.2.6" }, "bin": { "rolldown": "./bin/cli.mjs" } }, "sha512-vMM4q3aixf46GiF1Kok8jDPFsEpXgFWGjUHXNkNHNm+Y2adXAG2dbX91jkti3i0ZRsOlcmbuzAz1poObSHCmUA=="], - "rollup": ["rollup@4.62.5", "", { "dependencies": { "@types/estree": "1.0.9" }, "optionalDependencies": { "@napi-rs/lzma-linux-x64-gnu": "1.5.1", "@rollup/rollup-android-arm-eabi": "4.62.5", "@rollup/rollup-android-arm64": "4.62.5", "@rollup/rollup-darwin-arm64": "4.62.5", "@rollup/rollup-darwin-x64": "4.62.5", "@rollup/rollup-freebsd-arm64": "4.62.5", "@rollup/rollup-freebsd-x64": "4.62.5", "@rollup/rollup-linux-arm-gnueabihf": "4.62.5", "@rollup/rollup-linux-arm-musleabihf": "4.62.5", "@rollup/rollup-linux-arm64-gnu": "4.62.5", "@rollup/rollup-linux-arm64-musl": "4.62.5", "@rollup/rollup-linux-loong64-gnu": "4.62.5", "@rollup/rollup-linux-loong64-musl": "4.62.5", "@rollup/rollup-linux-ppc64-gnu": "4.62.5", "@rollup/rollup-linux-ppc64-musl": "4.62.5", "@rollup/rollup-linux-riscv64-gnu": "4.62.5", "@rollup/rollup-linux-riscv64-musl": "4.62.5", "@rollup/rollup-linux-s390x-gnu": "4.62.5", "@rollup/rollup-linux-x64-gnu": "4.62.5", "@rollup/rollup-linux-x64-musl": "4.62.5", "@rollup/rollup-openbsd-x64": "4.62.5", "@rollup/rollup-openharmony-arm64": "4.62.5", "@rollup/rollup-win32-arm64-msvc": "4.62.5", "@rollup/rollup-win32-ia32-msvc": "4.62.5", "@rollup/rollup-win32-x64-gnu": "4.62.5", "@rollup/rollup-win32-x64-msvc": "4.62.5", "fsevents": "~2.3.2" }, "bin": { "rollup": "dist/bin/rollup" } }, "sha512-/tqMfgP7GPA3PHhCmuiS4vIjrSVhHLgY++i+dhbG462euyAj7FpM4D9uq1X3BgjlqRdpcOrYhcQtfiQLNc8tqw=="], + "rollup": ["rollup@4.63.1", "", { "dependencies": { "@types/estree": "1.0.9" }, "optionalDependencies": { "@napi-rs/lzma-linux-x64-gnu": "1.5.1", "@rollup/rollup-android-arm-eabi": "4.63.1", "@rollup/rollup-android-arm64": "4.63.1", "@rollup/rollup-darwin-arm64": "4.63.1", "@rollup/rollup-darwin-x64": "4.63.1", "@rollup/rollup-freebsd-arm64": "4.63.1", "@rollup/rollup-freebsd-x64": "4.63.1", "@rollup/rollup-linux-arm-gnueabihf": "4.63.1", "@rollup/rollup-linux-arm-musleabihf": "4.63.1", "@rollup/rollup-linux-arm64-gnu": "4.63.1", "@rollup/rollup-linux-arm64-musl": "4.63.1", "@rollup/rollup-linux-loong64-gnu": "4.63.1", "@rollup/rollup-linux-loong64-musl": "4.63.1", "@rollup/rollup-linux-ppc64-gnu": "4.63.1", "@rollup/rollup-linux-ppc64-musl": "4.63.1", "@rollup/rollup-linux-riscv64-gnu": "4.63.1", "@rollup/rollup-linux-riscv64-musl": "4.63.1", "@rollup/rollup-linux-s390x-gnu": "4.63.1", "@rollup/rollup-linux-x64-gnu": "4.63.1", "@rollup/rollup-linux-x64-musl": "4.63.1", "@rollup/rollup-openbsd-x64": "4.63.1", "@rollup/rollup-openharmony-arm64": "4.63.1", "@rollup/rollup-win32-arm64-msvc": "4.63.1", "@rollup/rollup-win32-ia32-msvc": "4.63.1", "@rollup/rollup-win32-x64-gnu": "4.63.1", "@rollup/rollup-win32-x64-msvc": "4.63.1", "fsevents": "~2.3.2" }, "bin": { "rollup": "dist/bin/rollup" } }, "sha512-3Df9jsstwhccuEfmAMi9l8XUh/GOkVObmFTU7CCVBysEbcOZLl84jCtaAZMcPiMz2EGKsATzQcU+Xr3n/wU6cg=="], "rollup-plugin-preserve-directives": ["rollup-plugin-preserve-directives@0.4.0", "", { "dependencies": { "@rollup/pluginutils": "^5.1.0", "magic-string": "^0.30.5" }, "peerDependencies": { "rollup": "2.x || 3.x || 4.x" } }, "sha512-gx4nBxYm5BysmEQS+e2tAMrtFxrGvk+Pe5ppafRibQi0zlW7VYAbEGk6IKDw9sJGPdFWgVTE0o4BU4cdG0Fylg=="], @@ -2876,7 +2885,7 @@ "set-blocking": ["set-blocking@2.0.0", "", {}, "sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw=="], - "sharp": ["sharp@0.35.3", "", { "dependencies": { "@img/colour": "^1.1.0", "detect-libc": "^2.1.2", "semver": "^7.8.5" }, "optionalDependencies": { "@img/sharp-darwin-arm64": "0.35.3", "@img/sharp-darwin-x64": "0.35.3", "@img/sharp-freebsd-wasm32": "0.35.3", "@img/sharp-libvips-darwin-arm64": "1.3.2", "@img/sharp-libvips-darwin-x64": "1.3.2", "@img/sharp-libvips-linux-arm": "1.3.2", "@img/sharp-libvips-linux-arm64": "1.3.2", "@img/sharp-libvips-linux-ppc64": "1.3.2", "@img/sharp-libvips-linux-riscv64": "1.3.2", "@img/sharp-libvips-linux-s390x": "1.3.2", "@img/sharp-libvips-linux-x64": "1.3.2", "@img/sharp-libvips-linuxmusl-arm64": "1.3.2", "@img/sharp-libvips-linuxmusl-x64": "1.3.2", "@img/sharp-linux-arm": "0.35.3", "@img/sharp-linux-arm64": "0.35.3", "@img/sharp-linux-ppc64": "0.35.3", "@img/sharp-linux-riscv64": "0.35.3", "@img/sharp-linux-s390x": "0.35.3", "@img/sharp-linux-x64": "0.35.3", "@img/sharp-linuxmusl-arm64": "0.35.3", "@img/sharp-linuxmusl-x64": "0.35.3", "@img/sharp-webcontainers-wasm32": "0.35.3", "@img/sharp-win32-arm64": "0.35.3", "@img/sharp-win32-ia32": "0.35.3", "@img/sharp-win32-x64": "0.35.3" } }, "sha512-ej0zVHuZGHCiABXcNxeYhpRnPNPAcvbG8RMdBAhDAxLKkCRVSpK3Iyu7qbqw3JMzoj0REeM6f3tJLtVwl0023Q=="], + "sharp": ["sharp@0.35.4", "", { "dependencies": { "@img/colour": "^1.1.0", "detect-libc": "^2.1.2", "semver": "^7.8.5" }, "optionalDependencies": { "@img/sharp-darwin-arm64": "0.35.4", "@img/sharp-darwin-x64": "0.35.4", "@img/sharp-freebsd-wasm32": "0.35.4", "@img/sharp-libvips-darwin-arm64": "1.3.3", "@img/sharp-libvips-darwin-x64": "1.3.3", "@img/sharp-libvips-linux-arm": "1.3.3", "@img/sharp-libvips-linux-arm64": "1.3.3", "@img/sharp-libvips-linux-ppc64": "1.3.3", "@img/sharp-libvips-linux-riscv64": "1.3.3", "@img/sharp-libvips-linux-s390x": "1.3.3", "@img/sharp-libvips-linux-x64": "1.3.3", "@img/sharp-libvips-linuxmusl-arm64": "1.3.3", "@img/sharp-libvips-linuxmusl-x64": "1.3.3", "@img/sharp-linux-arm": "0.35.4", "@img/sharp-linux-arm64": "0.35.4", "@img/sharp-linux-ppc64": "0.35.4", "@img/sharp-linux-riscv64": "0.35.4", "@img/sharp-linux-s390x": "0.35.4", "@img/sharp-linux-x64": "0.35.4", "@img/sharp-linuxmusl-arm64": "0.35.4", "@img/sharp-linuxmusl-x64": "0.35.4", "@img/sharp-webcontainers-wasm32": "0.35.4", "@img/sharp-win32-arm64": "0.35.4", "@img/sharp-win32-ia32": "0.35.4", "@img/sharp-win32-x64": "0.35.4" }, "peerDependencies": { "@types/node": "*" }, "optionalPeers": ["@types/node"] }, "sha512-n++8XWcj+jCOr2IOl7h8LbKnGBDY4aPbmprMONBNFdn0ImXqpGVv5zliDs0V9HbmbCQLpbuo2ej9rAoOQTvMDA=="], "shebang-command": ["shebang-command@2.0.0", "", { "dependencies": { "shebang-regex": "^3.0.0" } }, "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA=="], @@ -2934,7 +2943,7 @@ "style-to-object": ["style-to-object@1.0.14", "", { "dependencies": { "inline-style-parser": "0.2.7" } }, "sha512-LIN7rULI0jBscWQYaSswptyderlarFkjQ+t79nzty8tcIAceVomEVlLzH5VP4Cmsv6MtKhs7qaAiwlcp+Mgaxw=="], - "styled-jsx": ["styled-jsx@5.1.6", "", { "dependencies": { "client-only": "0.0.1" }, "peerDependencies": { "react": ">= 16.8.0 || 17.x.x || ^18.0.0-0 || ^19.0.0-0" } }, "sha512-qSVyDTeMotdvQYoHWLNGwRFJHC+i+ZvdBRYosOFgC+Wg1vx4frN2/RG/NA7SYqqvKNLf39P2LSRA2pu6n0XYZA=="], + "styled-jsx": ["styled-jsx@5.1.6", "", { "dependencies": { "client-only": "0.0.1" }, "peerDependencies": { "@babel/core": "*", "babel-plugin-macros": "*", "react": ">= 16.8.0 || 17.x.x || ^18.0.0-0 || ^19.0.0-0" }, "optionalPeers": ["@babel/core", "babel-plugin-macros"] }, "sha512-qSVyDTeMotdvQYoHWLNGwRFJHC+i+ZvdBRYosOFgC+Wg1vx4frN2/RG/NA7SYqqvKNLf39P2LSRA2pu6n0XYZA=="], "styleq": ["styleq@0.2.1", "", {}, "sha512-L0TR0NQb+X4/ktDEKmjWyp27gla+LUYi/by5k5SjKXf6/pvZP7wbwEB5J+tqxdFVPgzbsuz+d4RTScO/QZquBw=="], @@ -2952,7 +2961,7 @@ "tapable": ["tapable@2.3.3", "", {}, "sha512-uxc/zpqFg6x7C8vOE7lh6Lbda8eEL9zmVm/PLeTPBRhh1xCgdWaQ+J1CUieGpIfm2HdtsUpRv+HshiasBMcc6A=="], - "terser": ["terser@5.50.0", "", { "dependencies": { "@jridgewell/source-map": "^0.3.3", "acorn": "^8.15.0", "commander": "^2.20.0", "source-map-support": "~0.5.20" }, "bin": { "terser": "bin/terser" } }, "sha512-CN9BVxWhgS/hRxtUMjtC2uRWSTcSfQFHMDWma6sKKfIivCD91sM+FOPfvwoaRMqCSrUpe1nv3jDamd9eEQ4y+w=="], + "terser": ["terser@5.51.2", "", { "dependencies": { "@jridgewell/source-map": "^0.3.3", "acorn": "^8.15.0", "commander": "^2.20.0", "source-map-support": "~0.5.20" }, "bin": { "terser": "bin/terser" } }, "sha512-bWnjSNscmuI+GJze6ZupnHP8G/cTcsJF+bXCeQknk2SHQsgbNJnLrqiH9jZ2W4STPVXH2mDKKRX3iwPhc9Cn/Q=="], "tiny-inflate": ["tiny-inflate@1.0.3", "", {}, "sha512-pkY1fj1cKHb2seWDy0B16HeWyczlJA9/WW3u3c4z/NiWDsO3DOU5D7nhTLE9CF0yXv/QZFY7sEJmj24dK+Rrqw=="], @@ -2964,7 +2973,7 @@ "tinyspy": ["tinyspy@4.0.4", "", {}, "sha512-azl+t0z7pw/z958Gy9svOTuzqIk6xq+NSheJzn5MMWtWTFywIacg2wUlzKFGtt3cthx0r2SxMK0yzJOR0IES7Q=="], - "tm-grammars": ["tm-grammars@1.32.5", "", {}, "sha512-dKlap/eITuqoSpgqT8Bnrjz8ANhF3mFWvBX7cl64NFjOce011eM9UiJqAzVyR0Ami+fYzLIH5ywldBig+OYZuA=="], + "tm-grammars": ["tm-grammars@1.32.9", "", {}, "sha512-uYV9hCh9gvdjrps7GoQcloxPMwPiU6NCy4FCBCmBlo7Q5S7G/fgldenteNYHjk7DMZ0SetqqyvOeQEfweP1BDw=="], "to-regex-range": ["to-regex-range@5.0.1", "", { "dependencies": { "is-number": "^7.0.0" } }, "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ=="], @@ -2996,9 +3005,9 @@ "typedarray": ["typedarray@0.0.6", "", {}, "sha512-/aCDEGatGvZ2BIk+HmLf4ifCJFwvKFNb9/JeZPMulfgFracn9QFcAf5GO8B/mweUjSoblS5In0cWhqpfs/5PQA=="], - "typescript": ["typescript@6.0.3", "", { "bin": { "tsc": "bin/tsc", "tsserver": "bin/tsserver" } }, "sha512-y2TvuxSZPDyQakkFRPZHKFm+KKVqIisdg9/CZwm9ftvKXLP8NRWj38/ODjNbr43SsoXqNuAisEf1GdCxqWcdBw=="], + "typescript": ["typescript@7.0.2", "", { "optionalDependencies": { "@typescript/typescript-aix-ppc64": "7.0.2", "@typescript/typescript-darwin-arm64": "7.0.2", "@typescript/typescript-darwin-x64": "7.0.2", "@typescript/typescript-freebsd-arm64": "7.0.2", "@typescript/typescript-freebsd-x64": "7.0.2", "@typescript/typescript-linux-arm": "7.0.2", "@typescript/typescript-linux-arm64": "7.0.2", "@typescript/typescript-linux-loong64": "7.0.2", "@typescript/typescript-linux-mips64el": "7.0.2", "@typescript/typescript-linux-ppc64": "7.0.2", "@typescript/typescript-linux-riscv64": "7.0.2", "@typescript/typescript-linux-s390x": "7.0.2", "@typescript/typescript-linux-x64": "7.0.2", "@typescript/typescript-netbsd-arm64": "7.0.2", "@typescript/typescript-netbsd-x64": "7.0.2", "@typescript/typescript-openbsd-arm64": "7.0.2", "@typescript/typescript-openbsd-x64": "7.0.2", "@typescript/typescript-sunos-x64": "7.0.2", "@typescript/typescript-win32-arm64": "7.0.2", "@typescript/typescript-win32-x64": "7.0.2" }, "bin": { "tsc": "bin/tsc" } }, "sha512-8FYau96o3NKOhbjKi/qNvG/W5jhzxkbdm5sj9AbZ/5T5sWqn3hJgLfGx27sRKZWTvyzCP8dLRBTf5tBTSRVUNA=="], - "typescript-eslint": ["typescript-eslint@8.67.0", "", { "dependencies": { "@typescript-eslint/eslint-plugin": "8.67.0", "@typescript-eslint/parser": "8.67.0", "@typescript-eslint/typescript-estree": "8.67.0", "@typescript-eslint/utils": "8.67.0" }, "peerDependencies": { "eslint": "^8.57.0 || ^9.0.0 || ^10.0.0", "typescript": ">=4.8.4 <6.1.0" } }, "sha512-S2udFs8tCKEKffuJ4TB1idGUZiXdCPGi3IPBGWXarbLQ5UPXORV8QEVzJ4gCRduURMb5EkpNCdjbk0eDIuI8Yg=="], + "typescript-eslint": ["typescript-eslint@8.68.0", "", { "dependencies": { "@typescript-eslint/eslint-plugin": "8.68.0", "@typescript-eslint/parser": "8.68.0", "@typescript-eslint/typescript-estree": "8.68.0", "@typescript-eslint/utils": "8.68.0" }, "peerDependencies": { "eslint": "^8.57.0 || ^9.0.0 || ^10.0.0", "typescript": ">=4.8.4 <6.1.0" } }, "sha512-MHy0Y0ynqeEbx/S45+i/bBssdy3X6KNBfmJAP35GrgtNxu2TQ5K5xsFDhAnmsq1jvpdoZOPG1LGtJo0HWqYCrQ=="], "ufo": ["ufo@1.6.4", "", {}, "sha512-JFNbkD1Svwe0KvGi8GOeLcP4kAWQ609twvCdcHxq1oSL8svv39ZuSvajcD8B+5D0eL4+s1Is2D/O6KN3qcTeRA=="], @@ -3040,7 +3049,7 @@ "unplugin-dts": ["unplugin-dts@1.0.3", "", { "dependencies": { "@rollup/pluginutils": "^5.1.4", "@volar/typescript": "^2.4.26", "compare-versions": "^6.1.1", "debug": "^4.4.0", "kolorist": "^1.8.0", "local-pkg": "^1.1.1", "magic-string": "^0.30.17", "unplugin": "^2.3.2" }, "peerDependencies": { "@microsoft/api-extractor": ">=7", "@rspack/core": "^1", "@vue/language-core": "^3.1.5", "esbuild": "*", "rolldown": "*", "rollup": ">=3", "typescript": ">=4", "vite": ">=3", "webpack": "^4 || ^5" }, "optionalPeers": ["@microsoft/api-extractor", "@rspack/core", "@vue/language-core", "esbuild", "rolldown", "rollup", "vite", "webpack"] }, "sha512-/GR887wfG4r1cWyt1UZsLRuMIjsmEbGkS9yJrz+0dsToHAYUD5CTyP3JMGVLv25j9K0mJcwAVvZno/aTuSUvNg=="], - "update-browserslist-db": ["update-browserslist-db@1.3.1", "", { "dependencies": { "escalade": "^3.2.0", "picocolors": "^1.1.1" }, "peerDependencies": { "browserslist": ">= 4.21.0" }, "bin": { "update-browserslist-db": "cli.js" } }, "sha512-ZZ61DsRsOnakl74HAmp3oSN4aXUmEWXf+i/yv0h7tIBfICc3VdrFErQKUUKPgu3AMsTUMbcongALEN4l6GSUrQ=="], + "update-browserslist-db": ["update-browserslist-db@1.3.2", "", { "dependencies": { "escalade": "^3.2.0", "picocolors": "^1.1.1" }, "peerDependencies": { "browserslist": ">= 4.21.0" }, "bin": { "update-browserslist-db": "cli.js" } }, "sha512-UQ+MSxlhRm1bzjhU+DcuXfjFO1FzNtqhK5+9Yvlp90ItDLk5vT932A0rFu619nf7RVS+Y/VeaUW1jaRDqZ8VJw=="], "uqr": ["uqr@0.1.3", "", {}, "sha512-0rjE8iEJe4YmT9TOhwsZtqCMRLc5DXZUI2UEYUUg63ikBkqqE5EYWaI0etFe/5KUcmcYwLih2RND1kq+hrUJXA=="], @@ -3086,7 +3095,7 @@ "vitefu": ["vitefu@1.1.3", "", { "peerDependencies": { "vite": "^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0" }, "optionalPeers": ["vite"] }, "sha512-ub4okH7Z5KLjb6hDyjqrGXqWtWvoYdU3IGm/NorpgHncKoLTCfRIbvlhBm7r0YstIaQRYlp4yEbFqDcKSzXSSg=="], - "vscode-uri": ["vscode-uri@3.1.0", "", {}, "sha512-/BpdSx+yCQGnCvecbyXdxHDkuk55/G3xwnC0GqY4gmQ3j+A+g8kzzgB4Nk/SINjqn6+waqw3EgbVF2QKExkRxQ=="], + "vscode-uri": ["vscode-uri@3.2.0", "", {}, "sha512-m2gXo3bn0G1kT9InzMf07fTbqMbGtyckj3bH5ktLO+1Ssv+yiATZ4dhwaQv9UZWxJh6E9IFGnQyjgWVDWVBDrg=="], "walk-up-path": ["walk-up-path@3.0.1", "", {}, "sha512-9YlCL/ynK3CTlrSRrDxZvUauLzAswPCrsaCgilqFevUYpeEW0/3ScEjaa3kbW/T0ghhkEr7mv+fpjqn1Y1YuTA=="], @@ -3094,7 +3103,7 @@ "web-vitals": ["web-vitals@4.2.4", "", {}, "sha512-r4DIlprAGwJ7YM11VZp4R884m0Vmgr6EAKe3P+kO0PPj3Unqyvv59rczf6UiGcb9Z8QxZVcqKNwv/g0WNdWwsw=="], - "webpack": ["webpack@5.109.2", "", { "dependencies": { "@types/estree": "^1.0.8", "@types/json-schema": "^7.0.15", "@webassemblyjs/ast": "^1.14.1", "@webassemblyjs/wasm-edit": "^1.14.1", "@webassemblyjs/wasm-parser": "^1.14.1", "acorn": "^8.16.0", "browserslist": "^4.28.1", "chrome-trace-event": "^1.0.2", "enhanced-resolve": "^5.24.4", "es-module-lexer": "^2.1.0", "eslint-scope": "5.1.1", "events": "^3.2.0", "graceful-fs": "^4.2.11", "mime-db": "^1.54.0", "minimizer-webpack-plugin": "^5.6.1", "neo-async": "^2.6.2", "schema-utils": "^4.3.3", "tapable": "^2.3.0", "watchpack": "^2.5.2", "webpack-sources": "^3.5.1" }, "bin": { "webpack": "bin/webpack.js" } }, "sha512-U9/cvLzxObKNEZ9+TtdqrHM5/9z3lgl2c+c4BzbqGxFQvQvBAq87yql5A8pQ+rrMbS496MZJeF5enVBndIy2hw=="], + "webpack": ["webpack@5.110.1", "", { "dependencies": { "@types/estree": "^1.0.8", "@types/json-schema": "^7.0.15", "@webassemblyjs/ast": "^1.14.1", "@webassemblyjs/wasm-edit": "^1.14.1", "@webassemblyjs/wasm-parser": "^1.14.1", "acorn": "^8.16.0", "browserslist": "^4.28.1", "chrome-trace-event": "^1.0.2", "enhanced-resolve": "^5.24.4", "es-module-lexer": "^2.1.0", "events": "^3.2.0", "graceful-fs": "^4.2.11", "mime-db": "^1.54.0", "minimizer-webpack-plugin": "^5.7.0", "neo-async": "^2.6.2", "schema-utils": "^4.3.3", "tapable": "^2.3.0", "watchpack": "^2.5.2", "webpack-sources": "^3.5.1" }, "peerDependencies": { "webpack-cli": "*" }, "optionalPeers": ["webpack-cli"], "bin": { "webpack": "bin/webpack.js" } }, "sha512-gInQB+jxXxgnZyvPwuzT5NGQmECDqeu85oxcrjinrYHqPoBex0hCAN2SFTJVyPVrK0Pq9E44VFP+e89fAc10/w=="], "webpack-sources": ["webpack-sources@3.5.1", "", {}, "sha512-jyuiGJdtvY434z5bUZrjz67v76/ePNvFZTp9Mdz29IlH4+GPsgyGjiv0fKI+M7BdkU6ADjulUcKAd3tUK3WlEw=="], @@ -3134,7 +3143,7 @@ "yoga-layout": ["yoga-layout@3.2.1", "", {}, "sha512-0LPOt3AxKqMdFBZA3HBAt/t/8vIKq7VaQYbuA8WxCgung+p9TVyKRYdpvCb80HcdTN2NkbIKbhNwKUfm3tQywQ=="], - "zod": ["zod@4.4.3", "", {}, "sha512-ytENFjIJFl2UwYglde2jchW2Hwm4GJFLDiSXWdTrJQBIN9Fcyp7n4DhxJEiWNAJMV1/BqWfW/kkg71UDcHJyTQ=="], + "zod": ["zod@4.5.2", "", {}, "sha512-XkYXCol10+ba/6F/cueWV+TezUeOqXW0hdeJt5CdXjTYeAgAQg5N03RQdJ80mhfFE72+pblvYMW4wy2Qp4Qbrg=="], "zod-validation-error": ["zod-validation-error@4.0.2", "", { "peerDependencies": { "zod": "^3.25.0 || ^4.0.0" } }, "sha512-Q6/nZLe6jxuU80qb/4uJ4t5v2VEZ44lzQjPDhYJNztRQ4wyWc6VF3D3Kb/fAuPetZQnhS3hnajCf9CsWesghLQ=="], @@ -3152,7 +3161,7 @@ "@babel/helper-compilation-targets/@babel/helper-validator-option": ["@babel/helper-validator-option@8.0.0", "", {}, "sha512-U4Dybxh4WESWHt5XhBeExi4DrY0/DNK1aHpQbsrQXCUbFHuMweT0TpLEWKvaraV2Y6fS+ZXunsZ8zIuZIgvF2Q=="], - "@babel/helper-compilation-targets/browserslist": ["browserslist@4.28.8", "", { "dependencies": { "baseline-browser-mapping": "^2.11.12", "caniuse-lite": "^1.0.30001809", "electron-to-chromium": "^1.5.402", "node-releases": "^2.0.53", "update-browserslist-db": "^1.3.0" }, "bin": { "browserslist": "cli.js" } }, "sha512-V2NpofLblG64mfOtSgDhOJESZEGogzDMBv/q+W6oc4LXWP/q75eOXoOaaOu1EOadB9U4Bwx/e0yzbvwKH8zalA=="], + "@babel/helper-compilation-targets/browserslist": ["browserslist@4.28.1", "", { "dependencies": { "baseline-browser-mapping": "^2.9.0", "caniuse-lite": "^1.0.30001759", "electron-to-chromium": "^1.5.263", "node-releases": "^2.0.27", "update-browserslist-db": "^1.2.0" }, "bin": { "browserslist": "cli.js" } }, "sha512-ZC5Bd0LgJXgwGqUknZY/vkUQ04r8NXnJZ3yYi4vDmSiZmC/pdSN0NbNRPxZpbtO4uAfDUAFffO8IZoM3Gj8IkA=="], "@babel/helper-compilation-targets/lru-cache": ["lru-cache@11.5.2", "", {}, "sha512-4pfM1Ff0x50o0tQwb5ucw/RzNyD0/YJME6IVcStalZuMWxdt3sR3huStTtxz4PUmvZfRguvDejasvQ2kifR11g=="], @@ -3514,23 +3523,7 @@ "@babel/traverse/@babel/types": ["@babel/types@8.0.4", "", { "dependencies": { "@babel/helper-string-parser": "^8.0.0", "@babel/helper-validator-identifier": "^8.0.4" } }, "sha512-eY+Yn3dCqTGmyiq2QRU66lA5FL8lqqqvecHt0fF3uHONIa7ToYsaCiWV8lOKqAs0Rb2SjixiKFROngnulPtt2g=="], - "@devup-ui/bun-plugin/typescript": ["typescript@7.0.2", "", { "optionalDependencies": { "@typescript/typescript-aix-ppc64": "7.0.2", "@typescript/typescript-darwin-arm64": "7.0.2", "@typescript/typescript-darwin-x64": "7.0.2", "@typescript/typescript-freebsd-arm64": "7.0.2", "@typescript/typescript-freebsd-x64": "7.0.2", "@typescript/typescript-linux-arm": "7.0.2", "@typescript/typescript-linux-arm64": "7.0.2", "@typescript/typescript-linux-loong64": "7.0.2", "@typescript/typescript-linux-mips64el": "7.0.2", "@typescript/typescript-linux-ppc64": "7.0.2", "@typescript/typescript-linux-riscv64": "7.0.2", "@typescript/typescript-linux-s390x": "7.0.2", "@typescript/typescript-linux-x64": "7.0.2", "@typescript/typescript-netbsd-arm64": "7.0.2", "@typescript/typescript-netbsd-x64": "7.0.2", "@typescript/typescript-openbsd-arm64": "7.0.2", "@typescript/typescript-openbsd-x64": "7.0.2", "@typescript/typescript-sunos-x64": "7.0.2", "@typescript/typescript-win32-arm64": "7.0.2", "@typescript/typescript-win32-x64": "7.0.2" }, "bin": { "tsc": "bin/tsc" } }, "sha512-8FYau96o3NKOhbjKi/qNvG/W5jhzxkbdm5sj9AbZ/5T5sWqn3hJgLfGx27sRKZWTvyzCP8dLRBTf5tBTSRVUNA=="], - - "@devup-ui/components/typescript": ["typescript@7.0.2", "", { "optionalDependencies": { "@typescript/typescript-aix-ppc64": "7.0.2", "@typescript/typescript-darwin-arm64": "7.0.2", "@typescript/typescript-darwin-x64": "7.0.2", "@typescript/typescript-freebsd-arm64": "7.0.2", "@typescript/typescript-freebsd-x64": "7.0.2", "@typescript/typescript-linux-arm": "7.0.2", "@typescript/typescript-linux-arm64": "7.0.2", "@typescript/typescript-linux-loong64": "7.0.2", "@typescript/typescript-linux-mips64el": "7.0.2", "@typescript/typescript-linux-ppc64": "7.0.2", "@typescript/typescript-linux-riscv64": "7.0.2", "@typescript/typescript-linux-s390x": "7.0.2", "@typescript/typescript-linux-x64": "7.0.2", "@typescript/typescript-netbsd-arm64": "7.0.2", "@typescript/typescript-netbsd-x64": "7.0.2", "@typescript/typescript-openbsd-arm64": "7.0.2", "@typescript/typescript-openbsd-x64": "7.0.2", "@typescript/typescript-sunos-x64": "7.0.2", "@typescript/typescript-win32-arm64": "7.0.2", "@typescript/typescript-win32-x64": "7.0.2" }, "bin": { "tsc": "bin/tsc" } }, "sha512-8FYau96o3NKOhbjKi/qNvG/W5jhzxkbdm5sj9AbZ/5T5sWqn3hJgLfGx27sRKZWTvyzCP8dLRBTf5tBTSRVUNA=="], - - "@devup-ui/next-plugin/typescript": ["typescript@7.0.2", "", { "optionalDependencies": { "@typescript/typescript-aix-ppc64": "7.0.2", "@typescript/typescript-darwin-arm64": "7.0.2", "@typescript/typescript-darwin-x64": "7.0.2", "@typescript/typescript-freebsd-arm64": "7.0.2", "@typescript/typescript-freebsd-x64": "7.0.2", "@typescript/typescript-linux-arm": "7.0.2", "@typescript/typescript-linux-arm64": "7.0.2", "@typescript/typescript-linux-loong64": "7.0.2", "@typescript/typescript-linux-mips64el": "7.0.2", "@typescript/typescript-linux-ppc64": "7.0.2", "@typescript/typescript-linux-riscv64": "7.0.2", "@typescript/typescript-linux-s390x": "7.0.2", "@typescript/typescript-linux-x64": "7.0.2", "@typescript/typescript-netbsd-arm64": "7.0.2", "@typescript/typescript-netbsd-x64": "7.0.2", "@typescript/typescript-openbsd-arm64": "7.0.2", "@typescript/typescript-openbsd-x64": "7.0.2", "@typescript/typescript-sunos-x64": "7.0.2", "@typescript/typescript-win32-arm64": "7.0.2", "@typescript/typescript-win32-x64": "7.0.2" }, "bin": { "tsc": "bin/tsc" } }, "sha512-8FYau96o3NKOhbjKi/qNvG/W5jhzxkbdm5sj9AbZ/5T5sWqn3hJgLfGx27sRKZWTvyzCP8dLRBTf5tBTSRVUNA=="], - - "@devup-ui/plugin-utils/typescript": ["typescript@7.0.2", "", { "optionalDependencies": { "@typescript/typescript-aix-ppc64": "7.0.2", "@typescript/typescript-darwin-arm64": "7.0.2", "@typescript/typescript-darwin-x64": "7.0.2", "@typescript/typescript-freebsd-arm64": "7.0.2", "@typescript/typescript-freebsd-x64": "7.0.2", "@typescript/typescript-linux-arm": "7.0.2", "@typescript/typescript-linux-arm64": "7.0.2", "@typescript/typescript-linux-loong64": "7.0.2", "@typescript/typescript-linux-mips64el": "7.0.2", "@typescript/typescript-linux-ppc64": "7.0.2", "@typescript/typescript-linux-riscv64": "7.0.2", "@typescript/typescript-linux-s390x": "7.0.2", "@typescript/typescript-linux-x64": "7.0.2", "@typescript/typescript-netbsd-arm64": "7.0.2", "@typescript/typescript-netbsd-x64": "7.0.2", "@typescript/typescript-openbsd-arm64": "7.0.2", "@typescript/typescript-openbsd-x64": "7.0.2", "@typescript/typescript-sunos-x64": "7.0.2", "@typescript/typescript-win32-arm64": "7.0.2", "@typescript/typescript-win32-x64": "7.0.2" }, "bin": { "tsc": "bin/tsc" } }, "sha512-8FYau96o3NKOhbjKi/qNvG/W5jhzxkbdm5sj9AbZ/5T5sWqn3hJgLfGx27sRKZWTvyzCP8dLRBTf5tBTSRVUNA=="], - - "@devup-ui/react/typescript": ["typescript@7.0.2", "", { "optionalDependencies": { "@typescript/typescript-aix-ppc64": "7.0.2", "@typescript/typescript-darwin-arm64": "7.0.2", "@typescript/typescript-darwin-x64": "7.0.2", "@typescript/typescript-freebsd-arm64": "7.0.2", "@typescript/typescript-freebsd-x64": "7.0.2", "@typescript/typescript-linux-arm": "7.0.2", "@typescript/typescript-linux-arm64": "7.0.2", "@typescript/typescript-linux-loong64": "7.0.2", "@typescript/typescript-linux-mips64el": "7.0.2", "@typescript/typescript-linux-ppc64": "7.0.2", "@typescript/typescript-linux-riscv64": "7.0.2", "@typescript/typescript-linux-s390x": "7.0.2", "@typescript/typescript-linux-x64": "7.0.2", "@typescript/typescript-netbsd-arm64": "7.0.2", "@typescript/typescript-netbsd-x64": "7.0.2", "@typescript/typescript-openbsd-arm64": "7.0.2", "@typescript/typescript-openbsd-x64": "7.0.2", "@typescript/typescript-sunos-x64": "7.0.2", "@typescript/typescript-win32-arm64": "7.0.2", "@typescript/typescript-win32-x64": "7.0.2" }, "bin": { "tsc": "bin/tsc" } }, "sha512-8FYau96o3NKOhbjKi/qNvG/W5jhzxkbdm5sj9AbZ/5T5sWqn3hJgLfGx27sRKZWTvyzCP8dLRBTf5tBTSRVUNA=="], - - "@devup-ui/reset-css/typescript": ["typescript@7.0.2", "", { "optionalDependencies": { "@typescript/typescript-aix-ppc64": "7.0.2", "@typescript/typescript-darwin-arm64": "7.0.2", "@typescript/typescript-darwin-x64": "7.0.2", "@typescript/typescript-freebsd-arm64": "7.0.2", "@typescript/typescript-freebsd-x64": "7.0.2", "@typescript/typescript-linux-arm": "7.0.2", "@typescript/typescript-linux-arm64": "7.0.2", "@typescript/typescript-linux-loong64": "7.0.2", "@typescript/typescript-linux-mips64el": "7.0.2", "@typescript/typescript-linux-ppc64": "7.0.2", "@typescript/typescript-linux-riscv64": "7.0.2", "@typescript/typescript-linux-s390x": "7.0.2", "@typescript/typescript-linux-x64": "7.0.2", "@typescript/typescript-netbsd-arm64": "7.0.2", "@typescript/typescript-netbsd-x64": "7.0.2", "@typescript/typescript-openbsd-arm64": "7.0.2", "@typescript/typescript-openbsd-x64": "7.0.2", "@typescript/typescript-sunos-x64": "7.0.2", "@typescript/typescript-win32-arm64": "7.0.2", "@typescript/typescript-win32-x64": "7.0.2" }, "bin": { "tsc": "bin/tsc" } }, "sha512-8FYau96o3NKOhbjKi/qNvG/W5jhzxkbdm5sj9AbZ/5T5sWqn3hJgLfGx27sRKZWTvyzCP8dLRBTf5tBTSRVUNA=="], - - "@devup-ui/rsbuild-plugin/typescript": ["typescript@7.0.2", "", { "optionalDependencies": { "@typescript/typescript-aix-ppc64": "7.0.2", "@typescript/typescript-darwin-arm64": "7.0.2", "@typescript/typescript-darwin-x64": "7.0.2", "@typescript/typescript-freebsd-arm64": "7.0.2", "@typescript/typescript-freebsd-x64": "7.0.2", "@typescript/typescript-linux-arm": "7.0.2", "@typescript/typescript-linux-arm64": "7.0.2", "@typescript/typescript-linux-loong64": "7.0.2", "@typescript/typescript-linux-mips64el": "7.0.2", "@typescript/typescript-linux-ppc64": "7.0.2", "@typescript/typescript-linux-riscv64": "7.0.2", "@typescript/typescript-linux-s390x": "7.0.2", "@typescript/typescript-linux-x64": "7.0.2", "@typescript/typescript-netbsd-arm64": "7.0.2", "@typescript/typescript-netbsd-x64": "7.0.2", "@typescript/typescript-openbsd-arm64": "7.0.2", "@typescript/typescript-openbsd-x64": "7.0.2", "@typescript/typescript-sunos-x64": "7.0.2", "@typescript/typescript-win32-arm64": "7.0.2", "@typescript/typescript-win32-x64": "7.0.2" }, "bin": { "tsc": "bin/tsc" } }, "sha512-8FYau96o3NKOhbjKi/qNvG/W5jhzxkbdm5sj9AbZ/5T5sWqn3hJgLfGx27sRKZWTvyzCP8dLRBTf5tBTSRVUNA=="], - - "@devup-ui/vite-plugin/typescript": ["typescript@7.0.2", "", { "optionalDependencies": { "@typescript/typescript-aix-ppc64": "7.0.2", "@typescript/typescript-darwin-arm64": "7.0.2", "@typescript/typescript-darwin-x64": "7.0.2", "@typescript/typescript-freebsd-arm64": "7.0.2", "@typescript/typescript-freebsd-x64": "7.0.2", "@typescript/typescript-linux-arm": "7.0.2", "@typescript/typescript-linux-arm64": "7.0.2", "@typescript/typescript-linux-loong64": "7.0.2", "@typescript/typescript-linux-mips64el": "7.0.2", "@typescript/typescript-linux-ppc64": "7.0.2", "@typescript/typescript-linux-riscv64": "7.0.2", "@typescript/typescript-linux-s390x": "7.0.2", "@typescript/typescript-linux-x64": "7.0.2", "@typescript/typescript-netbsd-arm64": "7.0.2", "@typescript/typescript-netbsd-x64": "7.0.2", "@typescript/typescript-openbsd-arm64": "7.0.2", "@typescript/typescript-openbsd-x64": "7.0.2", "@typescript/typescript-sunos-x64": "7.0.2", "@typescript/typescript-win32-arm64": "7.0.2", "@typescript/typescript-win32-x64": "7.0.2" }, "bin": { "tsc": "bin/tsc" } }, "sha512-8FYau96o3NKOhbjKi/qNvG/W5jhzxkbdm5sj9AbZ/5T5sWqn3hJgLfGx27sRKZWTvyzCP8dLRBTf5tBTSRVUNA=="], - - "@devup-ui/webpack-plugin/typescript": ["typescript@7.0.2", "", { "optionalDependencies": { "@typescript/typescript-aix-ppc64": "7.0.2", "@typescript/typescript-darwin-arm64": "7.0.2", "@typescript/typescript-darwin-x64": "7.0.2", "@typescript/typescript-freebsd-arm64": "7.0.2", "@typescript/typescript-freebsd-x64": "7.0.2", "@typescript/typescript-linux-arm": "7.0.2", "@typescript/typescript-linux-arm64": "7.0.2", "@typescript/typescript-linux-loong64": "7.0.2", "@typescript/typescript-linux-mips64el": "7.0.2", "@typescript/typescript-linux-ppc64": "7.0.2", "@typescript/typescript-linux-riscv64": "7.0.2", "@typescript/typescript-linux-s390x": "7.0.2", "@typescript/typescript-linux-x64": "7.0.2", "@typescript/typescript-netbsd-arm64": "7.0.2", "@typescript/typescript-netbsd-x64": "7.0.2", "@typescript/typescript-openbsd-arm64": "7.0.2", "@typescript/typescript-openbsd-x64": "7.0.2", "@typescript/typescript-sunos-x64": "7.0.2", "@typescript/typescript-win32-arm64": "7.0.2", "@typescript/typescript-win32-x64": "7.0.2" }, "bin": { "tsc": "bin/tsc" } }, "sha512-8FYau96o3NKOhbjKi/qNvG/W5jhzxkbdm5sj9AbZ/5T5sWqn3hJgLfGx27sRKZWTvyzCP8dLRBTf5tBTSRVUNA=="], + "@devup-ui/eslint-plugin/typescript": ["@typescript/typescript6@6.0.2", "", { "dependencies": { "@typescript/old": "npm:typescript@^6" }, "bin": { "tsc6": "bin/tsc6" } }, "sha512-mbCddXd+jm7hfx7w2YU64/Av4/NqqeG3GoRZgxPcgoTxYjhrcfJRw9ULch71SS4G+Q3bOXFhRvPqjguN0Hyp5w=="], "@emotion/babel-plugin/convert-source-map": ["convert-source-map@1.9.0", "", {}, "sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A=="], @@ -3574,7 +3567,7 @@ "@pandacss/config/esbuild": ["esbuild@0.25.12", "", { "optionalDependencies": { "@esbuild/aix-ppc64": "0.25.12", "@esbuild/android-arm": "0.25.12", "@esbuild/android-arm64": "0.25.12", "@esbuild/android-x64": "0.25.12", "@esbuild/darwin-arm64": "0.25.12", "@esbuild/darwin-x64": "0.25.12", "@esbuild/freebsd-arm64": "0.25.12", "@esbuild/freebsd-x64": "0.25.12", "@esbuild/linux-arm": "0.25.12", "@esbuild/linux-arm64": "0.25.12", "@esbuild/linux-ia32": "0.25.12", "@esbuild/linux-loong64": "0.25.12", "@esbuild/linux-mips64el": "0.25.12", "@esbuild/linux-ppc64": "0.25.12", "@esbuild/linux-riscv64": "0.25.12", "@esbuild/linux-s390x": "0.25.12", "@esbuild/linux-x64": "0.25.12", "@esbuild/netbsd-arm64": "0.25.12", "@esbuild/netbsd-x64": "0.25.12", "@esbuild/openbsd-arm64": "0.25.12", "@esbuild/openbsd-x64": "0.25.12", "@esbuild/openharmony-arm64": "0.25.12", "@esbuild/sunos-x64": "0.25.12", "@esbuild/win32-arm64": "0.25.12", "@esbuild/win32-ia32": "0.25.12", "@esbuild/win32-x64": "0.25.12" }, "bin": { "esbuild": "bin/esbuild" } }, "sha512-bbPBYYrtZbkt6Os6FiTLCTFxvq4tt3JKall1vRwshA3fdVztsLAatFaZobhkBC8/BrPetoa0oksYoKXoG4ryJg=="], - "@pandacss/config/typescript": ["typescript@6.0.2", "", { "bin": { "tsc": "bin/tsc", "tsserver": "bin/tsserver" } }, "sha512-bGdAIrZ0wiGDo5l8c++HWtbaNCWTS4UTv7RaTH/ThVIgjkveJt83m74bBHMJkuCbslY8ixgLBVZJIOiQlQTjfQ=="], + "@pandacss/config/typescript": ["@typescript/typescript6@6.0.2", "", { "dependencies": { "@typescript/old": "npm:typescript@^6" }, "bin": { "tsc6": "bin/tsc6" } }, "sha512-mbCddXd+jm7hfx7w2YU64/Av4/NqqeG3GoRZgxPcgoTxYjhrcfJRw9ULch71SS4G+Q3bOXFhRvPqjguN0Hyp5w=="], "@pandacss/core/browserslist": ["browserslist@4.28.1", "", { "dependencies": { "baseline-browser-mapping": "^2.9.0", "caniuse-lite": "^1.0.30001759", "electron-to-chromium": "^1.5.263", "node-releases": "^2.0.27", "update-browserslist-db": "^1.2.0" }, "bin": { "browserslist": "cli.js" } }, "sha512-ZC5Bd0LgJXgwGqUknZY/vkUQ04r8NXnJZ3yYi4vDmSiZmC/pdSN0NbNRPxZpbtO4uAfDUAFffO8IZoM3Gj8IkA=="], @@ -3634,7 +3627,7 @@ "@tailwindcss/oxide-wasm32-wasi/@emnapi/runtime": ["@emnapi/runtime@1.11.3", "", { "dependencies": { "tslib": "^2.4.0" }, "bundled": true }, "sha512-Xz4Tpyki7XyrpbUK1jR1AhdAdaXyhhY4lZ3neLodmhpuWfy2PAQN5B46sAiU4liOXGLkHypn/qU+jvfWSCYYLA=="], - "@tailwindcss/oxide-wasm32-wasi/@emnapi/wasi-threads": ["@emnapi/wasi-threads@1.2.3", "", { "dependencies": { "tslib": "^2.4.0" }, "bundled": true }, "sha512-ELEBe8PsLvvJ6QMr0zLt8ffvOHW/dc1m3CEzNMg7aJUv3bMaoDtw2TXyDAwkYBuroxxuHEwhRTLJSe5sya547g=="], + "@tailwindcss/oxide-wasm32-wasi/@emnapi/wasi-threads": ["@emnapi/wasi-threads@1.2.2", "", { "dependencies": { "tslib": "^2.4.0" }, "bundled": true }, "sha512-c95qOXkHdydNKhscBTebqEC1CVAZpyqOfVfBzQ1qgzyl3gfeldUjIggDbIZgDKsHLgnsM+igH7TJ/eAasaVuMA=="], "@tailwindcss/oxide-wasm32-wasi/@napi-rs/wasm-runtime": ["@napi-rs/wasm-runtime@1.2.3", "", { "dependencies": { "@tybys/wasm-util": "^0.10.3" }, "peerDependencies": { "@emnapi/core": "^1.7.1 || ^2.0.0-alpha.4", "@emnapi/runtime": "^1.7.1 || ^2.0.0-alpha.4" }, "bundled": true }, "sha512-UMduMbqO5s5zF2NkNacMT/yK5Y5QiKvWr2+50bzIIxFDwVJ2h49b+oyjaCGPhJxd2/gC2x39EHv/gHVuu36x2Q=="], @@ -3644,6 +3637,8 @@ "@testing-library/dom/@babel/code-frame": ["@babel/code-frame@7.29.7", "", { "dependencies": { "@babel/helper-validator-identifier": "^7.29.7", "js-tokens": "^4.0.0", "picocolors": "^1.1.1" } }, "sha512-Aup7aUOfpbAUg2ROOJN6Iw5f9DMBlzu0mIkm/malLQFN/YQgO48wCj0Kxa3sEHJvPVFg7siR+qRInwXd2qhQKw=="], + "@testing-library/jest-dom/aria-query": ["aria-query@5.3.2", "", {}, "sha512-COROpnaoap1E2F000S62r6A60uHZnmlvomhfyT2DlTcrY1OrBKn2UhH7qn5wTC9zMvD0AY7csdPSNwKP+7WiQw=="], + "@testing-library/jest-dom/dom-accessibility-api": ["dom-accessibility-api@0.6.3", "", {}, "sha512-7ZgogeTnjuHbo+ct10G9Ffp0mif17idi0IyWNVA/wcwcm7NPOD/WEHVP3n7n3MhXqxoIYm8d6MuZohYWIZ4T3w=="], "@types/babel__core/@babel/parser": ["@babel/parser@7.29.8", "", { "dependencies": { "@babel/types": "^7.29.8" }, "bin": "./bin/babel-parser.js" }, "sha512-E8lTAYNB1KW+FH+VGJuZM1ioAx2E6oVlvQFRrf5P8ZZmsiJXYAD9vTFV7yyEURNzgh1dFqMZuO6tUwcARbqFCA=="], @@ -3700,10 +3695,6 @@ "jest-worker/supports-color": ["supports-color@8.1.1", "", { "dependencies": { "has-flag": "^4.0.0" } }, "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q=="], - "landing/typescript": ["typescript@7.0.2", "", { "optionalDependencies": { "@typescript/typescript-aix-ppc64": "7.0.2", "@typescript/typescript-darwin-arm64": "7.0.2", "@typescript/typescript-darwin-x64": "7.0.2", "@typescript/typescript-freebsd-arm64": "7.0.2", "@typescript/typescript-freebsd-x64": "7.0.2", "@typescript/typescript-linux-arm": "7.0.2", "@typescript/typescript-linux-arm64": "7.0.2", "@typescript/typescript-linux-loong64": "7.0.2", "@typescript/typescript-linux-mips64el": "7.0.2", "@typescript/typescript-linux-ppc64": "7.0.2", "@typescript/typescript-linux-riscv64": "7.0.2", "@typescript/typescript-linux-s390x": "7.0.2", "@typescript/typescript-linux-x64": "7.0.2", "@typescript/typescript-netbsd-arm64": "7.0.2", "@typescript/typescript-netbsd-x64": "7.0.2", "@typescript/typescript-openbsd-arm64": "7.0.2", "@typescript/typescript-openbsd-x64": "7.0.2", "@typescript/typescript-sunos-x64": "7.0.2", "@typescript/typescript-win32-arm64": "7.0.2", "@typescript/typescript-win32-x64": "7.0.2" }, "bin": { "tsc": "bin/tsc" } }, "sha512-8FYau96o3NKOhbjKi/qNvG/W5jhzxkbdm5sj9AbZ/5T5sWqn3hJgLfGx27sRKZWTvyzCP8dLRBTf5tBTSRVUNA=="], - - "local-pkg/pkg-types": ["pkg-types@2.3.1", "", { "dependencies": { "confbox": "^0.2.4", "exsolve": "^1.0.8", "pathe": "^2.0.3" } }, "sha512-y+ichcgc2LrADuhLNAx8DFjVfgz91pRxfZdI3UDhxHvcVEZsenLO+7XaU5vOp0u/7V/wZ+plyuQxtrDlZJ+yeg=="], - "loose-envify/js-tokens": ["js-tokens@4.0.0", "", {}, "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ=="], "micromatch/picomatch": ["picomatch@2.3.2", "", {}, "sha512-V7+vQEJ06Z+c5tSye8S+nHUfI51xoXIXjHQ99cQtKUkQqqO1kO/KCJUfZXuB47h/YBlDhah2H3hdUGXn8ie0oA=="], @@ -3712,42 +3703,6 @@ "next/postcss": ["postcss@8.5.23", "", { "dependencies": { "nanoid": "^3.3.16", "picocolors": "^1.1.1", "source-map-js": "^1.2.1" } }, "sha512-g50586zr4bZmwFiTlflMu8E0bDTb5I5gertgwAKmsdUlTQIhZtunzUlD1WSzwcVWPoAVpsrA6vlfCD7oXvRwgg=="], - "next-chakra-ui-benchmark/typescript": ["typescript@7.0.2", "", { "optionalDependencies": { "@typescript/typescript-aix-ppc64": "7.0.2", "@typescript/typescript-darwin-arm64": "7.0.2", "@typescript/typescript-darwin-x64": "7.0.2", "@typescript/typescript-freebsd-arm64": "7.0.2", "@typescript/typescript-freebsd-x64": "7.0.2", "@typescript/typescript-linux-arm": "7.0.2", "@typescript/typescript-linux-arm64": "7.0.2", "@typescript/typescript-linux-loong64": "7.0.2", "@typescript/typescript-linux-mips64el": "7.0.2", "@typescript/typescript-linux-ppc64": "7.0.2", "@typescript/typescript-linux-riscv64": "7.0.2", "@typescript/typescript-linux-s390x": "7.0.2", "@typescript/typescript-linux-x64": "7.0.2", "@typescript/typescript-netbsd-arm64": "7.0.2", "@typescript/typescript-netbsd-x64": "7.0.2", "@typescript/typescript-openbsd-arm64": "7.0.2", "@typescript/typescript-openbsd-x64": "7.0.2", "@typescript/typescript-sunos-x64": "7.0.2", "@typescript/typescript-win32-arm64": "7.0.2", "@typescript/typescript-win32-x64": "7.0.2" }, "bin": { "tsc": "bin/tsc" } }, "sha512-8FYau96o3NKOhbjKi/qNvG/W5jhzxkbdm5sj9AbZ/5T5sWqn3hJgLfGx27sRKZWTvyzCP8dLRBTf5tBTSRVUNA=="], - - "next-devup-ui-benchmark/typescript": ["typescript@7.0.2", "", { "optionalDependencies": { "@typescript/typescript-aix-ppc64": "7.0.2", "@typescript/typescript-darwin-arm64": "7.0.2", "@typescript/typescript-darwin-x64": "7.0.2", "@typescript/typescript-freebsd-arm64": "7.0.2", "@typescript/typescript-freebsd-x64": "7.0.2", "@typescript/typescript-linux-arm": "7.0.2", "@typescript/typescript-linux-arm64": "7.0.2", "@typescript/typescript-linux-loong64": "7.0.2", "@typescript/typescript-linux-mips64el": "7.0.2", "@typescript/typescript-linux-ppc64": "7.0.2", "@typescript/typescript-linux-riscv64": "7.0.2", "@typescript/typescript-linux-s390x": "7.0.2", "@typescript/typescript-linux-x64": "7.0.2", "@typescript/typescript-netbsd-arm64": "7.0.2", "@typescript/typescript-netbsd-x64": "7.0.2", "@typescript/typescript-openbsd-arm64": "7.0.2", "@typescript/typescript-openbsd-x64": "7.0.2", "@typescript/typescript-sunos-x64": "7.0.2", "@typescript/typescript-win32-arm64": "7.0.2", "@typescript/typescript-win32-x64": "7.0.2" }, "bin": { "tsc": "bin/tsc" } }, "sha512-8FYau96o3NKOhbjKi/qNvG/W5jhzxkbdm5sj9AbZ/5T5sWqn3hJgLfGx27sRKZWTvyzCP8dLRBTf5tBTSRVUNA=="], - - "next-devup-ui-collapse-benchmark/typescript": ["typescript@7.0.2", "", { "optionalDependencies": { "@typescript/typescript-aix-ppc64": "7.0.2", "@typescript/typescript-darwin-arm64": "7.0.2", "@typescript/typescript-darwin-x64": "7.0.2", "@typescript/typescript-freebsd-arm64": "7.0.2", "@typescript/typescript-freebsd-x64": "7.0.2", "@typescript/typescript-linux-arm": "7.0.2", "@typescript/typescript-linux-arm64": "7.0.2", "@typescript/typescript-linux-loong64": "7.0.2", "@typescript/typescript-linux-mips64el": "7.0.2", "@typescript/typescript-linux-ppc64": "7.0.2", "@typescript/typescript-linux-riscv64": "7.0.2", "@typescript/typescript-linux-s390x": "7.0.2", "@typescript/typescript-linux-x64": "7.0.2", "@typescript/typescript-netbsd-arm64": "7.0.2", "@typescript/typescript-netbsd-x64": "7.0.2", "@typescript/typescript-openbsd-arm64": "7.0.2", "@typescript/typescript-openbsd-x64": "7.0.2", "@typescript/typescript-sunos-x64": "7.0.2", "@typescript/typescript-win32-arm64": "7.0.2", "@typescript/typescript-win32-x64": "7.0.2" }, "bin": { "tsc": "bin/tsc" } }, "sha512-8FYau96o3NKOhbjKi/qNvG/W5jhzxkbdm5sj9AbZ/5T5sWqn3hJgLfGx27sRKZWTvyzCP8dLRBTf5tBTSRVUNA=="], - - "next-devup-ui-single-benchmark/typescript": ["typescript@7.0.2", "", { "optionalDependencies": { "@typescript/typescript-aix-ppc64": "7.0.2", "@typescript/typescript-darwin-arm64": "7.0.2", "@typescript/typescript-darwin-x64": "7.0.2", "@typescript/typescript-freebsd-arm64": "7.0.2", "@typescript/typescript-freebsd-x64": "7.0.2", "@typescript/typescript-linux-arm": "7.0.2", "@typescript/typescript-linux-arm64": "7.0.2", "@typescript/typescript-linux-loong64": "7.0.2", "@typescript/typescript-linux-mips64el": "7.0.2", "@typescript/typescript-linux-ppc64": "7.0.2", "@typescript/typescript-linux-riscv64": "7.0.2", "@typescript/typescript-linux-s390x": "7.0.2", "@typescript/typescript-linux-x64": "7.0.2", "@typescript/typescript-netbsd-arm64": "7.0.2", "@typescript/typescript-netbsd-x64": "7.0.2", "@typescript/typescript-openbsd-arm64": "7.0.2", "@typescript/typescript-openbsd-x64": "7.0.2", "@typescript/typescript-sunos-x64": "7.0.2", "@typescript/typescript-win32-arm64": "7.0.2", "@typescript/typescript-win32-x64": "7.0.2" }, "bin": { "tsc": "bin/tsc" } }, "sha512-8FYau96o3NKOhbjKi/qNvG/W5jhzxkbdm5sj9AbZ/5T5sWqn3hJgLfGx27sRKZWTvyzCP8dLRBTf5tBTSRVUNA=="], - - "next-devup-ui-single-turbo-benchmark/typescript": ["typescript@7.0.2", "", { "optionalDependencies": { "@typescript/typescript-aix-ppc64": "7.0.2", "@typescript/typescript-darwin-arm64": "7.0.2", "@typescript/typescript-darwin-x64": "7.0.2", "@typescript/typescript-freebsd-arm64": "7.0.2", "@typescript/typescript-freebsd-x64": "7.0.2", "@typescript/typescript-linux-arm": "7.0.2", "@typescript/typescript-linux-arm64": "7.0.2", "@typescript/typescript-linux-loong64": "7.0.2", "@typescript/typescript-linux-mips64el": "7.0.2", "@typescript/typescript-linux-ppc64": "7.0.2", "@typescript/typescript-linux-riscv64": "7.0.2", "@typescript/typescript-linux-s390x": "7.0.2", "@typescript/typescript-linux-x64": "7.0.2", "@typescript/typescript-netbsd-arm64": "7.0.2", "@typescript/typescript-netbsd-x64": "7.0.2", "@typescript/typescript-openbsd-arm64": "7.0.2", "@typescript/typescript-openbsd-x64": "7.0.2", "@typescript/typescript-sunos-x64": "7.0.2", "@typescript/typescript-win32-arm64": "7.0.2", "@typescript/typescript-win32-x64": "7.0.2" }, "bin": { "tsc": "bin/tsc" } }, "sha512-8FYau96o3NKOhbjKi/qNvG/W5jhzxkbdm5sj9AbZ/5T5sWqn3hJgLfGx27sRKZWTvyzCP8dLRBTf5tBTSRVUNA=="], - - "next-devup-ui-turbo-benchmark/typescript": ["typescript@7.0.2", "", { "optionalDependencies": { "@typescript/typescript-aix-ppc64": "7.0.2", "@typescript/typescript-darwin-arm64": "7.0.2", "@typescript/typescript-darwin-x64": "7.0.2", "@typescript/typescript-freebsd-arm64": "7.0.2", "@typescript/typescript-freebsd-x64": "7.0.2", "@typescript/typescript-linux-arm": "7.0.2", "@typescript/typescript-linux-arm64": "7.0.2", "@typescript/typescript-linux-loong64": "7.0.2", "@typescript/typescript-linux-mips64el": "7.0.2", "@typescript/typescript-linux-ppc64": "7.0.2", "@typescript/typescript-linux-riscv64": "7.0.2", "@typescript/typescript-linux-s390x": "7.0.2", "@typescript/typescript-linux-x64": "7.0.2", "@typescript/typescript-netbsd-arm64": "7.0.2", "@typescript/typescript-netbsd-x64": "7.0.2", "@typescript/typescript-openbsd-arm64": "7.0.2", "@typescript/typescript-openbsd-x64": "7.0.2", "@typescript/typescript-sunos-x64": "7.0.2", "@typescript/typescript-win32-arm64": "7.0.2", "@typescript/typescript-win32-x64": "7.0.2" }, "bin": { "tsc": "bin/tsc" } }, "sha512-8FYau96o3NKOhbjKi/qNvG/W5jhzxkbdm5sj9AbZ/5T5sWqn3hJgLfGx27sRKZWTvyzCP8dLRBTf5tBTSRVUNA=="], - - "next-example/typescript": ["typescript@7.0.2", "", { "optionalDependencies": { "@typescript/typescript-aix-ppc64": "7.0.2", "@typescript/typescript-darwin-arm64": "7.0.2", "@typescript/typescript-darwin-x64": "7.0.2", "@typescript/typescript-freebsd-arm64": "7.0.2", "@typescript/typescript-freebsd-x64": "7.0.2", "@typescript/typescript-linux-arm": "7.0.2", "@typescript/typescript-linux-arm64": "7.0.2", "@typescript/typescript-linux-loong64": "7.0.2", "@typescript/typescript-linux-mips64el": "7.0.2", "@typescript/typescript-linux-ppc64": "7.0.2", "@typescript/typescript-linux-riscv64": "7.0.2", "@typescript/typescript-linux-s390x": "7.0.2", "@typescript/typescript-linux-x64": "7.0.2", "@typescript/typescript-netbsd-arm64": "7.0.2", "@typescript/typescript-netbsd-x64": "7.0.2", "@typescript/typescript-openbsd-arm64": "7.0.2", "@typescript/typescript-openbsd-x64": "7.0.2", "@typescript/typescript-sunos-x64": "7.0.2", "@typescript/typescript-win32-arm64": "7.0.2", "@typescript/typescript-win32-x64": "7.0.2" }, "bin": { "tsc": "bin/tsc" } }, "sha512-8FYau96o3NKOhbjKi/qNvG/W5jhzxkbdm5sj9AbZ/5T5sWqn3hJgLfGx27sRKZWTvyzCP8dLRBTf5tBTSRVUNA=="], - - "next-kuma-ui-benchmark/typescript": ["typescript@7.0.2", "", { "optionalDependencies": { "@typescript/typescript-aix-ppc64": "7.0.2", "@typescript/typescript-darwin-arm64": "7.0.2", "@typescript/typescript-darwin-x64": "7.0.2", "@typescript/typescript-freebsd-arm64": "7.0.2", "@typescript/typescript-freebsd-x64": "7.0.2", "@typescript/typescript-linux-arm": "7.0.2", "@typescript/typescript-linux-arm64": "7.0.2", "@typescript/typescript-linux-loong64": "7.0.2", "@typescript/typescript-linux-mips64el": "7.0.2", "@typescript/typescript-linux-ppc64": "7.0.2", "@typescript/typescript-linux-riscv64": "7.0.2", "@typescript/typescript-linux-s390x": "7.0.2", "@typescript/typescript-linux-x64": "7.0.2", "@typescript/typescript-netbsd-arm64": "7.0.2", "@typescript/typescript-netbsd-x64": "7.0.2", "@typescript/typescript-openbsd-arm64": "7.0.2", "@typescript/typescript-openbsd-x64": "7.0.2", "@typescript/typescript-sunos-x64": "7.0.2", "@typescript/typescript-win32-arm64": "7.0.2", "@typescript/typescript-win32-x64": "7.0.2" }, "bin": { "tsc": "bin/tsc" } }, "sha512-8FYau96o3NKOhbjKi/qNvG/W5jhzxkbdm5sj9AbZ/5T5sWqn3hJgLfGx27sRKZWTvyzCP8dLRBTf5tBTSRVUNA=="], - - "next-mui-benchmark/typescript": ["typescript@7.0.2", "", { "optionalDependencies": { "@typescript/typescript-aix-ppc64": "7.0.2", "@typescript/typescript-darwin-arm64": "7.0.2", "@typescript/typescript-darwin-x64": "7.0.2", "@typescript/typescript-freebsd-arm64": "7.0.2", "@typescript/typescript-freebsd-x64": "7.0.2", "@typescript/typescript-linux-arm": "7.0.2", "@typescript/typescript-linux-arm64": "7.0.2", "@typescript/typescript-linux-loong64": "7.0.2", "@typescript/typescript-linux-mips64el": "7.0.2", "@typescript/typescript-linux-ppc64": "7.0.2", "@typescript/typescript-linux-riscv64": "7.0.2", "@typescript/typescript-linux-s390x": "7.0.2", "@typescript/typescript-linux-x64": "7.0.2", "@typescript/typescript-netbsd-arm64": "7.0.2", "@typescript/typescript-netbsd-x64": "7.0.2", "@typescript/typescript-openbsd-arm64": "7.0.2", "@typescript/typescript-openbsd-x64": "7.0.2", "@typescript/typescript-sunos-x64": "7.0.2", "@typescript/typescript-win32-arm64": "7.0.2", "@typescript/typescript-win32-x64": "7.0.2" }, "bin": { "tsc": "bin/tsc" } }, "sha512-8FYau96o3NKOhbjKi/qNvG/W5jhzxkbdm5sj9AbZ/5T5sWqn3hJgLfGx27sRKZWTvyzCP8dLRBTf5tBTSRVUNA=="], - - "next-panda-css-benchmark/typescript": ["typescript@7.0.2", "", { "optionalDependencies": { "@typescript/typescript-aix-ppc64": "7.0.2", "@typescript/typescript-darwin-arm64": "7.0.2", "@typescript/typescript-darwin-x64": "7.0.2", "@typescript/typescript-freebsd-arm64": "7.0.2", "@typescript/typescript-freebsd-x64": "7.0.2", "@typescript/typescript-linux-arm": "7.0.2", "@typescript/typescript-linux-arm64": "7.0.2", "@typescript/typescript-linux-loong64": "7.0.2", "@typescript/typescript-linux-mips64el": "7.0.2", "@typescript/typescript-linux-ppc64": "7.0.2", "@typescript/typescript-linux-riscv64": "7.0.2", "@typescript/typescript-linux-s390x": "7.0.2", "@typescript/typescript-linux-x64": "7.0.2", "@typescript/typescript-netbsd-arm64": "7.0.2", "@typescript/typescript-netbsd-x64": "7.0.2", "@typescript/typescript-openbsd-arm64": "7.0.2", "@typescript/typescript-openbsd-x64": "7.0.2", "@typescript/typescript-sunos-x64": "7.0.2", "@typescript/typescript-win32-arm64": "7.0.2", "@typescript/typescript-win32-x64": "7.0.2" }, "bin": { "tsc": "bin/tsc" } }, "sha512-8FYau96o3NKOhbjKi/qNvG/W5jhzxkbdm5sj9AbZ/5T5sWqn3hJgLfGx27sRKZWTvyzCP8dLRBTf5tBTSRVUNA=="], - - "next-stylex-benchmark/typescript": ["typescript@7.0.2", "", { "optionalDependencies": { "@typescript/typescript-aix-ppc64": "7.0.2", "@typescript/typescript-darwin-arm64": "7.0.2", "@typescript/typescript-darwin-x64": "7.0.2", "@typescript/typescript-freebsd-arm64": "7.0.2", "@typescript/typescript-freebsd-x64": "7.0.2", "@typescript/typescript-linux-arm": "7.0.2", "@typescript/typescript-linux-arm64": "7.0.2", "@typescript/typescript-linux-loong64": "7.0.2", "@typescript/typescript-linux-mips64el": "7.0.2", "@typescript/typescript-linux-ppc64": "7.0.2", "@typescript/typescript-linux-riscv64": "7.0.2", "@typescript/typescript-linux-s390x": "7.0.2", "@typescript/typescript-linux-x64": "7.0.2", "@typescript/typescript-netbsd-arm64": "7.0.2", "@typescript/typescript-netbsd-x64": "7.0.2", "@typescript/typescript-openbsd-arm64": "7.0.2", "@typescript/typescript-openbsd-x64": "7.0.2", "@typescript/typescript-sunos-x64": "7.0.2", "@typescript/typescript-win32-arm64": "7.0.2", "@typescript/typescript-win32-x64": "7.0.2" }, "bin": { "tsc": "bin/tsc" } }, "sha512-8FYau96o3NKOhbjKi/qNvG/W5jhzxkbdm5sj9AbZ/5T5sWqn3hJgLfGx27sRKZWTvyzCP8dLRBTf5tBTSRVUNA=="], - - "next-stylex-turbo-benchmark/typescript": ["typescript@7.0.2", "", { "optionalDependencies": { "@typescript/typescript-aix-ppc64": "7.0.2", "@typescript/typescript-darwin-arm64": "7.0.2", "@typescript/typescript-darwin-x64": "7.0.2", "@typescript/typescript-freebsd-arm64": "7.0.2", "@typescript/typescript-freebsd-x64": "7.0.2", "@typescript/typescript-linux-arm": "7.0.2", "@typescript/typescript-linux-arm64": "7.0.2", "@typescript/typescript-linux-loong64": "7.0.2", "@typescript/typescript-linux-mips64el": "7.0.2", "@typescript/typescript-linux-ppc64": "7.0.2", "@typescript/typescript-linux-riscv64": "7.0.2", "@typescript/typescript-linux-s390x": "7.0.2", "@typescript/typescript-linux-x64": "7.0.2", "@typescript/typescript-netbsd-arm64": "7.0.2", "@typescript/typescript-netbsd-x64": "7.0.2", "@typescript/typescript-openbsd-arm64": "7.0.2", "@typescript/typescript-openbsd-x64": "7.0.2", "@typescript/typescript-sunos-x64": "7.0.2", "@typescript/typescript-win32-arm64": "7.0.2", "@typescript/typescript-win32-x64": "7.0.2" }, "bin": { "tsc": "bin/tsc" } }, "sha512-8FYau96o3NKOhbjKi/qNvG/W5jhzxkbdm5sj9AbZ/5T5sWqn3hJgLfGx27sRKZWTvyzCP8dLRBTf5tBTSRVUNA=="], - - "next-stylex-turbo-devup-ui-benchmark/typescript": ["typescript@7.0.2", "", { "optionalDependencies": { "@typescript/typescript-aix-ppc64": "7.0.2", "@typescript/typescript-darwin-arm64": "7.0.2", "@typescript/typescript-darwin-x64": "7.0.2", "@typescript/typescript-freebsd-arm64": "7.0.2", "@typescript/typescript-freebsd-x64": "7.0.2", "@typescript/typescript-linux-arm": "7.0.2", "@typescript/typescript-linux-arm64": "7.0.2", "@typescript/typescript-linux-loong64": "7.0.2", "@typescript/typescript-linux-mips64el": "7.0.2", "@typescript/typescript-linux-ppc64": "7.0.2", "@typescript/typescript-linux-riscv64": "7.0.2", "@typescript/typescript-linux-s390x": "7.0.2", "@typescript/typescript-linux-x64": "7.0.2", "@typescript/typescript-netbsd-arm64": "7.0.2", "@typescript/typescript-netbsd-x64": "7.0.2", "@typescript/typescript-openbsd-arm64": "7.0.2", "@typescript/typescript-openbsd-x64": "7.0.2", "@typescript/typescript-sunos-x64": "7.0.2", "@typescript/typescript-win32-arm64": "7.0.2", "@typescript/typescript-win32-x64": "7.0.2" }, "bin": { "tsc": "bin/tsc" } }, "sha512-8FYau96o3NKOhbjKi/qNvG/W5jhzxkbdm5sj9AbZ/5T5sWqn3hJgLfGx27sRKZWTvyzCP8dLRBTf5tBTSRVUNA=="], - - "next-tailwind-benchmark/typescript": ["typescript@7.0.2", "", { "optionalDependencies": { "@typescript/typescript-aix-ppc64": "7.0.2", "@typescript/typescript-darwin-arm64": "7.0.2", "@typescript/typescript-darwin-x64": "7.0.2", "@typescript/typescript-freebsd-arm64": "7.0.2", "@typescript/typescript-freebsd-x64": "7.0.2", "@typescript/typescript-linux-arm": "7.0.2", "@typescript/typescript-linux-arm64": "7.0.2", "@typescript/typescript-linux-loong64": "7.0.2", "@typescript/typescript-linux-mips64el": "7.0.2", "@typescript/typescript-linux-ppc64": "7.0.2", "@typescript/typescript-linux-riscv64": "7.0.2", "@typescript/typescript-linux-s390x": "7.0.2", "@typescript/typescript-linux-x64": "7.0.2", "@typescript/typescript-netbsd-arm64": "7.0.2", "@typescript/typescript-netbsd-x64": "7.0.2", "@typescript/typescript-openbsd-arm64": "7.0.2", "@typescript/typescript-openbsd-x64": "7.0.2", "@typescript/typescript-sunos-x64": "7.0.2", "@typescript/typescript-win32-arm64": "7.0.2", "@typescript/typescript-win32-x64": "7.0.2" }, "bin": { "tsc": "bin/tsc" } }, "sha512-8FYau96o3NKOhbjKi/qNvG/W5jhzxkbdm5sj9AbZ/5T5sWqn3hJgLfGx27sRKZWTvyzCP8dLRBTf5tBTSRVUNA=="], - - "next-tailwind-turbo-benchmark/typescript": ["typescript@7.0.2", "", { "optionalDependencies": { "@typescript/typescript-aix-ppc64": "7.0.2", "@typescript/typescript-darwin-arm64": "7.0.2", "@typescript/typescript-darwin-x64": "7.0.2", "@typescript/typescript-freebsd-arm64": "7.0.2", "@typescript/typescript-freebsd-x64": "7.0.2", "@typescript/typescript-linux-arm": "7.0.2", "@typescript/typescript-linux-arm64": "7.0.2", "@typescript/typescript-linux-loong64": "7.0.2", "@typescript/typescript-linux-mips64el": "7.0.2", "@typescript/typescript-linux-ppc64": "7.0.2", "@typescript/typescript-linux-riscv64": "7.0.2", "@typescript/typescript-linux-s390x": "7.0.2", "@typescript/typescript-linux-x64": "7.0.2", "@typescript/typescript-netbsd-arm64": "7.0.2", "@typescript/typescript-netbsd-x64": "7.0.2", "@typescript/typescript-openbsd-arm64": "7.0.2", "@typescript/typescript-openbsd-x64": "7.0.2", "@typescript/typescript-sunos-x64": "7.0.2", "@typescript/typescript-win32-arm64": "7.0.2", "@typescript/typescript-win32-x64": "7.0.2" }, "bin": { "tsc": "bin/tsc" } }, "sha512-8FYau96o3NKOhbjKi/qNvG/W5jhzxkbdm5sj9AbZ/5T5sWqn3hJgLfGx27sRKZWTvyzCP8dLRBTf5tBTSRVUNA=="], - - "next-tailwind-turbo-devup-ui-benchmark/typescript": ["typescript@7.0.2", "", { "optionalDependencies": { "@typescript/typescript-aix-ppc64": "7.0.2", "@typescript/typescript-darwin-arm64": "7.0.2", "@typescript/typescript-darwin-x64": "7.0.2", "@typescript/typescript-freebsd-arm64": "7.0.2", "@typescript/typescript-freebsd-x64": "7.0.2", "@typescript/typescript-linux-arm": "7.0.2", "@typescript/typescript-linux-arm64": "7.0.2", "@typescript/typescript-linux-loong64": "7.0.2", "@typescript/typescript-linux-mips64el": "7.0.2", "@typescript/typescript-linux-ppc64": "7.0.2", "@typescript/typescript-linux-riscv64": "7.0.2", "@typescript/typescript-linux-s390x": "7.0.2", "@typescript/typescript-linux-x64": "7.0.2", "@typescript/typescript-netbsd-arm64": "7.0.2", "@typescript/typescript-netbsd-x64": "7.0.2", "@typescript/typescript-openbsd-arm64": "7.0.2", "@typescript/typescript-openbsd-x64": "7.0.2", "@typescript/typescript-sunos-x64": "7.0.2", "@typescript/typescript-win32-arm64": "7.0.2", "@typescript/typescript-win32-x64": "7.0.2" }, "bin": { "tsc": "bin/tsc" } }, "sha512-8FYau96o3NKOhbjKi/qNvG/W5jhzxkbdm5sj9AbZ/5T5sWqn3hJgLfGx27sRKZWTvyzCP8dLRBTf5tBTSRVUNA=="], - - "next-vanilla-extract-benchmark/typescript": ["typescript@7.0.2", "", { "optionalDependencies": { "@typescript/typescript-aix-ppc64": "7.0.2", "@typescript/typescript-darwin-arm64": "7.0.2", "@typescript/typescript-darwin-x64": "7.0.2", "@typescript/typescript-freebsd-arm64": "7.0.2", "@typescript/typescript-freebsd-x64": "7.0.2", "@typescript/typescript-linux-arm": "7.0.2", "@typescript/typescript-linux-arm64": "7.0.2", "@typescript/typescript-linux-loong64": "7.0.2", "@typescript/typescript-linux-mips64el": "7.0.2", "@typescript/typescript-linux-ppc64": "7.0.2", "@typescript/typescript-linux-riscv64": "7.0.2", "@typescript/typescript-linux-s390x": "7.0.2", "@typescript/typescript-linux-x64": "7.0.2", "@typescript/typescript-netbsd-arm64": "7.0.2", "@typescript/typescript-netbsd-x64": "7.0.2", "@typescript/typescript-openbsd-arm64": "7.0.2", "@typescript/typescript-openbsd-x64": "7.0.2", "@typescript/typescript-sunos-x64": "7.0.2", "@typescript/typescript-win32-arm64": "7.0.2", "@typescript/typescript-win32-x64": "7.0.2" }, "bin": { "tsc": "bin/tsc" } }, "sha512-8FYau96o3NKOhbjKi/qNvG/W5jhzxkbdm5sj9AbZ/5T5sWqn3hJgLfGx27sRKZWTvyzCP8dLRBTf5tBTSRVUNA=="], - - "next-vanilla-extract-devup-ui-benchmark/typescript": ["typescript@7.0.2", "", { "optionalDependencies": { "@typescript/typescript-aix-ppc64": "7.0.2", "@typescript/typescript-darwin-arm64": "7.0.2", "@typescript/typescript-darwin-x64": "7.0.2", "@typescript/typescript-freebsd-arm64": "7.0.2", "@typescript/typescript-freebsd-x64": "7.0.2", "@typescript/typescript-linux-arm": "7.0.2", "@typescript/typescript-linux-arm64": "7.0.2", "@typescript/typescript-linux-loong64": "7.0.2", "@typescript/typescript-linux-mips64el": "7.0.2", "@typescript/typescript-linux-ppc64": "7.0.2", "@typescript/typescript-linux-riscv64": "7.0.2", "@typescript/typescript-linux-s390x": "7.0.2", "@typescript/typescript-linux-x64": "7.0.2", "@typescript/typescript-netbsd-arm64": "7.0.2", "@typescript/typescript-netbsd-x64": "7.0.2", "@typescript/typescript-openbsd-arm64": "7.0.2", "@typescript/typescript-openbsd-x64": "7.0.2", "@typescript/typescript-sunos-x64": "7.0.2", "@typescript/typescript-win32-arm64": "7.0.2", "@typescript/typescript-win32-x64": "7.0.2" }, "bin": { "tsc": "bin/tsc" } }, "sha512-8FYau96o3NKOhbjKi/qNvG/W5jhzxkbdm5sj9AbZ/5T5sWqn3hJgLfGx27sRKZWTvyzCP8dLRBTf5tBTSRVUNA=="], - "p-locate/p-limit": ["p-limit@3.1.0", "", { "dependencies": { "yocto-queue": "^0.1.0" } }, "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ=="], "parse-entities/@types/unist": ["@types/unist@2.0.11", "", {}, "sha512-CmBKiL6NNo/OqgmMn95Fk9Whlp2mtvIv+KNpQKN2F4SjvrEesubTRWGYSg+BnWZOnlCaSTU1sMpsBOzgbYhnsA=="], @@ -3772,7 +3727,7 @@ "redent/strip-indent": ["strip-indent@3.0.0", "", { "dependencies": { "min-indent": "^1.0.0" } }, "sha512-laJTa3Jb+VQpaC6DseHhF7dXVqHTfJPCRDaEbid/drOhgitgYku/letMUqOXFoWV0zIIUbjpdH2t+tYj4bQMRQ=="], - "rolldown/@oxc-project/types": ["@oxc-project/types@0.146.0", "", {}, "sha512-XC0QsnnhVe7sLIWmYmdPw7x5P0h4W8vUU3Nv1ySgWXtvCz8NizoAEpGXA0sOYoJQV2Rl13LgURAHQ5cI5ILCSA=="], + "rolldown/@oxc-project/types": ["@oxc-project/types@0.147.0", "", {}, "sha512-IJ3s6ltHLp45S0bh7phkX+gJO7A1Wuz2EaqpAhb8WjqDwbzMiWKHhyyT42tskaWjEYXtHtVCPpnBJVT9+dcRLg=="], "schema-utils/ajv": ["ajv@8.20.0", "", { "dependencies": { "fast-deep-equal": "^3.1.3", "fast-uri": "^3.0.1", "json-schema-traverse": "^1.0.0", "require-from-string": "^2.0.2" } }, "sha512-Thbli+OlOj+iMPYFBVBfJ3OmCAnaSyNn4M1vz9T6Gka5Jt9ba/HIR56joy65tY6kx/FCF5VXNB819Y7/GUrBGA=="], @@ -3796,19 +3751,11 @@ "vfile-reporter/string-width": ["string-width@6.1.0", "", { "dependencies": { "eastasianwidth": "^0.2.0", "emoji-regex": "^10.2.1", "strip-ansi": "^7.0.1" } }, "sha512-k01swCJAgQmuADB0YIc+7TuatfNvTBVOoaUWJjTB9R4VJzR5vNWzf5t42ESVZFPS8xTySF7CAdV4t/aaIm3UnQ=="], - "vinext-devup-ui-benchmark/typescript": ["typescript@7.0.2", "", { "optionalDependencies": { "@typescript/typescript-aix-ppc64": "7.0.2", "@typescript/typescript-darwin-arm64": "7.0.2", "@typescript/typescript-darwin-x64": "7.0.2", "@typescript/typescript-freebsd-arm64": "7.0.2", "@typescript/typescript-freebsd-x64": "7.0.2", "@typescript/typescript-linux-arm": "7.0.2", "@typescript/typescript-linux-arm64": "7.0.2", "@typescript/typescript-linux-loong64": "7.0.2", "@typescript/typescript-linux-mips64el": "7.0.2", "@typescript/typescript-linux-ppc64": "7.0.2", "@typescript/typescript-linux-riscv64": "7.0.2", "@typescript/typescript-linux-s390x": "7.0.2", "@typescript/typescript-linux-x64": "7.0.2", "@typescript/typescript-netbsd-arm64": "7.0.2", "@typescript/typescript-netbsd-x64": "7.0.2", "@typescript/typescript-openbsd-arm64": "7.0.2", "@typescript/typescript-openbsd-x64": "7.0.2", "@typescript/typescript-sunos-x64": "7.0.2", "@typescript/typescript-win32-arm64": "7.0.2", "@typescript/typescript-win32-x64": "7.0.2" }, "bin": { "tsc": "bin/tsc" } }, "sha512-8FYau96o3NKOhbjKi/qNvG/W5jhzxkbdm5sj9AbZ/5T5sWqn3hJgLfGx27sRKZWTvyzCP8dLRBTf5tBTSRVUNA=="], - - "vite-example/typescript": ["typescript@7.0.2", "", { "optionalDependencies": { "@typescript/typescript-aix-ppc64": "7.0.2", "@typescript/typescript-darwin-arm64": "7.0.2", "@typescript/typescript-darwin-x64": "7.0.2", "@typescript/typescript-freebsd-arm64": "7.0.2", "@typescript/typescript-freebsd-x64": "7.0.2", "@typescript/typescript-linux-arm": "7.0.2", "@typescript/typescript-linux-arm64": "7.0.2", "@typescript/typescript-linux-loong64": "7.0.2", "@typescript/typescript-linux-mips64el": "7.0.2", "@typescript/typescript-linux-ppc64": "7.0.2", "@typescript/typescript-linux-riscv64": "7.0.2", "@typescript/typescript-linux-s390x": "7.0.2", "@typescript/typescript-linux-x64": "7.0.2", "@typescript/typescript-netbsd-arm64": "7.0.2", "@typescript/typescript-netbsd-x64": "7.0.2", "@typescript/typescript-openbsd-arm64": "7.0.2", "@typescript/typescript-openbsd-x64": "7.0.2", "@typescript/typescript-sunos-x64": "7.0.2", "@typescript/typescript-win32-arm64": "7.0.2", "@typescript/typescript-win32-x64": "7.0.2" }, "bin": { "tsc": "bin/tsc" } }, "sha512-8FYau96o3NKOhbjKi/qNvG/W5jhzxkbdm5sj9AbZ/5T5sWqn3hJgLfGx27sRKZWTvyzCP8dLRBTf5tBTSRVUNA=="], - - "vite-lib-example/typescript": ["typescript@7.0.2", "", { "optionalDependencies": { "@typescript/typescript-aix-ppc64": "7.0.2", "@typescript/typescript-darwin-arm64": "7.0.2", "@typescript/typescript-darwin-x64": "7.0.2", "@typescript/typescript-freebsd-arm64": "7.0.2", "@typescript/typescript-freebsd-x64": "7.0.2", "@typescript/typescript-linux-arm": "7.0.2", "@typescript/typescript-linux-arm64": "7.0.2", "@typescript/typescript-linux-loong64": "7.0.2", "@typescript/typescript-linux-mips64el": "7.0.2", "@typescript/typescript-linux-ppc64": "7.0.2", "@typescript/typescript-linux-riscv64": "7.0.2", "@typescript/typescript-linux-s390x": "7.0.2", "@typescript/typescript-linux-x64": "7.0.2", "@typescript/typescript-netbsd-arm64": "7.0.2", "@typescript/typescript-netbsd-x64": "7.0.2", "@typescript/typescript-openbsd-arm64": "7.0.2", "@typescript/typescript-openbsd-x64": "7.0.2", "@typescript/typescript-sunos-x64": "7.0.2", "@typescript/typescript-win32-arm64": "7.0.2", "@typescript/typescript-win32-x64": "7.0.2" }, "bin": { "tsc": "bin/tsc" } }, "sha512-8FYau96o3NKOhbjKi/qNvG/W5jhzxkbdm5sj9AbZ/5T5sWqn3hJgLfGx27sRKZWTvyzCP8dLRBTf5tBTSRVUNA=="], - "vite-node/cac": ["cac@7.0.0", "", {}, "sha512-tixWYgm5ZoOD+3g6UTea91eow5z6AAHaho3g0V9CNSNb45gM8SmflpAc+GRd1InC4AqN/07Unrgp56Y94N9hJQ=="], "vite-plugin-dynamic-import/es-module-lexer": ["es-module-lexer@1.7.0", "", {}, "sha512-jEQoCwk8hyb2AZziIOLhDqpm5+2ww5uIE6lkO/6jcOCusfk6LhMHpXXfBLXTZ7Ydyt0j4VoUQv6uGNYbdW+kBA=="], - "webpack/browserslist": ["browserslist@4.28.8", "", { "dependencies": { "baseline-browser-mapping": "^2.11.12", "caniuse-lite": "^1.0.30001809", "electron-to-chromium": "^1.5.402", "node-releases": "^2.0.53", "update-browserslist-db": "^1.3.0" }, "bin": { "browserslist": "cli.js" } }, "sha512-V2NpofLblG64mfOtSgDhOJESZEGogzDMBv/q+W6oc4LXWP/q75eOXoOaaOu1EOadB9U4Bwx/e0yzbvwKH8zalA=="], - - "webpack/eslint-scope": ["eslint-scope@5.1.1", "", { "dependencies": { "esrecurse": "^4.3.0", "estraverse": "^4.1.1" } }, "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw=="], + "webpack/browserslist": ["browserslist@4.28.1", "", { "dependencies": { "baseline-browser-mapping": "^2.9.0", "caniuse-lite": "^1.0.30001759", "electron-to-chromium": "^1.5.263", "node-releases": "^2.0.27", "update-browserslist-db": "^1.2.0" }, "bin": { "browserslist": "cli.js" } }, "sha512-ZC5Bd0LgJXgwGqUknZY/vkUQ04r8NXnJZ3yYi4vDmSiZmC/pdSN0NbNRPxZpbtO4uAfDUAFffO8IZoM3Gj8IkA=="], "wrap-ansi/ansi-styles": ["ansi-styles@4.3.0", "", { "dependencies": { "color-convert": "^2.0.1" } }, "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg=="], @@ -3874,7 +3821,7 @@ "@babel/helper-define-polyfill-provider/@babel/core/semver": ["semver@6.3.1", "", { "bin": { "semver": "bin/semver.js" } }, "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA=="], - "@babel/helper-define-polyfill-provider/@babel/helper-compilation-targets/browserslist": ["browserslist@4.28.8", "", { "dependencies": { "baseline-browser-mapping": "^2.11.12", "caniuse-lite": "^1.0.30001809", "electron-to-chromium": "^1.5.402", "node-releases": "^2.0.53", "update-browserslist-db": "^1.3.0" }, "bin": { "browserslist": "cli.js" } }, "sha512-V2NpofLblG64mfOtSgDhOJESZEGogzDMBv/q+W6oc4LXWP/q75eOXoOaaOu1EOadB9U4Bwx/e0yzbvwKH8zalA=="], + "@babel/helper-define-polyfill-provider/@babel/helper-compilation-targets/browserslist": ["browserslist@4.28.1", "", { "dependencies": { "baseline-browser-mapping": "^2.9.0", "caniuse-lite": "^1.0.30001759", "electron-to-chromium": "^1.5.263", "node-releases": "^2.0.27", "update-browserslist-db": "^1.2.0" }, "bin": { "browserslist": "cli.js" } }, "sha512-ZC5Bd0LgJXgwGqUknZY/vkUQ04r8NXnJZ3yYi4vDmSiZmC/pdSN0NbNRPxZpbtO4uAfDUAFffO8IZoM3Gj8IkA=="], "@babel/helper-define-polyfill-provider/@babel/helper-compilation-targets/lru-cache": ["lru-cache@5.1.1", "", { "dependencies": { "yallist": "^3.0.2" } }, "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w=="], @@ -4310,7 +4257,7 @@ "@babel/plugin-transform-classes/@babel/core/semver": ["semver@6.3.1", "", { "bin": { "semver": "bin/semver.js" } }, "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA=="], - "@babel/plugin-transform-classes/@babel/helper-compilation-targets/browserslist": ["browserslist@4.28.8", "", { "dependencies": { "baseline-browser-mapping": "^2.11.12", "caniuse-lite": "^1.0.30001809", "electron-to-chromium": "^1.5.402", "node-releases": "^2.0.53", "update-browserslist-db": "^1.3.0" }, "bin": { "browserslist": "cli.js" } }, "sha512-V2NpofLblG64mfOtSgDhOJESZEGogzDMBv/q+W6oc4LXWP/q75eOXoOaaOu1EOadB9U4Bwx/e0yzbvwKH8zalA=="], + "@babel/plugin-transform-classes/@babel/helper-compilation-targets/browserslist": ["browserslist@4.28.1", "", { "dependencies": { "baseline-browser-mapping": "^2.9.0", "caniuse-lite": "^1.0.30001759", "electron-to-chromium": "^1.5.263", "node-releases": "^2.0.27", "update-browserslist-db": "^1.2.0" }, "bin": { "browserslist": "cli.js" } }, "sha512-ZC5Bd0LgJXgwGqUknZY/vkUQ04r8NXnJZ3yYi4vDmSiZmC/pdSN0NbNRPxZpbtO4uAfDUAFffO8IZoM3Gj8IkA=="], "@babel/plugin-transform-classes/@babel/helper-compilation-targets/lru-cache": ["lru-cache@5.1.1", "", { "dependencies": { "yallist": "^3.0.2" } }, "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w=="], @@ -4506,7 +4453,7 @@ "@babel/plugin-transform-function-name/@babel/core/semver": ["semver@6.3.1", "", { "bin": { "semver": "bin/semver.js" } }, "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA=="], - "@babel/plugin-transform-function-name/@babel/helper-compilation-targets/browserslist": ["browserslist@4.28.8", "", { "dependencies": { "baseline-browser-mapping": "^2.11.12", "caniuse-lite": "^1.0.30001809", "electron-to-chromium": "^1.5.402", "node-releases": "^2.0.53", "update-browserslist-db": "^1.3.0" }, "bin": { "browserslist": "cli.js" } }, "sha512-V2NpofLblG64mfOtSgDhOJESZEGogzDMBv/q+W6oc4LXWP/q75eOXoOaaOu1EOadB9U4Bwx/e0yzbvwKH8zalA=="], + "@babel/plugin-transform-function-name/@babel/helper-compilation-targets/browserslist": ["browserslist@4.28.1", "", { "dependencies": { "baseline-browser-mapping": "^2.9.0", "caniuse-lite": "^1.0.30001759", "electron-to-chromium": "^1.5.263", "node-releases": "^2.0.27", "update-browserslist-db": "^1.2.0" }, "bin": { "browserslist": "cli.js" } }, "sha512-ZC5Bd0LgJXgwGqUknZY/vkUQ04r8NXnJZ3yYi4vDmSiZmC/pdSN0NbNRPxZpbtO4uAfDUAFffO8IZoM3Gj8IkA=="], "@babel/plugin-transform-function-name/@babel/helper-compilation-targets/lru-cache": ["lru-cache@5.1.1", "", { "dependencies": { "yallist": "^3.0.2" } }, "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w=="], @@ -4734,7 +4681,7 @@ "@babel/plugin-transform-object-rest-spread/@babel/core/semver": ["semver@6.3.1", "", { "bin": { "semver": "bin/semver.js" } }, "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA=="], - "@babel/plugin-transform-object-rest-spread/@babel/helper-compilation-targets/browserslist": ["browserslist@4.28.8", "", { "dependencies": { "baseline-browser-mapping": "^2.11.12", "caniuse-lite": "^1.0.30001809", "electron-to-chromium": "^1.5.402", "node-releases": "^2.0.53", "update-browserslist-db": "^1.3.0" }, "bin": { "browserslist": "cli.js" } }, "sha512-V2NpofLblG64mfOtSgDhOJESZEGogzDMBv/q+W6oc4LXWP/q75eOXoOaaOu1EOadB9U4Bwx/e0yzbvwKH8zalA=="], + "@babel/plugin-transform-object-rest-spread/@babel/helper-compilation-targets/browserslist": ["browserslist@4.28.1", "", { "dependencies": { "baseline-browser-mapping": "^2.9.0", "caniuse-lite": "^1.0.30001759", "electron-to-chromium": "^1.5.263", "node-releases": "^2.0.27", "update-browserslist-db": "^1.2.0" }, "bin": { "browserslist": "cli.js" } }, "sha512-ZC5Bd0LgJXgwGqUknZY/vkUQ04r8NXnJZ3yYi4vDmSiZmC/pdSN0NbNRPxZpbtO4uAfDUAFffO8IZoM3Gj8IkA=="], "@babel/plugin-transform-object-rest-spread/@babel/helper-compilation-targets/lru-cache": ["lru-cache@5.1.1", "", { "dependencies": { "yallist": "^3.0.2" } }, "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w=="], @@ -5146,7 +5093,7 @@ "@babel/preset-env/@babel/core/@babel/traverse": ["@babel/traverse@7.29.8", "", { "dependencies": { "@babel/code-frame": "^7.29.7", "@babel/generator": "^7.29.8", "@babel/helper-globals": "^7.29.7", "@babel/parser": "^7.29.8", "@babel/template": "^7.29.7", "@babel/types": "^7.29.8", "debug": "^4.3.1" } }, "sha512-I5z7H3bf/41ktsNVLtpN0wAa336HkqIHQ5BuPLEhTkt1jVSyZpeNKIzTgEWmlxjdg81R0IgUCcaE+Ok3NvrfZg=="], - "@babel/preset-env/@babel/helper-compilation-targets/browserslist": ["browserslist@4.28.8", "", { "dependencies": { "baseline-browser-mapping": "^2.11.12", "caniuse-lite": "^1.0.30001809", "electron-to-chromium": "^1.5.402", "node-releases": "^2.0.53", "update-browserslist-db": "^1.3.0" }, "bin": { "browserslist": "cli.js" } }, "sha512-V2NpofLblG64mfOtSgDhOJESZEGogzDMBv/q+W6oc4LXWP/q75eOXoOaaOu1EOadB9U4Bwx/e0yzbvwKH8zalA=="], + "@babel/preset-env/@babel/helper-compilation-targets/browserslist": ["browserslist@4.28.1", "", { "dependencies": { "baseline-browser-mapping": "^2.9.0", "caniuse-lite": "^1.0.30001759", "electron-to-chromium": "^1.5.263", "node-releases": "^2.0.27", "update-browserslist-db": "^1.2.0" }, "bin": { "browserslist": "cli.js" } }, "sha512-ZC5Bd0LgJXgwGqUknZY/vkUQ04r8NXnJZ3yYi4vDmSiZmC/pdSN0NbNRPxZpbtO4uAfDUAFffO8IZoM3Gj8IkA=="], "@babel/preset-env/@babel/helper-compilation-targets/lru-cache": ["lru-cache@5.1.1", "", { "dependencies": { "yallist": "^3.0.2" } }, "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w=="], @@ -5472,6 +5419,8 @@ "@tailwindcss/node/lightningcss/lightningcss-win32-x64-msvc": ["lightningcss-win32-x64-msvc@1.32.0", "", { "os": "win32", "cpu": "x64" }, "sha512-Amq9B/SoZYdDi1kFrojnoqPLxYhQ4Wo5XiL8EVJrVsB8ARoC1PWW6VGtT0WKCemjy8aC+louJnjS7U18x3b06Q=="], + "@tailwindcss/oxide-wasm32-wasi/@emnapi/core/@emnapi/wasi-threads": ["@emnapi/wasi-threads@1.2.3", "", { "dependencies": { "tslib": "^2.4.0" } }, "sha512-ELEBe8PsLvvJ6QMr0zLt8ffvOHW/dc1m3CEzNMg7aJUv3bMaoDtw2TXyDAwkYBuroxxuHEwhRTLJSe5sya547g=="], + "@testing-library/dom/@babel/code-frame/js-tokens": ["js-tokens@4.0.0", "", {}, "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ=="], "@vanilla-extract/babel-plugin-debug-ids/@babel/core/@babel/code-frame": ["@babel/code-frame@7.29.7", "", { "dependencies": { "@babel/helper-validator-identifier": "^7.29.7", "js-tokens": "^4.0.0", "picocolors": "^1.1.1" } }, "sha512-Aup7aUOfpbAUg2ROOJN6Iw5f9DMBlzu0mIkm/malLQFN/YQgO48wCj0Kxa3sEHJvPVFg7siR+qRInwXd2qhQKw=="], @@ -5630,6 +5579,8 @@ "schema-utils/ajv/json-schema-traverse": ["json-schema-traverse@1.0.0", "", {}, "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug=="], + "storybook/@testing-library/jest-dom/aria-query": ["aria-query@5.3.2", "", {}, "sha512-COROpnaoap1E2F000S62r6A60uHZnmlvomhfyT2DlTcrY1OrBKn2UhH7qn5wTC9zMvD0AY7csdPSNwKP+7WiQw=="], + "storybook/@testing-library/jest-dom/dom-accessibility-api": ["dom-accessibility-api@0.6.3", "", {}, "sha512-7ZgogeTnjuHbo+ct10G9Ffp0mif17idi0IyWNVA/wcwcm7NPOD/WEHVP3n7n3MhXqxoIYm8d6MuZohYWIZ4T3w=="], "table/ajv/json-schema-traverse": ["json-schema-traverse@1.0.0", "", {}, "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug=="], @@ -5646,13 +5597,11 @@ "vfile-reporter/string-width/strip-ansi": ["strip-ansi@7.2.0", "", { "dependencies": { "ansi-regex": "^6.2.2" } }, "sha512-yDPMNjp4WyfYBkHnjIRLfca1i6KMyGCtsVgoKe/z1+6vukgaENdgGBZt+ZmKPc4gavvEZ5OgHfHdrazhgNyG7w=="], - "webpack/eslint-scope/estraverse": ["estraverse@4.3.0", "", {}, "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw=="], - "yargs/find-up/locate-path": ["locate-path@5.0.0", "", { "dependencies": { "p-locate": "^4.1.0" } }, "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g=="], "@babel/helper-create-class-features-plugin/@babel/core/@babel/code-frame/js-tokens": ["js-tokens@4.0.0", "", {}, "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ=="], - "@babel/helper-create-class-features-plugin/@babel/core/@babel/helper-compilation-targets/browserslist": ["browserslist@4.28.8", "", { "dependencies": { "baseline-browser-mapping": "^2.11.12", "caniuse-lite": "^1.0.30001809", "electron-to-chromium": "^1.5.402", "node-releases": "^2.0.53", "update-browserslist-db": "^1.3.0" }, "bin": { "browserslist": "cli.js" } }, "sha512-V2NpofLblG64mfOtSgDhOJESZEGogzDMBv/q+W6oc4LXWP/q75eOXoOaaOu1EOadB9U4Bwx/e0yzbvwKH8zalA=="], + "@babel/helper-create-class-features-plugin/@babel/core/@babel/helper-compilation-targets/browserslist": ["browserslist@4.28.1", "", { "dependencies": { "baseline-browser-mapping": "^2.9.0", "caniuse-lite": "^1.0.30001759", "electron-to-chromium": "^1.5.263", "node-releases": "^2.0.27", "update-browserslist-db": "^1.2.0" }, "bin": { "browserslist": "cli.js" } }, "sha512-ZC5Bd0LgJXgwGqUknZY/vkUQ04r8NXnJZ3yYi4vDmSiZmC/pdSN0NbNRPxZpbtO4uAfDUAFffO8IZoM3Gj8IkA=="], "@babel/helper-create-class-features-plugin/@babel/core/@babel/helper-compilation-targets/lru-cache": ["lru-cache@5.1.1", "", { "dependencies": { "yallist": "^3.0.2" } }, "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w=="], @@ -5660,7 +5609,7 @@ "@babel/helper-create-regexp-features-plugin/@babel/core/@babel/code-frame/js-tokens": ["js-tokens@4.0.0", "", {}, "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ=="], - "@babel/helper-create-regexp-features-plugin/@babel/core/@babel/helper-compilation-targets/browserslist": ["browserslist@4.28.8", "", { "dependencies": { "baseline-browser-mapping": "^2.11.12", "caniuse-lite": "^1.0.30001809", "electron-to-chromium": "^1.5.402", "node-releases": "^2.0.53", "update-browserslist-db": "^1.3.0" }, "bin": { "browserslist": "cli.js" } }, "sha512-V2NpofLblG64mfOtSgDhOJESZEGogzDMBv/q+W6oc4LXWP/q75eOXoOaaOu1EOadB9U4Bwx/e0yzbvwKH8zalA=="], + "@babel/helper-create-regexp-features-plugin/@babel/core/@babel/helper-compilation-targets/browserslist": ["browserslist@4.28.1", "", { "dependencies": { "baseline-browser-mapping": "^2.9.0", "caniuse-lite": "^1.0.30001759", "electron-to-chromium": "^1.5.263", "node-releases": "^2.0.27", "update-browserslist-db": "^1.2.0" }, "bin": { "browserslist": "cli.js" } }, "sha512-ZC5Bd0LgJXgwGqUknZY/vkUQ04r8NXnJZ3yYi4vDmSiZmC/pdSN0NbNRPxZpbtO4uAfDUAFffO8IZoM3Gj8IkA=="], "@babel/helper-create-regexp-features-plugin/@babel/core/@babel/helper-compilation-targets/lru-cache": ["lru-cache@5.1.1", "", { "dependencies": { "yallist": "^3.0.2" } }, "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w=="], @@ -5676,7 +5625,7 @@ "@babel/helper-module-transforms/@babel/core/@babel/code-frame/js-tokens": ["js-tokens@4.0.0", "", {}, "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ=="], - "@babel/helper-module-transforms/@babel/core/@babel/helper-compilation-targets/browserslist": ["browserslist@4.28.8", "", { "dependencies": { "baseline-browser-mapping": "^2.11.12", "caniuse-lite": "^1.0.30001809", "electron-to-chromium": "^1.5.402", "node-releases": "^2.0.53", "update-browserslist-db": "^1.3.0" }, "bin": { "browserslist": "cli.js" } }, "sha512-V2NpofLblG64mfOtSgDhOJESZEGogzDMBv/q+W6oc4LXWP/q75eOXoOaaOu1EOadB9U4Bwx/e0yzbvwKH8zalA=="], + "@babel/helper-module-transforms/@babel/core/@babel/helper-compilation-targets/browserslist": ["browserslist@4.28.1", "", { "dependencies": { "baseline-browser-mapping": "^2.9.0", "caniuse-lite": "^1.0.30001759", "electron-to-chromium": "^1.5.263", "node-releases": "^2.0.27", "update-browserslist-db": "^1.2.0" }, "bin": { "browserslist": "cli.js" } }, "sha512-ZC5Bd0LgJXgwGqUknZY/vkUQ04r8NXnJZ3yYi4vDmSiZmC/pdSN0NbNRPxZpbtO4uAfDUAFffO8IZoM3Gj8IkA=="], "@babel/helper-module-transforms/@babel/core/@babel/helper-compilation-targets/lru-cache": ["lru-cache@5.1.1", "", { "dependencies": { "yallist": "^3.0.2" } }, "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w=="], @@ -5684,7 +5633,7 @@ "@babel/helper-remap-async-to-generator/@babel/core/@babel/code-frame/js-tokens": ["js-tokens@4.0.0", "", {}, "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ=="], - "@babel/helper-remap-async-to-generator/@babel/core/@babel/helper-compilation-targets/browserslist": ["browserslist@4.28.8", "", { "dependencies": { "baseline-browser-mapping": "^2.11.12", "caniuse-lite": "^1.0.30001809", "electron-to-chromium": "^1.5.402", "node-releases": "^2.0.53", "update-browserslist-db": "^1.3.0" }, "bin": { "browserslist": "cli.js" } }, "sha512-V2NpofLblG64mfOtSgDhOJESZEGogzDMBv/q+W6oc4LXWP/q75eOXoOaaOu1EOadB9U4Bwx/e0yzbvwKH8zalA=="], + "@babel/helper-remap-async-to-generator/@babel/core/@babel/helper-compilation-targets/browserslist": ["browserslist@4.28.1", "", { "dependencies": { "baseline-browser-mapping": "^2.9.0", "caniuse-lite": "^1.0.30001759", "electron-to-chromium": "^1.5.263", "node-releases": "^2.0.27", "update-browserslist-db": "^1.2.0" }, "bin": { "browserslist": "cli.js" } }, "sha512-ZC5Bd0LgJXgwGqUknZY/vkUQ04r8NXnJZ3yYi4vDmSiZmC/pdSN0NbNRPxZpbtO4uAfDUAFffO8IZoM3Gj8IkA=="], "@babel/helper-remap-async-to-generator/@babel/core/@babel/helper-compilation-targets/lru-cache": ["lru-cache@5.1.1", "", { "dependencies": { "yallist": "^3.0.2" } }, "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w=="], @@ -5692,7 +5641,7 @@ "@babel/helper-replace-supers/@babel/core/@babel/code-frame/js-tokens": ["js-tokens@4.0.0", "", {}, "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ=="], - "@babel/helper-replace-supers/@babel/core/@babel/helper-compilation-targets/browserslist": ["browserslist@4.28.8", "", { "dependencies": { "baseline-browser-mapping": "^2.11.12", "caniuse-lite": "^1.0.30001809", "electron-to-chromium": "^1.5.402", "node-releases": "^2.0.53", "update-browserslist-db": "^1.3.0" }, "bin": { "browserslist": "cli.js" } }, "sha512-V2NpofLblG64mfOtSgDhOJESZEGogzDMBv/q+W6oc4LXWP/q75eOXoOaaOu1EOadB9U4Bwx/e0yzbvwKH8zalA=="], + "@babel/helper-replace-supers/@babel/core/@babel/helper-compilation-targets/browserslist": ["browserslist@4.28.1", "", { "dependencies": { "baseline-browser-mapping": "^2.9.0", "caniuse-lite": "^1.0.30001759", "electron-to-chromium": "^1.5.263", "node-releases": "^2.0.27", "update-browserslist-db": "^1.2.0" }, "bin": { "browserslist": "cli.js" } }, "sha512-ZC5Bd0LgJXgwGqUknZY/vkUQ04r8NXnJZ3yYi4vDmSiZmC/pdSN0NbNRPxZpbtO4uAfDUAFffO8IZoM3Gj8IkA=="], "@babel/helper-replace-supers/@babel/core/@babel/helper-compilation-targets/lru-cache": ["lru-cache@5.1.1", "", { "dependencies": { "yallist": "^3.0.2" } }, "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w=="], @@ -5706,7 +5655,7 @@ "@babel/plugin-bugfix-firefox-class-in-computed-class-key/@babel/core/@babel/code-frame/js-tokens": ["js-tokens@4.0.0", "", {}, "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ=="], - "@babel/plugin-bugfix-firefox-class-in-computed-class-key/@babel/core/@babel/helper-compilation-targets/browserslist": ["browserslist@4.28.8", "", { "dependencies": { "baseline-browser-mapping": "^2.11.12", "caniuse-lite": "^1.0.30001809", "electron-to-chromium": "^1.5.402", "node-releases": "^2.0.53", "update-browserslist-db": "^1.3.0" }, "bin": { "browserslist": "cli.js" } }, "sha512-V2NpofLblG64mfOtSgDhOJESZEGogzDMBv/q+W6oc4LXWP/q75eOXoOaaOu1EOadB9U4Bwx/e0yzbvwKH8zalA=="], + "@babel/plugin-bugfix-firefox-class-in-computed-class-key/@babel/core/@babel/helper-compilation-targets/browserslist": ["browserslist@4.28.1", "", { "dependencies": { "baseline-browser-mapping": "^2.9.0", "caniuse-lite": "^1.0.30001759", "electron-to-chromium": "^1.5.263", "node-releases": "^2.0.27", "update-browserslist-db": "^1.2.0" }, "bin": { "browserslist": "cli.js" } }, "sha512-ZC5Bd0LgJXgwGqUknZY/vkUQ04r8NXnJZ3yYi4vDmSiZmC/pdSN0NbNRPxZpbtO4uAfDUAFffO8IZoM3Gj8IkA=="], "@babel/plugin-bugfix-firefox-class-in-computed-class-key/@babel/core/@babel/helper-compilation-targets/lru-cache": ["lru-cache@5.1.1", "", { "dependencies": { "yallist": "^3.0.2" } }, "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w=="], @@ -5714,7 +5663,7 @@ "@babel/plugin-bugfix-safari-class-field-initializer-scope/@babel/core/@babel/code-frame/js-tokens": ["js-tokens@4.0.0", "", {}, "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ=="], - "@babel/plugin-bugfix-safari-class-field-initializer-scope/@babel/core/@babel/helper-compilation-targets/browserslist": ["browserslist@4.28.8", "", { "dependencies": { "baseline-browser-mapping": "^2.11.12", "caniuse-lite": "^1.0.30001809", "electron-to-chromium": "^1.5.402", "node-releases": "^2.0.53", "update-browserslist-db": "^1.3.0" }, "bin": { "browserslist": "cli.js" } }, "sha512-V2NpofLblG64mfOtSgDhOJESZEGogzDMBv/q+W6oc4LXWP/q75eOXoOaaOu1EOadB9U4Bwx/e0yzbvwKH8zalA=="], + "@babel/plugin-bugfix-safari-class-field-initializer-scope/@babel/core/@babel/helper-compilation-targets/browserslist": ["browserslist@4.28.1", "", { "dependencies": { "baseline-browser-mapping": "^2.9.0", "caniuse-lite": "^1.0.30001759", "electron-to-chromium": "^1.5.263", "node-releases": "^2.0.27", "update-browserslist-db": "^1.2.0" }, "bin": { "browserslist": "cli.js" } }, "sha512-ZC5Bd0LgJXgwGqUknZY/vkUQ04r8NXnJZ3yYi4vDmSiZmC/pdSN0NbNRPxZpbtO4uAfDUAFffO8IZoM3Gj8IkA=="], "@babel/plugin-bugfix-safari-class-field-initializer-scope/@babel/core/@babel/helper-compilation-targets/lru-cache": ["lru-cache@5.1.1", "", { "dependencies": { "yallist": "^3.0.2" } }, "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w=="], @@ -5722,7 +5671,7 @@ "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/@babel/core/@babel/code-frame/js-tokens": ["js-tokens@4.0.0", "", {}, "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ=="], - "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/@babel/core/@babel/helper-compilation-targets/browserslist": ["browserslist@4.28.8", "", { "dependencies": { "baseline-browser-mapping": "^2.11.12", "caniuse-lite": "^1.0.30001809", "electron-to-chromium": "^1.5.402", "node-releases": "^2.0.53", "update-browserslist-db": "^1.3.0" }, "bin": { "browserslist": "cli.js" } }, "sha512-V2NpofLblG64mfOtSgDhOJESZEGogzDMBv/q+W6oc4LXWP/q75eOXoOaaOu1EOadB9U4Bwx/e0yzbvwKH8zalA=="], + "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/@babel/core/@babel/helper-compilation-targets/browserslist": ["browserslist@4.28.1", "", { "dependencies": { "baseline-browser-mapping": "^2.9.0", "caniuse-lite": "^1.0.30001759", "electron-to-chromium": "^1.5.263", "node-releases": "^2.0.27", "update-browserslist-db": "^1.2.0" }, "bin": { "browserslist": "cli.js" } }, "sha512-ZC5Bd0LgJXgwGqUknZY/vkUQ04r8NXnJZ3yYi4vDmSiZmC/pdSN0NbNRPxZpbtO4uAfDUAFffO8IZoM3Gj8IkA=="], "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/@babel/core/@babel/helper-compilation-targets/lru-cache": ["lru-cache@5.1.1", "", { "dependencies": { "yallist": "^3.0.2" } }, "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w=="], @@ -5730,7 +5679,7 @@ "@babel/plugin-bugfix-safari-rest-destructuring-rhs-array/@babel/core/@babel/code-frame/js-tokens": ["js-tokens@4.0.0", "", {}, "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ=="], - "@babel/plugin-bugfix-safari-rest-destructuring-rhs-array/@babel/core/@babel/helper-compilation-targets/browserslist": ["browserslist@4.28.8", "", { "dependencies": { "baseline-browser-mapping": "^2.11.12", "caniuse-lite": "^1.0.30001809", "electron-to-chromium": "^1.5.402", "node-releases": "^2.0.53", "update-browserslist-db": "^1.3.0" }, "bin": { "browserslist": "cli.js" } }, "sha512-V2NpofLblG64mfOtSgDhOJESZEGogzDMBv/q+W6oc4LXWP/q75eOXoOaaOu1EOadB9U4Bwx/e0yzbvwKH8zalA=="], + "@babel/plugin-bugfix-safari-rest-destructuring-rhs-array/@babel/core/@babel/helper-compilation-targets/browserslist": ["browserslist@4.28.1", "", { "dependencies": { "baseline-browser-mapping": "^2.9.0", "caniuse-lite": "^1.0.30001759", "electron-to-chromium": "^1.5.263", "node-releases": "^2.0.27", "update-browserslist-db": "^1.2.0" }, "bin": { "browserslist": "cli.js" } }, "sha512-ZC5Bd0LgJXgwGqUknZY/vkUQ04r8NXnJZ3yYi4vDmSiZmC/pdSN0NbNRPxZpbtO4uAfDUAFffO8IZoM3Gj8IkA=="], "@babel/plugin-bugfix-safari-rest-destructuring-rhs-array/@babel/core/@babel/helper-compilation-targets/lru-cache": ["lru-cache@5.1.1", "", { "dependencies": { "yallist": "^3.0.2" } }, "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w=="], @@ -5738,7 +5687,7 @@ "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/@babel/core/@babel/code-frame/js-tokens": ["js-tokens@4.0.0", "", {}, "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ=="], - "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/@babel/core/@babel/helper-compilation-targets/browserslist": ["browserslist@4.28.8", "", { "dependencies": { "baseline-browser-mapping": "^2.11.12", "caniuse-lite": "^1.0.30001809", "electron-to-chromium": "^1.5.402", "node-releases": "^2.0.53", "update-browserslist-db": "^1.3.0" }, "bin": { "browserslist": "cli.js" } }, "sha512-V2NpofLblG64mfOtSgDhOJESZEGogzDMBv/q+W6oc4LXWP/q75eOXoOaaOu1EOadB9U4Bwx/e0yzbvwKH8zalA=="], + "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/@babel/core/@babel/helper-compilation-targets/browserslist": ["browserslist@4.28.1", "", { "dependencies": { "baseline-browser-mapping": "^2.9.0", "caniuse-lite": "^1.0.30001759", "electron-to-chromium": "^1.5.263", "node-releases": "^2.0.27", "update-browserslist-db": "^1.2.0" }, "bin": { "browserslist": "cli.js" } }, "sha512-ZC5Bd0LgJXgwGqUknZY/vkUQ04r8NXnJZ3yYi4vDmSiZmC/pdSN0NbNRPxZpbtO4uAfDUAFffO8IZoM3Gj8IkA=="], "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/@babel/core/@babel/helper-compilation-targets/lru-cache": ["lru-cache@5.1.1", "", { "dependencies": { "yallist": "^3.0.2" } }, "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w=="], @@ -5746,7 +5695,7 @@ "@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly/@babel/core/@babel/code-frame/js-tokens": ["js-tokens@4.0.0", "", {}, "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ=="], - "@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly/@babel/core/@babel/helper-compilation-targets/browserslist": ["browserslist@4.28.8", "", { "dependencies": { "baseline-browser-mapping": "^2.11.12", "caniuse-lite": "^1.0.30001809", "electron-to-chromium": "^1.5.402", "node-releases": "^2.0.53", "update-browserslist-db": "^1.3.0" }, "bin": { "browserslist": "cli.js" } }, "sha512-V2NpofLblG64mfOtSgDhOJESZEGogzDMBv/q+W6oc4LXWP/q75eOXoOaaOu1EOadB9U4Bwx/e0yzbvwKH8zalA=="], + "@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly/@babel/core/@babel/helper-compilation-targets/browserslist": ["browserslist@4.28.1", "", { "dependencies": { "baseline-browser-mapping": "^2.9.0", "caniuse-lite": "^1.0.30001759", "electron-to-chromium": "^1.5.263", "node-releases": "^2.0.27", "update-browserslist-db": "^1.2.0" }, "bin": { "browserslist": "cli.js" } }, "sha512-ZC5Bd0LgJXgwGqUknZY/vkUQ04r8NXnJZ3yYi4vDmSiZmC/pdSN0NbNRPxZpbtO4uAfDUAFffO8IZoM3Gj8IkA=="], "@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly/@babel/core/@babel/helper-compilation-targets/lru-cache": ["lru-cache@5.1.1", "", { "dependencies": { "yallist": "^3.0.2" } }, "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w=="], @@ -5754,7 +5703,7 @@ "@babel/plugin-proposal-private-property-in-object/@babel/core/@babel/code-frame/js-tokens": ["js-tokens@4.0.0", "", {}, "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ=="], - "@babel/plugin-proposal-private-property-in-object/@babel/core/@babel/helper-compilation-targets/browserslist": ["browserslist@4.28.8", "", { "dependencies": { "baseline-browser-mapping": "^2.11.12", "caniuse-lite": "^1.0.30001809", "electron-to-chromium": "^1.5.402", "node-releases": "^2.0.53", "update-browserslist-db": "^1.3.0" }, "bin": { "browserslist": "cli.js" } }, "sha512-V2NpofLblG64mfOtSgDhOJESZEGogzDMBv/q+W6oc4LXWP/q75eOXoOaaOu1EOadB9U4Bwx/e0yzbvwKH8zalA=="], + "@babel/plugin-proposal-private-property-in-object/@babel/core/@babel/helper-compilation-targets/browserslist": ["browserslist@4.28.1", "", { "dependencies": { "baseline-browser-mapping": "^2.9.0", "caniuse-lite": "^1.0.30001759", "electron-to-chromium": "^1.5.263", "node-releases": "^2.0.27", "update-browserslist-db": "^1.2.0" }, "bin": { "browserslist": "cli.js" } }, "sha512-ZC5Bd0LgJXgwGqUknZY/vkUQ04r8NXnJZ3yYi4vDmSiZmC/pdSN0NbNRPxZpbtO4uAfDUAFffO8IZoM3Gj8IkA=="], "@babel/plugin-proposal-private-property-in-object/@babel/core/@babel/helper-compilation-targets/lru-cache": ["lru-cache@5.1.1", "", { "dependencies": { "yallist": "^3.0.2" } }, "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w=="], @@ -5762,7 +5711,7 @@ "@babel/plugin-syntax-import-assertions/@babel/core/@babel/code-frame/js-tokens": ["js-tokens@4.0.0", "", {}, "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ=="], - "@babel/plugin-syntax-import-assertions/@babel/core/@babel/helper-compilation-targets/browserslist": ["browserslist@4.28.8", "", { "dependencies": { "baseline-browser-mapping": "^2.11.12", "caniuse-lite": "^1.0.30001809", "electron-to-chromium": "^1.5.402", "node-releases": "^2.0.53", "update-browserslist-db": "^1.3.0" }, "bin": { "browserslist": "cli.js" } }, "sha512-V2NpofLblG64mfOtSgDhOJESZEGogzDMBv/q+W6oc4LXWP/q75eOXoOaaOu1EOadB9U4Bwx/e0yzbvwKH8zalA=="], + "@babel/plugin-syntax-import-assertions/@babel/core/@babel/helper-compilation-targets/browserslist": ["browserslist@4.28.1", "", { "dependencies": { "baseline-browser-mapping": "^2.9.0", "caniuse-lite": "^1.0.30001759", "electron-to-chromium": "^1.5.263", "node-releases": "^2.0.27", "update-browserslist-db": "^1.2.0" }, "bin": { "browserslist": "cli.js" } }, "sha512-ZC5Bd0LgJXgwGqUknZY/vkUQ04r8NXnJZ3yYi4vDmSiZmC/pdSN0NbNRPxZpbtO4uAfDUAFffO8IZoM3Gj8IkA=="], "@babel/plugin-syntax-import-assertions/@babel/core/@babel/helper-compilation-targets/lru-cache": ["lru-cache@5.1.1", "", { "dependencies": { "yallist": "^3.0.2" } }, "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w=="], @@ -5770,7 +5719,7 @@ "@babel/plugin-syntax-import-attributes/@babel/core/@babel/code-frame/js-tokens": ["js-tokens@4.0.0", "", {}, "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ=="], - "@babel/plugin-syntax-import-attributes/@babel/core/@babel/helper-compilation-targets/browserslist": ["browserslist@4.28.8", "", { "dependencies": { "baseline-browser-mapping": "^2.11.12", "caniuse-lite": "^1.0.30001809", "electron-to-chromium": "^1.5.402", "node-releases": "^2.0.53", "update-browserslist-db": "^1.3.0" }, "bin": { "browserslist": "cli.js" } }, "sha512-V2NpofLblG64mfOtSgDhOJESZEGogzDMBv/q+W6oc4LXWP/q75eOXoOaaOu1EOadB9U4Bwx/e0yzbvwKH8zalA=="], + "@babel/plugin-syntax-import-attributes/@babel/core/@babel/helper-compilation-targets/browserslist": ["browserslist@4.28.1", "", { "dependencies": { "baseline-browser-mapping": "^2.9.0", "caniuse-lite": "^1.0.30001759", "electron-to-chromium": "^1.5.263", "node-releases": "^2.0.27", "update-browserslist-db": "^1.2.0" }, "bin": { "browserslist": "cli.js" } }, "sha512-ZC5Bd0LgJXgwGqUknZY/vkUQ04r8NXnJZ3yYi4vDmSiZmC/pdSN0NbNRPxZpbtO4uAfDUAFffO8IZoM3Gj8IkA=="], "@babel/plugin-syntax-import-attributes/@babel/core/@babel/helper-compilation-targets/lru-cache": ["lru-cache@5.1.1", "", { "dependencies": { "yallist": "^3.0.2" } }, "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w=="], @@ -5778,7 +5727,7 @@ "@babel/plugin-syntax-unicode-sets-regex/@babel/core/@babel/code-frame/js-tokens": ["js-tokens@4.0.0", "", {}, "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ=="], - "@babel/plugin-syntax-unicode-sets-regex/@babel/core/@babel/helper-compilation-targets/browserslist": ["browserslist@4.28.8", "", { "dependencies": { "baseline-browser-mapping": "^2.11.12", "caniuse-lite": "^1.0.30001809", "electron-to-chromium": "^1.5.402", "node-releases": "^2.0.53", "update-browserslist-db": "^1.3.0" }, "bin": { "browserslist": "cli.js" } }, "sha512-V2NpofLblG64mfOtSgDhOJESZEGogzDMBv/q+W6oc4LXWP/q75eOXoOaaOu1EOadB9U4Bwx/e0yzbvwKH8zalA=="], + "@babel/plugin-syntax-unicode-sets-regex/@babel/core/@babel/helper-compilation-targets/browserslist": ["browserslist@4.28.1", "", { "dependencies": { "baseline-browser-mapping": "^2.9.0", "caniuse-lite": "^1.0.30001759", "electron-to-chromium": "^1.5.263", "node-releases": "^2.0.27", "update-browserslist-db": "^1.2.0" }, "bin": { "browserslist": "cli.js" } }, "sha512-ZC5Bd0LgJXgwGqUknZY/vkUQ04r8NXnJZ3yYi4vDmSiZmC/pdSN0NbNRPxZpbtO4uAfDUAFffO8IZoM3Gj8IkA=="], "@babel/plugin-syntax-unicode-sets-regex/@babel/core/@babel/helper-compilation-targets/lru-cache": ["lru-cache@5.1.1", "", { "dependencies": { "yallist": "^3.0.2" } }, "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w=="], @@ -5786,7 +5735,7 @@ "@babel/plugin-transform-arrow-functions/@babel/core/@babel/code-frame/js-tokens": ["js-tokens@4.0.0", "", {}, "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ=="], - "@babel/plugin-transform-arrow-functions/@babel/core/@babel/helper-compilation-targets/browserslist": ["browserslist@4.28.8", "", { "dependencies": { "baseline-browser-mapping": "^2.11.12", "caniuse-lite": "^1.0.30001809", "electron-to-chromium": "^1.5.402", "node-releases": "^2.0.53", "update-browserslist-db": "^1.3.0" }, "bin": { "browserslist": "cli.js" } }, "sha512-V2NpofLblG64mfOtSgDhOJESZEGogzDMBv/q+W6oc4LXWP/q75eOXoOaaOu1EOadB9U4Bwx/e0yzbvwKH8zalA=="], + "@babel/plugin-transform-arrow-functions/@babel/core/@babel/helper-compilation-targets/browserslist": ["browserslist@4.28.1", "", { "dependencies": { "baseline-browser-mapping": "^2.9.0", "caniuse-lite": "^1.0.30001759", "electron-to-chromium": "^1.5.263", "node-releases": "^2.0.27", "update-browserslist-db": "^1.2.0" }, "bin": { "browserslist": "cli.js" } }, "sha512-ZC5Bd0LgJXgwGqUknZY/vkUQ04r8NXnJZ3yYi4vDmSiZmC/pdSN0NbNRPxZpbtO4uAfDUAFffO8IZoM3Gj8IkA=="], "@babel/plugin-transform-arrow-functions/@babel/core/@babel/helper-compilation-targets/lru-cache": ["lru-cache@5.1.1", "", { "dependencies": { "yallist": "^3.0.2" } }, "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w=="], @@ -5794,7 +5743,7 @@ "@babel/plugin-transform-async-generator-functions/@babel/core/@babel/code-frame/js-tokens": ["js-tokens@4.0.0", "", {}, "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ=="], - "@babel/plugin-transform-async-generator-functions/@babel/core/@babel/helper-compilation-targets/browserslist": ["browserslist@4.28.8", "", { "dependencies": { "baseline-browser-mapping": "^2.11.12", "caniuse-lite": "^1.0.30001809", "electron-to-chromium": "^1.5.402", "node-releases": "^2.0.53", "update-browserslist-db": "^1.3.0" }, "bin": { "browserslist": "cli.js" } }, "sha512-V2NpofLblG64mfOtSgDhOJESZEGogzDMBv/q+W6oc4LXWP/q75eOXoOaaOu1EOadB9U4Bwx/e0yzbvwKH8zalA=="], + "@babel/plugin-transform-async-generator-functions/@babel/core/@babel/helper-compilation-targets/browserslist": ["browserslist@4.28.1", "", { "dependencies": { "baseline-browser-mapping": "^2.9.0", "caniuse-lite": "^1.0.30001759", "electron-to-chromium": "^1.5.263", "node-releases": "^2.0.27", "update-browserslist-db": "^1.2.0" }, "bin": { "browserslist": "cli.js" } }, "sha512-ZC5Bd0LgJXgwGqUknZY/vkUQ04r8NXnJZ3yYi4vDmSiZmC/pdSN0NbNRPxZpbtO4uAfDUAFffO8IZoM3Gj8IkA=="], "@babel/plugin-transform-async-generator-functions/@babel/core/@babel/helper-compilation-targets/lru-cache": ["lru-cache@5.1.1", "", { "dependencies": { "yallist": "^3.0.2" } }, "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w=="], @@ -5802,7 +5751,7 @@ "@babel/plugin-transform-async-to-generator/@babel/core/@babel/code-frame/js-tokens": ["js-tokens@4.0.0", "", {}, "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ=="], - "@babel/plugin-transform-async-to-generator/@babel/core/@babel/helper-compilation-targets/browserslist": ["browserslist@4.28.8", "", { "dependencies": { "baseline-browser-mapping": "^2.11.12", "caniuse-lite": "^1.0.30001809", "electron-to-chromium": "^1.5.402", "node-releases": "^2.0.53", "update-browserslist-db": "^1.3.0" }, "bin": { "browserslist": "cli.js" } }, "sha512-V2NpofLblG64mfOtSgDhOJESZEGogzDMBv/q+W6oc4LXWP/q75eOXoOaaOu1EOadB9U4Bwx/e0yzbvwKH8zalA=="], + "@babel/plugin-transform-async-to-generator/@babel/core/@babel/helper-compilation-targets/browserslist": ["browserslist@4.28.1", "", { "dependencies": { "baseline-browser-mapping": "^2.9.0", "caniuse-lite": "^1.0.30001759", "electron-to-chromium": "^1.5.263", "node-releases": "^2.0.27", "update-browserslist-db": "^1.2.0" }, "bin": { "browserslist": "cli.js" } }, "sha512-ZC5Bd0LgJXgwGqUknZY/vkUQ04r8NXnJZ3yYi4vDmSiZmC/pdSN0NbNRPxZpbtO4uAfDUAFffO8IZoM3Gj8IkA=="], "@babel/plugin-transform-async-to-generator/@babel/core/@babel/helper-compilation-targets/lru-cache": ["lru-cache@5.1.1", "", { "dependencies": { "yallist": "^3.0.2" } }, "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w=="], @@ -5810,7 +5759,7 @@ "@babel/plugin-transform-block-scoped-functions/@babel/core/@babel/code-frame/js-tokens": ["js-tokens@4.0.0", "", {}, "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ=="], - "@babel/plugin-transform-block-scoped-functions/@babel/core/@babel/helper-compilation-targets/browserslist": ["browserslist@4.28.8", "", { "dependencies": { "baseline-browser-mapping": "^2.11.12", "caniuse-lite": "^1.0.30001809", "electron-to-chromium": "^1.5.402", "node-releases": "^2.0.53", "update-browserslist-db": "^1.3.0" }, "bin": { "browserslist": "cli.js" } }, "sha512-V2NpofLblG64mfOtSgDhOJESZEGogzDMBv/q+W6oc4LXWP/q75eOXoOaaOu1EOadB9U4Bwx/e0yzbvwKH8zalA=="], + "@babel/plugin-transform-block-scoped-functions/@babel/core/@babel/helper-compilation-targets/browserslist": ["browserslist@4.28.1", "", { "dependencies": { "baseline-browser-mapping": "^2.9.0", "caniuse-lite": "^1.0.30001759", "electron-to-chromium": "^1.5.263", "node-releases": "^2.0.27", "update-browserslist-db": "^1.2.0" }, "bin": { "browserslist": "cli.js" } }, "sha512-ZC5Bd0LgJXgwGqUknZY/vkUQ04r8NXnJZ3yYi4vDmSiZmC/pdSN0NbNRPxZpbtO4uAfDUAFffO8IZoM3Gj8IkA=="], "@babel/plugin-transform-block-scoped-functions/@babel/core/@babel/helper-compilation-targets/lru-cache": ["lru-cache@5.1.1", "", { "dependencies": { "yallist": "^3.0.2" } }, "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w=="], @@ -5818,7 +5767,7 @@ "@babel/plugin-transform-block-scoping/@babel/core/@babel/code-frame/js-tokens": ["js-tokens@4.0.0", "", {}, "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ=="], - "@babel/plugin-transform-block-scoping/@babel/core/@babel/helper-compilation-targets/browserslist": ["browserslist@4.28.8", "", { "dependencies": { "baseline-browser-mapping": "^2.11.12", "caniuse-lite": "^1.0.30001809", "electron-to-chromium": "^1.5.402", "node-releases": "^2.0.53", "update-browserslist-db": "^1.3.0" }, "bin": { "browserslist": "cli.js" } }, "sha512-V2NpofLblG64mfOtSgDhOJESZEGogzDMBv/q+W6oc4LXWP/q75eOXoOaaOu1EOadB9U4Bwx/e0yzbvwKH8zalA=="], + "@babel/plugin-transform-block-scoping/@babel/core/@babel/helper-compilation-targets/browserslist": ["browserslist@4.28.1", "", { "dependencies": { "baseline-browser-mapping": "^2.9.0", "caniuse-lite": "^1.0.30001759", "electron-to-chromium": "^1.5.263", "node-releases": "^2.0.27", "update-browserslist-db": "^1.2.0" }, "bin": { "browserslist": "cli.js" } }, "sha512-ZC5Bd0LgJXgwGqUknZY/vkUQ04r8NXnJZ3yYi4vDmSiZmC/pdSN0NbNRPxZpbtO4uAfDUAFffO8IZoM3Gj8IkA=="], "@babel/plugin-transform-block-scoping/@babel/core/@babel/helper-compilation-targets/lru-cache": ["lru-cache@5.1.1", "", { "dependencies": { "yallist": "^3.0.2" } }, "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w=="], @@ -5826,7 +5775,7 @@ "@babel/plugin-transform-class-properties/@babel/core/@babel/code-frame/js-tokens": ["js-tokens@4.0.0", "", {}, "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ=="], - "@babel/plugin-transform-class-properties/@babel/core/@babel/helper-compilation-targets/browserslist": ["browserslist@4.28.8", "", { "dependencies": { "baseline-browser-mapping": "^2.11.12", "caniuse-lite": "^1.0.30001809", "electron-to-chromium": "^1.5.402", "node-releases": "^2.0.53", "update-browserslist-db": "^1.3.0" }, "bin": { "browserslist": "cli.js" } }, "sha512-V2NpofLblG64mfOtSgDhOJESZEGogzDMBv/q+W6oc4LXWP/q75eOXoOaaOu1EOadB9U4Bwx/e0yzbvwKH8zalA=="], + "@babel/plugin-transform-class-properties/@babel/core/@babel/helper-compilation-targets/browserslist": ["browserslist@4.28.1", "", { "dependencies": { "baseline-browser-mapping": "^2.9.0", "caniuse-lite": "^1.0.30001759", "electron-to-chromium": "^1.5.263", "node-releases": "^2.0.27", "update-browserslist-db": "^1.2.0" }, "bin": { "browserslist": "cli.js" } }, "sha512-ZC5Bd0LgJXgwGqUknZY/vkUQ04r8NXnJZ3yYi4vDmSiZmC/pdSN0NbNRPxZpbtO4uAfDUAFffO8IZoM3Gj8IkA=="], "@babel/plugin-transform-class-properties/@babel/core/@babel/helper-compilation-targets/lru-cache": ["lru-cache@5.1.1", "", { "dependencies": { "yallist": "^3.0.2" } }, "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w=="], @@ -5834,7 +5783,7 @@ "@babel/plugin-transform-class-static-block/@babel/core/@babel/code-frame/js-tokens": ["js-tokens@4.0.0", "", {}, "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ=="], - "@babel/plugin-transform-class-static-block/@babel/core/@babel/helper-compilation-targets/browserslist": ["browserslist@4.28.8", "", { "dependencies": { "baseline-browser-mapping": "^2.11.12", "caniuse-lite": "^1.0.30001809", "electron-to-chromium": "^1.5.402", "node-releases": "^2.0.53", "update-browserslist-db": "^1.3.0" }, "bin": { "browserslist": "cli.js" } }, "sha512-V2NpofLblG64mfOtSgDhOJESZEGogzDMBv/q+W6oc4LXWP/q75eOXoOaaOu1EOadB9U4Bwx/e0yzbvwKH8zalA=="], + "@babel/plugin-transform-class-static-block/@babel/core/@babel/helper-compilation-targets/browserslist": ["browserslist@4.28.1", "", { "dependencies": { "baseline-browser-mapping": "^2.9.0", "caniuse-lite": "^1.0.30001759", "electron-to-chromium": "^1.5.263", "node-releases": "^2.0.27", "update-browserslist-db": "^1.2.0" }, "bin": { "browserslist": "cli.js" } }, "sha512-ZC5Bd0LgJXgwGqUknZY/vkUQ04r8NXnJZ3yYi4vDmSiZmC/pdSN0NbNRPxZpbtO4uAfDUAFffO8IZoM3Gj8IkA=="], "@babel/plugin-transform-class-static-block/@babel/core/@babel/helper-compilation-targets/lru-cache": ["lru-cache@5.1.1", "", { "dependencies": { "yallist": "^3.0.2" } }, "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w=="], @@ -5846,7 +5795,7 @@ "@babel/plugin-transform-computed-properties/@babel/core/@babel/code-frame/js-tokens": ["js-tokens@4.0.0", "", {}, "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ=="], - "@babel/plugin-transform-computed-properties/@babel/core/@babel/helper-compilation-targets/browserslist": ["browserslist@4.28.8", "", { "dependencies": { "baseline-browser-mapping": "^2.11.12", "caniuse-lite": "^1.0.30001809", "electron-to-chromium": "^1.5.402", "node-releases": "^2.0.53", "update-browserslist-db": "^1.3.0" }, "bin": { "browserslist": "cli.js" } }, "sha512-V2NpofLblG64mfOtSgDhOJESZEGogzDMBv/q+W6oc4LXWP/q75eOXoOaaOu1EOadB9U4Bwx/e0yzbvwKH8zalA=="], + "@babel/plugin-transform-computed-properties/@babel/core/@babel/helper-compilation-targets/browserslist": ["browserslist@4.28.1", "", { "dependencies": { "baseline-browser-mapping": "^2.9.0", "caniuse-lite": "^1.0.30001759", "electron-to-chromium": "^1.5.263", "node-releases": "^2.0.27", "update-browserslist-db": "^1.2.0" }, "bin": { "browserslist": "cli.js" } }, "sha512-ZC5Bd0LgJXgwGqUknZY/vkUQ04r8NXnJZ3yYi4vDmSiZmC/pdSN0NbNRPxZpbtO4uAfDUAFffO8IZoM3Gj8IkA=="], "@babel/plugin-transform-computed-properties/@babel/core/@babel/helper-compilation-targets/lru-cache": ["lru-cache@5.1.1", "", { "dependencies": { "yallist": "^3.0.2" } }, "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w=="], @@ -5856,7 +5805,7 @@ "@babel/plugin-transform-destructuring/@babel/core/@babel/code-frame/js-tokens": ["js-tokens@4.0.0", "", {}, "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ=="], - "@babel/plugin-transform-destructuring/@babel/core/@babel/helper-compilation-targets/browserslist": ["browserslist@4.28.8", "", { "dependencies": { "baseline-browser-mapping": "^2.11.12", "caniuse-lite": "^1.0.30001809", "electron-to-chromium": "^1.5.402", "node-releases": "^2.0.53", "update-browserslist-db": "^1.3.0" }, "bin": { "browserslist": "cli.js" } }, "sha512-V2NpofLblG64mfOtSgDhOJESZEGogzDMBv/q+W6oc4LXWP/q75eOXoOaaOu1EOadB9U4Bwx/e0yzbvwKH8zalA=="], + "@babel/plugin-transform-destructuring/@babel/core/@babel/helper-compilation-targets/browserslist": ["browserslist@4.28.1", "", { "dependencies": { "baseline-browser-mapping": "^2.9.0", "caniuse-lite": "^1.0.30001759", "electron-to-chromium": "^1.5.263", "node-releases": "^2.0.27", "update-browserslist-db": "^1.2.0" }, "bin": { "browserslist": "cli.js" } }, "sha512-ZC5Bd0LgJXgwGqUknZY/vkUQ04r8NXnJZ3yYi4vDmSiZmC/pdSN0NbNRPxZpbtO4uAfDUAFffO8IZoM3Gj8IkA=="], "@babel/plugin-transform-destructuring/@babel/core/@babel/helper-compilation-targets/lru-cache": ["lru-cache@5.1.1", "", { "dependencies": { "yallist": "^3.0.2" } }, "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w=="], @@ -5864,7 +5813,7 @@ "@babel/plugin-transform-dotall-regex/@babel/core/@babel/code-frame/js-tokens": ["js-tokens@4.0.0", "", {}, "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ=="], - "@babel/plugin-transform-dotall-regex/@babel/core/@babel/helper-compilation-targets/browserslist": ["browserslist@4.28.8", "", { "dependencies": { "baseline-browser-mapping": "^2.11.12", "caniuse-lite": "^1.0.30001809", "electron-to-chromium": "^1.5.402", "node-releases": "^2.0.53", "update-browserslist-db": "^1.3.0" }, "bin": { "browserslist": "cli.js" } }, "sha512-V2NpofLblG64mfOtSgDhOJESZEGogzDMBv/q+W6oc4LXWP/q75eOXoOaaOu1EOadB9U4Bwx/e0yzbvwKH8zalA=="], + "@babel/plugin-transform-dotall-regex/@babel/core/@babel/helper-compilation-targets/browserslist": ["browserslist@4.28.1", "", { "dependencies": { "baseline-browser-mapping": "^2.9.0", "caniuse-lite": "^1.0.30001759", "electron-to-chromium": "^1.5.263", "node-releases": "^2.0.27", "update-browserslist-db": "^1.2.0" }, "bin": { "browserslist": "cli.js" } }, "sha512-ZC5Bd0LgJXgwGqUknZY/vkUQ04r8NXnJZ3yYi4vDmSiZmC/pdSN0NbNRPxZpbtO4uAfDUAFffO8IZoM3Gj8IkA=="], "@babel/plugin-transform-dotall-regex/@babel/core/@babel/helper-compilation-targets/lru-cache": ["lru-cache@5.1.1", "", { "dependencies": { "yallist": "^3.0.2" } }, "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w=="], @@ -5872,7 +5821,7 @@ "@babel/plugin-transform-duplicate-keys/@babel/core/@babel/code-frame/js-tokens": ["js-tokens@4.0.0", "", {}, "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ=="], - "@babel/plugin-transform-duplicate-keys/@babel/core/@babel/helper-compilation-targets/browserslist": ["browserslist@4.28.8", "", { "dependencies": { "baseline-browser-mapping": "^2.11.12", "caniuse-lite": "^1.0.30001809", "electron-to-chromium": "^1.5.402", "node-releases": "^2.0.53", "update-browserslist-db": "^1.3.0" }, "bin": { "browserslist": "cli.js" } }, "sha512-V2NpofLblG64mfOtSgDhOJESZEGogzDMBv/q+W6oc4LXWP/q75eOXoOaaOu1EOadB9U4Bwx/e0yzbvwKH8zalA=="], + "@babel/plugin-transform-duplicate-keys/@babel/core/@babel/helper-compilation-targets/browserslist": ["browserslist@4.28.1", "", { "dependencies": { "baseline-browser-mapping": "^2.9.0", "caniuse-lite": "^1.0.30001759", "electron-to-chromium": "^1.5.263", "node-releases": "^2.0.27", "update-browserslist-db": "^1.2.0" }, "bin": { "browserslist": "cli.js" } }, "sha512-ZC5Bd0LgJXgwGqUknZY/vkUQ04r8NXnJZ3yYi4vDmSiZmC/pdSN0NbNRPxZpbtO4uAfDUAFffO8IZoM3Gj8IkA=="], "@babel/plugin-transform-duplicate-keys/@babel/core/@babel/helper-compilation-targets/lru-cache": ["lru-cache@5.1.1", "", { "dependencies": { "yallist": "^3.0.2" } }, "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w=="], @@ -5880,7 +5829,7 @@ "@babel/plugin-transform-duplicate-named-capturing-groups-regex/@babel/core/@babel/code-frame/js-tokens": ["js-tokens@4.0.0", "", {}, "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ=="], - "@babel/plugin-transform-duplicate-named-capturing-groups-regex/@babel/core/@babel/helper-compilation-targets/browserslist": ["browserslist@4.28.8", "", { "dependencies": { "baseline-browser-mapping": "^2.11.12", "caniuse-lite": "^1.0.30001809", "electron-to-chromium": "^1.5.402", "node-releases": "^2.0.53", "update-browserslist-db": "^1.3.0" }, "bin": { "browserslist": "cli.js" } }, "sha512-V2NpofLblG64mfOtSgDhOJESZEGogzDMBv/q+W6oc4LXWP/q75eOXoOaaOu1EOadB9U4Bwx/e0yzbvwKH8zalA=="], + "@babel/plugin-transform-duplicate-named-capturing-groups-regex/@babel/core/@babel/helper-compilation-targets/browserslist": ["browserslist@4.28.1", "", { "dependencies": { "baseline-browser-mapping": "^2.9.0", "caniuse-lite": "^1.0.30001759", "electron-to-chromium": "^1.5.263", "node-releases": "^2.0.27", "update-browserslist-db": "^1.2.0" }, "bin": { "browserslist": "cli.js" } }, "sha512-ZC5Bd0LgJXgwGqUknZY/vkUQ04r8NXnJZ3yYi4vDmSiZmC/pdSN0NbNRPxZpbtO4uAfDUAFffO8IZoM3Gj8IkA=="], "@babel/plugin-transform-duplicate-named-capturing-groups-regex/@babel/core/@babel/helper-compilation-targets/lru-cache": ["lru-cache@5.1.1", "", { "dependencies": { "yallist": "^3.0.2" } }, "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w=="], @@ -5888,7 +5837,7 @@ "@babel/plugin-transform-dynamic-import/@babel/core/@babel/code-frame/js-tokens": ["js-tokens@4.0.0", "", {}, "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ=="], - "@babel/plugin-transform-dynamic-import/@babel/core/@babel/helper-compilation-targets/browserslist": ["browserslist@4.28.8", "", { "dependencies": { "baseline-browser-mapping": "^2.11.12", "caniuse-lite": "^1.0.30001809", "electron-to-chromium": "^1.5.402", "node-releases": "^2.0.53", "update-browserslist-db": "^1.3.0" }, "bin": { "browserslist": "cli.js" } }, "sha512-V2NpofLblG64mfOtSgDhOJESZEGogzDMBv/q+W6oc4LXWP/q75eOXoOaaOu1EOadB9U4Bwx/e0yzbvwKH8zalA=="], + "@babel/plugin-transform-dynamic-import/@babel/core/@babel/helper-compilation-targets/browserslist": ["browserslist@4.28.1", "", { "dependencies": { "baseline-browser-mapping": "^2.9.0", "caniuse-lite": "^1.0.30001759", "electron-to-chromium": "^1.5.263", "node-releases": "^2.0.27", "update-browserslist-db": "^1.2.0" }, "bin": { "browserslist": "cli.js" } }, "sha512-ZC5Bd0LgJXgwGqUknZY/vkUQ04r8NXnJZ3yYi4vDmSiZmC/pdSN0NbNRPxZpbtO4uAfDUAFffO8IZoM3Gj8IkA=="], "@babel/plugin-transform-dynamic-import/@babel/core/@babel/helper-compilation-targets/lru-cache": ["lru-cache@5.1.1", "", { "dependencies": { "yallist": "^3.0.2" } }, "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w=="], @@ -5896,7 +5845,7 @@ "@babel/plugin-transform-explicit-resource-management/@babel/core/@babel/code-frame/js-tokens": ["js-tokens@4.0.0", "", {}, "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ=="], - "@babel/plugin-transform-explicit-resource-management/@babel/core/@babel/helper-compilation-targets/browserslist": ["browserslist@4.28.8", "", { "dependencies": { "baseline-browser-mapping": "^2.11.12", "caniuse-lite": "^1.0.30001809", "electron-to-chromium": "^1.5.402", "node-releases": "^2.0.53", "update-browserslist-db": "^1.3.0" }, "bin": { "browserslist": "cli.js" } }, "sha512-V2NpofLblG64mfOtSgDhOJESZEGogzDMBv/q+W6oc4LXWP/q75eOXoOaaOu1EOadB9U4Bwx/e0yzbvwKH8zalA=="], + "@babel/plugin-transform-explicit-resource-management/@babel/core/@babel/helper-compilation-targets/browserslist": ["browserslist@4.28.1", "", { "dependencies": { "baseline-browser-mapping": "^2.9.0", "caniuse-lite": "^1.0.30001759", "electron-to-chromium": "^1.5.263", "node-releases": "^2.0.27", "update-browserslist-db": "^1.2.0" }, "bin": { "browserslist": "cli.js" } }, "sha512-ZC5Bd0LgJXgwGqUknZY/vkUQ04r8NXnJZ3yYi4vDmSiZmC/pdSN0NbNRPxZpbtO4uAfDUAFffO8IZoM3Gj8IkA=="], "@babel/plugin-transform-explicit-resource-management/@babel/core/@babel/helper-compilation-targets/lru-cache": ["lru-cache@5.1.1", "", { "dependencies": { "yallist": "^3.0.2" } }, "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w=="], @@ -5904,7 +5853,7 @@ "@babel/plugin-transform-exponentiation-operator/@babel/core/@babel/code-frame/js-tokens": ["js-tokens@4.0.0", "", {}, "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ=="], - "@babel/plugin-transform-exponentiation-operator/@babel/core/@babel/helper-compilation-targets/browserslist": ["browserslist@4.28.8", "", { "dependencies": { "baseline-browser-mapping": "^2.11.12", "caniuse-lite": "^1.0.30001809", "electron-to-chromium": "^1.5.402", "node-releases": "^2.0.53", "update-browserslist-db": "^1.3.0" }, "bin": { "browserslist": "cli.js" } }, "sha512-V2NpofLblG64mfOtSgDhOJESZEGogzDMBv/q+W6oc4LXWP/q75eOXoOaaOu1EOadB9U4Bwx/e0yzbvwKH8zalA=="], + "@babel/plugin-transform-exponentiation-operator/@babel/core/@babel/helper-compilation-targets/browserslist": ["browserslist@4.28.1", "", { "dependencies": { "baseline-browser-mapping": "^2.9.0", "caniuse-lite": "^1.0.30001759", "electron-to-chromium": "^1.5.263", "node-releases": "^2.0.27", "update-browserslist-db": "^1.2.0" }, "bin": { "browserslist": "cli.js" } }, "sha512-ZC5Bd0LgJXgwGqUknZY/vkUQ04r8NXnJZ3yYi4vDmSiZmC/pdSN0NbNRPxZpbtO4uAfDUAFffO8IZoM3Gj8IkA=="], "@babel/plugin-transform-exponentiation-operator/@babel/core/@babel/helper-compilation-targets/lru-cache": ["lru-cache@5.1.1", "", { "dependencies": { "yallist": "^3.0.2" } }, "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w=="], @@ -5912,7 +5861,7 @@ "@babel/plugin-transform-export-namespace-from/@babel/core/@babel/code-frame/js-tokens": ["js-tokens@4.0.0", "", {}, "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ=="], - "@babel/plugin-transform-export-namespace-from/@babel/core/@babel/helper-compilation-targets/browserslist": ["browserslist@4.28.8", "", { "dependencies": { "baseline-browser-mapping": "^2.11.12", "caniuse-lite": "^1.0.30001809", "electron-to-chromium": "^1.5.402", "node-releases": "^2.0.53", "update-browserslist-db": "^1.3.0" }, "bin": { "browserslist": "cli.js" } }, "sha512-V2NpofLblG64mfOtSgDhOJESZEGogzDMBv/q+W6oc4LXWP/q75eOXoOaaOu1EOadB9U4Bwx/e0yzbvwKH8zalA=="], + "@babel/plugin-transform-export-namespace-from/@babel/core/@babel/helper-compilation-targets/browserslist": ["browserslist@4.28.1", "", { "dependencies": { "baseline-browser-mapping": "^2.9.0", "caniuse-lite": "^1.0.30001759", "electron-to-chromium": "^1.5.263", "node-releases": "^2.0.27", "update-browserslist-db": "^1.2.0" }, "bin": { "browserslist": "cli.js" } }, "sha512-ZC5Bd0LgJXgwGqUknZY/vkUQ04r8NXnJZ3yYi4vDmSiZmC/pdSN0NbNRPxZpbtO4uAfDUAFffO8IZoM3Gj8IkA=="], "@babel/plugin-transform-export-namespace-from/@babel/core/@babel/helper-compilation-targets/lru-cache": ["lru-cache@5.1.1", "", { "dependencies": { "yallist": "^3.0.2" } }, "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w=="], @@ -5920,7 +5869,7 @@ "@babel/plugin-transform-for-of/@babel/core/@babel/code-frame/js-tokens": ["js-tokens@4.0.0", "", {}, "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ=="], - "@babel/plugin-transform-for-of/@babel/core/@babel/helper-compilation-targets/browserslist": ["browserslist@4.28.8", "", { "dependencies": { "baseline-browser-mapping": "^2.11.12", "caniuse-lite": "^1.0.30001809", "electron-to-chromium": "^1.5.402", "node-releases": "^2.0.53", "update-browserslist-db": "^1.3.0" }, "bin": { "browserslist": "cli.js" } }, "sha512-V2NpofLblG64mfOtSgDhOJESZEGogzDMBv/q+W6oc4LXWP/q75eOXoOaaOu1EOadB9U4Bwx/e0yzbvwKH8zalA=="], + "@babel/plugin-transform-for-of/@babel/core/@babel/helper-compilation-targets/browserslist": ["browserslist@4.28.1", "", { "dependencies": { "baseline-browser-mapping": "^2.9.0", "caniuse-lite": "^1.0.30001759", "electron-to-chromium": "^1.5.263", "node-releases": "^2.0.27", "update-browserslist-db": "^1.2.0" }, "bin": { "browserslist": "cli.js" } }, "sha512-ZC5Bd0LgJXgwGqUknZY/vkUQ04r8NXnJZ3yYi4vDmSiZmC/pdSN0NbNRPxZpbtO4uAfDUAFffO8IZoM3Gj8IkA=="], "@babel/plugin-transform-for-of/@babel/core/@babel/helper-compilation-targets/lru-cache": ["lru-cache@5.1.1", "", { "dependencies": { "yallist": "^3.0.2" } }, "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w=="], @@ -5932,7 +5881,7 @@ "@babel/plugin-transform-json-strings/@babel/core/@babel/code-frame/js-tokens": ["js-tokens@4.0.0", "", {}, "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ=="], - "@babel/plugin-transform-json-strings/@babel/core/@babel/helper-compilation-targets/browserslist": ["browserslist@4.28.8", "", { "dependencies": { "baseline-browser-mapping": "^2.11.12", "caniuse-lite": "^1.0.30001809", "electron-to-chromium": "^1.5.402", "node-releases": "^2.0.53", "update-browserslist-db": "^1.3.0" }, "bin": { "browserslist": "cli.js" } }, "sha512-V2NpofLblG64mfOtSgDhOJESZEGogzDMBv/q+W6oc4LXWP/q75eOXoOaaOu1EOadB9U4Bwx/e0yzbvwKH8zalA=="], + "@babel/plugin-transform-json-strings/@babel/core/@babel/helper-compilation-targets/browserslist": ["browserslist@4.28.1", "", { "dependencies": { "baseline-browser-mapping": "^2.9.0", "caniuse-lite": "^1.0.30001759", "electron-to-chromium": "^1.5.263", "node-releases": "^2.0.27", "update-browserslist-db": "^1.2.0" }, "bin": { "browserslist": "cli.js" } }, "sha512-ZC5Bd0LgJXgwGqUknZY/vkUQ04r8NXnJZ3yYi4vDmSiZmC/pdSN0NbNRPxZpbtO4uAfDUAFffO8IZoM3Gj8IkA=="], "@babel/plugin-transform-json-strings/@babel/core/@babel/helper-compilation-targets/lru-cache": ["lru-cache@5.1.1", "", { "dependencies": { "yallist": "^3.0.2" } }, "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w=="], @@ -5940,7 +5889,7 @@ "@babel/plugin-transform-literals/@babel/core/@babel/code-frame/js-tokens": ["js-tokens@4.0.0", "", {}, "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ=="], - "@babel/plugin-transform-literals/@babel/core/@babel/helper-compilation-targets/browserslist": ["browserslist@4.28.8", "", { "dependencies": { "baseline-browser-mapping": "^2.11.12", "caniuse-lite": "^1.0.30001809", "electron-to-chromium": "^1.5.402", "node-releases": "^2.0.53", "update-browserslist-db": "^1.3.0" }, "bin": { "browserslist": "cli.js" } }, "sha512-V2NpofLblG64mfOtSgDhOJESZEGogzDMBv/q+W6oc4LXWP/q75eOXoOaaOu1EOadB9U4Bwx/e0yzbvwKH8zalA=="], + "@babel/plugin-transform-literals/@babel/core/@babel/helper-compilation-targets/browserslist": ["browserslist@4.28.1", "", { "dependencies": { "baseline-browser-mapping": "^2.9.0", "caniuse-lite": "^1.0.30001759", "electron-to-chromium": "^1.5.263", "node-releases": "^2.0.27", "update-browserslist-db": "^1.2.0" }, "bin": { "browserslist": "cli.js" } }, "sha512-ZC5Bd0LgJXgwGqUknZY/vkUQ04r8NXnJZ3yYi4vDmSiZmC/pdSN0NbNRPxZpbtO4uAfDUAFffO8IZoM3Gj8IkA=="], "@babel/plugin-transform-literals/@babel/core/@babel/helper-compilation-targets/lru-cache": ["lru-cache@5.1.1", "", { "dependencies": { "yallist": "^3.0.2" } }, "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w=="], @@ -5948,7 +5897,7 @@ "@babel/plugin-transform-logical-assignment-operators/@babel/core/@babel/code-frame/js-tokens": ["js-tokens@4.0.0", "", {}, "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ=="], - "@babel/plugin-transform-logical-assignment-operators/@babel/core/@babel/helper-compilation-targets/browserslist": ["browserslist@4.28.8", "", { "dependencies": { "baseline-browser-mapping": "^2.11.12", "caniuse-lite": "^1.0.30001809", "electron-to-chromium": "^1.5.402", "node-releases": "^2.0.53", "update-browserslist-db": "^1.3.0" }, "bin": { "browserslist": "cli.js" } }, "sha512-V2NpofLblG64mfOtSgDhOJESZEGogzDMBv/q+W6oc4LXWP/q75eOXoOaaOu1EOadB9U4Bwx/e0yzbvwKH8zalA=="], + "@babel/plugin-transform-logical-assignment-operators/@babel/core/@babel/helper-compilation-targets/browserslist": ["browserslist@4.28.1", "", { "dependencies": { "baseline-browser-mapping": "^2.9.0", "caniuse-lite": "^1.0.30001759", "electron-to-chromium": "^1.5.263", "node-releases": "^2.0.27", "update-browserslist-db": "^1.2.0" }, "bin": { "browserslist": "cli.js" } }, "sha512-ZC5Bd0LgJXgwGqUknZY/vkUQ04r8NXnJZ3yYi4vDmSiZmC/pdSN0NbNRPxZpbtO4uAfDUAFffO8IZoM3Gj8IkA=="], "@babel/plugin-transform-logical-assignment-operators/@babel/core/@babel/helper-compilation-targets/lru-cache": ["lru-cache@5.1.1", "", { "dependencies": { "yallist": "^3.0.2" } }, "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w=="], @@ -5956,7 +5905,7 @@ "@babel/plugin-transform-member-expression-literals/@babel/core/@babel/code-frame/js-tokens": ["js-tokens@4.0.0", "", {}, "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ=="], - "@babel/plugin-transform-member-expression-literals/@babel/core/@babel/helper-compilation-targets/browserslist": ["browserslist@4.28.8", "", { "dependencies": { "baseline-browser-mapping": "^2.11.12", "caniuse-lite": "^1.0.30001809", "electron-to-chromium": "^1.5.402", "node-releases": "^2.0.53", "update-browserslist-db": "^1.3.0" }, "bin": { "browserslist": "cli.js" } }, "sha512-V2NpofLblG64mfOtSgDhOJESZEGogzDMBv/q+W6oc4LXWP/q75eOXoOaaOu1EOadB9U4Bwx/e0yzbvwKH8zalA=="], + "@babel/plugin-transform-member-expression-literals/@babel/core/@babel/helper-compilation-targets/browserslist": ["browserslist@4.28.1", "", { "dependencies": { "baseline-browser-mapping": "^2.9.0", "caniuse-lite": "^1.0.30001759", "electron-to-chromium": "^1.5.263", "node-releases": "^2.0.27", "update-browserslist-db": "^1.2.0" }, "bin": { "browserslist": "cli.js" } }, "sha512-ZC5Bd0LgJXgwGqUknZY/vkUQ04r8NXnJZ3yYi4vDmSiZmC/pdSN0NbNRPxZpbtO4uAfDUAFffO8IZoM3Gj8IkA=="], "@babel/plugin-transform-member-expression-literals/@babel/core/@babel/helper-compilation-targets/lru-cache": ["lru-cache@5.1.1", "", { "dependencies": { "yallist": "^3.0.2" } }, "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w=="], @@ -5964,7 +5913,7 @@ "@babel/plugin-transform-modules-amd/@babel/core/@babel/code-frame/js-tokens": ["js-tokens@4.0.0", "", {}, "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ=="], - "@babel/plugin-transform-modules-amd/@babel/core/@babel/helper-compilation-targets/browserslist": ["browserslist@4.28.8", "", { "dependencies": { "baseline-browser-mapping": "^2.11.12", "caniuse-lite": "^1.0.30001809", "electron-to-chromium": "^1.5.402", "node-releases": "^2.0.53", "update-browserslist-db": "^1.3.0" }, "bin": { "browserslist": "cli.js" } }, "sha512-V2NpofLblG64mfOtSgDhOJESZEGogzDMBv/q+W6oc4LXWP/q75eOXoOaaOu1EOadB9U4Bwx/e0yzbvwKH8zalA=="], + "@babel/plugin-transform-modules-amd/@babel/core/@babel/helper-compilation-targets/browserslist": ["browserslist@4.28.1", "", { "dependencies": { "baseline-browser-mapping": "^2.9.0", "caniuse-lite": "^1.0.30001759", "electron-to-chromium": "^1.5.263", "node-releases": "^2.0.27", "update-browserslist-db": "^1.2.0" }, "bin": { "browserslist": "cli.js" } }, "sha512-ZC5Bd0LgJXgwGqUknZY/vkUQ04r8NXnJZ3yYi4vDmSiZmC/pdSN0NbNRPxZpbtO4uAfDUAFffO8IZoM3Gj8IkA=="], "@babel/plugin-transform-modules-amd/@babel/core/@babel/helper-compilation-targets/lru-cache": ["lru-cache@5.1.1", "", { "dependencies": { "yallist": "^3.0.2" } }, "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w=="], @@ -5972,7 +5921,7 @@ "@babel/plugin-transform-modules-commonjs/@babel/core/@babel/code-frame/js-tokens": ["js-tokens@4.0.0", "", {}, "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ=="], - "@babel/plugin-transform-modules-commonjs/@babel/core/@babel/helper-compilation-targets/browserslist": ["browserslist@4.28.8", "", { "dependencies": { "baseline-browser-mapping": "^2.11.12", "caniuse-lite": "^1.0.30001809", "electron-to-chromium": "^1.5.402", "node-releases": "^2.0.53", "update-browserslist-db": "^1.3.0" }, "bin": { "browserslist": "cli.js" } }, "sha512-V2NpofLblG64mfOtSgDhOJESZEGogzDMBv/q+W6oc4LXWP/q75eOXoOaaOu1EOadB9U4Bwx/e0yzbvwKH8zalA=="], + "@babel/plugin-transform-modules-commonjs/@babel/core/@babel/helper-compilation-targets/browserslist": ["browserslist@4.28.1", "", { "dependencies": { "baseline-browser-mapping": "^2.9.0", "caniuse-lite": "^1.0.30001759", "electron-to-chromium": "^1.5.263", "node-releases": "^2.0.27", "update-browserslist-db": "^1.2.0" }, "bin": { "browserslist": "cli.js" } }, "sha512-ZC5Bd0LgJXgwGqUknZY/vkUQ04r8NXnJZ3yYi4vDmSiZmC/pdSN0NbNRPxZpbtO4uAfDUAFffO8IZoM3Gj8IkA=="], "@babel/plugin-transform-modules-commonjs/@babel/core/@babel/helper-compilation-targets/lru-cache": ["lru-cache@5.1.1", "", { "dependencies": { "yallist": "^3.0.2" } }, "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w=="], @@ -5980,7 +5929,7 @@ "@babel/plugin-transform-modules-systemjs/@babel/core/@babel/code-frame/js-tokens": ["js-tokens@4.0.0", "", {}, "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ=="], - "@babel/plugin-transform-modules-systemjs/@babel/core/@babel/helper-compilation-targets/browserslist": ["browserslist@4.28.8", "", { "dependencies": { "baseline-browser-mapping": "^2.11.12", "caniuse-lite": "^1.0.30001809", "electron-to-chromium": "^1.5.402", "node-releases": "^2.0.53", "update-browserslist-db": "^1.3.0" }, "bin": { "browserslist": "cli.js" } }, "sha512-V2NpofLblG64mfOtSgDhOJESZEGogzDMBv/q+W6oc4LXWP/q75eOXoOaaOu1EOadB9U4Bwx/e0yzbvwKH8zalA=="], + "@babel/plugin-transform-modules-systemjs/@babel/core/@babel/helper-compilation-targets/browserslist": ["browserslist@4.28.1", "", { "dependencies": { "baseline-browser-mapping": "^2.9.0", "caniuse-lite": "^1.0.30001759", "electron-to-chromium": "^1.5.263", "node-releases": "^2.0.27", "update-browserslist-db": "^1.2.0" }, "bin": { "browserslist": "cli.js" } }, "sha512-ZC5Bd0LgJXgwGqUknZY/vkUQ04r8NXnJZ3yYi4vDmSiZmC/pdSN0NbNRPxZpbtO4uAfDUAFffO8IZoM3Gj8IkA=="], "@babel/plugin-transform-modules-systemjs/@babel/core/@babel/helper-compilation-targets/lru-cache": ["lru-cache@5.1.1", "", { "dependencies": { "yallist": "^3.0.2" } }, "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w=="], @@ -5988,7 +5937,7 @@ "@babel/plugin-transform-modules-umd/@babel/core/@babel/code-frame/js-tokens": ["js-tokens@4.0.0", "", {}, "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ=="], - "@babel/plugin-transform-modules-umd/@babel/core/@babel/helper-compilation-targets/browserslist": ["browserslist@4.28.8", "", { "dependencies": { "baseline-browser-mapping": "^2.11.12", "caniuse-lite": "^1.0.30001809", "electron-to-chromium": "^1.5.402", "node-releases": "^2.0.53", "update-browserslist-db": "^1.3.0" }, "bin": { "browserslist": "cli.js" } }, "sha512-V2NpofLblG64mfOtSgDhOJESZEGogzDMBv/q+W6oc4LXWP/q75eOXoOaaOu1EOadB9U4Bwx/e0yzbvwKH8zalA=="], + "@babel/plugin-transform-modules-umd/@babel/core/@babel/helper-compilation-targets/browserslist": ["browserslist@4.28.1", "", { "dependencies": { "baseline-browser-mapping": "^2.9.0", "caniuse-lite": "^1.0.30001759", "electron-to-chromium": "^1.5.263", "node-releases": "^2.0.27", "update-browserslist-db": "^1.2.0" }, "bin": { "browserslist": "cli.js" } }, "sha512-ZC5Bd0LgJXgwGqUknZY/vkUQ04r8NXnJZ3yYi4vDmSiZmC/pdSN0NbNRPxZpbtO4uAfDUAFffO8IZoM3Gj8IkA=="], "@babel/plugin-transform-modules-umd/@babel/core/@babel/helper-compilation-targets/lru-cache": ["lru-cache@5.1.1", "", { "dependencies": { "yallist": "^3.0.2" } }, "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w=="], @@ -5996,7 +5945,7 @@ "@babel/plugin-transform-named-capturing-groups-regex/@babel/core/@babel/code-frame/js-tokens": ["js-tokens@4.0.0", "", {}, "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ=="], - "@babel/plugin-transform-named-capturing-groups-regex/@babel/core/@babel/helper-compilation-targets/browserslist": ["browserslist@4.28.8", "", { "dependencies": { "baseline-browser-mapping": "^2.11.12", "caniuse-lite": "^1.0.30001809", "electron-to-chromium": "^1.5.402", "node-releases": "^2.0.53", "update-browserslist-db": "^1.3.0" }, "bin": { "browserslist": "cli.js" } }, "sha512-V2NpofLblG64mfOtSgDhOJESZEGogzDMBv/q+W6oc4LXWP/q75eOXoOaaOu1EOadB9U4Bwx/e0yzbvwKH8zalA=="], + "@babel/plugin-transform-named-capturing-groups-regex/@babel/core/@babel/helper-compilation-targets/browserslist": ["browserslist@4.28.1", "", { "dependencies": { "baseline-browser-mapping": "^2.9.0", "caniuse-lite": "^1.0.30001759", "electron-to-chromium": "^1.5.263", "node-releases": "^2.0.27", "update-browserslist-db": "^1.2.0" }, "bin": { "browserslist": "cli.js" } }, "sha512-ZC5Bd0LgJXgwGqUknZY/vkUQ04r8NXnJZ3yYi4vDmSiZmC/pdSN0NbNRPxZpbtO4uAfDUAFffO8IZoM3Gj8IkA=="], "@babel/plugin-transform-named-capturing-groups-regex/@babel/core/@babel/helper-compilation-targets/lru-cache": ["lru-cache@5.1.1", "", { "dependencies": { "yallist": "^3.0.2" } }, "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w=="], @@ -6004,7 +5953,7 @@ "@babel/plugin-transform-new-target/@babel/core/@babel/code-frame/js-tokens": ["js-tokens@4.0.0", "", {}, "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ=="], - "@babel/plugin-transform-new-target/@babel/core/@babel/helper-compilation-targets/browserslist": ["browserslist@4.28.8", "", { "dependencies": { "baseline-browser-mapping": "^2.11.12", "caniuse-lite": "^1.0.30001809", "electron-to-chromium": "^1.5.402", "node-releases": "^2.0.53", "update-browserslist-db": "^1.3.0" }, "bin": { "browserslist": "cli.js" } }, "sha512-V2NpofLblG64mfOtSgDhOJESZEGogzDMBv/q+W6oc4LXWP/q75eOXoOaaOu1EOadB9U4Bwx/e0yzbvwKH8zalA=="], + "@babel/plugin-transform-new-target/@babel/core/@babel/helper-compilation-targets/browserslist": ["browserslist@4.28.1", "", { "dependencies": { "baseline-browser-mapping": "^2.9.0", "caniuse-lite": "^1.0.30001759", "electron-to-chromium": "^1.5.263", "node-releases": "^2.0.27", "update-browserslist-db": "^1.2.0" }, "bin": { "browserslist": "cli.js" } }, "sha512-ZC5Bd0LgJXgwGqUknZY/vkUQ04r8NXnJZ3yYi4vDmSiZmC/pdSN0NbNRPxZpbtO4uAfDUAFffO8IZoM3Gj8IkA=="], "@babel/plugin-transform-new-target/@babel/core/@babel/helper-compilation-targets/lru-cache": ["lru-cache@5.1.1", "", { "dependencies": { "yallist": "^3.0.2" } }, "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w=="], @@ -6012,7 +5961,7 @@ "@babel/plugin-transform-nullish-coalescing-operator/@babel/core/@babel/code-frame/js-tokens": ["js-tokens@4.0.0", "", {}, "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ=="], - "@babel/plugin-transform-nullish-coalescing-operator/@babel/core/@babel/helper-compilation-targets/browserslist": ["browserslist@4.28.8", "", { "dependencies": { "baseline-browser-mapping": "^2.11.12", "caniuse-lite": "^1.0.30001809", "electron-to-chromium": "^1.5.402", "node-releases": "^2.0.53", "update-browserslist-db": "^1.3.0" }, "bin": { "browserslist": "cli.js" } }, "sha512-V2NpofLblG64mfOtSgDhOJESZEGogzDMBv/q+W6oc4LXWP/q75eOXoOaaOu1EOadB9U4Bwx/e0yzbvwKH8zalA=="], + "@babel/plugin-transform-nullish-coalescing-operator/@babel/core/@babel/helper-compilation-targets/browserslist": ["browserslist@4.28.1", "", { "dependencies": { "baseline-browser-mapping": "^2.9.0", "caniuse-lite": "^1.0.30001759", "electron-to-chromium": "^1.5.263", "node-releases": "^2.0.27", "update-browserslist-db": "^1.2.0" }, "bin": { "browserslist": "cli.js" } }, "sha512-ZC5Bd0LgJXgwGqUknZY/vkUQ04r8NXnJZ3yYi4vDmSiZmC/pdSN0NbNRPxZpbtO4uAfDUAFffO8IZoM3Gj8IkA=="], "@babel/plugin-transform-nullish-coalescing-operator/@babel/core/@babel/helper-compilation-targets/lru-cache": ["lru-cache@5.1.1", "", { "dependencies": { "yallist": "^3.0.2" } }, "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w=="], @@ -6020,7 +5969,7 @@ "@babel/plugin-transform-numeric-separator/@babel/core/@babel/code-frame/js-tokens": ["js-tokens@4.0.0", "", {}, "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ=="], - "@babel/plugin-transform-numeric-separator/@babel/core/@babel/helper-compilation-targets/browserslist": ["browserslist@4.28.8", "", { "dependencies": { "baseline-browser-mapping": "^2.11.12", "caniuse-lite": "^1.0.30001809", "electron-to-chromium": "^1.5.402", "node-releases": "^2.0.53", "update-browserslist-db": "^1.3.0" }, "bin": { "browserslist": "cli.js" } }, "sha512-V2NpofLblG64mfOtSgDhOJESZEGogzDMBv/q+W6oc4LXWP/q75eOXoOaaOu1EOadB9U4Bwx/e0yzbvwKH8zalA=="], + "@babel/plugin-transform-numeric-separator/@babel/core/@babel/helper-compilation-targets/browserslist": ["browserslist@4.28.1", "", { "dependencies": { "baseline-browser-mapping": "^2.9.0", "caniuse-lite": "^1.0.30001759", "electron-to-chromium": "^1.5.263", "node-releases": "^2.0.27", "update-browserslist-db": "^1.2.0" }, "bin": { "browserslist": "cli.js" } }, "sha512-ZC5Bd0LgJXgwGqUknZY/vkUQ04r8NXnJZ3yYi4vDmSiZmC/pdSN0NbNRPxZpbtO4uAfDUAFffO8IZoM3Gj8IkA=="], "@babel/plugin-transform-numeric-separator/@babel/core/@babel/helper-compilation-targets/lru-cache": ["lru-cache@5.1.1", "", { "dependencies": { "yallist": "^3.0.2" } }, "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w=="], @@ -6032,7 +5981,7 @@ "@babel/plugin-transform-object-super/@babel/core/@babel/code-frame/js-tokens": ["js-tokens@4.0.0", "", {}, "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ=="], - "@babel/plugin-transform-object-super/@babel/core/@babel/helper-compilation-targets/browserslist": ["browserslist@4.28.8", "", { "dependencies": { "baseline-browser-mapping": "^2.11.12", "caniuse-lite": "^1.0.30001809", "electron-to-chromium": "^1.5.402", "node-releases": "^2.0.53", "update-browserslist-db": "^1.3.0" }, "bin": { "browserslist": "cli.js" } }, "sha512-V2NpofLblG64mfOtSgDhOJESZEGogzDMBv/q+W6oc4LXWP/q75eOXoOaaOu1EOadB9U4Bwx/e0yzbvwKH8zalA=="], + "@babel/plugin-transform-object-super/@babel/core/@babel/helper-compilation-targets/browserslist": ["browserslist@4.28.1", "", { "dependencies": { "baseline-browser-mapping": "^2.9.0", "caniuse-lite": "^1.0.30001759", "electron-to-chromium": "^1.5.263", "node-releases": "^2.0.27", "update-browserslist-db": "^1.2.0" }, "bin": { "browserslist": "cli.js" } }, "sha512-ZC5Bd0LgJXgwGqUknZY/vkUQ04r8NXnJZ3yYi4vDmSiZmC/pdSN0NbNRPxZpbtO4uAfDUAFffO8IZoM3Gj8IkA=="], "@babel/plugin-transform-object-super/@babel/core/@babel/helper-compilation-targets/lru-cache": ["lru-cache@5.1.1", "", { "dependencies": { "yallist": "^3.0.2" } }, "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w=="], @@ -6040,7 +5989,7 @@ "@babel/plugin-transform-optional-catch-binding/@babel/core/@babel/code-frame/js-tokens": ["js-tokens@4.0.0", "", {}, "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ=="], - "@babel/plugin-transform-optional-catch-binding/@babel/core/@babel/helper-compilation-targets/browserslist": ["browserslist@4.28.8", "", { "dependencies": { "baseline-browser-mapping": "^2.11.12", "caniuse-lite": "^1.0.30001809", "electron-to-chromium": "^1.5.402", "node-releases": "^2.0.53", "update-browserslist-db": "^1.3.0" }, "bin": { "browserslist": "cli.js" } }, "sha512-V2NpofLblG64mfOtSgDhOJESZEGogzDMBv/q+W6oc4LXWP/q75eOXoOaaOu1EOadB9U4Bwx/e0yzbvwKH8zalA=="], + "@babel/plugin-transform-optional-catch-binding/@babel/core/@babel/helper-compilation-targets/browserslist": ["browserslist@4.28.1", "", { "dependencies": { "baseline-browser-mapping": "^2.9.0", "caniuse-lite": "^1.0.30001759", "electron-to-chromium": "^1.5.263", "node-releases": "^2.0.27", "update-browserslist-db": "^1.2.0" }, "bin": { "browserslist": "cli.js" } }, "sha512-ZC5Bd0LgJXgwGqUknZY/vkUQ04r8NXnJZ3yYi4vDmSiZmC/pdSN0NbNRPxZpbtO4uAfDUAFffO8IZoM3Gj8IkA=="], "@babel/plugin-transform-optional-catch-binding/@babel/core/@babel/helper-compilation-targets/lru-cache": ["lru-cache@5.1.1", "", { "dependencies": { "yallist": "^3.0.2" } }, "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w=="], @@ -6048,7 +5997,7 @@ "@babel/plugin-transform-optional-chaining/@babel/core/@babel/code-frame/js-tokens": ["js-tokens@4.0.0", "", {}, "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ=="], - "@babel/plugin-transform-optional-chaining/@babel/core/@babel/helper-compilation-targets/browserslist": ["browserslist@4.28.8", "", { "dependencies": { "baseline-browser-mapping": "^2.11.12", "caniuse-lite": "^1.0.30001809", "electron-to-chromium": "^1.5.402", "node-releases": "^2.0.53", "update-browserslist-db": "^1.3.0" }, "bin": { "browserslist": "cli.js" } }, "sha512-V2NpofLblG64mfOtSgDhOJESZEGogzDMBv/q+W6oc4LXWP/q75eOXoOaaOu1EOadB9U4Bwx/e0yzbvwKH8zalA=="], + "@babel/plugin-transform-optional-chaining/@babel/core/@babel/helper-compilation-targets/browserslist": ["browserslist@4.28.1", "", { "dependencies": { "baseline-browser-mapping": "^2.9.0", "caniuse-lite": "^1.0.30001759", "electron-to-chromium": "^1.5.263", "node-releases": "^2.0.27", "update-browserslist-db": "^1.2.0" }, "bin": { "browserslist": "cli.js" } }, "sha512-ZC5Bd0LgJXgwGqUknZY/vkUQ04r8NXnJZ3yYi4vDmSiZmC/pdSN0NbNRPxZpbtO4uAfDUAFffO8IZoM3Gj8IkA=="], "@babel/plugin-transform-optional-chaining/@babel/core/@babel/helper-compilation-targets/lru-cache": ["lru-cache@5.1.1", "", { "dependencies": { "yallist": "^3.0.2" } }, "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w=="], @@ -6056,7 +6005,7 @@ "@babel/plugin-transform-parameters/@babel/core/@babel/code-frame/js-tokens": ["js-tokens@4.0.0", "", {}, "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ=="], - "@babel/plugin-transform-parameters/@babel/core/@babel/helper-compilation-targets/browserslist": ["browserslist@4.28.8", "", { "dependencies": { "baseline-browser-mapping": "^2.11.12", "caniuse-lite": "^1.0.30001809", "electron-to-chromium": "^1.5.402", "node-releases": "^2.0.53", "update-browserslist-db": "^1.3.0" }, "bin": { "browserslist": "cli.js" } }, "sha512-V2NpofLblG64mfOtSgDhOJESZEGogzDMBv/q+W6oc4LXWP/q75eOXoOaaOu1EOadB9U4Bwx/e0yzbvwKH8zalA=="], + "@babel/plugin-transform-parameters/@babel/core/@babel/helper-compilation-targets/browserslist": ["browserslist@4.28.1", "", { "dependencies": { "baseline-browser-mapping": "^2.9.0", "caniuse-lite": "^1.0.30001759", "electron-to-chromium": "^1.5.263", "node-releases": "^2.0.27", "update-browserslist-db": "^1.2.0" }, "bin": { "browserslist": "cli.js" } }, "sha512-ZC5Bd0LgJXgwGqUknZY/vkUQ04r8NXnJZ3yYi4vDmSiZmC/pdSN0NbNRPxZpbtO4uAfDUAFffO8IZoM3Gj8IkA=="], "@babel/plugin-transform-parameters/@babel/core/@babel/helper-compilation-targets/lru-cache": ["lru-cache@5.1.1", "", { "dependencies": { "yallist": "^3.0.2" } }, "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w=="], @@ -6064,7 +6013,7 @@ "@babel/plugin-transform-private-methods/@babel/core/@babel/code-frame/js-tokens": ["js-tokens@4.0.0", "", {}, "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ=="], - "@babel/plugin-transform-private-methods/@babel/core/@babel/helper-compilation-targets/browserslist": ["browserslist@4.28.8", "", { "dependencies": { "baseline-browser-mapping": "^2.11.12", "caniuse-lite": "^1.0.30001809", "electron-to-chromium": "^1.5.402", "node-releases": "^2.0.53", "update-browserslist-db": "^1.3.0" }, "bin": { "browserslist": "cli.js" } }, "sha512-V2NpofLblG64mfOtSgDhOJESZEGogzDMBv/q+W6oc4LXWP/q75eOXoOaaOu1EOadB9U4Bwx/e0yzbvwKH8zalA=="], + "@babel/plugin-transform-private-methods/@babel/core/@babel/helper-compilation-targets/browserslist": ["browserslist@4.28.1", "", { "dependencies": { "baseline-browser-mapping": "^2.9.0", "caniuse-lite": "^1.0.30001759", "electron-to-chromium": "^1.5.263", "node-releases": "^2.0.27", "update-browserslist-db": "^1.2.0" }, "bin": { "browserslist": "cli.js" } }, "sha512-ZC5Bd0LgJXgwGqUknZY/vkUQ04r8NXnJZ3yYi4vDmSiZmC/pdSN0NbNRPxZpbtO4uAfDUAFffO8IZoM3Gj8IkA=="], "@babel/plugin-transform-private-methods/@babel/core/@babel/helper-compilation-targets/lru-cache": ["lru-cache@5.1.1", "", { "dependencies": { "yallist": "^3.0.2" } }, "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w=="], @@ -6072,7 +6021,7 @@ "@babel/plugin-transform-private-property-in-object/@babel/core/@babel/code-frame/js-tokens": ["js-tokens@4.0.0", "", {}, "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ=="], - "@babel/plugin-transform-private-property-in-object/@babel/core/@babel/helper-compilation-targets/browserslist": ["browserslist@4.28.8", "", { "dependencies": { "baseline-browser-mapping": "^2.11.12", "caniuse-lite": "^1.0.30001809", "electron-to-chromium": "^1.5.402", "node-releases": "^2.0.53", "update-browserslist-db": "^1.3.0" }, "bin": { "browserslist": "cli.js" } }, "sha512-V2NpofLblG64mfOtSgDhOJESZEGogzDMBv/q+W6oc4LXWP/q75eOXoOaaOu1EOadB9U4Bwx/e0yzbvwKH8zalA=="], + "@babel/plugin-transform-private-property-in-object/@babel/core/@babel/helper-compilation-targets/browserslist": ["browserslist@4.28.1", "", { "dependencies": { "baseline-browser-mapping": "^2.9.0", "caniuse-lite": "^1.0.30001759", "electron-to-chromium": "^1.5.263", "node-releases": "^2.0.27", "update-browserslist-db": "^1.2.0" }, "bin": { "browserslist": "cli.js" } }, "sha512-ZC5Bd0LgJXgwGqUknZY/vkUQ04r8NXnJZ3yYi4vDmSiZmC/pdSN0NbNRPxZpbtO4uAfDUAFffO8IZoM3Gj8IkA=="], "@babel/plugin-transform-private-property-in-object/@babel/core/@babel/helper-compilation-targets/lru-cache": ["lru-cache@5.1.1", "", { "dependencies": { "yallist": "^3.0.2" } }, "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w=="], @@ -6080,7 +6029,7 @@ "@babel/plugin-transform-property-literals/@babel/core/@babel/code-frame/js-tokens": ["js-tokens@4.0.0", "", {}, "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ=="], - "@babel/plugin-transform-property-literals/@babel/core/@babel/helper-compilation-targets/browserslist": ["browserslist@4.28.8", "", { "dependencies": { "baseline-browser-mapping": "^2.11.12", "caniuse-lite": "^1.0.30001809", "electron-to-chromium": "^1.5.402", "node-releases": "^2.0.53", "update-browserslist-db": "^1.3.0" }, "bin": { "browserslist": "cli.js" } }, "sha512-V2NpofLblG64mfOtSgDhOJESZEGogzDMBv/q+W6oc4LXWP/q75eOXoOaaOu1EOadB9U4Bwx/e0yzbvwKH8zalA=="], + "@babel/plugin-transform-property-literals/@babel/core/@babel/helper-compilation-targets/browserslist": ["browserslist@4.28.1", "", { "dependencies": { "baseline-browser-mapping": "^2.9.0", "caniuse-lite": "^1.0.30001759", "electron-to-chromium": "^1.5.263", "node-releases": "^2.0.27", "update-browserslist-db": "^1.2.0" }, "bin": { "browserslist": "cli.js" } }, "sha512-ZC5Bd0LgJXgwGqUknZY/vkUQ04r8NXnJZ3yYi4vDmSiZmC/pdSN0NbNRPxZpbtO4uAfDUAFffO8IZoM3Gj8IkA=="], "@babel/plugin-transform-property-literals/@babel/core/@babel/helper-compilation-targets/lru-cache": ["lru-cache@5.1.1", "", { "dependencies": { "yallist": "^3.0.2" } }, "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w=="], @@ -6088,7 +6037,7 @@ "@babel/plugin-transform-react-display-name/@babel/core/@babel/code-frame/js-tokens": ["js-tokens@4.0.0", "", {}, "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ=="], - "@babel/plugin-transform-react-display-name/@babel/core/@babel/helper-compilation-targets/browserslist": ["browserslist@4.28.8", "", { "dependencies": { "baseline-browser-mapping": "^2.11.12", "caniuse-lite": "^1.0.30001809", "electron-to-chromium": "^1.5.402", "node-releases": "^2.0.53", "update-browserslist-db": "^1.3.0" }, "bin": { "browserslist": "cli.js" } }, "sha512-V2NpofLblG64mfOtSgDhOJESZEGogzDMBv/q+W6oc4LXWP/q75eOXoOaaOu1EOadB9U4Bwx/e0yzbvwKH8zalA=="], + "@babel/plugin-transform-react-display-name/@babel/core/@babel/helper-compilation-targets/browserslist": ["browserslist@4.28.1", "", { "dependencies": { "baseline-browser-mapping": "^2.9.0", "caniuse-lite": "^1.0.30001759", "electron-to-chromium": "^1.5.263", "node-releases": "^2.0.27", "update-browserslist-db": "^1.2.0" }, "bin": { "browserslist": "cli.js" } }, "sha512-ZC5Bd0LgJXgwGqUknZY/vkUQ04r8NXnJZ3yYi4vDmSiZmC/pdSN0NbNRPxZpbtO4uAfDUAFffO8IZoM3Gj8IkA=="], "@babel/plugin-transform-react-display-name/@babel/core/@babel/helper-compilation-targets/lru-cache": ["lru-cache@5.1.1", "", { "dependencies": { "yallist": "^3.0.2" } }, "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w=="], @@ -6096,7 +6045,7 @@ "@babel/plugin-transform-react-jsx-development/@babel/core/@babel/code-frame/js-tokens": ["js-tokens@4.0.0", "", {}, "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ=="], - "@babel/plugin-transform-react-jsx-development/@babel/core/@babel/helper-compilation-targets/browserslist": ["browserslist@4.28.8", "", { "dependencies": { "baseline-browser-mapping": "^2.11.12", "caniuse-lite": "^1.0.30001809", "electron-to-chromium": "^1.5.402", "node-releases": "^2.0.53", "update-browserslist-db": "^1.3.0" }, "bin": { "browserslist": "cli.js" } }, "sha512-V2NpofLblG64mfOtSgDhOJESZEGogzDMBv/q+W6oc4LXWP/q75eOXoOaaOu1EOadB9U4Bwx/e0yzbvwKH8zalA=="], + "@babel/plugin-transform-react-jsx-development/@babel/core/@babel/helper-compilation-targets/browserslist": ["browserslist@4.28.1", "", { "dependencies": { "baseline-browser-mapping": "^2.9.0", "caniuse-lite": "^1.0.30001759", "electron-to-chromium": "^1.5.263", "node-releases": "^2.0.27", "update-browserslist-db": "^1.2.0" }, "bin": { "browserslist": "cli.js" } }, "sha512-ZC5Bd0LgJXgwGqUknZY/vkUQ04r8NXnJZ3yYi4vDmSiZmC/pdSN0NbNRPxZpbtO4uAfDUAFffO8IZoM3Gj8IkA=="], "@babel/plugin-transform-react-jsx-development/@babel/core/@babel/helper-compilation-targets/lru-cache": ["lru-cache@5.1.1", "", { "dependencies": { "yallist": "^3.0.2" } }, "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w=="], @@ -6104,7 +6053,7 @@ "@babel/plugin-transform-react-jsx/@babel/core/@babel/code-frame/js-tokens": ["js-tokens@4.0.0", "", {}, "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ=="], - "@babel/plugin-transform-react-jsx/@babel/core/@babel/helper-compilation-targets/browserslist": ["browserslist@4.28.8", "", { "dependencies": { "baseline-browser-mapping": "^2.11.12", "caniuse-lite": "^1.0.30001809", "electron-to-chromium": "^1.5.402", "node-releases": "^2.0.53", "update-browserslist-db": "^1.3.0" }, "bin": { "browserslist": "cli.js" } }, "sha512-V2NpofLblG64mfOtSgDhOJESZEGogzDMBv/q+W6oc4LXWP/q75eOXoOaaOu1EOadB9U4Bwx/e0yzbvwKH8zalA=="], + "@babel/plugin-transform-react-jsx/@babel/core/@babel/helper-compilation-targets/browserslist": ["browserslist@4.28.1", "", { "dependencies": { "baseline-browser-mapping": "^2.9.0", "caniuse-lite": "^1.0.30001759", "electron-to-chromium": "^1.5.263", "node-releases": "^2.0.27", "update-browserslist-db": "^1.2.0" }, "bin": { "browserslist": "cli.js" } }, "sha512-ZC5Bd0LgJXgwGqUknZY/vkUQ04r8NXnJZ3yYi4vDmSiZmC/pdSN0NbNRPxZpbtO4uAfDUAFffO8IZoM3Gj8IkA=="], "@babel/plugin-transform-react-jsx/@babel/core/@babel/helper-compilation-targets/lru-cache": ["lru-cache@5.1.1", "", { "dependencies": { "yallist": "^3.0.2" } }, "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w=="], @@ -6112,7 +6061,7 @@ "@babel/plugin-transform-react-pure-annotations/@babel/core/@babel/code-frame/js-tokens": ["js-tokens@4.0.0", "", {}, "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ=="], - "@babel/plugin-transform-react-pure-annotations/@babel/core/@babel/helper-compilation-targets/browserslist": ["browserslist@4.28.8", "", { "dependencies": { "baseline-browser-mapping": "^2.11.12", "caniuse-lite": "^1.0.30001809", "electron-to-chromium": "^1.5.402", "node-releases": "^2.0.53", "update-browserslist-db": "^1.3.0" }, "bin": { "browserslist": "cli.js" } }, "sha512-V2NpofLblG64mfOtSgDhOJESZEGogzDMBv/q+W6oc4LXWP/q75eOXoOaaOu1EOadB9U4Bwx/e0yzbvwKH8zalA=="], + "@babel/plugin-transform-react-pure-annotations/@babel/core/@babel/helper-compilation-targets/browserslist": ["browserslist@4.28.1", "", { "dependencies": { "baseline-browser-mapping": "^2.9.0", "caniuse-lite": "^1.0.30001759", "electron-to-chromium": "^1.5.263", "node-releases": "^2.0.27", "update-browserslist-db": "^1.2.0" }, "bin": { "browserslist": "cli.js" } }, "sha512-ZC5Bd0LgJXgwGqUknZY/vkUQ04r8NXnJZ3yYi4vDmSiZmC/pdSN0NbNRPxZpbtO4uAfDUAFffO8IZoM3Gj8IkA=="], "@babel/plugin-transform-react-pure-annotations/@babel/core/@babel/helper-compilation-targets/lru-cache": ["lru-cache@5.1.1", "", { "dependencies": { "yallist": "^3.0.2" } }, "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w=="], @@ -6120,7 +6069,7 @@ "@babel/plugin-transform-regenerator/@babel/core/@babel/code-frame/js-tokens": ["js-tokens@4.0.0", "", {}, "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ=="], - "@babel/plugin-transform-regenerator/@babel/core/@babel/helper-compilation-targets/browserslist": ["browserslist@4.28.8", "", { "dependencies": { "baseline-browser-mapping": "^2.11.12", "caniuse-lite": "^1.0.30001809", "electron-to-chromium": "^1.5.402", "node-releases": "^2.0.53", "update-browserslist-db": "^1.3.0" }, "bin": { "browserslist": "cli.js" } }, "sha512-V2NpofLblG64mfOtSgDhOJESZEGogzDMBv/q+W6oc4LXWP/q75eOXoOaaOu1EOadB9U4Bwx/e0yzbvwKH8zalA=="], + "@babel/plugin-transform-regenerator/@babel/core/@babel/helper-compilation-targets/browserslist": ["browserslist@4.28.1", "", { "dependencies": { "baseline-browser-mapping": "^2.9.0", "caniuse-lite": "^1.0.30001759", "electron-to-chromium": "^1.5.263", "node-releases": "^2.0.27", "update-browserslist-db": "^1.2.0" }, "bin": { "browserslist": "cli.js" } }, "sha512-ZC5Bd0LgJXgwGqUknZY/vkUQ04r8NXnJZ3yYi4vDmSiZmC/pdSN0NbNRPxZpbtO4uAfDUAFffO8IZoM3Gj8IkA=="], "@babel/plugin-transform-regenerator/@babel/core/@babel/helper-compilation-targets/lru-cache": ["lru-cache@5.1.1", "", { "dependencies": { "yallist": "^3.0.2" } }, "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w=="], @@ -6128,7 +6077,7 @@ "@babel/plugin-transform-regexp-modifiers/@babel/core/@babel/code-frame/js-tokens": ["js-tokens@4.0.0", "", {}, "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ=="], - "@babel/plugin-transform-regexp-modifiers/@babel/core/@babel/helper-compilation-targets/browserslist": ["browserslist@4.28.8", "", { "dependencies": { "baseline-browser-mapping": "^2.11.12", "caniuse-lite": "^1.0.30001809", "electron-to-chromium": "^1.5.402", "node-releases": "^2.0.53", "update-browserslist-db": "^1.3.0" }, "bin": { "browserslist": "cli.js" } }, "sha512-V2NpofLblG64mfOtSgDhOJESZEGogzDMBv/q+W6oc4LXWP/q75eOXoOaaOu1EOadB9U4Bwx/e0yzbvwKH8zalA=="], + "@babel/plugin-transform-regexp-modifiers/@babel/core/@babel/helper-compilation-targets/browserslist": ["browserslist@4.28.1", "", { "dependencies": { "baseline-browser-mapping": "^2.9.0", "caniuse-lite": "^1.0.30001759", "electron-to-chromium": "^1.5.263", "node-releases": "^2.0.27", "update-browserslist-db": "^1.2.0" }, "bin": { "browserslist": "cli.js" } }, "sha512-ZC5Bd0LgJXgwGqUknZY/vkUQ04r8NXnJZ3yYi4vDmSiZmC/pdSN0NbNRPxZpbtO4uAfDUAFffO8IZoM3Gj8IkA=="], "@babel/plugin-transform-regexp-modifiers/@babel/core/@babel/helper-compilation-targets/lru-cache": ["lru-cache@5.1.1", "", { "dependencies": { "yallist": "^3.0.2" } }, "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w=="], @@ -6136,7 +6085,7 @@ "@babel/plugin-transform-reserved-words/@babel/core/@babel/code-frame/js-tokens": ["js-tokens@4.0.0", "", {}, "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ=="], - "@babel/plugin-transform-reserved-words/@babel/core/@babel/helper-compilation-targets/browserslist": ["browserslist@4.28.8", "", { "dependencies": { "baseline-browser-mapping": "^2.11.12", "caniuse-lite": "^1.0.30001809", "electron-to-chromium": "^1.5.402", "node-releases": "^2.0.53", "update-browserslist-db": "^1.3.0" }, "bin": { "browserslist": "cli.js" } }, "sha512-V2NpofLblG64mfOtSgDhOJESZEGogzDMBv/q+W6oc4LXWP/q75eOXoOaaOu1EOadB9U4Bwx/e0yzbvwKH8zalA=="], + "@babel/plugin-transform-reserved-words/@babel/core/@babel/helper-compilation-targets/browserslist": ["browserslist@4.28.1", "", { "dependencies": { "baseline-browser-mapping": "^2.9.0", "caniuse-lite": "^1.0.30001759", "electron-to-chromium": "^1.5.263", "node-releases": "^2.0.27", "update-browserslist-db": "^1.2.0" }, "bin": { "browserslist": "cli.js" } }, "sha512-ZC5Bd0LgJXgwGqUknZY/vkUQ04r8NXnJZ3yYi4vDmSiZmC/pdSN0NbNRPxZpbtO4uAfDUAFffO8IZoM3Gj8IkA=="], "@babel/plugin-transform-reserved-words/@babel/core/@babel/helper-compilation-targets/lru-cache": ["lru-cache@5.1.1", "", { "dependencies": { "yallist": "^3.0.2" } }, "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w=="], @@ -6144,7 +6093,7 @@ "@babel/plugin-transform-shorthand-properties/@babel/core/@babel/code-frame/js-tokens": ["js-tokens@4.0.0", "", {}, "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ=="], - "@babel/plugin-transform-shorthand-properties/@babel/core/@babel/helper-compilation-targets/browserslist": ["browserslist@4.28.8", "", { "dependencies": { "baseline-browser-mapping": "^2.11.12", "caniuse-lite": "^1.0.30001809", "electron-to-chromium": "^1.5.402", "node-releases": "^2.0.53", "update-browserslist-db": "^1.3.0" }, "bin": { "browserslist": "cli.js" } }, "sha512-V2NpofLblG64mfOtSgDhOJESZEGogzDMBv/q+W6oc4LXWP/q75eOXoOaaOu1EOadB9U4Bwx/e0yzbvwKH8zalA=="], + "@babel/plugin-transform-shorthand-properties/@babel/core/@babel/helper-compilation-targets/browserslist": ["browserslist@4.28.1", "", { "dependencies": { "baseline-browser-mapping": "^2.9.0", "caniuse-lite": "^1.0.30001759", "electron-to-chromium": "^1.5.263", "node-releases": "^2.0.27", "update-browserslist-db": "^1.2.0" }, "bin": { "browserslist": "cli.js" } }, "sha512-ZC5Bd0LgJXgwGqUknZY/vkUQ04r8NXnJZ3yYi4vDmSiZmC/pdSN0NbNRPxZpbtO4uAfDUAFffO8IZoM3Gj8IkA=="], "@babel/plugin-transform-shorthand-properties/@babel/core/@babel/helper-compilation-targets/lru-cache": ["lru-cache@5.1.1", "", { "dependencies": { "yallist": "^3.0.2" } }, "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w=="], @@ -6152,7 +6101,7 @@ "@babel/plugin-transform-spread/@babel/core/@babel/code-frame/js-tokens": ["js-tokens@4.0.0", "", {}, "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ=="], - "@babel/plugin-transform-spread/@babel/core/@babel/helper-compilation-targets/browserslist": ["browserslist@4.28.8", "", { "dependencies": { "baseline-browser-mapping": "^2.11.12", "caniuse-lite": "^1.0.30001809", "electron-to-chromium": "^1.5.402", "node-releases": "^2.0.53", "update-browserslist-db": "^1.3.0" }, "bin": { "browserslist": "cli.js" } }, "sha512-V2NpofLblG64mfOtSgDhOJESZEGogzDMBv/q+W6oc4LXWP/q75eOXoOaaOu1EOadB9U4Bwx/e0yzbvwKH8zalA=="], + "@babel/plugin-transform-spread/@babel/core/@babel/helper-compilation-targets/browserslist": ["browserslist@4.28.1", "", { "dependencies": { "baseline-browser-mapping": "^2.9.0", "caniuse-lite": "^1.0.30001759", "electron-to-chromium": "^1.5.263", "node-releases": "^2.0.27", "update-browserslist-db": "^1.2.0" }, "bin": { "browserslist": "cli.js" } }, "sha512-ZC5Bd0LgJXgwGqUknZY/vkUQ04r8NXnJZ3yYi4vDmSiZmC/pdSN0NbNRPxZpbtO4uAfDUAFffO8IZoM3Gj8IkA=="], "@babel/plugin-transform-spread/@babel/core/@babel/helper-compilation-targets/lru-cache": ["lru-cache@5.1.1", "", { "dependencies": { "yallist": "^3.0.2" } }, "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w=="], @@ -6160,7 +6109,7 @@ "@babel/plugin-transform-sticky-regex/@babel/core/@babel/code-frame/js-tokens": ["js-tokens@4.0.0", "", {}, "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ=="], - "@babel/plugin-transform-sticky-regex/@babel/core/@babel/helper-compilation-targets/browserslist": ["browserslist@4.28.8", "", { "dependencies": { "baseline-browser-mapping": "^2.11.12", "caniuse-lite": "^1.0.30001809", "electron-to-chromium": "^1.5.402", "node-releases": "^2.0.53", "update-browserslist-db": "^1.3.0" }, "bin": { "browserslist": "cli.js" } }, "sha512-V2NpofLblG64mfOtSgDhOJESZEGogzDMBv/q+W6oc4LXWP/q75eOXoOaaOu1EOadB9U4Bwx/e0yzbvwKH8zalA=="], + "@babel/plugin-transform-sticky-regex/@babel/core/@babel/helper-compilation-targets/browserslist": ["browserslist@4.28.1", "", { "dependencies": { "baseline-browser-mapping": "^2.9.0", "caniuse-lite": "^1.0.30001759", "electron-to-chromium": "^1.5.263", "node-releases": "^2.0.27", "update-browserslist-db": "^1.2.0" }, "bin": { "browserslist": "cli.js" } }, "sha512-ZC5Bd0LgJXgwGqUknZY/vkUQ04r8NXnJZ3yYi4vDmSiZmC/pdSN0NbNRPxZpbtO4uAfDUAFffO8IZoM3Gj8IkA=="], "@babel/plugin-transform-sticky-regex/@babel/core/@babel/helper-compilation-targets/lru-cache": ["lru-cache@5.1.1", "", { "dependencies": { "yallist": "^3.0.2" } }, "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w=="], @@ -6168,7 +6117,7 @@ "@babel/plugin-transform-template-literals/@babel/core/@babel/code-frame/js-tokens": ["js-tokens@4.0.0", "", {}, "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ=="], - "@babel/plugin-transform-template-literals/@babel/core/@babel/helper-compilation-targets/browserslist": ["browserslist@4.28.8", "", { "dependencies": { "baseline-browser-mapping": "^2.11.12", "caniuse-lite": "^1.0.30001809", "electron-to-chromium": "^1.5.402", "node-releases": "^2.0.53", "update-browserslist-db": "^1.3.0" }, "bin": { "browserslist": "cli.js" } }, "sha512-V2NpofLblG64mfOtSgDhOJESZEGogzDMBv/q+W6oc4LXWP/q75eOXoOaaOu1EOadB9U4Bwx/e0yzbvwKH8zalA=="], + "@babel/plugin-transform-template-literals/@babel/core/@babel/helper-compilation-targets/browserslist": ["browserslist@4.28.1", "", { "dependencies": { "baseline-browser-mapping": "^2.9.0", "caniuse-lite": "^1.0.30001759", "electron-to-chromium": "^1.5.263", "node-releases": "^2.0.27", "update-browserslist-db": "^1.2.0" }, "bin": { "browserslist": "cli.js" } }, "sha512-ZC5Bd0LgJXgwGqUknZY/vkUQ04r8NXnJZ3yYi4vDmSiZmC/pdSN0NbNRPxZpbtO4uAfDUAFffO8IZoM3Gj8IkA=="], "@babel/plugin-transform-template-literals/@babel/core/@babel/helper-compilation-targets/lru-cache": ["lru-cache@5.1.1", "", { "dependencies": { "yallist": "^3.0.2" } }, "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w=="], @@ -6176,7 +6125,7 @@ "@babel/plugin-transform-typeof-symbol/@babel/core/@babel/code-frame/js-tokens": ["js-tokens@4.0.0", "", {}, "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ=="], - "@babel/plugin-transform-typeof-symbol/@babel/core/@babel/helper-compilation-targets/browserslist": ["browserslist@4.28.8", "", { "dependencies": { "baseline-browser-mapping": "^2.11.12", "caniuse-lite": "^1.0.30001809", "electron-to-chromium": "^1.5.402", "node-releases": "^2.0.53", "update-browserslist-db": "^1.3.0" }, "bin": { "browserslist": "cli.js" } }, "sha512-V2NpofLblG64mfOtSgDhOJESZEGogzDMBv/q+W6oc4LXWP/q75eOXoOaaOu1EOadB9U4Bwx/e0yzbvwKH8zalA=="], + "@babel/plugin-transform-typeof-symbol/@babel/core/@babel/helper-compilation-targets/browserslist": ["browserslist@4.28.1", "", { "dependencies": { "baseline-browser-mapping": "^2.9.0", "caniuse-lite": "^1.0.30001759", "electron-to-chromium": "^1.5.263", "node-releases": "^2.0.27", "update-browserslist-db": "^1.2.0" }, "bin": { "browserslist": "cli.js" } }, "sha512-ZC5Bd0LgJXgwGqUknZY/vkUQ04r8NXnJZ3yYi4vDmSiZmC/pdSN0NbNRPxZpbtO4uAfDUAFffO8IZoM3Gj8IkA=="], "@babel/plugin-transform-typeof-symbol/@babel/core/@babel/helper-compilation-targets/lru-cache": ["lru-cache@5.1.1", "", { "dependencies": { "yallist": "^3.0.2" } }, "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w=="], @@ -6184,7 +6133,7 @@ "@babel/plugin-transform-typescript/@babel/core/@babel/code-frame/js-tokens": ["js-tokens@4.0.0", "", {}, "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ=="], - "@babel/plugin-transform-typescript/@babel/core/@babel/helper-compilation-targets/browserslist": ["browserslist@4.28.8", "", { "dependencies": { "baseline-browser-mapping": "^2.11.12", "caniuse-lite": "^1.0.30001809", "electron-to-chromium": "^1.5.402", "node-releases": "^2.0.53", "update-browserslist-db": "^1.3.0" }, "bin": { "browserslist": "cli.js" } }, "sha512-V2NpofLblG64mfOtSgDhOJESZEGogzDMBv/q+W6oc4LXWP/q75eOXoOaaOu1EOadB9U4Bwx/e0yzbvwKH8zalA=="], + "@babel/plugin-transform-typescript/@babel/core/@babel/helper-compilation-targets/browserslist": ["browserslist@4.28.1", "", { "dependencies": { "baseline-browser-mapping": "^2.9.0", "caniuse-lite": "^1.0.30001759", "electron-to-chromium": "^1.5.263", "node-releases": "^2.0.27", "update-browserslist-db": "^1.2.0" }, "bin": { "browserslist": "cli.js" } }, "sha512-ZC5Bd0LgJXgwGqUknZY/vkUQ04r8NXnJZ3yYi4vDmSiZmC/pdSN0NbNRPxZpbtO4uAfDUAFffO8IZoM3Gj8IkA=="], "@babel/plugin-transform-typescript/@babel/core/@babel/helper-compilation-targets/lru-cache": ["lru-cache@5.1.1", "", { "dependencies": { "yallist": "^3.0.2" } }, "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w=="], @@ -6192,7 +6141,7 @@ "@babel/plugin-transform-unicode-escapes/@babel/core/@babel/code-frame/js-tokens": ["js-tokens@4.0.0", "", {}, "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ=="], - "@babel/plugin-transform-unicode-escapes/@babel/core/@babel/helper-compilation-targets/browserslist": ["browserslist@4.28.8", "", { "dependencies": { "baseline-browser-mapping": "^2.11.12", "caniuse-lite": "^1.0.30001809", "electron-to-chromium": "^1.5.402", "node-releases": "^2.0.53", "update-browserslist-db": "^1.3.0" }, "bin": { "browserslist": "cli.js" } }, "sha512-V2NpofLblG64mfOtSgDhOJESZEGogzDMBv/q+W6oc4LXWP/q75eOXoOaaOu1EOadB9U4Bwx/e0yzbvwKH8zalA=="], + "@babel/plugin-transform-unicode-escapes/@babel/core/@babel/helper-compilation-targets/browserslist": ["browserslist@4.28.1", "", { "dependencies": { "baseline-browser-mapping": "^2.9.0", "caniuse-lite": "^1.0.30001759", "electron-to-chromium": "^1.5.263", "node-releases": "^2.0.27", "update-browserslist-db": "^1.2.0" }, "bin": { "browserslist": "cli.js" } }, "sha512-ZC5Bd0LgJXgwGqUknZY/vkUQ04r8NXnJZ3yYi4vDmSiZmC/pdSN0NbNRPxZpbtO4uAfDUAFffO8IZoM3Gj8IkA=="], "@babel/plugin-transform-unicode-escapes/@babel/core/@babel/helper-compilation-targets/lru-cache": ["lru-cache@5.1.1", "", { "dependencies": { "yallist": "^3.0.2" } }, "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w=="], @@ -6200,7 +6149,7 @@ "@babel/plugin-transform-unicode-property-regex/@babel/core/@babel/code-frame/js-tokens": ["js-tokens@4.0.0", "", {}, "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ=="], - "@babel/plugin-transform-unicode-property-regex/@babel/core/@babel/helper-compilation-targets/browserslist": ["browserslist@4.28.8", "", { "dependencies": { "baseline-browser-mapping": "^2.11.12", "caniuse-lite": "^1.0.30001809", "electron-to-chromium": "^1.5.402", "node-releases": "^2.0.53", "update-browserslist-db": "^1.3.0" }, "bin": { "browserslist": "cli.js" } }, "sha512-V2NpofLblG64mfOtSgDhOJESZEGogzDMBv/q+W6oc4LXWP/q75eOXoOaaOu1EOadB9U4Bwx/e0yzbvwKH8zalA=="], + "@babel/plugin-transform-unicode-property-regex/@babel/core/@babel/helper-compilation-targets/browserslist": ["browserslist@4.28.1", "", { "dependencies": { "baseline-browser-mapping": "^2.9.0", "caniuse-lite": "^1.0.30001759", "electron-to-chromium": "^1.5.263", "node-releases": "^2.0.27", "update-browserslist-db": "^1.2.0" }, "bin": { "browserslist": "cli.js" } }, "sha512-ZC5Bd0LgJXgwGqUknZY/vkUQ04r8NXnJZ3yYi4vDmSiZmC/pdSN0NbNRPxZpbtO4uAfDUAFffO8IZoM3Gj8IkA=="], "@babel/plugin-transform-unicode-property-regex/@babel/core/@babel/helper-compilation-targets/lru-cache": ["lru-cache@5.1.1", "", { "dependencies": { "yallist": "^3.0.2" } }, "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w=="], @@ -6208,7 +6157,7 @@ "@babel/plugin-transform-unicode-regex/@babel/core/@babel/code-frame/js-tokens": ["js-tokens@4.0.0", "", {}, "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ=="], - "@babel/plugin-transform-unicode-regex/@babel/core/@babel/helper-compilation-targets/browserslist": ["browserslist@4.28.8", "", { "dependencies": { "baseline-browser-mapping": "^2.11.12", "caniuse-lite": "^1.0.30001809", "electron-to-chromium": "^1.5.402", "node-releases": "^2.0.53", "update-browserslist-db": "^1.3.0" }, "bin": { "browserslist": "cli.js" } }, "sha512-V2NpofLblG64mfOtSgDhOJESZEGogzDMBv/q+W6oc4LXWP/q75eOXoOaaOu1EOadB9U4Bwx/e0yzbvwKH8zalA=="], + "@babel/plugin-transform-unicode-regex/@babel/core/@babel/helper-compilation-targets/browserslist": ["browserslist@4.28.1", "", { "dependencies": { "baseline-browser-mapping": "^2.9.0", "caniuse-lite": "^1.0.30001759", "electron-to-chromium": "^1.5.263", "node-releases": "^2.0.27", "update-browserslist-db": "^1.2.0" }, "bin": { "browserslist": "cli.js" } }, "sha512-ZC5Bd0LgJXgwGqUknZY/vkUQ04r8NXnJZ3yYi4vDmSiZmC/pdSN0NbNRPxZpbtO4uAfDUAFffO8IZoM3Gj8IkA=="], "@babel/plugin-transform-unicode-regex/@babel/core/@babel/helper-compilation-targets/lru-cache": ["lru-cache@5.1.1", "", { "dependencies": { "yallist": "^3.0.2" } }, "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w=="], @@ -6216,7 +6165,7 @@ "@babel/plugin-transform-unicode-sets-regex/@babel/core/@babel/code-frame/js-tokens": ["js-tokens@4.0.0", "", {}, "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ=="], - "@babel/plugin-transform-unicode-sets-regex/@babel/core/@babel/helper-compilation-targets/browserslist": ["browserslist@4.28.8", "", { "dependencies": { "baseline-browser-mapping": "^2.11.12", "caniuse-lite": "^1.0.30001809", "electron-to-chromium": "^1.5.402", "node-releases": "^2.0.53", "update-browserslist-db": "^1.3.0" }, "bin": { "browserslist": "cli.js" } }, "sha512-V2NpofLblG64mfOtSgDhOJESZEGogzDMBv/q+W6oc4LXWP/q75eOXoOaaOu1EOadB9U4Bwx/e0yzbvwKH8zalA=="], + "@babel/plugin-transform-unicode-sets-regex/@babel/core/@babel/helper-compilation-targets/browserslist": ["browserslist@4.28.1", "", { "dependencies": { "baseline-browser-mapping": "^2.9.0", "caniuse-lite": "^1.0.30001759", "electron-to-chromium": "^1.5.263", "node-releases": "^2.0.27", "update-browserslist-db": "^1.2.0" }, "bin": { "browserslist": "cli.js" } }, "sha512-ZC5Bd0LgJXgwGqUknZY/vkUQ04r8NXnJZ3yYi4vDmSiZmC/pdSN0NbNRPxZpbtO4uAfDUAFffO8IZoM3Gj8IkA=="], "@babel/plugin-transform-unicode-sets-regex/@babel/core/@babel/helper-compilation-targets/lru-cache": ["lru-cache@5.1.1", "", { "dependencies": { "yallist": "^3.0.2" } }, "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w=="], @@ -6228,7 +6177,7 @@ "@babel/preset-modules/@babel/core/@babel/code-frame/js-tokens": ["js-tokens@4.0.0", "", {}, "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ=="], - "@babel/preset-modules/@babel/core/@babel/helper-compilation-targets/browserslist": ["browserslist@4.28.8", "", { "dependencies": { "baseline-browser-mapping": "^2.11.12", "caniuse-lite": "^1.0.30001809", "electron-to-chromium": "^1.5.402", "node-releases": "^2.0.53", "update-browserslist-db": "^1.3.0" }, "bin": { "browserslist": "cli.js" } }, "sha512-V2NpofLblG64mfOtSgDhOJESZEGogzDMBv/q+W6oc4LXWP/q75eOXoOaaOu1EOadB9U4Bwx/e0yzbvwKH8zalA=="], + "@babel/preset-modules/@babel/core/@babel/helper-compilation-targets/browserslist": ["browserslist@4.28.1", "", { "dependencies": { "baseline-browser-mapping": "^2.9.0", "caniuse-lite": "^1.0.30001759", "electron-to-chromium": "^1.5.263", "node-releases": "^2.0.27", "update-browserslist-db": "^1.2.0" }, "bin": { "browserslist": "cli.js" } }, "sha512-ZC5Bd0LgJXgwGqUknZY/vkUQ04r8NXnJZ3yYi4vDmSiZmC/pdSN0NbNRPxZpbtO4uAfDUAFffO8IZoM3Gj8IkA=="], "@babel/preset-modules/@babel/core/@babel/helper-compilation-targets/lru-cache": ["lru-cache@5.1.1", "", { "dependencies": { "yallist": "^3.0.2" } }, "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w=="], @@ -6236,7 +6185,7 @@ "@babel/preset-react/@babel/core/@babel/code-frame/js-tokens": ["js-tokens@4.0.0", "", {}, "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ=="], - "@babel/preset-react/@babel/core/@babel/helper-compilation-targets/browserslist": ["browserslist@4.28.8", "", { "dependencies": { "baseline-browser-mapping": "^2.11.12", "caniuse-lite": "^1.0.30001809", "electron-to-chromium": "^1.5.402", "node-releases": "^2.0.53", "update-browserslist-db": "^1.3.0" }, "bin": { "browserslist": "cli.js" } }, "sha512-V2NpofLblG64mfOtSgDhOJESZEGogzDMBv/q+W6oc4LXWP/q75eOXoOaaOu1EOadB9U4Bwx/e0yzbvwKH8zalA=="], + "@babel/preset-react/@babel/core/@babel/helper-compilation-targets/browserslist": ["browserslist@4.28.1", "", { "dependencies": { "baseline-browser-mapping": "^2.9.0", "caniuse-lite": "^1.0.30001759", "electron-to-chromium": "^1.5.263", "node-releases": "^2.0.27", "update-browserslist-db": "^1.2.0" }, "bin": { "browserslist": "cli.js" } }, "sha512-ZC5Bd0LgJXgwGqUknZY/vkUQ04r8NXnJZ3yYi4vDmSiZmC/pdSN0NbNRPxZpbtO4uAfDUAFffO8IZoM3Gj8IkA=="], "@babel/preset-react/@babel/core/@babel/helper-compilation-targets/lru-cache": ["lru-cache@5.1.1", "", { "dependencies": { "yallist": "^3.0.2" } }, "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w=="], @@ -6244,7 +6193,7 @@ "@babel/preset-typescript/@babel/core/@babel/code-frame/js-tokens": ["js-tokens@4.0.0", "", {}, "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ=="], - "@babel/preset-typescript/@babel/core/@babel/helper-compilation-targets/browserslist": ["browserslist@4.28.8", "", { "dependencies": { "baseline-browser-mapping": "^2.11.12", "caniuse-lite": "^1.0.30001809", "electron-to-chromium": "^1.5.402", "node-releases": "^2.0.53", "update-browserslist-db": "^1.3.0" }, "bin": { "browserslist": "cli.js" } }, "sha512-V2NpofLblG64mfOtSgDhOJESZEGogzDMBv/q+W6oc4LXWP/q75eOXoOaaOu1EOadB9U4Bwx/e0yzbvwKH8zalA=="], + "@babel/preset-typescript/@babel/core/@babel/helper-compilation-targets/browserslist": ["browserslist@4.28.1", "", { "dependencies": { "baseline-browser-mapping": "^2.9.0", "caniuse-lite": "^1.0.30001759", "electron-to-chromium": "^1.5.263", "node-releases": "^2.0.27", "update-browserslist-db": "^1.2.0" }, "bin": { "browserslist": "cli.js" } }, "sha512-ZC5Bd0LgJXgwGqUknZY/vkUQ04r8NXnJZ3yYi4vDmSiZmC/pdSN0NbNRPxZpbtO4uAfDUAFffO8IZoM3Gj8IkA=="], "@babel/preset-typescript/@babel/core/@babel/helper-compilation-targets/lru-cache": ["lru-cache@5.1.1", "", { "dependencies": { "yallist": "^3.0.2" } }, "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w=="], @@ -6252,7 +6201,7 @@ "@kuma-ui/babel-plugin/@babel/core/@babel/code-frame/js-tokens": ["js-tokens@4.0.0", "", {}, "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ=="], - "@kuma-ui/babel-plugin/@babel/core/@babel/helper-compilation-targets/browserslist": ["browserslist@4.28.8", "", { "dependencies": { "baseline-browser-mapping": "^2.11.12", "caniuse-lite": "^1.0.30001809", "electron-to-chromium": "^1.5.402", "node-releases": "^2.0.53", "update-browserslist-db": "^1.3.0" }, "bin": { "browserslist": "cli.js" } }, "sha512-V2NpofLblG64mfOtSgDhOJESZEGogzDMBv/q+W6oc4LXWP/q75eOXoOaaOu1EOadB9U4Bwx/e0yzbvwKH8zalA=="], + "@kuma-ui/babel-plugin/@babel/core/@babel/helper-compilation-targets/browserslist": ["browserslist@4.28.1", "", { "dependencies": { "baseline-browser-mapping": "^2.9.0", "caniuse-lite": "^1.0.30001759", "electron-to-chromium": "^1.5.263", "node-releases": "^2.0.27", "update-browserslist-db": "^1.2.0" }, "bin": { "browserslist": "cli.js" } }, "sha512-ZC5Bd0LgJXgwGqUknZY/vkUQ04r8NXnJZ3yYi4vDmSiZmC/pdSN0NbNRPxZpbtO4uAfDUAFffO8IZoM3Gj8IkA=="], "@kuma-ui/babel-plugin/@babel/core/@babel/helper-compilation-targets/lru-cache": ["lru-cache@5.1.1", "", { "dependencies": { "yallist": "^3.0.2" } }, "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w=="], @@ -6260,7 +6209,7 @@ "@kuma-ui/compiler/@babel/core/@babel/code-frame/js-tokens": ["js-tokens@4.0.0", "", {}, "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ=="], - "@kuma-ui/compiler/@babel/core/@babel/helper-compilation-targets/browserslist": ["browserslist@4.28.8", "", { "dependencies": { "baseline-browser-mapping": "^2.11.12", "caniuse-lite": "^1.0.30001809", "electron-to-chromium": "^1.5.402", "node-releases": "^2.0.53", "update-browserslist-db": "^1.3.0" }, "bin": { "browserslist": "cli.js" } }, "sha512-V2NpofLblG64mfOtSgDhOJESZEGogzDMBv/q+W6oc4LXWP/q75eOXoOaaOu1EOadB9U4Bwx/e0yzbvwKH8zalA=="], + "@kuma-ui/compiler/@babel/core/@babel/helper-compilation-targets/browserslist": ["browserslist@4.28.1", "", { "dependencies": { "baseline-browser-mapping": "^2.9.0", "caniuse-lite": "^1.0.30001759", "electron-to-chromium": "^1.5.263", "node-releases": "^2.0.27", "update-browserslist-db": "^1.2.0" }, "bin": { "browserslist": "cli.js" } }, "sha512-ZC5Bd0LgJXgwGqUknZY/vkUQ04r8NXnJZ3yYi4vDmSiZmC/pdSN0NbNRPxZpbtO4uAfDUAFffO8IZoM3Gj8IkA=="], "@kuma-ui/compiler/@babel/core/@babel/helper-compilation-targets/lru-cache": ["lru-cache@5.1.1", "", { "dependencies": { "yallist": "^3.0.2" } }, "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w=="], @@ -6274,7 +6223,7 @@ "@stylexjs/babel-plugin/@babel/core/@babel/code-frame/js-tokens": ["js-tokens@4.0.0", "", {}, "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ=="], - "@stylexjs/babel-plugin/@babel/core/@babel/helper-compilation-targets/browserslist": ["browserslist@4.28.8", "", { "dependencies": { "baseline-browser-mapping": "^2.11.12", "caniuse-lite": "^1.0.30001809", "electron-to-chromium": "^1.5.402", "node-releases": "^2.0.53", "update-browserslist-db": "^1.3.0" }, "bin": { "browserslist": "cli.js" } }, "sha512-V2NpofLblG64mfOtSgDhOJESZEGogzDMBv/q+W6oc4LXWP/q75eOXoOaaOu1EOadB9U4Bwx/e0yzbvwKH8zalA=="], + "@stylexjs/babel-plugin/@babel/core/@babel/helper-compilation-targets/browserslist": ["browserslist@4.28.1", "", { "dependencies": { "baseline-browser-mapping": "^2.9.0", "caniuse-lite": "^1.0.30001759", "electron-to-chromium": "^1.5.263", "node-releases": "^2.0.27", "update-browserslist-db": "^1.2.0" }, "bin": { "browserslist": "cli.js" } }, "sha512-ZC5Bd0LgJXgwGqUknZY/vkUQ04r8NXnJZ3yYi4vDmSiZmC/pdSN0NbNRPxZpbtO4uAfDUAFffO8IZoM3Gj8IkA=="], "@stylexjs/babel-plugin/@babel/core/@babel/helper-compilation-targets/lru-cache": ["lru-cache@5.1.1", "", { "dependencies": { "yallist": "^3.0.2" } }, "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w=="], @@ -6282,7 +6231,7 @@ "@stylexjs/nextjs-plugin/@babel/core/@babel/code-frame/js-tokens": ["js-tokens@4.0.0", "", {}, "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ=="], - "@stylexjs/nextjs-plugin/@babel/core/@babel/helper-compilation-targets/browserslist": ["browserslist@4.28.8", "", { "dependencies": { "baseline-browser-mapping": "^2.11.12", "caniuse-lite": "^1.0.30001809", "electron-to-chromium": "^1.5.402", "node-releases": "^2.0.53", "update-browserslist-db": "^1.3.0" }, "bin": { "browserslist": "cli.js" } }, "sha512-V2NpofLblG64mfOtSgDhOJESZEGogzDMBv/q+W6oc4LXWP/q75eOXoOaaOu1EOadB9U4Bwx/e0yzbvwKH8zalA=="], + "@stylexjs/nextjs-plugin/@babel/core/@babel/helper-compilation-targets/browserslist": ["browserslist@4.28.1", "", { "dependencies": { "baseline-browser-mapping": "^2.9.0", "caniuse-lite": "^1.0.30001759", "electron-to-chromium": "^1.5.263", "node-releases": "^2.0.27", "update-browserslist-db": "^1.2.0" }, "bin": { "browserslist": "cli.js" } }, "sha512-ZC5Bd0LgJXgwGqUknZY/vkUQ04r8NXnJZ3yYi4vDmSiZmC/pdSN0NbNRPxZpbtO4uAfDUAFffO8IZoM3Gj8IkA=="], "@stylexjs/nextjs-plugin/@babel/core/@babel/helper-compilation-targets/lru-cache": ["lru-cache@5.1.1", "", { "dependencies": { "yallist": "^3.0.2" } }, "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w=="], @@ -6300,7 +6249,7 @@ "@stylexjs/postcss-plugin/@babel/core/@babel/code-frame/js-tokens": ["js-tokens@4.0.0", "", {}, "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ=="], - "@stylexjs/postcss-plugin/@babel/core/@babel/helper-compilation-targets/browserslist": ["browserslist@4.28.8", "", { "dependencies": { "baseline-browser-mapping": "^2.11.12", "caniuse-lite": "^1.0.30001809", "electron-to-chromium": "^1.5.402", "node-releases": "^2.0.53", "update-browserslist-db": "^1.3.0" }, "bin": { "browserslist": "cli.js" } }, "sha512-V2NpofLblG64mfOtSgDhOJESZEGogzDMBv/q+W6oc4LXWP/q75eOXoOaaOu1EOadB9U4Bwx/e0yzbvwKH8zalA=="], + "@stylexjs/postcss-plugin/@babel/core/@babel/helper-compilation-targets/browserslist": ["browserslist@4.28.1", "", { "dependencies": { "baseline-browser-mapping": "^2.9.0", "caniuse-lite": "^1.0.30001759", "electron-to-chromium": "^1.5.263", "node-releases": "^2.0.27", "update-browserslist-db": "^1.2.0" }, "bin": { "browserslist": "cli.js" } }, "sha512-ZC5Bd0LgJXgwGqUknZY/vkUQ04r8NXnJZ3yYi4vDmSiZmC/pdSN0NbNRPxZpbtO4uAfDUAFffO8IZoM3Gj8IkA=="], "@stylexjs/postcss-plugin/@babel/core/@babel/helper-compilation-targets/lru-cache": ["lru-cache@5.1.1", "", { "dependencies": { "yallist": "^3.0.2" } }, "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w=="], @@ -6308,7 +6257,7 @@ "@vanilla-extract/babel-plugin-debug-ids/@babel/core/@babel/code-frame/js-tokens": ["js-tokens@4.0.0", "", {}, "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ=="], - "@vanilla-extract/babel-plugin-debug-ids/@babel/core/@babel/helper-compilation-targets/browserslist": ["browserslist@4.28.8", "", { "dependencies": { "baseline-browser-mapping": "^2.11.12", "caniuse-lite": "^1.0.30001809", "electron-to-chromium": "^1.5.402", "node-releases": "^2.0.53", "update-browserslist-db": "^1.3.0" }, "bin": { "browserslist": "cli.js" } }, "sha512-V2NpofLblG64mfOtSgDhOJESZEGogzDMBv/q+W6oc4LXWP/q75eOXoOaaOu1EOadB9U4Bwx/e0yzbvwKH8zalA=="], + "@vanilla-extract/babel-plugin-debug-ids/@babel/core/@babel/helper-compilation-targets/browserslist": ["browserslist@4.28.1", "", { "dependencies": { "baseline-browser-mapping": "^2.9.0", "caniuse-lite": "^1.0.30001759", "electron-to-chromium": "^1.5.263", "node-releases": "^2.0.27", "update-browserslist-db": "^1.2.0" }, "bin": { "browserslist": "cli.js" } }, "sha512-ZC5Bd0LgJXgwGqUknZY/vkUQ04r8NXnJZ3yYi4vDmSiZmC/pdSN0NbNRPxZpbtO4uAfDUAFffO8IZoM3Gj8IkA=="], "@vanilla-extract/babel-plugin-debug-ids/@babel/core/@babel/helper-compilation-targets/lru-cache": ["lru-cache@5.1.1", "", { "dependencies": { "yallist": "^3.0.2" } }, "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w=="], @@ -6316,7 +6265,7 @@ "@vanilla-extract/integration/@babel/core/@babel/code-frame/js-tokens": ["js-tokens@4.0.0", "", {}, "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ=="], - "@vanilla-extract/integration/@babel/core/@babel/helper-compilation-targets/browserslist": ["browserslist@4.28.8", "", { "dependencies": { "baseline-browser-mapping": "^2.11.12", "caniuse-lite": "^1.0.30001809", "electron-to-chromium": "^1.5.402", "node-releases": "^2.0.53", "update-browserslist-db": "^1.3.0" }, "bin": { "browserslist": "cli.js" } }, "sha512-V2NpofLblG64mfOtSgDhOJESZEGogzDMBv/q+W6oc4LXWP/q75eOXoOaaOu1EOadB9U4Bwx/e0yzbvwKH8zalA=="], + "@vanilla-extract/integration/@babel/core/@babel/helper-compilation-targets/browserslist": ["browserslist@4.28.1", "", { "dependencies": { "baseline-browser-mapping": "^2.9.0", "caniuse-lite": "^1.0.30001759", "electron-to-chromium": "^1.5.263", "node-releases": "^2.0.27", "update-browserslist-db": "^1.2.0" }, "bin": { "browserslist": "cli.js" } }, "sha512-ZC5Bd0LgJXgwGqUknZY/vkUQ04r8NXnJZ3yYi4vDmSiZmC/pdSN0NbNRPxZpbtO4uAfDUAFffO8IZoM3Gj8IkA=="], "@vanilla-extract/integration/@babel/core/@babel/helper-compilation-targets/lru-cache": ["lru-cache@5.1.1", "", { "dependencies": { "yallist": "^3.0.2" } }, "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w=="], @@ -6324,7 +6273,7 @@ "babel-loader/@babel/core/@babel/code-frame/js-tokens": ["js-tokens@4.0.0", "", {}, "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ=="], - "babel-loader/@babel/core/@babel/helper-compilation-targets/browserslist": ["browserslist@4.28.8", "", { "dependencies": { "baseline-browser-mapping": "^2.11.12", "caniuse-lite": "^1.0.30001809", "electron-to-chromium": "^1.5.402", "node-releases": "^2.0.53", "update-browserslist-db": "^1.3.0" }, "bin": { "browserslist": "cli.js" } }, "sha512-V2NpofLblG64mfOtSgDhOJESZEGogzDMBv/q+W6oc4LXWP/q75eOXoOaaOu1EOadB9U4Bwx/e0yzbvwKH8zalA=="], + "babel-loader/@babel/core/@babel/helper-compilation-targets/browserslist": ["browserslist@4.28.1", "", { "dependencies": { "baseline-browser-mapping": "^2.9.0", "caniuse-lite": "^1.0.30001759", "electron-to-chromium": "^1.5.263", "node-releases": "^2.0.27", "update-browserslist-db": "^1.2.0" }, "bin": { "browserslist": "cli.js" } }, "sha512-ZC5Bd0LgJXgwGqUknZY/vkUQ04r8NXnJZ3yYi4vDmSiZmC/pdSN0NbNRPxZpbtO4uAfDUAFffO8IZoM3Gj8IkA=="], "babel-loader/@babel/core/@babel/helper-compilation-targets/lru-cache": ["lru-cache@5.1.1", "", { "dependencies": { "yallist": "^3.0.2" } }, "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w=="], @@ -6332,7 +6281,7 @@ "babel-plugin-polyfill-corejs2/@babel/core/@babel/code-frame/js-tokens": ["js-tokens@4.0.0", "", {}, "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ=="], - "babel-plugin-polyfill-corejs2/@babel/core/@babel/helper-compilation-targets/browserslist": ["browserslist@4.28.8", "", { "dependencies": { "baseline-browser-mapping": "^2.11.12", "caniuse-lite": "^1.0.30001809", "electron-to-chromium": "^1.5.402", "node-releases": "^2.0.53", "update-browserslist-db": "^1.3.0" }, "bin": { "browserslist": "cli.js" } }, "sha512-V2NpofLblG64mfOtSgDhOJESZEGogzDMBv/q+W6oc4LXWP/q75eOXoOaaOu1EOadB9U4Bwx/e0yzbvwKH8zalA=="], + "babel-plugin-polyfill-corejs2/@babel/core/@babel/helper-compilation-targets/browserslist": ["browserslist@4.28.1", "", { "dependencies": { "baseline-browser-mapping": "^2.9.0", "caniuse-lite": "^1.0.30001759", "electron-to-chromium": "^1.5.263", "node-releases": "^2.0.27", "update-browserslist-db": "^1.2.0" }, "bin": { "browserslist": "cli.js" } }, "sha512-ZC5Bd0LgJXgwGqUknZY/vkUQ04r8NXnJZ3yYi4vDmSiZmC/pdSN0NbNRPxZpbtO4uAfDUAFffO8IZoM3Gj8IkA=="], "babel-plugin-polyfill-corejs2/@babel/core/@babel/helper-compilation-targets/lru-cache": ["lru-cache@5.1.1", "", { "dependencies": { "yallist": "^3.0.2" } }, "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w=="], @@ -6340,7 +6289,7 @@ "babel-plugin-polyfill-corejs3/@babel/core/@babel/code-frame/js-tokens": ["js-tokens@4.0.0", "", {}, "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ=="], - "babel-plugin-polyfill-corejs3/@babel/core/@babel/helper-compilation-targets/browserslist": ["browserslist@4.28.8", "", { "dependencies": { "baseline-browser-mapping": "^2.11.12", "caniuse-lite": "^1.0.30001809", "electron-to-chromium": "^1.5.402", "node-releases": "^2.0.53", "update-browserslist-db": "^1.3.0" }, "bin": { "browserslist": "cli.js" } }, "sha512-V2NpofLblG64mfOtSgDhOJESZEGogzDMBv/q+W6oc4LXWP/q75eOXoOaaOu1EOadB9U4Bwx/e0yzbvwKH8zalA=="], + "babel-plugin-polyfill-corejs3/@babel/core/@babel/helper-compilation-targets/browserslist": ["browserslist@4.28.1", "", { "dependencies": { "baseline-browser-mapping": "^2.9.0", "caniuse-lite": "^1.0.30001759", "electron-to-chromium": "^1.5.263", "node-releases": "^2.0.27", "update-browserslist-db": "^1.2.0" }, "bin": { "browserslist": "cli.js" } }, "sha512-ZC5Bd0LgJXgwGqUknZY/vkUQ04r8NXnJZ3yYi4vDmSiZmC/pdSN0NbNRPxZpbtO4uAfDUAFffO8IZoM3Gj8IkA=="], "babel-plugin-polyfill-corejs3/@babel/core/@babel/helper-compilation-targets/lru-cache": ["lru-cache@5.1.1", "", { "dependencies": { "yallist": "^3.0.2" } }, "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w=="], @@ -6348,7 +6297,7 @@ "babel-plugin-polyfill-regenerator/@babel/core/@babel/code-frame/js-tokens": ["js-tokens@4.0.0", "", {}, "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ=="], - "babel-plugin-polyfill-regenerator/@babel/core/@babel/helper-compilation-targets/browserslist": ["browserslist@4.28.8", "", { "dependencies": { "baseline-browser-mapping": "^2.11.12", "caniuse-lite": "^1.0.30001809", "electron-to-chromium": "^1.5.402", "node-releases": "^2.0.53", "update-browserslist-db": "^1.3.0" }, "bin": { "browserslist": "cli.js" } }, "sha512-V2NpofLblG64mfOtSgDhOJESZEGogzDMBv/q+W6oc4LXWP/q75eOXoOaaOu1EOadB9U4Bwx/e0yzbvwKH8zalA=="], + "babel-plugin-polyfill-regenerator/@babel/core/@babel/helper-compilation-targets/browserslist": ["browserslist@4.28.1", "", { "dependencies": { "baseline-browser-mapping": "^2.9.0", "caniuse-lite": "^1.0.30001759", "electron-to-chromium": "^1.5.263", "node-releases": "^2.0.27", "update-browserslist-db": "^1.2.0" }, "bin": { "browserslist": "cli.js" } }, "sha512-ZC5Bd0LgJXgwGqUknZY/vkUQ04r8NXnJZ3yYi4vDmSiZmC/pdSN0NbNRPxZpbtO4uAfDUAFffO8IZoM3Gj8IkA=="], "babel-plugin-polyfill-regenerator/@babel/core/@babel/helper-compilation-targets/lru-cache": ["lru-cache@5.1.1", "", { "dependencies": { "yallist": "^3.0.2" } }, "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w=="], @@ -6358,7 +6307,7 @@ "eslint-plugin-react-hooks/@babel/core/@babel/code-frame/js-tokens": ["js-tokens@4.0.0", "", {}, "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ=="], - "eslint-plugin-react-hooks/@babel/core/@babel/helper-compilation-targets/browserslist": ["browserslist@4.28.8", "", { "dependencies": { "baseline-browser-mapping": "^2.11.12", "caniuse-lite": "^1.0.30001809", "electron-to-chromium": "^1.5.402", "node-releases": "^2.0.53", "update-browserslist-db": "^1.3.0" }, "bin": { "browserslist": "cli.js" } }, "sha512-V2NpofLblG64mfOtSgDhOJESZEGogzDMBv/q+W6oc4LXWP/q75eOXoOaaOu1EOadB9U4Bwx/e0yzbvwKH8zalA=="], + "eslint-plugin-react-hooks/@babel/core/@babel/helper-compilation-targets/browserslist": ["browserslist@4.28.1", "", { "dependencies": { "baseline-browser-mapping": "^2.9.0", "caniuse-lite": "^1.0.30001759", "electron-to-chromium": "^1.5.263", "node-releases": "^2.0.27", "update-browserslist-db": "^1.2.0" }, "bin": { "browserslist": "cli.js" } }, "sha512-ZC5Bd0LgJXgwGqUknZY/vkUQ04r8NXnJZ3yYi4vDmSiZmC/pdSN0NbNRPxZpbtO4uAfDUAFffO8IZoM3Gj8IkA=="], "eslint-plugin-react-hooks/@babel/core/@babel/helper-compilation-targets/lru-cache": ["lru-cache@5.1.1", "", { "dependencies": { "yallist": "^3.0.2" } }, "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w=="], @@ -6368,7 +6317,7 @@ "react-docgen/@babel/core/@babel/code-frame/js-tokens": ["js-tokens@4.0.0", "", {}, "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ=="], - "react-docgen/@babel/core/@babel/helper-compilation-targets/browserslist": ["browserslist@4.28.8", "", { "dependencies": { "baseline-browser-mapping": "^2.11.12", "caniuse-lite": "^1.0.30001809", "electron-to-chromium": "^1.5.402", "node-releases": "^2.0.53", "update-browserslist-db": "^1.3.0" }, "bin": { "browserslist": "cli.js" } }, "sha512-V2NpofLblG64mfOtSgDhOJESZEGogzDMBv/q+W6oc4LXWP/q75eOXoOaaOu1EOadB9U4Bwx/e0yzbvwKH8zalA=="], + "react-docgen/@babel/core/@babel/helper-compilation-targets/browserslist": ["browserslist@4.28.1", "", { "dependencies": { "baseline-browser-mapping": "^2.9.0", "caniuse-lite": "^1.0.30001759", "electron-to-chromium": "^1.5.263", "node-releases": "^2.0.27", "update-browserslist-db": "^1.2.0" }, "bin": { "browserslist": "cli.js" } }, "sha512-ZC5Bd0LgJXgwGqUknZY/vkUQ04r8NXnJZ3yYi4vDmSiZmC/pdSN0NbNRPxZpbtO4uAfDUAFffO8IZoM3Gj8IkA=="], "react-docgen/@babel/core/@babel/helper-compilation-targets/lru-cache": ["lru-cache@5.1.1", "", { "dependencies": { "yallist": "^3.0.2" } }, "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w=="], diff --git a/e2e/components-pages.spec.ts b/e2e/components-pages.spec.ts index 4733bfe24..22040efde 100644 --- a/e2e/components-pages.spec.ts +++ b/e2e/components-pages.spec.ts @@ -114,7 +114,9 @@ test.describe('Components Pages', () => { await page.goto('/') await waitForFontsReady(page) - await expect(page.getByText('Comparison Bechmarks').first()).toBeVisible() + await expect( + page.getByText('Comparison Benchmarks').first(), + ).toBeVisible() await context.close() }) @@ -127,7 +129,7 @@ test.describe('Components Pages', () => { await page.goto('/') await waitForFontsReady(page) - const benchSection = page.getByText('Comparison Bechmarks').first() + const benchSection = page.getByText('Comparison Benchmarks').first() await benchSection.scrollIntoViewIfNeeded() // The Devup UI card is inside a client-side animation wrapper that keeps @@ -148,7 +150,7 @@ test.describe('Components Pages', () => { await page.goto('/') await waitForFontsReady(page) - const benchSection = page.getByText('Comparison Bechmarks').first() + const benchSection = page.getByText('Comparison Benchmarks').first() await benchSection.scrollIntoViewIfNeeded() await waitForStyleSettle(page) @@ -167,7 +169,7 @@ test.describe('Components Pages', () => { await page.goto('/') await waitForFontsReady(page) - const benchSection = page.getByText('Comparison Bechmarks').first() + const benchSection = page.getByText('Comparison Benchmarks').first() await benchSection.scrollIntoViewIfNeeded() await waitForStyleSettle(page) @@ -187,7 +189,7 @@ test.describe('Components Pages', () => { await page.goto('/') await waitForFontsReady(page) - const benchSection = page.getByText('Comparison Bechmarks').first() + const benchSection = page.getByText('Comparison Benchmarks').first() await benchSection.scrollIntoViewIfNeeded() await waitForStyleSettle(page) @@ -208,7 +210,7 @@ test.describe('Components Pages', () => { await page.goto('/') await waitForFontsReady(page) - const benchSection = page.getByText('Comparison Bechmarks').first() + const benchSection = page.getByText('Comparison Benchmarks').first() await benchSection.scrollIntoViewIfNeeded() await waitForStyleSettle(page) diff --git a/e2e/components-pages.spec.ts-snapshots/components-benchmark-section-mobile-linux.png b/e2e/components-pages.spec.ts-snapshots/components-benchmark-section-mobile-linux.png index 28c574c2f..e2a7d3ddf 100644 Binary files a/e2e/components-pages.spec.ts-snapshots/components-benchmark-section-mobile-linux.png and b/e2e/components-pages.spec.ts-snapshots/components-benchmark-section-mobile-linux.png differ diff --git a/e2e/components-pages.spec.ts-snapshots/components-benchmark-section-mobile-win32.png b/e2e/components-pages.spec.ts-snapshots/components-benchmark-section-mobile-win32.png index 28c574c2f..53aec017b 100644 Binary files a/e2e/components-pages.spec.ts-snapshots/components-benchmark-section-mobile-win32.png and b/e2e/components-pages.spec.ts-snapshots/components-benchmark-section-mobile-win32.png differ diff --git a/e2e/docs-pages.spec.ts b/e2e/docs-pages.spec.ts index 33438ce5a..00545ba3e 100644 --- a/e2e/docs-pages.spec.ts +++ b/e2e/docs-pages.spec.ts @@ -178,6 +178,8 @@ test.describe('Documentation Pages', () => { await expect(page).toHaveScreenshot('docs-features-section-mobile.png', { fullPage: false, + // Linux per-file and single-CSS builds differ only at text edges. + maxDiffPixelRatio: 0.02, }) await context.close() diff --git a/e2e/docs-pages.spec.ts-snapshots/docs-features-section-mobile-linux.png b/e2e/docs-pages.spec.ts-snapshots/docs-features-section-mobile-linux.png index f1ca36f24..90621dd6a 100644 Binary files a/e2e/docs-pages.spec.ts-snapshots/docs-features-section-mobile-linux.png and b/e2e/docs-pages.spec.ts-snapshots/docs-features-section-mobile-linux.png differ diff --git a/e2e/docs-pages.spec.ts-snapshots/docs-features-section-mobile-win32.png b/e2e/docs-pages.spec.ts-snapshots/docs-features-section-mobile-win32.png index b124f3975..4e9904960 100644 Binary files a/e2e/docs-pages.spec.ts-snapshots/docs-features-section-mobile-win32.png and b/e2e/docs-pages.spec.ts-snapshots/docs-features-section-mobile-win32.png differ diff --git a/e2e/landing-visual-dark.spec.ts b/e2e/landing-visual-dark.spec.ts index 39af24287..aa3a310a1 100644 --- a/e2e/landing-visual-dark.spec.ts +++ b/e2e/landing-visual-dark.spec.ts @@ -97,7 +97,7 @@ test.describe('Landing Page - Dark Mode Visual Regression', () => { }) test('Bench section (dark)', async ({ page }) => { - const benchHeading = page.getByText('Comparison Bechmarks').first() + const benchHeading = page.getByText('Comparison Benchmarks').first() await benchHeading.scrollIntoViewIfNeeded() await waitForStyleSettle(page) diff --git a/e2e/landing-visual-dark.spec.ts-snapshots/dark-full-page-mobile-linux.png b/e2e/landing-visual-dark.spec.ts-snapshots/dark-full-page-mobile-linux.png index 981ee0aad..769cae3f2 100644 Binary files a/e2e/landing-visual-dark.spec.ts-snapshots/dark-full-page-mobile-linux.png and b/e2e/landing-visual-dark.spec.ts-snapshots/dark-full-page-mobile-linux.png differ diff --git a/e2e/landing-visual-dark.spec.ts-snapshots/dark-full-page-mobile-win32.png b/e2e/landing-visual-dark.spec.ts-snapshots/dark-full-page-mobile-win32.png index e8d5078f3..6e387f550 100644 Binary files a/e2e/landing-visual-dark.spec.ts-snapshots/dark-full-page-mobile-win32.png and b/e2e/landing-visual-dark.spec.ts-snapshots/dark-full-page-mobile-win32.png differ diff --git a/e2e/landing-visual.spec.ts b/e2e/landing-visual.spec.ts index 1af86867d..a22b3612c 100644 --- a/e2e/landing-visual.spec.ts +++ b/e2e/landing-visual.spec.ts @@ -84,7 +84,7 @@ test.describe('Landing Page - Visual Regression', () => { }) test('Bench section', async ({ page }) => { - const benchHeading = page.getByText('Comparison Bechmarks').first() + const benchHeading = page.getByText('Comparison Benchmarks').first() await benchHeading.scrollIntoViewIfNeeded() await waitForStyleSettle(page) diff --git a/e2e/landing-visual.spec.ts-snapshots/full-page-mobile-linux.png b/e2e/landing-visual.spec.ts-snapshots/full-page-mobile-linux.png index 5d5e9f56c..d23321e04 100644 Binary files a/e2e/landing-visual.spec.ts-snapshots/full-page-mobile-linux.png and b/e2e/landing-visual.spec.ts-snapshots/full-page-mobile-linux.png differ diff --git a/e2e/landing-visual.spec.ts-snapshots/full-page-mobile-win32.png b/e2e/landing-visual.spec.ts-snapshots/full-page-mobile-win32.png index d2b2478bb..f1c8e452e 100644 Binary files a/e2e/landing-visual.spec.ts-snapshots/full-page-mobile-win32.png and b/e2e/landing-visual.spec.ts-snapshots/full-page-mobile-win32.png differ diff --git a/eslint-typescript6.cjs b/eslint-typescript6.cjs new file mode 100644 index 000000000..2e9c67c83 --- /dev/null +++ b/eslint-typescript6.cjs @@ -0,0 +1,36 @@ +// TypeScript 7 is a native CLI and intentionally has no JavaScript compiler +// API yet. ESLint's TypeScript parser still requires that API, so route only +// its `typescript` imports to the official side-by-side TypeScript 6 package. +const Module = require('node:module') +const path = require('node:path') +const { pathToFileURL } = require('node:url') + +const originalResolveFilename = Module._resolveFilename +const typescript6Package = + require.resolve('@typescript/typescript6/package.json') +const typescript6Directory = path.dirname(typescript6Package) + +function resolveTypeScript6(request) { + if (request === 'typescript') { + return path.join(typescript6Directory, 'lib', 'typescript.js') + } + if (request.startsWith('typescript/')) { + return path.join(typescript6Directory, request.slice('typescript/'.length)) + } +} + +Module.registerHooks({ + resolve(specifier, context, nextResolve) { + const resolved = resolveTypeScript6(specifier) + return resolved + ? { shortCircuit: true, url: pathToFileURL(resolved).href } + : nextResolve(specifier, context) + }, +}) + +Module._resolveFilename = function resolveFilename(request, parent, ...rest) { + return ( + resolveTypeScript6(request) ?? + originalResolveFilename.call(this, request, parent, ...rest) + ) +} diff --git a/libs/css/src/is_special_property.rs b/libs/css/src/is_special_property.rs index 09ec7b6af..ea75b98b9 100644 --- a/libs/css/src/is_special_property.rs +++ b/libs/css/src/is_special_property.rs @@ -446,7 +446,7 @@ mod tests { #[test] fn test_css_properties() { - let css: HashSet = HashSet::from_iter( + let css: HashSet = HashSet::from( [ "accent-color", "align-content", diff --git a/libs/extractor/Cargo.toml b/libs/extractor/Cargo.toml index d3bf12d7a..b1044b60a 100644 --- a/libs/extractor/Cargo.toml +++ b/libs/extractor/Cargo.toml @@ -11,22 +11,26 @@ categories = ["development-tools", "wasm", "web-programming"] [lints] workspace = true +[features] +default = ["vanilla-extract"] +vanilla-extract = ["dep:boa_engine"] + [dependencies] -oxc_parser = "0.146.0" -oxc_syntax = "0.146.0" -oxc_span = "0.146.0" -oxc_allocator = "0.146.0" -oxc_ast = "0.146.0" -oxc_ast_visit = "0.146.0" -oxc_codegen = "0.146.0" -oxc_transformer = "0.146.0" -oxc_semantic = "0.146.0" +oxc_parser = "0.147.0" +oxc_syntax = "0.147.0" +oxc_span = "0.147.0" +oxc_allocator = "0.147.0" +oxc_ast = "0.147.0" +oxc_ast_visit = "0.147.0" +oxc_codegen = "0.147.0" +oxc_transformer = "0.147.0" +oxc_semantic = "0.147.0" css = { path = "../css" } phf = "0.14" strum = "0.28.0" strum_macros = "0.28.0" serde_json = "1.0" -boa_engine = "0.21" +boa_engine = { version = "0.22", optional = true } rustc-hash = "2" smallvec = "1" diff --git a/libs/extractor/src/extractor/extract_global_style_from_expression.rs b/libs/extractor/src/extractor/extract_global_style_from_expression.rs index 6f91475b1..3d546aa4c 100644 --- a/libs/extractor/src/extractor/extract_global_style_from_expression.rs +++ b/libs/extractor/src/extractor/extract_global_style_from_expression.rs @@ -1,5 +1,4 @@ use std::borrow::Cow; -use std::collections::BTreeMap; use crate::{ ExtractStyleProp, @@ -103,10 +102,10 @@ pub fn extract_global_style_from_expression<'a>( for p in &arr.elements { if let ArrayExpressionElement::ObjectExpression(o) = p { styles.push(ExtractStyleProp::Static(ExtractStyleValue::FontFace(ExtractFontFace { - properties: BTreeMap::from_iter( - o.properties - .iter() - .filter_map(|p| { + properties: o + .properties + .iter() + .filter_map(|p| { if let ObjectPropertyKind::ObjectProperty(o) = p && let Some(property_name) = get_str_by_property_key(&o.key) && let Some(s) = get_string_by_literal_expression(&o.value) @@ -119,9 +118,9 @@ pub fn extract_global_style_from_expression<'a>( } else { None } - }) - .flatten(), - ), + }) + .flatten() + .collect(), file: file.to_string(), }))); } else if let ArrayExpressionElement::TemplateLiteral(t) = p { @@ -137,8 +136,9 @@ pub fn extract_global_style_from_expression<'a>( .collect::>(); styles.push(ExtractStyleProp::Static( ExtractStyleValue::FontFace(ExtractFontFace { - properties: BTreeMap::from_iter( - css_styles.iter().filter_map(|p| { + properties: css_styles + .iter() + .filter_map(|p| { if let ExtractStyleValue::Static(st) = p { Some(( st.property().to_string(), @@ -147,8 +147,8 @@ pub fn extract_global_style_from_expression<'a>( } else { None } - }), - ), + }) + .collect(), file: file.to_string(), }), )); diff --git a/libs/extractor/src/lib.rs b/libs/extractor/src/lib.rs index 79a91e277..391f23713 100644 --- a/libs/extractor/src/lib.rs +++ b/libs/extractor/src/lib.rs @@ -11,6 +11,7 @@ mod stylex; mod tailwind; mod util_type; mod utils; +#[cfg(feature = "vanilla-extract")] mod vanilla_extract; mod visit; use crate::extract_style::extract_style_value::ExtractStyleValue; @@ -22,7 +23,9 @@ use oxc_ast_visit::VisitMut; use oxc_codegen::{Codegen, CodegenOptions}; use oxc_parser::{Parser, ParserReturn}; use oxc_span::SourceType; -use rustc_hash::{FxHashMap, FxHashSet}; +#[cfg(feature = "vanilla-extract")] +use rustc_hash::FxHashMap; +use rustc_hash::FxHashSet; use std::collections::{BTreeMap, HashMap}; use std::error::Error; use std::path::PathBuf; @@ -215,6 +218,23 @@ pub fn extract( filename: &str, code: &str, option: ExtractOption, +) -> Result> { + extract_with_source_map(filename, code, option, true) +} + +pub fn extract_without_source_map( + filename: &str, + code: &str, + option: ExtractOption, +) -> Result> { + extract_with_source_map(filename, code, option, false) +} + +fn extract_with_source_map( + filename: &str, + code: &str, + option: ExtractOption, + source_map: bool, ) -> Result> { // Step 1: Transform import aliases // e.g., `import styled from '@emotion/styled'` → `import { styled } from '@devup-ui/react'` @@ -243,8 +263,8 @@ pub fn extract( // Step 3: Handle vanilla-extract style files (.css.ts, .css.js) // `processed_code` is Some only when vanilla-extract generation succeeded; // otherwise the untouched `transformed_code` is parsed directly (no copy). - let is_ve_file = vanilla_extract::is_vanilla_extract_file(filename); - let processed_code: Option = if is_ve_file { + #[cfg(feature = "vanilla-extract")] + let processed_code: Option = if vanilla_extract::is_vanilla_extract_file(filename) { // Use transformed code (with imports already pointing to @devup-ui/react) match vanilla_extract::execute_vanilla_extract(&transformed_code, &option.package, filename) { @@ -287,6 +307,8 @@ pub fn extract( } else { None }; + #[cfg(not(feature = "vanilla-extract"))] + let processed_code: Option = None; // For vanilla-extract files, if no styles were collected, return early if processed_code.as_deref() == Some("") { return Ok(ExtractOutput { @@ -328,12 +350,15 @@ pub fn extract( if global { None } else { Some(bucket) }, ); visitor.visit_program(&mut program); - let result = Codegen::new() - .with_options(CodegenOptions { + let codegen_options = if source_map { + CodegenOptions { source_map_path: Some(PathBuf::from(filename)), ..Default::default() - }) - .build(&program); + } + } else { + CodegenOptions::default() + }; + let result = Codegen::new().with_options(codegen_options).build(&program); Ok(ExtractOutput { styles: visitor.styles, @@ -378,6 +403,7 @@ fn resolve_css_target(filename: &str, option: &ExtractOption) -> (String, bool, /// Extract class names from generated code for specific style names /// Used for two-pass vanilla-extract processing to resolve selector references +#[cfg(feature = "vanilla-extract")] fn extract_class_map_from_code( filename: &str, partial_code: &str, diff --git a/libs/extractor/src/vanilla_extract.rs b/libs/extractor/src/vanilla_extract.rs index d116e2536..2095a0a68 100644 --- a/libs/extractor/src/vanilla_extract.rs +++ b/libs/extractor/src/vanilla_extract.rs @@ -1032,9 +1032,9 @@ fn register_vanilla_extract_apis( ); // Return [themeId, varsObject] as an array - let result_array = boa_engine::object::builtins::JsArray::new(ctx); - let _ = result_array.push(JsValue::from(js_string!(id.clone())), ctx); - let _ = result_array.push(vars_obj, ctx); + let result_array = boa_engine::object::builtins::JsArray::new(ctx)?; + result_array.push(JsValue::from(js_string!(id.clone())), ctx)?; + result_array.push(vars_obj, ctx)?; Ok(JsValue::from(result_array)) } else { @@ -2058,7 +2058,8 @@ export const lightTheme = createTheme(vars, { fn test_transform_contract_to_vars_array() { // Test transform_contract_to_vars with array (covers line 170) let mut context = boa_engine::Context::default(); - let array = boa_engine::object::builtins::JsArray::new(&mut context); + let array = boa_engine::object::builtins::JsArray::new(&mut context) + .expect("creating an empty array should succeed"); let _ = array.push(boa_engine::JsValue::from(1), &mut context); let value = boa_engine::JsValue::from(array); let result = super::transform_contract_to_vars(&value, &mut context, &mut Vec::new()); @@ -2070,7 +2071,8 @@ export const lightTheme = createTheme(vars, { fn test_transform_theme_to_vars_array() { // Test transform_theme_to_vars with array (covers line 250) let mut context = boa_engine::Context::default(); - let array = boa_engine::object::builtins::JsArray::new(&mut context); + let array = boa_engine::object::builtins::JsArray::new(&mut context) + .expect("creating an empty array should succeed"); let _ = array.push(boa_engine::JsValue::from(1), &mut context); let value = boa_engine::JsValue::from(array); let mut css_vars: SmallVec<[(String, String); 8]> = SmallVec::new(); diff --git a/libs/sheet/Cargo.toml b/libs/sheet/Cargo.toml index 4ca2a9c25..724c27513 100644 --- a/libs/sheet/Cargo.toml +++ b/libs/sheet/Cargo.toml @@ -11,12 +11,16 @@ categories = ["development-tools", "wasm", "web-programming"] [lints] workspace = true +[features] +default = ["vanilla-extract"] +vanilla-extract = ["extractor/vanilla-extract"] + [dependencies] css = { path = "../css" } serde = { version = "1.0.229", features = ["derive"] } serde_json = "1.0.151" regex-lite = "0.1" -extractor = { path = "../extractor" } +extractor = { path = "../extractor", default-features = false } rustc-hash = "2" [dev-dependencies] diff --git a/package.json b/package.json index 63345e030..690a41ada 100644 --- a/package.json +++ b/package.json @@ -5,8 +5,8 @@ "description": "devup-ui", "type": "module", "scripts": { - "lint": "cargo fmt --all -- --check && cargo clippy --all-targets --all-features -- -D warnings && eslint", - "lint:fix": "eslint --fix && cargo fmt", + "lint": "cargo fmt --all -- --check && cargo clippy --all-targets --all-features -- -D warnings && node --require ./eslint-typescript6.cjs ./node_modules/eslint/bin/eslint.js", + "lint:fix": "node --require ./eslint-typescript6.cjs ./node_modules/eslint/bin/eslint.js --fix && cargo fmt", "test": "cargo tarpaulin --out xml --out stdout --all-targets --engine llvm $(node -p \"process.env.CI ? '--fail-under 100' : ''\") && bun test", "test:e2e": "bunx playwright test", "test:e2e:next": "LANDING_BUILD_MODE=next bunx playwright test", @@ -23,17 +23,19 @@ "devDependencies": { "@devup-ui/eslint-plugin": "workspace:^", "@playwright/test": "^1.62.1", + "@typescript/native": "npm:typescript@^7.0.2", + "@typescript/typescript6": "^6.0.2", "@types/bun": "latest", - "@types/node": "^26.2", + "@types/node": "^26.4", "bun-test-env-dom": "^1.0.3", - "eslint": "^10.8", + "eslint": "^10.9", "eslint-plugin-devup": "^2.1", "eslint-plugin-eslint-plugin": "^7.6", "eslint-plugin-jsonc": "^3.4", "eslint-plugin-mdx": "^3.8", "globals": "^17.11", "husky": "^9.1", - "typescript": "^6.0" + "typescript": "^7.0.2" }, "author": "devfive", "workspaces": [ diff --git a/packages/bun-plugin/package.json b/packages/bun-plugin/package.json index 826278be5..fbe9ff0a6 100644 --- a/packages/bun-plugin/package.json +++ b/packages/bun-plugin/package.json @@ -21,7 +21,7 @@ "version": "1.0.15", "scripts": { "lint": "eslint", - "build": "tsc && bun build --target node src/index.cjs.ts --production --env=disable --outfile dist/index.cjs --format cjs --packages external && bun build --target node src/index.ts --production --env=disable --outfile dist/index.mjs --format esm --packages external && bun build --target node src/register.ts --production --env=disable --outfile dist/register.cjs --format cjs --packages external && bun build --target node src/register.ts --production --env=disable --outfile dist/register.mjs --format esm --packages external", + "build": "bun ../../node_modules/@typescript/native/bin/tsc && bun build --target node src/index.cjs.ts --production --env=disable --outfile dist/index.cjs --format cjs --packages external && bun build --target node src/index.ts --production --env=disable --outfile dist/index.mjs --format esm --packages external && bun build --target node src/register.ts --production --env=disable --outfile dist/register.cjs --format cjs --packages external && bun build --target node src/register.ts --production --env=disable --outfile dist/register.mjs --format esm --packages external", "test:regression": "cd __regression__ && bun test ./preload-race.bun.ts" }, "publishConfig": { @@ -51,7 +51,7 @@ }, "devDependencies": { "@types/bun": "latest", - "typescript": "^7.0" + "typescript": "^7.0.2" }, "peerDependencies": { "@devup-ui/wasm": "*" diff --git a/packages/components/README.md b/packages/components/README.md index d84355a5f..72d9da7e0 100644 --- a/packages/components/README.md +++ b/packages/components/README.md @@ -73,19 +73,31 @@ npm install @devup-ui/webpack-plugin ## Comparison Benchmarks -Next.js Build Time and Build Size (github action - ubuntu-latest) - -| Library | Version | Build Time | Build Size | -| ---------------------- | ------- | ---------- | ----------------- | -| tailwindcss | 4.1.13 | 20.22s | 57,415,796 bytes | -| styleX | 0.15.4 | 38.97s | 76,257,820 bytes | -| vanilla-extract | 1.17.4 | 20.09s | 59,366,237 bytes | -| kuma-ui | 1.5.9 | 21.61s | 67,422,085 bytes | -| panda-css | 1.3.1 | 22.01s | 62,431,065 bytes | -| chakra-ui | 3.27.0 | 29.99s | 210,122,493 bytes | -| mui | 7.3.2 | 22.21s | 94,231,958 bytes | -| devup-ui(per-file css) | 1.0.18 | 18.23s | 57,440,953 bytes | -| devup-ui(single css) | 1.0.18 | 18.35s | 57,409,008 bytes | +[Latest CI benchmark](https://github.com/dev-five-git/devup-ui/actions/runs/33239265133) on `ubuntu-latest`. All Next.js builds use the native TypeScript 7 CLI for type checking. + +Webpack values are one cold build: + +| Library | Version | Build Time | Build Size | +| --------------------------- | ------- | ---------- | ----------------- | +| tailwindcss | 4.3.3 | 15.55s | 66,479,450 bytes | +| styleX | 0.19.0 | 34.27s | 95,417,163 bytes | +| vanilla-extract | 1.21.2 | 14.91s | 67,711,539 bytes | +| kuma-ui | 1.6.4 | 16.43s | 74,774,187 bytes | +| panda-css | 1.12.0 | 16.82s | 70,983,831 bytes | +| chakra-ui | 3.37.0 | 24.79s | 206,598,161 bytes | +| mui | 9.4.0 | 17.12s | 100,621,370 bytes | +| **devup-ui (per-file CSS)** | 1.0.40 | **13.43s** | 66,577,087 bytes | +| **devup-ui (single CSS)** | 1.0.40 | **13.37s** | 66,564,796 bytes | + +Turbopack values are medians of six cold builds in alternating order: + +| Library | Version | Median Build Time | Build Size | +| -------------------------------------- | ------- | ----------------- | -------------------- | +| tailwindcss | 4.3.3 | 6.55s | 38,386,955 bytes | +| **devup-ui (direct APIs, single CSS)** | 1.0.40 | **6.54s** | **36,519,234 bytes** | +| **devup-ui (static `.css.ts`)** | 1.0.40 | **6.47s** | 36,550,197 bytes | + +The Turbopack ranges overlap, so the direct-API result is effectively parity with Tailwind on this fixture. The static `.css.ts` row uses the `lite` WASM fast path; dynamic `.css.ts` modules use the full Boa evaluator and are not represented by that median. ## How it works diff --git a/packages/components/package.json b/packages/components/package.json index f4b976385..39a5f0cbd 100644 --- a/packages/components/package.json +++ b/packages/components/package.json @@ -20,7 +20,7 @@ "type": "module", "scripts": { "lint": "eslint", - "build": "tsc && vite build", + "build": "bun ../../node_modules/@typescript/native/bin/tsc && vite build", "storybook": "storybook dev -p 6006", "build-storybook": "storybook build", "package": "bun pm pack --pack-destination \"../../dist\"" @@ -56,7 +56,7 @@ "eslint-plugin-storybook": "^10.5", "rollup-plugin-preserve-directives": "^0.4", "storybook": "^10.5", - "typescript": "^7.0", + "typescript": "^7.0.2", "@typescript/typescript6": "^6.0", "vite": "^8.2", "vite-plugin-dts": "^5.0" diff --git a/packages/components/src/components/Select/__tests__/index.browser.test.tsx b/packages/components/src/components/Select/__tests__/index.browser.test.tsx index c3a2309de..a6823824d 100644 --- a/packages/components/src/components/Select/__tests__/index.browser.test.tsx +++ b/packages/components/src/components/Select/__tests__/index.browser.test.tsx @@ -59,6 +59,16 @@ describe('Select', () => { }).toThrow() }) + it('should require one element when SelectTrigger uses asChild', () => { + expect(() => { + render( + , + ) + }).toThrow('SelectTrigger with asChild requires a single element') + }) + it('should close select when clicking outside', () => { const { container } = render(
diff --git a/packages/components/src/components/Select/index.tsx b/packages/components/src/components/Select/index.tsx index 4dc643e08..4ce1b0220 100644 --- a/packages/components/src/components/Select/index.tsx +++ b/packages/components/src/components/Select/index.tsx @@ -9,11 +9,8 @@ import { } from '@devup-ui/react' import clsx from 'clsx' import { - Children, ComponentProps, - JSX, - JSXElementConstructor, - ReactElement, + isValidElement, useEffect, useRef, useState, @@ -113,7 +110,7 @@ export function Select({ } return ( - - + ) } @@ -185,18 +182,18 @@ export function SelectTrigger({ } if (asChild) { - const element = Children.only(children) as ReactElement< - ComponentProps> - > - const Comp = element.type - return ( - - ) + if (!isValidElement>(children)) { + throw new Error('SelectTrigger with asChild requires a single element') + } + + const Comp = children.type + const childProps = { + 'aria-expanded': open, + 'aria-label': 'Select toggle', + onClick: children.props.onClick ?? handleClick, + ...children.props, + } + return } return ( diff --git a/packages/components/src/components/Stepper/index.tsx b/packages/components/src/components/Stepper/index.tsx index 179600881..743c31a32 100644 --- a/packages/components/src/components/Stepper/index.tsx +++ b/packages/components/src/components/Stepper/index.tsx @@ -2,7 +2,7 @@ import { css, Flex } from '@devup-ui/react' import clsx from 'clsx' -import { ComponentProps, createContext, useContext, useState } from 'react' +import { ComponentProps, createContext, use, useState } from 'react' import { Button } from '../Button' import { Input } from '../Input' @@ -20,7 +20,7 @@ type StepperContextType = { const StepperContext = createContext(null) export const useStepper = () => { - const context = useContext(StepperContext) + const context = use(StepperContext) if (!context) { throw new Error('useStepper must be used within a StepperProvider') } @@ -58,7 +58,7 @@ function Stepper({ } return ( - {children} - + ) } @@ -144,10 +144,7 @@ function StepperInput({ className, ...props }: StepperInputProps) { }) const isInput = type === 'input' const Comp = isInput ? Input : 'div' - if (isInput) { - // div tag doesn't support allowClear prop - Object.assign(props, { allowClear: false }) - } + const componentProps = isInput ? { ...props, allowClear: false } : props return ( { setValue(Number(e.target.value)) @@ -178,8 +172,10 @@ function StepperInput({ className, ...props }: StepperInputProps) { type="number" // Fix prefix 0 issue value={value.toString()} - {...props} - /> + {...componentProps} + > + {isInput ? undefined : Number(value).toString()} + ) } diff --git a/packages/components/src/contexts/useSelect.ts b/packages/components/src/contexts/useSelect.ts index da05b8aa4..cb716bae2 100644 --- a/packages/components/src/contexts/useSelect.ts +++ b/packages/components/src/contexts/useSelect.ts @@ -1,5 +1,5 @@ 'use client' -import { createContext, useContext } from 'react' +import { createContext, use } from 'react' type SelectType = 'default' | 'radio' | 'checkbox' type SelectValue = T extends 'radio' ? string : string[] @@ -14,7 +14,7 @@ export const SelectContext = createContext<{ } | null>(null) export const useSelect = () => { - const context = useContext(SelectContext) + const context = use(SelectContext) if (!context) { throw new Error('useSelect must be used within a Select') } diff --git a/packages/eslint-plugin/package.json b/packages/eslint-plugin/package.json index a869f2de6..10e431d61 100644 --- a/packages/eslint-plugin/package.json +++ b/packages/eslint-plugin/package.json @@ -21,7 +21,7 @@ "main": "dist/index.cjs", "type": "module", "scripts": { - "build": "tsc && bun build --target node src/index.ts --production --env=disable --outfile dist/index.cjs --format cjs --packages external && bun build --target node src/index.ts --production --env=disable --outfile dist/index.mjs --format esm --packages external" + "build": "bun ../../node_modules/@typescript/native/bin/tsc && bun build --target node src/index.ts --production --env=disable --outfile dist/index.cjs --format cjs --packages external && bun build --target node src/index.ts --production --env=disable --outfile dist/index.mjs --format esm --packages external" }, "publishConfig": { "access": "public" @@ -38,15 +38,16 @@ "dist" ], "dependencies": { - "typescript-eslint": "^8.67", - "@typescript-eslint/utils": "^8.67" + "typescript-eslint": "^8.68", + "@typescript-eslint/utils": "^8.68" }, "peerDependencies": { "typescript-eslint": "*", "@typescript-eslint/utils": "*" }, "devDependencies": { - "@typescript-eslint/rule-tester": "^8.67", - "typescript": "^6.0" + "@typescript-eslint/rule-tester": "^8.68", + "@typescript/native": "npm:typescript@^7.0.2", + "typescript": "npm:@typescript/typescript6@^6.0.2" } } diff --git a/packages/next-plugin/README.md b/packages/next-plugin/README.md index 95e9221f7..5775ace8b 100644 --- a/packages/next-plugin/README.md +++ b/packages/next-plugin/README.md @@ -73,19 +73,31 @@ npm install @devup-ui/webpack-plugin ## Comparison Benchmarks -Next.js Build Time and Build Size (github action - ubuntu-latest) - -| Library | Version | Build Time | Build Size | -| ---------------------- | ------- | ---------- | ----------------- | -| tailwindcss | 4.1.13 | 20.22s | 57,415,796 bytes | -| styleX | 0.15.4 | 38.97s | 76,257,820 bytes | -| vanilla-extract | 1.17.4 | 20.09s | 59,366,237 bytes | -| kuma-ui | 1.5.9 | 21.61s | 67,422,085 bytes | -| panda-css | 1.3.1 | 22.01s | 62,431,065 bytes | -| chakra-ui | 3.27.0 | 29.99s | 210,122,493 bytes | -| mui | 7.3.2 | 22.21s | 94,231,958 bytes | -| devup-ui(per-file css) | 1.0.18 | 18.23s | 57,440,953 bytes | -| devup-ui(single css) | 1.0.18 | 18.35s | 57,409,008 bytes | +[Latest CI benchmark](https://github.com/dev-five-git/devup-ui/actions/runs/33239265133) on `ubuntu-latest`. All Next.js builds use the native TypeScript 7 CLI for type checking. + +Webpack values are one cold build: + +| Library | Version | Build Time | Build Size | +| --------------------------- | ------- | ---------- | ----------------- | +| tailwindcss | 4.3.3 | 15.55s | 66,479,450 bytes | +| styleX | 0.19.0 | 34.27s | 95,417,163 bytes | +| vanilla-extract | 1.21.2 | 14.91s | 67,711,539 bytes | +| kuma-ui | 1.6.4 | 16.43s | 74,774,187 bytes | +| panda-css | 1.12.0 | 16.82s | 70,983,831 bytes | +| chakra-ui | 3.37.0 | 24.79s | 206,598,161 bytes | +| mui | 9.4.0 | 17.12s | 100,621,370 bytes | +| **devup-ui (per-file CSS)** | 1.0.40 | **13.43s** | 66,577,087 bytes | +| **devup-ui (single CSS)** | 1.0.40 | **13.37s** | 66,564,796 bytes | + +Turbopack values are medians of six cold builds in alternating order: + +| Library | Version | Median Build Time | Build Size | +| -------------------------------------- | ------- | ----------------- | -------------------- | +| tailwindcss | 4.3.3 | 6.55s | 38,386,955 bytes | +| **devup-ui (direct APIs, single CSS)** | 1.0.40 | **6.54s** | **36,519,234 bytes** | +| **devup-ui (static `.css.ts`)** | 1.0.40 | **6.47s** | 36,550,197 bytes | + +The Turbopack ranges overlap, so the direct-API result is effectively parity with Tailwind on this fixture. The static `.css.ts` row uses the `lite` WASM fast path; dynamic `.css.ts` modules use the full Boa evaluator and are not represented by that median. ## How it works @@ -192,3 +204,23 @@ custom `distDir`) to `include`. ```tsx ``` + +## Turbopack build profiling + +Set `DEVUP_UI_PROFILE=1` for an opt-in, structured timing log during a +Turbopack build. + +```bash +DEVUP_UI_PROFILE=1 bun run build +``` + +```powershell +$env:DEVUP_UI_PROFILE = '1'; bun run build +``` + +Each `[devup-ui:profile]` JSON entry reports one phase. `next.graph` measures +the static import-graph pre-pass, `next.prewarm` measures production extraction +before Turbopack starts loaders, and `coordinator.extract` separates request, +WASM extraction, CSS/state serialization, and write time for each loaded +module. The setting is disabled by default and does not collect timings or +write logs when it is absent. diff --git a/packages/next-plugin/package.json b/packages/next-plugin/package.json index 9586959a2..c81b94347 100644 --- a/packages/next-plugin/package.json +++ b/packages/next-plugin/package.json @@ -22,7 +22,7 @@ "version": "1.0.83", "scripts": { "lint": "eslint", - "build": "tsc && bun build --target node src/index.ts --production --env=disable --outfile dist/index.cjs --format cjs --packages external && bun build --target node src/index.ts --production --env=disable --outfile dist/index.mjs --format esm --packages external && bun build --target node src/loader.ts --production --env=disable --outfile dist/loader.cjs --format cjs --packages external && bun build --target node src/loader.ts --production --env=disable --outfile dist/loader.mjs --format esm --packages external && bun build --target node src/css-loader.ts --production --env=disable --outfile dist/css-loader.cjs --format cjs --packages external && bun build --target node src/css-loader.ts --production --env=disable --outfile dist/css-loader.mjs --format esm --packages external" + "build": "bun ../../node_modules/@typescript/native/bin/tsc && bun build --target node src/index.ts --production --env=disable --outfile dist/index.cjs --format cjs --packages external && bun build --target node src/index.ts --production --env=disable --outfile dist/index.mjs --format esm --packages external && bun build --target node src/loader.ts --production --env=disable --outfile dist/loader.cjs --format cjs --packages external && bun build --target node src/loader.ts --production --env=disable --outfile dist/loader.mjs --format esm --packages external && bun build --target node src/css-loader.ts --production --env=disable --outfile dist/css-loader.cjs --format cjs --packages external && bun build --target node src/css-loader.ts --production --env=disable --outfile dist/css-loader.mjs --format esm --packages external" }, "publishConfig": { "access": "public" @@ -56,7 +56,7 @@ "@devup-ui/wasm": "workspace:^" }, "devDependencies": { - "typescript": "^7.0", + "typescript": "^7.0.2", "@types/webpack": "^5.28" }, "peerDependencies": { diff --git a/packages/next-plugin/src/__tests__/coordinator.test.ts b/packages/next-plugin/src/__tests__/coordinator.test.ts index dbdf00d30..6a23d2555 100644 --- a/packages/next-plugin/src/__tests__/coordinator.test.ts +++ b/packages/next-plugin/src/__tests__/coordinator.test.ts @@ -21,6 +21,7 @@ import { } from '../coordinator' let codeExtractSpy: ReturnType +let codeExtractWithoutSourceMapSpy: ReturnType let getCssSpy: ReturnType let exportSheetSpy: ReturnType let exportClassMapSpy: ReturnType @@ -34,6 +35,7 @@ function makeOptions( overrides: Partial = {}, ): CoordinatorOptions { return { + wasm, package: '@devup-ui/react', cssDir: join(tmpDir, 'css'), singleCss: false, @@ -81,6 +83,7 @@ function httpRequest( beforeEach(() => { codeExtractSpy = spyOn(wasm, 'codeExtract') + codeExtractWithoutSourceMapSpy = spyOn(wasm, 'codeExtractWithoutSourceMap') getCssSpy = spyOn(wasm, 'getCss') exportSheetSpy = spyOn(wasm, 'exportSheet') exportClassMapSpy = spyOn(wasm, 'exportClassMap') @@ -97,6 +100,7 @@ beforeEach(() => { afterEach(() => { resetCoordinator() codeExtractSpy.mockRestore() + codeExtractWithoutSourceMapSpy.mockRestore() getCssSpy.mockRestore() exportSheetSpy.mockRestore() exportClassMapSpy.mockRestore() @@ -124,14 +128,15 @@ describe('coordinator', () => { }) it('should handle /extract endpoint', async () => { - codeExtractSpy.mockReturnValue({ + const extractOutput = { code: 'transformed code', map: '{"version":3}', cssFile: 'devup-ui-1.css', updatedBaseStyle: true, free: mock(), [Symbol.dispose]: mock(), - }) + } + codeExtractSpy.mockReturnValue(extractOutput) getCssSpy.mockImplementation( (fileNum: number | null, _importMainCss: boolean) => { if (fileNum === null) return 'base-css' @@ -170,6 +175,7 @@ describe('coordinator', () => { // Verify WASM was called expect(codeExtractSpy).toHaveBeenCalledTimes(1) + expect(extractOutput.free).toHaveBeenCalledTimes(1) // Verify files were written (base CSS + per-file CSS + sheet + classmap + filemap) expect(writeFileSpy).toHaveBeenCalledTimes(5) @@ -177,6 +183,311 @@ describe('coordinator', () => { coordinator.close() }) + it('skips source-map generation when requested', async () => { + const extractOutput = { + code: 'transformed code', + map: undefined, + cssFile: undefined, + updatedBaseStyle: false, + free: mock(), + [Symbol.dispose]: mock(), + } + codeExtractWithoutSourceMapSpy.mockReturnValue(extractOutput) + const coordinator = startCoordinator(makeOptions({ sourceMap: false })) + await new Promise((r) => setTimeout(r, 100)) + const portStr = (writeFileSyncSpy.mock.calls[0] as [string, string])[1] + + const res = await httpRequest( + parseInt(portStr), + 'POST', + '/extract', + JSON.stringify({ + filename: 'src/App.tsx', + code: 'const x = ', + resourcePath: join(process.cwd(), 'src', 'App.tsx'), + }), + ) + + expect(res.status).toBe(200) + expect(codeExtractWithoutSourceMapSpy).toHaveBeenCalledTimes(1) + expect(codeExtractSpy).not.toHaveBeenCalled() + expect(extractOutput.free).toHaveBeenCalledTimes(1) + coordinator.close() + }) + + it('uses the static vanilla transform on a production cache miss', async () => { + const source = `import { style } from '@vanilla-extract/css' +export const box = style({ color: 'red' })` + const extractOutput = { + code: 'transformed code', + map: undefined, + cssFile: undefined, + updatedBaseStyle: false, + free: mock(), + [Symbol.dispose]: mock(), + } + codeExtractWithoutSourceMapSpy.mockReturnValue(extractOutput) + const coordinator = startCoordinator( + makeOptions({ sourceMap: false, staticVanillaExtract: true }), + ) + await new Promise((resolve) => setTimeout(resolve, 100)) + const port = parseInt( + (writeFileSyncSpy.mock.calls[0] as [string, string])[1], + ) + + const res = await httpRequest( + port, + 'POST', + '/extract', + JSON.stringify({ + filename: 'src/styles.css.ts', + code: source, + resourcePath: join(process.cwd(), 'src', 'styles.css.ts'), + }), + ) + + expect(res.status).toBe(200) + expect(codeExtractWithoutSourceMapSpy).toHaveBeenCalledWith( + 'src/styles.css.ts', + `import { css } from '@devup-ui/react' +export const box = css({ color: 'red' })`, + '@devup-ui/react', + './../.tmp-coordinator-test/css', + false, + false, + true, + {}, + ) + expect(extractOutput.free).toHaveBeenCalledTimes(1) + coordinator.close() + }) + + it('reuses byte-identical singleCss prewarm output', async () => { + const source = 'const x = ' + const options = makeOptions({ + singleCss: true, + prewarmedOutputs: new Map([ + [ + 'src/App.tsx', + { + code: 'transformed prewarm code', + cssFile: 'devup-ui.css', + map: '{"version":3}', + source, + updatedBaseStyle: true, + }, + ], + ]), + }) + const coordinator = startCoordinator(options) + + await new Promise((r) => setTimeout(r, 100)) + + const portStr = (writeFileSyncSpy.mock.calls[0] as [string, string])[1] + const port = parseInt(portStr) + const res = await httpRequest( + port, + 'POST', + '/extract', + JSON.stringify({ + filename: 'src/App.tsx', + code: source, + resourcePath: join(process.cwd(), 'src', 'App.tsx'), + }), + ) + + expect(res.status).toBe(200) + expect(JSON.parse(res.body)).toMatchObject({ + code: 'transformed prewarm code', + map: '{"version":3}', + cssFile: 'devup-ui.css', + updatedBaseStyle: true, + }) + expect(codeExtractSpy).not.toHaveBeenCalled() + expect(writeFileSpy).not.toHaveBeenCalled() + + coordinator.close() + }) + + it('reuses and rewrites byte-identical per-file prewarm output', async () => { + const source = 'const x = ' + getCssSpy.mockReturnValue('prewarmed bucket css') + const coordinator = startCoordinator( + makeOptions({ + prewarmedFiles: ['src/App.tsx'], + prewarmedOutputs: new Map([ + [ + 'src/App.tsx', + { + code: 'import "./df/devup-ui-79.css";\nconst x = 1', + cssFile: 'devup-ui-79.css', + map: '{"version":3}', + source, + updatedBaseStyle: false, + }, + ], + ]), + }), + ) + + await new Promise((resolve) => setTimeout(resolve, 100)) + const port = parseInt( + (writeFileSyncSpy.mock.calls[0] as [string, string])[1], + ) + const res = await httpRequest( + port, + 'POST', + '/extract', + JSON.stringify({ + filename: 'src/App.tsx', + code: source, + resourcePath: join(process.cwd(), 'src', 'App.tsx'), + }), + ) + + expect(res.status).toBe(200) + expect(JSON.parse(res.body)).toMatchObject({ + code: 'import "./df/devup-ui.css?fileNum=79";\nconst x = 1', + cssFile: 'devup-ui-79.css', + map: '{"version":3}', + updatedBaseStyle: false, + }) + expect(codeExtractSpy).not.toHaveBeenCalled() + expect(writeFileSpy).not.toHaveBeenCalled() + + const css = await httpRequest( + port, + 'GET', + '/css?fileNum=79&importMainCss=true&waitForIdle=true', + ) + expect(css).toEqual({ status: 200, body: 'prewarmed bucket css' }) + expect(getCssSpy).toHaveBeenCalledWith(79, true) + + coordinator.close() + }) + + it('profiles both base CSS serialization paths separately from writes', async () => { + const originalProfile = process.env.DEVUP_UI_PROFILE + process.env.DEVUP_UI_PROFILE = '1' + const infoSpy = spyOn(console, 'info').mockImplementation(() => {}) + codeExtractSpy.mockReturnValue({ + code: 'transformed code', + map: undefined, + css: 'collected css', + cssFile: 'devup-ui-1.css', + updatedBaseStyle: false, + free: mock(), + [Symbol.dispose]: mock(), + }) + getCssSpy.mockImplementation((fileNum: number | null) => + fileNum === null ? 'base-css' : `file-css-${fileNum}`, + ) + exportSheetSpy.mockReturnValue('sheet-json') + exportClassMapSpy.mockReturnValue('classmap-json') + exportFileMapSpy.mockReturnValue('filemap-json') + + const coordinator = startCoordinator(makeOptions()) + try { + await new Promise((resolve) => setTimeout(resolve, 100)) + const port = parseInt( + (writeFileSyncSpy.mock.calls[0] as [string, string])[1], + ) + + const res = await httpRequest( + port, + 'POST', + '/extract', + JSON.stringify({ + filename: 'src/profile.tsx', + code: 'const profile = true', + resourcePath: join(process.cwd(), 'src', 'profile.tsx'), + }), + ) + + expect(res.status).toBe(200) + const message = infoSpy.mock.calls + .map(([value]) => value) + .find( + (value): value is string => + typeof value === 'string' && + value.startsWith( + '[devup-ui:profile] {"phase":"coordinator.extract"', + ), + ) + if (message === undefined) throw new Error('missing extract profile') + const profile = JSON.parse( + message.slice('[devup-ui:profile] '.length), + ) as Record + + expect(profile).toMatchObject({ + cacheHit: false, + classMapSnapshotBytes: Buffer.byteLength('classmap-json'), + cssSnapshotBytes: expect.any(Number), + fileMapSnapshotBytes: Buffer.byteLength('filemap-json'), + phase: 'coordinator.extract', + scheduledWrites: 5, + sheetSnapshotBytes: Buffer.byteLength('sheet-json'), + sourceBytes: Buffer.byteLength('const profile = true'), + }) + expect(profile.classMapSnapshotMs).toBeTypeOf('number') + expect(profile.cssSnapshotMs).toBeTypeOf('number') + expect(profile.fileMapSnapshotMs).toBeTypeOf('number') + expect(profile.sheetSnapshotMs).toBeTypeOf('number') + + codeExtractSpy.mockReturnValue({ + code: 'transformed base code', + map: undefined, + css: 'collected base css', + cssFile: 'devup-ui-2.css', + updatedBaseStyle: true, + free: mock(), + [Symbol.dispose]: mock(), + }) + const baseRes = await httpRequest( + port, + 'POST', + '/extract', + JSON.stringify({ + filename: 'src/profile-base.tsx', + code: 'const profileBase = true', + resourcePath: join(process.cwd(), 'src', 'profile-base.tsx'), + }), + ) + + expect(baseRes.status).toBe(200) + const baseMessage = infoSpy.mock.calls + .map(([value]) => value) + .find( + (value): value is string => + typeof value === 'string' && + value.includes('"filename":"src/profile-base.tsx"'), + ) + if (baseMessage === undefined) { + throw new Error('missing base CSS extract profile') + } + const baseProfile = JSON.parse( + baseMessage.slice('[devup-ui:profile] '.length), + ) as Record + + expect(baseProfile).toMatchObject({ + cacheHit: false, + cssSnapshotBytes: expect.any(Number), + filename: 'src/profile-base.tsx', + phase: 'coordinator.extract', + scheduledWrites: 5, + }) + expect(baseProfile.cssSnapshotMs).toBeTypeOf('number') + } finally { + coordinator.close() + infoSpy.mockRestore() + if (originalProfile === undefined) { + delete process.env.DEVUP_UI_PROFILE + } else { + process.env.DEVUP_UI_PROFILE = originalProfile + } + } + }) + it('should rewrite per-file CSS imports when singleCss=false', async () => { codeExtractSpy.mockReturnValue({ code: 'import "./../../df/devup-ui/devup-ui-79.css";\nimport "./../../df/devup-ui/devup-ui-3.css";\nconst x = 1;', @@ -556,6 +867,36 @@ describe('coordinator', () => { coordinator.close() }) + it('replaces an existing coordinator without retaining its server', async () => { + const options = makeOptions() + const first = startCoordinator(options) + await new Promise((resolve) => setTimeout(resolve, 100)) + const firstPort = parseInt( + (writeFileSyncSpy.mock.calls.at(-1) as [string, string])[1], + ) + + const second = startCoordinator(options) + await new Promise((resolve) => setTimeout(resolve, 100)) + const secondPort = parseInt( + (writeFileSyncSpy.mock.calls.at(-1) as [string, string])[1], + ) + + let firstClosed = false + try { + await httpRequest(firstPort, 'GET', '/health') + } catch { + firstClosed = true + } + expect(firstClosed).toBe(true) + + // Closing the superseded handle must not close the replacement server. + first.close() + const res = await httpRequest(secondPort, 'GET', '/health') + expect(res).toEqual({ status: 200, body: 'ok' }) + + second.close() + }) + it('should touch devup-ui.css to invalidate Turbopack cache when singleCss=false and new CSS collected', async () => { codeExtractSpy.mockReturnValue({ code: 'import "./../../df/devup-ui/devup-ui-5.css";\nconst x = 1;', diff --git a/packages/next-plugin/src/__tests__/css-loader.test.ts b/packages/next-plugin/src/__tests__/css-loader.test.ts index 98d9e95d4..1ff6f7187 100644 --- a/packages/next-plugin/src/__tests__/css-loader.test.ts +++ b/packages/next-plugin/src/__tests__/css-loader.test.ts @@ -13,7 +13,7 @@ import { spyOn, } from 'bun:test' -import devupUICssLoader, { resetInit } from '../css-loader' +import devupUICssLoader, { resetInit, setWasmForTesting } from '../css-loader' type CssLoaderThis = ThisParameterType @@ -45,6 +45,7 @@ beforeAll(() => { importFileMapSpy = spyOn(wasm, 'importFileMap').mockReturnValue(undefined) existsSyncSpy = spyOn(fs, 'existsSync').mockReturnValue(false) readFileSyncSpy = spyOn(fs, 'readFileSync').mockReturnValue('{}') + setWasmForTesting(wasm) }) afterEach(() => { diff --git a/packages/next-plugin/src/__tests__/loader.test.ts b/packages/next-plugin/src/__tests__/loader.test.ts index 551111a0c..c7f33b496 100644 --- a/packages/next-plugin/src/__tests__/loader.test.ts +++ b/packages/next-plugin/src/__tests__/loader.test.ts @@ -15,7 +15,7 @@ import { } from 'bun:test' import type { DevupUILoaderOptions } from '../loader' -import devupUILoader, { resetInit } from '../loader' +import devupUILoader, { resetInit, setWasmForTesting } from '../loader' type LoaderThis = ThisParameterType @@ -68,6 +68,7 @@ beforeEach(() => { importFileMapSpy = spyOn(wasm, 'importFileMap').mockImplementation(() => {}) importSheetSpy = spyOn(wasm, 'importSheet').mockImplementation(() => {}) registerThemeSpy = spyOn(wasm, 'registerTheme').mockImplementation(() => {}) + setWasmForTesting(wasm) dateNowSpy = spyOn(Date, 'now').mockReturnValue(0) }) diff --git a/packages/next-plugin/src/__tests__/plugin.test.ts b/packages/next-plugin/src/__tests__/plugin.test.ts index 19d60c892..c9fdde1b4 100644 --- a/packages/next-plugin/src/__tests__/plugin.test.ts +++ b/packages/next-plugin/src/__tests__/plugin.test.ts @@ -1,6 +1,7 @@ import * as fs from 'node:fs' import { join, resolve } from 'node:path' +import type { StaticImportGraph } from '@devup-ui/plugin-utils' import * as importGraphModule from '@devup-ui/plugin-utils' import * as wasm from '@devup-ui/wasm' import * as webpackPluginModule from '@devup-ui/webpack-plugin' @@ -15,7 +16,13 @@ import { } from 'bun:test' import * as coordinatorModule from '../coordinator' -import { DevupUI } from '../plugin' +import { + DevupUI, + reloadTurboSetupModuleForTesting, + resetTurboSetupCacheForTesting, + selectWasmVariant, +} from '../plugin' +import { setWasmForTesting, setWebpackPluginForTesting } from '../wasm' type CodeExtractResult = ReturnType type NextWebpackConfig = Parameters< @@ -51,6 +58,18 @@ function createCodeExtractResult(contents: string): CodeExtractResult { } as unknown as CodeExtractResult } +function createSingleFileGraph(filename: string): StaticImportGraph { + return { + files: [filename], + fileSet: new Set([filename]), + staticImports: new Map([[filename, new Set()]]), + staticImporters: new Map([[filename, new Set()]]), + dynamicTargets: new Set(), + dynamicImports: new Map([[filename, new Set()]]), + externalImports: new Map([[filename, new Set()]]), + } +} + let existsSyncSpy: ReturnType let mkdirSyncSpy: ReturnType let readFileSyncSpy: ReturnType @@ -68,6 +87,7 @@ let exportSheetSpy: ReturnType let exportClassMapSpy: ReturnType let exportFileMapSpy: ReturnType let codeExtractSpy: ReturnType +let codeExtractWithoutSourceMapSpy: ReturnType let devupUIWebpackPluginSpy: ReturnType let startCoordinatorSpy: ReturnType @@ -76,6 +96,7 @@ let originalFetch: typeof global.fetch let originalDebugPort: number beforeEach(() => { + resetTurboSetupCacheForTesting() existsSyncSpy = spyOn(fs, 'existsSync').mockReturnValue(false) mkdirSyncSpy = spyOn(fs, 'mkdirSync').mockReturnValue(undefined) readFileSyncSpy = spyOn(fs, 'readFileSync').mockReturnValue('{}') @@ -108,6 +129,12 @@ beforeEach(() => { codeExtractSpy = spyOn(wasm, 'codeExtract').mockImplementation( (_path: string, contents: string) => createCodeExtractResult(contents), ) + codeExtractWithoutSourceMapSpy = spyOn( + wasm, + 'codeExtractWithoutSourceMap', + ).mockImplementation((_path: string, contents: string) => + createCodeExtractResult(contents), + ) devupUIWebpackPluginSpy = spyOn( webpackPluginModule, 'DevupUIWebpackPlugin', @@ -116,6 +143,8 @@ beforeEach(() => { coordinatorModule, 'startCoordinator', ).mockReturnValue({ close: mock() as () => void }) + setWasmForTesting(wasm) + setWebpackPluginForTesting(webpackPluginModule) originalEnv = { ...process.env } originalFetch = global.fetch @@ -124,6 +153,9 @@ beforeEach(() => { }) afterEach(() => { + resetTurboSetupCacheForTesting() + setWasmForTesting(undefined) + setWebpackPluginForTesting(undefined) process.env = originalEnv global.fetch = originalFetch process.debugPort = originalDebugPort @@ -144,11 +176,37 @@ afterEach(() => { exportClassMapSpy.mockRestore() exportFileMapSpy.mockRestore() codeExtractSpy.mockRestore() + codeExtractWithoutSourceMapSpy.mockRestore() devupUIWebpackPluginSpy.mockRestore() startCoordinatorSpy.mockRestore() }) describe('DevupUINextPlugin', () => { + it('selects the lite engine only when the graph has no vanilla-extract file', () => { + expect(selectWasmVariant(undefined)).toBe('full') + expect( + selectWasmVariant({ files: ['src/page.tsx'] } as StaticImportGraph), + ).toBe('lite') + expect( + selectWasmVariant({ files: ['src/theme.css.ts'] } as StaticImportGraph), + ).toBe('full') + expect( + selectWasmVariant({ files: ['src/theme.css.js'] } as StaticImportGraph), + ).toBe('full') + expect( + selectWasmVariant( + { files: ['src/theme.css.ts'] } as StaticImportGraph, + ['src/theme.css.ts'], + true, + ), + ).toBe('lite') + expect( + selectWasmVariant({ files: ['src/page.tsx'] } as StaticImportGraph, [ + 'node_modules/design-system/theme.css.ts', + ]), + ).toBe('full') + }) + describe('webpack', () => { it('should apply webpack plugin', async () => { const ret = DevupUI({}) @@ -208,6 +266,109 @@ describe('DevupUINextPlugin', () => { }) }) describe('turbo', () => { + it('reuses production setup across Next config module reloads', () => { + setNodeEnv('production') + process.env.TURBOPACK = '1' + process.env.DEVUP_UI_PROFILE = '1' + getDefaultThemeSpy.mockReturnValue('dark') + const filename = resolve('src/app/page.tsx') + const graphSpy = spyOn( + importGraphModule, + 'buildStaticImportGraph', + ).mockReturnValue(createSingleFileGraph(filename)) + const compiledSpy = spyOn( + importGraphModule, + 'computeCompiledFiles', + ).mockReturnValue(['src/app/page.tsx']) + const profileSpy = spyOn(console, 'info').mockImplementation(() => {}) + const handoffFile = join('df', 'setup.bin') + let handoff: Parameters[1] | undefined + writeFileSyncSpy.mockImplementation((path, data) => { + if (String(path) === handoffFile) handoff = data + }) + readFileSyncSpy.mockImplementation((path) => { + if (String(path) === handoffFile && handoff !== undefined) { + return handoff as never + } + return '{}' as never + }) + unlinkSyncSpy.mockImplementation((path) => { + if (String(path) === handoffFile) throw new Error('cleanup failed') + }) + + try { + const first = DevupUI({}, { singleCss: true }) + reloadTurboSetupModuleForTesting() + const second = DevupUI( + { env: { EXISTING: 'value' } }, + { singleCss: true }, + ) + + expect(second.turbopack?.rules).toEqual(first.turbopack?.rules) + expect(second.env).toEqual({ + DEVUP_UI_DEFAULT_THEME: 'dark', + EXISTING: 'value', + }) + expect(graphSpy).toHaveBeenCalledTimes(1) + expect(codeExtractWithoutSourceMapSpy).toHaveBeenCalledTimes(1) + expect(startCoordinatorSpy).toHaveBeenCalledTimes(1) + expect(unlinkSyncSpy).toHaveBeenCalledWith(handoffFile) + expect(profileSpy).toHaveBeenCalledWith( + expect.stringContaining('"cacheHit":true'), + ) + } finally { + profileSpy.mockRestore() + compiledSpy.mockRestore() + graphSpy.mockRestore() + } + }) + + it('falls back when a production setup handoff is not reusable', () => { + setNodeEnv('production') + process.env.TURBOPACK = '1' + const filename = resolve('src/app/page.tsx') + const graphSpy = spyOn( + importGraphModule, + 'buildStaticImportGraph', + ).mockReturnValue(createSingleFileGraph(filename)) + const compiledSpy = spyOn( + importGraphModule, + 'computeCompiledFiles', + ).mockReturnValue(['src/app/page.tsx']) + const handoffFile = join('df', 'setup.bin') + let failHandoffWrite = false + let handoff: Parameters[1] | undefined + writeFileSyncSpy.mockImplementation((path, data) => { + if (String(path) !== handoffFile) return + if (failHandoffWrite) throw new Error('write failed') + handoff = data + }) + readFileSyncSpy.mockImplementation((path) => { + if (String(path) === handoffFile && handoff !== undefined) { + return handoff as never + } + return '{}' as never + }) + + try { + DevupUI({}) + // The same module instance must not consume its own handoff. + DevupUI({}) + reloadTurboSetupModuleForTesting() + handoff = Buffer.from('invalid handoff') + failHandoffWrite = true + + // A corrupt read and a failed replacement write both fall back to the + // complete setup without leaking a token into another config load. + expect(() => DevupUI({})).not.toThrow() + expect(graphSpy).toHaveBeenCalledTimes(3) + expect(process.env.DEVUP_UI_TURBO_SETUP_TOKEN).toBeUndefined() + } finally { + compiledSpy.mockRestore() + graphSpy.mockRestore() + } + }) + it('should apply turbo config', async () => { process.env.TURBOPACK = '1' existsSyncSpy @@ -492,6 +653,7 @@ describe('DevupUINextPlugin', () => { }, }) expect(startCoordinatorSpy).toHaveBeenCalledWith({ + wasm, package: '@devup-ui/react', cssDir: resolve('df', 'devup-ui'), singleCss: false, @@ -507,8 +669,101 @@ describe('DevupUINextPlugin', () => { canonicalMap: expect.any(Object), expectedBaseFiles: expect.any(Array), prewarmedFiles: expect.any(Array), + prewarmedOutputs: expect.any(Map), + sourceMap: false, + staticVanillaExtract: false, }) }) + it('uses the lite extractor for a provably static vanilla style module', () => { + setNodeEnv('production') + process.env.TURBOPACK = '1' + const filename = resolve('src/styles.css.ts') + const source = `import { style } from '@vanilla-extract/css' +export const box = style({ color: 'red' })` + const graphSpy = spyOn( + importGraphModule, + 'buildStaticImportGraph', + ).mockReturnValue(createSingleFileGraph(filename)) + const compiledSpy = spyOn( + importGraphModule, + 'computeCompiledFiles', + ).mockReturnValue(['src/styles.css.ts']) + readFileSyncSpy.mockImplementation((path: fs.PathOrFileDescriptor) => + String(path).endsWith('styles.css.ts') ? source : '{}', + ) + + try { + DevupUI({}) + + expect(codeExtractWithoutSourceMapSpy).toHaveBeenCalledWith( + 'src/styles.css.ts', + `import { css } from '@devup-ui/react' +export const box = css({ color: 'red' })`, + '@devup-ui/react', + expect.any(String), + false, + false, + true, + expect.anything(), + ) + expect(startCoordinatorSpy).toHaveBeenCalledWith( + expect.objectContaining({ staticVanillaExtract: true }), + ) + } finally { + graphSpy.mockRestore() + compiledSpy.mockRestore() + } + }) + it('keeps the full extractor for dynamic vanilla style modules', () => { + setNodeEnv('production') + process.env.TURBOPACK = '1' + const filename = resolve('src/styles.css.ts') + const source = `import { style } from '@vanilla-extract/css' +const color = getColor() +export const box = style({ color })` + const graphSpy = spyOn( + importGraphModule, + 'buildStaticImportGraph', + ).mockReturnValue(createSingleFileGraph(filename)) + const compiledSpy = spyOn( + importGraphModule, + 'computeCompiledFiles', + ).mockReturnValue(['src/styles.css.ts']) + readFileSyncSpy.mockImplementation((path: fs.PathOrFileDescriptor) => + String(path).endsWith('styles.css.ts') ? source : '{}', + ) + + try { + DevupUI({}) + + expect(codeExtractWithoutSourceMapSpy).toHaveBeenCalledWith( + 'src/styles.css.ts', + source, + '@devup-ui/react', + expect.any(String), + false, + false, + true, + expect.anything(), + ) + expect(startCoordinatorSpy).toHaveBeenCalledWith( + expect.objectContaining({ staticVanillaExtract: false }), + ) + } finally { + graphSpy.mockRestore() + compiledSpy.mockRestore() + } + }) + it('keeps source maps when Next production browser source maps are enabled', () => { + setNodeEnv('production') + process.env.TURBOPACK = '1' + + DevupUI({ productionBrowserSourceMaps: true }) + + expect(startCoordinatorSpy).toHaveBeenCalledWith( + expect.objectContaining({ sourceMap: true }), + ) + }) it('should create theme.d.ts file', async () => { process.env.TURBOPACK = '1' existsSyncSpy.mockReturnValue(true) @@ -681,6 +936,7 @@ describe('DevupUINextPlugin', () => { // Verify coordinator was started with correct options expect(startCoordinatorSpy).toHaveBeenCalledWith({ + wasm, package: '@devup-ui/react', cssDir: resolve('df', 'devup-ui'), singleCss: false, @@ -696,8 +952,12 @@ describe('DevupUINextPlugin', () => { canonicalMap: expect.any(Object), expectedBaseFiles: expect.any(Array), prewarmedFiles: [], + prewarmedOutputs: expect.any(Map), + sourceMap: true, + staticVanillaExtract: false, }) expect(codeExtractSpy).not.toHaveBeenCalled() + expect(codeExtractWithoutSourceMapSpy).not.toHaveBeenCalled() // Verify initial CSS file is written expect(writeFileSyncSpy).toHaveBeenCalledWith( @@ -719,6 +979,8 @@ describe('DevupUINextPlugin', () => { it('hands the coordinator the full compiled-file set, not the static-only route map', () => { process.env.TURBOPACK = '1' + process.env.DEVUP_UI_PROFILE = '1' + const profileSpy = spyOn(console, 'info').mockImplementation(() => {}) // The base sheet must wait for lazily-loaded modules too, so // expectedBaseFiles comes from computeCompiledFiles (static + dynamic // edges) rather than computeFileRoutes (static edges only). Using the @@ -732,7 +994,7 @@ describe('DevupUINextPlugin', () => { 'computeFileRoutes', ).mockReturnValue({ 'src/app/page.tsx': [0] }) const events: string[] = [] - codeExtractSpy.mockImplementation( + codeExtractWithoutSourceMapSpy.mockImplementation( (filename: string, contents: string) => { events.push(`extract:${filename}`) return createCodeExtractResult(contents) @@ -751,8 +1013,8 @@ describe('DevupUINextPlugin', () => { prewarmedFiles: ['src/app/page.tsx', 'src/lazy/panel.tsx'], }), ) - expect(codeExtractSpy).toHaveBeenCalledTimes(2) - expect(codeExtractSpy).toHaveBeenCalledWith( + expect(codeExtractWithoutSourceMapSpy).toHaveBeenCalledTimes(2) + expect(codeExtractWithoutSourceMapSpy).toHaveBeenCalledWith( 'src/app/page.tsx', '{}', '@devup-ui/react', @@ -762,7 +1024,7 @@ describe('DevupUINextPlugin', () => { true, expect.anything(), ) - expect(codeExtractSpy).toHaveBeenCalledWith( + expect(codeExtractWithoutSourceMapSpy).toHaveBeenCalledWith( 'src/lazy/panel.tsx', '{}', '@devup-ui/react', @@ -777,9 +1039,49 @@ describe('DevupUINextPlugin', () => { 'extract:src/lazy/panel.tsx', 'startCoordinator', ]) + const coordinatorOptions = startCoordinatorSpy.mock.calls[0]?.[0] + expect(coordinatorOptions?.prewarmedOutputs).toEqual( + new Map([ + [ + 'src/app/page.tsx', + expect.objectContaining({ code: '{}', source: '{}' }), + ], + [ + 'src/lazy/panel.tsx', + expect.objectContaining({ code: '{}', source: '{}' }), + ], + ]), + ) + const profiles: Record[] = profileSpy.mock.calls + .map(([value]) => value) + .filter( + (value): value is string => + typeof value === 'string' && + value.startsWith('[devup-ui:profile] '), + ) + .map((value) => JSON.parse(value.slice('[devup-ui:profile] '.length))) + const prewarmProfile = profiles.find( + ({ phase }) => phase === 'next.prewarm', + ) + expect(prewarmProfile).toMatchObject({ + collectMs: expect.any(Number), + extractMs: expect.any(Number), + files: 2, + phase: 'next.prewarm', + readMs: expect.any(Number), + sourceBytes: Buffer.byteLength('{}') * 2, + }) + expect(profiles).toEqual( + expect.arrayContaining([ + expect.objectContaining({ phase: 'next.initialCss' }), + expect.objectContaining({ phase: 'next.stateSnapshot' }), + expect.objectContaining({ phase: 'next.setup' }), + ]), + ) // the static-only route map is not consulted outside atom-hoist mode expect(routesSpy).not.toHaveBeenCalled() } finally { + profileSpy.mockRestore() compiledSpy.mockRestore() routesSpy.mockRestore() } @@ -829,7 +1131,7 @@ describe('DevupUINextPlugin', () => { ], }), ) - expect(codeExtractSpy).toHaveBeenCalledTimes(2) + expect(codeExtractWithoutSourceMapSpy).toHaveBeenCalledTimes(2) } finally { graphSpy.mockRestore() compiledSpy.mockRestore() @@ -845,8 +1147,8 @@ describe('DevupUINextPlugin', () => { try { DevupUI({}, { singleCss: true }) - expect(codeExtractSpy).toHaveBeenCalledTimes(2) - expect(codeExtractSpy).toHaveBeenCalledWith( + expect(codeExtractWithoutSourceMapSpy).toHaveBeenCalledTimes(2) + expect(codeExtractWithoutSourceMapSpy).toHaveBeenCalledWith( 'src/app/card.tsx', '{}', '@devup-ui/react', diff --git a/packages/next-plugin/src/__tests__/profile.test.ts b/packages/next-plugin/src/__tests__/profile.test.ts new file mode 100644 index 000000000..b2e902e54 --- /dev/null +++ b/packages/next-plugin/src/__tests__/profile.test.ts @@ -0,0 +1,59 @@ +import { afterEach, beforeEach, describe, expect, it, spyOn } from 'bun:test' + +import { + elapsedMs, + isProfileEnabled, + profileStart, + reportProfile, +} from '../profile' + +let originalEnv: NodeJS.ProcessEnv + +beforeEach(() => { + originalEnv = { ...process.env } +}) + +afterEach(() => { + process.env = originalEnv +}) + +describe('profile', () => { + it('is disabled unless explicitly enabled', () => { + delete process.env.DEVUP_UI_PROFILE + const consoleSpy = spyOn(console, 'info').mockImplementation(() => {}) + + expect(isProfileEnabled()).toBe(false) + reportProfile('next.prewarm') + expect(consoleSpy).not.toHaveBeenCalled() + consoleSpy.mockRestore() + }) + + it('reports structured measurements when enabled', () => { + process.env.DEVUP_UI_PROFILE = '1' + const consoleSpy = spyOn(console, 'info').mockImplementation(() => {}) + + reportProfile('next.prewarm', { durationMs: 12.34, files: 2 }) + + expect(consoleSpy).toHaveBeenCalledWith( + '[devup-ui:profile] {"phase":"next.prewarm","durationMs":12.34,"files":2}', + ) + consoleSpy.mockRestore() + }) + + it('returns a non-negative elapsed duration', () => { + expect(elapsedMs(performance.now())).toBeGreaterThanOrEqual(0) + }) + + it('does not start a timer while disabled', () => { + delete process.env.DEVUP_UI_PROFILE + + expect(profileStart()).toBeUndefined() + expect(elapsedMs(undefined)).toBeUndefined() + }) + + it('starts a timer when enabled', () => { + process.env.DEVUP_UI_PROFILE = '1' + + expect(profileStart()).toBeTypeOf('number') + }) +}) diff --git a/packages/next-plugin/src/__tests__/static-vanilla.test.ts b/packages/next-plugin/src/__tests__/static-vanilla.test.ts new file mode 100644 index 000000000..16da2ad98 --- /dev/null +++ b/packages/next-plugin/src/__tests__/static-vanilla.test.ts @@ -0,0 +1,77 @@ +import { describe, expect, it } from 'bun:test' + +import { transformStaticVanillaExtract } from '../static-vanilla' + +describe('transformStaticVanillaExtract', () => { + it('converts static style modules without evaluating JavaScript', () => { + const source = `import { style } from '@vanilla-extract/css' +export const box = style({ color: 'red', padding: [4, null, 8] }) +export const hover = style({ selectors: { '&:hover': { opacity: 0.5 } } })` + + expect( + transformStaticVanillaExtract( + 'src/styles.css.ts', + source, + '@devup-ui/react', + ), + ).toBe(`import { css } from '@devup-ui/react' +export const box = css({ color: 'red', padding: [4, null, 8] }) +export const hover = css({ selectors: { '&:hover': { opacity: 0.5 } } })`) + }) + + it('rejects executable values and extra module statements', () => { + const dynamic = `import { style } from '@vanilla-extract/css' +const color = getColor() +export const box = style({ color })` + const spread = `import { style } from '@vanilla-extract/css' +export const box = style({ ...base, color: 'red' })` + + expect( + transformStaticVanillaExtract( + 'styles.css.ts', + dynamic, + '@devup-ui/react', + ), + ).toBeUndefined() + expect( + transformStaticVanillaExtract('styles.css.ts', spread, '@devup-ui/react'), + ).toBeUndefined() + expect( + transformStaticVanillaExtract('styles.ts', dynamic, '@devup-ui/react'), + ).toBeUndefined() + }) + + it('preserves comments and aliases in the static subset', () => { + const source = `/* import */ import { style as makeStyle } from '@vanilla-extract/css' +export const box = makeStyle({ + // responsive values remain source text + padding: [4, null, 8], +})` + + expect( + transformStaticVanillaExtract('styles.css.js', source, 'custom-package'), + ).toContain('export const box = css({') + }) + + it('rejects unsupported imports and malformed trailing comments', () => { + const multipleImports = `import { style, globalStyle } from '@vanilla-extract/css' +export const box = style({ color: 'red' })` + const unterminatedComment = `import { style } from '@vanilla-extract/css' +export const box = style({ color: 'red' }) /*` + + expect( + transformStaticVanillaExtract( + 'styles.css.ts', + multipleImports, + '@devup-ui/react', + ), + ).toBeUndefined() + expect( + transformStaticVanillaExtract( + 'styles.css.ts', + unterminatedComment, + '@devup-ui/react', + ), + ).toBeUndefined() + }) +}) diff --git a/packages/next-plugin/src/__tests__/wasm.test.ts b/packages/next-plugin/src/__tests__/wasm.test.ts new file mode 100644 index 000000000..1f5d34ee2 --- /dev/null +++ b/packages/next-plugin/src/__tests__/wasm.test.ts @@ -0,0 +1,34 @@ +import * as wasm from '@devup-ui/wasm' +import * as webpackPlugin from '@devup-ui/webpack-plugin' +import { afterEach, describe, expect, it } from 'bun:test' + +import { + loadWasm, + loadWebpackPlugin, + setWasmForTesting, + setWebpackPluginForTesting, +} from '../wasm' + +afterEach(() => { + setWasmForTesting(undefined) + setWebpackPluginForTesting(undefined) +}) + +describe('WASM selection', () => { + it('uses an injected namespace in tests', () => { + setWasmForTesting(wasm) + expect(loadWasm(true)).toBe(wasm) + expect(loadWasm(false)).toBe(wasm) + }) + + it('loads the full and lite package exports', () => { + expect(typeof loadWasm(false).codeExtract).toBe('function') + expect(typeof loadWasm(true).codeExtract).toBe('function') + }) + + it('loads or injects the Webpack plugin without a static dependency', () => { + expect(typeof loadWebpackPlugin().DevupUIWebpackPlugin).toBe('function') + setWebpackPluginForTesting(webpackPlugin) + expect(loadWebpackPlugin()).toBe(webpackPlugin) + }) +}) diff --git a/packages/next-plugin/src/coordinator.ts b/packages/next-plugin/src/coordinator.ts index 31866fddf..71bf53476 100644 --- a/packages/next-plugin/src/coordinator.ts +++ b/packages/next-plugin/src/coordinator.ts @@ -3,15 +3,13 @@ import { createServer, type IncomingMessage, type Server } from 'node:http' import { basename, dirname, join, relative } from 'node:path' import { getFileNumByFilename } from '@devup-ui/plugin-utils' -import { - codeExtract, - exportClassMap, - exportFileMap, - exportSheet, - getCss, -} from '@devup-ui/wasm' + +import { elapsedMs, profileStart, reportProfile } from './profile' +import { transformStaticVanillaExtract } from './static-vanilla' +import type { DevupWasm } from './wasm' export interface CoordinatorOptions { + wasm: DevupWasm package: string cssDir: string singleCss: boolean @@ -42,6 +40,16 @@ export interface CoordinatorOptions { * shared WASM sheet even though their loaders have not POSTed `/extract` yet. */ prewarmedFiles?: string[] + /** + * Production outputs extracted before Turbopack starts. A loader that + * receives byte-identical source can return this result without a second + * WASM extraction; the shared sheet is already populated. + */ + prewarmedOutputs?: Map + /** Generate transform source maps. Defaults to true for existing callers. */ + sourceMap?: boolean + /** Production-only static `.css.ts` fast path selected with the lite WASM. */ + staticVanillaExtract?: boolean /** * Idle threshold (ms) for the base-css `/css` wait. Defaults to 2500. * FALLBACK ONLY — used when `expectedBaseFiles` is empty (no deterministic @@ -63,6 +71,35 @@ export interface CoordinatorOptions { maxWaitMs?: number } +export interface PrewarmedOutput { + code: string + cssFile?: string + map?: string + source: string + updatedBaseStyle: boolean +} + +interface ExtractOutputSnapshot extends Omit { + css?: string +} + +/** Copy every WASM-backed getter once, then release its Rust allocation. */ +export function takeExtractOutput( + output: ReturnType, +): ExtractOutputSnapshot { + try { + return { + code: output.code, + css: output.css, + cssFile: output.cssFile, + map: output.map, + updatedBaseStyle: output.updatedBaseStyle, + } + } finally { + output.free() + } +} + // Latest-Wins Coalescing Serializer. // // Multiple Turbopack workers may call /extract concurrently, each producing @@ -313,7 +350,15 @@ function waitForBucket(bucket: string): Promise { export function startCoordinator(options: CoordinatorOptions): { close: () => void } { + // Next may evaluate its config more than once in the same process. Close the + // previous listener before replacing it so its HTTP server and request + // closure do not remain live for the rest of the build. + if (server) { + server.close() + server = null + } const { + wasm, package: libPackage, cssDir, singleCss, @@ -323,6 +368,18 @@ export function startCoordinator(options: CoordinatorOptions): { importAliases, coordinatorPortFile, } = options + const { + codeExtract, + codeExtractWithoutSourceMap, + exportClassMap, + exportFileMap, + exportSheet, + getCss, + } = wasm + const prewarmedOutputs = options.prewarmedOutputs ?? new Map() + const staticVanillaExtract = options.staticVanillaExtract ?? false + const extract = + options.sourceMap === false ? codeExtractWithoutSourceMap : codeExtract idleThresholdMs = options.idleThresholdMs ?? 2500 quietMs = options.quietMs ?? 10_000 @@ -334,7 +391,7 @@ export function startCoordinator(options: CoordinatorOptions): { for (const file of options.prewarmedFiles ?? []) extractedFiles.add(file) fileNumToBucket.clear() - server = createServer(async (req, res) => { + const coordinatorServer = createServer(async (req, res) => { const url = new URL(req.url ?? '/', `http://${req.headers.host}`) if (req.method === 'GET' && url.pathname === '/health') { @@ -344,6 +401,7 @@ export function startCoordinator(options: CoordinatorOptions): { } if (req.method === 'GET' && url.pathname === '/css') { + const cssStartedAt = profileStart() const fileNumParam = url.searchParams.get('fileNum') const importMainCss = url.searchParams.get('importMainCss') === 'true' const shouldWait = url.searchParams.get('waitForIdle') === 'true' @@ -364,10 +422,16 @@ export function startCoordinator(options: CoordinatorOptions): { res.writeHead(200, { 'Content-Type': 'text/css' }) res.end(getCss(fileNum ?? null, importMainCss)) + reportProfile('coordinator.css', { + durationMs: elapsedMs(cssStartedAt), + fileNum, + waitForIdle: shouldWait, + }) return } if (req.method === 'POST' && url.pathname === '/extract') { + const requestStartedAt = profileStart() // Reserve a "start slot" before yielding on `await readBody`. Without // this counter, `waitForIdle` could observe activeExtractions=0 in the // window between the request hitting this handler and `activeExtractions++` @@ -377,7 +441,9 @@ export function startCoordinator(options: CoordinatorOptions): { let promotedToActive = false let extractedFilename: string | undefined try { + const bodyStartedAt = profileStart() const body = JSON.parse(await readBody(req)) + const bodyDurationMs = elapsedMs(bodyStartedAt) activeExtractions++ pendingExtractStarts-- promotedToActive = true @@ -394,16 +460,31 @@ export function startCoordinator(options: CoordinatorOptions): { ) if (!relCssDir.startsWith('./')) relCssDir = `./${relCssDir}` - const result = codeExtract( - filename, - code, - libPackage, - relCssDir, - singleCss, - false, - true, - importAliases, - ) + // The production prewarm exists to make the CSS snapshot complete + // before Turbopack requests it. The generated CSS is already in that + // snapshot, so re-running WASM here is pure work in either CSS mode. + // Require exact source equality because Turbopack may hand a loader + // code modified by an earlier transform. + const prewarmed = prewarmedOutputs.get(filename) + const cacheHit = prewarmed?.source === code + const extractStartedAt = profileStart() + const result = cacheHit + ? prewarmed + : takeExtractOutput( + extract( + filename, + (staticVanillaExtract + ? transformStaticVanillaExtract(filename, code, libPackage) + : undefined) ?? code, + libPackage, + relCssDir, + singleCss, + false, + true, + importAliases, + ), + ) + const extractDurationMs = elapsedMs(extractStartedAt) // When singleCss=false, rewrite per-file CSS imports so Turbopack can resolve them. // Instead of importing "devup-ui-79.css" (which doesn't exist as a resolvable module), @@ -417,15 +498,28 @@ export function startCoordinator(options: CoordinatorOptions): { ) } + const snapshotStartedAt = profileStart() + let classMapSnapshotBytes: number | undefined + let classMapSnapshotMs: number | undefined + let cssSnapshotBytes: number | undefined + let cssSnapshotMs: number | undefined + let fileMapSnapshotBytes: number | undefined + let fileMapSnapshotMs: number | undefined + let sheetSnapshotBytes: number | undefined + let sheetSnapshotMs: number | undefined const promises: Promise[] = [] - if (result.updatedBaseStyle) { - promises.push( - safeWrite( - join(cssDir, 'devup-ui.css'), - `${getCss(null, false)}\n/* ${Date.now()} */`, - ), - ) + if (!cacheHit && result.updatedBaseStyle) { + const cssStartedAt = + snapshotStartedAt === undefined ? undefined : performance.now() + const css = `${getCss(null, false)}\n/* ${Date.now()} */` + const cssDurationMs = + cssStartedAt === undefined ? undefined : elapsedMs(cssStartedAt) + if (cssDurationMs !== undefined) { + cssSnapshotMs = (cssSnapshotMs ?? 0) + cssDurationMs + cssSnapshotBytes = (cssSnapshotBytes ?? 0) + Buffer.byteLength(css) + } + promises.push(safeWrite(join(cssDir, 'devup-ui.css'), css)) } if (result.cssFile) { @@ -435,14 +529,55 @@ export function startCoordinator(options: CoordinatorOptions): { // wait for the bucket's members before serving it. fileNumToBucket.set(fileNum, canonicalMapRef[filename] ?? filename) } + } + + if (!cacheHit && result.cssFile) { + const fileNum = getFileNumByFilename(result.cssFile) + const cssStartedAt = + snapshotStartedAt === undefined ? undefined : performance.now() + const css = getCss(fileNum, true) + const cssDurationMs = + cssStartedAt === undefined ? undefined : elapsedMs(cssStartedAt) + if (cssDurationMs !== undefined) { + cssSnapshotMs = (cssSnapshotMs ?? 0) + cssDurationMs + cssSnapshotBytes = (cssSnapshotBytes ?? 0) + Buffer.byteLength(css) + } + + const sheetStartedAt = + snapshotStartedAt === undefined ? undefined : performance.now() + const sheet = exportSheet() + sheetSnapshotMs = + sheetStartedAt === undefined ? undefined : elapsedMs(sheetStartedAt) + if (snapshotStartedAt !== undefined) { + sheetSnapshotBytes = Buffer.byteLength(sheet) + } + + const classMapStartedAt = + snapshotStartedAt === undefined ? undefined : performance.now() + const classMap = exportClassMap() + classMapSnapshotMs = + classMapStartedAt === undefined + ? undefined + : elapsedMs(classMapStartedAt) + if (snapshotStartedAt !== undefined) { + classMapSnapshotBytes = Buffer.byteLength(classMap) + } + + const fileMapStartedAt = + snapshotStartedAt === undefined ? undefined : performance.now() + const fileMap = exportFileMap() + fileMapSnapshotMs = + fileMapStartedAt === undefined + ? undefined + : elapsedMs(fileMapStartedAt) + if (snapshotStartedAt !== undefined) { + fileMapSnapshotBytes = Buffer.byteLength(fileMap) + } promises.push( - safeWrite( - join(cssDir, basename(result.cssFile)), - getCss(fileNum, true), - ), - safeWrite(sheetFile, exportSheet()), - safeWrite(classMapFile, exportClassMap()), - safeWrite(fileMapFile, exportFileMap()), + safeWrite(join(cssDir, basename(result.cssFile)), css), + safeWrite(sheetFile, sheet), + safeWrite(classMapFile, classMap), + safeWrite(fileMapFile, fileMap), ) // In non-singleCss mode, imports are rewritten from devup-ui-N.css to @@ -452,15 +587,22 @@ export function startCoordinator(options: CoordinatorOptions): { // new CSS rules are invisible to the browser. // When updatedBaseStyle is true, devup-ui.css is already written above. if (!singleCss && !result.updatedBaseStyle && result.css != null) { - promises.push( - safeWrite( - join(cssDir, 'devup-ui.css'), - `${getCss(null, false)}\n/* ${Date.now()} */`, - ), - ) + const cssStartedAt = + snapshotStartedAt === undefined ? undefined : performance.now() + const baseCss = `${getCss(null, false)}\n/* ${Date.now()} */` + const cssDurationMs = + cssStartedAt === undefined ? undefined : elapsedMs(cssStartedAt) + if (cssDurationMs !== undefined) { + cssSnapshotMs = (cssSnapshotMs ?? 0) + cssDurationMs + cssSnapshotBytes = + (cssSnapshotBytes ?? 0) + Buffer.byteLength(baseCss) + } + promises.push(safeWrite(join(cssDir, 'devup-ui.css'), baseCss)) } } + const snapshotDurationMs = elapsedMs(snapshotStartedAt) + const writeStartedAt = profileStart() await Promise.all(promises) res.writeHead(200, { 'Content-Type': 'application/json' }) @@ -472,6 +614,28 @@ export function startCoordinator(options: CoordinatorOptions): { updatedBaseStyle: result.updatedBaseStyle, }), ) + reportProfile('coordinator.extract', { + bodyMs: bodyDurationMs, + cacheHit, + classMapSnapshotBytes, + classMapSnapshotMs, + cssSnapshotBytes, + cssSnapshotMs, + durationMs: elapsedMs(requestStartedAt), + extractMs: extractDurationMs, + fileMapSnapshotBytes, + fileMapSnapshotMs, + filename, + sheetSnapshotBytes, + sheetSnapshotMs, + sourceBytes: + requestStartedAt === undefined + ? undefined + : Buffer.byteLength(code), + scheduledWrites: promises.length, + snapshotMs: snapshotDurationMs, + writeMs: elapsedMs(writeStartedAt), + }) } catch (error) { res.writeHead(500, { 'Content-Type': 'application/json' }) res.end( @@ -500,8 +664,9 @@ export function startCoordinator(options: CoordinatorOptions): { res.end('Not Found') }) - server.listen(0, '127.0.0.1', () => { - const addr = server!.address() + server = coordinatorServer + coordinatorServer.listen(0, '127.0.0.1', () => { + const addr = coordinatorServer.address() if (addr && typeof addr !== 'string') { writeFileSync(coordinatorPortFile, String(addr.port), 'utf-8') } @@ -514,8 +679,8 @@ export function startCoordinator(options: CoordinatorOptions): { // `close` itself returns synchronously (it is invoked from // `process.on('exit', ...)` where awaiting is not possible). void flushPendingWrites() - if (server) { - server.close() + coordinatorServer.close() + if (server === coordinatorServer) { server = null try { unlinkSync(coordinatorPortFile) diff --git a/packages/next-plugin/src/css-loader.ts b/packages/next-plugin/src/css-loader.ts index c928e2774..a404c2772 100644 --- a/packages/next-plugin/src/css-loader.ts +++ b/packages/next-plugin/src/css-loader.ts @@ -2,15 +2,10 @@ import { existsSync, readFileSync } from 'node:fs' import { Agent, request } from 'node:http' import { getFileNumByFilename } from '@devup-ui/plugin-utils' -import { - getCss, - importClassMap, - importFileMap, - importSheet, - registerTheme, -} from '@devup-ui/wasm' import type { RawLoaderDefinitionFunction } from 'webpack' +import { loadWasm } from './wasm' + export interface DevupUICssLoaderOptions { // turbo watch: boolean @@ -124,6 +119,13 @@ const devupUICssLoader: RawLoaderDefinitionFunction = return } + const { + getCss, + importClassMap, + importFileMap, + importSheet, + registerTheme, + } = loadWasm(false) if (!init) { init = true if (watch) { @@ -161,3 +163,5 @@ export const resetInit = () => { init = false cachedPort = null } + +export { setWasmForTesting } from './wasm' diff --git a/packages/next-plugin/src/index.ts b/packages/next-plugin/src/index.ts index b462bfdc5..a461245c0 100644 --- a/packages/next-plugin/src/index.ts +++ b/packages/next-plugin/src/index.ts @@ -1 +1 @@ -export { DevupUI } from './plugin' +export { DevupUI, type DevupUINextPluginOptions } from './plugin' diff --git a/packages/next-plugin/src/loader.ts b/packages/next-plugin/src/loader.ts index 1110699b2..de9f1515a 100644 --- a/packages/next-plugin/src/loader.ts +++ b/packages/next-plugin/src/loader.ts @@ -3,19 +3,10 @@ import { writeFile } from 'node:fs/promises' import { Agent, request } from 'node:http' import { basename, dirname, join, relative } from 'node:path' -import { - codeExtract, - exportClassMap, - exportFileMap, - exportSheet, - getCss, - importClassMap, - importFileMap, - importSheet, - registerTheme, -} from '@devup-ui/wasm' import type { RawLoaderDefinitionFunction } from 'webpack' +import { loadWasm } from './wasm' + export interface DevupUILoaderOptions { package: string cssDir: string @@ -185,6 +176,17 @@ const devupUILoader: RawLoaderDefinitionFunction = } // Non-coordinator mode: local WASM extraction + const { + codeExtract, + exportClassMap, + exportFileMap, + exportSheet, + getCss, + importClassMap, + importFileMap, + importSheet, + registerTheme, + } = loadWasm(false) const promises: Promise[] = [] if (!init) { init = true @@ -268,3 +270,5 @@ export const resetInit = () => { init = false cachedPorts.clear() } + +export { setWasmForTesting } from './wasm' diff --git a/packages/next-plugin/src/plugin.ts b/packages/next-plugin/src/plugin.ts index 4dca4ff7a..a026f1694 100644 --- a/packages/next-plugin/src/plugin.ts +++ b/packages/next-plugin/src/plugin.ts @@ -6,6 +6,7 @@ import { writeFileSync, } from 'node:fs' import { dirname, join, relative, resolve } from 'node:path' +import { deserialize, serialize } from 'node:v8' import { buildCanonicalMap, @@ -14,42 +15,116 @@ import { computeFileRoutes, createNodeModulesExcludeRegex, createThemeInterfaceArgs, + type DevupUIBasePluginOptions, loadDevupConfigSync, mergeImportAliases, planAtomHoist, type StaticImportGraph, } from '@devup-ui/plugin-utils' -import { - codeExtract, - exportClassMap, - exportFileMap, - exportSheet, - getCss, - getDefaultTheme, - getThemeInterface, - importCanonicalMap, - importClassMap, - importFileMap, - importFileRoutes, - importSheet, - registerShorthands, - registerTheme, - setAtomHoist, - setPrefix, -} from '@devup-ui/wasm' -import { - DevupUIWebpackPlugin, - type DevupUIWebpackPluginOptions, -} from '@devup-ui/webpack-plugin' import { type NextConfig } from 'next' -import { startCoordinator } from './coordinator' +import { + type PrewarmedOutput, + startCoordinator, + takeExtractOutput, +} from './coordinator' import { collectProductionPrewarmFiles } from './prewarm' +import { elapsedMs, profileStart, reportProfile } from './profile' +import { transformStaticVanillaExtract } from './static-vanilla' +import { loadWasm, loadWebpackPlugin } from './wasm' + +/** Options accepted by the Next.js integration. */ +export type DevupUINextPluginOptions = Partial & { + /** Share atoms reached by at least this many routes. */ + atomHoist?: number +} + +type TurboRules = NonNullable['rules']> -type DevupUiNextPluginOptions = Omit< - Partial, - 'watch' -> +interface ProductionTurboSetupCache { + defaultTheme?: string + key: string + owner: string + prewarmedFiles: number + rules: TurboRules + token: string + wasmVariant: 'lite' | 'full' +} + +const productionTurboSetupTokenEnv = 'DEVUP_UI_TURBO_SETUP_TOKEN' +let productionTurboSetupOwner = `${performance.timeOrigin}-${Math.random()}` + +function consumeProductionTurboSetup( + key: string, + filename: string, +): ProductionTurboSetupCache | undefined { + const token = process.env[productionTurboSetupTokenEnv] + if (!token) return undefined + try { + const cached = deserialize(readFileSync(filename)) as + ProductionTurboSetupCache | undefined + if ( + !cached || + cached.key !== key || + cached.owner === productionTurboSetupOwner || + cached.token !== token + ) { + return undefined + } + delete process.env[productionTurboSetupTokenEnv] + try { + unlinkSync(filename) + } catch { + // The handoff is single-use even if cleanup fails. + } + return cached + } catch { + return undefined + } +} + +function storeProductionTurboSetup( + filename: string, + cache: Omit, +): void { + const token = `${process.pid}-${performance.now()}-${Math.random()}` + try { + writeFileSync( + filename, + serialize({ + ...cache, + owner: productionTurboSetupOwner, + token, + } satisfies ProductionTurboSetupCache), + ) + process.env[productionTurboSetupTokenEnv] = token + } catch { + delete process.env[productionTurboSetupTokenEnv] + } +} + +/** @internal Reproduce Next's isolated config-module reload in unit tests. */ +export function reloadTurboSetupModuleForTesting(): void { + productionTurboSetupOwner = `${performance.timeOrigin}-${Math.random()}` +} + +/** @internal Keep the process-global one-build handoff isolated between tests. */ +export function resetTurboSetupCacheForTesting(): void { + delete process.env[productionTurboSetupTokenEnv] + productionTurboSetupOwner = `${performance.timeOrigin}-${Math.random()}` +} + +export function selectWasmVariant( + graph: StaticImportGraph | undefined, + candidateFiles: string[] = graph?.files ?? [], + staticVanillaExtract = false, +): 'lite' | 'full' { + return graph && + (staticVanillaExtract || + !candidateFiles.some((filename) => /\.css\.(?:ts|js)$/.test(filename))) + ? 'lite' + : 'full' +} /** * Devup UI Next Plugin @@ -59,8 +134,9 @@ type DevupUiNextPluginOptions = Omit< */ export function DevupUI( config: NextConfig, - options: DevupUiNextPluginOptions = {}, + options: DevupUINextPluginOptions = {}, ): NextConfig { + const pluginStartedAt = profileStart() const isTurbo = process.env.TURBOPACK === '1' || process.env.TURBOPACK === 'auto' // turbopack is now stable, TURBOPACK is set to auto without any flags @@ -81,19 +157,59 @@ export function DevupUI( importAliases: userImportAliases, } = options - registerShorthands(shorthands ?? {}) - - if (prefix) { - setPrefix(prefix) - } - const importAliases = mergeImportAliases(userImportAliases) - + const watch = process.env.NODE_ENV === 'development' + const sourceMap = watch || config.productionBrowserSourceMaps === true const sheetFile = join(distDir, 'sheet.json') const classMapFile = join(distDir, 'classMap.json') const fileMapFile = join(distDir, 'fileMap.json') const canonicalMapFile = join(distDir, 'canonicalMap.json') const gitignoreFile = join(distDir, '.gitignore') + const setupHandoffFile = join(distDir, 'setup.bin') + // Next loads next.config twice for a production Turbopack build in isolated + // module contexts, but both evaluations share the same process. Hand the + // completed first setup to exactly one different module instance so the + // second load does not rescan/reparse sources, re-extract them, or restart + // the coordinator. Calls from the same module instance never reuse it, + // which avoids turning this into a general cross-build cache. + const productionSetupKey = JSON.stringify({ + atomHoist, + cwd: process.cwd(), + cssDir, + devupFile, + distDir, + hoistV: process.env.DEVUP_HOIST_V, + importAliases, + include, + libPackage, + prefix, + shorthands, + singleCss, + sourceMap, + }) + const cachedSetup = watch + ? undefined + : consumeProductionTurboSetup(productionSetupKey, setupHandoffFile) + if (cachedSetup) { + if (cachedSetup.defaultTheme) { + process.env.DEVUP_UI_DEFAULT_THEME = cachedSetup.defaultTheme + config.env ??= {} + Object.assign(config.env, { + DEVUP_UI_DEFAULT_THEME: cachedSetup.defaultTheme, + }) + } + Object.assign(config.turbopack.rules, cachedSetup.rules) + reportProfile('next.setup', { + cacheHit: true, + durationMs: elapsedMs(pluginStartedAt), + pid: process.pid, + prewarmedFiles: cachedSetup.prewarmedFiles, + singleCss, + wasmVariant: cachedSetup.wasmVariant, + watch, + }) + return config + } if (!existsSync(distDir)) mkdirSync(distDir, { recursive: true, @@ -103,6 +219,86 @@ export function DevupUI( recursive: true, }) if (!existsSync(gitignoreFile)) writeFileSync(gitignoreFile, '*') + + // Boa is only needed to execute vanilla-extract-style `.css.ts`/`.css.js` + // modules. Build the graph before touching WASM so ordinary applications + // instantiate the much smaller engine, while vanilla-extract users retain + // the full evaluator automatically. If graph discovery fails, fail safe to + // the full engine. + const graphStartedAt = profileStart() + const srcDir = resolve(process.cwd(), 'src') + const tsconfigPath = resolve(process.cwd(), 'tsconfig.json') + let staticGraph: StaticImportGraph | undefined + try { + staticGraph = buildStaticImportGraph(srcDir, tsconfigPath) + } catch { + // The mapping pass below reports the graph failure and keeps its legacy + // best-effort behavior. + } + const candidateCollectStartedAt = + graphStartedAt === undefined ? undefined : performance.now() + const wasmCandidateFiles = staticGraph + ? collectProductionPrewarmFiles({ + cwd: process.cwd(), + graph: staticGraph, + expectedBaseFiles: [], + libPackage, + include, + }) + : [] + const candidateCollectMs = elapsedMs(candidateCollectStartedAt) + const staticVanillaSources = new Map< + string, + { code: string; source: string } + >() + const vanillaCandidates = wasmCandidateFiles.filter((filename) => + /\.css\.(?:ts|js)$/.test(filename), + ) + let staticVanillaExtract = + !watch && !sourceMap && vanillaCandidates.length > 0 + for (const filename of vanillaCandidates) { + if (!staticVanillaExtract) break + const source = readFileSync(resolve(process.cwd(), filename), 'utf-8') + const code = transformStaticVanillaExtract(filename, source, libPackage) + if (code === undefined) { + staticVanillaExtract = false + staticVanillaSources.clear() + break + } + staticVanillaSources.set(filename, { code, source }) + } + const wasmVariant = selectWasmVariant( + staticGraph, + wasmCandidateFiles, + staticVanillaExtract, + ) + const wasm = loadWasm(wasmVariant === 'lite') + const { + codeExtract, + codeExtractWithoutSourceMap, + exportClassMap, + exportFileMap, + exportSheet, + getCss, + getDefaultTheme, + getThemeInterface, + importCanonicalMap, + importClassMap, + importFileMap, + importFileRoutes, + importSheet, + registerShorthands, + registerTheme, + setAtomHoist, + setPrefix, + } = wasm + + registerShorthands(shorthands ?? {}) + + if (prefix) { + setPrefix(prefix) + } + // Import previous session state to handle Turbopack persistent cache. // When the dev server restarts, Turbopack may skip re-running loaders for // unchanged files. Without importing previous state, the coordinator's WASM @@ -145,7 +341,7 @@ export function DevupUI( // coordinator shares this WASM instance, so it applies to every /extract. const atomMode = atomHoist !== undefined && Number.isFinite(atomHoist) && atomHoist > 0 - const watch = process.env.NODE_ENV === 'development' + const extract = sourceMap ? codeExtract : codeExtractWithoutSourceMap // Hoisted out of the try so the coordinator can receive it for per-bucket // completion. Stays `{}` if the best-effort pre-pass fails. let canonicalMap: Record = {} @@ -153,14 +349,11 @@ export function DevupUI( // deterministic base-css completion signal handed to the coordinator. Stays // `[]` (idle fallback) when no routes are detected or the pre-pass fails. let expectedBaseFiles: string[] = [] - let staticGraph: StaticImportGraph | undefined try { - const srcDir = resolve(process.cwd(), 'src') - const tsconfigPath = resolve(process.cwd(), 'tsconfig.json') + if (!staticGraph) throw new Error('Static import graph unavailable') const cwd = process.cwd() // One scan+parse of the source tree, shared by all three consumers below. - const graph = buildStaticImportGraph(srcDir, tsconfigPath) - staticGraph = graph + const graph = staticGraph // Atom hoisting owns the shared-chunk decision, so collapse runs WITHOUT // the file-level @global hoist (DEVUP_HOIST_V) in atom mode. const hoistV = atomMode @@ -209,9 +402,19 @@ export function DevupUI( ) } } + reportProfile('next.graph', { + durationMs: elapsedMs(graphStartedAt), + files: staticGraph.files.length, + expectedBaseFiles: expectedBaseFiles.length, + wasmVariant, + }) } catch { // Pre-pass is best-effort; on failure canonical() is the identity (no // merge) and atom hoisting stays off. + reportProfile('next.graph', { + durationMs: elapsedMs(graphStartedAt), + failed: true, + }) } // Turbopack can request a CSS module before it has scheduled every source @@ -223,37 +426,94 @@ export function DevupUI( // route graph cannot represent. Loader-time extraction uses the same // keys/options and is idempotent. const prewarmedFiles: string[] = [] + const prewarmedOutputs = new Map() if (!watch && staticGraph) { + const prewarmStartedAt = profileStart() + let prewarmExtractMs = 0 + let prewarmReadMs = 0 + let prewarmSourceBytes = 0 const cwd = process.cwd() - const prewarmFiles = collectProductionPrewarmFiles({ - cwd, - graph: staticGraph, - expectedBaseFiles, - libPackage, - include, - }) + // The same complete candidate set selected the WASM variant above. Reuse + // it here instead of resolving source/package entries a second time, + // while retaining any compiled-file fallback supplied by the graph pass. + const prewarmFiles = [ + ...new Set([...wasmCandidateFiles, ...expectedBaseFiles]), + ].sort() for (const filename of prewarmFiles) { const resourcePath = resolve(cwd, filename) const relCssDir = `./${relative( dirname(resourcePath), cssDir, ).replaceAll('\\', '/')}` - codeExtract( - filename, - readFileSync(resourcePath, 'utf-8'), - libPackage, - relCssDir, - singleCss, - false, - true, - importAliases as unknown as Record, + const readStartedAt = + prewarmStartedAt === undefined ? undefined : performance.now() + const preparedVanilla = staticVanillaSources.get(filename) + const source = + preparedVanilla?.source ?? readFileSync(resourcePath, 'utf-8') + if (readStartedAt !== undefined) { + prewarmReadMs += performance.now() - readStartedAt + prewarmSourceBytes += Buffer.byteLength(source) + } + const extractStartedAt = + prewarmStartedAt === undefined ? undefined : performance.now() + const output = takeExtractOutput( + extract( + filename, + preparedVanilla?.code ?? source, + libPackage, + relCssDir, + singleCss, + false, + true, + importAliases as unknown as Record, + ), ) + if (extractStartedAt !== undefined) { + prewarmExtractMs += performance.now() - extractStartedAt + } + prewarmedOutputs.set(filename, { + code: output.code, + cssFile: output.cssFile, + map: output.map, + source, + updatedBaseStyle: output.updatedBaseStyle, + }) prewarmedFiles.push(filename) } + reportProfile('next.prewarm', { + collectMs: candidateCollectMs, + durationMs: elapsedMs(prewarmStartedAt), + extractMs: + prewarmStartedAt === undefined + ? undefined + : Number(prewarmExtractMs.toFixed(2)), + files: prewarmedFiles.length, + readMs: + prewarmStartedAt === undefined + ? undefined + : Number(prewarmReadMs.toFixed(2)), + sourceBytes: prewarmSourceBytes, + }) } // create devup-ui.css file - writeFileSync(join(cssDir, 'devup-ui.css'), getCss(null, false)) + const initialCssStartedAt = profileStart() + const initialCssSerializeStartedAt = + initialCssStartedAt === undefined ? undefined : performance.now() + const initialCss = getCss(null, false) + const initialCssSerializeMs = elapsedMs(initialCssSerializeStartedAt) + const initialCssWriteStartedAt = + initialCssStartedAt === undefined ? undefined : performance.now() + writeFileSync(join(cssDir, 'devup-ui.css'), initialCss) + reportProfile('next.initialCss', { + bytes: + initialCssStartedAt === undefined + ? undefined + : Buffer.byteLength(initialCss), + durationMs: elapsedMs(initialCssStartedAt), + serializeMs: initialCssSerializeMs, + writeMs: elapsedMs(initialCssWriteStartedAt), + }) // Delete stale port file from previous session so loaders don't connect // to a dead coordinator port. The new coordinator writes a fresh port file @@ -265,6 +525,7 @@ export function DevupUI( } const coordinator = startCoordinator({ + wasm, package: libPackage, cssDir, singleCss, @@ -276,15 +537,63 @@ export function DevupUI( canonicalMap, expectedBaseFiles, prewarmedFiles, + prewarmedOutputs, + sourceMap, + staticVanillaExtract, }) // Cleanup on exit process.on('exit', () => { coordinator.close() }) - const defaultSheet = JSON.parse(exportSheet()) - const defaultClassMap = JSON.parse(exportClassMap()) - const defaultFileMap = JSON.parse(exportFileMap()) + const stateSnapshotStartedAt = profileStart() + const sheetSerializeStartedAt = + stateSnapshotStartedAt === undefined ? undefined : performance.now() + const defaultSheetJson = exportSheet() + const sheetSerializeMs = elapsedMs(sheetSerializeStartedAt) + const sheetParseStartedAt = + stateSnapshotStartedAt === undefined ? undefined : performance.now() + const defaultSheet = JSON.parse(defaultSheetJson) + const sheetParseMs = elapsedMs(sheetParseStartedAt) + + const classMapSerializeStartedAt = + stateSnapshotStartedAt === undefined ? undefined : performance.now() + const defaultClassMapJson = exportClassMap() + const classMapSerializeMs = elapsedMs(classMapSerializeStartedAt) + const classMapParseStartedAt = + stateSnapshotStartedAt === undefined ? undefined : performance.now() + const defaultClassMap = JSON.parse(defaultClassMapJson) + const classMapParseMs = elapsedMs(classMapParseStartedAt) + + const fileMapSerializeStartedAt = + stateSnapshotStartedAt === undefined ? undefined : performance.now() + const defaultFileMapJson = exportFileMap() + const fileMapSerializeMs = elapsedMs(fileMapSerializeStartedAt) + const fileMapParseStartedAt = + stateSnapshotStartedAt === undefined ? undefined : performance.now() + const defaultFileMap = JSON.parse(defaultFileMapJson) + const fileMapParseMs = elapsedMs(fileMapParseStartedAt) + reportProfile('next.stateSnapshot', { + classMapBytes: + stateSnapshotStartedAt === undefined + ? undefined + : Buffer.byteLength(defaultClassMapJson), + classMapParseMs, + classMapSerializeMs, + durationMs: elapsedMs(stateSnapshotStartedAt), + fileMapBytes: + stateSnapshotStartedAt === undefined + ? undefined + : Buffer.byteLength(defaultFileMapJson), + fileMapParseMs, + fileMapSerializeMs, + sheetBytes: + stateSnapshotStartedAt === undefined + ? undefined + : Buffer.byteLength(defaultSheetJson), + sheetParseMs, + sheetSerializeMs, + }) // for theme script const defaultTheme = getDefaultTheme() if (defaultTheme) { @@ -349,11 +658,30 @@ export function DevupUI( }, } Object.assign(config.turbopack.rules, rules) + if (!watch) { + storeProductionTurboSetup(setupHandoffFile, { + defaultTheme, + key: productionSetupKey, + prewarmedFiles: prewarmedFiles.length, + rules, + wasmVariant, + }) + } + reportProfile('next.setup', { + cacheHit: false, + durationMs: elapsedMs(pluginStartedAt), + pid: process.pid, + prewarmedFiles: prewarmedFiles.length, + singleCss, + wasmVariant, + watch, + }) return config } const { webpack } = config config.webpack = (config, _options) => { + const { DevupUIWebpackPlugin } = loadWebpackPlugin() options.cssDir ??= resolve( _options.dev ? (options.distDir ?? 'df') : '.next/cache', `devup-ui_${_options.buildId}`, diff --git a/packages/next-plugin/src/profile.ts b/packages/next-plugin/src/profile.ts new file mode 100644 index 000000000..35f75aa48 --- /dev/null +++ b/packages/next-plugin/src/profile.ts @@ -0,0 +1,26 @@ +type ProfileFields = Record + +export function isProfileEnabled(): boolean { + return process.env.DEVUP_UI_PROFILE === '1' +} + +export function reportProfile(phase: string, fields: ProfileFields = {}): void { + if (!isProfileEnabled()) return + + console.info( + `[devup-ui:profile] ${JSON.stringify({ + phase, + ...fields, + })}`, + ) +} + +export function profileStart(): number | undefined { + return isProfileEnabled() ? performance.now() : undefined +} + +export function elapsedMs(start: number | undefined): number | undefined { + if (start === undefined) return undefined + + return Number((performance.now() - start).toFixed(2)) +} diff --git a/packages/next-plugin/src/static-vanilla.ts b/packages/next-plugin/src/static-vanilla.ts new file mode 100644 index 000000000..3bdd237c4 --- /dev/null +++ b/packages/next-plugin/src/static-vanilla.ts @@ -0,0 +1,194 @@ +function isIdentifierChar(char: string | undefined): boolean { + return char !== undefined && /[$\w]/.test(char) +} + +class StaticVanillaParser { + private index = 0 + private valid = true + + constructor( + private readonly source: string, + private readonly packageName: string, + ) {} + + parse(): string | undefined { + if (!this.word('import') || !this.char('{')) return undefined + const imported = this.identifier() + if (imported !== 'style') return undefined + let local = imported + if (this.word('as')) { + const alias = this.identifier() + if (alias === undefined) return undefined + local = alias + } + if ( + !this.char('}') || + !this.word('from') || + this.string() !== '@vanilla-extract/css' + ) { + return undefined + } + this.char(';') + + const declarations: string[] = [] + while (!this.done()) { + if (!this.word('export') || !this.word('const')) return undefined + const name = this.identifier() + if (name === undefined || !this.char('=') || !this.word(local)) { + return undefined + } + if (!this.char('(')) return undefined + this.skipTrivia() + const valueStart = this.index + if (!this.staticValue()) return undefined + const value = this.source.slice(valueStart, this.index) + if (!this.char(')')) return undefined + this.char(';') + declarations.push(`export const ${name} = css(${value})`) + } + + if (declarations.length === 0) return undefined + return `import { css } from '${this.packageName}'\n${declarations.join('\n')}` + } + + private staticValue(): boolean { + this.skipTrivia() + const char = this.source[this.index] + if (char === '{') return this.object() + if (char === '[') return this.array() + if (char === '"' || char === "'") return this.string() !== undefined + if (char === '+' || char === '-') this.index++ + const number = this.source + .slice(this.index) + .match(/^(?:\d+\.?\d*|\.\d+)(?:e[+-]?\d+)?/i) + if (number) { + this.index += number[0].length + return true + } + return this.word('true') || this.word('false') || this.word('null') + } + + private object(): boolean { + if (!this.char('{')) return false + if (this.char('}')) return true + while (true) { + this.skipTrivia() + const char = this.source[this.index] + const key = + char === '"' || char === "'" + ? this.string() + : (this.identifier() ?? this.numberKey()) + if (key === undefined || !this.char(':') || !this.staticValue()) { + return false + } + if (this.char('}')) return true + if (!this.char(',')) return false + if (this.char('}')) return true + } + } + + private array(): boolean { + if (!this.char('[')) return false + if (this.char(']')) return true + while (true) { + if (!this.staticValue()) return false + if (this.char(']')) return true + if (!this.char(',')) return false + if (this.char(']')) return true + } + } + + private numberKey(): string | undefined { + this.skipTrivia() + const match = this.source.slice(this.index).match(/^\d+(?:\.\d+)?/) + if (!match) return undefined + this.index += match[0].length + return match[0] + } + + private identifier(): string | undefined { + this.skipTrivia() + const match = this.source.slice(this.index).match(/^[$A-Z_a-z][$\w]*/) + if (!match) return undefined + this.index += match[0].length + return match[0] + } + + private string(): string | undefined { + this.skipTrivia() + const quote = this.source[this.index] + if (quote !== '"' && quote !== "'") return undefined + const start = ++this.index + while (this.index < this.source.length) { + const char = this.source[this.index++] + if (char === '\\') { + this.index++ + } else if (char === quote) { + return this.source.slice(start, this.index - 1) + } else if (char === '\n' || char === '\r') { + return undefined + } + } + return undefined + } + + private word(value: string): boolean { + this.skipTrivia() + if ( + !this.source.startsWith(value, this.index) || + isIdentifierChar(this.source[this.index - 1]) || + isIdentifierChar(this.source[this.index + value.length]) + ) { + return false + } + this.index += value.length + return true + } + + private char(value: string): boolean { + this.skipTrivia() + if (this.source[this.index] !== value) return false + this.index++ + return true + } + + private done(): boolean { + this.skipTrivia() + return this.valid && this.index === this.source.length + } + + private skipTrivia(): void { + while (this.index < this.source.length) { + if (/\s/.test(this.source[this.index])) { + this.index++ + } else if (this.source.startsWith('//', this.index)) { + const newline = this.source.indexOf('\n', this.index + 2) + this.index = newline === -1 ? this.source.length : newline + 1 + } else if (this.source.startsWith('/*', this.index)) { + const end = this.source.indexOf('*/', this.index + 2) + if (end === -1) { + this.valid = false + this.index = this.source.length + } else { + this.index = end + 2 + } + } else { + break + } + } + } +} + +/** + * Convert the deliberately small, statically provable subset of vanilla + * `style()` modules into Devup `css()` calls. Any executable expression or + * additional statement returns undefined and keeps the existing Boa path. + */ +export function transformStaticVanillaExtract( + filename: string, + source: string, + packageName: string, +): string | undefined { + if (!/\.css\.(?:ts|js)$/.test(filename)) return undefined + return new StaticVanillaParser(source, packageName).parse() +} diff --git a/packages/next-plugin/src/wasm.ts b/packages/next-plugin/src/wasm.ts new file mode 100644 index 000000000..c7d3e7cf5 --- /dev/null +++ b/packages/next-plugin/src/wasm.ts @@ -0,0 +1,58 @@ +import { existsSync } from 'node:fs' +import { createRequire } from 'node:module' +import { join } from 'node:path' + +export type DevupWasm = typeof import('@devup-ui/wasm') +export type DevupWebpackPlugin = typeof import('@devup-ui/webpack-plugin') + +let wasmForTesting: DevupWasm | undefined +let webpackPluginForTesting: DevupWebpackPlugin | undefined +let fullWasm: DevupWasm | undefined +let liteWasm: DevupWasm | undefined +let webpackPlugin: DevupWebpackPlugin | undefined + +function requireFromPlugin(specifier: string): T { + const installedPackage = join( + process.cwd(), + 'node_modules/@devup-ui/next-plugin/package.json', + ) + const workspacePackage = join( + process.cwd(), + 'packages/next-plugin/package.json', + ) + const requireBase = existsSync(installedPackage) + ? installedPackage + : existsSync(workspacePackage) + ? workspacePackage + : join(process.cwd(), 'package.json') + return createRequire(requireBase)(specifier) as T +} + +/** Load exactly one extraction engine for the lifetime of a Next config. */ +export function loadWasm(lite: boolean): DevupWasm { + if (wasmForTesting) return wasmForTesting + if (lite) { + return (liteWasm ??= requireFromPlugin('@devup-ui/wasm/lite')) + } + return (fullWasm ??= requireFromPlugin('@devup-ui/wasm')) +} + +/** Keep the Webpack adapter (and its full WASM) out of Turbopack startup. */ +export function loadWebpackPlugin(): DevupWebpackPlugin { + if (webpackPluginForTesting) return webpackPluginForTesting + return (webpackPlugin ??= requireFromPlugin( + '@devup-ui/webpack-plugin', + )) +} + +/** @internal Inject the WASM namespace for unit tests. */ +export function setWasmForTesting(value: DevupWasm | undefined): void { + wasmForTesting = value +} + +/** @internal Inject the Webpack namespace for unit tests. */ +export function setWebpackPluginForTesting( + value: DevupWebpackPlugin | undefined, +): void { + webpackPluginForTesting = value +} diff --git a/packages/plugin-utils/package.json b/packages/plugin-utils/package.json index 593976cc7..8e8a41685 100644 --- a/packages/plugin-utils/package.json +++ b/packages/plugin-utils/package.json @@ -18,7 +18,7 @@ "version": "1.0.13", "scripts": { "lint": "eslint", - "build": "tsc && bun build --target node src/index.ts --production --env=disable --outfile dist/index.cjs --format cjs --packages external && bun build --target node src/index.ts --production --env=disable --outfile dist/index.mjs --format esm --packages external" + "build": "bun ../../node_modules/@typescript/native/bin/tsc && bun build --target node src/index.ts --production --env=disable --outfile dist/index.cjs --format cjs --packages external && bun build --target node src/index.ts --production --env=disable --outfile dist/index.mjs --format esm --packages external" }, "publishConfig": { "access": "public" @@ -37,6 +37,6 @@ "dist" ], "devDependencies": { - "typescript": "^7.0" + "typescript": "^7.0.2" } } diff --git a/packages/react/README.md b/packages/react/README.md index ad8638ac3..bc91e68a5 100644 --- a/packages/react/README.md +++ b/packages/react/README.md @@ -73,19 +73,31 @@ npm install @devup-ui/webpack-plugin ## Comparison Benchmarks -Next.js Build Time and Build Size (github action - ubuntu-latest) - -| Library | Version | Build Time | Build Size | -| ---------------------- | ------- | ---------- | ----------------- | -| tailwindcss | 4.1.13 | 20.22s | 57,415,796 bytes | -| styleX | 0.15.4 | 38.97s | 76,257,820 bytes | -| vanilla-extract | 1.17.4 | 20.09s | 59,366,237 bytes | -| kuma-ui | 1.5.9 | 21.61s | 67,422,085 bytes | -| panda-css | 1.3.1 | 22.01s | 62,431,065 bytes | -| chakra-ui | 3.27.0 | 29.99s | 210,122,493 bytes | -| mui | 7.3.2 | 22.21s | 94,231,958 bytes | -| devup-ui(per-file css) | 1.0.18 | 18.23s | 57,440,953 bytes | -| devup-ui(single css) | 1.0.18 | 18.35s | 57,409,008 bytes | +[Latest CI benchmark](https://github.com/dev-five-git/devup-ui/actions/runs/33239265133) on `ubuntu-latest`. All Next.js builds use the native TypeScript 7 CLI for type checking. + +Webpack values are one cold build: + +| Library | Version | Build Time | Build Size | +| --------------------------- | ------- | ---------- | ----------------- | +| tailwindcss | 4.3.3 | 15.55s | 66,479,450 bytes | +| styleX | 0.19.0 | 34.27s | 95,417,163 bytes | +| vanilla-extract | 1.21.2 | 14.91s | 67,711,539 bytes | +| kuma-ui | 1.6.4 | 16.43s | 74,774,187 bytes | +| panda-css | 1.12.0 | 16.82s | 70,983,831 bytes | +| chakra-ui | 3.37.0 | 24.79s | 206,598,161 bytes | +| mui | 9.4.0 | 17.12s | 100,621,370 bytes | +| **devup-ui (per-file CSS)** | 1.0.40 | **13.43s** | 66,577,087 bytes | +| **devup-ui (single CSS)** | 1.0.40 | **13.37s** | 66,564,796 bytes | + +Turbopack values are medians of six cold builds in alternating order: + +| Library | Version | Median Build Time | Build Size | +| -------------------------------------- | ------- | ----------------- | -------------------- | +| tailwindcss | 4.3.3 | 6.55s | 38,386,955 bytes | +| **devup-ui (direct APIs, single CSS)** | 1.0.40 | **6.54s** | **36,519,234 bytes** | +| **devup-ui (static `.css.ts`)** | 1.0.40 | **6.47s** | 36,550,197 bytes | + +The Turbopack ranges overlap, so the direct-API result is effectively parity with Tailwind on this fixture. The static `.css.ts` row uses the `lite` WASM fast path; dynamic `.css.ts` modules use the full Boa evaluator and are not represented by that median. ## How it works diff --git a/packages/react/package.json b/packages/react/package.json index 025ccace6..25011ec18 100644 --- a/packages/react/package.json +++ b/packages/react/package.json @@ -19,9 +19,10 @@ "version": "1.0.40", "type": "module", "scripts": { - "lint": "eslint && tsc --noEmit && bun run test:types", - "build": "bun run test:types && tsc && vite build", - "test:types": "tsc --ignoreConfig --noEmit --strict --jsx react-jsx --moduleResolution bundler --module esnext --target esnext --types bun --skipLibCheck type-tests/custom-shorthand.ts" + "generate:css-types": "bun scripts/generate-css-properties.ts", + "lint": "eslint && bun ../../node_modules/@typescript/native/bin/tsc --noEmit && bun run test:types", + "build": "bun run test:types && bun ../../node_modules/@typescript/native/bin/tsc && vite build", + "test:types": "bun scripts/generate-css-properties.ts --check && bun ../../node_modules/@typescript/native/bin/tsc --ignoreConfig --noEmit --strict --jsx react-jsx --moduleResolution bundler --module esnext --target esnext --types bun --skipLibCheck type-tests/custom-shorthand.ts" }, "publishConfig": { "access": "public" @@ -48,10 +49,10 @@ "rollup-plugin-preserve-directives": "^0.4", "vite": "^8.2", "vite-plugin-dts": "^5.0", - "typescript": "^7.0", + "typescript": "^7.0.2", "@typescript/typescript6": "^6.0", "@types/react": "^19.2", - "@types/node": "^26.2" + "@types/node": "^26.4" }, "peerDependencies": { "react": "*", diff --git a/packages/react/scripts/generate-css-properties.ts b/packages/react/scripts/generate-css-properties.ts new file mode 100644 index 000000000..f8349de6d --- /dev/null +++ b/packages/react/scripts/generate-css-properties.ts @@ -0,0 +1,64 @@ +const packageDir = new URL('../', import.meta.url) +const sourceUrl = new URL( + 'node_modules/csstype-extra/src/index.d.ts', + packageDir, +) +const outputUrl = new URL( + 'src/types/props/generated-css-properties.ts', + packageDir, +) + +const source = await Bun.file(sourceUrl).text() +const propertiesEnd = source.indexOf('export type AtRules') +if (propertiesEnd === -1) { + throw new Error('Unable to find the end of csstype-extra properties') +} + +const declarations = new Map() +for (const match of source + .slice(0, propertiesEnd) + .matchAll( + /^ {2}([A-Za-z][A-Za-z0-9]*)\?: (Property\.[A-Za-z0-9]+ \| undefined)$/gm, + )) { + const [, name, value] = match + const previous = declarations.get(name) + if (previous && previous !== value) { + throw new Error(`Conflicting declarations for ${name}`) + } + declarations.set(name, value) +} + +if (declarations.size < 600) { + throw new Error( + `Expected at least 600 CSS properties, found ${declarations.size}`, + ) +} + +const lines = [ + '// Generated by scripts/generate-css-properties.ts. Do not edit directly.', + "import type { Property } from 'csstype-extra'", + '', + "import type { ResponsiveValue } from '../responsive-value'", + '', + 'export interface DevupCssProperties {', + ...[...declarations].map(([name, value]) => { + const declaration = ` ${name}?: ResponsiveValue<${value}>` + return declaration.length > 80 + ? ` ${name}?: ResponsiveValue<\n ${value}\n >` + : declaration + }), + '}', + '', +] + +const output = lines.join('\n') +if (Bun.argv.includes('--check')) { + const current = await Bun.file(outputUrl).text() + if (current !== output) { + throw new Error( + 'Generated CSS properties are stale. Run bun run generate:css-types.', + ) + } +} else { + await Bun.write(outputUrl, output) +} diff --git a/packages/react/src/components/Box.tsx b/packages/react/src/components/Box.tsx index acbee4f4a..10e9b41d0 100644 --- a/packages/react/src/components/Box.tsx +++ b/packages/react/src/components/Box.tsx @@ -1,12 +1,20 @@ import type { - DevupComponentBaseProps, - DevupComponentProps, + DevupDefaultComponentMergedProps, + DevupPolymorphicComponentMergedProps, } from '../types/props' -import type { Merge } from '../types/utils' -export function Box( +export function Box( + props: DevupDefaultComponentMergedProps<'div'>, +): React.ReactElement +export function Box( + props: DevupPolymorphicComponentMergedProps, +): React.ReactElement +export function Box( + props: DevupDefaultComponentMergedProps<'div'>, +): React.ReactElement +export function Box( // eslint-disable-next-line @typescript-eslint/no-unused-vars - props: Merge, DevupComponentProps>, + props: unknown, ): React.ReactElement { throw new Error('Cannot run on the runtime') } diff --git a/packages/react/src/components/Button.tsx b/packages/react/src/components/Button.tsx index 414abd028..71f34b434 100644 --- a/packages/react/src/components/Button.tsx +++ b/packages/react/src/components/Button.tsx @@ -1,12 +1,20 @@ import type { - DevupComponentBaseProps, - DevupComponentProps, + DevupDefaultComponentMergedProps, + DevupPolymorphicComponentMergedProps, } from '../types/props' -import type { Merge } from '../types/utils' -export function Button( +export function Button( + props: DevupDefaultComponentMergedProps<'button'>, +): React.ReactElement +export function Button( + props: DevupPolymorphicComponentMergedProps, +): React.ReactElement +export function Button( + props: DevupDefaultComponentMergedProps<'button'>, +): React.ReactElement +export function Button( // eslint-disable-next-line @typescript-eslint/no-unused-vars - props: Merge, DevupComponentProps>, + props: unknown, ): React.ReactElement { throw new Error('Cannot run on the runtime') } diff --git a/packages/react/src/components/Center.tsx b/packages/react/src/components/Center.tsx index 91cf0f548..90bbf4903 100644 --- a/packages/react/src/components/Center.tsx +++ b/packages/react/src/components/Center.tsx @@ -1,12 +1,20 @@ import type { - DevupComponentBaseProps, - DevupComponentProps, + DevupDefaultComponentMergedProps, + DevupPolymorphicComponentMergedProps, } from '../types/props' -import type { Merge } from '../types/utils' -export function Center( +export function Center( + props: DevupDefaultComponentMergedProps<'div'>, +): React.ReactElement +export function Center( + props: DevupPolymorphicComponentMergedProps, +): React.ReactElement +export function Center( + props: DevupDefaultComponentMergedProps<'div'>, +): React.ReactElement +export function Center( // eslint-disable-next-line @typescript-eslint/no-unused-vars - props: Merge, DevupComponentProps>, + props: unknown, ): React.ReactElement { throw new Error('Cannot run on the runtime') } diff --git a/packages/react/src/components/Flex.tsx b/packages/react/src/components/Flex.tsx index b83145155..8f8deada8 100644 --- a/packages/react/src/components/Flex.tsx +++ b/packages/react/src/components/Flex.tsx @@ -1,12 +1,20 @@ import type { - DevupComponentBaseProps, - DevupComponentProps, + DevupDefaultComponentMergedProps, + DevupPolymorphicComponentMergedProps, } from '../types/props' -import type { Merge } from '../types/utils' -export function Flex( +export function Flex( + props: DevupDefaultComponentMergedProps<'div'>, +): React.ReactElement +export function Flex( + props: DevupPolymorphicComponentMergedProps, +): React.ReactElement +export function Flex( + props: DevupDefaultComponentMergedProps<'div'>, +): React.ReactElement +export function Flex( // eslint-disable-next-line @typescript-eslint/no-unused-vars - props: Merge, DevupComponentProps>, + props: unknown, ): React.ReactElement { throw new Error('Cannot run on the runtime') } diff --git a/packages/react/src/components/Grid.tsx b/packages/react/src/components/Grid.tsx index 769f15b82..b9975cd71 100644 --- a/packages/react/src/components/Grid.tsx +++ b/packages/react/src/components/Grid.tsx @@ -1,12 +1,20 @@ import type { - DevupComponentBaseProps, - DevupComponentProps, + DevupDefaultComponentMergedProps, + DevupPolymorphicComponentMergedProps, } from '../types/props' -import type { Merge } from '../types/utils' -export function Grid( +export function Grid( + props: DevupDefaultComponentMergedProps<'div'>, +): React.ReactElement +export function Grid( + props: DevupPolymorphicComponentMergedProps, +): React.ReactElement +export function Grid( + props: DevupDefaultComponentMergedProps<'div'>, +): React.ReactElement +export function Grid( // eslint-disable-next-line @typescript-eslint/no-unused-vars - props: Merge, DevupComponentProps>, + props: unknown, ): React.ReactElement { throw new Error('Cannot run on the runtime') } diff --git a/packages/react/src/components/Image.tsx b/packages/react/src/components/Image.tsx index a17d2dcd7..3387f2eb1 100644 --- a/packages/react/src/components/Image.tsx +++ b/packages/react/src/components/Image.tsx @@ -1,12 +1,20 @@ import type { - DevupComponentBaseProps, - DevupComponentProps, + DevupDefaultComponentMergedProps, + DevupPolymorphicComponentMergedProps, } from '../types/props' -import type { Merge } from '../types/utils' -export function Image( +export function Image( + props: DevupDefaultComponentMergedProps<'img'>, +): React.ReactElement +export function Image( + props: DevupPolymorphicComponentMergedProps, +): React.ReactElement +export function Image( + props: DevupDefaultComponentMergedProps<'img'>, +): React.ReactElement +export function Image( // eslint-disable-next-line @typescript-eslint/no-unused-vars - props: Merge, DevupComponentProps>, + props: unknown, ): React.ReactElement { throw new Error('Cannot run on the runtime') } diff --git a/packages/react/src/components/Input.tsx b/packages/react/src/components/Input.tsx index 1649fd320..7be4ccdab 100644 --- a/packages/react/src/components/Input.tsx +++ b/packages/react/src/components/Input.tsx @@ -1,12 +1,20 @@ import type { - DevupComponentBaseProps, - DevupComponentProps, + DevupDefaultComponentMergedProps, + DevupPolymorphicComponentMergedProps, } from '../types/props' -import type { Merge } from '../types/utils' -export function Input( +export function Input( + props: DevupDefaultComponentMergedProps<'input'>, +): React.ReactElement +export function Input( + props: DevupPolymorphicComponentMergedProps, +): React.ReactElement +export function Input( + props: DevupDefaultComponentMergedProps<'input'>, +): React.ReactElement +export function Input( // eslint-disable-next-line @typescript-eslint/no-unused-vars - props: Merge, DevupComponentProps>, + props: unknown, ): React.ReactElement { throw new Error('Cannot run on the runtime') } diff --git a/packages/react/src/components/Text.tsx b/packages/react/src/components/Text.tsx index 467afb4c0..40c907181 100644 --- a/packages/react/src/components/Text.tsx +++ b/packages/react/src/components/Text.tsx @@ -1,12 +1,20 @@ import type { - DevupComponentBaseProps, - DevupComponentProps, + DevupDefaultComponentMergedProps, + DevupPolymorphicComponentMergedProps, } from '../types/props' -import type { Merge } from '../types/utils' -export function Text( +export function Text( + props: DevupDefaultComponentMergedProps<'span'>, +): React.ReactElement +export function Text( + props: DevupPolymorphicComponentMergedProps, +): React.ReactElement +export function Text( + props: DevupDefaultComponentMergedProps<'span'>, +): React.ReactElement +export function Text( // eslint-disable-next-line @typescript-eslint/no-unused-vars - props: Merge, DevupComponentProps>, + props: unknown, ): React.ReactElement { throw new Error('Cannot run on the runtime') } diff --git a/packages/react/src/components/ThemeScript.tsx b/packages/react/src/components/ThemeScript.tsx index 07c2ff548..5ec3dfba3 100644 --- a/packages/react/src/components/ThemeScript.tsx +++ b/packages/react/src/components/ThemeScript.tsx @@ -6,14 +6,14 @@ interface ThemeScriptProps { theme?: Conditional } +function escapeScriptClosingTag(script: string) { + return script.replace(/<\/script/giu, '\\u003c/script') +} + export function ThemeScript({ auto = true, theme }: ThemeScriptProps) { - return ( - } diff --git a/packages/react/src/components/VStack.tsx b/packages/react/src/components/VStack.tsx index f0af42969..05d1068f6 100644 --- a/packages/react/src/components/VStack.tsx +++ b/packages/react/src/components/VStack.tsx @@ -1,12 +1,20 @@ import type { - DevupComponentBaseProps, - DevupComponentProps, + DevupDefaultComponentMergedProps, + DevupPolymorphicComponentMergedProps, } from '../types/props' -import type { Merge } from '../types/utils' -export function VStack( +export function VStack( + props: DevupDefaultComponentMergedProps<'div'>, +): React.ReactElement +export function VStack( + props: DevupPolymorphicComponentMergedProps, +): React.ReactElement +export function VStack( + props: DevupDefaultComponentMergedProps<'div'>, +): React.ReactElement +export function VStack( // eslint-disable-next-line @typescript-eslint/no-unused-vars - props: Merge, DevupComponentProps>, + props: unknown, ): React.ReactElement { throw new Error('Cannot run on the runtime') } diff --git a/packages/react/src/components/__tests__/ThemeScript.browser.test.tsx b/packages/react/src/components/__tests__/ThemeScript.browser.test.tsx index 0e67c327d..6c4808171 100644 --- a/packages/react/src/components/__tests__/ThemeScript.browser.test.tsx +++ b/packages/react/src/components/__tests__/ThemeScript.browser.test.tsx @@ -19,4 +19,15 @@ describe('ThemeScript', () => { const { container } = render() expect(container).toMatchSnapshot() }) + + it('should escape a closing script tag in the theme', () => { + const { container } = render( +
" `; @@ -11,7 +11,7 @@ exports[`ThemeScript should apply ThemeScript 1`] = ` exports[`ThemeScript should apply ThemeScript with theme 1`] = ` "
" `; @@ -19,7 +19,7 @@ exports[`ThemeScript should apply ThemeScript with theme 1`] = ` exports[`ThemeScript should apply ThemeScript with not auto 1`] = ` "
" `; diff --git a/packages/react/src/types/props/generated-css-properties.ts b/packages/react/src/types/props/generated-css-properties.ts new file mode 100644 index 000000000..e6c0dcf29 --- /dev/null +++ b/packages/react/src/types/props/generated-css-properties.ts @@ -0,0 +1,966 @@ +// Generated by scripts/generate-css-properties.ts. Do not edit directly. +import type { Property } from 'csstype-extra' + +import type { ResponsiveValue } from '../responsive-value' + +export interface DevupCssProperties { + accentColor?: ResponsiveValue + alignContent?: ResponsiveValue + alignItems?: ResponsiveValue + alignSelf?: ResponsiveValue + alignTracks?: ResponsiveValue + alignmentBaseline?: ResponsiveValue + all?: ResponsiveValue + anchorName?: ResponsiveValue + anchorScope?: ResponsiveValue + animationComposition?: ResponsiveValue< + Property.AnimationComposition | undefined + > + animationDelay?: ResponsiveValue + animationDirection?: ResponsiveValue + animationDuration?: ResponsiveValue + animationFillMode?: ResponsiveValue + animationIterationCount?: ResponsiveValue< + Property.AnimationIterationCount | undefined + > + animationName?: ResponsiveValue + animationPlayState?: ResponsiveValue + animationRangeEnd?: ResponsiveValue + animationRangeStart?: ResponsiveValue< + Property.AnimationRangeStart | undefined + > + animationTimeline?: ResponsiveValue + animationTimingFunction?: ResponsiveValue< + Property.AnimationTimingFunction | undefined + > + animationTrigger?: ResponsiveValue + appearance?: ResponsiveValue + aspectRatio?: ResponsiveValue + backdropFilter?: ResponsiveValue + backfaceVisibility?: ResponsiveValue + backgroundAttachment?: ResponsiveValue< + Property.BackgroundAttachment | undefined + > + backgroundBlendMode?: ResponsiveValue< + Property.BackgroundBlendMode | undefined + > + backgroundClip?: ResponsiveValue + backgroundColor?: ResponsiveValue + backgroundImage?: ResponsiveValue + backgroundOrigin?: ResponsiveValue + backgroundPositionX?: ResponsiveValue< + Property.BackgroundPositionX | undefined + > + backgroundPositionY?: ResponsiveValue< + Property.BackgroundPositionY | undefined + > + backgroundRepeat?: ResponsiveValue + backgroundSize?: ResponsiveValue + baselineShift?: ResponsiveValue + baselineSource?: ResponsiveValue + blockSize?: ResponsiveValue + borderBlockEndColor?: ResponsiveValue< + Property.BorderBlockEndColor | undefined + > + borderBlockEndStyle?: ResponsiveValue< + Property.BorderBlockEndStyle | undefined + > + borderBlockEndWidth?: ResponsiveValue< + Property.BorderBlockEndWidth | undefined + > + borderBlockStartColor?: ResponsiveValue< + Property.BorderBlockStartColor | undefined + > + borderBlockStartStyle?: ResponsiveValue< + Property.BorderBlockStartStyle | undefined + > + borderBlockStartWidth?: ResponsiveValue< + Property.BorderBlockStartWidth | undefined + > + borderBottomColor?: ResponsiveValue + borderBottomLeftRadius?: ResponsiveValue< + Property.BorderBottomLeftRadius | undefined + > + borderBottomRightRadius?: ResponsiveValue< + Property.BorderBottomRightRadius | undefined + > + borderBottomStyle?: ResponsiveValue + borderBottomWidth?: ResponsiveValue + borderCollapse?: ResponsiveValue + borderEndEndRadius?: ResponsiveValue + borderEndStartRadius?: ResponsiveValue< + Property.BorderEndStartRadius | undefined + > + borderImageOutset?: ResponsiveValue + borderImageRepeat?: ResponsiveValue + borderImageSlice?: ResponsiveValue + borderImageSource?: ResponsiveValue + borderImageWidth?: ResponsiveValue + borderInlineEndColor?: ResponsiveValue< + Property.BorderInlineEndColor | undefined + > + borderInlineEndStyle?: ResponsiveValue< + Property.BorderInlineEndStyle | undefined + > + borderInlineEndWidth?: ResponsiveValue< + Property.BorderInlineEndWidth | undefined + > + borderInlineStartColor?: ResponsiveValue< + Property.BorderInlineStartColor | undefined + > + borderInlineStartStyle?: ResponsiveValue< + Property.BorderInlineStartStyle | undefined + > + borderInlineStartWidth?: ResponsiveValue< + Property.BorderInlineStartWidth | undefined + > + borderLeftColor?: ResponsiveValue + borderLeftStyle?: ResponsiveValue + borderLeftWidth?: ResponsiveValue + borderRightColor?: ResponsiveValue + borderRightStyle?: ResponsiveValue + borderRightWidth?: ResponsiveValue + borderShape?: ResponsiveValue + borderSpacing?: ResponsiveValue + borderStartEndRadius?: ResponsiveValue< + Property.BorderStartEndRadius | undefined + > + borderStartStartRadius?: ResponsiveValue< + Property.BorderStartStartRadius | undefined + > + borderTopColor?: ResponsiveValue + borderTopLeftRadius?: ResponsiveValue< + Property.BorderTopLeftRadius | undefined + > + borderTopRightRadius?: ResponsiveValue< + Property.BorderTopRightRadius | undefined + > + borderTopStyle?: ResponsiveValue + borderTopWidth?: ResponsiveValue + bottom?: ResponsiveValue + WebkitBoxAlign?: ResponsiveValue + MozBoxAlign?: ResponsiveValue + boxAlign?: ResponsiveValue + boxDecorationBreak?: ResponsiveValue + WebkitBoxDirection?: ResponsiveValue + MozBoxDirection?: ResponsiveValue + boxDirection?: ResponsiveValue + WebkitBoxFlex?: ResponsiveValue + MozBoxFlex?: ResponsiveValue + boxFlex?: ResponsiveValue + WebkitBoxFlexGroup?: ResponsiveValue + MozBoxFlexGroup?: ResponsiveValue + boxFlexGroup?: ResponsiveValue + WebkitBoxLines?: ResponsiveValue + MozBoxLines?: ResponsiveValue + boxLines?: ResponsiveValue + WebkitBoxOrdinalGroup?: ResponsiveValue< + Property.WebkitBoxOrdinalGroup | undefined + > + MozBoxOrdinalGroup?: ResponsiveValue + boxOrdinalGroup?: ResponsiveValue + WebkitBoxOrient?: ResponsiveValue + MozBoxOrient?: ResponsiveValue + boxOrient?: ResponsiveValue + WebkitBoxPack?: ResponsiveValue + MozBoxPack?: ResponsiveValue + boxPack?: ResponsiveValue + boxShadow?: ResponsiveValue + boxSizing?: ResponsiveValue + breakAfter?: ResponsiveValue + breakBefore?: ResponsiveValue + breakInside?: ResponsiveValue + captionSide?: ResponsiveValue + caretAnimation?: ResponsiveValue + caretColor?: ResponsiveValue + caretShape?: ResponsiveValue + clear?: ResponsiveValue + clip?: ResponsiveValue + clipPath?: ResponsiveValue + clipRule?: ResponsiveValue + color?: ResponsiveValue + colorInterpolationFilters?: ResponsiveValue< + Property.ColorInterpolationFilters | undefined + > + colorScheme?: ResponsiveValue + columnCount?: ResponsiveValue + columnFill?: ResponsiveValue + columnGap?: ResponsiveValue + columnHeight?: ResponsiveValue + columnRuleColor?: ResponsiveValue + columnRuleStyle?: ResponsiveValue + columnRuleWidth?: ResponsiveValue + columnSpan?: ResponsiveValue + columnWidth?: ResponsiveValue + columnWrap?: ResponsiveValue + contain?: ResponsiveValue + containIntrinsicBlockSize?: ResponsiveValue< + Property.ContainIntrinsicBlockSize | undefined + > + containIntrinsicHeight?: ResponsiveValue< + Property.ContainIntrinsicHeight | undefined + > + containIntrinsicInlineSize?: ResponsiveValue< + Property.ContainIntrinsicInlineSize | undefined + > + containIntrinsicWidth?: ResponsiveValue< + Property.ContainIntrinsicWidth | undefined + > + containerName?: ResponsiveValue + containerType?: ResponsiveValue + content?: ResponsiveValue + contentVisibility?: ResponsiveValue + cornerBottomLeftShape?: ResponsiveValue< + Property.CornerBottomLeftShape | undefined + > + cornerBottomRightShape?: ResponsiveValue< + Property.CornerBottomRightShape | undefined + > + cornerEndEndShape?: ResponsiveValue + cornerEndStartShape?: ResponsiveValue< + Property.CornerEndStartShape | undefined + > + cornerStartStartShape?: ResponsiveValue< + Property.CornerStartStartShape | undefined + > + cornerStartEndShape?: ResponsiveValue< + Property.CornerStartEndShape | undefined + > + cornerTopLeftShape?: ResponsiveValue + cornerTopRightShape?: ResponsiveValue< + Property.CornerTopRightShape | undefined + > + counterIncrement?: ResponsiveValue + counterReset?: ResponsiveValue + counterSet?: ResponsiveValue + cursor?: ResponsiveValue + cx?: ResponsiveValue + cy?: ResponsiveValue + d?: ResponsiveValue + direction?: ResponsiveValue + display?: ResponsiveValue + dominantBaseline?: ResponsiveValue + dynamicRangeLimit?: ResponsiveValue + emptyCells?: ResponsiveValue + fieldSizing?: ResponsiveValue + fill?: ResponsiveValue + fillOpacity?: ResponsiveValue + fillRule?: ResponsiveValue + filter?: ResponsiveValue + flexBasis?: ResponsiveValue + flexDirection?: ResponsiveValue + flexGrow?: ResponsiveValue + flexLineCount?: ResponsiveValue + flexShrink?: ResponsiveValue + flexWrap?: ResponsiveValue + float?: ResponsiveValue + floodColor?: ResponsiveValue + floodOpacity?: ResponsiveValue + fontFamily?: ResponsiveValue + fontFeatureSettings?: ResponsiveValue< + Property.FontFeatureSettings | undefined + > + fontKerning?: ResponsiveValue + fontLanguageOverride?: ResponsiveValue< + Property.FontLanguageOverride | undefined + > + fontOpticalSizing?: ResponsiveValue + fontPalette?: ResponsiveValue + fontSize?: ResponsiveValue + fontSizeAdjust?: ResponsiveValue + fontSmooth?: ResponsiveValue + fontStretch?: ResponsiveValue + fontStyle?: ResponsiveValue + fontSynthesis?: ResponsiveValue + fontSynthesisPosition?: ResponsiveValue< + Property.FontSynthesisPosition | undefined + > + fontSynthesisSmallCaps?: ResponsiveValue< + Property.FontSynthesisSmallCaps | undefined + > + fontSynthesisStyle?: ResponsiveValue + fontSynthesisWeight?: ResponsiveValue< + Property.FontSynthesisWeight | undefined + > + fontVariant?: ResponsiveValue + fontVariantAlternates?: ResponsiveValue< + Property.FontVariantAlternates | undefined + > + fontVariantCaps?: ResponsiveValue + fontVariantEastAsian?: ResponsiveValue< + Property.FontVariantEastAsian | undefined + > + fontVariantEmoji?: ResponsiveValue + fontVariantLigatures?: ResponsiveValue< + Property.FontVariantLigatures | undefined + > + fontVariantNumeric?: ResponsiveValue + fontVariantPosition?: ResponsiveValue< + Property.FontVariantPosition | undefined + > + fontVariationSettings?: ResponsiveValue< + Property.FontVariationSettings | undefined + > + fontWeight?: ResponsiveValue + fontWidth?: ResponsiveValue + forcedColorAdjust?: ResponsiveValue + frameSizing?: ResponsiveValue + gridAutoColumns?: ResponsiveValue + gridAutoFlow?: ResponsiveValue + gridAutoRows?: ResponsiveValue + gridColumnEnd?: ResponsiveValue + gridColumnGap?: ResponsiveValue + gridColumnStart?: ResponsiveValue + gridRowEnd?: ResponsiveValue + gridRowGap?: ResponsiveValue + gridRowStart?: ResponsiveValue + gridTemplateAreas?: ResponsiveValue + gridTemplateColumns?: ResponsiveValue< + Property.GridTemplateColumns | undefined + > + gridTemplateRows?: ResponsiveValue + hangingPunctuation?: ResponsiveValue + height?: ResponsiveValue + hyphenateCharacter?: ResponsiveValue + hyphenateLimitChars?: ResponsiveValue< + Property.HyphenateLimitChars | undefined + > + hyphens?: ResponsiveValue + imageOrientation?: ResponsiveValue + imageRendering?: ResponsiveValue + imageResolution?: ResponsiveValue + imeMode?: ResponsiveValue + initialLetter?: ResponsiveValue + initialLetterAlign?: ResponsiveValue + inlineSize?: ResponsiveValue + insetBlockEnd?: ResponsiveValue + insetBlockStart?: ResponsiveValue + insetInlineEnd?: ResponsiveValue + insetInlineStart?: ResponsiveValue + interpolateSize?: ResponsiveValue + isolation?: ResponsiveValue + interactivity?: ResponsiveValue + interestDelayEnd?: ResponsiveValue + interestDelayStart?: ResponsiveValue + justifyContent?: ResponsiveValue + justifyItems?: ResponsiveValue + justifySelf?: ResponsiveValue + justifyTracks?: ResponsiveValue + left?: ResponsiveValue + letterSpacing?: ResponsiveValue + lightingColor?: ResponsiveValue + lineBreak?: ResponsiveValue + lineClamp?: ResponsiveValue + lineHeight?: ResponsiveValue + lineHeightStep?: ResponsiveValue + linkParameters?: ResponsiveValue + listStyleImage?: ResponsiveValue + listStylePosition?: ResponsiveValue + listStyleType?: ResponsiveValue + marginBlockEnd?: ResponsiveValue + marginBlockStart?: ResponsiveValue + marginBottom?: ResponsiveValue + marginInlineEnd?: ResponsiveValue + marginInlineStart?: ResponsiveValue + marginLeft?: ResponsiveValue + marginRight?: ResponsiveValue + marginTop?: ResponsiveValue + marginTrim?: ResponsiveValue + marker?: ResponsiveValue + markerEnd?: ResponsiveValue + markerMid?: ResponsiveValue + markerStart?: ResponsiveValue + maskBorderMode?: ResponsiveValue + maskBorderOutset?: ResponsiveValue + maskBorderRepeat?: ResponsiveValue + maskBorderSlice?: ResponsiveValue + maskBorderSource?: ResponsiveValue + maskBorderWidth?: ResponsiveValue + maskClip?: ResponsiveValue + maskComposite?: ResponsiveValue + maskImage?: ResponsiveValue + maskMode?: ResponsiveValue + maskOrigin?: ResponsiveValue + maskPosition?: ResponsiveValue + maskRepeat?: ResponsiveValue + maskSize?: ResponsiveValue + maskType?: ResponsiveValue + masonryAutoFlow?: ResponsiveValue + mathDepth?: ResponsiveValue + mathShift?: ResponsiveValue + mathStyle?: ResponsiveValue + maxBlockSize?: ResponsiveValue + maxHeight?: ResponsiveValue + maxInlineSize?: ResponsiveValue + maxLines?: ResponsiveValue + maxWidth?: ResponsiveValue + minBlockSize?: ResponsiveValue + minHeight?: ResponsiveValue + minInlineSize?: ResponsiveValue + minWidth?: ResponsiveValue + mixBlendMode?: ResponsiveValue + objectFit?: ResponsiveValue + objectPosition?: ResponsiveValue + objectViewBox?: ResponsiveValue + offsetAnchor?: ResponsiveValue + offsetDistance?: ResponsiveValue + offsetPath?: ResponsiveValue + offsetPosition?: ResponsiveValue + offsetRotate?: ResponsiveValue + opacity?: ResponsiveValue + order?: ResponsiveValue + orphans?: ResponsiveValue + outlineColor?: ResponsiveValue + outlineOffset?: ResponsiveValue + outlineStyle?: ResponsiveValue + outlineWidth?: ResponsiveValue + overflowAnchor?: ResponsiveValue + overflowBlock?: ResponsiveValue + MozOverflowClipBox?: ResponsiveValue + overflowClipBox?: ResponsiveValue + overflowClipMargin?: ResponsiveValue + overflowInline?: ResponsiveValue + overflowWrap?: ResponsiveValue + overflowX?: ResponsiveValue + overflowY?: ResponsiveValue + overlay?: ResponsiveValue + overscrollBehaviorBlock?: ResponsiveValue< + Property.OverscrollBehaviorBlock | undefined + > + overscrollBehaviorInline?: ResponsiveValue< + Property.OverscrollBehaviorInline | undefined + > + overscrollBehaviorX?: ResponsiveValue< + Property.OverscrollBehaviorX | undefined + > + overscrollBehaviorY?: ResponsiveValue< + Property.OverscrollBehaviorY | undefined + > + paddingBlockEnd?: ResponsiveValue + paddingBlockStart?: ResponsiveValue + paddingBottom?: ResponsiveValue + paddingInlineEnd?: ResponsiveValue + paddingInlineStart?: ResponsiveValue + paddingLeft?: ResponsiveValue + paddingRight?: ResponsiveValue + paddingTop?: ResponsiveValue + page?: ResponsiveValue + pageBreakAfter?: ResponsiveValue + pageBreakBefore?: ResponsiveValue + pageBreakInside?: ResponsiveValue + paintOrder?: ResponsiveValue + pathLength?: ResponsiveValue + perspective?: ResponsiveValue + perspectiveOrigin?: ResponsiveValue + pointerEvents?: ResponsiveValue + position?: ResponsiveValue + positionAnchor?: ResponsiveValue + positionArea?: ResponsiveValue + positionTryFallbacks?: ResponsiveValue< + Property.PositionTryFallbacks | undefined + > + positionTryOrder?: ResponsiveValue + positionVisibility?: ResponsiveValue + printColorAdjust?: ResponsiveValue + quotes?: ResponsiveValue + r?: ResponsiveValue + readingFlow?: ResponsiveValue + readingOrder?: ResponsiveValue + resize?: ResponsiveValue + right?: ResponsiveValue + rotate?: ResponsiveValue + rowGap?: ResponsiveValue + rubyAlign?: ResponsiveValue + rubyMerge?: ResponsiveValue + rubyOverhang?: ResponsiveValue + rubyPosition?: ResponsiveValue + rx?: ResponsiveValue + ry?: ResponsiveValue + scale?: ResponsiveValue + scrollBehavior?: ResponsiveValue + scrollInitialTarget?: ResponsiveValue< + Property.ScrollInitialTarget | undefined + > + scrollMarginBlockEnd?: ResponsiveValue< + Property.ScrollMarginBlockEnd | undefined + > + scrollMarginBlockStart?: ResponsiveValue< + Property.ScrollMarginBlockStart | undefined + > + scrollMarginBottom?: ResponsiveValue + scrollMarginInlineEnd?: ResponsiveValue< + Property.ScrollMarginInlineEnd | undefined + > + scrollMarginInlineStart?: ResponsiveValue< + Property.ScrollMarginInlineStart | undefined + > + scrollMarginLeft?: ResponsiveValue + scrollMarginRight?: ResponsiveValue + scrollMarginTop?: ResponsiveValue + scrollMarkerGroup?: ResponsiveValue + scrollPaddingBlockEnd?: ResponsiveValue< + Property.ScrollPaddingBlockEnd | undefined + > + scrollPaddingBlockStart?: ResponsiveValue< + Property.ScrollPaddingBlockStart | undefined + > + scrollPaddingBottom?: ResponsiveValue< + Property.ScrollPaddingBottom | undefined + > + scrollPaddingInlineEnd?: ResponsiveValue< + Property.ScrollPaddingInlineEnd | undefined + > + scrollPaddingInlineStart?: ResponsiveValue< + Property.ScrollPaddingInlineStart | undefined + > + scrollPaddingLeft?: ResponsiveValue + scrollPaddingRight?: ResponsiveValue + scrollPaddingTop?: ResponsiveValue + scrollSnapAlign?: ResponsiveValue + scrollSnapCoordinate?: ResponsiveValue< + Property.ScrollSnapCoordinate | undefined + > + scrollSnapDestination?: ResponsiveValue< + Property.ScrollSnapDestination | undefined + > + scrollSnapPointsX?: ResponsiveValue + scrollSnapPointsY?: ResponsiveValue + scrollSnapStop?: ResponsiveValue + scrollSnapType?: ResponsiveValue + scrollSnapTypeX?: ResponsiveValue + scrollSnapTypeY?: ResponsiveValue + scrollTargetGroup?: ResponsiveValue + scrollTimelineAxis?: ResponsiveValue + scrollTimelineName?: ResponsiveValue + scrollbarColor?: ResponsiveValue + scrollbarGutter?: ResponsiveValue + scrollbarWidth?: ResponsiveValue + shapeImageThreshold?: ResponsiveValue< + Property.ShapeImageThreshold | undefined + > + shapeMargin?: ResponsiveValue + shapeOutside?: ResponsiveValue + shapeRendering?: ResponsiveValue + speakAs?: ResponsiveValue + stopColor?: ResponsiveValue + stopOpacity?: ResponsiveValue + stroke?: ResponsiveValue + strokeColor?: ResponsiveValue + strokeDasharray?: ResponsiveValue + strokeDashoffset?: ResponsiveValue + strokeLinecap?: ResponsiveValue + strokeLinejoin?: ResponsiveValue + strokeMiterlimit?: ResponsiveValue + strokeOpacity?: ResponsiveValue + strokeWidth?: ResponsiveValue + tabSize?: ResponsiveValue + tableLayout?: ResponsiveValue + textAlign?: ResponsiveValue + textAlignLast?: ResponsiveValue + textAnchor?: ResponsiveValue + textAutospace?: ResponsiveValue + textBox?: ResponsiveValue + textBoxEdge?: ResponsiveValue + textBoxTrim?: ResponsiveValue + textCombineUpright?: ResponsiveValue + textDecorationColor?: ResponsiveValue< + Property.TextDecorationColor | undefined + > + textDecorationInset?: ResponsiveValue< + Property.TextDecorationInset | undefined + > + textDecorationLine?: ResponsiveValue + textDecorationSkip?: ResponsiveValue + textDecorationSkipInk?: ResponsiveValue< + Property.TextDecorationSkipInk | undefined + > + textDecorationStyle?: ResponsiveValue< + Property.TextDecorationStyle | undefined + > + textDecorationThickness?: ResponsiveValue< + Property.TextDecorationThickness | undefined + > + textEmphasisColor?: ResponsiveValue + textEmphasisPosition?: ResponsiveValue< + Property.TextEmphasisPosition | undefined + > + textEmphasisStyle?: ResponsiveValue + textFit?: ResponsiveValue + textIndent?: ResponsiveValue + textJustify?: ResponsiveValue + textOrientation?: ResponsiveValue + textOverflow?: ResponsiveValue + textRendering?: ResponsiveValue + textShadow?: ResponsiveValue + textSizeAdjust?: ResponsiveValue + textSpacingTrim?: ResponsiveValue + textTransform?: ResponsiveValue + textUnderlineOffset?: ResponsiveValue< + Property.TextUnderlineOffset | undefined + > + textUnderlinePosition?: ResponsiveValue< + Property.TextUnderlinePosition | undefined + > + textWrapMode?: ResponsiveValue + textWrapStyle?: ResponsiveValue + timelineScope?: ResponsiveValue + timelineTriggerName?: ResponsiveValue< + Property.TimelineTriggerName | undefined + > + timelineTriggerSource?: ResponsiveValue< + Property.TimelineTriggerSource | undefined + > + top?: ResponsiveValue + touchAction?: ResponsiveValue + transform?: ResponsiveValue + transformBox?: ResponsiveValue + transformOrigin?: ResponsiveValue + transformStyle?: ResponsiveValue + transitionBehavior?: ResponsiveValue + transitionDelay?: ResponsiveValue + transitionDuration?: ResponsiveValue + transitionProperty?: ResponsiveValue + transitionTimingFunction?: ResponsiveValue< + Property.TransitionTimingFunction | undefined + > + translate?: ResponsiveValue + triggerScope?: ResponsiveValue + unicodeBidi?: ResponsiveValue + userSelect?: ResponsiveValue + vectorEffect?: ResponsiveValue + verticalAlign?: ResponsiveValue + viewTimelineAxis?: ResponsiveValue + viewTimelineInset?: ResponsiveValue + viewTimelineName?: ResponsiveValue + viewTransitionClass?: ResponsiveValue< + Property.ViewTransitionClass | undefined + > + viewTransitionName?: ResponsiveValue + viewTransitionScope?: ResponsiveValue< + Property.ViewTransitionScope | undefined + > + visibility?: ResponsiveValue + whiteSpace?: ResponsiveValue + whiteSpaceCollapse?: ResponsiveValue + widows?: ResponsiveValue + width?: ResponsiveValue + willChange?: ResponsiveValue + wordBreak?: ResponsiveValue + wordSpacing?: ResponsiveValue + wordWrap?: ResponsiveValue + writingMode?: ResponsiveValue + x?: ResponsiveValue + y?: ResponsiveValue + zIndex?: ResponsiveValue + zoom?: ResponsiveValue + animation?: ResponsiveValue + animationRange?: ResponsiveValue + background?: ResponsiveValue + backgroundPosition?: ResponsiveValue + border?: ResponsiveValue + borderBlock?: ResponsiveValue + borderBlockColor?: ResponsiveValue + borderBlockEnd?: ResponsiveValue + borderBlockStart?: ResponsiveValue + borderBlockStyle?: ResponsiveValue + borderBlockWidth?: ResponsiveValue + borderBottom?: ResponsiveValue + borderColor?: ResponsiveValue + borderImage?: ResponsiveValue + borderInline?: ResponsiveValue + borderInlineColor?: ResponsiveValue + borderInlineEnd?: ResponsiveValue + borderInlineStart?: ResponsiveValue + borderInlineStyle?: ResponsiveValue + borderInlineWidth?: ResponsiveValue + borderLeft?: ResponsiveValue + borderRadius?: ResponsiveValue + borderRight?: ResponsiveValue + borderStyle?: ResponsiveValue + borderTop?: ResponsiveValue + borderWidth?: ResponsiveValue + caret?: ResponsiveValue + columnRule?: ResponsiveValue + columns?: ResponsiveValue + containIntrinsicSize?: ResponsiveValue< + Property.ContainIntrinsicSize | undefined + > + container?: ResponsiveValue + cornerBlockEndShape?: ResponsiveValue< + Property.CornerBlockEndShape | undefined + > + cornerBlockStartShape?: ResponsiveValue< + Property.CornerBlockStartShape | undefined + > + cornerBottomShape?: ResponsiveValue + cornerInlineEndShape?: ResponsiveValue< + Property.CornerInlineEndShape | undefined + > + cornerInlineStartShape?: ResponsiveValue< + Property.CornerInlineStartShape | undefined + > + cornerLeftShape?: ResponsiveValue + cornerRightShape?: ResponsiveValue + cornerShape?: ResponsiveValue + cornerTopShape?: ResponsiveValue + flex?: ResponsiveValue + flexFlow?: ResponsiveValue + font?: ResponsiveValue + gap?: ResponsiveValue + grid?: ResponsiveValue + gridArea?: ResponsiveValue + gridColumn?: ResponsiveValue + gridGap?: ResponsiveValue + gridRow?: ResponsiveValue + gridTemplate?: ResponsiveValue + inset?: ResponsiveValue + insetBlock?: ResponsiveValue + insetInline?: ResponsiveValue + interestDelay?: ResponsiveValue + listStyle?: ResponsiveValue + margin?: ResponsiveValue + marginBlock?: ResponsiveValue + marginInline?: ResponsiveValue + mask?: ResponsiveValue + maskBorder?: ResponsiveValue + offset?: ResponsiveValue + outline?: ResponsiveValue + overflow?: ResponsiveValue + overscrollBehavior?: ResponsiveValue + padding?: ResponsiveValue + paddingBlock?: ResponsiveValue + paddingInline?: ResponsiveValue + placeContent?: ResponsiveValue + placeItems?: ResponsiveValue + placeSelf?: ResponsiveValue + positionTry?: ResponsiveValue + scrollMargin?: ResponsiveValue + scrollMarginBlock?: ResponsiveValue + scrollMarginInline?: ResponsiveValue + scrollPadding?: ResponsiveValue + scrollPaddingBlock?: ResponsiveValue + scrollPaddingInline?: ResponsiveValue< + Property.ScrollPaddingInline | undefined + > + scrollTimeline?: ResponsiveValue + textDecoration?: ResponsiveValue + textEmphasis?: ResponsiveValue + textWrap?: ResponsiveValue + timelineTrigger?: ResponsiveValue + timelineTriggerActiveRange?: ResponsiveValue< + Property.TimelineTriggerActiveRange | undefined + > + transition?: ResponsiveValue + viewTimeline?: ResponsiveValue + msAccelerator?: ResponsiveValue + msBlockProgression?: ResponsiveValue + msContentZoomChaining?: ResponsiveValue< + Property.MsContentZoomChaining | undefined + > + msContentZoomLimitMax?: ResponsiveValue< + Property.MsContentZoomLimitMax | undefined + > + msContentZoomLimitMin?: ResponsiveValue< + Property.MsContentZoomLimitMin | undefined + > + msContentZoomSnapPoints?: ResponsiveValue< + Property.MsContentZoomSnapPoints | undefined + > + msContentZoomSnapType?: ResponsiveValue< + Property.MsContentZoomSnapType | undefined + > + msContentZooming?: ResponsiveValue + msFilter?: ResponsiveValue + msFlowFrom?: ResponsiveValue + msFlowInto?: ResponsiveValue + msGridColumns?: ResponsiveValue + msGridRows?: ResponsiveValue + msHighContrastAdjust?: ResponsiveValue< + Property.MsHighContrastAdjust | undefined + > + msHyphenateLimitChars?: ResponsiveValue< + Property.MsHyphenateLimitChars | undefined + > + msHyphenateLimitLines?: ResponsiveValue< + Property.MsHyphenateLimitLines | undefined + > + msHyphenateLimitZone?: ResponsiveValue< + Property.MsHyphenateLimitZone | undefined + > + msImeAlign?: ResponsiveValue + msOverflowStyle?: ResponsiveValue + msScrollChaining?: ResponsiveValue + msScrollLimitXMax?: ResponsiveValue + msScrollLimitXMin?: ResponsiveValue + msScrollLimitYMax?: ResponsiveValue + msScrollLimitYMin?: ResponsiveValue + msScrollRails?: ResponsiveValue + msScrollSnapPointsX?: ResponsiveValue< + Property.MsScrollSnapPointsX | undefined + > + msScrollSnapPointsY?: ResponsiveValue< + Property.MsScrollSnapPointsY | undefined + > + msScrollSnapType?: ResponsiveValue + msScrollTranslation?: ResponsiveValue< + Property.MsScrollTranslation | undefined + > + msScrollbar3dlightColor?: ResponsiveValue< + Property.MsScrollbar3dlightColor | undefined + > + msScrollbarArrowColor?: ResponsiveValue< + Property.MsScrollbarArrowColor | undefined + > + msScrollbarBaseColor?: ResponsiveValue< + Property.MsScrollbarBaseColor | undefined + > + msScrollbarDarkshadowColor?: ResponsiveValue< + Property.MsScrollbarDarkshadowColor | undefined + > + msScrollbarFaceColor?: ResponsiveValue< + Property.MsScrollbarFaceColor | undefined + > + msScrollbarHighlightColor?: ResponsiveValue< + Property.MsScrollbarHighlightColor | undefined + > + msScrollbarShadowColor?: ResponsiveValue< + Property.MsScrollbarShadowColor | undefined + > + msScrollbarTrackColor?: ResponsiveValue< + Property.MsScrollbarTrackColor | undefined + > + msTextAutospace?: ResponsiveValue + msTouchSelect?: ResponsiveValue + msUserSelect?: ResponsiveValue + msWrapFlow?: ResponsiveValue + msWrapMargin?: ResponsiveValue + msWrapThrough?: ResponsiveValue + MozAppearance?: ResponsiveValue + MozBinding?: ResponsiveValue + MozBorderBottomColors?: ResponsiveValue< + Property.MozBorderBottomColors | undefined + > + MozBorderLeftColors?: ResponsiveValue< + Property.MozBorderLeftColors | undefined + > + MozBorderRightColors?: ResponsiveValue< + Property.MozBorderRightColors | undefined + > + MozBorderTopColors?: ResponsiveValue + MozContextProperties?: ResponsiveValue< + Property.MozContextProperties | undefined + > + MozFloatEdge?: ResponsiveValue + MozForceBrokenImageIcon?: ResponsiveValue< + Property.MozForceBrokenImageIcon | undefined + > + MozOrient?: ResponsiveValue + MozOutlineRadiusBottomleft?: ResponsiveValue< + Property.MozOutlineRadiusBottomleft | undefined + > + MozOutlineRadiusBottomright?: ResponsiveValue< + Property.MozOutlineRadiusBottomright | undefined + > + MozOutlineRadiusTopleft?: ResponsiveValue< + Property.MozOutlineRadiusTopleft | undefined + > + MozOutlineRadiusTopright?: ResponsiveValue< + Property.MozOutlineRadiusTopright | undefined + > + MozStackSizing?: ResponsiveValue + MozTextBlink?: ResponsiveValue + MozUserFocus?: ResponsiveValue + MozUserInput?: ResponsiveValue + MozUserModify?: ResponsiveValue + MozWindowDragging?: ResponsiveValue + MozWindowShadow?: ResponsiveValue + WebkitAppearance?: ResponsiveValue + WebkitBorderAfterColor?: ResponsiveValue< + Property.WebkitBorderAfterColor | undefined + > + WebkitBorderAfterStyle?: ResponsiveValue< + Property.WebkitBorderAfterStyle | undefined + > + WebkitBorderAfterWidth?: ResponsiveValue< + Property.WebkitBorderAfterWidth | undefined + > + WebkitBorderBeforeColor?: ResponsiveValue< + Property.WebkitBorderBeforeColor | undefined + > + WebkitBorderBeforeStyle?: ResponsiveValue< + Property.WebkitBorderBeforeStyle | undefined + > + WebkitBorderBeforeWidth?: ResponsiveValue< + Property.WebkitBorderBeforeWidth | undefined + > + WebkitBorderEndColor?: ResponsiveValue< + Property.WebkitBorderEndColor | undefined + > + WebkitBorderEndStyle?: ResponsiveValue< + Property.WebkitBorderEndStyle | undefined + > + WebkitBorderEndWidth?: ResponsiveValue< + Property.WebkitBorderEndWidth | undefined + > + WebkitBorderStartColor?: ResponsiveValue< + Property.WebkitBorderStartColor | undefined + > + WebkitBorderStartStyle?: ResponsiveValue< + Property.WebkitBorderStartStyle | undefined + > + WebkitBorderStartWidth?: ResponsiveValue< + Property.WebkitBorderStartWidth | undefined + > + WebkitBoxReflect?: ResponsiveValue + WebkitLineClamp?: ResponsiveValue + WebkitMaskAttachment?: ResponsiveValue< + Property.WebkitMaskAttachment | undefined + > + WebkitMaskClip?: ResponsiveValue + WebkitMaskComposite?: ResponsiveValue< + Property.WebkitMaskComposite | undefined + > + WebkitMaskImage?: ResponsiveValue + WebkitMaskOrigin?: ResponsiveValue + WebkitMaskPosition?: ResponsiveValue + WebkitMaskPositionX?: ResponsiveValue< + Property.WebkitMaskPositionX | undefined + > + WebkitMaskPositionY?: ResponsiveValue< + Property.WebkitMaskPositionY | undefined + > + WebkitMaskRepeat?: ResponsiveValue + WebkitMaskRepeatX?: ResponsiveValue + WebkitMaskRepeatY?: ResponsiveValue + WebkitMaskSize?: ResponsiveValue + WebkitOverflowScrolling?: ResponsiveValue< + Property.WebkitOverflowScrolling | undefined + > + WebkitTapHighlightColor?: ResponsiveValue< + Property.WebkitTapHighlightColor | undefined + > + WebkitTextFillColor?: ResponsiveValue< + Property.WebkitTextFillColor | undefined + > + WebkitTextStrokeColor?: ResponsiveValue< + Property.WebkitTextStrokeColor | undefined + > + WebkitTextStrokeWidth?: ResponsiveValue< + Property.WebkitTextStrokeWidth | undefined + > + WebkitTouchCallout?: ResponsiveValue + WebkitUserModify?: ResponsiveValue + WebkitUserSelect?: ResponsiveValue + msContentZoomLimit?: ResponsiveValue + msContentZoomSnap?: ResponsiveValue + msScrollLimit?: ResponsiveValue + msScrollSnapX?: ResponsiveValue + msScrollSnapY?: ResponsiveValue + MozOutlineRadius?: ResponsiveValue + WebkitBorderAfter?: ResponsiveValue + WebkitBorderBefore?: ResponsiveValue + WebkitBorderEnd?: ResponsiveValue + WebkitBorderStart?: ResponsiveValue + WebkitMask?: ResponsiveValue + WebkitTextStroke?: ResponsiveValue +} diff --git a/packages/react/src/types/props/index.ts b/packages/react/src/types/props/index.ts index 89761a6b3..d587e279f 100644 --- a/packages/react/src/types/props/index.ts +++ b/packages/react/src/types/props/index.ts @@ -1,6 +1,3 @@ -import type { Properties } from 'csstype-extra' - -import type { ResponsiveValue } from '../responsive-value' import type { DevupCustomShorthands } from '../shorthand' import type { Merge } from '../utils' import type { DevupUiBackgroundProps } from './background' @@ -8,6 +5,7 @@ import type { DevupUiBorderProps } from './border' import type { DevupUiBoxModelProps } from './box-model' import type { DevupUiBoxSizingProps } from './box-sizing' import type { DevupUiFlexProps } from './flex' +import type { DevupCssProperties } from './generated-css-properties' import type { DevupUiImageProps } from './image' import type { DevupUiMaskProps } from './mask' import type { DevupUiMotionPathProps } from './motion-path' @@ -29,12 +27,7 @@ export interface DevupShortcutsProps DevupUiTextProps, DevupCustomShorthands {} -export type DevupCommonProps = Merge< - { - [K in keyof Properties]?: ResponsiveValue - }, - DevupShortcutsProps -> +export type DevupCommonProps = Merge export interface DevupProps extends DevupCommonProps, DevupSelectorProps {} @@ -47,8 +40,37 @@ export interface DevupComponentProps< as?: T styleVars?: Record } + +export type DevupComponentMergedProps = Merge< + DevupComponentBaseProps, + DevupComponentProps +> + +export type DevupPolymorphicComponentMergedProps = + DevupComponentMergedProps & { as: T } + +type DevupDefaultIntrinsicPropConflicts = + | 'color' + | 'content' + | 'height' + | 'translate' + | 'width' + | keyof DevupCustomShorthands + +// Component declarations put this overload first for fast resolution and last +// so Parameters keeps describing the default element. +export type DevupDefaultComponentMergedProps< + T extends keyof React.JSX.IntrinsicElements, +> = Omit, DevupDefaultIntrinsicPropConflicts> & { + props?: FilterChildren> +} & DevupComponentProps + export type DevupComponentBaseProps = - DevupElementTypeProps & DevupComponentAdditionalProps + NoInfer extends string + ? React.ComponentProps> & { + props?: FilterChildren>> + } + : DevupComponentAdditionalProps> export type DevupElementTypeProps = T extends string ? React.ComponentProps : object diff --git a/packages/react/type-tests/custom-shorthand.ts b/packages/react/type-tests/custom-shorthand.ts index e49b7a6a0..ca2b00ed1 100644 --- a/packages/react/type-tests/custom-shorthand.ts +++ b/packages/react/type-tests/custom-shorthand.ts @@ -1,4 +1,15 @@ +import type { Properties } from 'csstype-extra' + import { Box, type DevupProps } from '../src' +import type { + DevupComponentAdditionalProps, + DevupComponentBaseProps, + DevupComponentMergedProps, + DevupDefaultComponentMergedProps, + DevupElementTypeProps, +} from '../src/types/props' +import type { DevupCssProperties } from '../src/types/props/generated-css-properties' +import type { ResponsiveValue } from '../src/types/responsive-value' // Mirrors the module augmentation emitted to /theme.d.ts. declare module '../src' { @@ -26,4 +37,102 @@ const boxProps: Parameters[0] = { }, } +// Polymorphic inference must come from `as` while preserving the exact native +// element props and their contextual event types. +Box({ + as: 'a', + href: '/docs', + onClick(event) { + return event.currentTarget.href + }, +}) + +Box({ + as: 'button', + onClick(event) { + return event.currentTarget.disabled + }, +}) + +Box({ props: { id: 'box' } }) +Box({ + onClick(event) { + return event.currentTarget.dataset + }, + ref(element) { + if (element) void element.dataset + }, +}) + +// @ts-expect-error polymorphic element props require the matching `as` +Box({ href: '/docs' }) + +// @ts-expect-error a type argument alone cannot change the rendered element +Box<'a'>({ href: '/docs' }) + +// @ts-expect-error href is not a button prop +Box({ as: 'button', href: '/docs' }) + +function CustomLink(_props: { to: string }) { + return null +} + +Box({ as: CustomLink, props: { to: '/docs' } }) + +// @ts-expect-error required custom-component props stay required +Box({ as: CustomLink }) + +type Assert = T +type LegacyBaseProps = DevupElementTypeProps & + DevupComponentAdditionalProps +type IsEquivalent = + DevupComponentBaseProps extends LegacyBaseProps + ? LegacyBaseProps extends DevupComponentBaseProps + ? true + : false + : false + +type _DivPropsStayEquivalent = Assert> +type _AnchorPropsStayEquivalent = Assert> +type _ButtonPropsStayEquivalent = Assert> +type _CustomPropsStayEquivalent = Assert> + +type OriginalCssProperties = { + [K in keyof Properties]?: ResponsiveValue +} +type _GeneratedCssPropsStayEquivalent = Assert< + DevupCssProperties extends OriginalCssProperties + ? OriginalCssProperties extends DevupCssProperties + ? true + : false + : false +> + +type IntrinsicPropsStayEquivalent = + DevupDefaultComponentMergedProps extends DevupComponentMergedProps + ? DevupComponentMergedProps extends DevupDefaultComponentMergedProps + ? keyof DevupDefaultComponentMergedProps extends keyof DevupComponentMergedProps + ? keyof DevupComponentMergedProps extends keyof DevupDefaultComponentMergedProps + ? true + : false + : false + : false + : false + +type _DivIntrinsicPropsStayEquivalent = Assert< + IntrinsicPropsStayEquivalent<'div'> +> +type _ButtonIntrinsicPropsStayEquivalent = Assert< + IntrinsicPropsStayEquivalent<'button'> +> +type _ImageIntrinsicPropsStayEquivalent = Assert< + IntrinsicPropsStayEquivalent<'img'> +> +type _InputIntrinsicPropsStayEquivalent = Assert< + IntrinsicPropsStayEquivalent<'input'> +> +type _SpanIntrinsicPropsStayEquivalent = Assert< + IntrinsicPropsStayEquivalent<'span'> +> + export { boxProps, customShorthandProps } diff --git a/packages/reset-css/README.md b/packages/reset-css/README.md index d84355a5f..72d9da7e0 100644 --- a/packages/reset-css/README.md +++ b/packages/reset-css/README.md @@ -73,19 +73,31 @@ npm install @devup-ui/webpack-plugin ## Comparison Benchmarks -Next.js Build Time and Build Size (github action - ubuntu-latest) - -| Library | Version | Build Time | Build Size | -| ---------------------- | ------- | ---------- | ----------------- | -| tailwindcss | 4.1.13 | 20.22s | 57,415,796 bytes | -| styleX | 0.15.4 | 38.97s | 76,257,820 bytes | -| vanilla-extract | 1.17.4 | 20.09s | 59,366,237 bytes | -| kuma-ui | 1.5.9 | 21.61s | 67,422,085 bytes | -| panda-css | 1.3.1 | 22.01s | 62,431,065 bytes | -| chakra-ui | 3.27.0 | 29.99s | 210,122,493 bytes | -| mui | 7.3.2 | 22.21s | 94,231,958 bytes | -| devup-ui(per-file css) | 1.0.18 | 18.23s | 57,440,953 bytes | -| devup-ui(single css) | 1.0.18 | 18.35s | 57,409,008 bytes | +[Latest CI benchmark](https://github.com/dev-five-git/devup-ui/actions/runs/33239265133) on `ubuntu-latest`. All Next.js builds use the native TypeScript 7 CLI for type checking. + +Webpack values are one cold build: + +| Library | Version | Build Time | Build Size | +| --------------------------- | ------- | ---------- | ----------------- | +| tailwindcss | 4.3.3 | 15.55s | 66,479,450 bytes | +| styleX | 0.19.0 | 34.27s | 95,417,163 bytes | +| vanilla-extract | 1.21.2 | 14.91s | 67,711,539 bytes | +| kuma-ui | 1.6.4 | 16.43s | 74,774,187 bytes | +| panda-css | 1.12.0 | 16.82s | 70,983,831 bytes | +| chakra-ui | 3.37.0 | 24.79s | 206,598,161 bytes | +| mui | 9.4.0 | 17.12s | 100,621,370 bytes | +| **devup-ui (per-file CSS)** | 1.0.40 | **13.43s** | 66,577,087 bytes | +| **devup-ui (single CSS)** | 1.0.40 | **13.37s** | 66,564,796 bytes | + +Turbopack values are medians of six cold builds in alternating order: + +| Library | Version | Median Build Time | Build Size | +| -------------------------------------- | ------- | ----------------- | -------------------- | +| tailwindcss | 4.3.3 | 6.55s | 38,386,955 bytes | +| **devup-ui (direct APIs, single CSS)** | 1.0.40 | **6.54s** | **36,519,234 bytes** | +| **devup-ui (static `.css.ts`)** | 1.0.40 | **6.47s** | 36,550,197 bytes | + +The Turbopack ranges overlap, so the direct-API result is effectively parity with Tailwind on this fixture. The static `.css.ts` row uses the `lite` WASM fast path; dynamic `.css.ts` modules use the full Boa evaluator and are not represented by that median. ## How it works diff --git a/packages/reset-css/package.json b/packages/reset-css/package.json index 5fd34b9d8..7065ad5e7 100644 --- a/packages/reset-css/package.json +++ b/packages/reset-css/package.json @@ -20,7 +20,7 @@ "type": "module", "scripts": { "lint": "eslint", - "build": "tsc && bun build --target node src/index.ts --production --env=disable --outfile dist/index.cjs --format cjs --packages external && bun build --target node src/index.ts --production --env=disable --outfile dist/index.mjs --format esm --packages external" + "build": "bun ../../node_modules/@typescript/native/bin/tsc && bun build --target node src/index.ts --production --env=disable --outfile dist/index.cjs --format cjs --packages external && bun build --target node src/index.ts --production --env=disable --outfile dist/index.mjs --format esm --packages external" }, "publishConfig": { "access": "public" @@ -43,7 +43,7 @@ "@devup-ui/react": "workspace:^" }, "devDependencies": { - "typescript": "^7.0" + "typescript": "^7.0.2" }, "peerDependencies": { "@devup-ui/react": "workspace:^" diff --git a/packages/rsbuild-plugin/README.md b/packages/rsbuild-plugin/README.md index 3c6e8902d..9f00bf49c 100644 --- a/packages/rsbuild-plugin/README.md +++ b/packages/rsbuild-plugin/README.md @@ -73,19 +73,31 @@ npm install @devup-ui/webpack-plugin ## Comparison Benchmarks -Next.js Build Time and Build Size (github action - ubuntu-latest) - -| Library | Version | Build Time | Build Size | -| ---------------------- | ------- | ---------- | ----------------- | -| tailwindcss | 4.1.13 | 20.22s | 57,415,796 bytes | -| styleX | 0.15.4 | 38.97s | 76,257,820 bytes | -| vanilla-extract | 1.17.4 | 20.09s | 59,366,237 bytes | -| kuma-ui | 1.5.9 | 21.61s | 67,422,085 bytes | -| panda-css | 1.3.1 | 22.01s | 62,431,065 bytes | -| chakra-ui | 3.27.0 | 29.99s | 210,122,493 bytes | -| mui | 7.3.2 | 22.21s | 94,231,958 bytes | -| devup-ui(per-file css) | 1.0.18 | 18.23s | 57,440,953 bytes | -| devup-ui(single css) | 1.0.18 | 18.35s | 57,409,008 bytes | +[Latest CI benchmark](https://github.com/dev-five-git/devup-ui/actions/runs/33239265133) on `ubuntu-latest`. All Next.js builds use the native TypeScript 7 CLI for type checking. + +Webpack values are one cold build: + +| Library | Version | Build Time | Build Size | +| --------------------------- | ------- | ---------- | ----------------- | +| tailwindcss | 4.3.3 | 15.55s | 66,479,450 bytes | +| styleX | 0.19.0 | 34.27s | 95,417,163 bytes | +| vanilla-extract | 1.21.2 | 14.91s | 67,711,539 bytes | +| kuma-ui | 1.6.4 | 16.43s | 74,774,187 bytes | +| panda-css | 1.12.0 | 16.82s | 70,983,831 bytes | +| chakra-ui | 3.37.0 | 24.79s | 206,598,161 bytes | +| mui | 9.4.0 | 17.12s | 100,621,370 bytes | +| **devup-ui (per-file CSS)** | 1.0.40 | **13.43s** | 66,577,087 bytes | +| **devup-ui (single CSS)** | 1.0.40 | **13.37s** | 66,564,796 bytes | + +Turbopack values are medians of six cold builds in alternating order: + +| Library | Version | Median Build Time | Build Size | +| -------------------------------------- | ------- | ----------------- | -------------------- | +| tailwindcss | 4.3.3 | 6.55s | 38,386,955 bytes | +| **devup-ui (direct APIs, single CSS)** | 1.0.40 | **6.54s** | **36,519,234 bytes** | +| **devup-ui (static `.css.ts`)** | 1.0.40 | **6.47s** | 36,550,197 bytes | + +The Turbopack ranges overlap, so the direct-API result is effectively parity with Tailwind on this fixture. The static `.css.ts` row uses the `lite` WASM fast path; dynamic `.css.ts` modules use the full Boa evaluator and are not represented by that median. ## How it works diff --git a/packages/rsbuild-plugin/package.json b/packages/rsbuild-plugin/package.json index 7f262be56..c36670215 100644 --- a/packages/rsbuild-plugin/package.json +++ b/packages/rsbuild-plugin/package.json @@ -21,7 +21,7 @@ "version": "1.0.61", "scripts": { "lint": "eslint", - "build": "tsc && bun build --target node src/index.ts --production --env=disable --outfile dist/index.cjs --format cjs --packages external && bun build --target node src/index.ts --production --env=disable --outfile dist/index.mjs --format esm --packages external" + "build": "bun ../../node_modules/@typescript/native/bin/tsc && bun build --target node src/index.ts --production --env=disable --outfile dist/index.cjs --format cjs --packages external && bun build --target node src/index.ts --production --env=disable --outfile dist/index.mjs --format esm --packages external" }, "publishConfig": { "access": "public" @@ -48,7 +48,7 @@ "@rsbuild/core": "*" }, "devDependencies": { - "@rsbuild/core": "^2.1", - "typescript": "^7.0" + "@rsbuild/core": "^2.2", + "typescript": "^7.0.2" } } diff --git a/packages/vite-plugin/README.md b/packages/vite-plugin/README.md index f499707f8..166b4784b 100644 --- a/packages/vite-plugin/README.md +++ b/packages/vite-plugin/README.md @@ -73,19 +73,31 @@ npm install @devup-ui/webpack-plugin ## Comparison Benchmarks -Next.js Build Time and Build Size (github action - ubuntu-latest) - -| Library | Version | Build Time | Build Size | -| ---------------------- | ------- | ---------- | ----------------- | -| tailwindcss | 4.1.13 | 20.22s | 57,415,796 bytes | -| styleX | 0.15.4 | 38.97s | 76,257,820 bytes | -| vanilla-extract | 1.17.4 | 20.09s | 59,366,237 bytes | -| kuma-ui | 1.5.9 | 21.61s | 67,422,085 bytes | -| panda-css | 1.3.1 | 22.01s | 62,431,065 bytes | -| chakra-ui | 3.27.0 | 29.99s | 210,122,493 bytes | -| mui | 7.3.2 | 22.21s | 94,231,958 bytes | -| devup-ui(per-file css) | 1.0.18 | 18.23s | 57,440,953 bytes | -| devup-ui(single css) | 1.0.18 | 18.35s | 57,409,008 bytes | +[Latest CI benchmark](https://github.com/dev-five-git/devup-ui/actions/runs/33239265133) on `ubuntu-latest`. All Next.js builds use the native TypeScript 7 CLI for type checking. + +Webpack values are one cold build: + +| Library | Version | Build Time | Build Size | +| --------------------------- | ------- | ---------- | ----------------- | +| tailwindcss | 4.3.3 | 15.55s | 66,479,450 bytes | +| styleX | 0.19.0 | 34.27s | 95,417,163 bytes | +| vanilla-extract | 1.21.2 | 14.91s | 67,711,539 bytes | +| kuma-ui | 1.6.4 | 16.43s | 74,774,187 bytes | +| panda-css | 1.12.0 | 16.82s | 70,983,831 bytes | +| chakra-ui | 3.37.0 | 24.79s | 206,598,161 bytes | +| mui | 9.4.0 | 17.12s | 100,621,370 bytes | +| **devup-ui (per-file CSS)** | 1.0.40 | **13.43s** | 66,577,087 bytes | +| **devup-ui (single CSS)** | 1.0.40 | **13.37s** | 66,564,796 bytes | + +Turbopack values are medians of six cold builds in alternating order: + +| Library | Version | Median Build Time | Build Size | +| -------------------------------------- | ------- | ----------------- | -------------------- | +| tailwindcss | 4.3.3 | 6.55s | 38,386,955 bytes | +| **devup-ui (direct APIs, single CSS)** | 1.0.40 | **6.54s** | **36,519,234 bytes** | +| **devup-ui (static `.css.ts`)** | 1.0.40 | **6.47s** | 36,550,197 bytes | + +The Turbopack ranges overlap, so the direct-API result is effectively parity with Tailwind on this fixture. The static `.css.ts` row uses the `lite` WASM fast path; dynamic `.css.ts` modules use the full Boa evaluator and are not represented by that median. ## How it works diff --git a/packages/vite-plugin/package.json b/packages/vite-plugin/package.json index 99630d848..153f9baff 100644 --- a/packages/vite-plugin/package.json +++ b/packages/vite-plugin/package.json @@ -21,7 +21,7 @@ "version": "1.0.67", "scripts": { "lint": "eslint", - "build": "tsc && bun build --target node src/index.ts --production --env=disable --outfile dist/index.cjs --format cjs --packages external && bun build --target node src/index.ts --production --env=disable --outfile dist/index.mjs --format esm --packages external" + "build": "bun ../../node_modules/@typescript/native/bin/tsc && bun build --target node src/index.ts --production --env=disable --outfile dist/index.cjs --format cjs --packages external && bun build --target node src/index.ts --production --env=disable --outfile dist/index.mjs --format esm --packages external" }, "publishConfig": { "access": "public" @@ -44,7 +44,7 @@ "@devup-ui/wasm": "workspace:^" }, "devDependencies": { - "typescript": "^7.0" + "typescript": "^7.0.2" }, "peerDependencies": { "@devup-ui/wasm": "*", diff --git a/packages/webpack-plugin/README.md b/packages/webpack-plugin/README.md index 70fe3d080..83029a18e 100644 --- a/packages/webpack-plugin/README.md +++ b/packages/webpack-plugin/README.md @@ -73,19 +73,31 @@ npm install @devup-ui/webpack-plugin ## Comparison Benchmarks -Next.js Build Time and Build Size (github action - ubuntu-latest) - -| Library | Version | Build Time | Build Size | -| ---------------------- | ------- | ---------- | ----------------- | -| tailwindcss | 4.1.13 | 20.22s | 57,415,796 bytes | -| styleX | 0.15.4 | 38.97s | 76,257,820 bytes | -| vanilla-extract | 1.17.4 | 20.09s | 59,366,237 bytes | -| kuma-ui | 1.5.9 | 21.61s | 67,422,085 bytes | -| panda-css | 1.3.1 | 22.01s | 62,431,065 bytes | -| chakra-ui | 3.27.0 | 29.99s | 210,122,493 bytes | -| mui | 7.3.2 | 22.21s | 94,231,958 bytes | -| devup-ui(per-file css) | 1.0.18 | 18.23s | 57,440,953 bytes | -| devup-ui(single css) | 1.0.18 | 18.35s | 57,409,008 bytes | +[Latest CI benchmark](https://github.com/dev-five-git/devup-ui/actions/runs/33239265133) on `ubuntu-latest`. All Next.js builds use the native TypeScript 7 CLI for type checking. + +Webpack values are one cold build: + +| Library | Version | Build Time | Build Size | +| --------------------------- | ------- | ---------- | ----------------- | +| tailwindcss | 4.3.3 | 15.55s | 66,479,450 bytes | +| styleX | 0.19.0 | 34.27s | 95,417,163 bytes | +| vanilla-extract | 1.21.2 | 14.91s | 67,711,539 bytes | +| kuma-ui | 1.6.4 | 16.43s | 74,774,187 bytes | +| panda-css | 1.12.0 | 16.82s | 70,983,831 bytes | +| chakra-ui | 3.37.0 | 24.79s | 206,598,161 bytes | +| mui | 9.4.0 | 17.12s | 100,621,370 bytes | +| **devup-ui (per-file CSS)** | 1.0.40 | **13.43s** | 66,577,087 bytes | +| **devup-ui (single CSS)** | 1.0.40 | **13.37s** | 66,564,796 bytes | + +Turbopack values are medians of six cold builds in alternating order: + +| Library | Version | Median Build Time | Build Size | +| -------------------------------------- | ------- | ----------------- | -------------------- | +| tailwindcss | 4.3.3 | 6.55s | 38,386,955 bytes | +| **devup-ui (direct APIs, single CSS)** | 1.0.40 | **6.54s** | **36,519,234 bytes** | +| **devup-ui (static `.css.ts`)** | 1.0.40 | **6.47s** | 36,550,197 bytes | + +The Turbopack ranges overlap, so the direct-API result is effectively parity with Tailwind on this fixture. The static `.css.ts` row uses the `lite` WASM fast path; dynamic `.css.ts` modules use the full Boa evaluator and are not represented by that median. ## How it works diff --git a/packages/webpack-plugin/package.json b/packages/webpack-plugin/package.json index 6df69c36b..9b7177c62 100644 --- a/packages/webpack-plugin/package.json +++ b/packages/webpack-plugin/package.json @@ -20,7 +20,7 @@ "type": "module", "version": "1.0.66", "scripts": { - "build": "tsc && bun build --target node src/index.ts --production --env=disable --outfile dist/index.cjs --format cjs --packages external && bun build --target node src/index.ts --production --env=disable --outfile dist/index.mjs --format esm --packages external && bun build --target node src/loader.ts --production --env=disable --outfile dist/loader.cjs --format cjs --packages external && bun build --target node src/loader.ts --production --env=disable --outfile dist/loader.mjs --format esm --packages external && bun build --target node src/css-loader.ts --production --env=disable --outfile dist/css-loader.cjs --format cjs --packages external && bun build --target node src/css-loader.ts --production --env=disable --outfile dist/css-loader.mjs --format esm --packages external" + "build": "bun ../../node_modules/@typescript/native/bin/tsc && bun build --target node src/index.ts --production --env=disable --outfile dist/index.cjs --format cjs --packages external && bun build --target node src/index.ts --production --env=disable --outfile dist/index.mjs --format esm --packages external && bun build --target node src/loader.ts --production --env=disable --outfile dist/loader.cjs --format cjs --packages external && bun build --target node src/loader.ts --production --env=disable --outfile dist/loader.mjs --format esm --packages external && bun build --target node src/css-loader.ts --production --env=disable --outfile dist/css-loader.cjs --format cjs --packages external && bun build --target node src/css-loader.ts --production --env=disable --outfile dist/css-loader.mjs --format esm --packages external" }, "publishConfig": { "access": "public" @@ -57,6 +57,6 @@ }, "devDependencies": { "@types/webpack": "^5.28", - "typescript": "^7.0" + "typescript": "^7.0.2" } }