diff --git a/.release-it.ts b/.release-it.ts new file mode 100644 index 0000000..fbc7b87 --- /dev/null +++ b/.release-it.ts @@ -0,0 +1,15 @@ +/* eslint-disable no-template-curly-in-string */ +import type { Config } from 'release-it' + +export default { + git: { + commitMessage: 'v${version}', + tagName: 'v${version}', + }, + npm: { + publish: false, + }, + hooks: { + 'after:bump': 'tsx scripts/release.ts', + }, +} satisfies Config diff --git a/.vscode/extensions.json b/.vscode/extensions.json index fa6314a..0b69b00 100644 --- a/.vscode/extensions.json +++ b/.vscode/extensions.json @@ -1,8 +1,8 @@ { - "recommendations": [ - "tauri-apps.tauri-vscode", - "rust-lang.rust-analyzer", - "biomejs.biome", - "antfu.unocss" - ] + "recommendations": [ + "tauri-apps.tauri-vscode", + "rust-lang.rust-analyzer", + "antfu.unocss", + "dbaeumer.vscode-eslint" + ] } diff --git a/Cargo.lock b/Cargo.lock index d68f097..8e47990 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -62,6 +62,149 @@ version = "1.0.97" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "dcfed56ad506cb2c684a14971b8861fdc3baaaae314b9e5f9bb532cbe3ba7a4f" +[[package]] +name = "async-broadcast" +version = "0.7.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "435a87a52755b8f27fcf321ac4f04b2802e337c8c4872923137471ec39c37532" +dependencies = [ + "event-listener", + "event-listener-strategy", + "futures-core", + "pin-project-lite", +] + +[[package]] +name = "async-channel" +version = "2.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "89b47800b0be77592da0afd425cc03468052844aff33b84e33cc696f64e77b6a" +dependencies = [ + "concurrent-queue", + "event-listener-strategy", + "futures-core", + "pin-project-lite", +] + +[[package]] +name = "async-executor" +version = "1.13.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "30ca9a001c1e8ba5149f91a74362376cc6bc5b919d92d988668657bd570bdcec" +dependencies = [ + "async-task", + "concurrent-queue", + "fastrand", + "futures-lite", + "slab", +] + +[[package]] +name = "async-fs" +version = "2.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ebcd09b382f40fcd159c2d695175b2ae620ffa5f3bd6f664131efff4e8b9e04a" +dependencies = [ + "async-lock", + "blocking", + "futures-lite", +] + +[[package]] +name = "async-io" +version = "2.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "43a2b323ccce0a1d90b449fd71f2a06ca7faa7c54c2751f06c9bd851fc061059" +dependencies = [ + "async-lock", + "cfg-if", + "concurrent-queue", + "futures-io", + "futures-lite", + "parking", + "polling", + "rustix 0.38.44", + "slab", + "tracing", + "windows-sys 0.59.0", +] + +[[package]] +name = "async-lock" +version = "3.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ff6e472cdea888a4bd64f342f09b3f50e1886d32afe8df3d663c01140b811b18" +dependencies = [ + "event-listener", + "event-listener-strategy", + "pin-project-lite", +] + +[[package]] +name = "async-process" +version = "2.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "63255f1dc2381611000436537bbedfe83183faa303a5a0edaf191edef06526bb" +dependencies = [ + "async-channel", + "async-io", + "async-lock", + "async-signal", + "async-task", + "blocking", + "cfg-if", + "event-listener", + "futures-lite", + "rustix 0.38.44", + "tracing", +] + +[[package]] +name = "async-recursion" +version = "1.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3b43422f69d8ff38f95f1b2bb76517c91589a924d1559a0e935d7c8ce0274c11" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.100", +] + +[[package]] +name = "async-signal" +version = "0.2.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "637e00349800c0bdf8bfc21ebbc0b6524abea702b0da4168ac00d070d0c0b9f3" +dependencies = [ + "async-io", + "async-lock", + "atomic-waker", + "cfg-if", + "futures-core", + "futures-io", + "rustix 0.38.44", + "signal-hook-registry", + "slab", + "windows-sys 0.59.0", +] + +[[package]] +name = "async-task" +version = "4.7.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8b75356056920673b02621b35afd0f7dda9306d03c79a30f5c56c44cf256e3de" + +[[package]] +name = "async-trait" +version = "0.1.88" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e539d3fca749fcee5236ab05e93a52867dd549cc157c8cb7f99595f3cedffdb5" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.100", +] + [[package]] name = "atk" version = "0.18.2" @@ -85,6 +228,12 @@ dependencies = [ "system-deps", ] +[[package]] +name = "atomic-waker" +version = "1.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1505bd5d3d116872e7271a6d4e16d81d0c8570876c8de68093a09ac269d8aac0" + [[package]] name = "autocfg" version = "1.4.0" @@ -166,6 +315,19 @@ dependencies = [ "objc2 0.6.0", ] +[[package]] +name = "blocking" +version = "1.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "703f41c54fc768e63e091340b424302bb1c29ef4aa0c7f10fe849dfb114d29ea" +dependencies = [ + "async-channel", + "async-task", + "futures-io", + "futures-lite", + "piper", +] + [[package]] name = "bongo-cat" version = "0.0.0" @@ -177,6 +339,7 @@ dependencies = [ "tauri-build", "tauri-nspanel", "tauri-plugin-custom-window", + "tauri-plugin-opener", "tauri-plugin-os", "tauri-plugin-process", ] @@ -418,6 +581,15 @@ dependencies = [ "memchr", ] +[[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 = "convert_case" version = "0.4.0" @@ -789,6 +961,33 @@ version = "1.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "4ef6b89e5b37196644d8796de5268852ff179b44e96276cf4290264843743bb7" +[[package]] +name = "endi" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a3d8a32ae18130a3c84dd492d4215c3d913c3b07c6b63c2eb3eb7ff1101ab7bf" + +[[package]] +name = "enumflags2" +version = "0.7.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ba2f4b465f5318854c6f8dd686ede6c0a9dc67d4b1ac241cf0eb51521a309147" +dependencies = [ + "enumflags2_derive", + "serde", +] + +[[package]] +name = "enumflags2_derive" +version = "0.7.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fc4caf64a58d7a6d65ab00639b046ff54399a39f5f2554728895ace4b297cd79" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.100", +] + [[package]] name = "equivalent" version = "1.0.2" @@ -815,6 +1014,33 @@ dependencies = [ "windows-sys 0.59.0", ] +[[package]] +name = "event-listener" +version = "5.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3492acde4c3fc54c845eaab3eed8bd00c7a7d881f78bfc801e43a93dec1331ae" +dependencies = [ + "concurrent-queue", + "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 = "fastrand" +version = "2.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "37909eebbb50d72f9059c3b6d82c0463f2ff062c9e95845c43a6c9c0355411be" + [[package]] name = "fdeflate" version = "0.3.7" @@ -943,6 +1169,19 @@ version = "0.3.31" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9e5c1b78ca4aae1ac06c48a526a655760685149f0d465d21f37abfe57ce075c6" +[[package]] +name = "futures-lite" +version = "2.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f5edaec856126859abb19ed65f39e90fea3a9574b9707f13539acf4abf7eb532" +dependencies = [ + "fastrand", + "futures-core", + "futures-io", + "parking", + "pin-project-lite", +] + [[package]] name = "futures-macro" version = "0.3.31" @@ -1107,7 +1346,7 @@ version = "1.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ed7131e57abbde63513e0e6636f76668a1ca9798dcae2df4e283cae9ee83859e" dependencies = [ - "rustix", + "rustix 1.0.3", "windows-targets 0.52.6", ] @@ -1323,6 +1562,12 @@ version = "0.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "2304e00983f87ffb38b55b444b5e3b60a884b5d30c0fca7d82fe33449bbe55ea" +[[package]] +name = "hermit-abi" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fbf6a919d6cf397374f7dfeeea91d974c7c0a7221d0d0f4f20d859d329e53fcc" + [[package]] name = "hex" version = "0.4.3" @@ -1649,6 +1894,25 @@ version = "2.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "469fb0b9cefa57e3ef31275ee7cacb78f2fdca44e4765491884a2b119d4eb130" +[[package]] +name = "is-docker" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "928bae27f42bc99b60d9ac7334e3a21d10ad8f1835a4e12ec3ec0464765ed1b3" +dependencies = [ + "once_cell", +] + +[[package]] +name = "is-wsl" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "173609498df190136aa7dea1a91db051746d339e18476eed5ca40521f02d7aa5" +dependencies = [ + "is-docker", + "once_cell", +] + [[package]] name = "itoa" version = "0.4.8" @@ -1818,6 +2082,12 @@ dependencies = [ "libc", ] +[[package]] +name = "linux-raw-sys" +version = "0.4.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d26c52dbd32dccf2d10cac7725f8eae5296885fb5703b261f7d0a0739ec807ab" + [[package]] name = "linux-raw-sys" version = "0.9.3" @@ -1980,6 +2250,19 @@ version = "1.0.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "650eef8c711430f1a879fdd01d4745a7deea475becfb90269c06775983bbf086" +[[package]] +name = "nix" +version = "0.29.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "71e2746dc3a24dd78b3cfcb7be93368c6de9963d30f43a6a73998a9cf4b17b46" +dependencies = [ + "bitflags 2.9.0", + "cfg-if", + "cfg_aliases", + "libc", + "memoffset", +] + [[package]] name = "nodrop" version = "0.1.14" @@ -2278,12 +2561,34 @@ version = "1.21.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c2806eaa3524762875e21c3dcd057bc4b7bfa01ce4da8d46be1cd43649e1cc6b" +[[package]] +name = "open" +version = "5.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e2483562e62ea94312f3576a7aca397306df7990b8d89033e18766744377ef95" +dependencies = [ + "dunce", + "is-wsl", + "libc", + "pathdiff", +] + [[package]] name = "option-ext" version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "04744f49eae99ab78e0d5c0b603ab218f515ea8cfe5a456d7629ad883a3b6e7d" +[[package]] +name = "ordered-stream" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9aa2b01e1d916879f73a53d01d1d6cee68adbb31d6d9177a8cfce093cced1d50" +dependencies = [ + "futures-core", + "pin-project-lite", +] + [[package]] name = "os_info" version = "3.10.0" @@ -2320,6 +2625,12 @@ dependencies = [ "system-deps", ] +[[package]] +name = "parking" +version = "2.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f38d5652c16fde515bb1ecef450ab0f6a219d619a7274976324d5e377f7dceba" + [[package]] name = "parking_lot" version = "0.12.3" @@ -2343,6 +2654,12 @@ dependencies = [ "windows-targets 0.52.6", ] +[[package]] +name = "pathdiff" +version = "0.2.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "df94ce210e5bc13cb6651479fa48d14f601d9858cfe0467f43ae157023b938d3" + [[package]] name = "percent-encoding" version = "2.3.1" @@ -2495,6 +2812,17 @@ version = "0.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8b870d8c151b6f2fb93e84a13146138f05d02ed11c7e7c54f8826aaaf7c9f184" +[[package]] +name = "piper" +version = "0.2.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "96c8c490f422ef9a4efd2cb5b42b76c8613d7e7dfc1caf667b8a3350a5acc066" +dependencies = [ + "atomic-waker", + "fastrand", + "futures-io", +] + [[package]] name = "pkg-config" version = "0.3.32" @@ -2527,6 +2855,21 @@ dependencies = [ "miniz_oxide", ] +[[package]] +name = "polling" +version = "3.7.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a604568c3202727d1507653cb121dbd627a58684eb09a820fd746bee38b4442f" +dependencies = [ + "cfg-if", + "concurrent-queue", + "hermit-abi", + "pin-project-lite", + "rustix 0.38.44", + "tracing", + "windows-sys 0.59.0", +] + [[package]] name = "powerfmt" version = "0.2.0" @@ -2844,6 +3187,19 @@ dependencies = [ "semver", ] +[[package]] +name = "rustix" +version = "0.38.44" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fdb5bc1ae2baa591800df16c9ca78619bf65c0488b41b96ccec5d11220d8c154" +dependencies = [ + "bitflags 2.9.0", + "errno", + "libc", + "linux-raw-sys 0.4.15", + "windows-sys 0.59.0", +] + [[package]] name = "rustix" version = "1.0.3" @@ -2853,7 +3209,7 @@ dependencies = [ "bitflags 2.9.0", "errno", "libc", - "linux-raw-sys", + "linux-raw-sys 0.9.3", "windows-sys 0.59.0", ] @@ -3105,6 +3461,15 @@ version = "1.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0fda2ff0d084019ba4d7c6f371c95d8fd75ce3524c3cb8fb653a3023f6323e64" +[[package]] +name = "signal-hook-registry" +version = "1.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a9e9e0b4211b72e7b8b6e85c807d36c212bdb33ea8587f7569562a84df5465b1" +dependencies = [ + "libc", +] + [[package]] name = "simd-adler32" version = "0.3.7" @@ -3202,6 +3567,12 @@ version = "1.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a8f112729512f8e442d81f95a8a7ddf2b7c6b8a1a6f509a95864142b30cab2d3" +[[package]] +name = "static_assertions" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a2eb9349b6444b326872e140eb1cf5e7c522154d69e7a0ffb0fb81c06b37543f" + [[package]] name = "string_cache" version = "0.8.9" @@ -3521,6 +3892,28 @@ dependencies = [ "tauri-plugin", ] +[[package]] +name = "tauri-plugin-opener" +version = "2.2.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2fdc6cb608e04b7d2b6d1f21e9444ad49245f6d03465ba53323d692d1ceb1a30" +dependencies = [ + "dunce", + "glob", + "objc2-app-kit", + "objc2-foundation 0.3.0", + "open", + "schemars", + "serde", + "serde_json", + "tauri", + "tauri-plugin", + "thiserror 2.0.12", + "url", + "windows", + "zbus", +] + [[package]] name = "tauri-plugin-os" version = "2.2.1" @@ -3644,6 +4037,19 @@ dependencies = [ "toml", ] +[[package]] +name = "tempfile" +version = "3.19.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7437ac7763b9b123ccf33c338a5cc1bac6f69b45a136c19bdd8a65e3916435bf" +dependencies = [ + "fastrand", + "getrandom 0.3.2", + "once_cell", + "rustix 1.0.3", + "windows-sys 0.59.0", +] + [[package]] name = "tendril" version = "0.4.3" @@ -3860,9 +4266,21 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "784e0ac535deb450455cbfa28a6f0df145ea1bb7ae51b821cf5e7927fdcfbdd0" dependencies = [ "pin-project-lite", + "tracing-attributes", "tracing-core", ] +[[package]] +name = "tracing-attributes" +version = "0.1.28" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "395ae124c09f9e6918a2310af6038fba074bcf474ac352496d5910dd59a2226d" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.100", +] + [[package]] name = "tracing-core" version = "0.1.33" @@ -3912,6 +4330,17 @@ version = "1.18.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1dccffe3ce07af9386bfd29e80c0ab1a8205a2fc34e4bcd40364df902cfa8f3f" +[[package]] +name = "uds_windows" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "89daebc3e6fd160ac4aa9fc8b3bf71e1f74fbf92367ae71fb83a037e8bf164b9" +dependencies = [ + "memoffset", + "tempfile", + "winapi", +] + [[package]] name = "unic-char-property" version = "0.9.0" @@ -4831,6 +5260,16 @@ dependencies = [ "pkg-config", ] +[[package]] +name = "xdg-home" +version = "1.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ec1cdab258fb55c0da61328dc52c8764709b249011b2cad0454c72f0bf10a1f6" +dependencies = [ + "libc", + "windows-sys 0.59.0", +] + [[package]] name = "yoke" version = "0.7.5" @@ -4855,6 +5294,69 @@ dependencies = [ "synstructure", ] +[[package]] +name = "zbus" +version = "5.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "59c333f648ea1b647bc95dc1d34807c8e25ed7a6feff3394034dc4776054b236" +dependencies = [ + "async-broadcast", + "async-executor", + "async-fs", + "async-io", + "async-lock", + "async-process", + "async-recursion", + "async-task", + "async-trait", + "blocking", + "enumflags2", + "event-listener", + "futures-core", + "futures-lite", + "hex", + "nix", + "ordered-stream", + "serde", + "serde_repr", + "static_assertions", + "tracing", + "uds_windows", + "windows-sys 0.59.0", + "winnow 0.7.4", + "xdg-home", + "zbus_macros", + "zbus_names", + "zvariant", +] + +[[package]] +name = "zbus_macros" +version = "5.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f325ad10eb0d0a3eb060203494c3b7ec3162a01a59db75d2deee100339709fc0" +dependencies = [ + "proc-macro-crate 3.3.0", + "proc-macro2", + "quote", + "syn 2.0.100", + "zbus_names", + "zvariant", + "zvariant_utils", +] + +[[package]] +name = "zbus_names" +version = "4.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7be68e64bf6ce8db94f63e72f0c7eb9a60d733f7e0499e628dfab0f84d6bcb97" +dependencies = [ + "serde", + "static_assertions", + "winnow 0.7.4", + "zvariant", +] + [[package]] name = "zerocopy" version = "0.8.24" @@ -4917,3 +5419,45 @@ dependencies = [ "quote", "syn 2.0.100", ] + +[[package]] +name = "zvariant" +version = "5.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b2df9ee044893fcffbdc25de30546edef3e32341466811ca18421e3cd6c5a3ac" +dependencies = [ + "endi", + "enumflags2", + "serde", + "static_assertions", + "winnow 0.7.4", + "zvariant_derive", + "zvariant_utils", +] + +[[package]] +name = "zvariant_derive" +version = "5.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "74170caa85b8b84cc4935f2d56a57c7a15ea6185ccdd7eadb57e6edd90f94b2f" +dependencies = [ + "proc-macro-crate 3.3.0", + "proc-macro2", + "quote", + "syn 2.0.100", + "zvariant_utils", +] + +[[package]] +name = "zvariant_utils" +version = "3.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e16edfee43e5d7b553b77872d99bc36afdda75c223ca7ad5e3fbecd82ca5fc34" +dependencies = [ + "proc-macro2", + "quote", + "serde", + "static_assertions", + "syn 2.0.100", + "winnow 0.7.4", +] diff --git a/Cargo.toml b/Cargo.toml index 3cfc49e..eefb316 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -1,14 +1,12 @@ [workspace] -resolver="2" -members = [ - "src-tauri" -] +resolver = "2" +members = [ "src-tauri" ] [workspace.dependencies] -tauri = "2" +tauri = "2" serde = "1" serde_json = "1" fs_extra = "1" -tauri-plugin = { version = "2", features = ["build"] } +tauri-plugin = { version = "2", features = [ "build" ] } tauri-nspanel = { git = "https://github.com/ahkohd/tauri-nspanel", branch = "v2" } -tauri-plugin-custom-window = { path = "./src-tauri/src/plugins/window" } \ No newline at end of file +tauri-plugin-custom-window = { path = "./src-tauri/src/plugins/window" } diff --git a/README.md b/README.md index 66cecc4..fe8ccc8 100644 --- a/README.md +++ b/README.md @@ -15,9 +15,9 @@ /> - Linux @@ -36,7 +36,7 @@ + /> diff --git a/biome.json b/biome.json deleted file mode 100644 index 96013fb..0000000 --- a/biome.json +++ /dev/null @@ -1,56 +0,0 @@ -{ - "$schema": "./node_modules/@biomejs/biome/configuration_schema.json", - "files": { - "ignoreUnknown": false, - "ignore": [] - }, - "formatter": { - "enabled": true, - "indentStyle": "tab" - }, - "organizeImports": { - "enabled": true - }, - "linter": { - "enabled": true, - "rules": { - "recommended": true, - "suspicious": { - "noConsoleLog": "error" - }, - "correctness": { - "noUnusedVariables": "error", - "noUnusedImports": "error", - "useExhaustiveDependencies": "off" - }, - "nursery": { - "useSortedClasses": { - "level": "error", - "fix": "safe" - } - }, - "style": { - "noUnusedTemplateLiteral": { - "level": "error", - "fix": "safe" - }, - "useTemplate": { - "level": "error", - "fix": "safe" - }, - "useSelfClosingElements": { - "level": "error", - "fix": "safe" - } - }, - "a11y": { - "useAltText": "off" - } - } - }, - "javascript": { - "formatter": { - "quoteStyle": "double" - } - } -} diff --git a/eslint.config.ts b/eslint.config.ts new file mode 100644 index 0000000..8fb5ac4 --- /dev/null +++ b/eslint.config.ts @@ -0,0 +1,12 @@ +import antfu from '@antfu/eslint-config' + +export default antfu({ + formatters: true, + unocss: true, + rules: { + 'antfu/if-newline': 'off', + 'style/brace-style': ['error', '1tbs'], + 'ts/no-use-before-define': 'off', + 'unused-imports/no-unused-imports': 'error', + }, +}) diff --git a/index.html b/index.html index 313fe05..d93c193 100644 --- a/index.html +++ b/index.html @@ -1,5 +1,5 @@ - - + + @@ -10,7 +10,7 @@ -
- +
+ diff --git a/package.json b/package.json index 34a8408..864f592 100644 --- a/package.json +++ b/package.json @@ -1,64 +1,66 @@ { - "name": "bongo-cat", - "private": true, - "author": { - "name": "ayangweb", - "email": "ayangweb@foxmail.com" - }, - "version": "0.0.0", - "type": "module", - "scripts": { - "dev": "run-s build:icon dev:vite", - "build": "run-s build:*", - "dev:vite": "vite", - "build:vite": "vite build", - "build:icon": "tauri icon src-tauri/assets/logo.png", - "preview": "vite preview", - "tauri": "tauri", - "lint": "biome check --write src", - "preinstall": "npx only-allow pnpm", - "prepare": "simple-git-hooks", - "release": "release-it" - }, - "dependencies": { - "@tauri-apps/api": "^2.4.0", - "@tauri-apps/plugin-os": "^2.2.1", - "@tauri-apps/plugin-process": "^2.2.0", - "@unocss/reset": "66.1.0-beta.7", - "pixi-live2d-display": "^0.4.0", - "pixi.js": "^6.5.10", - "react": "^18.3.1", - "react-dom": "^18.3.1", - "react-router-dom": "^7.4.0" - }, - "devDependencies": { - "@biomejs/biome": "1.9.4", - "@commitlint/cli": "^19.8.0", - "@commitlint/config-conventional": "^19.8.0", - "@tauri-apps/cli": "^2.4.0", - "@types/node": "^22.13.14", - "@types/react": "^18.3.20", - "@types/react-dom": "^18.3.5", - "@unocss/preset-rem-to-px": "66.1.0-beta.7", - "@vitejs/plugin-react": "^4.3.4", - "lint-staged": "^15.5.0", - "npm-run-all": "^4.1.5", - "release-it": "^18.1.2", - "simple-git-hooks": "^2.12.1", - "typescript": "~5.6.3", - "unocss": "66.1.0-beta.7", - "vite": "^6.2.3" - }, - "pnpm": { - "patchedDependencies": { - "pixi-live2d-display": "patches/pixi-live2d-display.patch" - } - }, - "simple-git-hooks": { - "commit-msg": "npx --no-install commitlint -e", - "pre-commit": "npx lint-staged" - }, - "lint-staged": { - "**.{ts,tsx,json}": ["biome check --apply --no-errors-on-unmatched"] - } + "name": "bongo-cat", + "type": "module", + "version": "0.0.0", + "private": true, + "author": { + "name": "ayangweb", + "email": "ayangweb@foxmail.com" + }, + "scripts": { + "dev": "run-s build:icon dev:vite", + "build": "run-s build:*", + "dev:vite": "vite", + "build:vite": "vite build", + "build:icon": "tsx scripts/buildIcon.ts", + "preview": "vite preview", + "tauri": "tauri", + "lint": "eslint --fix", + "preinstall": "npx only-allow pnpm", + "prepare": "simple-git-hooks", + "release": "release-it" + }, + "dependencies": { + "@tauri-apps/api": "^2.4.0", + "@tauri-apps/plugin-opener": "~2.2.6", + "@tauri-apps/plugin-os": "^2.2.1", + "@tauri-apps/plugin-process": "^2.2.0", + "@unocss/reset": "66.1.0-beta.7", + "pixi-live2d-display": "^0.4.0", + "pixi.js": "^6.5.10", + "vue": "^3.5.13", + "vue-router": "^4.5.0" + }, + "devDependencies": { + "@antfu/eslint-config": "^4.11.0", + "@commitlint/cli": "^19.8.0", + "@commitlint/config-conventional": "^19.8.0", + "@tauri-apps/cli": "^2.4.0", + "@types/node": "^22.13.14", + "@unocss/eslint-plugin": "^66.0.0", + "@unocss/preset-rem-to-px": "66.1.0-beta.7", + "@vitejs/plugin-vue": "^5.2.3", + "eslint": "^9.23.0", + "eslint-plugin-format": "^1.0.1", + "lint-staged": "^15.5.0", + "npm-run-all": "^4.1.5", + "release-it": "^18.1.2", + "simple-git-hooks": "^2.12.1", + "tsx": "^4.19.3", + "typescript": "~5.6.3", + "unocss": "66.1.0-beta.7", + "vite": "^6.2.3" + }, + "pnpm": { + "patchedDependencies": { + "pixi-live2d-display": "patches/pixi-live2d-display.patch" + } + }, + "simple-git-hooks": { + "commit-msg": "npx --no-install commitlint -e", + "pre-commit": "npx lint-staged" + }, + "lint-staged": { + "*": "eslint --fix" + } } diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 17d3f85..3faf2eb 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -16,6 +16,9 @@ importers: '@tauri-apps/api': specifier: ^2.4.0 version: 2.4.0 + '@tauri-apps/plugin-opener': + specifier: ~2.2.6 + version: 2.2.6 '@tauri-apps/plugin-os': specifier: ^2.2.1 version: 2.2.1 @@ -31,19 +34,16 @@ importers: pixi.js: specifier: ^6.5.10 version: 6.5.10 - react: - specifier: ^18.3.1 - version: 18.3.1 - react-dom: - specifier: ^18.3.1 - version: 18.3.1(react@18.3.1) - react-router-dom: - specifier: ^7.4.0 - version: 7.4.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + vue: + specifier: ^3.5.13 + version: 3.5.13(typescript@5.6.3) + vue-router: + specifier: ^4.5.0 + version: 4.5.0(vue@3.5.13(typescript@5.6.3)) devDependencies: - '@biomejs/biome': - specifier: 1.9.4 - version: 1.9.4 + '@antfu/eslint-config': + specifier: ^4.11.0 + version: 4.11.0(@typescript-eslint/utils@8.28.0(eslint@9.23.0(jiti@2.4.2))(typescript@5.6.3))(@unocss/eslint-plugin@66.0.0(eslint@9.23.0(jiti@2.4.2))(typescript@5.6.3))(@vue/compiler-sfc@3.5.13)(eslint-plugin-format@1.0.1(eslint@9.23.0(jiti@2.4.2)))(eslint@9.23.0(jiti@2.4.2))(typescript@5.6.3) '@commitlint/cli': specifier: ^19.8.0 version: 19.8.0(@types/node@22.13.14)(typescript@5.6.3) @@ -56,18 +56,21 @@ importers: '@types/node': specifier: ^22.13.14 version: 22.13.14 - '@types/react': - specifier: ^18.3.20 - version: 18.3.20 - '@types/react-dom': - specifier: ^18.3.5 - version: 18.3.5(@types/react@18.3.20) + '@unocss/eslint-plugin': + specifier: ^66.0.0 + version: 66.0.0(eslint@9.23.0(jiti@2.4.2))(typescript@5.6.3) '@unocss/preset-rem-to-px': specifier: 66.1.0-beta.7 version: 66.1.0-beta.7 - '@vitejs/plugin-react': - specifier: ^4.3.4 - version: 4.3.4(vite@6.2.3(@types/node@22.13.14)(jiti@2.4.2)(yaml@2.7.0)) + '@vitejs/plugin-vue': + specifier: ^5.2.3 + version: 5.2.3(vite@6.2.3(@types/node@22.13.14)(jiti@2.4.2)(tsx@4.19.3)(yaml@2.7.0))(vue@3.5.13(typescript@5.6.3)) + eslint: + specifier: ^9.23.0 + version: 9.23.0(jiti@2.4.2) + eslint-plugin-format: + specifier: ^1.0.1 + version: 1.0.1(eslint@9.23.0(jiti@2.4.2)) lint-staged: specifier: ^15.5.0 version: 15.5.0 @@ -80,15 +83,18 @@ importers: simple-git-hooks: specifier: ^2.12.1 version: 2.12.1 + tsx: + specifier: ^4.19.3 + version: 4.19.3 typescript: specifier: ~5.6.3 version: 5.6.3 unocss: specifier: 66.1.0-beta.7 - version: 66.1.0-beta.7(postcss@8.5.3)(vite@6.2.3(@types/node@22.13.14)(jiti@2.4.2)(yaml@2.7.0))(vue@3.5.13(typescript@5.6.3)) + version: 66.1.0-beta.7(postcss@8.5.3)(vite@6.2.3(@types/node@22.13.14)(jiti@2.4.2)(tsx@4.19.3)(yaml@2.7.0))(vue@3.5.13(typescript@5.6.3)) vite: specifier: ^6.2.3 - version: 6.2.3(@types/node@22.13.14)(jiti@2.4.2)(yaml@2.7.0) + version: 6.2.3(@types/node@22.13.14)(jiti@2.4.2)(tsx@4.19.3)(yaml@2.7.0) packages: @@ -96,6 +102,55 @@ packages: resolution: {integrity: sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw==} engines: {node: '>=6.0.0'} + '@antfu/eslint-config@4.11.0': + resolution: {integrity: sha512-KMLIrZflEFsOEF/N0Xl8iVaheLTdgT3gAwXVzdG5Ng8ieNhBsRsaThnqI7of10kh6psSBLJ6SkNK+ZF98fQIXQ==} + hasBin: true + peerDependencies: + '@eslint-react/eslint-plugin': ^1.19.0 + '@prettier/plugin-xml': ^3.4.1 + '@unocss/eslint-plugin': '>=0.50.0' + astro-eslint-parser: ^1.0.2 + eslint: ^9.10.0 + eslint-plugin-astro: ^1.2.0 + eslint-plugin-format: '>=0.1.0' + eslint-plugin-react-hooks: ^5.2.0 + eslint-plugin-react-refresh: ^0.4.19 + eslint-plugin-solid: ^0.14.3 + eslint-plugin-svelte: '>=2.35.1' + eslint-plugin-vuejs-accessibility: ^2.4.1 + prettier-plugin-astro: ^0.14.0 + prettier-plugin-slidev: ^1.0.5 + svelte-eslint-parser: '>=0.37.0' + peerDependenciesMeta: + '@eslint-react/eslint-plugin': + optional: true + '@prettier/plugin-xml': + optional: true + '@unocss/eslint-plugin': + optional: true + astro-eslint-parser: + optional: true + eslint-plugin-astro: + optional: true + eslint-plugin-format: + optional: true + eslint-plugin-react-hooks: + optional: true + eslint-plugin-react-refresh: + optional: true + eslint-plugin-solid: + optional: true + eslint-plugin-svelte: + optional: true + eslint-plugin-vuejs-accessibility: + optional: true + prettier-plugin-astro: + optional: true + prettier-plugin-slidev: + optional: true + svelte-eslint-parser: + optional: true + '@antfu/install-pkg@1.0.0': resolution: {integrity: sha512-xvX6P/lo1B3ej0OsaErAjqgFYzYVcJpamjLAFLYh9vRJngBrMoUG7aVnrGTeqM7yxbyTD5p3F2+0/QUEh8Vzhw==} @@ -106,36 +161,6 @@ packages: resolution: {integrity: sha512-RJlIHRueQgwWitWgF8OdFYGZX328Ax5BCemNGlqHfplnRT9ESi8JkFlvaVYbS+UubVY6dpv87Fs2u5M29iNFVQ==} engines: {node: '>=6.9.0'} - '@babel/compat-data@7.26.8': - resolution: {integrity: sha512-oH5UPLMWR3L2wEFLnFJ1TZXqHufiTKAiLfqw5zkhS4dKXLJ10yVztfil/twG8EDTA4F/tvVNw9nOl4ZMslB8rQ==} - engines: {node: '>=6.9.0'} - - '@babel/core@7.26.10': - resolution: {integrity: sha512-vMqyb7XCDMPvJFFOaT9kxtiRh42GwlZEg1/uIgtZshS5a/8OaduUfCi7kynKgc3Tw/6Uo2D+db9qBttghhmxwQ==} - engines: {node: '>=6.9.0'} - - '@babel/generator@7.27.0': - resolution: {integrity: sha512-VybsKvpiN1gU1sdMZIp7FcqphVVKEwcuj02x73uvcHE0PTihx1nlBcowYWhDwjpoAXRv43+gDzyggGnn1XZhVw==} - engines: {node: '>=6.9.0'} - - '@babel/helper-compilation-targets@7.27.0': - resolution: {integrity: sha512-LVk7fbXml0H2xH34dFzKQ7TDZ2G4/rVTOrq9V+icbbadjbVxxeFeDsNHv2SrZeWoA+6ZiTyWYWtScEIW07EAcA==} - engines: {node: '>=6.9.0'} - - '@babel/helper-module-imports@7.25.9': - resolution: {integrity: sha512-tnUA4RsrmflIM6W6RFTLFSXITtl0wKjgpnLgXyowocVPrbYrLUXSBXDgTs8BlbmIzIdlBySRQjINYs2BAkiLtw==} - engines: {node: '>=6.9.0'} - - '@babel/helper-module-transforms@7.26.0': - resolution: {integrity: sha512-xO+xu6B5K2czEnQye6BHA7DolFFmS3LB7stHZFaOLb1pAwO1HWLS8fXA+eh0A2yIvltPVmx3eNNDBJA2SLHXFw==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0 - - '@babel/helper-plugin-utils@7.26.5': - resolution: {integrity: sha512-RS+jZcRdZdRFzMyr+wcsaqOmld1/EqTghfaBGQQd/WnRdzdlvSZ//kF7U8VQTxf1ynZ4cjUcYgjVGx13ewNPMg==} - engines: {node: '>=6.9.0'} - '@babel/helper-string-parser@7.25.9': resolution: {integrity: sha512-4A/SCr/2KLd5jrtOMFzaKjVtAei3+2r/NChoBNoZ3EyP/+GlhoaEGoWOZUmFmoITP7zOJyHIMm+DYRd8o3PvHA==} engines: {node: '>=6.9.0'} @@ -144,95 +169,20 @@ packages: resolution: {integrity: sha512-Ed61U6XJc3CVRfkERJWDz4dJwKe7iLmmJsbOGu9wSloNSFttHV0I8g6UAgb7qnK5ly5bGLPd4oXZlxCdANBOWQ==} engines: {node: '>=6.9.0'} - '@babel/helper-validator-option@7.25.9': - resolution: {integrity: sha512-e/zv1co8pp55dNdEcCynfj9X7nyUKUXoUEwfXqaZt0omVOmDe9oOTdKStH4GmAw6zxMFs50ZayuMfHDKlO7Tfw==} - engines: {node: '>=6.9.0'} - - '@babel/helpers@7.27.0': - resolution: {integrity: sha512-U5eyP/CTFPuNE3qk+WZMxFkp/4zUzdceQlfzf7DdGdhp+Fezd7HD+i8Y24ZuTMKX3wQBld449jijbGq6OdGNQg==} - engines: {node: '>=6.9.0'} - '@babel/parser@7.27.0': resolution: {integrity: sha512-iaepho73/2Pz7w2eMS0Q5f83+0RKI7i4xmiYeBmDzfRVbQtTOG7Ts0S4HzJVsTMGI9keU8rNfuZr8DKfSt7Yyg==} engines: {node: '>=6.0.0'} hasBin: true - '@babel/plugin-transform-react-jsx-self@7.25.9': - resolution: {integrity: sha512-y8quW6p0WHkEhmErnfe58r7x0A70uKphQm8Sp8cV7tjNQwK56sNVK0M73LK3WuYmsuyrftut4xAkjjgU0twaMg==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-react-jsx-source@7.25.9': - resolution: {integrity: sha512-+iqjT8xmXhhYv4/uiYd8FNQsraMFZIfxVSqxxVSZP0WbbSAWvBXAul0m/zu+7Vv4O/3WtApy9pmaTMiumEZgfg==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/template@7.27.0': - resolution: {integrity: sha512-2ncevenBqXI6qRMukPlXwHKHchC7RyMuu4xv5JBXRfOGVcTy1mXCD12qrp7Jsoxll1EV3+9sE4GugBVRjT2jFA==} - engines: {node: '>=6.9.0'} - - '@babel/traverse@7.27.0': - resolution: {integrity: sha512-19lYZFzYVQkkHkl4Cy4WrAVcqBkgvV2YM2TU3xG6DIwO7O3ecbDPfW3yM3bjAGcqcQHi+CCtjMR3dIEHxsd6bA==} - engines: {node: '>=6.9.0'} - '@babel/types@7.27.0': resolution: {integrity: sha512-H45s8fVLYjbhFH62dIJ3WtmJ6RSPt/3DRO0ZcT2SUiYiQyz3BLVb9ADEnLl91m74aQPS3AzzeajZHYOalWe3bg==} engines: {node: '>=6.9.0'} - '@biomejs/biome@1.9.4': - resolution: {integrity: sha512-1rkd7G70+o9KkTn5KLmDYXihGoTaIGO9PIIN2ZB7UJxFrWw04CZHPYiMRjYsaDvVV7hP1dYNRLxSANLaBFGpog==} - engines: {node: '>=14.21.3'} - hasBin: true + '@clack/core@0.4.1': + resolution: {integrity: sha512-Pxhij4UXg8KSr7rPek6Zowm+5M22rbd2g1nfojHJkxp5YkFqiZ2+YLEM/XGVIzvGOcM0nqjIFxrpDwWRZYWYjA==} - '@biomejs/cli-darwin-arm64@1.9.4': - resolution: {integrity: sha512-bFBsPWrNvkdKrNCYeAp+xo2HecOGPAy9WyNyB/jKnnedgzl4W4Hb9ZMzYNbf8dMCGmUdSavlYHiR01QaYR58cw==} - engines: {node: '>=14.21.3'} - cpu: [arm64] - os: [darwin] - - '@biomejs/cli-darwin-x64@1.9.4': - resolution: {integrity: sha512-ngYBh/+bEedqkSevPVhLP4QfVPCpb+4BBe2p7Xs32dBgs7rh9nY2AIYUL6BgLw1JVXV8GlpKmb/hNiuIxfPfZg==} - engines: {node: '>=14.21.3'} - cpu: [x64] - os: [darwin] - - '@biomejs/cli-linux-arm64-musl@1.9.4': - resolution: {integrity: sha512-v665Ct9WCRjGa8+kTr0CzApU0+XXtRgwmzIf1SeKSGAv+2scAlW6JR5PMFo6FzqqZ64Po79cKODKf3/AAmECqA==} - engines: {node: '>=14.21.3'} - cpu: [arm64] - os: [linux] - - '@biomejs/cli-linux-arm64@1.9.4': - resolution: {integrity: sha512-fJIW0+LYujdjUgJJuwesP4EjIBl/N/TcOX3IvIHJQNsAqvV2CHIogsmA94BPG6jZATS4Hi+xv4SkBBQSt1N4/g==} - engines: {node: '>=14.21.3'} - cpu: [arm64] - os: [linux] - - '@biomejs/cli-linux-x64-musl@1.9.4': - resolution: {integrity: sha512-gEhi/jSBhZ2m6wjV530Yy8+fNqG8PAinM3oV7CyO+6c3CEh16Eizm21uHVsyVBEB6RIM8JHIl6AGYCv6Q6Q9Tg==} - engines: {node: '>=14.21.3'} - cpu: [x64] - os: [linux] - - '@biomejs/cli-linux-x64@1.9.4': - resolution: {integrity: sha512-lRCJv/Vi3Vlwmbd6K+oQ0KhLHMAysN8lXoCI7XeHlxaajk06u7G+UsFSO01NAs5iYuWKmVZjmiOzJ0OJmGsMwg==} - engines: {node: '>=14.21.3'} - cpu: [x64] - os: [linux] - - '@biomejs/cli-win32-arm64@1.9.4': - resolution: {integrity: sha512-tlbhLk+WXZmgwoIKwHIHEBZUwxml7bRJgk0X2sPyNR3S93cdRq6XulAZRQJ17FYGGzWne0fgrXBKpl7l4M87Hg==} - engines: {node: '>=14.21.3'} - cpu: [arm64] - os: [win32] - - '@biomejs/cli-win32-x64@1.9.4': - resolution: {integrity: sha512-8Y5wMhVIPaWe6jw2H+KlEm4wP/f7EW3810ZLmDlrEEy5KvBsb9ECEfu/kMWD484ijfQ8+nIi0giMgu9g1UAuuA==} - engines: {node: '>=14.21.3'} - cpu: [x64] - os: [win32] + '@clack/prompts@0.10.0': + resolution: {integrity: sha512-H3rCl6CwW1NdQt9rE3n373t7o5cthPv7yUoxF2ytZvyvlJv89C5RYMJu83Hed8ODgys5vpBU0GKxIRG83jd8NQ==} '@commitlint/cli@19.8.0': resolution: {integrity: sha512-t/fCrLVu+Ru01h0DtlgHZXbHV2Y8gKocTR5elDOqIRUzQd0/6hpt2VIWOj9b3NDo7y4/gfxeR2zRtXq/qO6iUg==} @@ -303,6 +253,32 @@ packages: resolution: {integrity: sha512-LRjP623jPyf3Poyfb0ohMj8I3ORyBDOwXAgxxVPbSD0unJuW2mJWeiRfaQinjtccMqC5Wy1HOMfa4btKjbNxbg==} engines: {node: '>=v18'} + '@dprint/formatter@0.3.0': + resolution: {integrity: sha512-N9fxCxbaBOrDkteSOzaCqwWjso5iAe+WJPsHC021JfHNj2ThInPNEF13ORDKta3llq5D1TlclODCvOvipH7bWQ==} + + '@dprint/markdown@0.17.8': + resolution: {integrity: sha512-ukHFOg+RpG284aPdIg7iPrCYmMs3Dqy43S1ejybnwlJoFiW02b+6Bbr5cfZKFRYNP3dKGM86BqHEnMzBOyLvvA==} + + '@dprint/toml@0.6.4': + resolution: {integrity: sha512-bZXIUjxr0LIuHWshZr/5mtUkOrnh0NKVZEF6ACojW5z7zkJu7s9sV2mMXm8XQDqN4cJzdHYUYzUyEGdfciaLJA==} + + '@emnapi/core@1.3.1': + resolution: {integrity: sha512-pVGjBIt1Y6gg3EJN8jTcfpP/+uuRksIo055oE/OBkDNcjZqVbfkWCksG1Jp4yZnj3iKWyWX8fdG/j6UDYPbFog==} + + '@emnapi/runtime@1.3.1': + resolution: {integrity: sha512-kEBmG8KyqtxJZv+ygbEim+KCGtIq1fC22Ms3S4ziXmYKm8uyoLX0MHONVKwp+9opg390VaKRNt4a7A9NwmpNhw==} + + '@emnapi/wasi-threads@1.0.1': + resolution: {integrity: sha512-iIBu7mwkq4UQGeMEM8bLwNK962nXdhodeScX4slfQnRhEMMzvYivHhutCIk8uojvmASXXPC2WNEjwxFWk72Oqw==} + + '@es-joy/jsdoccomment@0.49.0': + resolution: {integrity: sha512-xjZTSFgECpb9Ohuk5yMX5RhUEbfeQcuOp8IF60e+wyzWEF0M5xeSgqsfLtvPEX8BIyOX9saZqzuGPmZ8oWc+5Q==} + engines: {node: '>=16'} + + '@es-joy/jsdoccomment@0.50.0': + resolution: {integrity: sha512-+zZymuVLH6zVwXPtCAtC+bDymxmEwEqDftdAK+f407IF1bnX49anIxvBhCA1AqUIfD6egj1jM1vUnSuijjNyYg==} + engines: {node: '>=18'} + '@esbuild/aix-ppc64@0.25.1': resolution: {integrity: sha512-kfYGy8IdzTGy+z0vFGvExZtxkFlA4zAxgKEahG9KE1ScBjpQnFsNOX8KTU5ojNru5ed5CVoJYXFtoxaq5nFbjQ==} engines: {node: '>=18'} @@ -453,6 +429,87 @@ packages: cpu: [x64] os: [win32] + '@eslint-community/eslint-plugin-eslint-comments@4.4.1': + resolution: {integrity: sha512-lb/Z/MzbTf7CaVYM9WCFNQZ4L1yi3ev2fsFPF99h31ljhSEyUoyEsKsNWiU+qD1glbYTDJdqgyaLKtyTkkqtuQ==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + peerDependencies: + eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 || ^9.0.0 + + '@eslint-community/eslint-utils@4.5.1': + resolution: {integrity: sha512-soEIOALTfTK6EjmKMMoLugwaP0rzkad90iIWd1hMO9ARkSAyjfMfkRRhLvD5qH7vvM0Cg72pieUfR6yh6XxC4w==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + peerDependencies: + eslint: ^6.0.0 || ^7.0.0 || >=8.0.0 + + '@eslint-community/regexpp@4.12.1': + resolution: {integrity: sha512-CCZCDJuduB9OUkFkY2IgppNZMi2lBQgD2qzwXkEia16cge2pijY/aXi96CJMquDMn3nJdlPV1A5KrJEXwfLNzQ==} + engines: {node: ^12.0.0 || ^14.0.0 || >=16.0.0} + + '@eslint/compat@1.2.7': + resolution: {integrity: sha512-xvv7hJE32yhegJ8xNAnb62ggiAwTYHBpUCWhRxEj/ksvgDJuSXfoDkBcRYaYNFiJ+jH0IE3K16hd+xXzhBgNbg==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + peerDependencies: + eslint: ^9.10.0 + peerDependenciesMeta: + eslint: + optional: true + + '@eslint/config-array@0.19.2': + resolution: {integrity: sha512-GNKqxfHG2ySmJOBSHg7LxeUx4xpuCoFjacmlCoYWEbaPXLwvfIjixRI12xCQZeULksQb23uiA8F40w5TojpV7w==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + + '@eslint/config-helpers@0.2.0': + resolution: {integrity: sha512-yJLLmLexii32mGrhW29qvU3QBVTu0GUmEf/J4XsBtVhp4JkIUFN/BjWqTF63yRvGApIDpZm5fa97LtYtINmfeQ==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + + '@eslint/core@0.10.0': + resolution: {integrity: sha512-gFHJ+xBOo4G3WRlR1e/3G8A6/KZAH6zcE/hkLRCZTi/B9avAG365QhFA8uOGzTMqgTghpn7/fSnscW++dpMSAw==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + + '@eslint/core@0.12.0': + resolution: {integrity: sha512-cmrR6pytBuSMTaBweKoGMwu3EiHiEC+DoyupPmlZ0HxBJBtIxwe+j/E4XPIKNx+Q74c8lXKPwYawBf5glsTkHg==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + + '@eslint/eslintrc@3.3.1': + resolution: {integrity: sha512-gtF186CXhIl1p4pJNGZw8Yc6RlshoePRvE0X91oPGb3vZ8pM3qOS9W9NGPat9LziaBV7XrJWGylNQXkGcnM3IQ==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + + '@eslint/js@9.23.0': + resolution: {integrity: sha512-35MJ8vCPU0ZMxo7zfev2pypqTwWTofFZO6m4KAtdoFhRpLJUpHTZZ+KB3C7Hb1d7bULYwO4lJXGCi5Se+8OMbw==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + + '@eslint/markdown@6.3.0': + resolution: {integrity: sha512-8rj7wmuP5hwXZ0HWoad+WL9nftpN373bCCQz9QL6sA+clZiz7et8Pk0yDAKeo//xLlPONKQ6wCpjkOHCLkbYUw==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + + '@eslint/object-schema@2.1.6': + resolution: {integrity: sha512-RBMg5FRL0I0gs51M/guSAj5/e14VQ4tpZnQNWwuDT66P14I43ItmPfIZRhO9fUVIPOAQXU47atlywZ/czoqFPA==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + + '@eslint/plugin-kit@0.2.7': + resolution: {integrity: sha512-JubJ5B2pJ4k4yGxaNLdbjrnk9d/iDz6/q8wOilpIowd6PJPgaxCuHBnBszq7Ce2TyMrywm5r4PnKm6V3iiZF+g==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + + '@humanfs/core@0.19.1': + resolution: {integrity: sha512-5DyQ4+1JEUzejeK1JGICcideyfUbGixgS9jNgex5nqkW+cY7WZhxBigmieN5Qnw9ZosSNVC9KQKyb+GUaGyKUA==} + engines: {node: '>=18.18.0'} + + '@humanfs/node@0.16.6': + resolution: {integrity: sha512-YuI2ZHQL78Q5HbhDiBA1X4LmYdXCKCMQIfw0pw7piHJwyREFebJUvrQN4cMssyES6x+vfUbx1CIpaQUKYdQZOw==} + engines: {node: '>=18.18.0'} + + '@humanwhocodes/module-importer@1.0.1': + resolution: {integrity: sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==} + engines: {node: '>=12.22'} + + '@humanwhocodes/retry@0.3.1': + resolution: {integrity: sha512-JBxkERygn7Bv/GbN5Rv8Ul6LVknS+5Bp6RgDC/O8gEBU/yeH5Ui5C/OlWrTb6qct7LjjfT6Re2NxB0ln0yYybA==} + engines: {node: '>=18.18'} + + '@humanwhocodes/retry@0.4.2': + resolution: {integrity: sha512-xeO57FpIu4p1Ri3Jq/EXq4ClRm86dVF2z/+kvFnyqVYRavTZmaFaUBbWCOuuTh0o/g7DSsk6kc2vrS4Vl5oPOQ==} + engines: {node: '>=18.18'} + '@iarna/toml@2.2.5': resolution: {integrity: sha512-trnsAYxU3xnS1gPHPyU961coFyLkh4gAD/0zQ5mymY4yOZ+CYvsPqUbOFSw0aDM4y0tV7tiFxL/1XfXPNC6IPg==} @@ -601,6 +658,9 @@ packages: '@jridgewell/trace-mapping@0.3.25': resolution: {integrity: sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==} + '@napi-rs/wasm-runtime@0.2.7': + resolution: {integrity: sha512-5yximcFK5FNompXfJFoWanu5l8v1hNGqNHh9du1xETp9HWk/B/PzvchX55WYOPaIeNglG8++68AAiauBAtbnzw==} + '@nodelib/fs.scandir@2.1.5': resolution: {integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==} engines: {node: '>= 8'} @@ -926,6 +986,14 @@ packages: '@pixi/constants': 6.5.10 '@pixi/settings': 6.5.10 + '@pkgr/core@0.1.2': + resolution: {integrity: sha512-fdDH1LSGfZdTH2sxdpVMw31BanV28K/Gry0cVFxaNP77neJSkd82mM8ErPNYs9e+0O7SdHBLTDzDgwUuy18RnQ==} + engines: {node: ^12.20.0 || ^14.18.0 || >=16.0.0} + + '@pkgr/core@0.2.0': + resolution: {integrity: sha512-vsJDAkYR6qCPu+ioGScGiMYR7LvZYIXh/dlQeviqoTWNCVfKTLYD/LkNWH4Mxsv2a5vpIRc77FN5DnmK1eBggQ==} + engines: {node: ^12.20.0 || ^14.18.0 || >=16.0.0} + '@pnpm/config.env-replace@1.1.0': resolution: {integrity: sha512-htyl8TWnKL7K/ESFa1oW2UB5lVDxuF5DpM7tBi6Hu2LNL3mWkIzNLG6N4zoCUP1lCKNxWy/3iu8mS8MvToGd6w==} engines: {node: '>=12.22.0'} @@ -1056,6 +1124,12 @@ packages: resolution: {integrity: sha512-tlqY9xq5ukxTUZBmoOp+m61cqwQD5pHJtFY3Mn8CA8ps6yghLH/Hw8UPdqg4OLmFW3IFlcXnQNmo/dh8HzXYIQ==} engines: {node: '>=18'} + '@stylistic/eslint-plugin@4.2.0': + resolution: {integrity: sha512-8hXezgz7jexGHdo5WN6JBEIPHCSFyyU4vgbxevu4YLVS5vl+sxqAAGyXSzfNDyR6xMNSH5H1x67nsXcYMOHtZA==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + peerDependencies: + eslint: '>=9.0.0' + '@tauri-apps/api@2.4.0': resolution: {integrity: sha512-F1zXTsmwcCp+ocg6fbzD/YL0OHeSG1eynCag1UNlX2tD5+dlXy7eRbTu9cAcscPjcR7Nix7by2wiv/+VfWUieg==} @@ -1130,6 +1204,9 @@ packages: engines: {node: '>= 10'} hasBin: true + '@tauri-apps/plugin-opener@2.2.6': + resolution: {integrity: sha512-bSdkuP71ZQRepPOn8BOEdBKYJQvl6+jb160QtJX/i2H9BF6ZySY/kYljh76N2Ne5fJMQRge7rlKoStYQY5Jq1w==} + '@tauri-apps/plugin-os@2.2.1': resolution: {integrity: sha512-cNYpNri2CCc6BaNeB6G/mOtLvg8dFyFQyCUdf2y0K8PIAKGEWdEcu8DECkydU2B+oj4OJihDPD2de5K6cbVl9A==} @@ -1139,49 +1216,100 @@ packages: '@tootallnate/quickjs-emscripten@0.23.0': resolution: {integrity: sha512-C5Mc6rdnsaJDjO3UpGW/CQTHtCKaYlScZTly4JIu97Jxo/odCiH0ITnDXSJPTOrEKk/ycSZ0AOgTmkDtkOsvIA==} - '@types/babel__core@7.20.5': - resolution: {integrity: sha512-qoQprZvz5wQFJwMDqeseRXWv3rqMvhgpbXFfVyWhbx9X47POIA6i/+dXefEmZKoAgOaTdaIgNSMqMIU61yRyzA==} - - '@types/babel__generator@7.6.8': - resolution: {integrity: sha512-ASsj+tpEDsEiFr1arWrlN6V3mdfjRMZt6LtK/Vp/kreFLnr5QH5+DhvD5nINYZXzwJvXeGq+05iUXcAzVrqWtw==} - - '@types/babel__template@7.4.4': - resolution: {integrity: sha512-h/NUaSyG5EyxBIp8YRxo4RMe2/qQgvyowRwVMzhYhBCONbW8PUsg4lkFMrhgZhUe5z3L3MiLDuvyJ/CaPa2A8A==} - - '@types/babel__traverse@7.20.7': - resolution: {integrity: sha512-dkO5fhS7+/oos4ciWxyEyjWe48zmG6wbCheo/G2ZnHx4fs3EU6YC6UM8rk56gAjNJ9P3MTH2jo5jb92/K6wbng==} + '@tybys/wasm-util@0.9.0': + resolution: {integrity: sha512-6+7nlbMVX/PVDCwaIQ8nTOPveOcFLSt8GcXdx8hD0bt39uWxYT88uXzqTd4fTvqta7oeUJqudepapKNt2DYJFw==} '@types/conventional-commits-parser@5.0.1': resolution: {integrity: sha512-7uz5EHdzz2TqoMfV7ee61Egf5y6NkcO4FB/1iCCQnbeiI1F3xzv3vK5dBCXUCLQgGYS+mUeigK1iKQzvED+QnQ==} - '@types/cookie@0.6.0': - resolution: {integrity: sha512-4Kh9a6B2bQciAhf7FSuMRRkUWecJgJu9nPnx3yzpsfXX/c50REIqpHY4C82bXP90qrLtXtkDxTZosYO3UpOwlA==} + '@types/debug@4.1.12': + resolution: {integrity: sha512-vIChWdVG3LG1SMxEvI/AK+FWJthlrqlTu7fbrlywTkkaONwk/UAGaULXRlf8vkzFBLVm0zkMdCquhL5aOjhXPQ==} + + '@types/doctrine@0.0.9': + resolution: {integrity: sha512-eOIHzCUSH7SMfonMG1LsC2f8vxBFtho6NGBznK41R84YzPuvSBzrhEps33IsQiOW9+VL6NQ9DbjQJznk/S4uRA==} '@types/earcut@2.1.4': resolution: {integrity: sha512-qp3m9PPz4gULB9MhjGID7wpo3gJ4bTGXm7ltNDsmOvsPduTeHp8wSW9YckBj3mljeOh4F0m2z/0JKAALRKbmLQ==} + '@types/eslint@9.6.1': + resolution: {integrity: sha512-FXx2pKgId/WyYo2jXw63kk7/+TY7u7AziEJxJAnSFzHlqTAS3Ync6SvgYAN/k4/PQpnnVuzoMuVnByKK2qp0ag==} + '@types/estree@1.0.6': resolution: {integrity: sha512-AYnb1nQyY49te+VRAVgmzfcgjYS91mY5P0TKUDCLEM+gNnA+3T6rWITXRLYCpahpqSQbN5cE+gHpnPyXjHWxcw==} + '@types/estree@1.0.7': + resolution: {integrity: sha512-w28IoSUCJpidD/TGviZwwMJckNESJZXFu7NBZ5YJ4mEUnNraUn9Pm8HSZm/jDF1pDWYKspWE7oVphigUPRakIQ==} + + '@types/json-schema@7.0.15': + resolution: {integrity: sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==} + + '@types/mdast@4.0.4': + resolution: {integrity: sha512-kGaNbPh1k7AFzgpud/gMdvIm5xuECykRR+JnWKQno9TAXVa6WIVCGTPvYGekIDL4uwCZQSYbUxNBSb1aUo79oA==} + + '@types/ms@2.1.0': + resolution: {integrity: sha512-GsCCIZDE/p3i96vtEqx+7dBUGXrc7zeSK3wwPHIaRThS+9OhWIXRqzs4d6k1SVU8g91DrNRWxWUGhp5KXQb2VA==} + '@types/node@22.13.14': resolution: {integrity: sha512-Zs/Ollc1SJ8nKUAgc7ivOEdIBM8JAKgrqqUYi2J997JuKO7/tpQC+WCetQ1sypiKCQWHdvdg9wBNpUPEWZae7w==} + '@types/normalize-package-data@2.4.4': + resolution: {integrity: sha512-37i+OaWTh9qeK4LSHPsyRC7NahnGotNuZvjLSgcPzblpHB3rrCJxAOgI5gCdKm7coonsaX1Of0ILiTcnZjbfxA==} + '@types/offscreencanvas@2019.7.3': resolution: {integrity: sha512-ieXiYmgSRXUDeOntE1InxjWyvEelZGP63M+cGuquuRLuIKKT1osnkXjxev9B7d1nXSug5vpunx+gNlbVxMlC9A==} '@types/parse-path@7.0.3': resolution: {integrity: sha512-LriObC2+KYZD3FzCrgWGv/qufdUy4eXrxcLgQMfYXgPbLIecKIsVBaQgUPmxSSLcjmYbDTQbMgr6qr6l/eb7Bg==} - '@types/prop-types@15.7.14': - resolution: {integrity: sha512-gNMvNH49DJ7OJYv+KAKn0Xp45p8PLl6zo2YnvDIbTd4J6MER2BmWN49TG7n9LvkyihINxeKW8+3bfS2yDC9dzQ==} + '@types/unist@3.0.3': + resolution: {integrity: sha512-ko/gIFJRv177XgZsZcBwnqJN5x/Gien8qNOn0D5bQU/zAzVf9Zt3BlcUiLqhV9y4ARk0GbT3tnUiPNgnTXzc/Q==} - '@types/react-dom@18.3.5': - resolution: {integrity: sha512-P4t6saawp+b/dFrUr2cvkVsfvPguwsxtH6dNIYRllMsefqFzkZk5UIjzyDOv5g1dXIPdG4Sp1yCR4Z6RCUsG/Q==} + '@typescript-eslint/eslint-plugin@8.28.0': + resolution: {integrity: sha512-lvFK3TCGAHsItNdWZ/1FkvpzCxTHUVuFrdnOGLMa0GGCFIbCgQWVk3CzCGdA7kM3qGVc+dfW9tr0Z/sHnGDFyg==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: - '@types/react': ^18.0.0 + '@typescript-eslint/parser': ^8.0.0 || ^8.0.0-alpha.0 + eslint: ^8.57.0 || ^9.0.0 + typescript: '>=4.8.4 <5.9.0' - '@types/react@18.3.20': - resolution: {integrity: sha512-IPaCZN7PShZK/3t6Q87pfTkRm6oLTd4vztyoj+cbHUF1g3FfVb2tFIL79uCRKEfv16AhqDMBywP2VW3KIZUvcg==} + '@typescript-eslint/parser@8.28.0': + resolution: {integrity: sha512-LPcw1yHD3ToaDEoljFEfQ9j2xShY367h7FZ1sq5NJT9I3yj4LHer1Xd1yRSOdYy9BpsrxU7R+eoDokChYM53lQ==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + peerDependencies: + eslint: ^8.57.0 || ^9.0.0 + typescript: '>=4.8.4 <5.9.0' + + '@typescript-eslint/scope-manager@8.28.0': + resolution: {integrity: sha512-u2oITX3BJwzWCapoZ/pXw6BCOl8rJP4Ij/3wPoGvY8XwvXflOzd1kLrDUUUAIEdJSFh+ASwdTHqtan9xSg8buw==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + + '@typescript-eslint/type-utils@8.28.0': + resolution: {integrity: sha512-oRoXu2v0Rsy/VoOGhtWrOKDiIehvI+YNrDk5Oqj40Mwm0Yt01FC/Q7nFqg088d3yAsR1ZcZFVfPCTTFCe/KPwg==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + peerDependencies: + eslint: ^8.57.0 || ^9.0.0 + typescript: '>=4.8.4 <5.9.0' + + '@typescript-eslint/types@8.28.0': + resolution: {integrity: sha512-bn4WS1bkKEjx7HqiwG2JNB3YJdC1q6Ue7GyGlwPHyt0TnVq6TtD/hiOdTZt71sq0s7UzqBFXD8t8o2e63tXgwA==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + + '@typescript-eslint/typescript-estree@8.28.0': + resolution: {integrity: sha512-H74nHEeBGeklctAVUvmDkxB1mk+PAZ9FiOMPFncdqeRBXxk1lWSYraHw8V12b7aa6Sg9HOBNbGdSHobBPuQSuA==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + peerDependencies: + typescript: '>=4.8.4 <5.9.0' + + '@typescript-eslint/utils@8.28.0': + resolution: {integrity: sha512-OELa9hbTYciYITqgurT1u/SzpQVtDLmQMFzy/N8pQE+tefOyCWT79jHsav294aTqV1q1u+VzqDGbuujvRYaeSQ==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + peerDependencies: + eslint: ^8.57.0 || ^9.0.0 + typescript: '>=4.8.4 <5.9.0' + + '@typescript-eslint/visitor-keys@8.28.0': + resolution: {integrity: sha512-hbn8SZ8w4u2pRwgQ1GlUrPKE+t2XvcCW5tTRF7j6SMYIuYG37XuzIW44JCZPa36evi0Oy2SnM664BlIaAuQcvg==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} '@unocss/astro@66.1.0-beta.7': resolution: {integrity: sha512-cqimcWi/JNwNIMFHi3MCWUlF64y867AQmXd1/L3ZpGwb45EdYY2T7RsTsFwh4POdDQT1GRKwpAeYObOs8DhExQ==} @@ -1196,13 +1324,24 @@ packages: engines: {node: '>=14'} hasBin: true + '@unocss/config@66.0.0': + resolution: {integrity: sha512-nFRGop/guBa4jLkrgXjaRDm5JPz4x3YpP10m5IQkHpHwlnHUVn1L9smyPl04ohYWhYn9ZcAHgR28Ih2jwta8hw==} + engines: {node: '>=14'} + '@unocss/config@66.1.0-beta.7': resolution: {integrity: sha512-4FILwDExyRgBmZpky9OyJpgjHetCLUzythNhuU6wxBD+6xyfa8aZSrtC27bcMRbjLweXMKFVYk49bSkajmUWMw==} engines: {node: '>=14'} + '@unocss/core@66.0.0': + resolution: {integrity: sha512-PdVbSMHNDDkr++9nkqzsZRAkaU84gxMTEgYbqI7dt2p1DXp/5tomVtmMsr2/whXGYKRiUc0xZ3p4Pzraz8TcXA==} + '@unocss/core@66.1.0-beta.7': resolution: {integrity: sha512-l1/r+Jd9TbsRqR/geEdIV/Erzvs26GitTtMVsGcJfuaK1/WWOLtbSHRUDQAB/UpcOOWvuNuAv4UWsXX9Z0DFmw==} + '@unocss/eslint-plugin@66.0.0': + resolution: {integrity: sha512-KTP6uK0loH9+PkUjL2F4eyuMcUZRiVYkg4zJfqVWNctE1yGkuTUzCvm6ORRvLakajAU8G/Zzvuo1pE94zyZQbw==} + engines: {node: '>=14'} + '@unocss/extractor-arbitrary-variants@66.1.0-beta.7': resolution: {integrity: sha512-LD8W9PlpHnFmuynI+TJzdE5z9OKY/tVaagY/Ak1mICFEWveH3jFuN13KH2jaI3/V2KaTwkcY/8tGQJXv8dKWAw==} @@ -1251,6 +1390,10 @@ packages: '@unocss/reset@66.1.0-beta.7': resolution: {integrity: sha512-6GAvIfcuEGkx3rryIHWaF6Uwh0QZJYJTmDog/88X2He8v1yGR2RfrUSrrYUf8KfmLQYSZ/u7WazLwJTVmpvjaQ==} + '@unocss/rule-utils@66.0.0': + resolution: {integrity: sha512-UJ51YHbwxYTGyj35ugsPlOT4gaa7tCbXdywZ3m5Nn0JgywwIqGmBFyiN9ZjHBHfJuDxmmPd6lxojoBscih/WMQ==} + engines: {node: '>=14'} + '@unocss/rule-utils@66.1.0-beta.7': resolution: {integrity: sha512-oJ5lcHRgN1aabsszkBXoiYp0G6LLM011BJoAEfKOeRZ14FGFlg0zuOi/h7aKlVuIvBt6q8BWosJLlZSAQnNypg==} engines: {node: '>=14'} @@ -1272,11 +1415,100 @@ packages: peerDependencies: vite: ^2.9.0 || ^3.0.0-0 || ^4.0.0 || ^5.0.0-0 || ^6.0.0-0 - '@vitejs/plugin-react@4.3.4': - resolution: {integrity: sha512-SCCPBJtYLdE8PX/7ZQAs1QAZ8Jqwih+0VBLum1EGqmCCQal+MIUqLCzj3ZUy8ufbC0cAM4LRlSTm7IQJwWT4ug==} - engines: {node: ^14.18.0 || >=16.0.0} + '@unrs/resolver-binding-darwin-arm64@1.3.2': + resolution: {integrity: sha512-ddnlXgRi0Fog5+7U5Q1qY62wl95Q1lB4tXQX1UIA9YHmRCHN2twaQW0/4tDVGCvTVEU3xEayU7VemEr7GcBYUw==} + cpu: [arm64] + os: [darwin] + + '@unrs/resolver-binding-darwin-x64@1.3.2': + resolution: {integrity: sha512-tnl9xoEeg503jis+LW5cuq4hyLGQyqaoBL8VdPSqcewo/FL1C8POHbzl+AL25TidWYJD+R6bGUTE381kA1sT9w==} + cpu: [x64] + os: [darwin] + + '@unrs/resolver-binding-freebsd-x64@1.3.2': + resolution: {integrity: sha512-zyPn9LFCCjhKPeCtECZaiMUgkYN/VpLb4a9Xv7QriJmTaQxsuDtXqOHifrzUXIhorJTyS+5MOKDuNL0X9I4EHA==} + cpu: [x64] + os: [freebsd] + + '@unrs/resolver-binding-linux-arm-gnueabihf@1.3.2': + resolution: {integrity: sha512-UWx56Wh59Ro69fe+Wfvld4E1n9KG0e3zeouWLn8eSasyi/yVH/7ZW3CLTVFQ81oMKSpXwr5u6RpzttDXZKiO4g==} + cpu: [arm] + os: [linux] + + '@unrs/resolver-binding-linux-arm-musleabihf@1.3.2': + resolution: {integrity: sha512-VYGQXsOEJtfaoY2fOm8Z9ii5idFaHFYlrq3yMFZPaFKo8ufOXYm8hnfru7qetbM9MX116iWaPC0ZX5sK+1Dr+g==} + cpu: [arm] + os: [linux] + + '@unrs/resolver-binding-linux-arm64-gnu@1.3.2': + resolution: {integrity: sha512-3zP420zxJfYPD1rGp2/OTIBxF8E3+/6VqCG+DEO6kkDgBiloa7Y8pw1o7N9BfgAC+VC8FPZsFXhV2lpx+lLRMQ==} + cpu: [arm64] + os: [linux] + + '@unrs/resolver-binding-linux-arm64-musl@1.3.2': + resolution: {integrity: sha512-ZWjSleUgr88H4Kei7yT4PlPqySTuWN1OYDDcdbmMCtLWFly3ed+rkrcCb3gvqXdDbYrGOtzv3g2qPEN+WWNv5Q==} + cpu: [arm64] + os: [linux] + + '@unrs/resolver-binding-linux-ppc64-gnu@1.3.2': + resolution: {integrity: sha512-p+5OvYJ2UOlpjes3WfBlxyvQok2u26hLyPxLFHkYlfzhZW0juhvBf/tvewz1LDFe30M7zL9cF4OOO5dcvtk+cw==} + cpu: [ppc64] + os: [linux] + + '@unrs/resolver-binding-linux-s390x-gnu@1.3.2': + resolution: {integrity: sha512-yweY7I6SqNn3kvj6vE4PQRo7j8Oz6+NiUhmgciBNAUOuI3Jq0bnW29hbHJdxZRSN1kYkQnSkbbA1tT8VnK816w==} + cpu: [s390x] + os: [linux] + + '@unrs/resolver-binding-linux-x64-gnu@1.3.2': + resolution: {integrity: sha512-fNIvtzJcGN9hzWTIayrTSk2+KHQrqKbbY+I88xMVMOFV9t4AXha4veJdKaIuuks+2JNr6GuuNdsL7+exywZ32w==} + cpu: [x64] + os: [linux] + + '@unrs/resolver-binding-linux-x64-musl@1.3.2': + resolution: {integrity: sha512-OaFEw8WAjiwBGxutQgkWhoAGB5BQqZJ8Gjt/mW+m6DWNjimcxU22uWCuEtfw1CIwLlKPOzsgH0429fWmZcTGkg==} + cpu: [x64] + os: [linux] + + '@unrs/resolver-binding-wasm32-wasi@1.3.2': + resolution: {integrity: sha512-u+sumtO7M0AGQ9bNQrF4BHNpUyxo23FM/yXZfmVAicTQ+mXtG06O7pm5zQUw3Mr4jRs2I84uh4O0hd8bdouuvQ==} + engines: {node: '>=14.0.0'} + cpu: [wasm32] + + '@unrs/resolver-binding-win32-arm64-msvc@1.3.2': + resolution: {integrity: sha512-ZAJKy95vmDIHsRFuPNqPQRON8r2mSMf3p9DoX+OMOhvu2c8OXGg8MvhGRf3PNg45ozRrPdXDnngURKgaFfpGoQ==} + cpu: [arm64] + os: [win32] + + '@unrs/resolver-binding-win32-ia32-msvc@1.3.2': + resolution: {integrity: sha512-nQG4YFAS2BLoKVQFK/FrWJvFATI5DQUWQrcPcsWG9Ve5BLLHZuPOrJ2SpAJwLXQrRv6XHSFAYGI8wQpBg/CiFA==} + cpu: [ia32] + os: [win32] + + '@unrs/resolver-binding-win32-x64-msvc@1.3.2': + resolution: {integrity: sha512-XBWpUP0mHya6yGBwNefhyEa6V7HgYKCxEAY4qhTm/PcAQyBPNmjj97VZJOJkVdUsyuuii7xmq0pXWX/c2aToHQ==} + cpu: [x64] + os: [win32] + + '@vitejs/plugin-vue@5.2.3': + resolution: {integrity: sha512-IYSLEQj4LgZZuoVpdSUCw3dIynTWQgPlaRP6iAvMle4My0HdYwr5g5wQAfwOeHQBmYwEkqF70nRpSilr6PoUDg==} + engines: {node: ^18.0.0 || >=20.0.0} peerDependencies: - vite: ^4.2.0 || ^5.0.0 || ^6.0.0 + vite: ^5.0.0 || ^6.0.0 + vue: ^3.2.25 + + '@vitest/eslint-plugin@1.1.38': + resolution: {integrity: sha512-KcOTZyVz8RiM5HyriiDVrP1CyBGuhRxle+lBsmSs6NTJEO/8dKVAq+f5vQzHj1/Kc7bYXSDO6yBe62Zx0t5iaw==} + peerDependencies: + '@typescript-eslint/utils': ^8.24.0 + eslint: '>= 8.57.0' + typescript: '>= 5.0.0' + vitest: '*' + peerDependenciesMeta: + typescript: + optional: true + vitest: + optional: true '@vue/compiler-core@3.5.13': resolution: {integrity: sha512-oOdAkwqUfW1WqpwSYJce06wvt6HljgY3fGeM9NcVA1HaYOij3mZG9Rkysn0OHuyUAGMbEbARIpsG+LPVlBJ5/Q==} @@ -1290,6 +1522,9 @@ packages: '@vue/compiler-ssr@3.5.13': resolution: {integrity: sha512-wMH6vrYHxQl/IybKJagqbquvxpWCuVYpoUJfCqFZwa/JY1GdATAQ+TgVtgrwwMZ0D07QhA99rs/EAAWfvG6KpA==} + '@vue/devtools-api@6.6.4': + resolution: {integrity: sha512-sGhTPMuXqZ1rVOk32RylztWkfXTRhuS7vgAKv0zjqk8gbsHkJ7xfFf+jbySxt7tWObEJwyKaHMikV/WGDiQm8g==} + '@vue/reactivity@3.5.13': resolution: {integrity: sha512-NaCwtw8o48B9I6L1zl2p41OHo/2Z4wqYGGIK1Khu5T7yxrn+ATOixn/Udn2m+6kZKB/J7cuT9DbWWhRxqixACg==} @@ -1311,6 +1546,11 @@ packages: resolution: {integrity: sha512-E+iruNOY8VV9s4JEbe1aNEm6MiszPRr/UfcHMz0TQh1BXSxHK+ASV1R6W4HpjBhSeS+54PIsAMCBmwD06LLsqQ==} hasBin: true + acorn-jsx@5.3.2: + resolution: {integrity: sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==} + peerDependencies: + acorn: ^6.0.0 || ^7.0.0 || ^8.0.0 + acorn@8.14.1: resolution: {integrity: sha512-OvQ/2pUDKmgfCg++xsTX1wGxfTaszcHVcTctW4UJB4hibJx2HXxxO5UmVgyjMa+ZDsiaf5wWLXYpRWMmBI0QHg==} engines: {node: '>=0.4.0'} @@ -1320,6 +1560,9 @@ packages: resolution: {integrity: sha512-jRR5wdylq8CkOe6hei19GGZnxM6rBGwFl3Bg0YItGDimvjGtAvdZk4Pu6Cl4u4Igsws4a1fd1Vq3ezrhn4KmFw==} engines: {node: '>= 14'} + ajv@6.12.6: + resolution: {integrity: sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==} + ajv@8.17.1: resolution: {integrity: sha512-B/gBuNg5SiMTrPkC+A2+cW0RszwxYmn6VYxB/inlBStS5nx6xHIt/ehKRhIMhqusl7a8LjQoZnjCs5vhwxOQ1g==} @@ -1354,10 +1597,18 @@ packages: resolution: {integrity: sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==} engines: {node: '>=12'} + ansis@3.17.0: + resolution: {integrity: sha512-0qWUglt9JEqLFr3w1I1pbrChn1grhaiAR2ocX1PP/flRmxgtwTzPFFFnfIlD6aMOLQZgSuCRlidD70lvx8yhzg==} + engines: {node: '>=14'} + anymatch@3.1.3: resolution: {integrity: sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==} engines: {node: '>= 8'} + are-docs-informative@0.0.2: + resolution: {integrity: sha512-ixiS0nLNNG5jNQzgZJNoUpBKdo9yTYZMGJ+QgT2jmjR7G7+QHRCc4v6LQ3NgE7EBJq+o0ams3waJwkrlBom8Ig==} + engines: {node: '>=14'} + argparse@2.0.1: resolution: {integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==} @@ -1415,6 +1666,9 @@ packages: resolution: {integrity: sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==} engines: {node: '>=8'} + boolbase@1.0.0: + resolution: {integrity: sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==} + boxen@8.0.1: resolution: {integrity: sha512-F3PH5k5juxom4xktynS7MoFY+NUWH5LC4CnH11YB8NPew+HLpmBLCybSAEyb2F+4pRXhuhWqFesoQd6DAyc2hw==} engines: {node: '>=18'} @@ -1422,6 +1676,9 @@ packages: brace-expansion@1.1.11: resolution: {integrity: sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==} + brace-expansion@2.0.1: + resolution: {integrity: sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==} + braces@3.0.3: resolution: {integrity: sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==} engines: {node: '>=8'} @@ -1431,6 +1688,10 @@ packages: engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} hasBin: true + builtin-modules@4.0.0: + resolution: {integrity: sha512-p1n8zyCkt1BVrKNFymOHjcDSAl7oq/gUvfgULv2EblgpPVQlQr9yHnWjg9IJ2MhfwPqiYqMMrr01OY7yQoK2yA==} + engines: {node: '>=18.20'} + bundle-name@4.1.0: resolution: {integrity: sha512-tjwM5exMg6BGRI+kNmTntNsvdZS1X8BFYS6tnJ2hdH0kVxM6/eVZ2xy+FqStSWvYmtfFMDLIxurorHwDKfDz5Q==} engines: {node: '>=18'} @@ -1462,14 +1723,24 @@ packages: caniuse-lite@1.0.30001707: resolution: {integrity: sha512-3qtRjw/HQSMlDWf+X79N206fepf4SOOU6SQLMaq/0KkZLmSjPxAkBOQQ+FxbHKfHmYLZFfdWsO3KA90ceHPSnw==} + ccount@2.0.1: + resolution: {integrity: sha512-eyrF0jiFpY+3drT6383f1qhkbGsLSifNAjA61IUjZjmLCWjItY6LB9ft9YhoDgwfmclB2zhu51Lc7+95b8NRAg==} + chalk@2.4.2: resolution: {integrity: sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==} engines: {node: '>=4'} + chalk@4.1.2: + resolution: {integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==} + engines: {node: '>=10'} + chalk@5.4.1: resolution: {integrity: sha512-zgVZuo2WcZgfUEmsn6eO3kINexW8RAE4maiQ8QNs8CtpPCSyMiYsULR3HQYkm3w8FIA3SberyMJMSldGsW+U3w==} engines: {node: ^12.17.0 || ^14.13 || >=16.0.0} + character-entities@2.0.2: + resolution: {integrity: sha512-shx7oQ0Awen/BRIdkjkvz54PnEEI/EjwXDSIZp86/KKdbafHh1Df/RYGBhn4hbe2+uKC9FnT5UCEdyPz3ai9hQ==} + chardet@0.7.0: resolution: {integrity: sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==} @@ -1481,6 +1752,10 @@ packages: resolution: {integrity: sha512-cYY9mypksY8NRqgDB1XD1RiJL338v/551niynFTGkZOO2LHuB2OmOYxDIe/ttN9AHwrqdum1360G3ald0W9kCg==} engines: {node: '>=8'} + clean-regexp@1.0.0: + resolution: {integrity: sha512-GfisEZEJvzKrmGWkvfhgzcz/BllN1USeqD2V6tg14OAOgaCD2Z/PUEuxnAZ/nPvmaHRG7a8y77p1T/IRQ4D1Hw==} + engines: {node: '>=4'} + cli-boxes@3.0.0: resolution: {integrity: sha512-/lzGpEWL/8PfI0BmBOPRwp0c/wFNX1RdUML3jK/RcSBA9T8mZDdQpqYBKtCFTOfQbwPqWEOpjqW+Fnayc0969g==} engines: {node: '>=10'} @@ -1528,6 +1803,10 @@ packages: commander@2.20.3: resolution: {integrity: sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==} + comment-parser@1.4.1: + resolution: {integrity: sha512-buhp5kePrmda3vhc5B9t7pUQXAb2Tnd0qgpkIhPhkHXxJpiPJ11H0ZEU0oBpJ2QztSbzG/ZxMj/CHsYJqRHmyg==} + engines: {node: '>= 12.0.0'} + commondir@1.0.1: resolution: {integrity: sha512-W9pAhw0ja1Edb5GVdIF1mjZw/ASI0AlShXM83UUGe2DVr5TdAPEA1OA8m/g8zWp9x6On7gqufY+FatDbC3MDQg==} @@ -1567,12 +1846,8 @@ packages: engines: {node: '>=16'} hasBin: true - convert-source-map@2.0.0: - resolution: {integrity: sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==} - - cookie@1.0.2: - resolution: {integrity: sha512-9Kr/j4O16ISv8zBBhJoi4bXOYNTkFLOqSL3UDB0njXxCXNezjeyVrJyGOWtgfs/q2km1gwBcfH8q1yEGoMYunA==} - engines: {node: '>=18'} + core-js-compat@3.41.0: + resolution: {integrity: sha512-RFsU9LySVue9RTwdDVX/T0e2Y6jRYWXERKElIjpuEOEnxaXffI0X7RUwVzfYLfzuLXSNJDYoRYUAmRUcyln20A==} cosmiconfig-typescript-loader@6.1.0: resolution: {integrity: sha512-tJ1w35ZRUiM5FeTzT7DtYWAFFv37ZLqSRkGi2oeCK1gPhvaWjkAtfXvLmvE1pRfxxp9aQo6ba/Pvg1dKj05D4g==} @@ -1603,6 +1878,11 @@ packages: resolution: {integrity: sha512-0eW44TGN5SQXU1mWSkKwFstI/22X2bG1nYzZTYMAWjylYURhse752YgbE4Cx46AC+bAvI+/dYTPRk1LqSUnu6w==} engines: {node: ^10 || ^12.20.0 || ^14.13.0 || >=15.0.0} + cssesc@3.0.0: + resolution: {integrity: sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==} + engines: {node: '>=4'} + hasBin: true + csstype@3.1.3: resolution: {integrity: sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==} @@ -1626,6 +1906,14 @@ packages: resolution: {integrity: sha512-BS8PfmtDGnrgYdOonGZQdLZslWIeCGFP9tpan0hi1Co2Zr2NKADsvGYA8XxuG/4UWgJ6Cjtv+YJnB6MM69QGlQ==} engines: {node: '>= 0.4'} + debug@3.2.7: + resolution: {integrity: sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==} + peerDependencies: + supports-color: '*' + peerDependenciesMeta: + supports-color: + optional: true + debug@4.4.0: resolution: {integrity: sha512-6WTZ/IxCY/T6BALoZHaE4ctp9xm+Z5kY/pzYaCHRFeyVhojxlrm+46y68HA6hr0TcwEssoxNiDEUJQjfPZ/RYA==} engines: {node: '>=6.0'} @@ -1635,10 +1923,16 @@ packages: supports-color: optional: true + decode-named-character-reference@1.1.0: + resolution: {integrity: sha512-Wy+JTSbFThEOXQIR2L6mxJvEs+veIzpmqD7ynWxMXGpnk3smkHQOp6forLdHsKpAMW9iJpaBBIxz285t1n1C3w==} + deep-extend@0.6.0: resolution: {integrity: sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==} engines: {node: '>=4.0.0'} + deep-is@0.1.4: + resolution: {integrity: sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==} + default-browser-id@5.0.0: resolution: {integrity: sha512-A6p/pu/6fyBcA1TRz/GqWYPViplrftcW2gZC9q79ngNCKAeR/X3gcEdXQHl4KNXV+3wgIJ1CPkJQ3IHM6lcsyA==} engines: {node: '>=18'} @@ -1666,9 +1960,20 @@ packages: resolution: {integrity: sha512-TllpMR/t0M5sqCXfj85i4XaAzxmS5tVA16dqvdkMwGmzI+dXLXnw3J+3Vdv7VKw+ThlTMboK6i9rnZ6Nntj5CQ==} engines: {node: '>= 14'} + dequal@2.0.3: + resolution: {integrity: sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==} + engines: {node: '>=6'} + destr@2.0.3: resolution: {integrity: sha512-2N3BOUU4gYMpTP24s5rF5iP7BDr7uNTCs4ozw3kf/eKfvWSIu93GEBi5m427YoyJoeOzQ5smuu4nNAPGb8idSQ==} + devlop@1.1.0: + resolution: {integrity: sha512-RWmIqhcFf1lRYBvNmr7qTNuyCt/7/ns2jbpp1+PalgE/rDQcBT0fioSMUpJ93irlUhC5hrg4cYqe6U+0ImW0rA==} + + doctrine@3.0.0: + resolution: {integrity: sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==} + engines: {node: '>=6.0.0'} + dot-prop@5.3.0: resolution: {integrity: sha512-QM8q3zDe58hqUqjraQOmzZ1LIH9SWQJTlEKCH4kJ2oQvLZk7RbQXvtDM2XEq3fwkV9CCvvH4LA0AV+ogFsBM2Q==} engines: {node: '>=8'} @@ -1699,6 +2004,10 @@ packages: emoji-regex@8.0.0: resolution: {integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==} + enhanced-resolve@5.18.1: + resolution: {integrity: sha512-ZSW3ma5GkcQBIpwZTSRAI8N71Uuwgs93IezB7mf7R60tC8ZbJideoDNKjHn2O9KIlx6rkGTTEk1xUCK2E1Y2Yg==} + engines: {node: '>=10.13.0'} + entities@4.5.0: resolution: {integrity: sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==} engines: {node: '>=0.12'} @@ -1726,6 +2035,9 @@ packages: resolution: {integrity: sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==} engines: {node: '>= 0.4'} + es-module-lexer@1.6.0: + resolution: {integrity: sha512-qqnD1yMU6tk/jnaMosogGySTZP8YtUgAffA9nMN+E/rjxcfRQ6IEk7IiozUjgxKoFHBGjTLnrHB/YC45r/59EQ==} + es-object-atoms@1.1.1: resolution: {integrity: sha512-FGgH2h8zKNim9ljj7dankFPcICIK9Cp5bm+c2gQSYePhpaG5+esrLODihIorn+Pe6FGJzWhXQotPv73jTaldXA==} engines: {node: '>= 0.4'} @@ -1755,16 +2067,215 @@ packages: resolution: {integrity: sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==} engines: {node: '>=0.8.0'} + escape-string-regexp@4.0.0: + resolution: {integrity: sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==} + engines: {node: '>=10'} + + escape-string-regexp@5.0.0: + resolution: {integrity: sha512-/veY75JbMK4j1yjvuUxuVsiS/hr/4iHs9FTT6cgTexxdE0Ly/glccBAkloH/DofkjRbZU3bnoj38mOmhkZ0lHw==} + engines: {node: '>=12'} + escodegen@2.1.0: resolution: {integrity: sha512-2NlIDTwUWJN0mRPQOdtQBzbUHvdGY2P1VXSyU83Q3xKxM7WHX2Ql8dKq782Q9TgQUNOLEzEYu9bzLNj1q88I5w==} engines: {node: '>=6.0'} hasBin: true + eslint-compat-utils@0.5.1: + resolution: {integrity: sha512-3z3vFexKIEnjHE3zCMRo6fn/e44U7T1khUjg+Hp0ZQMCigh28rALD0nPFBcGZuiLC5rLZa2ubQHDRln09JfU2Q==} + engines: {node: '>=12'} + peerDependencies: + eslint: '>=6.0.0' + + eslint-compat-utils@0.6.4: + resolution: {integrity: sha512-/u+GQt8NMfXO8w17QendT4gvO5acfxQsAKirAt0LVxDnr2N8YLCVbregaNc/Yhp7NM128DwCaRvr8PLDfeNkQw==} + engines: {node: '>=12'} + peerDependencies: + eslint: '>=6.0.0' + + eslint-config-flat-gitignore@2.1.0: + resolution: {integrity: sha512-cJzNJ7L+psWp5mXM7jBX+fjHtBvvh06RBlcweMhKD8jWqQw0G78hOW5tpVALGHGFPsBV+ot2H+pdDGJy6CV8pA==} + peerDependencies: + eslint: ^9.5.0 + + eslint-flat-config-utils@2.0.1: + resolution: {integrity: sha512-brf0eAgQ6JlKj3bKfOTuuI7VcCZvi8ZCD1MMTVoEvS/d38j8cByZViLFALH/36+eqB17ukmfmKq3bWzGvizejA==} + + eslint-formatting-reporter@0.0.0: + resolution: {integrity: sha512-k9RdyTqxqN/wNYVaTk/ds5B5rA8lgoAmvceYN7bcZMBwU7TuXx5ntewJv81eF3pIL/CiJE+pJZm36llG8yhyyw==} + peerDependencies: + eslint: '>=8.40.0' + + eslint-import-resolver-node@0.3.9: + resolution: {integrity: sha512-WFj2isz22JahUv+B788TlO3N6zL3nNJGU8CcZbPZvVEkBPaJdCV4vy5wyghty5ROFbCRnm132v8BScu5/1BQ8g==} + + eslint-json-compat-utils@0.2.1: + resolution: {integrity: sha512-YzEodbDyW8DX8bImKhAcCeu/L31Dd/70Bidx2Qex9OFUtgzXLqtfWL4Hr5fM/aCCB8QUZLuJur0S9k6UfgFkfg==} + engines: {node: '>=12'} + peerDependencies: + '@eslint/json': '*' + eslint: '*' + jsonc-eslint-parser: ^2.4.0 + peerDependenciesMeta: + '@eslint/json': + optional: true + + eslint-merge-processors@2.0.0: + resolution: {integrity: sha512-sUuhSf3IrJdGooquEUB5TNpGNpBoQccbnaLHsb1XkBLUPPqCNivCpY05ZcpCOiV9uHwO2yxXEWVczVclzMxYlA==} + peerDependencies: + eslint: '*' + + eslint-parser-plain@0.1.1: + resolution: {integrity: sha512-KRgd6wuxH4U8kczqPp+Oyk4irThIhHWxgFgLDtpgjUGVIS3wGrJntvZW/p6hHq1T4FOwnOtCNkvAI4Kr+mQ/Hw==} + + eslint-plugin-antfu@3.1.1: + resolution: {integrity: sha512-7Q+NhwLfHJFvopI2HBZbSxWXngTwBLKxW1AGXLr2lEGxcEIK/AsDs8pn8fvIizl5aZjBbVbVK5ujmMpBe4Tvdg==} + peerDependencies: + eslint: '*' + + eslint-plugin-command@3.2.0: + resolution: {integrity: sha512-PSDOB9k7Wd57pp4HD/l3C1D93pKX8/wQo0kWDI4q6/UpgrfMTyNsavklipgiZqbXl1+VBABY1buCcQE5LDpg5g==} + peerDependencies: + eslint: '*' + + eslint-plugin-es-x@7.8.0: + resolution: {integrity: sha512-7Ds8+wAAoV3T+LAKeu39Y5BzXCrGKrcISfgKEqTS4BDN8SFEDQd0S43jiQ8vIa3wUKD07qitZdfzlenSi8/0qQ==} + engines: {node: ^14.18.0 || >=16.0.0} + peerDependencies: + eslint: '>=8' + + eslint-plugin-format@1.0.1: + resolution: {integrity: sha512-Tdns+CDjS+m7QrM85wwRi2yLae88XiWVdIOXjp9mDII0pmTBQlczPCmjpKnjiUIY3yPZNLqb5Ms/A/JXcBF2Dw==} + peerDependencies: + eslint: ^8.40.0 || ^9.0.0 + + eslint-plugin-import-x@4.9.3: + resolution: {integrity: sha512-NrPUarxpFzGpQVXdVWkGttDD8WIxBuM/dRNw5kKFxrlGdjAJ3l8ma0LK5hsK5Qp79GBGM+HY1zYVbHqateTklA==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + peerDependencies: + eslint: ^8.57.0 || ^9.0.0 + + eslint-plugin-jsdoc@50.6.9: + resolution: {integrity: sha512-7/nHu3FWD4QRG8tCVqcv+BfFtctUtEDWc29oeDXB4bwmDM2/r1ndl14AG/2DUntdqH7qmpvdemJKwb3R97/QEw==} + engines: {node: '>=18'} + peerDependencies: + eslint: ^7.0.0 || ^8.0.0 || ^9.0.0 + + eslint-plugin-jsonc@2.20.0: + resolution: {integrity: sha512-FRgCn9Hzk5eKboCbVMrr9QrhM0eO4G+WKH8IFXoaeqhM/2kuWzbStJn4kkr0VWL8J5H8RYZF+Aoam1vlBaZVkw==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + peerDependencies: + eslint: '>=6.0.0' + + eslint-plugin-n@17.17.0: + resolution: {integrity: sha512-2VvPK7Mo73z1rDFb6pTvkH6kFibAmnTubFq5l83vePxu0WiY1s0LOtj2WHb6Sa40R3w4mnh8GFYbHBQyMlotKw==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + peerDependencies: + eslint: '>=8.23.0' + + eslint-plugin-no-only-tests@3.3.0: + resolution: {integrity: sha512-brcKcxGnISN2CcVhXJ/kEQlNa0MEfGRtwKtWA16SkqXHKitaKIMrfemJKLKX1YqDU5C/5JY3PvZXd5jEW04e0Q==} + engines: {node: '>=5.0.0'} + + eslint-plugin-perfectionist@4.10.1: + resolution: {integrity: sha512-GXwFfL47RfBLZRGQdrvGZw9Ali2T2GPW8p4Gyj2fyWQ9396R/HgJMf0m9kn7D6WXRwrINfTDGLS+QYIeok9qEg==} + engines: {node: ^18.0.0 || >=20.0.0} + peerDependencies: + eslint: '>=8.45.0' + + eslint-plugin-pnpm@0.3.1: + resolution: {integrity: sha512-vi5iHoELIAlBbX4AW8ZGzU3tUnfxuXhC/NKo3qRcI5o9igbz6zJUqSlQ03bPeMqWIGTPatZnbWsNR1RnlNERNQ==} + peerDependencies: + eslint: ^9.0.0 + + eslint-plugin-regexp@2.7.0: + resolution: {integrity: sha512-U8oZI77SBtH8U3ulZ05iu0qEzIizyEDXd+BWHvyVxTOjGwcDcvy/kEpgFG4DYca2ByRLiVPFZ2GeH7j1pdvZTA==} + engines: {node: ^18 || >=20} + peerDependencies: + eslint: '>=8.44.0' + + eslint-plugin-toml@0.12.0: + resolution: {integrity: sha512-+/wVObA9DVhwZB1nG83D2OAQRrcQZXy+drqUnFJKymqnmbnbfg/UPmEMCKrJNcEboUGxUjYrJlgy+/Y930mURQ==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + peerDependencies: + eslint: '>=6.0.0' + + eslint-plugin-unicorn@57.0.0: + resolution: {integrity: sha512-zUYYa6zfNdTeG9BISWDlcLmz16c+2Ck2o5ZDHh0UzXJz3DEP7xjmlVDTzbyV0W+XksgZ0q37WEWzN2D2Ze+g9Q==} + engines: {node: '>=18.18'} + peerDependencies: + eslint: '>=9.20.0' + + eslint-plugin-unused-imports@4.1.4: + resolution: {integrity: sha512-YptD6IzQjDardkl0POxnnRBhU1OEePMV0nd6siHaRBbd+lyh6NAhFEobiznKU7kTsSsDeSD62Pe7kAM1b7dAZQ==} + peerDependencies: + '@typescript-eslint/eslint-plugin': ^8.0.0-0 || ^7.0.0 || ^6.0.0 || ^5.0.0 + eslint: ^9.0.0 || ^8.0.0 + peerDependenciesMeta: + '@typescript-eslint/eslint-plugin': + optional: true + + eslint-plugin-vue@10.0.0: + resolution: {integrity: sha512-XKckedtajqwmaX6u1VnECmZ6xJt+YvlmMzBPZd+/sI3ub2lpYZyFnsyWo7c3nMOQKJQudeyk1lw/JxdgeKT64w==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + peerDependencies: + eslint: ^8.57.0 || ^9.0.0 + vue-eslint-parser: ^10.0.0 + + eslint-plugin-yml@1.17.0: + resolution: {integrity: sha512-Q3LXFRnNpGYAK/PM0BY1Xs0IY1xTLfM0kC986nNQkx1l8tOGz+YS50N6wXkAJkrBpeUN9OxEMB7QJ+9MTDAqIQ==} + engines: {node: ^14.17.0 || >=16.0.0} + peerDependencies: + eslint: '>=6.0.0' + + eslint-processor-vue-blocks@2.0.0: + resolution: {integrity: sha512-u4W0CJwGoWY3bjXAuFpc/b6eK3NQEI8MoeW7ritKj3G3z/WtHrKjkqf+wk8mPEy5rlMGS+k6AZYOw2XBoN/02Q==} + peerDependencies: + '@vue/compiler-sfc': ^3.3.0 + eslint: '>=9.0.0' + + eslint-scope@8.3.0: + resolution: {integrity: sha512-pUNxi75F8MJ/GdeKtVLSbYg4ZI34J6C0C7sbL4YOp2exGwen7ZsuBqKzUhXd0qMQ362yET3z+uPwKeg/0C2XCQ==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + + eslint-visitor-keys@3.4.3: + resolution: {integrity: sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + + eslint-visitor-keys@4.2.0: + resolution: {integrity: sha512-UyLnSehNt62FFhSwjZlHmeokpRK59rcz29j+F1/aDgbkbRTk7wIc9XzdoasMUbRNKDM0qQt/+BJ4BrpFeABemw==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + + eslint@9.23.0: + resolution: {integrity: sha512-jV7AbNoFPAY1EkFYpLq5bslU9NLNO8xnEeQXwErNibVryjk67wHVmddTBilc5srIttJDBrB0eMHKZBFbSIABCw==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + hasBin: true + peerDependencies: + jiti: '*' + peerDependenciesMeta: + jiti: + optional: true + + espree@10.3.0: + resolution: {integrity: sha512-0QYC8b24HWY8zjRnDTL6RiHfDbAWn63qb4LMj1Z4b076A4une81+z03Kg7l7mn/48PUTqoLptSXez8oknU8Clg==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + + espree@9.6.1: + resolution: {integrity: sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + esprima@4.0.1: resolution: {integrity: sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==} engines: {node: '>=4'} hasBin: true + esquery@1.6.0: + resolution: {integrity: sha512-ca9pw9fomFcKPvFLXhBKUK90ZvGibiGOvRJNbjljY7s7uq/5YO4BOzcYtJqExdx99rF6aAcnRxHmcUHcz6sQsg==} + engines: {node: '>=0.10'} + + esrecurse@4.3.0: + resolution: {integrity: sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==} + engines: {node: '>=4.0'} + estraverse@5.3.0: resolution: {integrity: sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==} engines: {node: '>=4.0'} @@ -1803,10 +2314,19 @@ packages: fast-deep-equal@3.1.3: resolution: {integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==} + fast-diff@1.3.0: + resolution: {integrity: sha512-VxPP4NqbUjj6MaAOafWeUn2cXWLcCtljklUtZf0Ind4XQ+QPtmA0b18zZy0jIQx+ExRVCR/ZQpBmik5lXshNsw==} + fast-glob@3.3.3: resolution: {integrity: sha512-7MptL8U0cqcFdzIzwOTHoilX9x5BrNqye7Z/LuC7kCMRio1EMSyqRK3BEAUD7sXRq4iT4AzTVuZdhgQ2TCvYLg==} engines: {node: '>=8.6.0'} + fast-json-stable-stringify@2.1.0: + resolution: {integrity: sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==} + + fast-levenshtein@2.0.6: + resolution: {integrity: sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==} + fast-uri@3.0.6: resolution: {integrity: sha512-Atfo14OibSv5wAp4VWNsFYE1AchQRTv9cBGWET4pZWHzYshFSS9NQI6I57rdKn9croWVMbYFbLhJ+yJvmZIIHw==} @@ -1825,6 +2345,10 @@ packages: resolution: {integrity: sha512-d+l3qxjSesT4V7v2fh+QnmFnUWv9lSpjarhShNTgBOfA0ttejbQUAlHLitbjkoRiDulW0OPoQPYIGhIC8ohejg==} engines: {node: '>=18'} + file-entry-cache@8.0.0: + resolution: {integrity: sha512-XXTUwCvisa5oacNGRP9SfNtYBNAMi+RPwBFmblZEF7N7swHYQS6/Zfk7SRwx4D5j3CH211YNRco1DEMNVfZCnQ==} + engines: {node: '>=16.0.0'} + filename-reserved-regex@2.0.0: resolution: {integrity: sha512-lc1bnsSr4L4Bdif8Xb/qrtokGbq5zlsms/CYH8PP+WtCkGNF65DPiQY8vG3SakEdRn8Dlnm+gW/qWKKjS5sZzQ==} engines: {node: '>=4'} @@ -1841,14 +2365,29 @@ packages: resolution: {integrity: sha512-wXZV5emFEjrridIgED11OoUKLxiYjAcqot/NJdAkOhlJ+vGzwhOAfcG5OX1jP+S0PcjEn8bdMJv+g2jwQ3Onig==} engines: {node: '>=8'} + find-up-simple@1.0.1: + resolution: {integrity: sha512-afd4O7zpqHeRyg4PfDQsXmlDe2PfdHtJt6Akt8jOWaApLOZk5JXs6VMR29lz03pRe9mpykrRCYIYxaJYcfpncQ==} + engines: {node: '>=18'} + find-up@4.1.0: resolution: {integrity: sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==} engines: {node: '>=8'} + find-up@5.0.0: + resolution: {integrity: sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==} + engines: {node: '>=10'} + find-up@7.0.0: resolution: {integrity: sha512-YyZM99iHrqLKjmt4LJDj58KI+fYyufRLBSYcqycxf//KpBk9FoewoGX0450m9nB44qrZnovzC2oeP5hUibxc/g==} engines: {node: '>=18'} + flat-cache@4.0.1: + resolution: {integrity: sha512-f7ccFPK3SXFHpx15UIGyRJ/FJQctuKZ0zVuN3frBo4HnK3cay9VEW0R6yPYFHC0AgqhukPzKjq22t5DmAyqGyw==} + engines: {node: '>=16'} + + flatted@3.3.3: + resolution: {integrity: sha512-GX+ysw4PBCz0PzosHDepZGANEuFCMLrnRTiEy9McGjmkCQYwRq4A/X786G/fjM/+OjsWSU1ZrY5qyARZmO/uwg==} + for-each@0.3.5: resolution: {integrity: sha512-dKx12eRCVIzqCxFGplyFKJMPvLEWgmNtUrpTiJIR5u97zEhRG8ySrtboPHZXx7daLxQVrl643cTzbab2tkQjxg==} engines: {node: '>= 0.4'} @@ -1875,10 +2414,6 @@ packages: functions-have-names@1.2.3: resolution: {integrity: sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==} - gensync@1.0.0-beta.2: - resolution: {integrity: sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==} - engines: {node: '>=6.9.0'} - get-caller-file@2.0.5: resolution: {integrity: sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==} engines: {node: 6.* || 8.* || >= 10.*} @@ -1907,6 +2442,9 @@ packages: resolution: {integrity: sha512-w9UMqWwJxHNOvoNzSJ2oPF5wvYcvP7jUvYzhp67yEhTi17ZDBBC1z9pTdGuzjD+EFIqLSYRweZjqfiPzQ06Ebg==} engines: {node: '>= 0.4'} + get-tsconfig@4.10.0: + resolution: {integrity: sha512-kGzZ3LWWQcGIAmg6iWvXn0ei6WDtV26wzHRMwDSzmAbcXrTEXxHy6IehI6/4eT6VRKyMP1eF1VqwrVUmE/LR7A==} + get-uri@6.0.4: resolution: {integrity: sha512-E1b1lFFLvLgak2whF2xDBcOy6NLVGZBqqjJjsIhvopKfWWEi64pLVTWWehV8KlLerZkfNTA95sTe2OdJKm1OzQ==} engines: {node: '>= 14'} @@ -1931,6 +2469,10 @@ packages: resolution: {integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==} engines: {node: '>= 6'} + glob-parent@6.0.2: + resolution: {integrity: sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==} + engines: {node: '>=10.13.0'} + glob@7.2.3: resolution: {integrity: sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==} deprecated: Glob versions prior to v9 are no longer supported @@ -1939,14 +2481,18 @@ packages: resolution: {integrity: sha512-wHTUcDUoZ1H5/0iVqEudYW4/kAlN5cZ3j/bXn0Dpbizl9iaUVeWSHqiOjsgk6OW2bkLclbBjzewBz6weQ1zA2Q==} engines: {node: '>=18'} - globals@11.12.0: - resolution: {integrity: sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==} - engines: {node: '>=4'} + globals@14.0.0: + resolution: {integrity: sha512-oahGvuMGQlPw/ivIYBjVSrWAfWLBeku5tpPE2fOPLi+WHffIWbuh2tCjhyQhTBPMf5E9jDEH4FOmTYgYwbKwtQ==} + engines: {node: '>=18'} globals@15.15.0: resolution: {integrity: sha512-7ACyT3wmyp3I61S4fG682L0VA2RGD9otkqGJIwNUMF1SWUombIIk+af1unuDYgMm082aHYwD+mzJvv9Iu8dsgg==} engines: {node: '>=18'} + globals@16.0.0: + resolution: {integrity: sha512-iInW14XItCXET01CQFqudPOWP2jYMl7T+QRQT+UNcR/iQncN/F0UNpgd76iFkBPgNQb4+X3LV9tLJYzwh+Gl3A==} + engines: {node: '>=18'} + globalthis@1.0.4: resolution: {integrity: sha512-DpLKbNU4WylpxJykQujfCcwYWiV/Jhm50Goo0wrVILAv5jOr9d+H+UR3PhSCD2rCCEIg0uc+G+muBTwD54JhDQ==} engines: {node: '>= 0.4'} @@ -1969,6 +2515,9 @@ packages: graceful-fs@4.2.11: resolution: {integrity: sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==} + graphemer@1.4.0: + resolution: {integrity: sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==} + gzip-size@6.0.0: resolution: {integrity: sha512-ax7ZYomf6jqPTQ4+XCpUGyXKHk5WweS+e05MBO4/y3WJ5RkmPXNKvX+bx1behVILVwr6JSQvZAku021CHPXG3Q==} engines: {node: '>=10'} @@ -1981,6 +2530,10 @@ packages: resolution: {integrity: sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==} engines: {node: '>=4'} + has-flag@4.0.0: + resolution: {integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==} + engines: {node: '>=8'} + has-property-descriptors@1.0.2: resolution: {integrity: sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==} @@ -2003,6 +2556,10 @@ packages: hosted-git-info@2.8.9: resolution: {integrity: sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==} + hosted-git-info@7.0.2: + resolution: {integrity: sha512-puUZAUKT5m8Zzvs72XWy3HtvVbTWljRE66cP60bxJzAqf2DgICo7lYTY2IHUmLnNpjYvw5bvmoHvPc0QO2a62w==} + engines: {node: ^16.14.0 || >=18.0.0} + http-proxy-agent@7.0.2: resolution: {integrity: sha512-T1gkAiYYDWYx3V5Bmyu7HcfcvL7mUrTWiM6yOfa3PIphViJ/gFPbvidQ+veqSOHci/PxBcDabeUNCzpOODJZig==} engines: {node: '>= 14'} @@ -2034,6 +2591,18 @@ packages: import-meta-resolve@4.1.0: resolution: {integrity: sha512-I6fiaX09Xivtk+THaMfAwnA3MVA5Big1WHF1Dfx9hFuvNIWpXnorlkzhcQf6ehrqQiiZECRt1poOAkPmer3ruw==} + imurmurhash@0.1.4: + resolution: {integrity: sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==} + engines: {node: '>=0.8.19'} + + indent-string@5.0.0: + resolution: {integrity: sha512-m6FAo/spmsW2Ab2fU35JTYwtOKa2yAwXSwgjSv1TJzh4Mh7mC3lzAOVLBprb72XsTrgkEIsl7YrFNAiDiRhIGg==} + engines: {node: '>=12'} + + index-to-position@1.0.0: + resolution: {integrity: sha512-sCO7uaLVhRJ25vz1o8s9IFM3nVS4DkuQnyjMwiQPKvQuBYBDmb8H7zx8ki7nVh4HJQOdVWebyvLE0qt+clruxA==} + engines: {node: '>=18'} + inflight@1.0.6: resolution: {integrity: sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==} deprecated: This module is not supported, and leaks memory. Do not use it. Check out lru-cache if you want a good and tested way to coalesce async requests by a key value, which is much more comprehensive and powerful. @@ -2089,6 +2658,10 @@ packages: resolution: {integrity: sha512-wa56o2/ElJMYqjCjGkXri7it5FbebW5usLw/nPmCMs5DeZ7eziSYZhSmPRn0txqeW4LnAmQQU7FgqLpsEFKM4A==} engines: {node: '>= 0.4'} + is-builtin-module@4.0.0: + resolution: {integrity: sha512-rWP3AMAalQSesXO8gleROyL2iKU73SX5Er66losQn9rWOWL4Gef0a/xOEOVqjWGMuR2vHG3FJ8UUmT700O8oFg==} + engines: {node: '>=18.20'} + is-callable@1.2.7: resolution: {integrity: sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==} engines: {node: '>= 0.4'} @@ -2271,24 +2844,41 @@ packages: jsbn@1.1.0: resolution: {integrity: sha512-4bYVV3aAMtDTTu4+xsDYa6sy9GyJ69/amsu9sYF2zqjiEoZA5xJi3BrfX3uY+/IekIu7MwdObdbDWpoZdBv3/A==} + jsdoc-type-pratt-parser@4.1.0: + resolution: {integrity: sha512-Hicd6JK5Njt2QB6XYFS7ok9e37O8AYk3jTcppG4YVQnYjOemymvTcmc7OWsmq/Qqj5TdRFO5/x/tIPmBeRtGHg==} + engines: {node: '>=12.0.0'} + + jsesc@3.0.2: + resolution: {integrity: sha512-xKqzzWXDttJuOcawBt4KnKHHIf5oQ/Cxax+0PWFG+DFDgHNAdi+TXECADI+RYiFUMmx8792xsMbbgXj4CwnP4g==} + engines: {node: '>=6'} + hasBin: true + jsesc@3.1.0: resolution: {integrity: sha512-/sM3dO2FOzXjKQhJuo0Q173wf2KOo8t4I8vHy6lF9poUp7bKT0/NHE8fPX23PwfhnykfqnC2xRxOnVw5XuGIaA==} engines: {node: '>=6'} hasBin: true + json-buffer@3.0.1: + resolution: {integrity: sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==} + json-parse-better-errors@1.0.2: resolution: {integrity: sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==} json-parse-even-better-errors@2.3.1: resolution: {integrity: sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==} + json-schema-traverse@0.4.1: + resolution: {integrity: sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==} + json-schema-traverse@1.0.0: resolution: {integrity: sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==} - json5@2.2.3: - resolution: {integrity: sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==} - engines: {node: '>=6'} - hasBin: true + json-stable-stringify-without-jsonify@1.0.1: + resolution: {integrity: sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==} + + jsonc-eslint-parser@2.4.0: + resolution: {integrity: sha512-WYDyuc/uFcGp6YtM2H0uKmUwieOuzeE/5YocFJLnLfclZ4inf3mRn8ZVy1s7Hxji7Jxm6Ss8gqpexD/GlKoGgg==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} jsonfile@4.0.0: resolution: {integrity: sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg==} @@ -2297,6 +2887,9 @@ packages: resolution: {integrity: sha512-POQXvpdL69+CluYsillJ7SUhKvytYjW9vG/GKpnf+xP8UWgYEM/RaMzHHofbALDiKbbP1W8UEYmgGl39WkPZsg==} engines: {'0': node >= 0.2.0} + keyv@4.5.4: + resolution: {integrity: sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==} + kolorist@1.8.0: resolution: {integrity: sha512-Y+60/zizpJ3HRH8DCss+q95yr6145JXZo46OTpFvDZWLfRCE4qChOyk1b26nMaNpfHHgxagk9dXT5OP0Tfe+dQ==} @@ -2308,6 +2901,10 @@ packages: resolution: {integrity: sha512-7W0vV3rqv5tokqkBAFV1LbR7HPOWzXQDpDgEuib/aJ1jsZZx6x3c2mBI+TJhJzOhkGeaLbCKEHXEXLfirtG2JA==} engines: {node: '>=18'} + levn@0.4.1: + resolution: {integrity: sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==} + engines: {node: '>= 0.8.0'} + lilconfig@3.1.3: resolution: {integrity: sha512-/vlFKAoH5Cgt3Ie+JLhRbwOsCQePABiU3tJ1egGvyQ+33R/vcwM2Zl2QR/LzjsBeItPt3oSVXapn+m4nQDvpzw==} engines: {node: '>=14'} @@ -2336,6 +2933,10 @@ packages: resolution: {integrity: sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==} engines: {node: '>=8'} + locate-path@6.0.0: + resolution: {integrity: sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==} + engines: {node: '>=10'} + locate-path@7.2.0: resolution: {integrity: sha512-gvVijfZvn7R+2qyPX8mAuKcFGDf6Nc61GdvGafQsHL0sBIxfKzA+usWn4GFC/bk+QdwPUD4kWFJLhElipq+0VA==} engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} @@ -2390,12 +2991,11 @@ packages: resolution: {integrity: sha512-9ie8ItPR6tjY5uYJh8K/Zrv/RMZ5VOlOWvtZdEHYSTFKZfIBPQa9tOAEeAWhd+AnIneLJ22w5fjOYtoutpWq5w==} engines: {node: '>=18'} - loose-envify@1.4.0: - resolution: {integrity: sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==} - hasBin: true + longest-streak@3.1.0: + resolution: {integrity: sha512-9Ri+o0JYgehTaVBBDoMqIl8GXtbWg711O3srftcHhZ0dqnETqLaoIK0x17fUw9rFSlK/0NlsKe0Ahhyl5pXE2g==} - lru-cache@5.1.1: - resolution: {integrity: sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==} + lru-cache@10.4.3: + resolution: {integrity: sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==} lru-cache@7.18.3: resolution: {integrity: sha512-jumlc0BIUrS3qJGgIkWZsyfAM7NCWiBcCDhnd+3NNM5KbBmLTgHVfWBcg6W+rLUsIpzpERPsvwUP7CckAQSOoA==} @@ -2412,10 +3012,46 @@ packages: resolution: {integrity: sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==} engines: {node: '>=8'} + markdown-table@3.0.4: + resolution: {integrity: sha512-wiYz4+JrLyb/DqW2hkFJxP7Vd7JuTDm77fvbM8VfEQdmSMqcImWeeRbHwZjBjIFki/VaMK2BhFi7oUUZeM5bqw==} + math-intrinsics@1.1.0: resolution: {integrity: sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g==} engines: {node: '>= 0.4'} + mdast-util-find-and-replace@3.0.2: + resolution: {integrity: sha512-Tmd1Vg/m3Xz43afeNxDIhWRtFZgM2VLyaf4vSTYwudTyeuTneoL3qtWMA5jeLyz/O1vDJmmV4QuScFCA2tBPwg==} + + mdast-util-from-markdown@2.0.2: + resolution: {integrity: sha512-uZhTV/8NBuw0WHkPTrCqDOl0zVe1BIng5ZtHoDk49ME1qqcjYmmLmOf0gELgcRMxN4w2iuIeVso5/6QymSrgmA==} + + mdast-util-gfm-autolink-literal@2.0.1: + resolution: {integrity: sha512-5HVP2MKaP6L+G6YaxPNjuL0BPrq9orG3TsrZ9YXbA3vDw/ACI4MEsnoDpn6ZNm7GnZgtAcONJyPhOP8tNJQavQ==} + + mdast-util-gfm-footnote@2.1.0: + resolution: {integrity: sha512-sqpDWlsHn7Ac9GNZQMeUzPQSMzR6Wv0WKRNvQRg0KqHh02fpTz69Qc1QSseNX29bhz1ROIyNyxExfawVKTm1GQ==} + + mdast-util-gfm-strikethrough@2.0.0: + resolution: {integrity: sha512-mKKb915TF+OC5ptj5bJ7WFRPdYtuHv0yTRxK2tJvi+BDqbkiG7h7u/9SI89nRAYcmap2xHQL9D+QG/6wSrTtXg==} + + mdast-util-gfm-table@2.0.0: + resolution: {integrity: sha512-78UEvebzz/rJIxLvE7ZtDd/vIQ0RHv+3Mh5DR96p7cS7HsBhYIICDBCu8csTNWNO6tBWfqXPWekRuj2FNOGOZg==} + + mdast-util-gfm-task-list-item@2.0.0: + resolution: {integrity: sha512-IrtvNvjxC1o06taBAVJznEnkiHxLFTzgonUdy8hzFVeDun0uTjxxrRGVaNFqkU1wJR3RBPEfsxmU6jDWPofrTQ==} + + mdast-util-gfm@3.1.0: + resolution: {integrity: sha512-0ulfdQOM3ysHhCJ1p06l0b0VKlhU0wuQs3thxZQagjcjPrlFRqY215uZGHHJan9GEAXd9MbfPjFJz+qMkVR6zQ==} + + mdast-util-phrasing@4.1.0: + resolution: {integrity: sha512-TqICwyvJJpBwvGAMZjj4J2n0X8QWp21b9l0o7eXyVJ25YNWYbJDVIyD1bZXE6WtV6RmKJVYmQAKWa0zWOABz2w==} + + mdast-util-to-markdown@2.1.2: + resolution: {integrity: sha512-xj68wMTvGXVOKonmog6LwyJKrYXZPvlwabaryTjLh9LuvovB/KAH+kvi8Gjj+7rJjsFi23nkUxRQv1KqSroMqA==} + + mdast-util-to-string@4.0.0: + resolution: {integrity: sha512-0H44vDimn51F0YwvxSJSm0eCDOJTRlmN0R1yBh4HLj9wiV1Dn0QoXGbvFAWj2hSItVTlCmBF1hqKlIyUBVFLPg==} + mdn-data@2.12.2: resolution: {integrity: sha512-IEn+pegP1aManZuckezWCO+XZQDplx1366JoVhTpMpBB1sPey/SbveZQUosKiKiGYjg1wH4pMlNgXbCiYgihQA==} @@ -2434,6 +3070,90 @@ packages: resolution: {integrity: sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==} engines: {node: '>= 8'} + micromark-core-commonmark@2.0.3: + resolution: {integrity: sha512-RDBrHEMSxVFLg6xvnXmb1Ayr2WzLAWjeSATAoxwKYJV94TeNavgoIdA0a9ytzDSVzBy2YKFK+emCPOEibLeCrg==} + + micromark-extension-gfm-autolink-literal@2.1.0: + resolution: {integrity: sha512-oOg7knzhicgQ3t4QCjCWgTmfNhvQbDDnJeVu9v81r7NltNCVmhPy1fJRX27pISafdjL+SVc4d3l48Gb6pbRypw==} + + micromark-extension-gfm-footnote@2.1.0: + resolution: {integrity: sha512-/yPhxI1ntnDNsiHtzLKYnE3vf9JZ6cAisqVDauhp4CEHxlb4uoOTxOCJ+9s51bIB8U1N1FJ1RXOKTIlD5B/gqw==} + + micromark-extension-gfm-strikethrough@2.1.0: + resolution: {integrity: sha512-ADVjpOOkjz1hhkZLlBiYA9cR2Anf8F4HqZUO6e5eDcPQd0Txw5fxLzzxnEkSkfnD0wziSGiv7sYhk/ktvbf1uw==} + + micromark-extension-gfm-table@2.1.1: + resolution: {integrity: sha512-t2OU/dXXioARrC6yWfJ4hqB7rct14e8f7m0cbI5hUmDyyIlwv5vEtooptH8INkbLzOatzKuVbQmAYcbWoyz6Dg==} + + micromark-extension-gfm-tagfilter@2.0.0: + resolution: {integrity: sha512-xHlTOmuCSotIA8TW1mDIM6X2O1SiX5P9IuDtqGonFhEK0qgRI4yeC6vMxEV2dgyr2TiD+2PQ10o+cOhdVAcwfg==} + + micromark-extension-gfm-task-list-item@2.1.0: + resolution: {integrity: sha512-qIBZhqxqI6fjLDYFTBIa4eivDMnP+OZqsNwmQ3xNLE4Cxwc+zfQEfbs6tzAo2Hjq+bh6q5F+Z8/cksrLFYWQQw==} + + micromark-extension-gfm@3.0.0: + resolution: {integrity: sha512-vsKArQsicm7t0z2GugkCKtZehqUm31oeGBV/KVSorWSy8ZlNAv7ytjFhvaryUiCUJYqs+NoE6AFhpQvBTM6Q4w==} + + micromark-factory-destination@2.0.1: + resolution: {integrity: sha512-Xe6rDdJlkmbFRExpTOmRj9N3MaWmbAgdpSrBQvCFqhezUn4AHqJHbaEnfbVYYiexVSs//tqOdY/DxhjdCiJnIA==} + + micromark-factory-label@2.0.1: + resolution: {integrity: sha512-VFMekyQExqIW7xIChcXn4ok29YE3rnuyveW3wZQWWqF4Nv9Wk5rgJ99KzPvHjkmPXF93FXIbBp6YdW3t71/7Vg==} + + micromark-factory-space@2.0.1: + resolution: {integrity: sha512-zRkxjtBxxLd2Sc0d+fbnEunsTj46SWXgXciZmHq0kDYGnck/ZSGj9/wULTV95uoeYiK5hRXP2mJ98Uo4cq/LQg==} + + micromark-factory-title@2.0.1: + resolution: {integrity: sha512-5bZ+3CjhAd9eChYTHsjy6TGxpOFSKgKKJPJxr293jTbfry2KDoWkhBb6TcPVB4NmzaPhMs1Frm9AZH7OD4Cjzw==} + + micromark-factory-whitespace@2.0.1: + resolution: {integrity: sha512-Ob0nuZ3PKt/n0hORHyvoD9uZhr+Za8sFoP+OnMcnWK5lngSzALgQYKMr9RJVOWLqQYuyn6ulqGWSXdwf6F80lQ==} + + micromark-util-character@2.1.1: + resolution: {integrity: sha512-wv8tdUTJ3thSFFFJKtpYKOYiGP2+v96Hvk4Tu8KpCAsTMs6yi+nVmGh1syvSCsaxz45J6Jbw+9DD6g97+NV67Q==} + + micromark-util-chunked@2.0.1: + resolution: {integrity: sha512-QUNFEOPELfmvv+4xiNg2sRYeS/P84pTW0TCgP5zc9FpXetHY0ab7SxKyAQCNCc1eK0459uoLI1y5oO5Vc1dbhA==} + + micromark-util-classify-character@2.0.1: + resolution: {integrity: sha512-K0kHzM6afW/MbeWYWLjoHQv1sgg2Q9EccHEDzSkxiP/EaagNzCm7T/WMKZ3rjMbvIpvBiZgwR3dKMygtA4mG1Q==} + + micromark-util-combine-extensions@2.0.1: + resolution: {integrity: sha512-OnAnH8Ujmy59JcyZw8JSbK9cGpdVY44NKgSM7E9Eh7DiLS2E9RNQf0dONaGDzEG9yjEl5hcqeIsj4hfRkLH/Bg==} + + micromark-util-decode-numeric-character-reference@2.0.2: + resolution: {integrity: sha512-ccUbYk6CwVdkmCQMyr64dXz42EfHGkPQlBj5p7YVGzq8I7CtjXZJrubAYezf7Rp+bjPseiROqe7G6foFd+lEuw==} + + micromark-util-decode-string@2.0.1: + resolution: {integrity: sha512-nDV/77Fj6eH1ynwscYTOsbK7rR//Uj0bZXBwJZRfaLEJ1iGBR6kIfNmlNqaqJf649EP0F3NWNdeJi03elllNUQ==} + + micromark-util-encode@2.0.1: + resolution: {integrity: sha512-c3cVx2y4KqUnwopcO9b/SCdo2O67LwJJ/UyqGfbigahfegL9myoEFoDYZgkT7f36T0bLrM9hZTAaAyH+PCAXjw==} + + micromark-util-html-tag-name@2.0.1: + resolution: {integrity: sha512-2cNEiYDhCWKI+Gs9T0Tiysk136SnR13hhO8yW6BGNyhOC4qYFnwF1nKfD3HFAIXA5c45RrIG1ub11GiXeYd1xA==} + + micromark-util-normalize-identifier@2.0.1: + resolution: {integrity: sha512-sxPqmo70LyARJs0w2UclACPUUEqltCkJ6PhKdMIDuJ3gSf/Q+/GIe3WKl0Ijb/GyH9lOpUkRAO2wp0GVkLvS9Q==} + + micromark-util-resolve-all@2.0.1: + resolution: {integrity: sha512-VdQyxFWFT2/FGJgwQnJYbe1jjQoNTS4RjglmSjTUlpUMa95Htx9NHeYW4rGDJzbjvCsl9eLjMQwGeElsqmzcHg==} + + micromark-util-sanitize-uri@2.0.1: + resolution: {integrity: sha512-9N9IomZ/YuGGZZmQec1MbgxtlgougxTodVwDzzEouPKo3qFWvymFHWcnDi2vzV1ff6kas9ucW+o3yzJK9YB1AQ==} + + micromark-util-subtokenize@2.1.0: + resolution: {integrity: sha512-XQLu552iSctvnEcgXw6+Sx75GflAPNED1qx7eBJ+wydBb2KCbRZe+NwvIEEMM83uml1+2WSXpBAcp9IUCgCYWA==} + + micromark-util-symbol@2.0.1: + resolution: {integrity: sha512-vs5t8Apaud9N28kgCrRUdEed4UJ+wWNvicHLPxCa9ENlYuAY31M0ETy5y1vA33YoNPDFTghEbnh6efaE8h4x0Q==} + + micromark-util-types@2.0.2: + resolution: {integrity: sha512-Yw0ECSpJoViF1qTU4DC6NwtC4aWGt1EkzaQB8KPPyCRR8z9TWeV0HbEFGTO+ZY1wB22zmxnJqhPyTpOVCpeHTA==} + + micromark@4.0.2: + resolution: {integrity: sha512-zpe98Q6kvavpCr1NPVSCMebCKfD7CA2NqZ+rykeNhONIJBpc1tFKt9hucLGwha3jNTNI8lHpctWJWoimVF4PfA==} + micromatch@4.0.8: resolution: {integrity: sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==} engines: {node: '>=8.6'} @@ -2454,9 +3174,21 @@ packages: resolution: {integrity: sha512-VP79XUPxV2CigYP3jWwAUFSku2aKqBH7uTAapFWCBqutsbmDo96KY5o8uh6U+/YSIn5OxJnXp73beVkpqMIGhA==} engines: {node: '>=18'} + min-indent@1.0.1: + resolution: {integrity: sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg==} + engines: {node: '>=4'} + + minimatch@10.0.1: + resolution: {integrity: sha512-ethXTt3SGGR+95gudmqJ1eNhRO7eGEGIgYA9vnPatK4/etz2MEVDno5GMCibdMTuBMyElzIlgxMna3K94XDIDQ==} + engines: {node: 20 || >=22} + minimatch@3.1.2: resolution: {integrity: sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==} + minimatch@9.0.5: + resolution: {integrity: sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==} + engines: {node: '>=16 || 14 >=14.17'} + minimist@1.2.8: resolution: {integrity: sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==} @@ -2479,6 +3211,13 @@ packages: engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} hasBin: true + natural-compare@1.4.0: + resolution: {integrity: sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==} + + natural-orderby@5.0.0: + resolution: {integrity: sha512-kKHJhxwpR/Okycz4HhQKKlhWe4ASEfPgkSWNmKFHd7+ezuQlxkA5cM3+XkBPvm1gmHen3w53qsYAv+8GwRrBlg==} + engines: {node: '>=18'} + netmask@2.0.2: resolution: {integrity: sha512-dBpDMdxv9Irdq66304OLfEmQ9tbNRFnFTuZiLo+bD+r332bBmMJ8GBLXklIXXgxd3+v9+KUnZaUR5PJMa75Gsg==} engines: {node: '>= 0.4.0'} @@ -2499,6 +3238,10 @@ packages: normalize-package-data@2.5.0: resolution: {integrity: sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==} + normalize-package-data@6.0.2: + resolution: {integrity: sha512-V6gygoYb/5EmNI+MEGrWkC+e6+Rr7mTmfHrxDbLzxQogBkgzo76rkok0Am6thgSF7Mv2nLOajAJj5vDJZEFn7g==} + engines: {node: ^16.14.0 || >=18.0.0} + normalize-path@3.0.0: resolution: {integrity: sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==} engines: {node: '>=0.10.0'} @@ -2516,6 +3259,9 @@ packages: resolution: {integrity: sha512-9qny7Z9DsQU8Ou39ERsPU4OZQlSTP47ShQzuKZ6PRXpYLtIFgl/DEBYEXKlvcEa+9tHVcK8CF81Y2V72qaZhWA==} engines: {node: '>=18'} + nth-check@2.1.1: + resolution: {integrity: sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==} + object-assign@4.1.1: resolution: {integrity: sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==} engines: {node: '>=0.10.0'} @@ -2550,6 +3296,10 @@ packages: resolution: {integrity: sha512-mnkeQ1qP5Ue2wd+aivTD3NHd/lZ96Lu0jgf0pwktLPtx6cTZiH7tyeGRRHs0zX0rbrahXPnXlUnbeXyaBBuIaw==} engines: {node: '>=18'} + optionator@0.9.4: + resolution: {integrity: sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g==} + engines: {node: '>= 0.8.0'} + ora@8.1.1: resolution: {integrity: sha512-YWielGi1XzG1UTvOaCFaNgEnuhZVMSHYkW/FQ7UX8O26PtlpdM84c0f7wLPlkvx2RfiQmnzd61d/MGxmpQeJPw==} engines: {node: '>=18'} @@ -2570,6 +3320,10 @@ packages: resolution: {integrity: sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==} engines: {node: '>=6'} + p-limit@3.1.0: + resolution: {integrity: sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==} + engines: {node: '>=10'} + p-limit@4.0.0: resolution: {integrity: sha512-5b0R4txpzjPWVw/cXXUResoD4hb6U/x9BH08L7nw+GN1sezDzPdxeRvpc9c433fZhBan/wusjbCsqwqm4EIBIQ==} engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} @@ -2578,6 +3332,10 @@ packages: resolution: {integrity: sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==} engines: {node: '>=8'} + p-locate@5.0.0: + resolution: {integrity: sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==} + engines: {node: '>=10'} + p-locate@6.0.0: resolution: {integrity: sha512-wPrq66Llhl7/4AGC6I+cqxT07LhXvWL08LNXz1fENOw0Ap4sRZZ/gZpTTJ5jpurzzzfS2W/Ge9BY3LgLjCShcw==} engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} @@ -2605,6 +3363,14 @@ packages: resolution: {integrity: sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==} engines: {node: '>=6'} + parse-gitignore@2.0.0: + resolution: {integrity: sha512-RmVuCHWsfu0QPNW+mraxh/xjQVw/lhUCUru8Zni3Ctq3AoMhpDTq0OVdKS6iesd6Kqb7viCV3isAL43dciOSog==} + engines: {node: '>=14'} + + parse-imports@2.2.1: + resolution: {integrity: sha512-OL/zLggRp8mFhKL0rNORUTR4yBYujK/uU+xZL+/0Rgm2QE4nLO9v8PzEweSJEbMGKmDRjJE4R3IMJlL2di4JeQ==} + engines: {node: '>= 18'} + parse-json@4.0.0: resolution: {integrity: sha512-aOIos8bujGN93/8Ox/jPLh7RwVnPEysynVFE+fQZyg6jKELEHwzgKdLRFHUgXJL6kylijVSBC4BvN9OmsB48Rw==} engines: {node: '>=4'} @@ -2613,6 +3379,10 @@ packages: resolution: {integrity: sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==} engines: {node: '>=8'} + parse-json@8.2.0: + resolution: {integrity: sha512-eONBZy4hm2AgxjNFd8a4nyDJnzUAH0g34xSQAwWEVGCjdZ4ZL7dKZBfq267GWP/JaS9zW62Xs2FeAdDvpHHJGQ==} + engines: {node: '>=18'} + parse-ms@4.0.0: resolution: {integrity: sha512-TXfryirbmq34y8QBwgqCVLi+8oA3oWx2eAnSn62ITyEhEYaWRlVZ2DvMM9eZbMs/RfxPu/PK/aBLyGj4IrqMHw==} engines: {node: '>=18'} @@ -2725,14 +3495,38 @@ packages: pkg-types@2.1.0: resolution: {integrity: sha512-wmJwA+8ihJixSoHKxZJRBQG1oY8Yr9pGLzRmSsNms0iNWyHHAlZCa7mmKiFR10YPZuz/2k169JiS/inOjBCZ2A==} + pluralize@8.0.0: + resolution: {integrity: sha512-Nc3IT5yHzflTfbjgqWcCPpo7DaKy4FnpB0l/zCAW0Tc7jxAiuqSxHasntB3D7887LSrA93kDJ9IXovxJYxyLCA==} + engines: {node: '>=4'} + + pnpm-workspace-yaml@0.3.1: + resolution: {integrity: sha512-3nW5RLmREmZ8Pm8MbPsO2RM+99RRjYd25ynj3NV0cFsN7CcEl4sDFzgoFmSyduFwxFQ2Qbu3y2UdCh6HlyUOeA==} + possible-typed-array-names@1.1.0: resolution: {integrity: sha512-/+5VFTchJDoVj3bhoqi6UeymcD00DAwb1nJwamzPvHEszJ4FpF6SNNbUbOS8yI56qHzdV8eK0qEfOSiodkTdxg==} engines: {node: '>= 0.4'} + postcss-selector-parser@6.1.2: + resolution: {integrity: sha512-Q8qQfPiZ+THO/3ZrOrO0cJJKfpYCagtMUkXbnEfmgUjwXg6z/WBeOyS9APBBPCTSiDV+s4SwQGu8yFsiMRIudg==} + engines: {node: '>=4'} + postcss@8.5.3: resolution: {integrity: sha512-dle9A3yYxlBSrt8Fu+IpjGT8SY8hN0mlaA6GY8t0P5PjIOZemULz/E2Bnm/2dcUOena75OTNkHI76uZBNUUq3A==} engines: {node: ^10 || ^12 || >=14} + prelude-ls@1.2.1: + resolution: {integrity: sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==} + engines: {node: '>= 0.8.0'} + + prettier-linter-helpers@1.0.0: + resolution: {integrity: sha512-GbK2cP9nraSSUF9N2XwUwqfzlAFlMNYYl+ShE/V+H8a9uNl/oUqB1w2EL54Jh0OlyRSd8RfWYJ3coVS4TROP2w==} + engines: {node: '>=6.0.0'} + + prettier@3.5.3: + resolution: {integrity: sha512-QQtaxnoDJeAkDvDKWCLiwIXkTgRhwYDEQCghU9Z6q03iyek/rxRh/2lC3HB7P8sWT2xC/y5JDctPLBIGzHKbhw==} + engines: {node: '>=14'} + hasBin: true + pretty-ms@9.2.0: resolution: {integrity: sha512-4yf0QO/sllf/1zbZWYnvWw3NxCQwLXKzIj0G849LSufP15BXKM0rbD2Z3wVnkMfjdn/CB0Dpp444gYAACdsplg==} engines: {node: '>=18'} @@ -2756,6 +3550,10 @@ packages: punycode@1.4.1: resolution: {integrity: sha512-jmYNElW7yvO7TV33CjSmvSiE2yco3bV2czu/OzDKdMNVZQWfxCblURLhf+47syQRBntjfLdd/H0egrzIG+oaFQ==} + punycode@2.3.1: + resolution: {integrity: sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==} + engines: {node: '>=6'} + pupa@3.1.0: resolution: {integrity: sha512-FLpr4flz5xZTSJxSeaheeMKN/EDzMdK7b8PTOC6a5PYFKTucWbdqjgqaEyH0shFiSJrVB1+Qqi4Tk19ccU6Aug==} engines: {node: '>=12.20'} @@ -2774,40 +3572,18 @@ packages: resolution: {integrity: sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==} hasBin: true - react-dom@18.3.1: - resolution: {integrity: sha512-5m4nQKp+rZRb09LNH59GM4BxTh9251/ylbKIbpe7TpGxfJ+9kv6BLkLBXIjjspbgbnIBNqlI23tRnTWT0snUIw==} - peerDependencies: - react: ^18.3.1 - - react-refresh@0.14.2: - resolution: {integrity: sha512-jCvmsr+1IUSMUyzOkRcvnVbX3ZYC6g9TDrDbFuFmRDq7PD4yaGbLKNQL6k2jnArV8hjYxh7hVhAZB6s9HDGpZA==} - engines: {node: '>=0.10.0'} - - react-router-dom@7.4.0: - resolution: {integrity: sha512-VlksBPf3n2bijPvnA7nkTsXxMAKOj+bWp4R9c3i+bnwlSOFAGOkJkKhzy/OsRkWaBMICqcAl1JDzh9ZSOze9CA==} - engines: {node: '>=20.0.0'} - peerDependencies: - react: '>=18' - react-dom: '>=18' - - react-router@7.4.0: - resolution: {integrity: sha512-Y2g5ObjkvX3VFeVt+0CIPuYd9PpgqCslG7ASSIdN73LwA1nNWzcMLaoMRJfP3prZFI92svxFwbn7XkLJ+UPQ6A==} - engines: {node: '>=20.0.0'} - peerDependencies: - react: '>=18' - react-dom: '>=18' - peerDependenciesMeta: - react-dom: - optional: true - - react@18.3.1: - resolution: {integrity: sha512-wS+hAgJShR0KhEvPJArfuPVN1+Hz1t0Y6n5jLrGQbkb4urgPE/0Rve+1kMB1v/oWgHgm4WIcV+i7F2pTVj+2iQ==} - engines: {node: '>=0.10.0'} + read-package-up@11.0.0: + resolution: {integrity: sha512-MbgfoNPANMdb4oRBNg5eqLbB2t2r+o5Ua1pNt8BqGp4I0FJZhuVSOj3PaBPni4azWuSzEdNn2evevzVmEk1ohQ==} + engines: {node: '>=18'} read-pkg@3.0.0: resolution: {integrity: sha512-BLq/cCO9two+lBgiTYNqD6GdtK8s4NpaWrl6/rCO9w0TUS8oJl7cmToOZfRYllKTISY6nt1U7jQ53brmKqY6BA==} engines: {node: '>=4'} + read-pkg@9.0.1: + resolution: {integrity: sha512-9viLL4/n1BJUCT1NXVTdS1jtm80yDEgR5T4yCelII49Mbj0v1rZdKqj7zCiYdbB0CuCgdrvHcNogAKTFPBocFA==} + engines: {node: '>=18'} + readdirp@3.6.0: resolution: {integrity: sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==} engines: {node: '>=8.10.0'} @@ -2816,10 +3592,22 @@ packages: resolution: {integrity: sha512-HFM8rkZ+i3zrV+4LQjwQ0W+ez98pApMGM3HUrN04j3CqzPOzl9nmP15Y8YXNm8QHGv/eacOVEjqhmWpkRV0NAw==} engines: {node: '>= 0.10'} + refa@0.12.1: + resolution: {integrity: sha512-J8rn6v4DBb2nnFqkqwy6/NnTYMcgLA+sLr0iIO41qpv0n+ngb7ksag2tMRl0inb1bbO/esUwzW1vbJi7K0sI0g==} + engines: {node: ^12.0.0 || ^14.0.0 || >=16.0.0} + reflect.getprototypeof@1.0.10: resolution: {integrity: sha512-00o4I+DVrefhv+nX0ulyi3biSHCPDe+yLv5o/p6d/UVlirijB8E16FtfwSAi4g3tcqrQ4lRAqQSoFEZJehYEcw==} engines: {node: '>= 0.4'} + regexp-ast-analysis@0.7.1: + resolution: {integrity: sha512-sZuz1dYW/ZsfG17WSAG7eS85r5a0dDsvg+7BiiYR5o6lKCAtUrEwdmRmaGF6rwVj3LcmAeYkOWKEPlbPzN3Y3A==} + engines: {node: ^12.0.0 || ^14.0.0 || >=16.0.0} + + regexp-tree@0.1.27: + resolution: {integrity: sha512-iETxpjK6YoRWJG5o6hXLwvjYAoW+FEZn9os0PD/b6AP6xQwsa/Y7lCVgIixBbUPMfhu+i2LtdeAqVTgGlQarfA==} + hasBin: true + regexp.prototype.flags@1.5.4: resolution: {integrity: sha512-dYqgNSZbDwkaJ2ceRd9ojCGjBq+mOm9LmtXnAnEGyHhN/5R7iDW2TRw3h+o/jCFxus3P2LfWIIiwowAjANm7IA==} engines: {node: '>= 0.4'} @@ -2832,6 +3620,10 @@ packages: resolution: {integrity: sha512-+crtS5QjFRqFCoQmvGduwYWEBng99ZvmFvF+cUJkGYF1L1BfU8C6Zp9T7f5vPAwyLkUExpvK+ANVZmGU49qi4Q==} engines: {node: '>=12'} + regjsparser@0.12.0: + resolution: {integrity: sha512-cnE+y8bz4NhMjISKbgeVJtqNbtf5QpjZP+Bslo+UqkIt9QPnX9q095eiRRASJG1/tz6dlNr6Z5NsBiWYokp6EQ==} + hasBin: true + release-it@18.1.2: resolution: {integrity: sha512-HOVRcicehCgoCsPFOu0iCBlEC8GDOoKS5s6ICkWmqomGEoZtRQ88D3RCsI5MciSU8vAQU+aWZW2z57NQNNb74w==} engines: {node: ^20.9.0 || >=22.0.0} @@ -2853,6 +3645,9 @@ packages: resolution: {integrity: sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==} engines: {node: '>=8'} + resolve-pkg-maps@1.0.0: + resolution: {integrity: sha512-seS2Tj26TBVOC2NIc2rOe2y2ZO7efxITtLZcGSOnHHNOQ7CkiUBfw0Iw2ck6xkIhPwLhKNLS8BO+hEpngQlqzw==} + resolve@1.22.10: resolution: {integrity: sha512-NPRy+/ncIMeDlTAsuqwKIiferiawhefFJtkNSW0qZJEqMEb+qBt/77B/jGeeek+F0uOeN05CDa6HXbbIgtVX4w==} engines: {node: '>= 0.4'} @@ -2907,8 +3702,9 @@ packages: safer-buffer@2.1.2: resolution: {integrity: sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==} - scheduler@0.23.2: - resolution: {integrity: sha512-UOShsPwz7NrMUqhR6t0hWjFduvOzbtv7toDH1/hIrfRNIDBnnBWd0CwJTGvTpngVlmwGCdP9/Zl/tVrDqcuYzQ==} + scslre@0.3.0: + resolution: {integrity: sha512-3A6sD0WYP7+QrjbfNA2FN3FsOaGGFoekCVgTyypy53gPxhbkCIjtO6YWgdrfM+n/8sI8JeXZOIxsHjMTNxQ4nQ==} + engines: {node: ^14.0.0 || >=16.0.0} semver@5.7.2: resolution: {integrity: sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==} @@ -2928,9 +3724,6 @@ packages: engines: {node: '>=10'} hasBin: true - set-cookie-parser@2.7.1: - resolution: {integrity: sha512-IOc8uWeOZgnb3ptbCURJWNjWUPcO3ZnTTdzsurqERrP6nPyv+paC55vJM0LpOlT2ne+Ix+9+CRG1MNLlyZ4GjQ==} - set-function-length@1.2.2: resolution: {integrity: sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==} engines: {node: '>= 0.4'} @@ -2996,10 +3789,16 @@ packages: resolution: {integrity: sha512-FoqMu0NCGBLCcAkS1qA+XJIQTR6/JHfQXl+uGteNCQ76T91DMUjPa9xfmeqMY3z80nLSg9yQmNjK0Px6RWsH/A==} engines: {node: '>=18'} + sisteransi@1.0.5: + resolution: {integrity: sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==} + slash@5.1.0: resolution: {integrity: sha512-ZA6oR3T/pEyuqwMgAKT0/hAv8oAXckzbkmR0UkUosQ+Mc4RxGoJkRmwHgHufaenlyAgE1Mxgpdcrf75y6XcnDg==} engines: {node: '>=14.16'} + slashes@3.0.12: + resolution: {integrity: sha512-Q9VME8WyGkc7pJf6QEkj3wE+2CnvZMI+XJhwdTPR8Z/kWQRXi7boAWLDibRPyHRTUTPx5FaU7MsyrjI3yLB4HA==} + slice-ansi@5.0.0: resolution: {integrity: sha512-FC+lgizVPfie0kkhqUScwRu1O/lF6NOgJmlCgK+/LYxDCTk8sGelYaHDhFcDN+Sn3Cv+3VSa4Byeo+IMCzpMgQ==} engines: {node: '>=12'} @@ -3037,6 +3836,9 @@ packages: spdx-expression-parse@3.0.1: resolution: {integrity: sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==} + spdx-expression-parse@4.0.0: + resolution: {integrity: sha512-Clya5JIij/7C6bRR22+tnGXbc4VKlibKSVj2iHvVeX5iMW7s1SIQlqu699JkODJJIhh/pUu8L0/VLh8xflD+LQ==} + spdx-license-ids@3.0.21: resolution: {integrity: sha512-Bvg/8F5XephndSK3JffaRqdT+gyhfqIPwDHpX80tJrF8QQRYMo8sNMeaZ2Dp5+jhwKnUmIOyFFQfHRkjJm5nXg==} @@ -3047,6 +3849,9 @@ packages: sprintf-js@1.1.3: resolution: {integrity: sha512-Oo+0REFV59/rz3gfJNKQiBlwfHaSESl1pcGyABQsnnIfWOFt6JNj5gCog2U6MLZ//IGYD+nA8nI+mTShREReaA==} + stable-hash@0.0.5: + resolution: {integrity: sha512-+L3ccpzibovGXFK+Ap/f8LOS0ahMrHTf3xu7mMLSpEGU0EO9ucaysSylKo9eRDFNhWve/y275iPmIZ4z39a9iA==} + stdin-discarder@0.2.2: resolution: {integrity: sha512-UhDfHmA92YAlNnCfhmq0VeNL5bDbiZGg7sZ2IvPsXubGkiNa9EC+tUTsjBRsYUAz87btI6/1wf4XoVvQ3uRnmQ==} engines: {node: '>=18'} @@ -3099,10 +3904,18 @@ packages: resolution: {integrity: sha512-aulFJcD6YK8V1G7iRB5tigAP4TsHBZZrOV8pjV++zdUwmeV8uzbY7yn6h9MswN62adStNZFuCIx4haBnRuMDaw==} engines: {node: '>=18'} + strip-indent@4.0.0: + resolution: {integrity: sha512-mnVSV2l+Zv6BLpSD/8V87CW/y9EmmbYzGCIavsnsI6/nwn26DwffM/yztm30Z/I2DY9wdS3vXVCMnHDgZaVNoA==} + engines: {node: '>=12'} + strip-json-comments@2.0.1: resolution: {integrity: sha512-4gB8na07fecVVkOI6Rs4e7T6NOTki5EmL7TUduTs6bu3EdnSycntVJ4re8kgZA+wx9IueI2Y11bfbgwtzuE0KQ==} engines: {node: '>=0.10.0'} + strip-json-comments@3.1.1: + resolution: {integrity: sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==} + engines: {node: '>=8'} + strip-outer@1.0.1: resolution: {integrity: sha512-k55yxKHwaXnpYGsOzg4Vl8+tDrWylxDEpknGjhTiZB8dFRU5rTo9CAzeycivxV3s+zlTKwrs6WxMxR95n26kwg==} engines: {node: '>=0.10.0'} @@ -3114,10 +3927,26 @@ packages: resolution: {integrity: sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==} engines: {node: '>=4'} + supports-color@7.2.0: + resolution: {integrity: sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==} + engines: {node: '>=8'} + supports-preserve-symlinks-flag@1.0.0: resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==} engines: {node: '>= 0.4'} + synckit@0.10.3: + resolution: {integrity: sha512-R1urvuyiTaWfeCggqEvpDJwAlDVdsT9NM+IP//Tk2x7qHCkSvBk/fwFgw/TLAHzZlrAnnazMcRw0ZD8HlYFTEQ==} + engines: {node: ^14.18.0 || >=16.0.0} + + synckit@0.9.2: + resolution: {integrity: sha512-vrozgXDQwYO72vHjUb/HnFbQx1exDjoKzqx23aXEg2a9VIg2TSFZ8FmeZpTjUCFMYw7mpX4BE2SFu8wI7asYsw==} + engines: {node: ^14.18.0 || >=16.0.0} + + tapable@2.2.1: + resolution: {integrity: sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==} + engines: {node: '>=6'} + text-extensions@2.4.0: resolution: {integrity: sha512-te/NtwBwfiNRLf9Ijqx3T0nlqZiQ2XrrtBvu+cLL8ZRrGkO0NHTug8MYFKyoSrv/sHTaSKfilUkizV6XhxMJ3g==} engines: {node: '>=8'} @@ -3140,6 +3969,10 @@ packages: resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==} engines: {node: '>=8.0'} + toml-eslint-parser@0.10.0: + resolution: {integrity: sha512-khrZo4buq4qVmsGzS5yQjKe/WsFvV8fGfOjDQN0q4iy9FjRfPWRgTFrU8u1R2iu/SfWLhY9WnCi4Jhdrcbtg+g==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + totalist@3.0.1: resolution: {integrity: sha512-sf4i37nQ2LBx4m3wB74y+ubopq6W/dIzXg0FDGjsYnZHVa1Da8FH853wlL2gtUhg+xJXjfk3kUZS3BRoQeoQBQ==} engines: {node: '>=6'} @@ -3148,11 +3981,23 @@ packages: resolution: {integrity: sha512-pkonvlKk8/ZuR0D5tLW8ljt5I8kmxp2XKymhepUeOdCEfKpZaktSArkLHZt76OB1ZvO9bssUsDty4SWhLvZpLg==} engines: {node: '>=0.10.0'} + ts-api-utils@2.1.0: + resolution: {integrity: sha512-CUgTZL1irw8u29bzrOD/nH85jqyc74D6SshFgujOIA7osm2Rz7dYH77agkx7H4FBNxDq7Cjf+IjaX/8zwFW+ZQ==} + engines: {node: '>=18.12'} + peerDependencies: + typescript: '>=4.8.4' + tslib@2.8.1: resolution: {integrity: sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==} - turbo-stream@2.4.0: - resolution: {integrity: sha512-FHncC10WpBd2eOmGwpmQsWLDoK4cqsA/UT/GqNoaKOQnT8uzhtCbg3EoUDMvqpOSAI0S26mr0rkjzbOO6S3v1g==} + tsx@4.19.3: + resolution: {integrity: sha512-4H8vUNGNjQ4V2EOoGw005+c+dGuPSnhpPBPHBtsZdGZBk/iJb4kguGlPWaZTZ3q5nMtFOEsY0nRDlh9PJyd6SQ==} + engines: {node: '>=18.0.0'} + hasBin: true + + type-check@0.4.0: + resolution: {integrity: sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==} + engines: {node: '>= 0.8.0'} type-fest@0.21.3: resolution: {integrity: sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==} @@ -3194,6 +4039,9 @@ packages: resolution: {integrity: sha512-nWJ91DjeOkej/TA8pXQ3myruKpKEYgqvpw9lz4OPHj/NWFNluYrjbz9j01CJ8yKQd2g4jFoOkINCTW2I5LEEyw==} engines: {node: '>= 0.4'} + unconfig@7.0.0: + resolution: {integrity: sha512-G5CJSoG6ZTxgzCJblEfgpdRK2tos9+UdD2WtecDUVfImzQ0hFjwpH5RVvGMhP4pRpC9ML7NrC4qBsBl0Ttj35A==} + unconfig@7.3.1: resolution: {integrity: sha512-LH5WL+un92tGAzWS87k7LkAfwpMdm7V0IXG2FxEjZz/QxiIW5J5LkcrKQThj0aRz6+h/lFmKI9EUXmK/T0bcrw==} @@ -3212,6 +4060,18 @@ packages: resolution: {integrity: sha512-+QBBXBCvifc56fsbuxZQ6Sic3wqqc3WWaqxs58gvJrcOuN83HGTCwz3oS5phzU9LthRNE9VrJCFCLUgHeeFnfA==} engines: {node: '>=18'} + unist-util-is@6.0.0: + resolution: {integrity: sha512-2qCTHimwdxLfz+YzdGfkqNlH0tLi9xjTnHddPmJwtIG9MGsdbutfTc4P+haPD7l7Cjxf/WZj+we5qfVPvvxfYw==} + + unist-util-stringify-position@4.0.0: + resolution: {integrity: sha512-0ASV06AAoKCDkS2+xw5RXJywruurpbC4JZSm7nr7MOt1ojAzvyyaO+UxZf18j8FCF6kmzCZKcAgN/yu2gm2XgQ==} + + unist-util-visit-parents@6.0.1: + resolution: {integrity: sha512-L/PqWzfTP9lzzEa6CKs0k2nARxTdZduw3zyh8d2NVBnsyvHjSX4TWse388YrrQKbvI8w20fGjGlhgT96WwKykw==} + + unist-util-visit@5.0.0: + resolution: {integrity: sha512-MR04uvD+07cwl/yhVuVWAtw+3GOR/knlL55Nd/wAdblk27GCVt3lqpTivy/tkJcZoNPzTwS1Y+KMojlLDhoTzg==} + universal-user-agent@7.0.2: resolution: {integrity: sha512-0JCqzSKnStlRRQfCdowvqy3cy0Dvtlb8xecj/H8JFZuCze4rwjPZQOgvFvn0Ws/usCHQFGpyr+pB9adaGwXn4Q==} @@ -3235,6 +4095,9 @@ packages: resolution: {integrity: sha512-8U/MtpkPkkk3Atewj1+RcKIjb5WBimZ/WSLhhR3w6SsIj8XJuKTacSP8g+2JhfSGw0Cb125Y+2zA/IzJZDVbhA==} engines: {node: '>=18.12.0'} + unrs-resolver@1.3.2: + resolution: {integrity: sha512-ZKQBC351Ubw0PY8xWhneIfb6dygTQeUHtCcNGd0QB618zabD/WbFMYdRyJ7xeVT+6G82K5v/oyZO0QSHFtbIuw==} + update-browserslist-db@1.1.3: resolution: {integrity: sha512-UxhIZQ+QInVdunkDAaiazvvT/+fXL5Osr0JZlJulepYu6Jd7qJtDZjlur0emRlT71EN3ScPoE7gvsuIKKNavKw==} hasBin: true @@ -3245,6 +4108,9 @@ packages: resolution: {integrity: sha512-+dwUY4L35XFYEzE+OAL3sarJdUioVovq+8f7lcIJ7wnmnYQV5UD1Y/lcwaMSyaQ6Bj3JMj1XSTjZbNLHn/19yA==} engines: {node: '>=18'} + uri-js@4.4.1: + resolution: {integrity: sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==} + url-join@5.0.0: resolution: {integrity: sha512-n2huDr9h9yzd6exQVnH/jU5mr+Pfx08LRXXZhkLLetAMESRj+anQsTAh940iMrIetKAmry9coFuZQ2jY8/p3WA==} engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} @@ -3253,6 +4119,9 @@ packages: resolution: {integrity: sha512-oCwdVC7mTuWiPyjLUz/COz5TLk6wgp0RCsN+wHZ2Ekneac9w8uuV0njcbbie2ME+Vs+d6duwmYuR3HgQXs1fOg==} engines: {node: '>= 0.4'} + util-deprecate@1.0.2: + resolution: {integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==} + validate-npm-package-license@3.0.4: resolution: {integrity: sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==} @@ -3296,11 +4165,22 @@ packages: yaml: optional: true + vue-eslint-parser@10.1.1: + resolution: {integrity: sha512-bh2Z/Au5slro9QJ3neFYLanZtb1jH+W2bKqGHXAoYD4vZgNG3KeotL7JpPv5xzY4UXUXJl7TrIsnzECH63kd3Q==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + peerDependencies: + eslint: ^8.57.0 || ^9.0.0 + vue-flow-layout@0.1.1: resolution: {integrity: sha512-JdgRRUVrN0Y2GosA0M68DEbKlXMqJ7FQgsK8CjQD2vxvNSqAU6PZEpi4cfcTVtfM2GVOMjHo7GKKLbXxOBqDqA==} peerDependencies: vue: ^3.4.37 + vue-router@4.5.0: + resolution: {integrity: sha512-HDuk+PuH5monfNuY+ct49mNmkCRK4xJAV9Ts4z9UFc4rzdDnxQLyCMGGc8pKhZhHTVzfanpNwB/lwqevcBwI4w==} + peerDependencies: + vue: ^3.2.0 + vue@3.5.13: resolution: {integrity: sha512-wmeiSMxkZCSc+PM2w2VRsOYAZC8GdipNFRTsLSfodVqI9mbejKeXEGr8SckuLnrQPGe3oJN5c3K0vpoU9q/wCQ==} peerDependencies: @@ -3348,6 +4228,10 @@ packages: resolution: {integrity: sha512-MS3BzG8QK33dAyqwxfYJCJ03arkwKaddUOvvnnlFdXLudflsQF6I8yAxrLBeQk4yO8wjdH/+ax0YzxJEDrOftg==} engines: {node: '>=18'} + word-wrap@1.2.5: + resolution: {integrity: sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==} + engines: {node: '>=0.10.0'} + wrap-ansi@6.2.0: resolution: {integrity: sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==} engines: {node: '>=8'} @@ -3367,12 +4251,17 @@ packages: resolution: {integrity: sha512-GCPAHLvrIH13+c0SuacwvRYj2SxJXQ4kaVTT5xgL3kPrz56XxkF21IGhjSE1+W0aw7gpBWRGXLCPnPby6lSpmQ==} engines: {node: '>=12'} + xml-name-validator@4.0.0: + resolution: {integrity: sha512-ICP2e+jsHvAj2E2lIHxa5tjXRlKDJo4IdvPvCXbXQGdzSfmSpNVyIKMvoZHjDY9DP0zV17iI85o90vRFXNccRw==} + engines: {node: '>=12'} + y18n@5.0.8: resolution: {integrity: sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==} engines: {node: '>=10'} - yallist@3.1.1: - resolution: {integrity: sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==} + yaml-eslint-parser@1.3.0: + resolution: {integrity: sha512-E/+VitOorXSLiAqtTd7Yqax0/pAS3xaYMP+AUUJGOK1OZG3rhcj9fcJOM5HJ2VrP1FrStVCWr1muTfQCdj4tAA==} + engines: {node: ^14.17.0 || >=16.0.0} yaml@2.7.0: resolution: {integrity: sha512-+hSoy/QHluxmC9kCIJyL/uyFmLmc+e5CFR5Wa+bpIhIj85LVb9ZH2nVnqrHoSvKogwODv0ClqZkmiSSaIH5LTA==} @@ -3387,6 +4276,10 @@ packages: resolution: {integrity: sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==} engines: {node: '>=12'} + yocto-queue@0.1.0: + resolution: {integrity: sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==} + engines: {node: '>=10'} + yocto-queue@1.2.1: resolution: {integrity: sha512-AyeEbWOu/TAXdxlV9wmGcR0+yh2j3vYPGOECcIj2S7MkrLyC7ne+oye2BKTItt0ii2PHk4cDy+95+LshzbXnGg==} engines: {node: '>=12.20'} @@ -3399,6 +4292,9 @@ packages: resolution: {integrity: sha512-GQHQqAopRhwU8Kt1DDM8NjibDXHC8eoh1erhGAJPEyveY9qqVeXvVikNKrDz69sHowPMorbPUrH/mx8c50eiBQ==} engines: {node: '>=18'} + zwitch@2.0.4: + resolution: {integrity: sha512-bXE4cR/kVZhKZX/RjPEflHaKVhUVl85noU3v6b8apfQEc1x4A+zBxjZ4lN8LqGd6WZ3dl98pY4o717VFmoPp+A==} + snapshots: '@ampproject/remapping@2.3.0': @@ -3406,6 +4302,56 @@ snapshots: '@jridgewell/gen-mapping': 0.3.8 '@jridgewell/trace-mapping': 0.3.25 + '@antfu/eslint-config@4.11.0(@typescript-eslint/utils@8.28.0(eslint@9.23.0(jiti@2.4.2))(typescript@5.6.3))(@unocss/eslint-plugin@66.0.0(eslint@9.23.0(jiti@2.4.2))(typescript@5.6.3))(@vue/compiler-sfc@3.5.13)(eslint-plugin-format@1.0.1(eslint@9.23.0(jiti@2.4.2)))(eslint@9.23.0(jiti@2.4.2))(typescript@5.6.3)': + dependencies: + '@antfu/install-pkg': 1.0.0 + '@clack/prompts': 0.10.0 + '@eslint-community/eslint-plugin-eslint-comments': 4.4.1(eslint@9.23.0(jiti@2.4.2)) + '@eslint/markdown': 6.3.0 + '@stylistic/eslint-plugin': 4.2.0(eslint@9.23.0(jiti@2.4.2))(typescript@5.6.3) + '@typescript-eslint/eslint-plugin': 8.28.0(@typescript-eslint/parser@8.28.0(eslint@9.23.0(jiti@2.4.2))(typescript@5.6.3))(eslint@9.23.0(jiti@2.4.2))(typescript@5.6.3) + '@typescript-eslint/parser': 8.28.0(eslint@9.23.0(jiti@2.4.2))(typescript@5.6.3) + '@vitest/eslint-plugin': 1.1.38(@typescript-eslint/utils@8.28.0(eslint@9.23.0(jiti@2.4.2))(typescript@5.6.3))(eslint@9.23.0(jiti@2.4.2))(typescript@5.6.3) + ansis: 3.17.0 + cac: 6.7.14 + eslint: 9.23.0(jiti@2.4.2) + eslint-config-flat-gitignore: 2.1.0(eslint@9.23.0(jiti@2.4.2)) + eslint-flat-config-utils: 2.0.1 + eslint-merge-processors: 2.0.0(eslint@9.23.0(jiti@2.4.2)) + eslint-plugin-antfu: 3.1.1(eslint@9.23.0(jiti@2.4.2)) + eslint-plugin-command: 3.2.0(eslint@9.23.0(jiti@2.4.2)) + eslint-plugin-import-x: 4.9.3(eslint@9.23.0(jiti@2.4.2))(typescript@5.6.3) + eslint-plugin-jsdoc: 50.6.9(eslint@9.23.0(jiti@2.4.2)) + eslint-plugin-jsonc: 2.20.0(eslint@9.23.0(jiti@2.4.2)) + eslint-plugin-n: 17.17.0(eslint@9.23.0(jiti@2.4.2)) + eslint-plugin-no-only-tests: 3.3.0 + eslint-plugin-perfectionist: 4.10.1(eslint@9.23.0(jiti@2.4.2))(typescript@5.6.3) + eslint-plugin-pnpm: 0.3.1(eslint@9.23.0(jiti@2.4.2)) + eslint-plugin-regexp: 2.7.0(eslint@9.23.0(jiti@2.4.2)) + eslint-plugin-toml: 0.12.0(eslint@9.23.0(jiti@2.4.2)) + eslint-plugin-unicorn: 57.0.0(eslint@9.23.0(jiti@2.4.2)) + eslint-plugin-unused-imports: 4.1.4(@typescript-eslint/eslint-plugin@8.28.0(@typescript-eslint/parser@8.28.0(eslint@9.23.0(jiti@2.4.2))(typescript@5.6.3))(eslint@9.23.0(jiti@2.4.2))(typescript@5.6.3))(eslint@9.23.0(jiti@2.4.2)) + eslint-plugin-vue: 10.0.0(eslint@9.23.0(jiti@2.4.2))(vue-eslint-parser@10.1.1(eslint@9.23.0(jiti@2.4.2))) + eslint-plugin-yml: 1.17.0(eslint@9.23.0(jiti@2.4.2)) + eslint-processor-vue-blocks: 2.0.0(@vue/compiler-sfc@3.5.13)(eslint@9.23.0(jiti@2.4.2)) + globals: 16.0.0 + jsonc-eslint-parser: 2.4.0 + local-pkg: 1.1.1 + parse-gitignore: 2.0.0 + toml-eslint-parser: 0.10.0 + vue-eslint-parser: 10.1.1(eslint@9.23.0(jiti@2.4.2)) + yaml-eslint-parser: 1.3.0 + optionalDependencies: + '@unocss/eslint-plugin': 66.0.0(eslint@9.23.0(jiti@2.4.2))(typescript@5.6.3) + eslint-plugin-format: 1.0.1(eslint@9.23.0(jiti@2.4.2)) + transitivePeerDependencies: + - '@eslint/json' + - '@typescript-eslint/utils' + - '@vue/compiler-sfc' + - supports-color + - typescript + - vitest + '@antfu/install-pkg@1.0.0': dependencies: package-manager-detector: 0.2.11 @@ -3419,144 +4365,29 @@ snapshots: js-tokens: 4.0.0 picocolors: 1.1.1 - '@babel/compat-data@7.26.8': {} - - '@babel/core@7.26.10': - dependencies: - '@ampproject/remapping': 2.3.0 - '@babel/code-frame': 7.26.2 - '@babel/generator': 7.27.0 - '@babel/helper-compilation-targets': 7.27.0 - '@babel/helper-module-transforms': 7.26.0(@babel/core@7.26.10) - '@babel/helpers': 7.27.0 - '@babel/parser': 7.27.0 - '@babel/template': 7.27.0 - '@babel/traverse': 7.27.0 - '@babel/types': 7.27.0 - convert-source-map: 2.0.0 - debug: 4.4.0 - gensync: 1.0.0-beta.2 - json5: 2.2.3 - semver: 6.3.1 - transitivePeerDependencies: - - supports-color - - '@babel/generator@7.27.0': - dependencies: - '@babel/parser': 7.27.0 - '@babel/types': 7.27.0 - '@jridgewell/gen-mapping': 0.3.8 - '@jridgewell/trace-mapping': 0.3.25 - jsesc: 3.1.0 - - '@babel/helper-compilation-targets@7.27.0': - dependencies: - '@babel/compat-data': 7.26.8 - '@babel/helper-validator-option': 7.25.9 - browserslist: 4.24.4 - lru-cache: 5.1.1 - semver: 6.3.1 - - '@babel/helper-module-imports@7.25.9': - dependencies: - '@babel/traverse': 7.27.0 - '@babel/types': 7.27.0 - transitivePeerDependencies: - - supports-color - - '@babel/helper-module-transforms@7.26.0(@babel/core@7.26.10)': - dependencies: - '@babel/core': 7.26.10 - '@babel/helper-module-imports': 7.25.9 - '@babel/helper-validator-identifier': 7.25.9 - '@babel/traverse': 7.27.0 - transitivePeerDependencies: - - supports-color - - '@babel/helper-plugin-utils@7.26.5': {} - '@babel/helper-string-parser@7.25.9': {} '@babel/helper-validator-identifier@7.25.9': {} - '@babel/helper-validator-option@7.25.9': {} - - '@babel/helpers@7.27.0': - dependencies: - '@babel/template': 7.27.0 - '@babel/types': 7.27.0 - '@babel/parser@7.27.0': dependencies: '@babel/types': 7.27.0 - '@babel/plugin-transform-react-jsx-self@7.25.9(@babel/core@7.26.10)': - dependencies: - '@babel/core': 7.26.10 - '@babel/helper-plugin-utils': 7.26.5 - - '@babel/plugin-transform-react-jsx-source@7.25.9(@babel/core@7.26.10)': - dependencies: - '@babel/core': 7.26.10 - '@babel/helper-plugin-utils': 7.26.5 - - '@babel/template@7.27.0': - dependencies: - '@babel/code-frame': 7.26.2 - '@babel/parser': 7.27.0 - '@babel/types': 7.27.0 - - '@babel/traverse@7.27.0': - dependencies: - '@babel/code-frame': 7.26.2 - '@babel/generator': 7.27.0 - '@babel/parser': 7.27.0 - '@babel/template': 7.27.0 - '@babel/types': 7.27.0 - debug: 4.4.0 - globals: 11.12.0 - transitivePeerDependencies: - - supports-color - '@babel/types@7.27.0': dependencies: '@babel/helper-string-parser': 7.25.9 '@babel/helper-validator-identifier': 7.25.9 - '@biomejs/biome@1.9.4': - optionalDependencies: - '@biomejs/cli-darwin-arm64': 1.9.4 - '@biomejs/cli-darwin-x64': 1.9.4 - '@biomejs/cli-linux-arm64': 1.9.4 - '@biomejs/cli-linux-arm64-musl': 1.9.4 - '@biomejs/cli-linux-x64': 1.9.4 - '@biomejs/cli-linux-x64-musl': 1.9.4 - '@biomejs/cli-win32-arm64': 1.9.4 - '@biomejs/cli-win32-x64': 1.9.4 + '@clack/core@0.4.1': + dependencies: + picocolors: 1.1.1 + sisteransi: 1.0.5 - '@biomejs/cli-darwin-arm64@1.9.4': - optional: true - - '@biomejs/cli-darwin-x64@1.9.4': - optional: true - - '@biomejs/cli-linux-arm64-musl@1.9.4': - optional: true - - '@biomejs/cli-linux-arm64@1.9.4': - optional: true - - '@biomejs/cli-linux-x64-musl@1.9.4': - optional: true - - '@biomejs/cli-linux-x64@1.9.4': - optional: true - - '@biomejs/cli-win32-arm64@1.9.4': - optional: true - - '@biomejs/cli-win32-x64@1.9.4': - optional: true + '@clack/prompts@0.10.0': + dependencies: + '@clack/core': 0.4.1 + picocolors: 1.1.1 + sisteransi: 1.0.5 '@commitlint/cli@19.8.0(@types/node@22.13.14)(typescript@5.6.3)': dependencies: @@ -3668,6 +4499,43 @@ snapshots: '@types/conventional-commits-parser': 5.0.1 chalk: 5.4.1 + '@dprint/formatter@0.3.0': {} + + '@dprint/markdown@0.17.8': {} + + '@dprint/toml@0.6.4': {} + + '@emnapi/core@1.3.1': + dependencies: + '@emnapi/wasi-threads': 1.0.1 + tslib: 2.8.1 + optional: true + + '@emnapi/runtime@1.3.1': + dependencies: + tslib: 2.8.1 + optional: true + + '@emnapi/wasi-threads@1.0.1': + dependencies: + tslib: 2.8.1 + optional: true + + '@es-joy/jsdoccomment@0.49.0': + dependencies: + comment-parser: 1.4.1 + esquery: 1.6.0 + jsdoc-type-pratt-parser: 4.1.0 + + '@es-joy/jsdoccomment@0.50.0': + dependencies: + '@types/eslint': 9.6.1 + '@types/estree': 1.0.7 + '@typescript-eslint/types': 8.28.0 + comment-parser: 1.4.1 + esquery: 1.6.0 + jsdoc-type-pratt-parser: 4.1.0 + '@esbuild/aix-ppc64@0.25.1': optional: true @@ -3743,6 +4611,87 @@ snapshots: '@esbuild/win32-x64@0.25.1': optional: true + '@eslint-community/eslint-plugin-eslint-comments@4.4.1(eslint@9.23.0(jiti@2.4.2))': + dependencies: + escape-string-regexp: 4.0.0 + eslint: 9.23.0(jiti@2.4.2) + ignore: 5.3.2 + + '@eslint-community/eslint-utils@4.5.1(eslint@9.23.0(jiti@2.4.2))': + dependencies: + eslint: 9.23.0(jiti@2.4.2) + eslint-visitor-keys: 3.4.3 + + '@eslint-community/regexpp@4.12.1': {} + + '@eslint/compat@1.2.7(eslint@9.23.0(jiti@2.4.2))': + optionalDependencies: + eslint: 9.23.0(jiti@2.4.2) + + '@eslint/config-array@0.19.2': + dependencies: + '@eslint/object-schema': 2.1.6 + debug: 4.4.0 + minimatch: 3.1.2 + transitivePeerDependencies: + - supports-color + + '@eslint/config-helpers@0.2.0': {} + + '@eslint/core@0.10.0': + dependencies: + '@types/json-schema': 7.0.15 + + '@eslint/core@0.12.0': + dependencies: + '@types/json-schema': 7.0.15 + + '@eslint/eslintrc@3.3.1': + dependencies: + ajv: 6.12.6 + debug: 4.4.0 + espree: 10.3.0 + globals: 14.0.0 + ignore: 5.3.2 + import-fresh: 3.3.1 + js-yaml: 4.1.0 + minimatch: 3.1.2 + strip-json-comments: 3.1.1 + transitivePeerDependencies: + - supports-color + + '@eslint/js@9.23.0': {} + + '@eslint/markdown@6.3.0': + dependencies: + '@eslint/core': 0.10.0 + '@eslint/plugin-kit': 0.2.7 + mdast-util-from-markdown: 2.0.2 + mdast-util-gfm: 3.1.0 + micromark-extension-gfm: 3.0.0 + transitivePeerDependencies: + - supports-color + + '@eslint/object-schema@2.1.6': {} + + '@eslint/plugin-kit@0.2.7': + dependencies: + '@eslint/core': 0.12.0 + levn: 0.4.1 + + '@humanfs/core@0.19.1': {} + + '@humanfs/node@0.16.6': + dependencies: + '@humanfs/core': 0.19.1 + '@humanwhocodes/retry': 0.3.1 + + '@humanwhocodes/module-importer@1.0.1': {} + + '@humanwhocodes/retry@0.3.1': {} + + '@humanwhocodes/retry@0.4.2': {} + '@iarna/toml@2.2.5': {} '@iconify/types@2.0.0': {} @@ -3893,6 +4842,13 @@ snapshots: '@jridgewell/resolve-uri': 3.1.2 '@jridgewell/sourcemap-codec': 1.5.0 + '@napi-rs/wasm-runtime@0.2.7': + dependencies: + '@emnapi/core': 1.3.1 + '@emnapi/runtime': 1.3.1 + '@tybys/wasm-util': 0.9.0 + optional: true + '@nodelib/fs.scandir@2.1.5': dependencies: '@nodelib/fs.stat': 2.0.5 @@ -4200,6 +5156,10 @@ snapshots: eventemitter3: 3.1.2 url: 0.11.4 + '@pkgr/core@0.1.2': {} + + '@pkgr/core@0.2.0': {} + '@pnpm/config.env-replace@1.1.0': {} '@pnpm/network.ca-file@1.0.2': @@ -4284,6 +5244,18 @@ snapshots: '@sindresorhus/merge-streams@4.0.0': {} + '@stylistic/eslint-plugin@4.2.0(eslint@9.23.0(jiti@2.4.2))(typescript@5.6.3)': + dependencies: + '@typescript-eslint/utils': 8.28.0(eslint@9.23.0(jiti@2.4.2))(typescript@5.6.3) + eslint: 9.23.0(jiti@2.4.2) + eslint-visitor-keys: 4.2.0 + espree: 10.3.0 + estraverse: 5.3.0 + picomatch: 4.0.2 + transitivePeerDependencies: + - supports-color + - typescript + '@tauri-apps/api@2.4.0': {} '@tauri-apps/cli-darwin-arm64@2.4.0': @@ -4333,6 +5305,10 @@ snapshots: '@tauri-apps/cli-win32-ia32-msvc': 2.4.0 '@tauri-apps/cli-win32-x64-msvc': 2.4.0 + '@tauri-apps/plugin-opener@2.2.6': + dependencies: + '@tauri-apps/api': 2.4.0 + '@tauri-apps/plugin-os@2.2.1': dependencies: '@tauri-apps/api': 2.4.0 @@ -4343,63 +5319,136 @@ snapshots: '@tootallnate/quickjs-emscripten@0.23.0': {} - '@types/babel__core@7.20.5': + '@tybys/wasm-util@0.9.0': dependencies: - '@babel/parser': 7.27.0 - '@babel/types': 7.27.0 - '@types/babel__generator': 7.6.8 - '@types/babel__template': 7.4.4 - '@types/babel__traverse': 7.20.7 - - '@types/babel__generator@7.6.8': - dependencies: - '@babel/types': 7.27.0 - - '@types/babel__template@7.4.4': - dependencies: - '@babel/parser': 7.27.0 - '@babel/types': 7.27.0 - - '@types/babel__traverse@7.20.7': - dependencies: - '@babel/types': 7.27.0 + tslib: 2.8.1 + optional: true '@types/conventional-commits-parser@5.0.1': dependencies: '@types/node': 22.13.14 - '@types/cookie@0.6.0': {} + '@types/debug@4.1.12': + dependencies: + '@types/ms': 2.1.0 + + '@types/doctrine@0.0.9': {} '@types/earcut@2.1.4': {} + '@types/eslint@9.6.1': + dependencies: + '@types/estree': 1.0.7 + '@types/json-schema': 7.0.15 + '@types/estree@1.0.6': {} + '@types/estree@1.0.7': {} + + '@types/json-schema@7.0.15': {} + + '@types/mdast@4.0.4': + dependencies: + '@types/unist': 3.0.3 + + '@types/ms@2.1.0': {} + '@types/node@22.13.14': dependencies: undici-types: 6.20.0 + '@types/normalize-package-data@2.4.4': {} + '@types/offscreencanvas@2019.7.3': {} '@types/parse-path@7.0.3': {} - '@types/prop-types@15.7.14': {} + '@types/unist@3.0.3': {} - '@types/react-dom@18.3.5(@types/react@18.3.20)': + '@typescript-eslint/eslint-plugin@8.28.0(@typescript-eslint/parser@8.28.0(eslint@9.23.0(jiti@2.4.2))(typescript@5.6.3))(eslint@9.23.0(jiti@2.4.2))(typescript@5.6.3)': dependencies: - '@types/react': 18.3.20 + '@eslint-community/regexpp': 4.12.1 + '@typescript-eslint/parser': 8.28.0(eslint@9.23.0(jiti@2.4.2))(typescript@5.6.3) + '@typescript-eslint/scope-manager': 8.28.0 + '@typescript-eslint/type-utils': 8.28.0(eslint@9.23.0(jiti@2.4.2))(typescript@5.6.3) + '@typescript-eslint/utils': 8.28.0(eslint@9.23.0(jiti@2.4.2))(typescript@5.6.3) + '@typescript-eslint/visitor-keys': 8.28.0 + eslint: 9.23.0(jiti@2.4.2) + graphemer: 1.4.0 + ignore: 5.3.2 + natural-compare: 1.4.0 + ts-api-utils: 2.1.0(typescript@5.6.3) + typescript: 5.6.3 + transitivePeerDependencies: + - supports-color - '@types/react@18.3.20': + '@typescript-eslint/parser@8.28.0(eslint@9.23.0(jiti@2.4.2))(typescript@5.6.3)': dependencies: - '@types/prop-types': 15.7.14 - csstype: 3.1.3 + '@typescript-eslint/scope-manager': 8.28.0 + '@typescript-eslint/types': 8.28.0 + '@typescript-eslint/typescript-estree': 8.28.0(typescript@5.6.3) + '@typescript-eslint/visitor-keys': 8.28.0 + debug: 4.4.0 + eslint: 9.23.0(jiti@2.4.2) + typescript: 5.6.3 + transitivePeerDependencies: + - supports-color - '@unocss/astro@66.1.0-beta.7(vite@6.2.3(@types/node@22.13.14)(jiti@2.4.2)(yaml@2.7.0))(vue@3.5.13(typescript@5.6.3))': + '@typescript-eslint/scope-manager@8.28.0': + dependencies: + '@typescript-eslint/types': 8.28.0 + '@typescript-eslint/visitor-keys': 8.28.0 + + '@typescript-eslint/type-utils@8.28.0(eslint@9.23.0(jiti@2.4.2))(typescript@5.6.3)': + dependencies: + '@typescript-eslint/typescript-estree': 8.28.0(typescript@5.6.3) + '@typescript-eslint/utils': 8.28.0(eslint@9.23.0(jiti@2.4.2))(typescript@5.6.3) + debug: 4.4.0 + eslint: 9.23.0(jiti@2.4.2) + ts-api-utils: 2.1.0(typescript@5.6.3) + typescript: 5.6.3 + transitivePeerDependencies: + - supports-color + + '@typescript-eslint/types@8.28.0': {} + + '@typescript-eslint/typescript-estree@8.28.0(typescript@5.6.3)': + dependencies: + '@typescript-eslint/types': 8.28.0 + '@typescript-eslint/visitor-keys': 8.28.0 + debug: 4.4.0 + fast-glob: 3.3.3 + is-glob: 4.0.3 + minimatch: 9.0.5 + semver: 7.7.1 + ts-api-utils: 2.1.0(typescript@5.6.3) + typescript: 5.6.3 + transitivePeerDependencies: + - supports-color + + '@typescript-eslint/utils@8.28.0(eslint@9.23.0(jiti@2.4.2))(typescript@5.6.3)': + dependencies: + '@eslint-community/eslint-utils': 4.5.1(eslint@9.23.0(jiti@2.4.2)) + '@typescript-eslint/scope-manager': 8.28.0 + '@typescript-eslint/types': 8.28.0 + '@typescript-eslint/typescript-estree': 8.28.0(typescript@5.6.3) + eslint: 9.23.0(jiti@2.4.2) + typescript: 5.6.3 + transitivePeerDependencies: + - supports-color + + '@typescript-eslint/visitor-keys@8.28.0': + dependencies: + '@typescript-eslint/types': 8.28.0 + eslint-visitor-keys: 4.2.0 + + '@unocss/astro@66.1.0-beta.7(vite@6.2.3(@types/node@22.13.14)(jiti@2.4.2)(tsx@4.19.3)(yaml@2.7.0))(vue@3.5.13(typescript@5.6.3))': dependencies: '@unocss/core': 66.1.0-beta.7 '@unocss/reset': 66.1.0-beta.7 - '@unocss/vite': 66.1.0-beta.7(vite@6.2.3(@types/node@22.13.14)(jiti@2.4.2)(yaml@2.7.0))(vue@3.5.13(typescript@5.6.3)) + '@unocss/vite': 66.1.0-beta.7(vite@6.2.3(@types/node@22.13.14)(jiti@2.4.2)(tsx@4.19.3)(yaml@2.7.0))(vue@3.5.13(typescript@5.6.3)) optionalDependencies: - vite: 6.2.3(@types/node@22.13.14)(jiti@2.4.2)(yaml@2.7.0) + vite: 6.2.3(@types/node@22.13.14)(jiti@2.4.2)(tsx@4.19.3)(yaml@2.7.0) transitivePeerDependencies: - vue @@ -4419,13 +5468,33 @@ snapshots: tinyglobby: 0.2.12 unplugin-utils: 0.2.4 + '@unocss/config@66.0.0': + dependencies: + '@unocss/core': 66.0.0 + unconfig: 7.0.0 + '@unocss/config@66.1.0-beta.7': dependencies: '@unocss/core': 66.1.0-beta.7 unconfig: 7.3.1 + '@unocss/core@66.0.0': {} + '@unocss/core@66.1.0-beta.7': {} + '@unocss/eslint-plugin@66.0.0(eslint@9.23.0(jiti@2.4.2))(typescript@5.6.3)': + dependencies: + '@typescript-eslint/utils': 8.28.0(eslint@9.23.0(jiti@2.4.2))(typescript@5.6.3) + '@unocss/config': 66.0.0 + '@unocss/core': 66.0.0 + '@unocss/rule-utils': 66.0.0 + magic-string: 0.30.17 + synckit: 0.9.2 + transitivePeerDependencies: + - eslint + - supports-color + - typescript + '@unocss/extractor-arbitrary-variants@66.1.0-beta.7': dependencies: '@unocss/core': 66.1.0-beta.7 @@ -4511,6 +5580,11 @@ snapshots: '@unocss/reset@66.1.0-beta.7': {} + '@unocss/rule-utils@66.0.0': + dependencies: + '@unocss/core': 66.0.0 + magic-string: 0.30.17 + '@unocss/rule-utils@66.1.0-beta.7': dependencies: '@unocss/core': 66.1.0-beta.7 @@ -4534,7 +5608,7 @@ snapshots: dependencies: '@unocss/core': 66.1.0-beta.7 - '@unocss/vite@66.1.0-beta.7(vite@6.2.3(@types/node@22.13.14)(jiti@2.4.2)(yaml@2.7.0))(vue@3.5.13(typescript@5.6.3))': + '@unocss/vite@66.1.0-beta.7(vite@6.2.3(@types/node@22.13.14)(jiti@2.4.2)(tsx@4.19.3)(yaml@2.7.0))(vue@3.5.13(typescript@5.6.3))': dependencies: '@ampproject/remapping': 2.3.0 '@unocss/config': 66.1.0-beta.7 @@ -4544,20 +5618,68 @@ snapshots: magic-string: 0.30.17 tinyglobby: 0.2.12 unplugin-utils: 0.2.4 - vite: 6.2.3(@types/node@22.13.14)(jiti@2.4.2)(yaml@2.7.0) + vite: 6.2.3(@types/node@22.13.14)(jiti@2.4.2)(tsx@4.19.3)(yaml@2.7.0) transitivePeerDependencies: - vue - '@vitejs/plugin-react@4.3.4(vite@6.2.3(@types/node@22.13.14)(jiti@2.4.2)(yaml@2.7.0))': + '@unrs/resolver-binding-darwin-arm64@1.3.2': + optional: true + + '@unrs/resolver-binding-darwin-x64@1.3.2': + optional: true + + '@unrs/resolver-binding-freebsd-x64@1.3.2': + optional: true + + '@unrs/resolver-binding-linux-arm-gnueabihf@1.3.2': + optional: true + + '@unrs/resolver-binding-linux-arm-musleabihf@1.3.2': + optional: true + + '@unrs/resolver-binding-linux-arm64-gnu@1.3.2': + optional: true + + '@unrs/resolver-binding-linux-arm64-musl@1.3.2': + optional: true + + '@unrs/resolver-binding-linux-ppc64-gnu@1.3.2': + optional: true + + '@unrs/resolver-binding-linux-s390x-gnu@1.3.2': + optional: true + + '@unrs/resolver-binding-linux-x64-gnu@1.3.2': + optional: true + + '@unrs/resolver-binding-linux-x64-musl@1.3.2': + optional: true + + '@unrs/resolver-binding-wasm32-wasi@1.3.2': dependencies: - '@babel/core': 7.26.10 - '@babel/plugin-transform-react-jsx-self': 7.25.9(@babel/core@7.26.10) - '@babel/plugin-transform-react-jsx-source': 7.25.9(@babel/core@7.26.10) - '@types/babel__core': 7.20.5 - react-refresh: 0.14.2 - vite: 6.2.3(@types/node@22.13.14)(jiti@2.4.2)(yaml@2.7.0) - transitivePeerDependencies: - - supports-color + '@napi-rs/wasm-runtime': 0.2.7 + optional: true + + '@unrs/resolver-binding-win32-arm64-msvc@1.3.2': + optional: true + + '@unrs/resolver-binding-win32-ia32-msvc@1.3.2': + optional: true + + '@unrs/resolver-binding-win32-x64-msvc@1.3.2': + optional: true + + '@vitejs/plugin-vue@5.2.3(vite@6.2.3(@types/node@22.13.14)(jiti@2.4.2)(tsx@4.19.3)(yaml@2.7.0))(vue@3.5.13(typescript@5.6.3))': + dependencies: + vite: 6.2.3(@types/node@22.13.14)(jiti@2.4.2)(tsx@4.19.3)(yaml@2.7.0) + vue: 3.5.13(typescript@5.6.3) + + '@vitest/eslint-plugin@1.1.38(@typescript-eslint/utils@8.28.0(eslint@9.23.0(jiti@2.4.2))(typescript@5.6.3))(eslint@9.23.0(jiti@2.4.2))(typescript@5.6.3)': + dependencies: + '@typescript-eslint/utils': 8.28.0(eslint@9.23.0(jiti@2.4.2))(typescript@5.6.3) + eslint: 9.23.0(jiti@2.4.2) + optionalDependencies: + typescript: 5.6.3 '@vue/compiler-core@3.5.13': dependencies: @@ -4589,6 +5711,8 @@ snapshots: '@vue/compiler-dom': 3.5.13 '@vue/shared': 3.5.13 + '@vue/devtools-api@6.6.4': {} + '@vue/reactivity@3.5.13': dependencies: '@vue/shared': 3.5.13 @@ -4618,10 +5742,21 @@ snapshots: jsonparse: 1.3.1 through: 2.3.8 + acorn-jsx@5.3.2(acorn@8.14.1): + dependencies: + acorn: 8.14.1 + acorn@8.14.1: {} agent-base@7.1.3: {} + ajv@6.12.6: + dependencies: + fast-deep-equal: 3.1.3 + fast-json-stable-stringify: 2.1.0 + json-schema-traverse: 0.4.1 + uri-js: 4.4.1 + ajv@8.17.1: dependencies: fast-deep-equal: 3.1.3 @@ -4655,11 +5790,15 @@ snapshots: ansi-styles@6.2.1: {} + ansis@3.17.0: {} + anymatch@3.1.3: dependencies: normalize-path: 3.0.0 picomatch: 2.3.1 + are-docs-informative@0.0.2: {} + argparse@2.0.1: {} array-buffer-byte-length@1.0.2: @@ -4716,6 +5855,8 @@ snapshots: binary-extensions@2.3.0: {} + boolbase@1.0.0: {} + boxen@8.0.1: dependencies: ansi-align: 3.0.1 @@ -4732,6 +5873,10 @@ snapshots: balanced-match: 1.0.2 concat-map: 0.0.1 + brace-expansion@2.0.1: + dependencies: + balanced-match: 1.0.2 + braces@3.0.3: dependencies: fill-range: 7.1.1 @@ -4743,6 +5888,8 @@ snapshots: node-releases: 2.0.19 update-browserslist-db: 1.1.3(browserslist@4.24.4) + builtin-modules@4.0.0: {} + bundle-name@4.1.0: dependencies: run-applescript: 7.0.0 @@ -4772,14 +5919,23 @@ snapshots: caniuse-lite@1.0.30001707: {} + ccount@2.0.1: {} + chalk@2.4.2: dependencies: ansi-styles: 3.2.1 escape-string-regexp: 1.0.5 supports-color: 5.5.0 + chalk@4.1.2: + dependencies: + ansi-styles: 4.3.0 + supports-color: 7.2.0 + chalk@5.4.1: {} + character-entities@2.0.2: {} + chardet@0.7.0: {} chokidar@3.6.0: @@ -4796,6 +5952,10 @@ snapshots: ci-info@4.2.0: {} + clean-regexp@1.0.0: + dependencies: + escape-string-regexp: 1.0.5 + cli-boxes@3.0.0: {} cli-cursor@5.0.0: @@ -4835,6 +5995,8 @@ snapshots: commander@2.20.3: {} + comment-parser@1.4.1: {} + commondir@1.0.1: {} compare-func@2.0.0: @@ -4877,9 +6039,9 @@ snapshots: meow: 12.1.1 split2: 4.2.0 - convert-source-map@2.0.0: {} - - cookie@1.0.2: {} + core-js-compat@3.41.0: + dependencies: + browserslist: 4.24.4 cosmiconfig-typescript-loader@6.1.0(@types/node@22.13.14)(cosmiconfig@9.0.0(typescript@5.6.3))(typescript@5.6.3): dependencies: @@ -4916,6 +6078,8 @@ snapshots: mdn-data: 2.12.2 source-map-js: 1.2.1 + cssesc@3.0.0: {} + csstype@3.1.3: {} dargs@8.1.0: {} @@ -4940,12 +6104,22 @@ snapshots: es-errors: 1.3.0 is-data-view: 1.0.2 + debug@3.2.7: + dependencies: + ms: 2.1.3 + debug@4.4.0: dependencies: ms: 2.1.3 + decode-named-character-reference@1.1.0: + dependencies: + character-entities: 2.0.2 + deep-extend@0.6.0: {} + deep-is@0.1.4: {} + default-browser-id@5.0.0: {} default-browser@5.2.1: @@ -4975,8 +6149,18 @@ snapshots: escodegen: 2.1.0 esprima: 4.0.1 + dequal@2.0.3: {} + destr@2.0.3: {} + devlop@1.1.0: + dependencies: + dequal: 2.0.3 + + doctrine@3.0.0: + dependencies: + esutils: 2.0.3 + dot-prop@5.3.0: dependencies: is-obj: 2.0.0 @@ -5003,6 +6187,11 @@ snapshots: emoji-regex@8.0.0: {} + enhanced-resolve@5.18.1: + dependencies: + graceful-fs: 4.2.11 + tapable: 2.2.1 + entities@4.5.0: {} env-paths@2.2.1: {} @@ -5071,6 +6260,8 @@ snapshots: es-errors@1.3.0: {} + es-module-lexer@1.6.0: {} + es-object-atoms@1.1.1: dependencies: es-errors: 1.3.0 @@ -5122,6 +6313,10 @@ snapshots: escape-string-regexp@1.0.5: {} + escape-string-regexp@4.0.0: {} + + escape-string-regexp@5.0.0: {} + escodegen@2.1.0: dependencies: esprima: 4.0.1 @@ -5130,8 +6325,308 @@ snapshots: optionalDependencies: source-map: 0.6.1 + eslint-compat-utils@0.5.1(eslint@9.23.0(jiti@2.4.2)): + dependencies: + eslint: 9.23.0(jiti@2.4.2) + semver: 7.7.1 + + eslint-compat-utils@0.6.4(eslint@9.23.0(jiti@2.4.2)): + dependencies: + eslint: 9.23.0(jiti@2.4.2) + semver: 7.7.1 + + eslint-config-flat-gitignore@2.1.0(eslint@9.23.0(jiti@2.4.2)): + dependencies: + '@eslint/compat': 1.2.7(eslint@9.23.0(jiti@2.4.2)) + eslint: 9.23.0(jiti@2.4.2) + + eslint-flat-config-utils@2.0.1: + dependencies: + pathe: 2.0.3 + + eslint-formatting-reporter@0.0.0(eslint@9.23.0(jiti@2.4.2)): + dependencies: + eslint: 9.23.0(jiti@2.4.2) + prettier-linter-helpers: 1.0.0 + + eslint-import-resolver-node@0.3.9: + dependencies: + debug: 3.2.7 + is-core-module: 2.16.1 + resolve: 1.22.10 + transitivePeerDependencies: + - supports-color + + eslint-json-compat-utils@0.2.1(eslint@9.23.0(jiti@2.4.2))(jsonc-eslint-parser@2.4.0): + dependencies: + eslint: 9.23.0(jiti@2.4.2) + esquery: 1.6.0 + jsonc-eslint-parser: 2.4.0 + + eslint-merge-processors@2.0.0(eslint@9.23.0(jiti@2.4.2)): + dependencies: + eslint: 9.23.0(jiti@2.4.2) + + eslint-parser-plain@0.1.1: {} + + eslint-plugin-antfu@3.1.1(eslint@9.23.0(jiti@2.4.2)): + dependencies: + eslint: 9.23.0(jiti@2.4.2) + + eslint-plugin-command@3.2.0(eslint@9.23.0(jiti@2.4.2)): + dependencies: + '@es-joy/jsdoccomment': 0.50.0 + eslint: 9.23.0(jiti@2.4.2) + + eslint-plugin-es-x@7.8.0(eslint@9.23.0(jiti@2.4.2)): + dependencies: + '@eslint-community/eslint-utils': 4.5.1(eslint@9.23.0(jiti@2.4.2)) + '@eslint-community/regexpp': 4.12.1 + eslint: 9.23.0(jiti@2.4.2) + eslint-compat-utils: 0.5.1(eslint@9.23.0(jiti@2.4.2)) + + eslint-plugin-format@1.0.1(eslint@9.23.0(jiti@2.4.2)): + dependencies: + '@dprint/formatter': 0.3.0 + '@dprint/markdown': 0.17.8 + '@dprint/toml': 0.6.4 + eslint: 9.23.0(jiti@2.4.2) + eslint-formatting-reporter: 0.0.0(eslint@9.23.0(jiti@2.4.2)) + eslint-parser-plain: 0.1.1 + prettier: 3.5.3 + synckit: 0.9.2 + + eslint-plugin-import-x@4.9.3(eslint@9.23.0(jiti@2.4.2))(typescript@5.6.3): + dependencies: + '@types/doctrine': 0.0.9 + '@typescript-eslint/utils': 8.28.0(eslint@9.23.0(jiti@2.4.2))(typescript@5.6.3) + debug: 4.4.0 + doctrine: 3.0.0 + eslint: 9.23.0(jiti@2.4.2) + eslint-import-resolver-node: 0.3.9 + get-tsconfig: 4.10.0 + is-glob: 4.0.3 + minimatch: 10.0.1 + semver: 7.7.1 + stable-hash: 0.0.5 + tslib: 2.8.1 + unrs-resolver: 1.3.2 + transitivePeerDependencies: + - supports-color + - typescript + + eslint-plugin-jsdoc@50.6.9(eslint@9.23.0(jiti@2.4.2)): + dependencies: + '@es-joy/jsdoccomment': 0.49.0 + are-docs-informative: 0.0.2 + comment-parser: 1.4.1 + debug: 4.4.0 + escape-string-regexp: 4.0.0 + eslint: 9.23.0(jiti@2.4.2) + espree: 10.3.0 + esquery: 1.6.0 + parse-imports: 2.2.1 + semver: 7.7.1 + spdx-expression-parse: 4.0.0 + synckit: 0.9.2 + transitivePeerDependencies: + - supports-color + + eslint-plugin-jsonc@2.20.0(eslint@9.23.0(jiti@2.4.2)): + dependencies: + '@eslint-community/eslint-utils': 4.5.1(eslint@9.23.0(jiti@2.4.2)) + eslint: 9.23.0(jiti@2.4.2) + eslint-compat-utils: 0.6.4(eslint@9.23.0(jiti@2.4.2)) + eslint-json-compat-utils: 0.2.1(eslint@9.23.0(jiti@2.4.2))(jsonc-eslint-parser@2.4.0) + espree: 10.3.0 + graphemer: 1.4.0 + jsonc-eslint-parser: 2.4.0 + natural-compare: 1.4.0 + synckit: 0.10.3 + transitivePeerDependencies: + - '@eslint/json' + + eslint-plugin-n@17.17.0(eslint@9.23.0(jiti@2.4.2)): + dependencies: + '@eslint-community/eslint-utils': 4.5.1(eslint@9.23.0(jiti@2.4.2)) + enhanced-resolve: 5.18.1 + eslint: 9.23.0(jiti@2.4.2) + eslint-plugin-es-x: 7.8.0(eslint@9.23.0(jiti@2.4.2)) + get-tsconfig: 4.10.0 + globals: 15.15.0 + ignore: 5.3.2 + minimatch: 9.0.5 + semver: 7.7.1 + + eslint-plugin-no-only-tests@3.3.0: {} + + eslint-plugin-perfectionist@4.10.1(eslint@9.23.0(jiti@2.4.2))(typescript@5.6.3): + dependencies: + '@typescript-eslint/types': 8.28.0 + '@typescript-eslint/utils': 8.28.0(eslint@9.23.0(jiti@2.4.2))(typescript@5.6.3) + eslint: 9.23.0(jiti@2.4.2) + natural-orderby: 5.0.0 + transitivePeerDependencies: + - supports-color + - typescript + + eslint-plugin-pnpm@0.3.1(eslint@9.23.0(jiti@2.4.2)): + dependencies: + eslint: 9.23.0(jiti@2.4.2) + find-up-simple: 1.0.1 + jsonc-eslint-parser: 2.4.0 + pathe: 2.0.3 + pnpm-workspace-yaml: 0.3.1 + tinyglobby: 0.2.12 + yaml-eslint-parser: 1.3.0 + + eslint-plugin-regexp@2.7.0(eslint@9.23.0(jiti@2.4.2)): + dependencies: + '@eslint-community/eslint-utils': 4.5.1(eslint@9.23.0(jiti@2.4.2)) + '@eslint-community/regexpp': 4.12.1 + comment-parser: 1.4.1 + eslint: 9.23.0(jiti@2.4.2) + jsdoc-type-pratt-parser: 4.1.0 + refa: 0.12.1 + regexp-ast-analysis: 0.7.1 + scslre: 0.3.0 + + eslint-plugin-toml@0.12.0(eslint@9.23.0(jiti@2.4.2)): + dependencies: + debug: 4.4.0 + eslint: 9.23.0(jiti@2.4.2) + eslint-compat-utils: 0.6.4(eslint@9.23.0(jiti@2.4.2)) + lodash: 4.17.21 + toml-eslint-parser: 0.10.0 + transitivePeerDependencies: + - supports-color + + eslint-plugin-unicorn@57.0.0(eslint@9.23.0(jiti@2.4.2)): + dependencies: + '@babel/helper-validator-identifier': 7.25.9 + '@eslint-community/eslint-utils': 4.5.1(eslint@9.23.0(jiti@2.4.2)) + ci-info: 4.2.0 + clean-regexp: 1.0.0 + core-js-compat: 3.41.0 + eslint: 9.23.0(jiti@2.4.2) + esquery: 1.6.0 + globals: 15.15.0 + indent-string: 5.0.0 + is-builtin-module: 4.0.0 + jsesc: 3.1.0 + pluralize: 8.0.0 + read-package-up: 11.0.0 + regexp-tree: 0.1.27 + regjsparser: 0.12.0 + semver: 7.7.1 + strip-indent: 4.0.0 + + eslint-plugin-unused-imports@4.1.4(@typescript-eslint/eslint-plugin@8.28.0(@typescript-eslint/parser@8.28.0(eslint@9.23.0(jiti@2.4.2))(typescript@5.6.3))(eslint@9.23.0(jiti@2.4.2))(typescript@5.6.3))(eslint@9.23.0(jiti@2.4.2)): + dependencies: + eslint: 9.23.0(jiti@2.4.2) + optionalDependencies: + '@typescript-eslint/eslint-plugin': 8.28.0(@typescript-eslint/parser@8.28.0(eslint@9.23.0(jiti@2.4.2))(typescript@5.6.3))(eslint@9.23.0(jiti@2.4.2))(typescript@5.6.3) + + eslint-plugin-vue@10.0.0(eslint@9.23.0(jiti@2.4.2))(vue-eslint-parser@10.1.1(eslint@9.23.0(jiti@2.4.2))): + dependencies: + '@eslint-community/eslint-utils': 4.5.1(eslint@9.23.0(jiti@2.4.2)) + eslint: 9.23.0(jiti@2.4.2) + natural-compare: 1.4.0 + nth-check: 2.1.1 + postcss-selector-parser: 6.1.2 + semver: 7.7.1 + vue-eslint-parser: 10.1.1(eslint@9.23.0(jiti@2.4.2)) + xml-name-validator: 4.0.0 + + eslint-plugin-yml@1.17.0(eslint@9.23.0(jiti@2.4.2)): + dependencies: + debug: 4.4.0 + escape-string-regexp: 4.0.0 + eslint: 9.23.0(jiti@2.4.2) + eslint-compat-utils: 0.6.4(eslint@9.23.0(jiti@2.4.2)) + natural-compare: 1.4.0 + yaml-eslint-parser: 1.3.0 + transitivePeerDependencies: + - supports-color + + eslint-processor-vue-blocks@2.0.0(@vue/compiler-sfc@3.5.13)(eslint@9.23.0(jiti@2.4.2)): + dependencies: + '@vue/compiler-sfc': 3.5.13 + eslint: 9.23.0(jiti@2.4.2) + + eslint-scope@8.3.0: + dependencies: + esrecurse: 4.3.0 + estraverse: 5.3.0 + + eslint-visitor-keys@3.4.3: {} + + eslint-visitor-keys@4.2.0: {} + + eslint@9.23.0(jiti@2.4.2): + dependencies: + '@eslint-community/eslint-utils': 4.5.1(eslint@9.23.0(jiti@2.4.2)) + '@eslint-community/regexpp': 4.12.1 + '@eslint/config-array': 0.19.2 + '@eslint/config-helpers': 0.2.0 + '@eslint/core': 0.12.0 + '@eslint/eslintrc': 3.3.1 + '@eslint/js': 9.23.0 + '@eslint/plugin-kit': 0.2.7 + '@humanfs/node': 0.16.6 + '@humanwhocodes/module-importer': 1.0.1 + '@humanwhocodes/retry': 0.4.2 + '@types/estree': 1.0.7 + '@types/json-schema': 7.0.15 + ajv: 6.12.6 + chalk: 4.1.2 + cross-spawn: 7.0.6 + debug: 4.4.0 + escape-string-regexp: 4.0.0 + eslint-scope: 8.3.0 + eslint-visitor-keys: 4.2.0 + espree: 10.3.0 + esquery: 1.6.0 + esutils: 2.0.3 + fast-deep-equal: 3.1.3 + file-entry-cache: 8.0.0 + find-up: 5.0.0 + glob-parent: 6.0.2 + ignore: 5.3.2 + imurmurhash: 0.1.4 + is-glob: 4.0.3 + json-stable-stringify-without-jsonify: 1.0.1 + lodash.merge: 4.6.2 + minimatch: 3.1.2 + natural-compare: 1.4.0 + optionator: 0.9.4 + optionalDependencies: + jiti: 2.4.2 + transitivePeerDependencies: + - supports-color + + espree@10.3.0: + dependencies: + acorn: 8.14.1 + acorn-jsx: 5.3.2(acorn@8.14.1) + eslint-visitor-keys: 4.2.0 + + espree@9.6.1: + dependencies: + acorn: 8.14.1 + acorn-jsx: 5.3.2(acorn@8.14.1) + eslint-visitor-keys: 3.4.3 + esprima@4.0.1: {} + esquery@1.6.0: + dependencies: + estraverse: 5.3.0 + + esrecurse@4.3.0: + dependencies: + estraverse: 5.3.0 + estraverse@5.3.0: {} estree-walker@2.0.2: {} @@ -5181,6 +6676,8 @@ snapshots: fast-deep-equal@3.1.3: {} + fast-diff@1.3.0: {} + fast-glob@3.3.3: dependencies: '@nodelib/fs.stat': 2.0.5 @@ -5189,6 +6686,10 @@ snapshots: merge2: 1.4.1 micromatch: 4.0.8 + fast-json-stable-stringify@2.1.0: {} + + fast-levenshtein@2.0.6: {} + fast-uri@3.0.6: {} fastq@1.19.1: @@ -5203,6 +6704,10 @@ snapshots: dependencies: is-unicode-supported: 2.1.0 + file-entry-cache@8.0.0: + dependencies: + flat-cache: 4.0.1 + filename-reserved-regex@2.0.0: {} filenamify@4.3.0: @@ -5221,17 +6726,31 @@ snapshots: make-dir: 3.1.0 pkg-dir: 4.2.0 + find-up-simple@1.0.1: {} + find-up@4.1.0: dependencies: locate-path: 5.0.0 path-exists: 4.0.0 + find-up@5.0.0: + dependencies: + locate-path: 6.0.0 + path-exists: 4.0.0 + find-up@7.0.0: dependencies: locate-path: 7.2.0 path-exists: 5.0.0 unicorn-magic: 0.1.0 + flat-cache@4.0.1: + dependencies: + flatted: 3.3.3 + keyv: 4.5.4 + + flatted@3.3.3: {} + for-each@0.3.5: dependencies: is-callable: 1.2.7 @@ -5260,8 +6779,6 @@ snapshots: functions-have-names@1.2.3: {} - gensync@1.0.0-beta.2: {} - get-caller-file@2.0.5: {} get-east-asian-width@1.3.0: {} @@ -5297,6 +6814,10 @@ snapshots: es-errors: 1.3.0 get-intrinsic: 1.3.0 + get-tsconfig@4.10.0: + dependencies: + resolve-pkg-maps: 1.0.0 + get-uri@6.0.4: dependencies: basic-ftp: 5.0.5 @@ -5334,6 +6855,10 @@ snapshots: dependencies: is-glob: 4.0.3 + glob-parent@6.0.2: + dependencies: + is-glob: 4.0.3 + glob@7.2.3: dependencies: fs.realpath: 1.0.0 @@ -5347,10 +6872,12 @@ snapshots: dependencies: ini: 4.1.1 - globals@11.12.0: {} + globals@14.0.0: {} globals@15.15.0: {} + globals@16.0.0: {} + globalthis@1.0.4: dependencies: define-properties: 1.2.1 @@ -5379,6 +6906,8 @@ snapshots: graceful-fs@4.2.11: {} + graphemer@1.4.0: {} + gzip-size@6.0.0: dependencies: duplexer: 0.1.2 @@ -5387,6 +6916,8 @@ snapshots: has-flag@3.0.0: {} + has-flag@4.0.0: {} + has-property-descriptors@1.0.2: dependencies: es-define-property: 1.0.1 @@ -5407,6 +6938,10 @@ snapshots: hosted-git-info@2.8.9: {} + hosted-git-info@7.0.2: + dependencies: + lru-cache: 10.4.3 + http-proxy-agent@7.0.2: dependencies: agent-base: 7.1.3 @@ -5438,6 +6973,12 @@ snapshots: import-meta-resolve@4.1.0: {} + imurmurhash@0.1.4: {} + + indent-string@5.0.0: {} + + index-to-position@1.0.0: {} + inflight@1.0.6: dependencies: once: 1.4.0 @@ -5502,6 +7043,10 @@ snapshots: call-bound: 1.0.4 has-tostringtag: 1.0.2 + is-builtin-module@4.0.0: + dependencies: + builtin-modules: 4.0.0 + is-callable@1.2.7: {} is-core-module@2.16.1: @@ -5657,15 +7202,30 @@ snapshots: jsbn@1.1.0: {} + jsdoc-type-pratt-parser@4.1.0: {} + + jsesc@3.0.2: {} + jsesc@3.1.0: {} + json-buffer@3.0.1: {} + json-parse-better-errors@1.0.2: {} json-parse-even-better-errors@2.3.1: {} + json-schema-traverse@0.4.1: {} + json-schema-traverse@1.0.0: {} - json5@2.2.3: {} + json-stable-stringify-without-jsonify@1.0.1: {} + + jsonc-eslint-parser@2.4.0: + dependencies: + acorn: 8.14.1 + eslint-visitor-keys: 3.4.3 + espree: 9.6.1 + semver: 7.7.1 jsonfile@4.0.0: optionalDependencies: @@ -5673,6 +7233,10 @@ snapshots: jsonparse@1.3.1: {} + keyv@4.5.4: + dependencies: + json-buffer: 3.0.1 + kolorist@1.8.0: {} ky@1.7.5: {} @@ -5681,6 +7245,11 @@ snapshots: dependencies: package-json: 10.0.1 + levn@0.4.1: + dependencies: + prelude-ls: 1.2.1 + type-check: 0.4.0 + lilconfig@3.1.3: {} lines-and-columns@1.2.4: {} @@ -5726,6 +7295,10 @@ snapshots: dependencies: p-locate: 4.1.0 + locate-path@6.0.0: + dependencies: + p-locate: 5.0.0 + locate-path@7.2.0: dependencies: p-locate: 6.0.0 @@ -5771,13 +7344,9 @@ snapshots: strip-ansi: 7.1.0 wrap-ansi: 9.0.0 - loose-envify@1.4.0: - dependencies: - js-tokens: 4.0.0 + longest-streak@3.1.0: {} - lru-cache@5.1.1: - dependencies: - yallist: 3.1.1 + lru-cache@10.4.3: {} lru-cache@7.18.3: {} @@ -5791,8 +7360,112 @@ snapshots: dependencies: semver: 6.3.1 + markdown-table@3.0.4: {} + math-intrinsics@1.1.0: {} + mdast-util-find-and-replace@3.0.2: + dependencies: + '@types/mdast': 4.0.4 + escape-string-regexp: 5.0.0 + unist-util-is: 6.0.0 + unist-util-visit-parents: 6.0.1 + + mdast-util-from-markdown@2.0.2: + dependencies: + '@types/mdast': 4.0.4 + '@types/unist': 3.0.3 + decode-named-character-reference: 1.1.0 + devlop: 1.1.0 + mdast-util-to-string: 4.0.0 + micromark: 4.0.2 + micromark-util-decode-numeric-character-reference: 2.0.2 + micromark-util-decode-string: 2.0.1 + micromark-util-normalize-identifier: 2.0.1 + micromark-util-symbol: 2.0.1 + micromark-util-types: 2.0.2 + unist-util-stringify-position: 4.0.0 + transitivePeerDependencies: + - supports-color + + mdast-util-gfm-autolink-literal@2.0.1: + dependencies: + '@types/mdast': 4.0.4 + ccount: 2.0.1 + devlop: 1.1.0 + mdast-util-find-and-replace: 3.0.2 + micromark-util-character: 2.1.1 + + mdast-util-gfm-footnote@2.1.0: + dependencies: + '@types/mdast': 4.0.4 + devlop: 1.1.0 + mdast-util-from-markdown: 2.0.2 + mdast-util-to-markdown: 2.1.2 + micromark-util-normalize-identifier: 2.0.1 + transitivePeerDependencies: + - supports-color + + mdast-util-gfm-strikethrough@2.0.0: + dependencies: + '@types/mdast': 4.0.4 + mdast-util-from-markdown: 2.0.2 + mdast-util-to-markdown: 2.1.2 + transitivePeerDependencies: + - supports-color + + mdast-util-gfm-table@2.0.0: + dependencies: + '@types/mdast': 4.0.4 + devlop: 1.1.0 + markdown-table: 3.0.4 + mdast-util-from-markdown: 2.0.2 + mdast-util-to-markdown: 2.1.2 + transitivePeerDependencies: + - supports-color + + mdast-util-gfm-task-list-item@2.0.0: + dependencies: + '@types/mdast': 4.0.4 + devlop: 1.1.0 + mdast-util-from-markdown: 2.0.2 + mdast-util-to-markdown: 2.1.2 + transitivePeerDependencies: + - supports-color + + mdast-util-gfm@3.1.0: + dependencies: + mdast-util-from-markdown: 2.0.2 + mdast-util-gfm-autolink-literal: 2.0.1 + mdast-util-gfm-footnote: 2.1.0 + mdast-util-gfm-strikethrough: 2.0.0 + mdast-util-gfm-table: 2.0.0 + mdast-util-gfm-task-list-item: 2.0.0 + mdast-util-to-markdown: 2.1.2 + transitivePeerDependencies: + - supports-color + + mdast-util-phrasing@4.1.0: + dependencies: + '@types/mdast': 4.0.4 + unist-util-is: 6.0.0 + + mdast-util-to-markdown@2.1.2: + dependencies: + '@types/mdast': 4.0.4 + '@types/unist': 3.0.3 + longest-streak: 3.1.0 + mdast-util-phrasing: 4.1.0 + mdast-util-to-string: 4.0.0 + micromark-util-classify-character: 2.0.1 + micromark-util-decode-string: 2.0.1 + unist-util-visit: 5.0.0 + zwitch: 2.0.4 + + mdast-util-to-string@4.0.0: + dependencies: + '@types/mdast': 4.0.4 + mdn-data@2.12.2: {} memorystream@0.3.1: {} @@ -5803,6 +7476,197 @@ snapshots: merge2@1.4.1: {} + micromark-core-commonmark@2.0.3: + dependencies: + decode-named-character-reference: 1.1.0 + devlop: 1.1.0 + micromark-factory-destination: 2.0.1 + micromark-factory-label: 2.0.1 + micromark-factory-space: 2.0.1 + micromark-factory-title: 2.0.1 + micromark-factory-whitespace: 2.0.1 + micromark-util-character: 2.1.1 + micromark-util-chunked: 2.0.1 + micromark-util-classify-character: 2.0.1 + micromark-util-html-tag-name: 2.0.1 + micromark-util-normalize-identifier: 2.0.1 + micromark-util-resolve-all: 2.0.1 + micromark-util-subtokenize: 2.1.0 + micromark-util-symbol: 2.0.1 + micromark-util-types: 2.0.2 + + micromark-extension-gfm-autolink-literal@2.1.0: + dependencies: + micromark-util-character: 2.1.1 + micromark-util-sanitize-uri: 2.0.1 + micromark-util-symbol: 2.0.1 + micromark-util-types: 2.0.2 + + micromark-extension-gfm-footnote@2.1.0: + dependencies: + devlop: 1.1.0 + micromark-core-commonmark: 2.0.3 + micromark-factory-space: 2.0.1 + micromark-util-character: 2.1.1 + micromark-util-normalize-identifier: 2.0.1 + micromark-util-sanitize-uri: 2.0.1 + micromark-util-symbol: 2.0.1 + micromark-util-types: 2.0.2 + + micromark-extension-gfm-strikethrough@2.1.0: + dependencies: + devlop: 1.1.0 + micromark-util-chunked: 2.0.1 + micromark-util-classify-character: 2.0.1 + micromark-util-resolve-all: 2.0.1 + micromark-util-symbol: 2.0.1 + micromark-util-types: 2.0.2 + + micromark-extension-gfm-table@2.1.1: + dependencies: + devlop: 1.1.0 + micromark-factory-space: 2.0.1 + micromark-util-character: 2.1.1 + micromark-util-symbol: 2.0.1 + micromark-util-types: 2.0.2 + + micromark-extension-gfm-tagfilter@2.0.0: + dependencies: + micromark-util-types: 2.0.2 + + micromark-extension-gfm-task-list-item@2.1.0: + dependencies: + devlop: 1.1.0 + micromark-factory-space: 2.0.1 + micromark-util-character: 2.1.1 + micromark-util-symbol: 2.0.1 + micromark-util-types: 2.0.2 + + micromark-extension-gfm@3.0.0: + dependencies: + micromark-extension-gfm-autolink-literal: 2.1.0 + micromark-extension-gfm-footnote: 2.1.0 + micromark-extension-gfm-strikethrough: 2.1.0 + micromark-extension-gfm-table: 2.1.1 + micromark-extension-gfm-tagfilter: 2.0.0 + micromark-extension-gfm-task-list-item: 2.1.0 + micromark-util-combine-extensions: 2.0.1 + micromark-util-types: 2.0.2 + + micromark-factory-destination@2.0.1: + dependencies: + micromark-util-character: 2.1.1 + micromark-util-symbol: 2.0.1 + micromark-util-types: 2.0.2 + + micromark-factory-label@2.0.1: + dependencies: + devlop: 1.1.0 + micromark-util-character: 2.1.1 + micromark-util-symbol: 2.0.1 + micromark-util-types: 2.0.2 + + micromark-factory-space@2.0.1: + dependencies: + micromark-util-character: 2.1.1 + micromark-util-types: 2.0.2 + + micromark-factory-title@2.0.1: + dependencies: + micromark-factory-space: 2.0.1 + micromark-util-character: 2.1.1 + micromark-util-symbol: 2.0.1 + micromark-util-types: 2.0.2 + + micromark-factory-whitespace@2.0.1: + dependencies: + micromark-factory-space: 2.0.1 + micromark-util-character: 2.1.1 + micromark-util-symbol: 2.0.1 + micromark-util-types: 2.0.2 + + micromark-util-character@2.1.1: + dependencies: + micromark-util-symbol: 2.0.1 + micromark-util-types: 2.0.2 + + micromark-util-chunked@2.0.1: + dependencies: + micromark-util-symbol: 2.0.1 + + micromark-util-classify-character@2.0.1: + dependencies: + micromark-util-character: 2.1.1 + micromark-util-symbol: 2.0.1 + micromark-util-types: 2.0.2 + + micromark-util-combine-extensions@2.0.1: + dependencies: + micromark-util-chunked: 2.0.1 + micromark-util-types: 2.0.2 + + micromark-util-decode-numeric-character-reference@2.0.2: + dependencies: + micromark-util-symbol: 2.0.1 + + micromark-util-decode-string@2.0.1: + dependencies: + decode-named-character-reference: 1.1.0 + micromark-util-character: 2.1.1 + micromark-util-decode-numeric-character-reference: 2.0.2 + micromark-util-symbol: 2.0.1 + + micromark-util-encode@2.0.1: {} + + micromark-util-html-tag-name@2.0.1: {} + + micromark-util-normalize-identifier@2.0.1: + dependencies: + micromark-util-symbol: 2.0.1 + + micromark-util-resolve-all@2.0.1: + dependencies: + micromark-util-types: 2.0.2 + + micromark-util-sanitize-uri@2.0.1: + dependencies: + micromark-util-character: 2.1.1 + micromark-util-encode: 2.0.1 + micromark-util-symbol: 2.0.1 + + micromark-util-subtokenize@2.1.0: + dependencies: + devlop: 1.1.0 + micromark-util-chunked: 2.0.1 + micromark-util-symbol: 2.0.1 + micromark-util-types: 2.0.2 + + micromark-util-symbol@2.0.1: {} + + micromark-util-types@2.0.2: {} + + micromark@4.0.2: + dependencies: + '@types/debug': 4.1.12 + debug: 4.4.0 + decode-named-character-reference: 1.1.0 + devlop: 1.1.0 + micromark-core-commonmark: 2.0.3 + micromark-factory-space: 2.0.1 + micromark-util-character: 2.1.1 + micromark-util-chunked: 2.0.1 + micromark-util-combine-extensions: 2.0.1 + micromark-util-decode-numeric-character-reference: 2.0.2 + micromark-util-encode: 2.0.1 + micromark-util-normalize-identifier: 2.0.1 + micromark-util-resolve-all: 2.0.1 + micromark-util-sanitize-uri: 2.0.1 + micromark-util-subtokenize: 2.1.0 + micromark-util-symbol: 2.0.1 + micromark-util-types: 2.0.2 + transitivePeerDependencies: + - supports-color + micromatch@4.0.8: dependencies: braces: 3.0.3 @@ -5818,10 +7682,20 @@ snapshots: mimic-function@5.0.1: {} + min-indent@1.0.1: {} + + minimatch@10.0.1: + dependencies: + brace-expansion: 2.0.1 + minimatch@3.1.2: dependencies: brace-expansion: 1.1.11 + minimatch@9.0.5: + dependencies: + brace-expansion: 2.0.1 + minimist@1.2.8: {} mlly@1.7.4: @@ -5839,6 +7713,10 @@ snapshots: nanoid@3.3.11: {} + natural-compare@1.4.0: {} + + natural-orderby@5.0.0: {} + netmask@2.0.2: {} new-github-release-url@2.0.0: @@ -5858,6 +7736,12 @@ snapshots: semver: 5.7.2 validate-npm-package-license: 3.0.4 + normalize-package-data@6.0.2: + dependencies: + hosted-git-info: 7.0.2 + semver: 7.7.1 + validate-npm-package-license: 3.0.4 + normalize-path@3.0.0: {} npm-run-all@4.1.5: @@ -5881,6 +7765,10 @@ snapshots: path-key: 4.0.0 unicorn-magic: 0.3.0 + nth-check@2.1.1: + dependencies: + boolbase: 1.0.0 + object-assign@4.1.1: {} object-inspect@1.13.4: {} @@ -5921,6 +7809,15 @@ snapshots: is-inside-container: 1.0.0 is-wsl: 3.1.0 + optionator@0.9.4: + dependencies: + deep-is: 0.1.4 + fast-levenshtein: 2.0.6 + levn: 0.4.1 + prelude-ls: 1.2.1 + type-check: 0.4.0 + word-wrap: 1.2.5 + ora@8.1.1: dependencies: chalk: 5.4.1 @@ -5950,6 +7847,10 @@ snapshots: dependencies: p-try: 2.2.0 + p-limit@3.1.0: + dependencies: + yocto-queue: 0.1.0 + p-limit@4.0.0: dependencies: yocto-queue: 1.2.1 @@ -5958,6 +7859,10 @@ snapshots: dependencies: p-limit: 2.3.0 + p-locate@5.0.0: + dependencies: + p-limit: 3.1.0 + p-locate@6.0.0: dependencies: p-limit: 4.0.0 @@ -5997,6 +7902,13 @@ snapshots: dependencies: callsites: 3.1.0 + parse-gitignore@2.0.0: {} + + parse-imports@2.2.1: + dependencies: + es-module-lexer: 1.6.0 + slashes: 3.0.12 + parse-json@4.0.0: dependencies: error-ex: 1.3.2 @@ -6009,6 +7921,12 @@ snapshots: json-parse-even-better-errors: 2.3.1 lines-and-columns: 1.2.4 + parse-json@8.2.0: + dependencies: + '@babel/code-frame': 7.26.2 + index-to-position: 1.0.0 + type-fest: 4.38.0 + parse-ms@4.0.0: {} parse-path@7.0.1: @@ -6129,14 +8047,33 @@ snapshots: exsolve: 1.0.4 pathe: 2.0.3 + pluralize@8.0.0: {} + + pnpm-workspace-yaml@0.3.1: + dependencies: + yaml: 2.7.0 + possible-typed-array-names@1.1.0: {} + postcss-selector-parser@6.1.2: + dependencies: + cssesc: 3.0.0 + util-deprecate: 1.0.2 + postcss@8.5.3: dependencies: nanoid: 3.3.11 picocolors: 1.1.1 source-map-js: 1.2.1 + prelude-ls@1.2.1: {} + + prettier-linter-helpers@1.0.0: + dependencies: + fast-diff: 1.3.0 + + prettier@3.5.3: {} + pretty-ms@9.2.0: dependencies: parse-ms: 4.0.0 @@ -6164,6 +8101,8 @@ snapshots: punycode@1.4.1: {} + punycode@2.3.1: {} + pupa@3.1.0: dependencies: escape-goat: 4.0.0 @@ -6183,33 +8122,11 @@ snapshots: minimist: 1.2.8 strip-json-comments: 2.0.1 - react-dom@18.3.1(react@18.3.1): + read-package-up@11.0.0: dependencies: - loose-envify: 1.4.0 - react: 18.3.1 - scheduler: 0.23.2 - - react-refresh@0.14.2: {} - - react-router-dom@7.4.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1): - dependencies: - react: 18.3.1 - react-dom: 18.3.1(react@18.3.1) - react-router: 7.4.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - - react-router@7.4.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1): - dependencies: - '@types/cookie': 0.6.0 - cookie: 1.0.2 - react: 18.3.1 - set-cookie-parser: 2.7.1 - turbo-stream: 2.4.0 - optionalDependencies: - react-dom: 18.3.1(react@18.3.1) - - react@18.3.1: - dependencies: - loose-envify: 1.4.0 + find-up-simple: 1.0.1 + read-pkg: 9.0.1 + type-fest: 4.38.0 read-pkg@3.0.0: dependencies: @@ -6217,6 +8134,14 @@ snapshots: normalize-package-data: 2.5.0 path-type: 3.0.0 + read-pkg@9.0.1: + dependencies: + '@types/normalize-package-data': 2.4.4 + normalize-package-data: 6.0.2 + parse-json: 8.2.0 + type-fest: 4.38.0 + unicorn-magic: 0.1.0 + readdirp@3.6.0: dependencies: picomatch: 2.3.1 @@ -6225,6 +8150,10 @@ snapshots: dependencies: resolve: 1.22.10 + refa@0.12.1: + dependencies: + '@eslint-community/regexpp': 4.12.1 + reflect.getprototypeof@1.0.10: dependencies: call-bind: 1.0.8 @@ -6236,6 +8165,13 @@ snapshots: get-proto: 1.0.1 which-builtin-type: 1.2.1 + regexp-ast-analysis@0.7.1: + dependencies: + '@eslint-community/regexpp': 4.12.1 + refa: 0.12.1 + + regexp-tree@0.1.27: {} + regexp.prototype.flags@1.5.4: dependencies: call-bind: 1.0.8 @@ -6253,6 +8189,10 @@ snapshots: dependencies: rc: 1.2.8 + regjsparser@0.12.0: + dependencies: + jsesc: 3.0.2 + release-it@18.1.2(@types/node@22.13.14)(typescript@5.6.3): dependencies: '@iarna/toml': 2.2.5 @@ -6293,6 +8233,8 @@ snapshots: resolve-from@5.0.0: {} + resolve-pkg-maps@1.0.0: {} + resolve@1.22.10: dependencies: is-core-module: 2.16.1 @@ -6369,9 +8311,11 @@ snapshots: safer-buffer@2.1.2: {} - scheduler@0.23.2: + scslre@0.3.0: dependencies: - loose-envify: 1.4.0 + '@eslint-community/regexpp': 4.12.1 + refa: 0.12.1 + regexp-ast-analysis: 0.7.1 semver@5.7.2: {} @@ -6381,8 +8325,6 @@ snapshots: semver@7.7.1: {} - set-cookie-parser@2.7.1: {} - set-function-length@1.2.2: dependencies: define-data-property: 1.1.4 @@ -6463,8 +8405,12 @@ snapshots: mrmime: 2.0.1 totalist: 3.0.1 + sisteransi@1.0.5: {} + slash@5.1.0: {} + slashes@3.0.12: {} + slice-ansi@5.0.0: dependencies: ansi-styles: 6.2.1 @@ -6507,12 +8453,19 @@ snapshots: spdx-exceptions: 2.5.0 spdx-license-ids: 3.0.21 + spdx-expression-parse@4.0.0: + dependencies: + spdx-exceptions: 2.5.0 + spdx-license-ids: 3.0.21 + spdx-license-ids@3.0.21: {} split2@4.2.0: {} sprintf-js@1.1.3: {} + stable-hash@0.0.5: {} + stdin-discarder@0.2.2: {} string-argv@0.3.2: {} @@ -6573,8 +8526,14 @@ snapshots: strip-final-newline@4.0.0: {} + strip-indent@4.0.0: + dependencies: + min-indent: 1.0.1 + strip-json-comments@2.0.1: {} + strip-json-comments@3.1.1: {} + strip-outer@1.0.1: dependencies: escape-string-regexp: 1.0.5 @@ -6585,8 +8544,24 @@ snapshots: dependencies: has-flag: 3.0.0 + supports-color@7.2.0: + dependencies: + has-flag: 4.0.0 + supports-preserve-symlinks-flag@1.0.0: {} + synckit@0.10.3: + dependencies: + '@pkgr/core': 0.2.0 + tslib: 2.8.1 + + synckit@0.9.2: + dependencies: + '@pkgr/core': 0.1.2 + tslib: 2.8.1 + + tapable@2.2.1: {} + text-extensions@2.4.0: {} through@2.3.8: {} @@ -6606,15 +8581,32 @@ snapshots: dependencies: is-number: 7.0.0 + toml-eslint-parser@0.10.0: + dependencies: + eslint-visitor-keys: 3.4.3 + totalist@3.0.1: {} trim-repeated@1.0.0: dependencies: escape-string-regexp: 1.0.5 + ts-api-utils@2.1.0(typescript@5.6.3): + dependencies: + typescript: 5.6.3 + tslib@2.8.1: {} - turbo-stream@2.4.0: {} + tsx@4.19.3: + dependencies: + esbuild: 0.25.1 + get-tsconfig: 4.10.0 + optionalDependencies: + fsevents: 2.3.3 + + type-check@0.4.0: + dependencies: + prelude-ls: 1.2.1 type-fest@0.21.3: {} @@ -6666,6 +8658,12 @@ snapshots: has-symbols: 1.1.0 which-boxed-primitive: 1.1.1 + unconfig@7.0.0: + dependencies: + '@antfu/utils': 8.1.1 + defu: 6.1.4 + jiti: 2.4.2 + unconfig@7.3.1: dependencies: '@quansync/fs': 0.1.1 @@ -6681,13 +8679,32 @@ snapshots: unicorn-magic@0.3.0: {} + unist-util-is@6.0.0: + dependencies: + '@types/unist': 3.0.3 + + unist-util-stringify-position@4.0.0: + dependencies: + '@types/unist': 3.0.3 + + unist-util-visit-parents@6.0.1: + dependencies: + '@types/unist': 3.0.3 + unist-util-is: 6.0.0 + + unist-util-visit@5.0.0: + dependencies: + '@types/unist': 3.0.3 + unist-util-is: 6.0.0 + unist-util-visit-parents: 6.0.1 + universal-user-agent@7.0.2: {} universalify@0.1.2: {} - unocss@66.1.0-beta.7(postcss@8.5.3)(vite@6.2.3(@types/node@22.13.14)(jiti@2.4.2)(yaml@2.7.0))(vue@3.5.13(typescript@5.6.3)): + unocss@66.1.0-beta.7(postcss@8.5.3)(vite@6.2.3(@types/node@22.13.14)(jiti@2.4.2)(tsx@4.19.3)(yaml@2.7.0))(vue@3.5.13(typescript@5.6.3)): dependencies: - '@unocss/astro': 66.1.0-beta.7(vite@6.2.3(@types/node@22.13.14)(jiti@2.4.2)(yaml@2.7.0))(vue@3.5.13(typescript@5.6.3)) + '@unocss/astro': 66.1.0-beta.7(vite@6.2.3(@types/node@22.13.14)(jiti@2.4.2)(tsx@4.19.3)(yaml@2.7.0))(vue@3.5.13(typescript@5.6.3)) '@unocss/cli': 66.1.0-beta.7 '@unocss/core': 66.1.0-beta.7 '@unocss/postcss': 66.1.0-beta.7(postcss@8.5.3) @@ -6705,9 +8722,9 @@ snapshots: '@unocss/transformer-compile-class': 66.1.0-beta.7 '@unocss/transformer-directives': 66.1.0-beta.7 '@unocss/transformer-variant-group': 66.1.0-beta.7 - '@unocss/vite': 66.1.0-beta.7(vite@6.2.3(@types/node@22.13.14)(jiti@2.4.2)(yaml@2.7.0))(vue@3.5.13(typescript@5.6.3)) + '@unocss/vite': 66.1.0-beta.7(vite@6.2.3(@types/node@22.13.14)(jiti@2.4.2)(tsx@4.19.3)(yaml@2.7.0))(vue@3.5.13(typescript@5.6.3)) optionalDependencies: - vite: 6.2.3(@types/node@22.13.14)(jiti@2.4.2)(yaml@2.7.0) + vite: 6.2.3(@types/node@22.13.14)(jiti@2.4.2)(tsx@4.19.3)(yaml@2.7.0) transitivePeerDependencies: - postcss - supports-color @@ -6718,6 +8735,24 @@ snapshots: pathe: 2.0.3 picomatch: 4.0.2 + unrs-resolver@1.3.2: + optionalDependencies: + '@unrs/resolver-binding-darwin-arm64': 1.3.2 + '@unrs/resolver-binding-darwin-x64': 1.3.2 + '@unrs/resolver-binding-freebsd-x64': 1.3.2 + '@unrs/resolver-binding-linux-arm-gnueabihf': 1.3.2 + '@unrs/resolver-binding-linux-arm-musleabihf': 1.3.2 + '@unrs/resolver-binding-linux-arm64-gnu': 1.3.2 + '@unrs/resolver-binding-linux-arm64-musl': 1.3.2 + '@unrs/resolver-binding-linux-ppc64-gnu': 1.3.2 + '@unrs/resolver-binding-linux-s390x-gnu': 1.3.2 + '@unrs/resolver-binding-linux-x64-gnu': 1.3.2 + '@unrs/resolver-binding-linux-x64-musl': 1.3.2 + '@unrs/resolver-binding-wasm32-wasi': 1.3.2 + '@unrs/resolver-binding-win32-arm64-msvc': 1.3.2 + '@unrs/resolver-binding-win32-ia32-msvc': 1.3.2 + '@unrs/resolver-binding-win32-x64-msvc': 1.3.2 + update-browserslist-db@1.1.3(browserslist@4.24.4): dependencies: browserslist: 4.24.4 @@ -6737,6 +8772,10 @@ snapshots: semver: 7.6.3 xdg-basedir: 5.1.0 + uri-js@4.4.1: + dependencies: + punycode: 2.3.1 + url-join@5.0.0: {} url@0.11.4: @@ -6744,12 +8783,14 @@ snapshots: punycode: 1.4.1 qs: 6.14.0 + util-deprecate@1.0.2: {} + validate-npm-package-license@3.0.4: dependencies: spdx-correct: 3.2.0 spdx-expression-parse: 3.0.1 - vite@6.2.3(@types/node@22.13.14)(jiti@2.4.2)(yaml@2.7.0): + vite@6.2.3(@types/node@22.13.14)(jiti@2.4.2)(tsx@4.19.3)(yaml@2.7.0): dependencies: esbuild: 0.25.1 postcss: 8.5.3 @@ -6758,12 +8799,31 @@ snapshots: '@types/node': 22.13.14 fsevents: 2.3.3 jiti: 2.4.2 + tsx: 4.19.3 yaml: 2.7.0 + vue-eslint-parser@10.1.1(eslint@9.23.0(jiti@2.4.2)): + dependencies: + debug: 4.4.0 + eslint: 9.23.0(jiti@2.4.2) + eslint-scope: 8.3.0 + eslint-visitor-keys: 4.2.0 + espree: 10.3.0 + esquery: 1.6.0 + lodash: 4.17.21 + semver: 7.7.1 + transitivePeerDependencies: + - supports-color + vue-flow-layout@0.1.1(vue@3.5.13(typescript@5.6.3)): dependencies: vue: 3.5.13(typescript@5.6.3) + vue-router@4.5.0(vue@3.5.13(typescript@5.6.3)): + dependencies: + '@vue/devtools-api': 6.6.4 + vue: 3.5.13(typescript@5.6.3) + vue@3.5.13(typescript@5.6.3): dependencies: '@vue/compiler-dom': 3.5.13 @@ -6835,6 +8895,8 @@ snapshots: dependencies: execa: 8.0.1 + word-wrap@1.2.5: {} + wrap-ansi@6.2.0: dependencies: ansi-styles: 4.3.0 @@ -6857,9 +8919,14 @@ snapshots: xdg-basedir@5.1.0: {} + xml-name-validator@4.0.0: {} + y18n@5.0.8: {} - yallist@3.1.1: {} + yaml-eslint-parser@1.3.0: + dependencies: + eslint-visitor-keys: 3.4.3 + yaml: 2.7.0 yaml@2.7.0: {} @@ -6875,8 +8942,12 @@ snapshots: y18n: 5.0.8 yargs-parser: 21.1.1 + yocto-queue@0.1.0: {} + yocto-queue@1.2.1: {} yoctocolors-cjs@2.1.2: {} yoctocolors@2.1.1: {} + + zwitch@2.0.4: {} diff --git a/public/images/logo.png b/public/images/logo.png new file mode 100644 index 0000000..2718ae7 Binary files /dev/null and b/public/images/logo.png differ diff --git a/public/models/keyboard/cat.model3.json b/public/models/keyboard/cat.model3.json index dc49ebb..5404d72 100755 --- a/public/models/keyboard/cat.model3.json +++ b/public/models/keyboard/cat.model3.json @@ -1,66 +1,69 @@ { - "Version": 3, - "FileReferences": { - "Moc": "demomodel2.moc3", - "Textures": [ - "demomodel2.1024/texture_00.png", - "demomodel2.1024/texture_01.png", - "demomodel2.1024/texture_02.png" - ], - "DisplayInfo": "demomodel2.cdi3.json", - "Expressions": [ - { - "Name": "live2d_expression0.exp3.json", - "File": "live2d_expression0.exp3.json" - }, - { - "Name": "live2d_expression1.exp3.json", - "File": "live2d_expression1.exp3.json" - }, - { - "Name": "live2d_expression2.exp3.json", - "File": "live2d_expression2.exp3.json" - } - ], - "Motions": { - "CAT_motion": [ - { - "File": "live2d_motion1.motion3.json", - "Sound": "live2d_motion1.flac", - "FadeInTime": 0, - "FadeOutTime": 0 - }, - { - "File": "live2d_motion2.motion3.json", - "FadeInTime": 0, - "FadeOutTime": 0 - } - ], - "CAT_motion_lock": [ - { - "File": "live2d_motion1.motion3.json", - "Sound": "live2d_motion1.flac", - "FadeInTime": 0, - "FadeOutTime": 0 - }, - { - "File": "live2d_motion2.motion3.json", - "FadeInTime": 0, - "FadeOutTime": 0 - } - ] - } - }, - "Groups": [ - { - "Target": "Parameter", - "Name": "EyeBlink", - "Ids": ["ParamEyeLOpen", "ParamEyeROpen"] - }, - { - "Target": "Parameter", - "Name": "LipSync", - "Ids": [] - } - ] + "Version": 3, + "FileReferences": { + "Moc": "demomodel2.moc3", + "Textures": [ + "demomodel2.1024/texture_00.png", + "demomodel2.1024/texture_01.png", + "demomodel2.1024/texture_02.png" + ], + "DisplayInfo": "demomodel2.cdi3.json", + "Expressions": [ + { + "Name": "live2d_expression0.exp3.json", + "File": "live2d_expression0.exp3.json" + }, + { + "Name": "live2d_expression1.exp3.json", + "File": "live2d_expression1.exp3.json" + }, + { + "Name": "live2d_expression2.exp3.json", + "File": "live2d_expression2.exp3.json" + } + ], + "Motions": { + "CAT_motion": [ + { + "File": "live2d_motion1.motion3.json", + "Sound": "live2d_motion1.flac", + "FadeInTime": 0, + "FadeOutTime": 0 + }, + { + "File": "live2d_motion2.motion3.json", + "FadeInTime": 0, + "FadeOutTime": 0 + } + ], + "CAT_motion_lock": [ + { + "File": "live2d_motion1.motion3.json", + "Sound": "live2d_motion1.flac", + "FadeInTime": 0, + "FadeOutTime": 0 + }, + { + "File": "live2d_motion2.motion3.json", + "FadeInTime": 0, + "FadeOutTime": 0 + } + ] + } + }, + "Groups": [ + { + "Target": "Parameter", + "Name": "EyeBlink", + "Ids": [ + "ParamEyeLOpen", + "ParamEyeROpen" + ] + }, + { + "Target": "Parameter", + "Name": "LipSync", + "Ids": [] + } + ] } diff --git a/public/models/keyboard/demomodel2.cdi3.json b/public/models/keyboard/demomodel2.cdi3.json index ec49c91..ed40d7e 100755 --- a/public/models/keyboard/demomodel2.cdi3.json +++ b/public/models/keyboard/demomodel2.cdi3.json @@ -1,233 +1,233 @@ { - "Version": 3, - "Parameters": [ - { - "Id": "ParamAngleX", - "GroupId": "", - "Name": "角度 X" - }, - { - "Id": "ParamAngleY", - "GroupId": "", - "Name": "角度 Y" - }, - { - "Id": "CatParamRightHandDown", - "GroupId": "", - "Name": "右手按下" - }, - { - "Id": "CatParamLeftHandDown", - "GroupId": "", - "Name": "左手按下" - }, - { - "Id": "ParamAngleZ", - "GroupId": "", - "Name": "角度 Z" - }, - { - "Id": "ParamEyeLOpen", - "GroupId": "", - "Name": "左眼 开闭" - }, - { - "Id": "ParamEyeLSmile", - "GroupId": "", - "Name": "左眼 微笑" - }, - { - "Id": "ParamEyeROpen", - "GroupId": "", - "Name": "右眼" - }, - { - "Id": "ParamEyeRSmile", - "GroupId": "", - "Name": "右眼 微笑" - }, - { - "Id": "Param3", - "GroupId": "", - "Name": "挥手" - }, - { - "Id": "Param", - "GroupId": "ParamGroup", - "Name": "开启闪电" - }, - { - "Id": "Param2", - "GroupId": "ParamGroup", - "Name": "闪电划过" - }, - { - "Id": "Param4", - "GroupId": "ParamGroup2", - "Name": "表情:thuglife" - }, - { - "Id": "Param5", - "GroupId": "ParamGroup2", - "Name": "表情:升天" - }, - { - "Id": "ParamEyeBallX", - "GroupId": "", - "Name": "眼球 X" - }, - { - "Id": "ParamEyeBallY", - "GroupId": "", - "Name": "眼球 Y" - }, - { - "Id": "ParamBrowLY", - "GroupId": "", - "Name": "左眉上下" - }, - { - "Id": "ParamBrowRY", - "GroupId": "", - "Name": "右眉 上下" - }, - { - "Id": "ParamBrowLX", - "GroupId": "", - "Name": "左眉 左右" - }, - { - "Id": "ParamBrowRX", - "GroupId": "", - "Name": "右眉 左右" - }, - { - "Id": "ParamBrowLAngle", - "GroupId": "", - "Name": "左眉 角度" - }, - { - "Id": "ParamBrowRAngle", - "GroupId": "", - "Name": "右眉 角度" - }, - { - "Id": "ParamBrowLForm", - "GroupId": "", - "Name": "左眉 変形" - }, - { - "Id": "ParamBrowRForm", - "GroupId": "", - "Name": "右眉 変形" - }, - { - "Id": "ParamMouthForm", - "GroupId": "", - "Name": "嘴部 变形" - }, - { - "Id": "ParamMouthOpenY", - "GroupId": "", - "Name": "嘴巴 张开和闭合" - }, - { - "Id": "ParamCheek", - "GroupId": "", - "Name": "脸颊" - }, - { - "Id": "ParamBodyAngleX", - "GroupId": "", - "Name": "身体旋转 X" - }, - { - "Id": "ParamBodyAngleY", - "GroupId": "", - "Name": "身体旋转 Y" - }, - { - "Id": "ParamBodyAngleZ", - "GroupId": "", - "Name": "身体旋转 Z" - }, - { - "Id": "ParamBreath", - "GroupId": "", - "Name": "呼吸" - }, - { - "Id": "ParamHairFront", - "GroupId": "", - "Name": "摇动 前发" - }, - { - "Id": "ParamHairSide", - "GroupId": "", - "Name": "摇动 侧发" - }, - { - "Id": "ParamHairBack", - "GroupId": "", - "Name": "摇动 后发" - } - ], - "ParameterGroups": [ - { - "Id": "ParamGroup", - "GroupId": "", - "Name": "闪电" - }, - { - "Id": "ParamGroup2", - "GroupId": "", - "Name": "表情" - } - ], - "Parts": [ - { - "Id": "Part11", - "Name": "demomodel.psd(未找到对应图层)" - }, - { - "Id": "Part7", - "Name": "demomodel.psd(未找到对应图层)" - }, - { - "Id": "Part3", - "Name": "demomodel.psd(未找到对应图层)" - }, - { - "Id": "Part2", - "Name": "demomodel.psd(未找到对应图层)" - }, - { - "Id": "Part", - "Name": "demomodel.psd(未找到对应图层)" - }, - { - "Id": "Part10", - "Name": "天使环" - }, - { - "Id": "Part5", - "Name": "demomodel.psd(未找到对应图层)" - }, - { - "Id": "PartSketch0", - "Name": "[ 参考图 ]" - }, - { - "Id": "Part8", - "Name": "thug life" - }, - { - "Id": "Part6", - "Name": "闪电" - }, - { - "Id": "Part4", - "Name": "闪电" - } - ] + "Version": 3, + "Parameters": [ + { + "Id": "ParamAngleX", + "GroupId": "", + "Name": "角度 X" + }, + { + "Id": "ParamAngleY", + "GroupId": "", + "Name": "角度 Y" + }, + { + "Id": "CatParamRightHandDown", + "GroupId": "", + "Name": "右手按下" + }, + { + "Id": "CatParamLeftHandDown", + "GroupId": "", + "Name": "左手按下" + }, + { + "Id": "ParamAngleZ", + "GroupId": "", + "Name": "角度 Z" + }, + { + "Id": "ParamEyeLOpen", + "GroupId": "", + "Name": "左眼 开闭" + }, + { + "Id": "ParamEyeLSmile", + "GroupId": "", + "Name": "左眼 微笑" + }, + { + "Id": "ParamEyeROpen", + "GroupId": "", + "Name": "右眼" + }, + { + "Id": "ParamEyeRSmile", + "GroupId": "", + "Name": "右眼 微笑" + }, + { + "Id": "Param3", + "GroupId": "", + "Name": "挥手" + }, + { + "Id": "Param", + "GroupId": "ParamGroup", + "Name": "开启闪电" + }, + { + "Id": "Param2", + "GroupId": "ParamGroup", + "Name": "闪电划过" + }, + { + "Id": "Param4", + "GroupId": "ParamGroup2", + "Name": "表情:thuglife" + }, + { + "Id": "Param5", + "GroupId": "ParamGroup2", + "Name": "表情:升天" + }, + { + "Id": "ParamEyeBallX", + "GroupId": "", + "Name": "眼球 X" + }, + { + "Id": "ParamEyeBallY", + "GroupId": "", + "Name": "眼球 Y" + }, + { + "Id": "ParamBrowLY", + "GroupId": "", + "Name": "左眉上下" + }, + { + "Id": "ParamBrowRY", + "GroupId": "", + "Name": "右眉 上下" + }, + { + "Id": "ParamBrowLX", + "GroupId": "", + "Name": "左眉 左右" + }, + { + "Id": "ParamBrowRX", + "GroupId": "", + "Name": "右眉 左右" + }, + { + "Id": "ParamBrowLAngle", + "GroupId": "", + "Name": "左眉 角度" + }, + { + "Id": "ParamBrowRAngle", + "GroupId": "", + "Name": "右眉 角度" + }, + { + "Id": "ParamBrowLForm", + "GroupId": "", + "Name": "左眉 変形" + }, + { + "Id": "ParamBrowRForm", + "GroupId": "", + "Name": "右眉 変形" + }, + { + "Id": "ParamMouthForm", + "GroupId": "", + "Name": "嘴部 变形" + }, + { + "Id": "ParamMouthOpenY", + "GroupId": "", + "Name": "嘴巴 张开和闭合" + }, + { + "Id": "ParamCheek", + "GroupId": "", + "Name": "脸颊" + }, + { + "Id": "ParamBodyAngleX", + "GroupId": "", + "Name": "身体旋转 X" + }, + { + "Id": "ParamBodyAngleY", + "GroupId": "", + "Name": "身体旋转 Y" + }, + { + "Id": "ParamBodyAngleZ", + "GroupId": "", + "Name": "身体旋转 Z" + }, + { + "Id": "ParamBreath", + "GroupId": "", + "Name": "呼吸" + }, + { + "Id": "ParamHairFront", + "GroupId": "", + "Name": "摇动 前发" + }, + { + "Id": "ParamHairSide", + "GroupId": "", + "Name": "摇动 侧发" + }, + { + "Id": "ParamHairBack", + "GroupId": "", + "Name": "摇动 后发" + } + ], + "ParameterGroups": [ + { + "Id": "ParamGroup", + "GroupId": "", + "Name": "闪电" + }, + { + "Id": "ParamGroup2", + "GroupId": "", + "Name": "表情" + } + ], + "Parts": [ + { + "Id": "Part11", + "Name": "demomodel.psd(未找到对应图层)" + }, + { + "Id": "Part7", + "Name": "demomodel.psd(未找到对应图层)" + }, + { + "Id": "Part3", + "Name": "demomodel.psd(未找到对应图层)" + }, + { + "Id": "Part2", + "Name": "demomodel.psd(未找到对应图层)" + }, + { + "Id": "Part", + "Name": "demomodel.psd(未找到对应图层)" + }, + { + "Id": "Part10", + "Name": "天使环" + }, + { + "Id": "Part5", + "Name": "demomodel.psd(未找到对应图层)" + }, + { + "Id": "PartSketch0", + "Name": "[ 参考图 ]" + }, + { + "Id": "Part8", + "Name": "thug life" + }, + { + "Id": "Part6", + "Name": "闪电" + }, + { + "Id": "Part4", + "Name": "闪电" + } + ] } diff --git a/public/models/keyboard/exp_1.exp3.json b/public/models/keyboard/exp_1.exp3.json index 05dd096..285e4c1 100755 --- a/public/models/keyboard/exp_1.exp3.json +++ b/public/models/keyboard/exp_1.exp3.json @@ -1,15 +1,15 @@ { - "Type": "Live2D Expression", - "Parameters": [ - { - "Id": "ParamEyeLOpen", - "Value": 0.321, - "Blend": "Multiply" - }, - { - "Id": "ParamEyeROpen", - "Value": 0.313, - "Blend": "Multiply" - } - ] + "Type": "Live2D Expression", + "Parameters": [ + { + "Id": "ParamEyeLOpen", + "Value": 0.321, + "Blend": "Multiply" + }, + { + "Id": "ParamEyeROpen", + "Value": 0.313, + "Blend": "Multiply" + } + ] } diff --git a/public/models/keyboard/exp_2.exp3.json b/public/models/keyboard/exp_2.exp3.json index db4d68d..0c389fe 100755 --- a/public/models/keyboard/exp_2.exp3.json +++ b/public/models/keyboard/exp_2.exp3.json @@ -1,10 +1,10 @@ { - "Type": "Live2D Expression", - "Parameters": [ - { - "Id": "ParamEyeLOpen", - "Value": -1, - "Blend": "Add" - } - ] + "Type": "Live2D Expression", + "Parameters": [ + { + "Id": "ParamEyeLOpen", + "Value": -1, + "Blend": "Add" + } + ] } diff --git a/public/models/keyboard/live2d_expression0.exp3.json b/public/models/keyboard/live2d_expression0.exp3.json index 21f59d3..4162d04 100755 --- a/public/models/keyboard/live2d_expression0.exp3.json +++ b/public/models/keyboard/live2d_expression0.exp3.json @@ -1,4 +1,4 @@ { - "Type": "Live2D Expression", - "Parameters": [] + "Type": "Live2D Expression", + "Parameters": [] } diff --git a/public/models/keyboard/live2d_expression1.exp3.json b/public/models/keyboard/live2d_expression1.exp3.json index 8308da7..d87ba5d 100755 --- a/public/models/keyboard/live2d_expression1.exp3.json +++ b/public/models/keyboard/live2d_expression1.exp3.json @@ -1,11 +1,11 @@ { - "Type": "Live2D Expression", - "FadeInTime": 0.8, - "Parameters": [ - { - "Id": "Param4", - "Value": 1, - "Blend": "Add" - } - ] + "Type": "Live2D Expression", + "FadeInTime": 0.8, + "Parameters": [ + { + "Id": "Param4", + "Value": 1, + "Blend": "Add" + } + ] } diff --git a/public/models/keyboard/live2d_expression2.exp3.json b/public/models/keyboard/live2d_expression2.exp3.json index 08b159a..2008f51 100755 --- a/public/models/keyboard/live2d_expression2.exp3.json +++ b/public/models/keyboard/live2d_expression2.exp3.json @@ -1,11 +1,11 @@ { - "Type": "Live2D Expression", - "FadeInTime": 0.5, - "Parameters": [ - { - "Id": "Param5", - "Value": 1, - "Blend": "Add" - } - ] + "Type": "Live2D Expression", + "FadeInTime": 0.5, + "Parameters": [ + { + "Id": "Param5", + "Value": 1, + "Blend": "Add" + } + ] } diff --git a/public/models/keyboard/live2d_motion1.motion3.json b/public/models/keyboard/live2d_motion1.motion3.json index 4b1d0fe..42c68d4 100755 --- a/public/models/keyboard/live2d_motion1.motion3.json +++ b/public/models/keyboard/live2d_motion1.motion3.json @@ -1,32 +1,76 @@ { - "Version": 3, - "Meta": { - "Duration": 1.633, - "Fps": 30.0, - "Loop": true, - "AreBeziersRestricted": false, - "CurveCount": 2, - "TotalSegmentCount": 8, - "TotalPointCount": 20, - "UserDataCount": 0, - "TotalUserDataSize": 0 - }, - "Curves": [ - { - "Target": "Parameter", - "Id": "Param", - "Segments": [ - 0, 0, 1, 0.033, 0, 0.067, 1, 0.1, 1, 1, 0.411, 1, 0.722, 1, 1.033, 1, 1, - 1.189, 1, 1.344, 0, 1.5, 0, 0, 1.633, 0 - ] - }, - { - "Target": "Parameter", - "Id": "Param2", - "Segments": [ - 0, 0, 0, 0.067, 0, 1, 0.1, 0, 0.133, 0.142, 0.167, 0.2, 1, 0.489, 0.764, - 0.811, 1, 1.133, 1, 0, 1.633, 1 - ] - } - ] + "Version": 3, + "Meta": { + "Duration": 1.633, + "Fps": 30.0, + "Loop": true, + "AreBeziersRestricted": false, + "CurveCount": 2, + "TotalSegmentCount": 8, + "TotalPointCount": 20, + "UserDataCount": 0, + "TotalUserDataSize": 0 + }, + "Curves": [ + { + "Target": "Parameter", + "Id": "Param", + "Segments": [ + 0, + 0, + 1, + 0.033, + 0, + 0.067, + 1, + 0.1, + 1, + 1, + 0.411, + 1, + 0.722, + 1, + 1.033, + 1, + 1, + 1.189, + 1, + 1.344, + 0, + 1.5, + 0, + 0, + 1.633, + 0 + ] + }, + { + "Target": "Parameter", + "Id": "Param2", + "Segments": [ + 0, + 0, + 0, + 0.067, + 0, + 1, + 0.1, + 0, + 0.133, + 0.142, + 0.167, + 0.2, + 1, + 0.489, + 0.764, + 0.811, + 1, + 1.133, + 1, + 0, + 1.633, + 1 + ] + } + ] } diff --git a/public/models/keyboard/live2d_motion2.motion3.json b/public/models/keyboard/live2d_motion2.motion3.json index 5e1a63e..bae53b4 100755 --- a/public/models/keyboard/live2d_motion2.motion3.json +++ b/public/models/keyboard/live2d_motion2.motion3.json @@ -1,30 +1,77 @@ { - "Version": 3, - "Meta": { - "Duration": 2.333, - "Fps": 30.0, - "Loop": true, - "AreBeziersRestricted": true, - "CurveCount": 2, - "TotalSegmentCount": 7, - "TotalPointCount": 21, - "UserDataCount": 0, - "TotalUserDataSize": 0 - }, - "Curves": [ - { - "Target": "Parameter", - "Id": "CatParamLeftHandDown", - "Segments": [0, 0, 0, 2.333, 0] - }, - { - "Target": "Parameter", - "Id": "Param3", - "Segments": [ - 0, 0, 1, 0.133, 0, 0.267, 30, 0.4, 30, 1, 0.522, 30, 0.644, 0, 0.767, 0, - 1, 0.9, 0, 1.033, 30, 1.167, 30, 1, 1.3, 30, 1.433, 0, 1.567, 0, 1, 1.7, - 0, 1.833, 30, 1.967, 30, 1, 2.089, 30, 2.211, 0, 2.333, 0 - ] - } - ] + "Version": 3, + "Meta": { + "Duration": 2.333, + "Fps": 30.0, + "Loop": true, + "AreBeziersRestricted": true, + "CurveCount": 2, + "TotalSegmentCount": 7, + "TotalPointCount": 21, + "UserDataCount": 0, + "TotalUserDataSize": 0 + }, + "Curves": [ + { + "Target": "Parameter", + "Id": "CatParamLeftHandDown", + "Segments": [ + 0, + 0, + 0, + 2.333, + 0 + ] + }, + { + "Target": "Parameter", + "Id": "Param3", + "Segments": [ + 0, + 0, + 1, + 0.133, + 0, + 0.267, + 30, + 0.4, + 30, + 1, + 0.522, + 30, + 0.644, + 0, + 0.767, + 0, + 1, + 0.9, + 0, + 1.033, + 30, + 1.167, + 30, + 1, + 1.3, + 30, + 1.433, + 0, + 1.567, + 0, + 1, + 1.7, + 0, + 1.833, + 30, + 1.967, + 30, + 1, + 2.089, + 30, + 2.211, + 0, + 2.333, + 0 + ] + } + ] } diff --git a/public/models/standard/cat.model3.json b/public/models/standard/cat.model3.json index 935a0ff..e666036 100755 --- a/public/models/standard/cat.model3.json +++ b/public/models/standard/cat.model3.json @@ -1,67 +1,70 @@ { - "Version": 3, - "FileReferences": { - "Moc": "demomodel.moc3", - "Textures": [ - "demomodel.1024/texture_00.png", - "demomodel.1024/texture_01.png", - "demomodel.1024/texture_02.png" - ], - "DisplayInfo": "demomodel.cdi3.json", - "Expressions": [ - { - "Name": "live2d_expression0.exp3.json", - "File": "live2d_expression0.exp3.json" - }, - { - "Name": "live2d_expression1.exp3.json", - "File": "live2d_expression1.exp3.json" - }, - { - "Name": "live2d_expression2.exp3.json", - "File": "live2d_expression2.exp3.json" - } - ], - "Motions": { - "CAT_motion": [ - { - "File": "live2d_motion1.motion3.json", - "Sound": "live2d_motion1.flac", - "FadeInTime": 0, - "FadeOutTime": 0 - }, - { - "File": "live2d_motion2.motion3.json", - "FadeInTime": 0, - "FadeOutTime": 0 - } - ], - "CAT_motion_lock": [ - { - "File": "live2d_motion1.motion3.json", - "Sound": "live2d_motion1.flac", - "FadeInTime": 0, - "FadeOutTime": 0 - }, - { - "File": "live2d_motion2.motion3.json", - "FadeInTime": 0, - "FadeOutTime": 0 - } - ] - } - }, - "Groups": [ - { - "Target": "Parameter", - "Name": "EyeBlink", - "Ids": ["ParamEyeLOpen", "ParamEyeROpen"] - }, - { - "Target": "Parameter", - "Name": "LipSync", - "Ids": [] - } - ], - "HitAreas": [] + "Version": 3, + "FileReferences": { + "Moc": "demomodel.moc3", + "Textures": [ + "demomodel.1024/texture_00.png", + "demomodel.1024/texture_01.png", + "demomodel.1024/texture_02.png" + ], + "DisplayInfo": "demomodel.cdi3.json", + "Expressions": [ + { + "Name": "live2d_expression0.exp3.json", + "File": "live2d_expression0.exp3.json" + }, + { + "Name": "live2d_expression1.exp3.json", + "File": "live2d_expression1.exp3.json" + }, + { + "Name": "live2d_expression2.exp3.json", + "File": "live2d_expression2.exp3.json" + } + ], + "Motions": { + "CAT_motion": [ + { + "File": "live2d_motion1.motion3.json", + "Sound": "live2d_motion1.flac", + "FadeInTime": 0, + "FadeOutTime": 0 + }, + { + "File": "live2d_motion2.motion3.json", + "FadeInTime": 0, + "FadeOutTime": 0 + } + ], + "CAT_motion_lock": [ + { + "File": "live2d_motion1.motion3.json", + "Sound": "live2d_motion1.flac", + "FadeInTime": 0, + "FadeOutTime": 0 + }, + { + "File": "live2d_motion2.motion3.json", + "FadeInTime": 0, + "FadeOutTime": 0 + } + ] + } + }, + "Groups": [ + { + "Target": "Parameter", + "Name": "EyeBlink", + "Ids": [ + "ParamEyeLOpen", + "ParamEyeROpen" + ] + }, + { + "Target": "Parameter", + "Name": "LipSync", + "Ids": [] + } + ], + "HitAreas": [] } diff --git a/public/models/standard/demomodel.cdi3.json b/public/models/standard/demomodel.cdi3.json index 81c9347..3cabe9a 100755 --- a/public/models/standard/demomodel.cdi3.json +++ b/public/models/standard/demomodel.cdi3.json @@ -1,244 +1,244 @@ { - "Version": 3, - "Parameters": [ - { - "Id": "ParamAngleX", - "GroupId": "", - "Name": "角度 X" - }, - { - "Id": "ParamAngleY", - "GroupId": "", - "Name": "角度 Y" - }, - { - "Id": "ParamMouseX", - "GroupId": "", - "Name": "鼠标X" - }, - { - "Id": "ParamMouseY", - "GroupId": "", - "Name": "鼠标Y" - }, - { - "Id": "ParamMouseLeftDown", - "GroupId": "", - "Name": "鼠标左键按下" - }, - { - "Id": "ParamMouseRightDown", - "GroupId": "", - "Name": "鼠标右键按下" - }, - { - "Id": "CatParamLeftHandDown", - "GroupId": "", - "Name": "键盘按下" - }, - { - "Id": "ParamAngleZ", - "GroupId": "", - "Name": "角度 Z" - }, - { - "Id": "ParamEyeLOpen", - "GroupId": "", - "Name": "左眼 开闭" - }, - { - "Id": "ParamEyeLSmile", - "GroupId": "", - "Name": "左眼 微笑" - }, - { - "Id": "ParamEyeROpen", - "GroupId": "", - "Name": "右眼" - }, - { - "Id": "ParamEyeRSmile", - "GroupId": "", - "Name": "右眼 微笑" - }, - { - "Id": "Param3", - "GroupId": "", - "Name": "挥手" - }, - { - "Id": "Param", - "GroupId": "ParamGroup", - "Name": "开启闪电" - }, - { - "Id": "Param2", - "GroupId": "ParamGroup", - "Name": "闪电划过" - }, - { - "Id": "Param4", - "GroupId": "ParamGroup2", - "Name": "表情:thuglife" - }, - { - "Id": "Param5", - "GroupId": "ParamGroup2", - "Name": "表情:升天" - }, - { - "Id": "ParamEyeBallX", - "GroupId": "", - "Name": "眼球 X" - }, - { - "Id": "ParamEyeBallY", - "GroupId": "", - "Name": "眼球 Y" - }, - { - "Id": "ParamBrowLY", - "GroupId": "", - "Name": "左眉上下" - }, - { - "Id": "ParamBrowRY", - "GroupId": "", - "Name": "右眉 上下" - }, - { - "Id": "ParamBrowLX", - "GroupId": "", - "Name": "左眉 左右" - }, - { - "Id": "ParamBrowRX", - "GroupId": "", - "Name": "右眉 左右" - }, - { - "Id": "ParamBrowLAngle", - "GroupId": "", - "Name": "左眉 角度" - }, - { - "Id": "ParamBrowRAngle", - "GroupId": "", - "Name": "右眉 角度" - }, - { - "Id": "ParamBrowLForm", - "GroupId": "", - "Name": "左眉 変形" - }, - { - "Id": "ParamBrowRForm", - "GroupId": "", - "Name": "右眉 変形" - }, - { - "Id": "ParamMouthForm", - "GroupId": "", - "Name": "嘴部 变形" - }, - { - "Id": "ParamMouthOpenY", - "GroupId": "", - "Name": "嘴巴 张开和闭合" - }, - { - "Id": "ParamCheek", - "GroupId": "", - "Name": "脸颊" - }, - { - "Id": "ParamBodyAngleX", - "GroupId": "", - "Name": "身体旋转 X" - }, - { - "Id": "ParamBodyAngleY", - "GroupId": "", - "Name": "身体旋转 Y" - }, - { - "Id": "ParamBodyAngleZ", - "GroupId": "", - "Name": "身体旋转 Z" - }, - { - "Id": "ParamBreath", - "GroupId": "", - "Name": "呼吸" - }, - { - "Id": "ParamHairFront", - "GroupId": "", - "Name": "摇动 前发" - }, - { - "Id": "ParamHairSide", - "GroupId": "", - "Name": "摇动 侧发" - }, - { - "Id": "ParamHairBack", - "GroupId": "", - "Name": "摇动 后发" - } - ], - "ParameterGroups": [ - { - "Id": "ParamGroup", - "GroupId": "", - "Name": "闪电" - }, - { - "Id": "ParamGroup2", - "GroupId": "", - "Name": "表情" - } - ], - "Parts": [ - { - "Id": "Part11", - "Name": "demomodel.psd(未找到对应图层)" - }, - { - "Id": "Part7", - "Name": "demomodel.psd(未找到对应图层)" - }, - { - "Id": "Part3", - "Name": "demomodel.psd(未找到对应图层)" - }, - { - "Id": "Part2", - "Name": "demomodel.psd(未找到对应图层)" - }, - { - "Id": "Part", - "Name": "demomodel.psd(未找到对应图层)" - }, - { - "Id": "Part10", - "Name": "天使环" - }, - { - "Id": "Part5", - "Name": "demomodel.psd(未找到对应图层)" - }, - { - "Id": "Part8", - "Name": "thug life" - }, - { - "Id": "Part6", - "Name": "闪电" - }, - { - "Id": "Part4", - "Name": "闪电" - } - ] + "Version": 3, + "Parameters": [ + { + "Id": "ParamAngleX", + "GroupId": "", + "Name": "角度 X" + }, + { + "Id": "ParamAngleY", + "GroupId": "", + "Name": "角度 Y" + }, + { + "Id": "ParamMouseX", + "GroupId": "", + "Name": "鼠标X" + }, + { + "Id": "ParamMouseY", + "GroupId": "", + "Name": "鼠标Y" + }, + { + "Id": "ParamMouseLeftDown", + "GroupId": "", + "Name": "鼠标左键按下" + }, + { + "Id": "ParamMouseRightDown", + "GroupId": "", + "Name": "鼠标右键按下" + }, + { + "Id": "CatParamLeftHandDown", + "GroupId": "", + "Name": "键盘按下" + }, + { + "Id": "ParamAngleZ", + "GroupId": "", + "Name": "角度 Z" + }, + { + "Id": "ParamEyeLOpen", + "GroupId": "", + "Name": "左眼 开闭" + }, + { + "Id": "ParamEyeLSmile", + "GroupId": "", + "Name": "左眼 微笑" + }, + { + "Id": "ParamEyeROpen", + "GroupId": "", + "Name": "右眼" + }, + { + "Id": "ParamEyeRSmile", + "GroupId": "", + "Name": "右眼 微笑" + }, + { + "Id": "Param3", + "GroupId": "", + "Name": "挥手" + }, + { + "Id": "Param", + "GroupId": "ParamGroup", + "Name": "开启闪电" + }, + { + "Id": "Param2", + "GroupId": "ParamGroup", + "Name": "闪电划过" + }, + { + "Id": "Param4", + "GroupId": "ParamGroup2", + "Name": "表情:thuglife" + }, + { + "Id": "Param5", + "GroupId": "ParamGroup2", + "Name": "表情:升天" + }, + { + "Id": "ParamEyeBallX", + "GroupId": "", + "Name": "眼球 X" + }, + { + "Id": "ParamEyeBallY", + "GroupId": "", + "Name": "眼球 Y" + }, + { + "Id": "ParamBrowLY", + "GroupId": "", + "Name": "左眉上下" + }, + { + "Id": "ParamBrowRY", + "GroupId": "", + "Name": "右眉 上下" + }, + { + "Id": "ParamBrowLX", + "GroupId": "", + "Name": "左眉 左右" + }, + { + "Id": "ParamBrowRX", + "GroupId": "", + "Name": "右眉 左右" + }, + { + "Id": "ParamBrowLAngle", + "GroupId": "", + "Name": "左眉 角度" + }, + { + "Id": "ParamBrowRAngle", + "GroupId": "", + "Name": "右眉 角度" + }, + { + "Id": "ParamBrowLForm", + "GroupId": "", + "Name": "左眉 変形" + }, + { + "Id": "ParamBrowRForm", + "GroupId": "", + "Name": "右眉 変形" + }, + { + "Id": "ParamMouthForm", + "GroupId": "", + "Name": "嘴部 变形" + }, + { + "Id": "ParamMouthOpenY", + "GroupId": "", + "Name": "嘴巴 张开和闭合" + }, + { + "Id": "ParamCheek", + "GroupId": "", + "Name": "脸颊" + }, + { + "Id": "ParamBodyAngleX", + "GroupId": "", + "Name": "身体旋转 X" + }, + { + "Id": "ParamBodyAngleY", + "GroupId": "", + "Name": "身体旋转 Y" + }, + { + "Id": "ParamBodyAngleZ", + "GroupId": "", + "Name": "身体旋转 Z" + }, + { + "Id": "ParamBreath", + "GroupId": "", + "Name": "呼吸" + }, + { + "Id": "ParamHairFront", + "GroupId": "", + "Name": "摇动 前发" + }, + { + "Id": "ParamHairSide", + "GroupId": "", + "Name": "摇动 侧发" + }, + { + "Id": "ParamHairBack", + "GroupId": "", + "Name": "摇动 后发" + } + ], + "ParameterGroups": [ + { + "Id": "ParamGroup", + "GroupId": "", + "Name": "闪电" + }, + { + "Id": "ParamGroup2", + "GroupId": "", + "Name": "表情" + } + ], + "Parts": [ + { + "Id": "Part11", + "Name": "demomodel.psd(未找到对应图层)" + }, + { + "Id": "Part7", + "Name": "demomodel.psd(未找到对应图层)" + }, + { + "Id": "Part3", + "Name": "demomodel.psd(未找到对应图层)" + }, + { + "Id": "Part2", + "Name": "demomodel.psd(未找到对应图层)" + }, + { + "Id": "Part", + "Name": "demomodel.psd(未找到对应图层)" + }, + { + "Id": "Part10", + "Name": "天使环" + }, + { + "Id": "Part5", + "Name": "demomodel.psd(未找到对应图层)" + }, + { + "Id": "Part8", + "Name": "thug life" + }, + { + "Id": "Part6", + "Name": "闪电" + }, + { + "Id": "Part4", + "Name": "闪电" + } + ] } diff --git a/public/models/standard/exp_1.exp3.json b/public/models/standard/exp_1.exp3.json index 05dd096..285e4c1 100755 --- a/public/models/standard/exp_1.exp3.json +++ b/public/models/standard/exp_1.exp3.json @@ -1,15 +1,15 @@ { - "Type": "Live2D Expression", - "Parameters": [ - { - "Id": "ParamEyeLOpen", - "Value": 0.321, - "Blend": "Multiply" - }, - { - "Id": "ParamEyeROpen", - "Value": 0.313, - "Blend": "Multiply" - } - ] + "Type": "Live2D Expression", + "Parameters": [ + { + "Id": "ParamEyeLOpen", + "Value": 0.321, + "Blend": "Multiply" + }, + { + "Id": "ParamEyeROpen", + "Value": 0.313, + "Blend": "Multiply" + } + ] } diff --git a/public/models/standard/exp_2.exp3.json b/public/models/standard/exp_2.exp3.json index db4d68d..0c389fe 100755 --- a/public/models/standard/exp_2.exp3.json +++ b/public/models/standard/exp_2.exp3.json @@ -1,10 +1,10 @@ { - "Type": "Live2D Expression", - "Parameters": [ - { - "Id": "ParamEyeLOpen", - "Value": -1, - "Blend": "Add" - } - ] + "Type": "Live2D Expression", + "Parameters": [ + { + "Id": "ParamEyeLOpen", + "Value": -1, + "Blend": "Add" + } + ] } diff --git a/public/models/standard/live2d_expression0.exp3.json b/public/models/standard/live2d_expression0.exp3.json index 21f59d3..4162d04 100755 --- a/public/models/standard/live2d_expression0.exp3.json +++ b/public/models/standard/live2d_expression0.exp3.json @@ -1,4 +1,4 @@ { - "Type": "Live2D Expression", - "Parameters": [] + "Type": "Live2D Expression", + "Parameters": [] } diff --git a/public/models/standard/live2d_expression1.exp3.json b/public/models/standard/live2d_expression1.exp3.json index 8308da7..d87ba5d 100755 --- a/public/models/standard/live2d_expression1.exp3.json +++ b/public/models/standard/live2d_expression1.exp3.json @@ -1,11 +1,11 @@ { - "Type": "Live2D Expression", - "FadeInTime": 0.8, - "Parameters": [ - { - "Id": "Param4", - "Value": 1, - "Blend": "Add" - } - ] + "Type": "Live2D Expression", + "FadeInTime": 0.8, + "Parameters": [ + { + "Id": "Param4", + "Value": 1, + "Blend": "Add" + } + ] } diff --git a/public/models/standard/live2d_expression2.exp3.json b/public/models/standard/live2d_expression2.exp3.json index 08b159a..2008f51 100755 --- a/public/models/standard/live2d_expression2.exp3.json +++ b/public/models/standard/live2d_expression2.exp3.json @@ -1,11 +1,11 @@ { - "Type": "Live2D Expression", - "FadeInTime": 0.5, - "Parameters": [ - { - "Id": "Param5", - "Value": 1, - "Blend": "Add" - } - ] + "Type": "Live2D Expression", + "FadeInTime": 0.5, + "Parameters": [ + { + "Id": "Param5", + "Value": 1, + "Blend": "Add" + } + ] } diff --git a/public/models/standard/live2d_motion1.motion3.json b/public/models/standard/live2d_motion1.motion3.json index 4b1d0fe..42c68d4 100755 --- a/public/models/standard/live2d_motion1.motion3.json +++ b/public/models/standard/live2d_motion1.motion3.json @@ -1,32 +1,76 @@ { - "Version": 3, - "Meta": { - "Duration": 1.633, - "Fps": 30.0, - "Loop": true, - "AreBeziersRestricted": false, - "CurveCount": 2, - "TotalSegmentCount": 8, - "TotalPointCount": 20, - "UserDataCount": 0, - "TotalUserDataSize": 0 - }, - "Curves": [ - { - "Target": "Parameter", - "Id": "Param", - "Segments": [ - 0, 0, 1, 0.033, 0, 0.067, 1, 0.1, 1, 1, 0.411, 1, 0.722, 1, 1.033, 1, 1, - 1.189, 1, 1.344, 0, 1.5, 0, 0, 1.633, 0 - ] - }, - { - "Target": "Parameter", - "Id": "Param2", - "Segments": [ - 0, 0, 0, 0.067, 0, 1, 0.1, 0, 0.133, 0.142, 0.167, 0.2, 1, 0.489, 0.764, - 0.811, 1, 1.133, 1, 0, 1.633, 1 - ] - } - ] + "Version": 3, + "Meta": { + "Duration": 1.633, + "Fps": 30.0, + "Loop": true, + "AreBeziersRestricted": false, + "CurveCount": 2, + "TotalSegmentCount": 8, + "TotalPointCount": 20, + "UserDataCount": 0, + "TotalUserDataSize": 0 + }, + "Curves": [ + { + "Target": "Parameter", + "Id": "Param", + "Segments": [ + 0, + 0, + 1, + 0.033, + 0, + 0.067, + 1, + 0.1, + 1, + 1, + 0.411, + 1, + 0.722, + 1, + 1.033, + 1, + 1, + 1.189, + 1, + 1.344, + 0, + 1.5, + 0, + 0, + 1.633, + 0 + ] + }, + { + "Target": "Parameter", + "Id": "Param2", + "Segments": [ + 0, + 0, + 0, + 0.067, + 0, + 1, + 0.1, + 0, + 0.133, + 0.142, + 0.167, + 0.2, + 1, + 0.489, + 0.764, + 0.811, + 1, + 1.133, + 1, + 0, + 1.633, + 1 + ] + } + ] } diff --git a/public/models/standard/live2d_motion2.motion3.json b/public/models/standard/live2d_motion2.motion3.json index 5e1a63e..bae53b4 100755 --- a/public/models/standard/live2d_motion2.motion3.json +++ b/public/models/standard/live2d_motion2.motion3.json @@ -1,30 +1,77 @@ { - "Version": 3, - "Meta": { - "Duration": 2.333, - "Fps": 30.0, - "Loop": true, - "AreBeziersRestricted": true, - "CurveCount": 2, - "TotalSegmentCount": 7, - "TotalPointCount": 21, - "UserDataCount": 0, - "TotalUserDataSize": 0 - }, - "Curves": [ - { - "Target": "Parameter", - "Id": "CatParamLeftHandDown", - "Segments": [0, 0, 0, 2.333, 0] - }, - { - "Target": "Parameter", - "Id": "Param3", - "Segments": [ - 0, 0, 1, 0.133, 0, 0.267, 30, 0.4, 30, 1, 0.522, 30, 0.644, 0, 0.767, 0, - 1, 0.9, 0, 1.033, 30, 1.167, 30, 1, 1.3, 30, 1.433, 0, 1.567, 0, 1, 1.7, - 0, 1.833, 30, 1.967, 30, 1, 2.089, 30, 2.211, 0, 2.333, 0 - ] - } - ] + "Version": 3, + "Meta": { + "Duration": 2.333, + "Fps": 30.0, + "Loop": true, + "AreBeziersRestricted": true, + "CurveCount": 2, + "TotalSegmentCount": 7, + "TotalPointCount": 21, + "UserDataCount": 0, + "TotalUserDataSize": 0 + }, + "Curves": [ + { + "Target": "Parameter", + "Id": "CatParamLeftHandDown", + "Segments": [ + 0, + 0, + 0, + 2.333, + 0 + ] + }, + { + "Target": "Parameter", + "Id": "Param3", + "Segments": [ + 0, + 0, + 1, + 0.133, + 0, + 0.267, + 30, + 0.4, + 30, + 1, + 0.522, + 30, + 0.644, + 0, + 0.767, + 0, + 1, + 0.9, + 0, + 1.033, + 30, + 1.167, + 30, + 1, + 1.3, + 30, + 1.433, + 0, + 1.567, + 0, + 1, + 1.7, + 0, + 1.833, + 30, + 1.967, + 30, + 1, + 2.089, + 30, + 2.211, + 0, + 2.333, + 0 + ] + } + ] } diff --git a/scripts/buildIcon.ts b/scripts/buildIcon.ts new file mode 100644 index 0000000..e1ff799 --- /dev/null +++ b/scripts/buildIcon.ts @@ -0,0 +1,12 @@ +import { execSync } from 'node:child_process' +import { env, platform } from 'node:process' + +(() => { + const isMac = env.PLATFORM?.startsWith('macos') ?? platform === 'darwin' + + const logoName = isMac ? 'logo-mac' : 'logo' + + const command = `tauri icon src-tauri/assets/${logoName}.png` + + execSync(command, { stdio: 'inherit' }) +})() diff --git a/scripts/release.ts b/scripts/release.ts new file mode 100644 index 0000000..d1a5e6d --- /dev/null +++ b/scripts/release.ts @@ -0,0 +1,23 @@ +import { readFileSync, writeFileSync } from 'node:fs' +import { dirname, resolve } from 'node:path' +import { fileURLToPath } from 'node:url' +import { name, version } from '../package.json' + +const __dirname = dirname(fileURLToPath(import.meta.url)); + +(() => { + const tomlPath = resolve(__dirname, '..', 'src-tauri', 'Cargo.toml') + const lockPath = resolve(__dirname, '..', 'Cargo.lock') + + for (const path of [tomlPath, lockPath]) { + let content = readFileSync(path, 'utf-8') + + const regexp = new RegExp( + `(name\\s*=\\s*"${name}"\\s*version\\s*=\\s*)"(\\d+\\.\\d+\\.\\d+(-\\w+\\.\\d+)?)"`, + ) + + content = content.replace(regexp, `$1"${version}"`) + + writeFileSync(path, content) + } +})() diff --git a/src-tauri/Cargo.toml b/src-tauri/Cargo.toml index 1458b90..bdee83b 100644 --- a/src-tauri/Cargo.toml +++ b/src-tauri/Cargo.toml @@ -2,7 +2,7 @@ name = "bongo-cat" version = "0.0.0" description = "A Tauri App" -authors = ["ayangweb"] +authors = [ "ayangweb" ] edition = "2021" # See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html @@ -12,19 +12,31 @@ edition = "2021" # to make the lib name unique and wouldn't conflict with the bin name. # This seems to be only an issue on Windows, see https://github.com/rust-lang/cargo/issues/8519 name = "bongo_cat_lib" -crate-type = ["staticlib", "cdylib", "rlib"] +crate-type = [ + "staticlib", + "cdylib", + "rlib" +] [build-dependencies] tauri-build = { version = "2", features = [] } [dependencies] -tauri = { workspace = true, features = ["macos-private-api", "tray-icon", "image-png"] } -serde = { workspace = true, features = ["derive"] } +tauri = { workspace = true, features = [ + "macos-private-api", + "tray-icon", + "image-png" +] } +serde = { workspace = true, features = [ "derive" ] } + serde_json.workspace = true + tauri-plugin-custom-window.workspace = true + rdev = "0.5" tauri-plugin-os = "2" tauri-plugin-process = "2" +tauri-plugin-opener = "2" [target."cfg(target_os = \"macos\")".dependencies] tauri-nspanel.workspace = true diff --git a/src-tauri/assets/logo-mac.png b/src-tauri/assets/logo-mac.png new file mode 100644 index 0000000..f3894cc Binary files /dev/null and b/src-tauri/assets/logo-mac.png differ diff --git a/src-tauri/assets/logo.png b/src-tauri/assets/logo.png index f3894cc..2718ae7 100644 Binary files a/src-tauri/assets/logo.png and b/src-tauri/assets/logo.png differ diff --git a/src-tauri/assets/tray.png b/src-tauri/assets/tray.png index 4907f53..2718ae7 100644 Binary files a/src-tauri/assets/tray.png and b/src-tauri/assets/tray.png differ diff --git a/src-tauri/capabilities/default.json b/src-tauri/capabilities/default.json index fba2e59..5ce132f 100644 --- a/src-tauri/capabilities/default.json +++ b/src-tauri/capabilities/default.json @@ -1,14 +1,17 @@ { - "$schema": "../gen/schemas/desktop-schema.json", - "identifier": "default", - "description": "Capability for the main window", - "windows": ["*"], - "permissions": [ - "core:default", - "core:window:allow-start-dragging", - "core:window:allow-set-size", - "custom-window:default", - "os:default", - "process:default" - ] + "$schema": "../gen/schemas/desktop-schema.json", + "identifier": "default", + "description": "Capability for the main window", + "windows": [ + "*" + ], + "permissions": [ + "core:default", + "core:window:allow-start-dragging", + "core:window:allow-set-size", + "custom-window:default", + "os:default", + "process:default", + "opener:default" + ] } diff --git a/src-tauri/src/core/setup/macos.rs b/src-tauri/src/core/setup/macos.rs index d62d7dc..27a28db 100644 --- a/src-tauri/src/core/setup/macos.rs +++ b/src-tauri/src/core/setup/macos.rs @@ -1,5 +1,8 @@ use tauri::{ActivationPolicy, AppHandle, Emitter, EventTarget, WebviewWindow}; -use tauri_nspanel::{cocoa::appkit::NSWindowCollectionBehavior, panel_delegate, WebviewWindowExt}; +use tauri_nspanel::{ + cocoa::appkit::{NSMainMenuWindowLevel, NSWindowCollectionBehavior}, + panel_delegate, WebviewWindowExt, +}; use tauri_plugin_custom_window::MAIN_WINDOW_LABEL; #[allow(non_upper_case_globals)] @@ -22,7 +25,7 @@ pub fn platform( let panel = main_window.to_panel().unwrap(); - panel.set_level(20); + panel.set_level(NSMainMenuWindowLevel); panel.set_style_mask(NSWindowStyleMaskNonActivatingPanel | NSResizableWindowMask); diff --git a/src-tauri/src/lib.rs b/src-tauri/src/lib.rs index 09518e0..d957bb7 100644 --- a/src-tauri/src/lib.rs +++ b/src-tauri/src/lib.rs @@ -23,6 +23,7 @@ pub fn run() { .plugin(tauri_plugin_custom_window::init()) .plugin(tauri_plugin_os::init()) .plugin(tauri_plugin_process::init()) + .plugin(tauri_plugin_opener::init()) .run(tauri::generate_context!()) .expect("error while running tauri application"); } diff --git a/src-tauri/src/plugins/window/Cargo.toml b/src-tauri/src/plugins/window/Cargo.toml index ea55b78..989136d 100644 --- a/src-tauri/src/plugins/window/Cargo.toml +++ b/src-tauri/src/plugins/window/Cargo.toml @@ -9,10 +9,11 @@ links = "tauri-plugin-custom-window" [dependencies] tauri.workspace = true + serde.workspace = true [build-dependencies] tauri-plugin.workspace = true [target."cfg(target_os = \"macos\")".dependencies] -tauri-nspanel.workspace = true \ No newline at end of file +tauri-nspanel.workspace = true diff --git a/src-tauri/src/plugins/window/permissions/default.toml b/src-tauri/src/plugins/window/permissions/default.toml index a0ab744..a4eac2e 100644 --- a/src-tauri/src/plugins/window/permissions/default.toml +++ b/src-tauri/src/plugins/window/permissions/default.toml @@ -2,4 +2,7 @@ [default] description = "Default permissions for the plugin" -permissions = ["allow-show-window", "allow-hide-window"] +permissions = [ + "allow-show-window", + "allow-hide-window" +] diff --git a/src-tauri/src/plugins/window/permissions/schemas/schema.json b/src-tauri/src/plugins/window/permissions/schemas/schema.json index d1783ed..028819b 100644 --- a/src-tauri/src/plugins/window/permissions/schemas/schema.json +++ b/src-tauri/src/plugins/window/permissions/schemas/schema.json @@ -1,286 +1,325 @@ { - "$schema": "http://json-schema.org/draft-07/schema#", - "title": "PermissionFile", - "description": "Permission file that can define a default permission, a set of permissions or a list of inlined permissions.", - "type": "object", - "properties": { - "default": { - "description": "The default permission set for the plugin", - "anyOf": [ - { - "$ref": "#/definitions/DefaultPermission" - }, - { - "type": "null" - } - ] - }, - "set": { - "description": "A list of permissions sets defined", - "type": "array", - "items": { - "$ref": "#/definitions/PermissionSet" - } - }, - "permission": { - "description": "A list of inlined permissions", - "default": [], - "type": "array", - "items": { - "$ref": "#/definitions/Permission" - } - } - }, - "definitions": { - "DefaultPermission": { - "description": "The default permission set of the plugin.\n\nWorks similarly to a permission with the \"default\" identifier.", - "type": "object", - "required": ["permissions"], - "properties": { - "version": { - "description": "The version of the permission.", - "type": ["integer", "null"], - "format": "uint64", - "minimum": 1.0 - }, - "description": { - "description": "Human-readable description of what the permission does. Tauri convention is to use `

` headings in markdown content for Tauri documentation generation purposes.", - "type": ["string", "null"] - }, - "permissions": { - "description": "All permissions this set contains.", - "type": "array", - "items": { - "type": "string" - } - } - } - }, - "PermissionSet": { - "description": "A set of direct permissions grouped together under a new name.", - "type": "object", - "required": ["description", "identifier", "permissions"], - "properties": { - "identifier": { - "description": "A unique identifier for the permission.", - "type": "string" - }, - "description": { - "description": "Human-readable description of what the permission does.", - "type": "string" - }, - "permissions": { - "description": "All permissions this set contains.", - "type": "array", - "items": { - "$ref": "#/definitions/PermissionKind" - } - } - } - }, - "Permission": { - "description": "Descriptions of explicit privileges of commands.\n\nIt can enable commands to be accessible in the frontend of the application.\n\nIf the scope is defined it can be used to fine grain control the access of individual or multiple commands.", - "type": "object", - "required": ["identifier"], - "properties": { - "version": { - "description": "The version of the permission.", - "type": ["integer", "null"], - "format": "uint64", - "minimum": 1.0 - }, - "identifier": { - "description": "A unique identifier for the permission.", - "type": "string" - }, - "description": { - "description": "Human-readable description of what the permission does. Tauri internal convention is to use `

` headings in markdown content for Tauri documentation generation purposes.", - "type": ["string", "null"] - }, - "commands": { - "description": "Allowed or denied commands when using this permission.", - "default": { - "allow": [], - "deny": [] - }, - "allOf": [ - { - "$ref": "#/definitions/Commands" - } - ] - }, - "scope": { - "description": "Allowed or denied scoped when using this permission.", - "allOf": [ - { - "$ref": "#/definitions/Scopes" - } - ] - }, - "platforms": { - "description": "Target platforms this permission applies. By default all platforms are affected by this permission.", - "type": ["array", "null"], - "items": { - "$ref": "#/definitions/Target" - } - } - } - }, - "Commands": { - "description": "Allowed and denied commands inside a permission.\n\nIf two commands clash inside of `allow` and `deny`, it should be denied by default.", - "type": "object", - "properties": { - "allow": { - "description": "Allowed command.", - "default": [], - "type": "array", - "items": { - "type": "string" - } - }, - "deny": { - "description": "Denied command, which takes priority.", - "default": [], - "type": "array", - "items": { - "type": "string" - } - } - } - }, - "Scopes": { - "description": "An argument for fine grained behavior control of Tauri commands.\n\nIt can be of any serde serializable type and is used to allow or prevent certain actions inside a Tauri command. The configured scope is passed to the command and will be enforced by the command implementation.\n\n## Example\n\n```json { \"allow\": [{ \"path\": \"$HOME/**\" }], \"deny\": [{ \"path\": \"$HOME/secret.txt\" }] } ```", - "type": "object", - "properties": { - "allow": { - "description": "Data that defines what is allowed by the scope.", - "type": ["array", "null"], - "items": { - "$ref": "#/definitions/Value" - } - }, - "deny": { - "description": "Data that defines what is denied by the scope. This should be prioritized by validation logic.", - "type": ["array", "null"], - "items": { - "$ref": "#/definitions/Value" - } - } - } - }, - "Value": { - "description": "All supported ACL values.", - "anyOf": [ - { - "description": "Represents a null JSON value.", - "type": "null" - }, - { - "description": "Represents a [`bool`].", - "type": "boolean" - }, - { - "description": "Represents a valid ACL [`Number`].", - "allOf": [ - { - "$ref": "#/definitions/Number" - } - ] - }, - { - "description": "Represents a [`String`].", - "type": "string" - }, - { - "description": "Represents a list of other [`Value`]s.", - "type": "array", - "items": { - "$ref": "#/definitions/Value" - } - }, - { - "description": "Represents a map of [`String`] keys to [`Value`]s.", - "type": "object", - "additionalProperties": { - "$ref": "#/definitions/Value" - } - } - ] - }, - "Number": { - "description": "A valid ACL number.", - "anyOf": [ - { - "description": "Represents an [`i64`].", - "type": "integer", - "format": "int64" - }, - { - "description": "Represents a [`f64`].", - "type": "number", - "format": "double" - } - ] - }, - "Target": { - "description": "Platform target.", - "oneOf": [ - { - "description": "MacOS.", - "type": "string", - "enum": ["macOS"] - }, - { - "description": "Windows.", - "type": "string", - "enum": ["windows"] - }, - { - "description": "Linux.", - "type": "string", - "enum": ["linux"] - }, - { - "description": "Android.", - "type": "string", - "enum": ["android"] - }, - { - "description": "iOS.", - "type": "string", - "enum": ["iOS"] - } - ] - }, - "PermissionKind": { - "type": "string", - "oneOf": [ - { - "description": "Enables the hide_window command without any pre-configured scope.", - "type": "string", - "const": "allow-hide-window" - }, - { - "description": "Denies the hide_window command without any pre-configured scope.", - "type": "string", - "const": "deny-hide-window" - }, - { - "description": "Enables the show_window command without any pre-configured scope.", - "type": "string", - "const": "allow-show-window" - }, - { - "description": "Denies the show_window command without any pre-configured scope.", - "type": "string", - "const": "deny-show-window" - }, - { - "description": "Default permissions for the plugin", - "type": "string", - "const": "default" - } - ] - } - } + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "PermissionFile", + "description": "Permission file that can define a default permission, a set of permissions or a list of inlined permissions.", + "type": "object", + "properties": { + "default": { + "description": "The default permission set for the plugin", + "anyOf": [ + { + "$ref": "#/definitions/DefaultPermission" + }, + { + "type": "null" + } + ] + }, + "set": { + "description": "A list of permissions sets defined", + "type": "array", + "items": { + "$ref": "#/definitions/PermissionSet" + } + }, + "permission": { + "description": "A list of inlined permissions", + "default": [], + "type": "array", + "items": { + "$ref": "#/definitions/Permission" + } + } + }, + "definitions": { + "DefaultPermission": { + "description": "The default permission set of the plugin.\n\nWorks similarly to a permission with the \"default\" identifier.", + "type": "object", + "required": [ + "permissions" + ], + "properties": { + "version": { + "description": "The version of the permission.", + "type": [ + "integer", + "null" + ], + "format": "uint64", + "minimum": 1.0 + }, + "description": { + "description": "Human-readable description of what the permission does. Tauri convention is to use `

` headings in markdown content for Tauri documentation generation purposes.", + "type": [ + "string", + "null" + ] + }, + "permissions": { + "description": "All permissions this set contains.", + "type": "array", + "items": { + "type": "string" + } + } + } + }, + "PermissionSet": { + "description": "A set of direct permissions grouped together under a new name.", + "type": "object", + "required": [ + "description", + "identifier", + "permissions" + ], + "properties": { + "identifier": { + "description": "A unique identifier for the permission.", + "type": "string" + }, + "description": { + "description": "Human-readable description of what the permission does.", + "type": "string" + }, + "permissions": { + "description": "All permissions this set contains.", + "type": "array", + "items": { + "$ref": "#/definitions/PermissionKind" + } + } + } + }, + "Permission": { + "description": "Descriptions of explicit privileges of commands.\n\nIt can enable commands to be accessible in the frontend of the application.\n\nIf the scope is defined it can be used to fine grain control the access of individual or multiple commands.", + "type": "object", + "required": [ + "identifier" + ], + "properties": { + "version": { + "description": "The version of the permission.", + "type": [ + "integer", + "null" + ], + "format": "uint64", + "minimum": 1.0 + }, + "identifier": { + "description": "A unique identifier for the permission.", + "type": "string" + }, + "description": { + "description": "Human-readable description of what the permission does. Tauri internal convention is to use `

` headings in markdown content for Tauri documentation generation purposes.", + "type": [ + "string", + "null" + ] + }, + "commands": { + "description": "Allowed or denied commands when using this permission.", + "default": { + "allow": [], + "deny": [] + }, + "allOf": [ + { + "$ref": "#/definitions/Commands" + } + ] + }, + "scope": { + "description": "Allowed or denied scoped when using this permission.", + "allOf": [ + { + "$ref": "#/definitions/Scopes" + } + ] + }, + "platforms": { + "description": "Target platforms this permission applies. By default all platforms are affected by this permission.", + "type": [ + "array", + "null" + ], + "items": { + "$ref": "#/definitions/Target" + } + } + } + }, + "Commands": { + "description": "Allowed and denied commands inside a permission.\n\nIf two commands clash inside of `allow` and `deny`, it should be denied by default.", + "type": "object", + "properties": { + "allow": { + "description": "Allowed command.", + "default": [], + "type": "array", + "items": { + "type": "string" + } + }, + "deny": { + "description": "Denied command, which takes priority.", + "default": [], + "type": "array", + "items": { + "type": "string" + } + } + } + }, + "Scopes": { + "description": "An argument for fine grained behavior control of Tauri commands.\n\nIt can be of any serde serializable type and is used to allow or prevent certain actions inside a Tauri command. The configured scope is passed to the command and will be enforced by the command implementation.\n\n## Example\n\n```json { \"allow\": [{ \"path\": \"$HOME/**\" }], \"deny\": [{ \"path\": \"$HOME/secret.txt\" }] } ```", + "type": "object", + "properties": { + "allow": { + "description": "Data that defines what is allowed by the scope.", + "type": [ + "array", + "null" + ], + "items": { + "$ref": "#/definitions/Value" + } + }, + "deny": { + "description": "Data that defines what is denied by the scope. This should be prioritized by validation logic.", + "type": [ + "array", + "null" + ], + "items": { + "$ref": "#/definitions/Value" + } + } + } + }, + "Value": { + "description": "All supported ACL values.", + "anyOf": [ + { + "description": "Represents a null JSON value.", + "type": "null" + }, + { + "description": "Represents a [`bool`].", + "type": "boolean" + }, + { + "description": "Represents a valid ACL [`Number`].", + "allOf": [ + { + "$ref": "#/definitions/Number" + } + ] + }, + { + "description": "Represents a [`String`].", + "type": "string" + }, + { + "description": "Represents a list of other [`Value`]s.", + "type": "array", + "items": { + "$ref": "#/definitions/Value" + } + }, + { + "description": "Represents a map of [`String`] keys to [`Value`]s.", + "type": "object", + "additionalProperties": { + "$ref": "#/definitions/Value" + } + } + ] + }, + "Number": { + "description": "A valid ACL number.", + "anyOf": [ + { + "description": "Represents an [`i64`].", + "type": "integer", + "format": "int64" + }, + { + "description": "Represents a [`f64`].", + "type": "number", + "format": "double" + } + ] + }, + "Target": { + "description": "Platform target.", + "oneOf": [ + { + "description": "MacOS.", + "type": "string", + "enum": [ + "macOS" + ] + }, + { + "description": "Windows.", + "type": "string", + "enum": [ + "windows" + ] + }, + { + "description": "Linux.", + "type": "string", + "enum": [ + "linux" + ] + }, + { + "description": "Android.", + "type": "string", + "enum": [ + "android" + ] + }, + { + "description": "iOS.", + "type": "string", + "enum": [ + "iOS" + ] + } + ] + }, + "PermissionKind": { + "type": "string", + "oneOf": [ + { + "description": "Enables the hide_window command without any pre-configured scope.", + "type": "string", + "const": "allow-hide-window" + }, + { + "description": "Denies the hide_window command without any pre-configured scope.", + "type": "string", + "const": "deny-hide-window" + }, + { + "description": "Enables the show_window command without any pre-configured scope.", + "type": "string", + "const": "allow-show-window" + }, + { + "description": "Denies the show_window command without any pre-configured scope.", + "type": "string", + "const": "deny-show-window" + }, + { + "description": "Default permissions for the plugin", + "type": "string", + "const": "default" + } + ] + } + } } diff --git a/src-tauri/tauri.conf.json b/src-tauri/tauri.conf.json index c1f8b29..3e04157 100644 --- a/src-tauri/tauri.conf.json +++ b/src-tauri/tauri.conf.json @@ -1,51 +1,59 @@ { - "$schema": "https://schema.tauri.app/config/2", - "productName": "BongoCat", - "version": "../package.json", - "identifier": "com.ayangweb.BongoCat", - "build": { - "beforeDevCommand": "pnpm dev", - "devUrl": "http://localhost:1420", - "beforeBuildCommand": "pnpm build", - "frontendDist": "../dist" - }, - "app": { - "macOSPrivateApi": true, - "windows": [ - { - "label": "main", - "title": "BongoCat", - "url": "index.html/#/", - "width": 408, - "height": 236, - "alwaysOnTop": true, - "transparent": true, - "decorations": false, - "acceptFirstMouse": true - }, - { - "label": "preference", - "title": "偏好设置", - "url": "index.html/#/preference", - "visible": false - } - ], - "security": { - "csp": null - } - }, - "bundle": { - "active": true, - "createUpdaterArtifacts": true, - "targets": ["nsis", "dmg", "app", "appimage", "deb", "rpm"], - "shortDescription": "BongoCat", - "icon": [ - "icons/32x32.png", - "icons/128x128.png", - "icons/128x128@2x.png", - "icons/icon.icns", - "icons/icon.ico" - ], - "resources": ["assets/tray.png"] - } + "$schema": "https://schema.tauri.app/config/2", + "productName": "BongoCat", + "version": "../package.json", + "identifier": "com.ayangweb.BongoCat", + "build": { + "beforeDevCommand": "pnpm dev", + "devUrl": "http://localhost:1420", + "beforeBuildCommand": "pnpm build", + "frontendDist": "../dist" + }, + "app": { + "macOSPrivateApi": true, + "windows": [ + { + "label": "main", + "title": "BongoCat", + "url": "index.html/#/", + "width": 408, + "height": 236, + "alwaysOnTop": true, + "transparent": true, + "decorations": false, + "acceptFirstMouse": true + }, + { + "label": "preference", + "title": "偏好设置", + "url": "index.html/#/preference", + "visible": false + } + ], + "security": { + "csp": null + } + }, + "bundle": { + "active": true, + "createUpdaterArtifacts": true, + "targets": ["nsis", "dmg", "app", "appimage", "deb", "rpm"], + "shortDescription": "BongoCat", + "icon": [ + "icons/32x32.png", + "icons/128x128.png", + "icons/128x128@2x.png", + "icons/icon.icns", + "icons/icon.ico" + ], + "resources": ["assets/tray.png"] + }, + "plugins": { + "updater": { + "pubkey": "dW50cnVzdGVkIGNvbW1lbnQ6IG1pbmlzaWduIHB1YmxpYyBrZXk6IEVBRjJFMzE3MjEwMUZEMTAKUldRUS9RRWhGK1B5NmdkemhKcUFrVjZBQXlzdExpakdWVEJDeU9XckVsbzV2cFIycVJOempWa2UK", + "endpoints": [ + "https://github.com/ayangweb/BongoCat/releases/latest/download/latest.json" + ] + } + } } diff --git a/src-tauri/tauri.linux.conf.json b/src-tauri/tauri.linux.conf.json index a2f643e..12375c1 100644 --- a/src-tauri/tauri.linux.conf.json +++ b/src-tauri/tauri.linux.conf.json @@ -1,15 +1,15 @@ { - "identifier": "com.ayangweb.BongoCat", - "bundle": { - "linux": { - "deb": { - "depends": ["gstreamer1.0-plugins-good"], - "desktopTemplate": "./BongoCat.desktop" - }, - "rpm": { - "depends": ["gstreamer1-plugins-good"], - "desktopTemplate": "./BongoCat.desktop" - } - } - } + "identifier": "com.ayangweb.BongoCat", + "bundle": { + "linux": { + "deb": { + "depends": ["gstreamer1.0-plugins-good"], + "desktopTemplate": "./BongoCat.desktop" + }, + "rpm": { + "depends": ["gstreamer1-plugins-good"], + "desktopTemplate": "./BongoCat.desktop" + } + } + } } diff --git a/src-tauri/tauri.macos.conf.json b/src-tauri/tauri.macos.conf.json index 0f264d0..1831f81 100644 --- a/src-tauri/tauri.macos.conf.json +++ b/src-tauri/tauri.macos.conf.json @@ -1,6 +1,6 @@ { - "identifier": "com.ayangweb.BongoCat", - "bundle": { - "resources": ["assets/tray-mac.png"] - } + "identifier": "com.ayangweb.BongoCat", + "bundle": { + "resources": ["assets/tray-mac.png"] + } } diff --git a/src-tauri/tauri.windows.conf.json b/src-tauri/tauri.windows.conf.json index 2cdaef9..125dced 100644 --- a/src-tauri/tauri.windows.conf.json +++ b/src-tauri/tauri.windows.conf.json @@ -1,12 +1,12 @@ { - "identifier": "com.ayangweb.BongoCat", - "bundle": { - "windows": { - "digestAlgorithm": "sha256", - "nsis": { - "languages": ["SimpChinese"], - "installMode": "both" - } - } - } + "identifier": "com.ayangweb.BongoCat", + "bundle": { + "windows": { + "digestAlgorithm": "sha256", + "nsis": { + "languages": ["SimpChinese"], + "installMode": "both" + } + } + } } diff --git a/src/App.tsx b/src/App.tsx deleted file mode 100644 index 909429b..0000000 --- a/src/App.tsx +++ /dev/null @@ -1,29 +0,0 @@ -import { listen } from "@tauri-apps/api/event"; -import { getCurrentWebviewWindow } from "@tauri-apps/api/webviewWindow"; -import { useEffect } from "react"; -import { RouterProvider } from "react-router-dom"; -import { LISTEN_KEY } from "./constants"; -import { hideWindow, showWindow } from "./plugins/window"; -import { router } from "./router"; - -const App = () => { - useEffect(() => { - const appWindow = getCurrentWebviewWindow(); - - listen(LISTEN_KEY.SHOW_WINDOW, ({ payload }) => { - if (appWindow.label !== payload) return; - - showWindow(); - }); - - listen(LISTEN_KEY.HIDE_WINDOW, ({ payload }) => { - if (appWindow.label !== payload) return; - - hideWindow(); - }); - }, []); - - return ; -}; - -export default App; diff --git a/src/App.vue b/src/App.vue new file mode 100644 index 0000000..389265d --- /dev/null +++ b/src/App.vue @@ -0,0 +1,28 @@ + + + diff --git a/src/assets/css/global.css b/src/assets/css/global.css index 05e4fd0..0b6eb99 100644 --- a/src/assets/css/global.css +++ b/src/assets/css/global.css @@ -1,6 +1,6 @@ @font-face { - font-family: "cat"; - src: url("../fonts/cat.woff2") format("woff2"); + font-family: 'cat'; + src: url('../fonts/cat.woff2') format('woff2'); } html { diff --git a/src/composables/useDevice.ts b/src/composables/useDevice.ts new file mode 100644 index 0000000..6af9ad8 --- /dev/null +++ b/src/composables/useDevice.ts @@ -0,0 +1,70 @@ +import { listen } from '@tauri-apps/api/event' +import { onMounted, ref } from 'vue' + +type MouseButtonValue = 'Left' | 'Right' | 'Middle' + +interface MouseButtonEvent { + kind: 'MousePress' | 'MouseRelease' + value: MouseButtonValue +} + +interface MouseMoveValue { + x: number + y: number +} + +interface MouseMoveEvent { + kind: 'MouseMove' + value: MouseMoveValue +} + +interface KeyboardEvent { + kind: 'KeyboardPress' | 'KeyboardRelease' + value: string +} + +type DeviceEvent = MouseButtonEvent | MouseMoveEvent | KeyboardEvent + +export function useDevice() { + const pressedMouses = ref([]) + const mousePosition = ref() + const pressedKeys = ref([]) + + const handlePress = (array: T[], value: T) => { + return [...new Set([...array, value])] + } + + const handleRelease = (array: T[], value: T) => { + return array.filter(item => item !== value) + } + + onMounted(() => { + listen('change', ({ payload }) => { + const { kind, value } = payload + + switch (kind) { + case 'MousePress': + pressedMouses.value = handlePress(pressedMouses.value, value) + break + case 'MouseRelease': + pressedMouses.value = handleRelease(pressedMouses.value, value) + break + case 'MouseMove': + mousePosition.value = value + break + case 'KeyboardPress': + pressedKeys.value = handlePress(pressedKeys.value, value) + break + case 'KeyboardRelease': + pressedKeys.value = handleRelease(pressedKeys.value, value) + break + } + }) + }) + + return { + pressedMouses, + pressedKeys, + mousePosition, + } +} diff --git a/src/composables/useModel.ts b/src/composables/useModel.ts new file mode 100644 index 0000000..3f3ab3c --- /dev/null +++ b/src/composables/useModel.ts @@ -0,0 +1,67 @@ +import type { IApplicationOptions } from 'pixi.js' +import { Live2DModel } from 'pixi-live2d-display' +import { Application } from 'pixi.js' +import { ref } from 'vue' + +interface Options extends IApplicationOptions { + url: string +} + +interface Motion { + Name: string + File: string + Sound?: string + FadeInTime: number + FadeOutTime: number +} + +interface Expression { + Name: string + File: string +} + +export function useModel() { + const model = ref() + const motions = ref>({}) + const expressions = ref([]) + + const loadModel = async (options: Options) => { + const { url, ...rest } = options + + destroyModel() + + const app = new Application({ + resizeTo: window, + backgroundAlpha: 0, + ...rest, + }) + + const loadedModel = await Live2DModel.from(url) + + app.stage.addChild(loadedModel) + + const { definitions, expressionManager } + = loadedModel.internalModel.motionManager + + model.value = loadedModel + motions.value = definitions as Record + expressions.value = expressionManager?.definitions as Expression[] + } + + const destroyModel = () => { + model.value?.destroy() + } + + const setParameterValue = (id: string, value: number | boolean) => { + return model.value?.internalModel.coreModel.setParameterValueById(id, Number(value)) + } + + return { + model, + motions, + expressions, + loadModel, + destroyModel, + setParameterValue, + } +} diff --git a/src/composables/useTray.ts b/src/composables/useTray.ts new file mode 100644 index 0000000..d511017 --- /dev/null +++ b/src/composables/useTray.ts @@ -0,0 +1,111 @@ +import type { TrayIconOptions } from '@tauri-apps/api/tray' +import { getName, getVersion } from '@tauri-apps/api/app' +import { Menu, MenuItem, PredefinedMenuItem } from '@tauri-apps/api/menu' +import { resolveResource } from '@tauri-apps/api/path' +import { TrayIcon } from '@tauri-apps/api/tray' +import { openUrl } from '@tauri-apps/plugin-opener' +import { exit, relaunch } from '@tauri-apps/plugin-process' +import { onMounted, ref, watch } from 'vue' +import { hideWindow, showWindow } from '../plugins/window' +import { isMac } from '../utils/platform' + +const TRAY_ID = 'BONGO_CAT_TRAY' + +export function useTray() { + const visible = ref(true) + + onMounted(() => { + createTray() + }) + + watch(visible, () => { + updateTrayMenu() + }) + + const createTray = async () => { + const tray = await getTrayById() + + if (tray) return + + const appName = await getName() + const appVersion = await getVersion() + + const menu = await getTrayMenu() + + const iconPath = isMac ? 'assets/tray-mac.png' : 'assets/tray.png' + const icon = await resolveResource(iconPath) + + const options: TrayIconOptions = { + menu, + icon, + id: TRAY_ID, + tooltip: `${appName} v${appVersion}`, + iconAsTemplate: true, + menuOnLeftClick: true, + } + + return TrayIcon.new(options) + } + + const getTrayById = () => { + return TrayIcon.getById(TRAY_ID) + } + + const getTrayMenu = async () => { + const appVersion = await getVersion() + + const items = await Promise.all([ + MenuItem.new({ + text: '偏好设置...', + accelerator: 'Cmd+,', + action: () => showWindow(), + }), + MenuItem.new({ + text: visible.value ? '隐藏猫咪' : '显示猫咪', + action: () => { + if (visible.value) { + hideWindow('main') + } else { + showWindow('main') + } + + visible.value = !visible.value + }, + }), + PredefinedMenuItem.new({ item: 'Separator' }), + MenuItem.new({ + text: '检查更新', + }), + MenuItem.new({ + text: '开源地址', + action: () => openUrl('https://github.com/ayangweb/BongoCat'), + }), + PredefinedMenuItem.new({ item: 'Separator' }), + MenuItem.new({ + text: `版本 ${appVersion}`, + enabled: false, + }), + MenuItem.new({ + text: '重启应用', + action: relaunch, + }), + MenuItem.new({ + text: '退出应用', + accelerator: 'Cmd+Q', + action: () => exit(0), + }), + ]) + + return Menu.new({ items }) + } + + const updateTrayMenu = async () => { + const tray = await getTrayById() + + if (!tray) return + + const menu = await getTrayMenu() + + tray.setMenu(menu) + } +} diff --git a/src/constants/index.ts b/src/constants/index.ts index 7ab9a59..a1cce48 100644 --- a/src/constants/index.ts +++ b/src/constants/index.ts @@ -1,4 +1,4 @@ export const LISTEN_KEY = { - SHOW_WINDOW: "show-window", - HIDE_WINDOW: "hide-window", -}; + SHOW_WINDOW: 'show-window', + HIDE_WINDOW: 'hide-window', +} diff --git a/src/hooks/useDevice.ts b/src/hooks/useDevice.ts deleted file mode 100644 index 6334871..0000000 --- a/src/hooks/useDevice.ts +++ /dev/null @@ -1,67 +0,0 @@ -import { listen } from "@tauri-apps/api/event"; -import { type Dispatch, type SetStateAction, useEffect, useState } from "react"; - -type MouseButtonValue = "Left" | "Right" | "Middle"; - -type MouseButtonEvent = { - kind: "MousePress" | "MouseRelease"; - value: MouseButtonValue; -}; - -type MouseMoveValue = { - x: number; - y: number; -}; - -type MouseMoveEvent = { - kind: "MouseMove"; - value: MouseMoveValue; -}; - -type KeyboardEvent = { - kind: "KeyboardPress" | "KeyboardRelease"; - value: string; -}; - -type DeviceEvent = MouseButtonEvent | MouseMoveEvent | KeyboardEvent; - -type Setter = Dispatch>; - -export const useDevice = () => { - const [pressedMouses, setPressedMouses] = useState([]); - const [mousePosition, setMousePosition] = useState(); - const [pressedKeys, setPressedKeys] = useState([]); - - useEffect(() => { - listen("change", ({ payload }) => { - const { kind, value } = payload; - - switch (kind) { - case "MousePress": - return handlePress(setPressedMouses, value); - case "MouseRelease": - return handleRelease(setPressedMouses, value); - case "MouseMove": - return setMousePosition(value); - case "KeyboardPress": - return handlePress(setPressedKeys, value); - case "KeyboardRelease": - return handleRelease(setPressedKeys, value); - } - }); - }, []); - - const handlePress = (setter: Setter, value: T) => { - setter((prev) => [...new Set([...prev, value])]); - }; - - const handleRelease = (setter: Setter, value: T) => { - setter((prev) => prev.filter((item) => item !== value)); - }; - - return { - pressedMouses, - pressedKeys, - mousePosition, - }; -}; diff --git a/src/hooks/useModel.ts b/src/hooks/useModel.ts deleted file mode 100644 index 1985179..0000000 --- a/src/hooks/useModel.ts +++ /dev/null @@ -1,68 +0,0 @@ -import { Live2DModel } from "pixi-live2d-display"; -import { Application } from "pixi.js"; -import { type RefObject, useCallback, useState } from "react"; - -interface Motion { - Name: string; - File: string; - Sound?: string; - FadeInTime: number; - FadeOutTime: number; -} - -interface Expression { - Name: string; - File: string; -} - -export const useModel = (container: RefObject) => { - const [model, setModel] = useState(); - const [motions, setMotions] = useState>({}); - const [expressions, setExpressions] = useState([]); - - const loadModel = async (url: string) => { - if (!container.current) return; - - destroyModel(); - - const app = new Application({ - view: container.current, - resizeTo: window, - backgroundAlpha: 0, - }); - - const model = await Live2DModel.from(url); - - app.stage.addChild(model); - - const { definitions, expressionManager } = - model.internalModel.motionManager; - - setModel(model); - setMotions(definitions as Record); - setExpressions(expressionManager?.definitions as Expression[]); - }; - - const destroyModel = () => { - model?.destroy(); - }; - - const setParameterValue = useCallback( - (id: string, value: number | boolean) => { - return model?.internalModel.coreModel.setParameterValueById( - id, - Number(value), - ); - }, - [model], - ); - - return { - model, - motions, - expressions, - loadModel, - destroyModel, - setParameterValue, - }; -}; diff --git a/src/hooks/useTray.ts b/src/hooks/useTray.ts deleted file mode 100644 index e5e6087..0000000 --- a/src/hooks/useTray.ts +++ /dev/null @@ -1,109 +0,0 @@ -import { getName, getVersion } from "@tauri-apps/api/app"; -import { Menu, MenuItem, PredefinedMenuItem } from "@tauri-apps/api/menu"; -import { resolveResource } from "@tauri-apps/api/path"; -import { TrayIcon, type TrayIconOptions } from "@tauri-apps/api/tray"; -import { exit, relaunch } from "@tauri-apps/plugin-process"; -import { useEffect, useState } from "react"; -import { hideWindow, showWindow } from "../plugins/window"; -import { isMac } from "../utils/platform"; - -const TRAY_ID = "BONGO_CAT_TRAY"; - -export const useTray = () => { - const [visible, setVisible] = useState(true); - - useEffect(() => { - updateTrayMenu(); - }, [visible]); - - const getTrayById = () => { - return TrayIcon.getById(TRAY_ID); - }; - - const createTray = async () => { - const tray = await getTrayById(); - - if (tray) return; - - const appName = await getName(); - const appVersion = await getVersion(); - - const menu = await getTrayMenu(); - - const iconPath = isMac ? "assets/tray-mac.png" : "assets/tray.png"; - const icon = await resolveResource(iconPath); - - const options: TrayIconOptions = { - menu, - icon, - id: TRAY_ID, - tooltip: `${appName} v${appVersion}`, - iconAsTemplate: true, - menuOnLeftClick: true, - }; - - return TrayIcon.new(options); - }; - - const getTrayMenu = async () => { - const appVersion = await getVersion(); - - const items = await Promise.all([ - MenuItem.new({ - text: "偏好设置...", - accelerator: "Cmd+,", - action: () => showWindow(), - }), - MenuItem.new({ - text: visible ? "隐藏猫咪" : "显示猫咪", - action: () => { - if (visible) { - hideWindow("main"); - - setVisible(false); - } else { - showWindow("main"); - - setVisible(true); - } - }, - }), - PredefinedMenuItem.new({ item: "Separator" }), - MenuItem.new({ - text: "检查更新", - }), - MenuItem.new({ - text: "开源地址", - // action: () => open(GITHUB_LINK), - }), - PredefinedMenuItem.new({ item: "Separator" }), - MenuItem.new({ - text: `版本 ${appVersion}`, - enabled: false, - }), - MenuItem.new({ - text: "重启应用", - action: relaunch, - }), - MenuItem.new({ - text: "退出应用", - accelerator: "Cmd+Q", - action: () => exit(0), - }), - ]); - - return Menu.new({ items }); - }; - - const updateTrayMenu = async () => { - const tray = await getTrayById(); - - if (!tray) { - return createTray(); - } - - const menu = await getTrayMenu(); - - tray.setMenu(menu); - }; -}; diff --git a/src/main.ts b/src/main.ts new file mode 100644 index 0000000..0eea1f0 --- /dev/null +++ b/src/main.ts @@ -0,0 +1,8 @@ +import { createApp } from 'vue' +import App from './App.vue' +import router from './router' +import 'virtual:uno.css' +import '@unocss/reset/tailwind-compat.css' +import './assets/css/global.css' + +createApp(App).use(router).mount('#app') diff --git a/src/main.tsx b/src/main.tsx deleted file mode 100644 index 71d232c..0000000 --- a/src/main.tsx +++ /dev/null @@ -1,9 +0,0 @@ -import ReactDOM from "react-dom/client"; -import App from "./App"; -import "virtual:uno.css"; -import "@unocss/reset/tailwind-compat.css"; -import "./assets/css/global.css"; - -ReactDOM.createRoot(document.getElementById("root") as HTMLElement).render( - , -); diff --git a/src/pages/Main/index.tsx b/src/pages/Main/index.tsx deleted file mode 100644 index 051fe19..0000000 --- a/src/pages/Main/index.tsx +++ /dev/null @@ -1,101 +0,0 @@ -import { LogicalSize } from "@tauri-apps/api/dpi"; -import { getCurrentWebviewWindow } from "@tauri-apps/api/webviewWindow"; -import { Live2DModel } from "pixi-live2d-display"; -import { Ticker } from "pixi.js"; -import { Fragment, useEffect, useRef, useState } from "react"; -import { useDevice } from "../../hooks/useDevice"; -import { useModel } from "../../hooks/useModel"; - -Live2DModel.registerTicker(Ticker); - -const Main = () => { - const canvasRef = useRef(null); - const [mode] = useState("standard"); - const { pressedKeys, pressedMouses, mousePosition } = useDevice(); - const { model, loadModel, setParameterValue } = useModel(canvasRef); - - useEffect(() => { - loadModel(`/models/${mode}/cat.model3.json`); - }, [mode]); - - useEffect(() => { - if (!model) return; - - handleResized(); - - window.removeEventListener("resize", handleResized); - - window.addEventListener("resize", handleResized); - }, [model]); - - useEffect(() => { - const hasArrowKey = pressedKeys.some((key) => key.endsWith("Arrow")); - const hasNonArrowKey = pressedKeys.some((key) => !key.endsWith("Arrow")); - - setParameterValue("CatParamRightHandDown", hasArrowKey); - setParameterValue("CatParamLeftHandDown", hasNonArrowKey); - }, [pressedKeys]); - - useEffect(() => { - const isLeftDown = pressedMouses.includes("Left"); - const isRightDown = pressedMouses.includes("Right"); - - setParameterValue("ParamMouseLeftDown", isLeftDown); - setParameterValue("ParamMouseRightDown", isRightDown); - }, [pressedMouses]); - - useEffect(() => { - if (!mousePosition) return; - - const { innerWidth, innerHeight } = window; - - const x = -30 + (mousePosition.x / innerWidth) * 60; - const y = -30 + (mousePosition.y / innerHeight) * 60; - - setParameterValue("ParamMouseX", -x); - setParameterValue("ParamMouseY", -y); - setParameterValue("ParamAngleX", x); - setParameterValue("ParamAngleY", -y); - }, [mousePosition]); - - const handleResized = async () => { - if (!model) return; - - const { innerWidth } = window; - - await getCurrentWebviewWindow().setSize( - new LogicalSize({ - width: innerWidth, - height: innerWidth * (354 / 612), - }), - ); - - model.scale.set(innerWidth / 612); - }; - - const handleMouseDown = () => { - const appWindow = getCurrentWebviewWindow(); - - appWindow.startDragging(); - }; - - return ( -
- - - - - {pressedKeys.map((item) => ( - - - - - ))} -
- ); -}; - -export default Main; diff --git a/src/pages/Preference/index.tsx b/src/pages/Preference/index.tsx deleted file mode 100644 index a49f214..0000000 --- a/src/pages/Preference/index.tsx +++ /dev/null @@ -1,9 +0,0 @@ -import { useTray } from "../../hooks/useTray"; - -const Preference = () => { - useTray(); - - return
Preference
; -}; - -export default Preference; diff --git a/src/pages/main.vue b/src/pages/main.vue new file mode 100644 index 0000000..d2805c0 --- /dev/null +++ b/src/pages/main.vue @@ -0,0 +1,103 @@ + + + diff --git a/src/pages/preference.vue b/src/pages/preference.vue new file mode 100644 index 0000000..b72401f --- /dev/null +++ b/src/pages/preference.vue @@ -0,0 +1,11 @@ + + +../../composables/useTray diff --git a/src/plugins/window.ts b/src/plugins/window.ts index a1854e5..ebaa7ba 100644 --- a/src/plugins/window.ts +++ b/src/plugins/window.ts @@ -1,26 +1,26 @@ -import { invoke } from "@tauri-apps/api/core"; -import { emit } from "@tauri-apps/api/event"; -import { LISTEN_KEY } from "../constants"; +import { invoke } from '@tauri-apps/api/core' +import { emit } from '@tauri-apps/api/event' +import { LISTEN_KEY } from '../constants' -type WindowLabel = "main" | "preference"; +type WindowLabel = 'main' | 'preference' const COMMAND = { - SHOW_WINDOW: "plugin:custom-window|show_window", - HIDE_WINDOW: "plugin:custom-window|hide_window", -}; + SHOW_WINDOW: 'plugin:custom-window|show_window', + HIDE_WINDOW: 'plugin:custom-window|hide_window', +} -export const showWindow = (label?: WindowLabel) => { - if (label) { - emit(LISTEN_KEY.SHOW_WINDOW, label); - } else { - invoke(COMMAND.SHOW_WINDOW); - } -}; +export function showWindow(label?: WindowLabel) { + if (label) { + emit(LISTEN_KEY.SHOW_WINDOW, label) + } else { + invoke(COMMAND.SHOW_WINDOW) + } +} -export const hideWindow = (label?: WindowLabel) => { - if (label) { - emit(LISTEN_KEY.HIDE_WINDOW, label); - } else { - invoke(COMMAND.HIDE_WINDOW); - } -}; +export function hideWindow(label?: WindowLabel) { + if (label) { + emit(LISTEN_KEY.HIDE_WINDOW, label) + } else { + invoke(COMMAND.HIDE_WINDOW) + } +} diff --git a/src/router/index.ts b/src/router/index.ts index 8b80aae..de74165 100644 --- a/src/router/index.ts +++ b/src/router/index.ts @@ -1,14 +1,21 @@ -import { createHashRouter } from "react-router-dom"; -import Main from "../pages/Main"; -import Preference from "../pages/Preference"; +import { createRouter, createWebHashHistory } from 'vue-router' +import Main from '../pages/main.vue' +import Preference from '../pages/preference.vue' -export const router = createHashRouter([ - { - path: "/", - Component: Main, - }, - { - path: "/preference", - Component: Preference, - }, -]); +const routes = [ + { + path: '/', + component: Main, + }, + { + path: '/preference', + component: Preference, + }, +] + +const router = createRouter({ + history: createWebHashHistory(), + routes, +}) + +export default router diff --git a/src/types/global.d.ts b/src/types/global.d.ts index baa4fe1..5d006e2 100644 --- a/src/types/global.d.ts +++ b/src/types/global.d.ts @@ -1,3 +1,3 @@ declare interface Window { - availableKeys: string[]; + availableKeys: string[] } diff --git a/src/utils/platform.ts b/src/utils/platform.ts index 190a09d..50b10b5 100644 --- a/src/utils/platform.ts +++ b/src/utils/platform.ts @@ -1,7 +1,7 @@ -import { platform } from "@tauri-apps/plugin-os"; +import { platform } from '@tauri-apps/plugin-os' -export const isMac = platform() === "macos"; +export const isMac = platform() === 'macos' -export const isWindows = platform() === "windows"; +export const isWindows = platform() === 'windows' -export const isLinux = platform() === "linux"; +export const isLinux = platform() === 'linux' diff --git a/tsconfig.json b/tsconfig.json index aca4895..3e70af5 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -1,25 +1,25 @@ { - "compilerOptions": { - "target": "ES2020", - "useDefineForClassFields": true, - "lib": ["ES2020", "DOM", "DOM.Iterable"], - "module": "ESNext", - "skipLibCheck": true, + "compilerOptions": { + "target": "ES2020", + "jsx": "react-jsx", + "lib": ["ES2020", "DOM", "DOM.Iterable"], + "useDefineForClassFields": true, + "module": "ESNext", - /* Bundler mode */ - "moduleResolution": "bundler", - "allowImportingTsExtensions": true, - "resolveJsonModule": true, - "isolatedModules": true, - "noEmit": true, - "jsx": "react-jsx", + /* Bundler mode */ + "moduleResolution": "bundler", + "resolveJsonModule": true, + "allowImportingTsExtensions": true, - /* Linting */ - "strict": true, - "noUnusedLocals": true, - "noUnusedParameters": true, - "noFallthroughCasesInSwitch": true - }, - "include": ["src"], - "references": [{ "path": "./tsconfig.node.json" }] + /* Linting */ + "strict": true, + "noFallthroughCasesInSwitch": true, + "noUnusedLocals": true, + "noUnusedParameters": true, + "noEmit": true, + "isolatedModules": true, + "skipLibCheck": true + }, + "references": [{ "path": "./tsconfig.node.json" }], + "include": ["src"] } diff --git a/tsconfig.node.json b/tsconfig.node.json index eca6668..dde0894 100644 --- a/tsconfig.node.json +++ b/tsconfig.node.json @@ -1,10 +1,10 @@ { - "compilerOptions": { - "composite": true, - "skipLibCheck": true, - "module": "ESNext", - "moduleResolution": "bundler", - "allowSyntheticDefaultImports": true - }, - "include": ["vite.config.ts"] + "compilerOptions": { + "composite": true, + "module": "ESNext", + "moduleResolution": "bundler", + "allowSyntheticDefaultImports": true, + "skipLibCheck": true + }, + "include": ["vite.config.ts"] } diff --git a/uno.config.ts b/uno.config.ts index 4ff0b37..a13a88e 100644 --- a/uno.config.ts +++ b/uno.config.ts @@ -1,24 +1,24 @@ -import presetRemToPx from "@unocss/preset-rem-to-px"; +import presetRemToPx from '@unocss/preset-rem-to-px' import { - defineConfig, - presetIcons, - presetWind3, - transformerDirectives, - transformerVariantGroup, -} from "unocss"; + defineConfig, + presetIcons, + presetWind3, + transformerDirectives, + transformerVariantGroup, +} from 'unocss' export default defineConfig({ - presets: [ - presetWind3(), - presetIcons(), - presetRemToPx({ - baseFontSize: 4, - }), - ], - transformers: [ - transformerVariantGroup(), - transformerDirectives({ - applyVariable: ["--uno"], - }), - ], -}); + presets: [ + presetWind3(), + presetIcons(), + presetRemToPx({ + baseFontSize: 4, + }), + ], + transformers: [ + transformerVariantGroup(), + transformerDirectives({ + applyVariable: ['--uno'], + }), + ], +}) diff --git a/vite.config.ts b/vite.config.ts index 8156e38..705d3d8 100644 --- a/vite.config.ts +++ b/vite.config.ts @@ -1,45 +1,46 @@ -import { readdirSync } from "node:fs"; -import { parse, resolve } from "node:path"; -import react from "@vitejs/plugin-react"; -import UnoCSS from "unocss/vite"; -import { defineConfig } from "vite"; +import { readdirSync } from 'node:fs' +import { parse, resolve } from 'node:path' +import { env } from 'node:process' +import vue from '@vitejs/plugin-vue' +import UnoCSS from 'unocss/vite' +import { defineConfig } from 'vite' -const host = process.env.TAURI_DEV_HOST; +const host = env.TAURI_DEV_HOST -const availableKeys = readdirSync(resolve(__dirname, "public/images/keys")) - .filter((file) => !file.startsWith(".")) - .map((file) => parse(file).name); +const availableKeys = readdirSync(resolve(__dirname, 'public/images/keys')) + .filter(file => !file.startsWith('.')) + .map(file => parse(file).name) // https://vitejs.dev/config/ export default defineConfig(async () => ({ - plugins: [react(), UnoCSS()], - resolve: { - alias: { - "@": "/src", - }, - }, - // Vite options tailored for Tauri development and only applied in `tauri dev` or `tauri build` - // - // 1. prevent vite from obscuring rust errors - clearScreen: false, - // 2. tauri expects a fixed port, fail if that port is not available - server: { - port: 1420, - strictPort: true, - host: host || false, - hmr: host - ? { - protocol: "ws", - host, - port: 1421, - } - : undefined, - watch: { - // 3. tell vite to ignore watching `src-tauri` - ignored: ["**/src-tauri/**"], - }, - }, - define: { - "window.availableKeys": availableKeys, - }, -})); + plugins: [vue(), UnoCSS()], + resolve: { + alias: { + '@': '/src', + }, + }, + // Vite options tailored for Tauri development and only applied in `tauri dev` or `tauri build` + // + // 1. prevent vite from obscuring rust errors + clearScreen: false, + // 2. tauri expects a fixed port, fail if that port is not available + server: { + port: 1420, + strictPort: true, + host: host || false, + hmr: host + ? { + protocol: 'ws', + host, + port: 1421, + } + : undefined, + watch: { + // 3. tell vite to ignore watching `src-tauri` + ignored: ['**/src-tauri/**'], + }, + }, + define: { + 'window.availableKeys': availableKeys, + }, +}))