From c52ef736c43da32a25daa5eec265d36ec0017055 Mon Sep 17 00:00:00 2001 From: ayang <473033518@qq.com> Date: Fri, 28 Mar 2025 18:40:08 +0800 Subject: [PATCH] refactor: migrating from react to vue3 and refactoring related code --- .release-it.ts | 15 + .vscode/extensions.json | 12 +- Cargo.lock | 548 ++- Cargo.toml | 12 +- README.md | 6 +- biome.json | 56 - eslint.config.ts | 12 + index.html | 8 +- package.json | 126 +- pnpm-lock.yaml | 2931 ++++++++++++++--- public/images/logo.png | Bin 0 -> 19232 bytes public/models/keyboard/cat.model3.json | 131 +- public/models/keyboard/demomodel2.cdi3.json | 462 +-- public/models/keyboard/exp_1.exp3.json | 26 +- public/models/keyboard/exp_2.exp3.json | 16 +- .../keyboard/live2d_expression0.exp3.json | 4 +- .../keyboard/live2d_expression1.exp3.json | 18 +- .../keyboard/live2d_expression2.exp3.json | 18 +- .../keyboard/live2d_motion1.motion3.json | 104 +- .../keyboard/live2d_motion2.motion3.json | 103 +- public/models/standard/cat.model3.json | 133 +- public/models/standard/demomodel.cdi3.json | 484 +-- public/models/standard/exp_1.exp3.json | 26 +- public/models/standard/exp_2.exp3.json | 16 +- .../standard/live2d_expression0.exp3.json | 4 +- .../standard/live2d_expression1.exp3.json | 18 +- .../standard/live2d_expression2.exp3.json | 18 +- .../standard/live2d_motion1.motion3.json | 104 +- .../standard/live2d_motion2.motion3.json | 103 +- scripts/buildIcon.ts | 12 + scripts/release.ts | 23 + src-tauri/Cargo.toml | 20 +- src-tauri/assets/logo-mac.png | Bin 0 -> 19528 bytes src-tauri/assets/logo.png | Bin 19528 -> 19232 bytes src-tauri/assets/tray.png | Bin 13589 -> 19232 bytes src-tauri/capabilities/default.json | 27 +- src-tauri/src/core/setup/macos.rs | 7 +- src-tauri/src/lib.rs | 1 + src-tauri/src/plugins/window/Cargo.toml | 3 +- .../plugins/window/permissions/default.toml | 5 +- .../window/permissions/schemas/schema.json | 607 ++-- src-tauri/tauri.conf.json | 106 +- src-tauri/tauri.linux.conf.json | 26 +- src-tauri/tauri.macos.conf.json | 8 +- src-tauri/tauri.windows.conf.json | 20 +- src/App.tsx | 29 - src/App.vue | 28 + src/assets/css/global.css | 4 +- src/composables/useDevice.ts | 70 + src/composables/useModel.ts | 67 + src/composables/useTray.ts | 111 + src/constants/index.ts | 6 +- src/hooks/useDevice.ts | 67 - src/hooks/useModel.ts | 68 - src/hooks/useTray.ts | 109 - src/main.ts | 8 + src/main.tsx | 9 - src/pages/Main/index.tsx | 101 - src/pages/Preference/index.tsx | 9 - src/pages/main.vue | 103 + src/pages/preference.vue | 11 + src/plugins/window.ts | 42 +- src/router/index.ts | 33 +- src/types/global.d.ts | 2 +- src/utils/platform.ts | 8 +- tsconfig.json | 42 +- tsconfig.node.json | 16 +- uno.config.ts | 42 +- vite.config.ts | 81 +- 69 files changed, 5169 insertions(+), 2276 deletions(-) create mode 100644 .release-it.ts delete mode 100644 biome.json create mode 100644 eslint.config.ts create mode 100644 public/images/logo.png create mode 100644 scripts/buildIcon.ts create mode 100644 scripts/release.ts create mode 100644 src-tauri/assets/logo-mac.png delete mode 100644 src/App.tsx create mode 100644 src/App.vue create mode 100644 src/composables/useDevice.ts create mode 100644 src/composables/useModel.ts create mode 100644 src/composables/useTray.ts delete mode 100644 src/hooks/useDevice.ts delete mode 100644 src/hooks/useModel.ts delete mode 100644 src/hooks/useTray.ts create mode 100644 src/main.ts delete mode 100644 src/main.tsx delete mode 100644 src/pages/Main/index.tsx delete mode 100644 src/pages/Preference/index.tsx create mode 100644 src/pages/main.vue create mode 100644 src/pages/preference.vue 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 0000000000000000000000000000000000000000..2718ae73ea7531c138bec63b2d5bd9a6cc79e4a3 GIT binary patch literal 19232 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 { + 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 0000000000000000000000000000000000000000..f3894cc2b6ad9ae4774ed570d5f67c941b02af8e GIT binary patch literal 19528 zcmd2@Wmg+rv`!$nTXAF7 zW-_y8GMT;4*^lf*sj0}JArm13001-vdFjsp01&zf1R%mgR|c-7R{!m}eU_61R8No` zLU*Jsbrq~WeF88+w-Eur2wMQ?zf+(K5p)3nU~_>0Sm+w~-)Ffn|9cb&$c6pC?f*`+ zJ|a>80K@?b(h{2AfT#WlnRqhI_ZdS8*9oTZG#KjAwAR$642X1NE;?RoFQ;Ai`d zirybx1KLxFyj(myjJO7^&fim&+Rp-wwI(}#RJBIGr0#c8b!@NibXdiWuYW1ot`-Q4 zkK9>|ES0%Ty`ZOYo9MjOZTCDS^7wrhu8zZxmy%NAdVG9*-X9mchWfBeugR`= zLs`;$hKmFp(0&?-Az_X2}v#~9< zx)hiqhaZf$^-LS^?VJAQlg4hw6Yt6LU>{tS3)(DLYAE1~JX>vZ8#9j=`J4Zx!KzRE z07FJj?jChtait#N1CTvJ#00s<(#mS$>7-$@Sv7-`w#9rfuFH%-Qknx+iakhX_Sb5r zrB3jmeOr9j{km`JfpNg&o)zYr6TjRA<2vqW7cDj>K#Jcvj&kf}z9ygv?#QGkQ^4(t zlC)GXL{Jt)?ToG7>c?lDfwm=Q?73vQJSz5b(Z>^xM(k-HOT_aQiOhqZuDIkH&I)4! z-&V^fjH2KBYf|`HnP@KZg{}K#h8?DX4-b*~7NVeB43pQvx7QhY@xCMWR$w}rE%FXt ze_L0p2D9jYqXvZR1j8br3qMXtVVs5oA5H{hO@4qW0~#>SN5a((qY=q0^Z#TO;9nNV z#aCaR{XXY~@ydo}bx4+haDgC*yfu1F<>Sz(w99AF7FwWN;`NY*_nrN+#qOSrZXD)# z*=PYTe}?2Z*6OljMtL=;nkDG5y_atMhKA~MD%pYF{0%D{AR9&0lly|x_{XLcq(sbZ zgL&JBA@;B^<8JV_AoXt*Q)dWwNF7sy7uF0nQnc7%rMZs%jJC;s!I4f>GHEBk*9Hp_ z83t2Gg+#!0w-^bB&d<2h=eEQ7Gm4}Z%mw|MP2}_Cf|0L7FLO=D)#sgoSYx=$1(cD6 zX0|582TJiAEdKCM?aybwpXaOez35(0CekR-9z+OVX4NbJD%(1VJ!Jyt0u3;`p7%kybVVE4C6vnQ#2^Bs90A6?*p+BY7=K(rpXt$F;; znUt{5ntm~hp#)vs$LGF9&g1;wr*P5Yk<k%QpF7TAGpLw!NXq-R%nzg1lNCF_SE*?^Ccb~N% zZ^x61i4J22){4dY2WnwKP^ShbG6k-U3Fu;^jBbo6$1`}H?zH?r73E;?!m(#01Uy5hvJrlp#~uc|o};{67i+#oMbmF}m3A z4U?k3=AbF;6dWAxUnT>g1wlZv!9c$j$F=rXA+Iy{Wx%(uHa$fx>6s3-gkZ|IA8)VE zgMHoY>qCju3wf=HB&CJBHKu`4HXyr&Y7q`v+C34_M*-*+J?U{wIzxIv!G8d{OH|uV zGldEt!0<>ZxG;CWCcpUMco=yI|andbxhq zx{2;+T>V#omCYh;61)kM6@mEJ#a5p{(S3k(zg719V%HEACJ|zP@1Iw; z;o;#Fm?40CvVTutaKsypo6CThhb~Yh&Ua8+5@G9o}S>qWS8Xc4Xj2-KK(Vrx`$HV&MBg?`S;N%ldU;+8ynOAWWHDuk&?dih!b7rKzdHJVG5MN27m7 zN)wjVB4Tj`ZIA)CNs$Fqj)!NTOS5P6Xz@}iaAFNSTi1hGPDM@EPi2TL%0=Oj5j&u7 z7!@}1k0i+@bPVzPn@qHvt_zYR0ZO;~V7VE;6ai+U^GFx$HsN4Rw$Lss9^M;rUMtDM zUuA!5GykfSp@_i*V|B26pt6k*`x2)rPq>w z0IcT#Gez``hj&Ub1R69z5>Y>Xbn~2Uq~vq6Xj`lc5b&Wd=6Jdwf~%u7+0%eIWCaxr z$Jb9DJB(RJa3|mV_Ezn$`pboY`eJ3{&C~h*Y>g3)014c1NDmWP#irY=Upo|T zk{^>P>aT~XAQ$f)+b!c0OvFy)!HWuRw6z)HQ2?{K2@$%`!IP=ZWB&aeyTaD^7=aJd z*4CDkmPQv-6wg>6tefDv-H#OHVPHal<4!bF{E0Z|hM|@mNj9OkB6yF@;ie#7R1d?2 zV`3A_^XG(k{@!E}j92?O02Lv6faKtZLNXn#R_@okzld_+&H!22@Jgdjz1o{*KjC51|kQK!#144n!Rq{+vp z2cQW9cA@^TlPP6b5jD(^YbSYm-R$Syy%mB?Nl*m2m^bVO~kvB=^{za$y$S4 zv%?A8aGe*nspPInx-LM-jj zTY5F{@)|B9*6v%YiupgeOF(nD!@J=Df~nW9lU_l@o0>LnFZmXmW^;2PkN~>N5~ZxD zj~nTtmb3U<`Na+cEYt>xH<}NXm&Cb-aSTP0Qum41=7drXYYs@|E>5fvMiri?x>50^a98@nOjQl0)#;jW|s1mI{mTLL!!&U;T6E8zpN zxng}!{=7d<2A0c{V@PdOjW3TB3^UGDNZ^#oc9PxW(Pq;1YikTR&!n^c_HV2ICtq%I z$Rgl*qAR@&<8ycNh5UB1|DOdwCINH>W^-mHgopSm=ZN~B*mXHllF~iSEXOxp?N+s{ zf36dQcMot&rt$7@;5*c+shdJWzw)PqrNCh)uBOcuQz$pm*Q1})^azRx9q5%;Cb+bj zt+!M<9z|A9r12998b ze7d&nCEx#Ca{K=L@zt(BT$4{w`=~&p@HVFl<_06OKa@gX7?IHGE1U#-x*@&2s5qi5 zst_5KNc5;4HV2@?jOqi20;T?CvELjvl#k#yib5PwqEkx!{h#W2`M-`1hF`8K!ym;7C#q(k~AVIIeA`w=-OHFfL&t~ z`P0*-HOxLUc`kBW4?wq(YTKH&zM)|__7_6w81FB3Nw5f4REkfak5BttY*g~`FIpwn zSV3&VpnoS)$%>PssUeR)$N_6PaZ)F*3KukfoUqLeP$$out&iHNA}e7V-* zBMSG|MRuZALP6Kl=-<%n3TlGcw7NKq{N4)G*BEwQC&pTCv-WRn5z*oJK09&!eJ*|b zJ&sfeRIyWj+oc~O-A2^se~G#8l9%~KW|)vY36C&h_t#u!QvA;OCU1w?B{n0t0MqSK zMovM}kEbk6?NgitRj%*l{YD_0Zlng8_byhDmPq9fz^PSfnkm4_Sfyhm@RvR+1XuSS zbFfzlo>?rw)QcV|tCN%E;6wyk02Vcz@ju6rQJU<@Bp^v~wzhQNh@N z>zXeG;qJCm@<)RM1(rIw&vML)a!cA)WNEP8)`fv<(uX0YeS$7S2$rK!SHq0E2>5zs z*_dpDJ-TVuWT~Gnc>UgA@8JZSOoC%+=;*Y|(R&_-2#_co1P_N&&HfvHOq*aZty^0d zBM}K)GPq6;qU0)stvA&J>7*#OlGUazK%Mc}I5mlohp(16*TuRju%xH=9_HJ$ah-v1 zIQ#EBAs7(d2ej3t@(}lmS+(*(T;7e2V87ua?x6aCVD)Js6K?|tZ^q-+k0HDN70il* zainm02cYIs$SH%|IH_B;O-k=*U_H z)ksX>$pdgWI!9zqkj^VNYEuha_-TKulFixyhj(+lC!>U{r-!##j;0NFcwf8Ik%pV6QY@{w6|jlaxTuZ_ zcvy16-lb?wzkb3~c+jN(f$woYmdTYA;@^bqiR7X_J=0EC0-)XxMzMvk!(2~DhGWsc z67i&u#-F5S$lWvIK$2FIQc`d~paM1^>;R3b=yKbD(vfvEcoSs1yRT|^FRNN*N&abw zYTX+ljE(LckNcmKqZQJG>xomEOu2t?qn+i&^55 zOqO3QLwQ^!77JzOGfkc$->tM>UYYQ~4Fs}~Yd1!OfgT*in;)^^uFlu_6aQYdmO@OE zt>opbDil3wMUU?;GC5%)v+>zOv6ajNOR-^2*7!fA^>>^7K|VcYnA!NY6YDxi>V>#H zQBmqt`K;yhMSz^Hha-->C{C}*e%J+bce#>VAenqKN;n)VlQ|tjD&(-OB+r#Z%0wim zoG-|4rEZ4^Uol@ZSep zUy}=TMKWs+gO*3#ViGXTrg_cj=lndE{V4PLJ&UxipwEag(@b!!HzQyxl%Fn2g59~9 z*_g$a0DP0P5hN*_+2!|n9b?-!T(6qnXM!FPVdS!EGRBG|&>DHBP6{DP5~Jf(I;|Y| zi0&ein=5{=Iy#;xvlOwXCXpRy%x<6wFp-7dB#RJ6Xocor=>>t~m2@VO4K;GX z*nvfZ{Q_&2qf*W{PcmIcJ>Pe=ivV+Pg1^7@@6V2$8~1NqmfSxY#;KzrHsXp8BcPfn zJV|8uf2+w1?S{?3xXkUABH#dDyG$dmm|=;))!ViY19VkB2qOEGuAC#$(3z&DW4#j6 z$BW+2xhQ-^WUCrzF*)w|NUp&W`JN(e<2MG_3jCGERA#M$pp7PO&kO;zR}IeW7G)h< zK1Y3}^-)3IK0w$YWkre^!R(kx(BHcYWuJ!CMS>Ku4Xx+wyk?RP@=8tTbdp;4)$OBs za_*e*m?Gp7Ok{Y&v5&Bf3w~tgLLae3AH{FFEl*7Y{=wMKOnG0c(@vxO?u>dAxRy$_P2vn)l2Y+{&E2+Il-3@+zTlPADua912Ck0oi{JjlG;a zcKU||3r3^xvtX;~7ROtcyZjmO>VCKNRcIpGI)2b7ElHe##=1s{4iZ}iury9dWO6!R zLJfS~NkaJ4BWK!@j})4Nk@ape!I%;7t)!zZu%a+$T&twyms8i5a8yEUUL5dCxe7N^ zNTe}uQI5|vm%V)LOtfiW6)MchrI&d#@qWkbXzW?%TDyk^`TNN3{s5N>yvZE!IvW-9 zs2c*1?`Sd2SKaW5nqkOm@0T@&!TuF6&Cuh$pWSPHN&U7TVxAc!Sx5Qa>gRlvFeczB z&YLroqI>W}0&Lq$)7Lz5PV4DdIYYs^2nN>jUG0jbFUu9Zb$gu~k-qP9pc%SfqBU>T zw4RGo?drZj0cFh-KR(EGX%eFN{?_J6}u)y7+2y>($^3$^odJr?CZD5?kC^>fd=gh5PWR8RYBtt=|!)J=5*V1h4R}$P?wh=hD(@@!kvMw`Rw{#`N`z zb8#CJ!}Sf+&`OJKKo{UBh0;5MQi-x-rz_~=++c$7s3FkSn3=eQ&TYf<%( z4ocn>4ZKIK&za$X?N2iggX^gpjtT}_2}6hko-xF}j!!Jk2T9CtpP4qz@<^5~`l)1b ziwpa#TN7&qdV3z>GA(~(W>)5lMi2<}ic=TJ%`~j2$$?-g*poIeV7zDrI2hG3o0fd#;RMQD26hh~ObUGo3#?{(;D)Znm`V)oe5zl>m8a zgOMz-Xn__m%3oi$Snqxc)<*32Qzpy5OzhIQ@7G;tJBz_LT+_HlSprN~KQBHkF(--J zaBsU5($Jd<#ZwmrSkCt`6N~RQ{;0={g={EXtjbeZz`X68VCn8D6)Qee<9`=nonPey zq=Rpn^s&YG3b=f4jh@N8uxhcvzaPT=&uDyzCT&3G=c?v}e1ZM~C(J%k+7LxR`awjE ze3LEQ{)3oIpx&53v7?3sg$XTq=pnB9Z!jt(=GCn-llcug0BH@0jIJ^xLE>P(-6_C6 zQcJQaI2(XT<_$Z)!ig&RuTQqE_ zu|j)f&Z~H&|X6}_cJPLx!5_A)GQ${*6-2AVGBk#3|U|TqG-yV zHcs|^IQApQg=)ijIq+vFpAoc;S&N#>uQ}o!+j+WR9LSQq@#AB|{@CC3^!}mjxBg+A zq|_|h2z1gUG-5u)f=$tf&5)TARdTd7tqGl!V_s~2DLX@#KX^x|(yuw;kPrln@cG~$ zd*vszt~i@#f35s7kk2aop)P2I2Euu*!tOtLc(FWQ6W3<%=`3F!A9q% zO)}szI%l+Yt1tC|A&JjnUGuEtTE%0^d+)qvX!+LO!(y}Zeq*-j+41)&Z<$7mO3{eg zjFbff33?$nga?+uGF=%`d?5u*F3N}T#b}Mnx9w;)i_4@xg1di zx7uXU_6CTZQp}eIXU;#g(KiV+&xfhEc&*1wY=B|NFsd&6ua7Xal$%Jf;?$_m+VazZ zr|nHwXTIl0BRsfO=Na4zj)cC^69ddxCXsvNKlzf$-ya4!16IG$js(BJ{8zhMEH~QP zRkffC(dKy_8byHiqnJzRQ2}VHIMK!W<6(cSYh(XomC(FTnh-FEKHdidofXRKW4vEF z9ey{5$@b>;HR?=^j3s4oS&wZ0iH_F3cd2;c-MEkfxCw7}GBnYnLZZL7KB6DZUjG|U zpA>yomU%D!^m7=h-_T|Kc4xhJCcC{n6KNmq)FtI(6i|pB4PzI3z0vSkuKVl5*PT25 zo94e9M#^woSbCmqx*O*!DVTvbF>(sPL>rZVf4V>#WR73{?c(H$T+6$$H| zsB(uj+N~)%lK2-);A}ol7s%~GwT?M&Pzv|gdc<#0U`s$z?znl=5cj5dYTXG5hc?XOWI+=3345=YgHOSjA9Gs#M?6+|n6W?Y``f)7lgq^#?-x+V ze-D7IW~JI;dHo>+V~3pO?&g|2=rTZdtLp2ylaWk_$wErC>%O6vVrTnp=x)I7ka~uQ zZ`#+@+UfRlqTG{pkNVf9O;8|v1x z@Z;U5;~Fu1dPvC;{6!xwi*n|Q z1y(I8qy{aal;7e0cTt$zi-3jP^hT@#4~;zQDUZz*1wYYvG9I(eP}C0n?)9Yg2qggp zF+H!gueh>%OgWha$U=>q#8ow3dg8%6Lm*V%N)478C548cvQ&LXw%6KQnWtF645!Sf zpk0>M%&1Xjs&!bipM)f)7lX)`CAM%C5{|3z690PW;Q8#ZgW{D^xFM(H+|LkozCp2T? zqZjytxNUg*m1X{pvcnPa4XY9H+LX?w43iMJW}cf64!e&DJ(B&Rf`!hJBpZpH2NQ-u zdlBRTQ)FHTQ8c1=?GW|l(9i7hIJ6s#N+(@S%W?iNsXIxM~v-n#d1w|qR(j=%+Z-hvR) z#?}{~j!tEM(sjDhtW=R!#hpN(zUKPdv?0j-WKkW~m(vr__f5TWa(G;wF2R%g6FLb$ z!y%z}k8J#024G60021uBbvQ_du)PJhT{!63YE^&@ztHS5`3 zVgqX@lS|-e=#NRI+~(Twx5Qxu#JT0pUxIOMd6Mw?+v&ovn}a*jB-Led>8q1s?*?L< zEPNYOI(MBTcx&CQ7;?STST1gNCp5Zg@tw%`*4Go|(`-zFiUc{E$`gcTAB;a~eTdWD z-FZ{iqORZ4ch#(O4~H}R=NCFirO_zvau{4z0K{)Q`m>@!vL1p~{50O>PH>>G(-jd8ZQd-OD zbl6wPvV3`1DGKO&l6bV42=85=JJ`YJh?BlM3cCY*KMZ$quF(e`Au{HwmGj58TaD!P zl_h1RR+Y>8$hKqiQ4`EQ$ZtfL55|{;IwNDtuofbbo8j+fu~hkwh zcNyv^{g6QUjHan(M1Dly4ftVZvE6ou&ilHGuW4s<8S@`; zt=`SP$zbo^3L!>t;x8!{!z5I&NEz0>_4v=C4-Zg9C1lFX5;_>VPOe2>g)9Ypt<1|t zZJ@yVkX{<{vlQZxG(_WLN6mu`=YVQ`Jt2wv>QZw^&PGjQcT zwV5923saUIN8gmpw~J7hYGoLP@=omYk2rZOTjdqiGi9?14oRUg-|yf#qmPj0X$6a? zT6GPUq;83hRkr`xOb?R#e>9$W`rIi~rZ{h}rt13!`;1Ylo__DrOiwL29sYU73t8Jx zsyhq;lQ4k)$m(luX80&s4)bFnb#M*Q_P{z54!z3UP(99F?!-GHbId_5{!PWrHeZRWafD}=kZ2$Y%U0vTTyi&oqo>vELi=ZW32NMw=pAk!y&^Vwcl1NbUL#bC>PUP)3C-++E@N z6RxHd(CW8*P5tzXk5MZ3GWz}@A6W}C6$66GpPaPP_4;h_8h-no52;%!0$p%>s>WC> zrrBLPgo+T`S3!e}@7QR%;|rhS_t}y_3XKw#FbB(;Z7HPV;%UC&zIfrvBy=I1a-&(X z%xYN!&KSa+u_=mLQbA9|vUV9^SQFUdRwcu)%Z-OJK_Ww#rRhciTIAlFK?v-qeA+U5 zYG1$MIg|#qZfrtCkY;TE&=niRq)4bQQYY2D)!rh=BOH5VG_Lu2R;VZO!Yg9hnF#AJ zU}Md*6$EoQ5gFUE69+A&ji6%MMgesW8*!P&zhMk)C;TVlO zYeM~}kQHmjtg*7&?AnLMHw1Nd+?W%Jw3UO6kSCKF33g}*VM(L;iNxb&(PhqLCZPo* z6lK)g@3W$LH{0K{k|wGl0YSZiB;kdxCSo^xQ04f*AGgZ)<|GfL${8`%d$v}7I^&!t zW|%osVT{CZOOm~&>#2Nf@F`x?fq}=h@E|VAOTPQ zHL-|6;&Mq%A)6fl2xdDq+?Lys)B9~zHI^YH*Y&ckgeMYf?0=tfhIvn(koaR=sQ{N{ zkynch7+}fDX6O|DcJF5nl_>xoJ-d=Mh$veBt-1=tD+KQ zJ_nSB;3nDe=yaokPa$`4p{m%8ET0|nS-_%1nr339q z{i?qF@@R``zG(N}R7E%wc)CP&4a)+}TE9nEQiX%1iV`BGVcmAG^J?sfy7F`xWx9>; zCrfdqzXR_Mt?kD2yUf}|vlkh#I4IBO!;DrSM!TA^nUBeop22STT7*Q>8RYaC)47Ur z<@MMEk@V_8BBlU#s;u{R%lQuE?i_WeO45-kvDXs~yn9Bp+Muaqhu%;m*M+q(uICuM z4&<7K_%v9c*<>u!2R>OTyNxYQLXUACrYpDQTb;=8M&El!1tnDta*z*Kl8KGqF1Gb5 z171RzvzbQp2NuhN1j_akL5~Zc+haI)+@SN~*zGK@^+YIKHO#=>_{6yT_Dlvza`Gxo z(IDE{dPRj(#S3SaRPW8pf#l6ewSW6aD9u2lN&tX3rviUqG~4YlWeq$d4dj%$UBXTy znePrIa-KE2aN>$!PCmMPMJ9u>=t@B)AWn>vv=~_lSS-GSA;J_;{_Q{L=`s8d`}n0x zxsi}0REgVnhGnX%?aB51?bUJ<5+vvnEsAg>S{Ug_pekdpP%QQQCnnyybV5}KKFZ@_ zlk)1K4`X;LPimAVfQ5O53@QQwSf2wjmVpe@wI?agBlQAppSa-hpjDxSIASCQ_bU z8gcx8O||WAj__;tP}Bp@y&+(kRDklUp08{df|oul-|BI=EYt3On12UTj)?d8uko)2 zwl`Eg+q+#b>Z{!gDEm@Cm(ROK5ij!g!-qG?d2}VboK|yo8jX`?xsXANy%#rr)C^$a zlf5`DYznYZ0a^oS0*HR3u^N^~+xtBsNxw;zZHKTb#I60dcJjWNmb08|Drj^G`#!XX zW*fGkFR%6@+IW+!%RgP}|9nT$%FGUX6^gxglv-iR_n;R+SoSMNCOO|iT#A~oFDL|I zt{9?VU;qx=7R=et{tVS9W@yB)-_uz1Qyy%Es4iPV%X=864BqRcBH~Qw@Tl>91nY&H z?B})ft-nAMwm3V@@=sbLwm7515Ay6jZ}&dG5911T~0*IeQVfHVI{gH*}E^V`IOj3WWMLN!{`Y}MY zL0=+HpKpFke3|vp zZ%!Q3hJ&Di_)obJXr#pzx99{@#$we?S2}o?Q@%#sJeqJvlenis9!G_<4qj4D)|2h1 zJ(}sgo6T6BusA3|ovc;o+z=Ok1VtPjBkv;7g}3@UyS#m-@l5>QVPSJ8!U_%w1PsDT zc$uz-`l!cgbcqrQBKE@X@3YI5~It^3)&DQzH&8T4-maIB{sSL7+`79 z6e(zFv03MBs#K2)jftx;#rC|-aV@#}?#35qt(wfz$^zN4;-q0EM zaiSSA^9A!@<~X5o(qVpW`as`9r0Q*u!;Z?J70(oYU|zaGbz@YGITJ?jMDd zoBhBeDDIg3oV$!Qs#W4iN}6aQ_eUj~31J?a6GjoCqoft|PuunN|IW#3W?QgV57bubOq&6^E9xqMYghKhcCJF6J_rDT>m(<*94(U}EmR z`Y=gk1$c3)lKX{v%hAUDeN1vv$sv}q_gF#^*|R?EwcVS>+O&QdDWHjd_$Gx30Wbn5 zIXPKtzr<}i{Fd0g)fvi*dW4#6hemPw?K<qxNb~_1ip9HjTc=Ee9h@T zB4CZm`8!Lt=4)dy|I4XOfTH61Lv(BBw_ytLeD}K{NA1k>Z8K(r=GeiL-NnCzeyRJ= zcthVi;#TtM>R4Dy12mElM6;N||G|p^JI}!Fl&YWbVObMm{UaJ9`sIF4L&*Ovx7|Gr zUeCpQ#r{K(2^Hi{aX$4!U~=h*z>;?-1Y4Vkj02s>t9XqAW~q(60i05PQ{N%H*-g(BM zQ<+MbwmNBKp!PMvLX-kAObd3tm14Omw9I72QH>xXI%-?MnoLf9F>vaRLblxb`x_d!9=zz8ycS_8xYLB>zzK2#`)fgYY?>bzm`TS0@xipr8e~$K*}~ z@}+Gx_mkf=+oEhD!RVTE9Cd7n8Ll3l3{2F9?m~@TQD~bcM?HE5S@auT+J@v#;y)}^ z_V@f8gywX5_gm7bk%M3kUZ4oN=1v9)j1?b}C9DpF>|tUL>FlmQ?`o*pWd? zy&6%9%kiH8IeOLh*1;lv8?1ebl_maFzjY2Yv_!vsZ^H+@M!# z{od6IUb6k^ySD1v3&6zh+uuopQ(LLlGREOl`uokreBPb*MX_+e(#bhf0Ol zK3cp8OZ+)qI0By{;$6_|(4ZXu;|pLSo>2Q~+*0fS8i{}S&*9WPGfqf91Vu_feO?Pd zi#g^JWQf{UkqjspB;F#ipk>VrlvdVgz(bM&$=@6j9=cx5DX@?YzB4}YseJWg6_>v( zl6{FWgFXBZ=(ShlLj?qYn1Pya#7p#j1iO6bsV7UoYMphbwO#CslkT9ea9db{rDg6m6h|?AHJJql$4CyoCdHEnSad^MZ)sEc)*j=6T_7jxu0DOev)AS({)D;K) zWV#?$N)Q9k=0(Z)PR1!n8J(HNo;^@4av8iC4?MedIx0C6l<`Kv{EawZ3q)y^)IQc9SZ|wq4YeHx>tK zDG6%8lmv#qq|}&VDDCsz%Ab12HNmZ?ukHh_S0l_tf$wigGb}~Qot3Q^mNj2Mijt6s zJ$98${yZh{B^e@M`OsOQw*D)?*49>q+C-tI^va`!28<$&|1p?A6JET|9x9Ms2}&lh z88$0(Hq^pXVyBbm2zgbb5^_qzrrvbcJ7tg;k3_DZvJ!$A{*jN07CS;Jx#a+Mf6Jq2 z&xlixU?IMuD02m*SV!lJ=K)-f@esC(-ehWDG{-N9!mu#aeLK$Tt-)6d(M zcSyjOMw`TD1y7Yfv<4gBrykvLT<_Q?cDBhX=6LuB0VtI#%T4wn#V}J>IjLD%@^cKI zTsnC@8eW3^(3ZvPsv7(E@6XrR*g7tP{Y0rz>91FW?PpA4R?2{wW>8XXHIg@Z0U%GvhSn-s1$~RtT?9gR=e%J>$%7$ z_GlS+y7pT~XYg%M>@Dxu@~H&@gz*U6SRMu#^v$urZ+`5+$gBq7EpO?uC=UG~2L~)T z=(VWB?0at^SH&TyeXa*gOdL(+h0N7>1rS;f8sd|D*4z9#Zur|%;izYhGfQyMewJ{z z0?v5YIOn~>kNq?x|8Wc7!eB&UB7@`$e_)>QTft!JWdb2c=!@T`1NM? z>P9su?Zdc!sbE4@DhqkQMV@kidHvV5`rBX?pcL4blZ$JdJvXnY-dH2O%%3Ughc`BLdLs7u%vqDXFXXt1$hs++ntff{Ipg)Q&|GJ?jKSVZbxu`3iywPaQ zr`H4BMqjr(pz{fn{hz5z6m}n!jNshaA#CU5j7_ZSNl@9(?3uCgN@Z4KqK!Z!<{dK5 z4piZFSZ1)HST+g9vPiwn!vtzESJ2V4DDusljxl z8*jKXc>RAi2l<}0$;stDe1f9hX7Z@eb8gU;@aEx*nPt%EawCi){#cGO9T`e6x12d4 zQR_kq8$GY`cT?2fTJsfj!_2u*YhHo5GDEq5r{tWGTGKv7!`kW9Nlew8z_+%OwHBSD zxpHb~yHC0-!OAT?;4XpYZ@k!>u943n?NXz6GVU%ugzKZelq99DT?Q)HJC|eVx5h@Q z?Rj?%j)G&yrEFW}t7Q><3cDrRZuVz{69G=Ab>YXSW10GImo4?a3yvP;`EDrIt&irI zL-!GGM*U$9wYIax4{w8}((9$lFSyGy%?@IvdJFYhN)L$K#Xc7^Nwi8fdOqP$Oz3+VpIDD_rn?e=^r6!oLrp#PAcBB3l%zSk>?hQGeqs7;Fk)Tr+Qf+c;lb#6-@c1% z&F3N4=fT8fDppC%*k4PG+`Wf$BO@bY&-b-y!Cy^P6Sw2;r@j9M+jG}}$R3k3z;R@F z_;&osHO*;mNWIHy{O2P!cKLH{YY~Q0$MciX^uqm%+vIaDI^5=`#4NZ%XbH68zfa8J z2U<3+#E6mLTg>)T6}}90f;wQkx;mfk0OK^~_Ayl-n!kN5WSni=W@jHpLju#9OMEeL zOaYkbLkVBLZx@>pE+i@afEb6BrqpV~c00D^0$&V50khCm@BOTHMGl$9t2-l-b=$v< z8I=Z2pPSDYtIOdcFqfn_*M(-QvwrWMv%MP{1w2|d;g!w-HB-J{M!0ORG}+TbT`El4 z$N<7pjK|q)XeB=KJ=t#iLn!6|B_#Hl-JP|r@*lu$9;uWs0{ zs~ZCHfl&Vot&2K?RR$RdU^j&9;CYbw{US*H@f(}(cc^Q5qZbZEpl##}?n1n2--XEa z7?)_NqRi)*M5_yjCee?^P#Mc_c0H%q!?{z<^bJN4#^h`no*_|IT@n-?6&3YJAb5go zpl@mqu7c-PoIO#7%@$4un83yRUk%gS_n_4~LG0CoP$iUm^CXTcF6XzSWf7PX!qyd4 zCKk`e_8~#Af+X_s`>)R!HctMVo4_m=dE2~6JpbLi2(lz7urMs>`?}Z)RR4_0@N%VC`yc`~uwMrm~+9*dLZIYQPj zw5QJEYInFE3tpZp1sOi~i|b@yM>blw*ET0q#wJy{Rg^6Ix)%JHnFu;saLVP)?)1Hr zSJsT7Y58P?8gh=B5}Vjq_CCw;XA$5`u&BvU1JA3P{0r-gO~(|n3BNOz)w+nOBjUfV z^4R1_jTBA23M>O>f=nv&n$=EBW4^%r6l2 z-m}5h?DrM@EFS?pM{w%Pc2@ZlqV1iw&^Z#8t3+}l$pWDFfI1U$sPR-ra z835)yWs|#;rQiIwyq~e7GPPIgTH;bGYTEVESd8h!zP?KM_CTq}a$^Z-ho3t|2 zZcoVWe)mgQ$J3FRW({59`Py$ezBfn27!jtTh_ki!(TB^Oy=;Yh8w!Q>9ZNx!{PpmG z4ES(qTS!VxE9Zsz>_$&Ngzb#X_f!&eL`C+;W5JM~m}5-Has+qT^KUPO;hgQZ<7}eQ zg9&&7+LKni32kBQBc=~{f8HR6+2Tf1dz7Lgj$3QCn^pYT^0it;f+p$UhfONX5KU%O zpQZUgjQW1Ue@2_G9uUoh7{5!s^QF9~5_t&pG323LgqAlyre^}h-zAZHG7{wmKL$z> z$nWfwg{NiZo2!Mmt*4$E=%4@qD8>K%7l7r4!+CDwB643KhE%UPD)>A-Fc7!&K?zVu zs{_UT5Zpy}pf&?}+PEM8WXBXVruGfWK4Eh0MOeg-Lo1u-q1!T|DQsbAUXG;ebXCnb=3BTt6%jS8>r*vWaRZY?8>%{ocTVscrzTBDKiyo z?u=rjcSb_>Ad8Jp2($_)i&X6+bU=1zM#rlWOiSD&68*|Qmy{MpM)pAWR+acUaHaWw znmHGLroTUqZ?nq%mT0!0axJ=%7~c%#QpsJR5<@?}Utw4*hAkvyB<0RTg{bsXzLad_ z@>MoU-`^%~6PCqZF~cn`nzHtdb&lv<80nWW|C5KLIKjK zSOX%vV*ximD^)=d53geZh&GJs{;-D9$hBL=g=eanuU~YRBPNktz)YU)Ix}=cclYQ! znH^9|T>%MnsXmPjAXrkZ9*^tfav0du(W5LDm8c7DRyVu=j!>Z@?mY6Ub^bV&6t$>u z6r!63y2J?z{jrSD=wFlctu9|#_BhOH1zSxfxPY6UPA0blX#>leu6p90#1>SmtfL7e zOWYg_IME88cG_EQFga>`E!pmQpczP?9)rn6WXesW-~X{hL$bHovj2J0MIrwBNV_0A zJfA-tlz$?qv%`vuo8QR{3wW72iMZ?+l#(!1X;?$4vpuK8b`h{!!2v2a5-vA5+3j%j2*V0r#UGSDY_+4nFPACW9eAzQv9fE zDStwbBM-?^PU#0wxMWZ%yqh->w9Wf~n%fcApw&wYVS%5gV$y;BU3MSU>cB`= zk@;>0fE#8QKm`9D-R7jLNNxi!#fniLUz|8tMfN4=Z?=fS<>gm|y_ujyMAMDWo`}5% zWlUYGwTrYa0@4uj{lV&=3Z8OpVP!x`5A2DZJ0%kmvOg&7>x;{c=V#ryxSSoyN5XIx znF`}7SY|y(xErCJ_YBH{Vc`5m-MplDS3@0@Ou_kPg=jWLjXLj6md^W8lGN^hLhRAz z1G0E|AiF_$+DTfiZbu0)jRGZ8%nRi9+qdDO`#ftX02cg_gCT5<88tPn8vAa!-4S}$ znCs&s)dUdm?B>1TS$y(_V3Hi#8)W{t*wG_}9mGS1P+G3zy#~G6!ATR|m{q|!9~~En zjZu1y8qwwql?#F18l55< z$C;bOGcJ5Lh^&Hhk$4_TqG!k67uPd%7N$29d)O#kT;WP>(ENQUzk6$0sn%5FtS`B$ zXpsIxKzHfh%x&*@y>87)`5rx-^P@Y<8B`SU8eK*uQgEuTN2YM{c}tVqF*Vo z7yWuBgZWnn%!2W#yw38nI+)V{g<4(Cx5d$Kw)=Y@QQ;Zb>ns!%7Z(pGEgTCAKAixZ zpsAQ)>%4lOQB~eZYvgDg#JOYSh;NhCeeBOUO2LE5@)jHthy%KzIe2g8BowpWrcq|h z(yli?Az~@&!o#X->|T{mu=%v*u;pa>bm;0Se5#o=G!SbfiS`kw9nKpbwBS|sORin$ z!N`sogRSsMI>IXwx{cDxlxJb$YipH(6e~+~cxhr2O5BdhS1KrOMT%g~oWXvCFny&2 zUO2jSKntkfGBKTK_r!WAG19Uqvp>_5_NEYA63A9d{jlHPXD==P)k%|-*eIx|5O*7!VX%7>1ouR4*#^M9b8I>7d zZrUK>*&S~~v6RuN^_pZiNr$GTvATA1i?Yq}XyKt%F8w~9K7IY$g!l;!MZdYuL_u@( zt#}qXFSDDYx-+W8o6fi5wLt75XnD!ekioIwUn=o!W!DOjS zidtu(pe}m$*m2ck7twiNe!#m$gud_H(^2$K2?qv9j4McN0IQ0T^MRfp@oMXUkY&I_ z{VW^D-?xv2&Jk!8*r0D_7Z;@;8nP4nD$eytydyd!@$pr_Xt-1s_f;wT;ueh+3f!hV zHDfoW(R5ms;Vm64+*0bXG{NpM;)&hkA#r9#1-E+1!}<-;t;hcla;q{7A<_d-uZh%@ TyK%0+QoJrWxjVi(i%$C=XK6_` literal 0 HcmV?d00001 diff --git a/src-tauri/assets/logo.png b/src-tauri/assets/logo.png index f3894cc2b6ad9ae4774ed570d5f67c941b02af8e..2718ae73ea7531c138bec63b2d5bd9a6cc79e4a3 100644 GIT binary patch literal 19232 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 TyK%0+QoJrWxjVi(i%$C=XK6_` diff --git a/src-tauri/assets/tray.png b/src-tauri/assets/tray.png index 4907f53a7e4a5ce25ecb04cfc6b07aa32d6d807f..2718ae73ea7531c138bec63b2d5bd9a6cc79e4a3 100644 GIT binary patch delta 18191 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 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, + }, +}))