✨ feature(core): add gamemode support

Signed-off-by: Pauline <git@ethanlibs.co>
This commit is contained in:
Pauline 2024-08-18 18:54:02 +02:00
parent 3e5c29adfa
commit a87dd17a6e
No known key found for this signature in database
GPG key ID: 722BB181973296AE
16 changed files with 301 additions and 38 deletions

View file

@ -6,7 +6,7 @@ The source code of this repository is licensed under the GNU General Public Lice
```txt ```txt
OneLauncher - Open source Rust-based Minecraft Launcher OneLauncher - Open source Rust-based Minecraft Launcher
Copyright (C) 2023~2024 Polyfrost and Contributors Copyright (C) 2023~CURRENT Polyfrost and Contributors
This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 3 of the License. This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 3 of the License.
@ -88,7 +88,7 @@ You should have received a copy of the GNU General Public License
along with this program. If not, see <https://www.gnu.org/licenses/>. along with this program. If not, see <https://www.gnu.org/licenses/>.
``` ```
## Gamemode ## [Gamemode]
```txt ```txt
Copyright (c) 2017-2022, Feral Interactive Copyright (c) 2017-2022, Feral Interactive
@ -118,3 +118,34 @@ CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
POSSIBILITY OF SUCH DAMAGE. POSSIBILITY OF SUCH DAMAGE.
``` ```
## [Rust Gamemode Internal Linking]
```txt
MIT License
Copyright (c) 2024 Sophie Leochina
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.
```
[Prism Launcher]: https://github.com/PrismLauncher/PrismLauncher
[Modrinth App]: https://github.com/modrinth/code
[Gamemode]: https://github.com/FeralInteractive/gamemode
[Rust Gamemode Internal Linking]: https://github.com/SophieSilver/linking-gamemode

9
Cargo.lock generated
View file

@ -3568,6 +3568,7 @@ dependencies = [
"lazy_static", "lazy_static",
"notify", "notify",
"notify-debouncer-mini", "notify-debouncer-mini",
"onelauncher_gamemode",
"onelauncher_macros", "onelauncher_macros",
"p256", "p256",
"paste", "paste",
@ -3599,6 +3600,14 @@ dependencies = [
"zip", "zip",
] ]
[[package]]
name = "onelauncher_gamemode"
version = "1.0.0-alpha.1"
dependencies = [
"cc",
"libc",
]
[[package]] [[package]]
name = "onelauncher_gui" name = "onelauncher_gui"
version = "1.0.0-alpha.1" version = "1.0.0-alpha.1"

View file

@ -4,7 +4,8 @@ members = [
"apps/testing", # onelauncher_test -- test the core crate in a cli setting "apps/testing", # onelauncher_test -- test the core crate in a cli setting
"apps/desktop", # onelauncher_gui -- the rust code for our tauri app "apps/desktop", # onelauncher_gui -- the rust code for our tauri app
"packages/core", # onelauncher -- the rust core for onelauncher "packages/core", # onelauncher -- the rust core for onelauncher
"packages/macros" # onelauncher_macros -- utility procedural macros for onelauncher "packages/macros", # onelauncher_macros -- utility procedural macros for onelauncher
"packages/gamemode" # onelauncher_gamemode -- rust wrapper for feral gamemode
] ]
[workspace.package] # sets default [package] settings for workspace members [workspace.package] # sets default [package] settings for workspace members
@ -25,6 +26,7 @@ onelauncher = { path = "./packages/core" }
onelauncher_macros = { path = "./packages/macros" } onelauncher_macros = { path = "./packages/macros" }
onelauncher_gui = { path = "./apps/desktop" } onelauncher_gui = { path = "./apps/desktop" }
onelauncher_test = { path = "./apps/testing" } onelauncher_test = { path = "./apps/testing" }
onelauncher_gamemode = { path = "./packages/gamemode" }
# # ============= TAURI ============= # # # # ============= TAURI ============= # #
# tauri uses latest crates.io rc channel # tauri uses latest crates.io rc channel

View file

@ -29,6 +29,7 @@
"dialog:allow-open", "dialog:allow-open",
"dialog:allow-save", "dialog:allow-save",
"dialog:allow-confirm", "dialog:allow-confirm",
"deep-link:default" "deep-link:default",
"updater:default"
] ]
} }

View file

@ -149,7 +149,7 @@
"plugins": { "plugins": {
"updater": { "updater": {
"pubkey": "", "pubkey": "",
"endpoints": ["https://polyfrost.org/releases/tauri/{{version}}/{{target}}/{{arch}}"] "endpoints": ["https://polyfrost.org/releases/tauri/{{current_version}}/{{target}}/{{arch}}"]
}, },
"deep-link": { "deep-link": {
"mobile": [], "mobile": [],

View file

@ -55,7 +55,7 @@
] ]
}, },
"devDependencies": { "devDependencies": {
"@flowr/eslint-config": "^3.12.0", "@flowr/eslint-config": "^3.12.1",
"@types/node": "^22.4.0", "@types/node": "^22.4.0",
"@unocss/eslint-plugin": "^0.62.2", "@unocss/eslint-plugin": "^0.62.2",
"@vitest/ui": "^2.0.5", "@vitest/ui": "^2.0.5",

View file

@ -16,7 +16,7 @@
"types": "./src/index.ts", "types": "./src/index.ts",
"scripts": {}, "scripts": {},
"dependencies": { "dependencies": {
"@flowr/utils": "^3.12.0", "@flowr/utils": "^3.12.1",
"@solid-primitives/deep": "^0.2.9", "@solid-primitives/deep": "^0.2.9",
"@tanstack/solid-query": "^5.51.21", "@tanstack/solid-query": "^5.51.21",
"fast-equals": "^5.0.1", "fast-equals": "^5.0.1",

View file

@ -76,3 +76,6 @@ flate2 = { workspace = true }
[target.'cfg(windows)'.dependencies] [target.'cfg(windows)'.dependencies]
winreg = { workspace = true } winreg = { workspace = true }
[target.'cfg(linux)'.dependencies]
onelauncher_gamemode = { workspace = true }

View file

@ -449,6 +449,11 @@ impl Processor {
let stdout = proc.stdout.take().unwrap(); let stdout = proc.stdout.take().unwrap();
let stderr = proc.stderr.take().unwrap(); let stderr = proc.stderr.take().unwrap();
// #[cfg(target_os = "linux")]
// {
// onelauncher_gamemode::
// }
tokio::spawn(async move { tokio::spawn(async move {
let mut stdout = BufReader::new(stdout).lines(); let mut stdout = BufReader::new(stdout).lines();
let mut stderr = BufReader::new(stderr).lines(); let mut stderr = BufReader::new(stderr).lines();

View file

@ -0,0 +1,17 @@
[package]
name = "onelauncher_gamemode"
description = "Rust wrapper for Gamemode"
version = { workspace = true }
license = { workspace = true }
edition = { workspace = true }
repository = { workspace = true }
documentation = { workspace = true }
readme = { workspace = true }
homepage = { workspace = true }
authors = { workspace = true }
[dependencies]
libc = { version = "0.2" }
[build-dependencies]
cc = { version = "1.1" }

View file

@ -0,0 +1,11 @@
fn main() {
cc::Build::new()
.include("include")
.file("stub/stub.c")
.opt_level(3)
.debug(false)
.warnings(true)
.compile("stub");
println!("cargo::rerun-if-changed=stub.c");
}

View file

@ -0,0 +1,23 @@
use libc::pid_t;
use std::ffi::c_int;
#[link(name = "stub", kind = "static")]
extern "C" {
fn gamemode_request_start_for_wrapper(pid: pid_t) -> c_int;
}
pub fn request_start_for_wrapper(pid: u32) -> Result<(), String> {
match pid.try_into() {
Ok(signed) => {
unsafe {
let result = gamemode_request_start_for_wrapper(signed);
if result == 0 {
Ok(())
} else {
Err(format!("failed to request gamemode for pid {}: {}", pid, result))
}
}
}
Err(e) => Err(format!("failed to request gamemode for pid {}: {}", pid, e)),
}
}

View file

@ -0,0 +1,5 @@
#include "gamemode_client.h"
int gamemode_start_for_wrapper(pid_t pid) {
return gamemode_request_start_for(pid);
}

View file

@ -19,7 +19,7 @@
"int:prepare": "pnpm tsx prepare.ts" "int:prepare": "pnpm tsx prepare.ts"
}, },
"dependencies": { "dependencies": {
"@flowr/utils": "^3.12.0", "@flowr/utils": "^3.12.1",
"execa": "^9.3.1", "execa": "^9.3.1",
"mustache": "^4.2.0", "mustache": "^4.2.0",
"pathe": "^1.1.2", "pathe": "^1.1.2",

216
pnpm-lock.yaml generated
View file

@ -9,8 +9,8 @@ importers:
.: .:
devDependencies: devDependencies:
'@flowr/eslint-config': '@flowr/eslint-config':
specifier: ^3.12.0 specifier: ^3.12.1
version: 3.12.0(@typescript-eslint/utils@8.1.0(eslint@9.9.0(jiti@1.21.6))(typescript@5.5.4))(@unocss/eslint-plugin@0.62.2(eslint@9.9.0(jiti@1.21.6))(typescript@5.5.4))(eslint-plugin-solid@0.14.2(eslint@9.9.0(jiti@1.21.6))(typescript@5.5.4))(eslint-plugin-vue@9.27.0(eslint@9.9.0(jiti@1.21.6)))(eslint-processor-vue-blocks@0.1.2(@vue/compiler-sfc@3.4.38)(eslint@9.9.0(jiti@1.21.6)))(eslint@9.9.0(jiti@1.21.6))(typescript@5.5.4)(vitest@2.0.5(@types/node@22.4.0)(@vitest/ui@2.0.5)(jsdom@24.1.1)(sass@1.77.8))(vue-eslint-parser@9.4.3(eslint@9.9.0(jiti@1.21.6))) version: 3.12.1(@typescript-eslint/utils@8.1.0(eslint@9.9.0(jiti@1.21.6))(typescript@5.5.4))(@unocss/eslint-plugin@0.62.2(eslint@9.9.0(jiti@1.21.6))(typescript@5.5.4))(eslint-plugin-solid@0.14.2(eslint@9.9.0(jiti@1.21.6))(typescript@5.5.4))(eslint-plugin-vue@9.27.0(eslint@9.9.0(jiti@1.21.6)))(eslint-processor-vue-blocks@0.1.2(@vue/compiler-sfc@3.4.38)(eslint@9.9.0(jiti@1.21.6)))(eslint@9.9.0(jiti@1.21.6))(typescript@5.5.4)(vitest@2.0.5(@types/node@22.4.0)(@vitest/ui@2.0.5)(jsdom@24.1.1)(sass@1.77.8))(vue-eslint-parser@9.4.3(eslint@9.9.0(jiti@1.21.6)))
'@types/node': '@types/node':
specifier: ^22.4.0 specifier: ^22.4.0
version: 22.4.0 version: 22.4.0
@ -215,7 +215,7 @@ importers:
version: 1.77.8 version: 1.77.8
unocss: unocss:
specifier: ^0.62.2 specifier: ^0.62.2
version: 0.62.2(postcss@8.4.41)(rollup@4.20.0)(vite@5.4.1(@types/node@22.4.0)(sass@1.77.8)) version: 0.62.2(postcss@8.4.41)(rollup@4.21.0)(vite@5.4.1(@types/node@22.4.0)(sass@1.77.8))
vite-plugin-solid: vite-plugin-solid:
specifier: ^2.10.2 specifier: ^2.10.2
version: 2.10.2(@testing-library/jest-dom@6.4.8)(solid-js@1.8.21)(vite@5.4.1(@types/node@22.4.0)(sass@1.77.8)) version: 2.10.2(@testing-library/jest-dom@6.4.8)(solid-js@1.8.21)(vite@5.4.1(@types/node@22.4.0)(sass@1.77.8))
@ -231,8 +231,8 @@ importers:
packages/client: packages/client:
dependencies: dependencies:
'@flowr/utils': '@flowr/utils':
specifier: ^3.12.0 specifier: ^3.12.1
version: 3.12.0 version: 3.12.1
'@solid-primitives/deep': '@solid-primitives/deep':
specifier: ^0.2.9 specifier: ^0.2.9
version: 0.2.9(solid-js@1.8.21) version: 0.2.9(solid-js@1.8.21)
@ -268,8 +268,8 @@ importers:
packages/scripts: packages/scripts:
dependencies: dependencies:
'@flowr/utils': '@flowr/utils':
specifier: ^3.12.0 specifier: ^3.12.1
version: 3.12.0 version: 3.12.1
execa: execa:
specifier: ^9.3.1 specifier: ^9.3.1
version: 9.3.1 version: 9.3.1
@ -928,8 +928,8 @@ packages:
resolution: {integrity: sha512-vBZP4NlzfOlerQTnba4aqZoMhE/a9HY7HRqoOPaETQcSQuWEIyZMHGfVu6w9wGtGK5fED5qRs2DteVCjOH60sA==} resolution: {integrity: sha512-vBZP4NlzfOlerQTnba4aqZoMhE/a9HY7HRqoOPaETQcSQuWEIyZMHGfVu6w9wGtGK5fED5qRs2DteVCjOH60sA==}
engines: {node: '>=14'} engines: {node: '>=14'}
'@flowr/eslint-config@3.12.0': '@flowr/eslint-config@3.12.1':
resolution: {integrity: sha512-5Xl0ScnpO0SiW+hCyQe9yPVzmAgSBAnjtyvsRujuUL3AomUi1sknF+3JoiaEfd2V278EeaHornsZOinpIdzXVQ==} resolution: {integrity: sha512-bJednVfzn0HJrXuDAlb3r2WM4dMmLMVkKXUpM0HhEWt2TFtVUHS7JJqJU/fSBxMw/hA8eOwkNXqMRJ5KmjL8rQ==}
engines: {node: '>=20'} engines: {node: '>=20'}
peerDependencies: peerDependencies:
'@eslint-react/eslint-plugin': ^1.5.8 '@eslint-react/eslint-plugin': ^1.5.8
@ -992,8 +992,8 @@ packages:
vue-eslint-parser: vue-eslint-parser:
optional: true optional: true
'@flowr/utils@3.12.0': '@flowr/utils@3.12.1':
resolution: {integrity: sha512-ZAyinoGoyVWNBl0iAjiiWYaRrAPgu2ApCRVBHh5Kb/abpcsfQnybZzeu6Rz9olxPmtp/OjvBmS36/xLK+9ZJZQ==} resolution: {integrity: sha512-ec+E0EWqnriL8q1nQSyIb+SQLEB0r466AJjX94cKYpEgTNIXRehHRdRsPflAYG4EP7odJlPKppfNq/ZNh7G5+w==}
engines: {node: '>=20'} engines: {node: '>=20'}
'@fontsource/poppins@5.0.15': '@fontsource/poppins@5.0.15':
@ -1166,81 +1166,161 @@ packages:
cpu: [arm] cpu: [arm]
os: [android] os: [android]
'@rollup/rollup-android-arm-eabi@4.21.0':
resolution: {integrity: sha512-WTWD8PfoSAJ+qL87lE7votj3syLavxunWhzCnx3XFxFiI/BA/r3X7MUM8dVrH8rb2r4AiO8jJsr3ZjdaftmnfA==}
cpu: [arm]
os: [android]
'@rollup/rollup-android-arm64@4.20.0': '@rollup/rollup-android-arm64@4.20.0':
resolution: {integrity: sha512-u00Ro/nok7oGzVuh/FMYfNoGqxU5CPWz1mxV85S2w9LxHR8OoMQBuSk+3BKVIDYgkpeOET5yXkx90OYFc+ytpQ==} resolution: {integrity: sha512-u00Ro/nok7oGzVuh/FMYfNoGqxU5CPWz1mxV85S2w9LxHR8OoMQBuSk+3BKVIDYgkpeOET5yXkx90OYFc+ytpQ==}
cpu: [arm64] cpu: [arm64]
os: [android] os: [android]
'@rollup/rollup-android-arm64@4.21.0':
resolution: {integrity: sha512-a1sR2zSK1B4eYkiZu17ZUZhmUQcKjk2/j9Me2IDjk1GHW7LB5Z35LEzj9iJch6gtUfsnvZs1ZNyDW2oZSThrkA==}
cpu: [arm64]
os: [android]
'@rollup/rollup-darwin-arm64@4.20.0': '@rollup/rollup-darwin-arm64@4.20.0':
resolution: {integrity: sha512-uFVfvzvsdGtlSLuL0ZlvPJvl6ZmrH4CBwLGEFPe7hUmf7htGAN+aXo43R/V6LATyxlKVC/m6UsLb7jbG+LG39Q==} resolution: {integrity: sha512-uFVfvzvsdGtlSLuL0ZlvPJvl6ZmrH4CBwLGEFPe7hUmf7htGAN+aXo43R/V6LATyxlKVC/m6UsLb7jbG+LG39Q==}
cpu: [arm64] cpu: [arm64]
os: [darwin] os: [darwin]
'@rollup/rollup-darwin-arm64@4.21.0':
resolution: {integrity: sha512-zOnKWLgDld/svhKO5PD9ozmL6roy5OQ5T4ThvdYZLpiOhEGY+dp2NwUmxK0Ld91LrbjrvtNAE0ERBwjqhZTRAA==}
cpu: [arm64]
os: [darwin]
'@rollup/rollup-darwin-x64@4.20.0': '@rollup/rollup-darwin-x64@4.20.0':
resolution: {integrity: sha512-xbrMDdlev53vNXexEa6l0LffojxhqDTBeL+VUxuuIXys4x6xyvbKq5XqTXBCEUA8ty8iEJblHvFaWRJTk/icAQ==} resolution: {integrity: sha512-xbrMDdlev53vNXexEa6l0LffojxhqDTBeL+VUxuuIXys4x6xyvbKq5XqTXBCEUA8ty8iEJblHvFaWRJTk/icAQ==}
cpu: [x64] cpu: [x64]
os: [darwin] os: [darwin]
'@rollup/rollup-darwin-x64@4.21.0':
resolution: {integrity: sha512-7doS8br0xAkg48SKE2QNtMSFPFUlRdw9+votl27MvT46vo44ATBmdZdGysOevNELmZlfd+NEa0UYOA8f01WSrg==}
cpu: [x64]
os: [darwin]
'@rollup/rollup-linux-arm-gnueabihf@4.20.0': '@rollup/rollup-linux-arm-gnueabihf@4.20.0':
resolution: {integrity: sha512-jMYvxZwGmoHFBTbr12Xc6wOdc2xA5tF5F2q6t7Rcfab68TT0n+r7dgawD4qhPEvasDsVpQi+MgDzj2faOLsZjA==} resolution: {integrity: sha512-jMYvxZwGmoHFBTbr12Xc6wOdc2xA5tF5F2q6t7Rcfab68TT0n+r7dgawD4qhPEvasDsVpQi+MgDzj2faOLsZjA==}
cpu: [arm] cpu: [arm]
os: [linux] os: [linux]
'@rollup/rollup-linux-arm-gnueabihf@4.21.0':
resolution: {integrity: sha512-pWJsfQjNWNGsoCq53KjMtwdJDmh/6NubwQcz52aEwLEuvx08bzcy6tOUuawAOncPnxz/3siRtd8hiQ32G1y8VA==}
cpu: [arm]
os: [linux]
'@rollup/rollup-linux-arm-musleabihf@4.20.0': '@rollup/rollup-linux-arm-musleabihf@4.20.0':
resolution: {integrity: sha512-1asSTl4HKuIHIB1GcdFHNNZhxAYEdqML/MW4QmPS4G0ivbEcBr1JKlFLKsIRqjSwOBkdItn3/ZDlyvZ/N6KPlw==} resolution: {integrity: sha512-1asSTl4HKuIHIB1GcdFHNNZhxAYEdqML/MW4QmPS4G0ivbEcBr1JKlFLKsIRqjSwOBkdItn3/ZDlyvZ/N6KPlw==}
cpu: [arm] cpu: [arm]
os: [linux] os: [linux]
'@rollup/rollup-linux-arm-musleabihf@4.21.0':
resolution: {integrity: sha512-efRIANsz3UHZrnZXuEvxS9LoCOWMGD1rweciD6uJQIx2myN3a8Im1FafZBzh7zk1RJ6oKcR16dU3UPldaKd83w==}
cpu: [arm]
os: [linux]
'@rollup/rollup-linux-arm64-gnu@4.20.0': '@rollup/rollup-linux-arm64-gnu@4.20.0':
resolution: {integrity: sha512-COBb8Bkx56KldOYJfMf6wKeYJrtJ9vEgBRAOkfw6Ens0tnmzPqvlpjZiLgkhg6cA3DGzCmLmmd319pmHvKWWlQ==} resolution: {integrity: sha512-COBb8Bkx56KldOYJfMf6wKeYJrtJ9vEgBRAOkfw6Ens0tnmzPqvlpjZiLgkhg6cA3DGzCmLmmd319pmHvKWWlQ==}
cpu: [arm64] cpu: [arm64]
os: [linux] os: [linux]
'@rollup/rollup-linux-arm64-gnu@4.21.0':
resolution: {integrity: sha512-ZrPhydkTVhyeGTW94WJ8pnl1uroqVHM3j3hjdquwAcWnmivjAwOYjTEAuEDeJvGX7xv3Z9GAvrBkEzCgHq9U1w==}
cpu: [arm64]
os: [linux]
'@rollup/rollup-linux-arm64-musl@4.20.0': '@rollup/rollup-linux-arm64-musl@4.20.0':
resolution: {integrity: sha512-+it+mBSyMslVQa8wSPvBx53fYuZK/oLTu5RJoXogjk6x7Q7sz1GNRsXWjn6SwyJm8E/oMjNVwPhmNdIjwP135Q==} resolution: {integrity: sha512-+it+mBSyMslVQa8wSPvBx53fYuZK/oLTu5RJoXogjk6x7Q7sz1GNRsXWjn6SwyJm8E/oMjNVwPhmNdIjwP135Q==}
cpu: [arm64] cpu: [arm64]
os: [linux] os: [linux]
'@rollup/rollup-linux-arm64-musl@4.21.0':
resolution: {integrity: sha512-cfaupqd+UEFeURmqNP2eEvXqgbSox/LHOyN9/d2pSdV8xTrjdg3NgOFJCtc1vQ/jEke1qD0IejbBfxleBPHnPw==}
cpu: [arm64]
os: [linux]
'@rollup/rollup-linux-powerpc64le-gnu@4.20.0': '@rollup/rollup-linux-powerpc64le-gnu@4.20.0':
resolution: {integrity: sha512-yAMvqhPfGKsAxHN8I4+jE0CpLWD8cv4z7CK7BMmhjDuz606Q2tFKkWRY8bHR9JQXYcoLfopo5TTqzxgPUjUMfw==} resolution: {integrity: sha512-yAMvqhPfGKsAxHN8I4+jE0CpLWD8cv4z7CK7BMmhjDuz606Q2tFKkWRY8bHR9JQXYcoLfopo5TTqzxgPUjUMfw==}
cpu: [ppc64] cpu: [ppc64]
os: [linux] os: [linux]
'@rollup/rollup-linux-powerpc64le-gnu@4.21.0':
resolution: {integrity: sha512-ZKPan1/RvAhrUylwBXC9t7B2hXdpb/ufeu22pG2psV7RN8roOfGurEghw1ySmX/CmDDHNTDDjY3lo9hRlgtaHg==}
cpu: [ppc64]
os: [linux]
'@rollup/rollup-linux-riscv64-gnu@4.20.0': '@rollup/rollup-linux-riscv64-gnu@4.20.0':
resolution: {integrity: sha512-qmuxFpfmi/2SUkAw95TtNq/w/I7Gpjurx609OOOV7U4vhvUhBcftcmXwl3rqAek+ADBwSjIC4IVNLiszoj3dPA==} resolution: {integrity: sha512-qmuxFpfmi/2SUkAw95TtNq/w/I7Gpjurx609OOOV7U4vhvUhBcftcmXwl3rqAek+ADBwSjIC4IVNLiszoj3dPA==}
cpu: [riscv64] cpu: [riscv64]
os: [linux] os: [linux]
'@rollup/rollup-linux-riscv64-gnu@4.21.0':
resolution: {integrity: sha512-H1eRaCwd5E8eS8leiS+o/NqMdljkcb1d6r2h4fKSsCXQilLKArq6WS7XBLDu80Yz+nMqHVFDquwcVrQmGr28rg==}
cpu: [riscv64]
os: [linux]
'@rollup/rollup-linux-s390x-gnu@4.20.0': '@rollup/rollup-linux-s390x-gnu@4.20.0':
resolution: {integrity: sha512-I0BtGXddHSHjV1mqTNkgUZLnS3WtsqebAXv11D5BZE/gfw5KoyXSAXVqyJximQXNvNzUo4GKlCK/dIwXlz+jlg==} resolution: {integrity: sha512-I0BtGXddHSHjV1mqTNkgUZLnS3WtsqebAXv11D5BZE/gfw5KoyXSAXVqyJximQXNvNzUo4GKlCK/dIwXlz+jlg==}
cpu: [s390x] cpu: [s390x]
os: [linux] os: [linux]
'@rollup/rollup-linux-s390x-gnu@4.21.0':
resolution: {integrity: sha512-zJ4hA+3b5tu8u7L58CCSI0A9N1vkfwPhWd/puGXwtZlsB5bTkwDNW/+JCU84+3QYmKpLi+XvHdmrlwUwDA6kqw==}
cpu: [s390x]
os: [linux]
'@rollup/rollup-linux-x64-gnu@4.20.0': '@rollup/rollup-linux-x64-gnu@4.20.0':
resolution: {integrity: sha512-y+eoL2I3iphUg9tN9GB6ku1FA8kOfmF4oUEWhztDJ4KXJy1agk/9+pejOuZkNFhRwHAOxMsBPLbXPd6mJiCwew==} resolution: {integrity: sha512-y+eoL2I3iphUg9tN9GB6ku1FA8kOfmF4oUEWhztDJ4KXJy1agk/9+pejOuZkNFhRwHAOxMsBPLbXPd6mJiCwew==}
cpu: [x64] cpu: [x64]
os: [linux] os: [linux]
'@rollup/rollup-linux-x64-gnu@4.21.0':
resolution: {integrity: sha512-e2hrvElFIh6kW/UNBQK/kzqMNY5mO+67YtEh9OA65RM5IJXYTWiXjX6fjIiPaqOkBthYF1EqgiZ6OXKcQsM0hg==}
cpu: [x64]
os: [linux]
'@rollup/rollup-linux-x64-musl@4.20.0': '@rollup/rollup-linux-x64-musl@4.20.0':
resolution: {integrity: sha512-hM3nhW40kBNYUkZb/r9k2FKK+/MnKglX7UYd4ZUy5DJs8/sMsIbqWK2piZtVGE3kcXVNj3B2IrUYROJMMCikNg==} resolution: {integrity: sha512-hM3nhW40kBNYUkZb/r9k2FKK+/MnKglX7UYd4ZUy5DJs8/sMsIbqWK2piZtVGE3kcXVNj3B2IrUYROJMMCikNg==}
cpu: [x64] cpu: [x64]
os: [linux] os: [linux]
'@rollup/rollup-linux-x64-musl@4.21.0':
resolution: {integrity: sha512-1vvmgDdUSebVGXWX2lIcgRebqfQSff0hMEkLJyakQ9JQUbLDkEaMsPTLOmyccyC6IJ/l3FZuJbmrBw/u0A0uCQ==}
cpu: [x64]
os: [linux]
'@rollup/rollup-win32-arm64-msvc@4.20.0': '@rollup/rollup-win32-arm64-msvc@4.20.0':
resolution: {integrity: sha512-psegMvP+Ik/Bg7QRJbv8w8PAytPA7Uo8fpFjXyCRHWm6Nt42L+JtoqH8eDQ5hRP7/XW2UiIriy1Z46jf0Oa1kA==} resolution: {integrity: sha512-psegMvP+Ik/Bg7QRJbv8w8PAytPA7Uo8fpFjXyCRHWm6Nt42L+JtoqH8eDQ5hRP7/XW2UiIriy1Z46jf0Oa1kA==}
cpu: [arm64] cpu: [arm64]
os: [win32] os: [win32]
'@rollup/rollup-win32-arm64-msvc@4.21.0':
resolution: {integrity: sha512-s5oFkZ/hFcrlAyBTONFY1TWndfyre1wOMwU+6KCpm/iatybvrRgmZVM+vCFwxmC5ZhdlgfE0N4XorsDpi7/4XQ==}
cpu: [arm64]
os: [win32]
'@rollup/rollup-win32-ia32-msvc@4.20.0': '@rollup/rollup-win32-ia32-msvc@4.20.0':
resolution: {integrity: sha512-GabekH3w4lgAJpVxkk7hUzUf2hICSQO0a/BLFA11/RMxQT92MabKAqyubzDZmMOC/hcJNlc+rrypzNzYl4Dx7A==} resolution: {integrity: sha512-GabekH3w4lgAJpVxkk7hUzUf2hICSQO0a/BLFA11/RMxQT92MabKAqyubzDZmMOC/hcJNlc+rrypzNzYl4Dx7A==}
cpu: [ia32] cpu: [ia32]
os: [win32] os: [win32]
'@rollup/rollup-win32-ia32-msvc@4.21.0':
resolution: {integrity: sha512-G9+TEqRnAA6nbpqyUqgTiopmnfgnMkR3kMukFBDsiyy23LZvUCpiUwjTRx6ezYCjJODXrh52rBR9oXvm+Fp5wg==}
cpu: [ia32]
os: [win32]
'@rollup/rollup-win32-x64-msvc@4.20.0': '@rollup/rollup-win32-x64-msvc@4.20.0':
resolution: {integrity: sha512-aJ1EJSuTdGnM6qbVC4B5DSmozPTqIag9fSzXRNNo+humQLG89XpPgdt16Ia56ORD7s+H8Pmyx44uczDQ0yDzpg==} resolution: {integrity: sha512-aJ1EJSuTdGnM6qbVC4B5DSmozPTqIag9fSzXRNNo+humQLG89XpPgdt16Ia56ORD7s+H8Pmyx44uczDQ0yDzpg==}
cpu: [x64] cpu: [x64]
os: [win32] os: [win32]
'@rollup/rollup-win32-x64-msvc@4.21.0':
resolution: {integrity: sha512-2jsCDZwtQvRhejHLfZ1JY6w6kEuEtfF9nzYsZxzSlNVKDX+DpsDJ+Rbjkm74nvg2rdx0gwBS+IMdvwJuq3S9pQ==}
cpu: [x64]
os: [win32]
'@sec-ant/readable-stream@0.4.1': '@sec-ant/readable-stream@0.4.1':
resolution: {integrity: sha512-831qok9r2t8AlxLko40y2ebgSDhenenCatLVeW/uBtnHPyhHOvG0C7TvfgecV+wHzIm5KUICgzmVpWS+IMEAeg==} resolution: {integrity: sha512-831qok9r2t8AlxLko40y2ebgSDhenenCatLVeW/uBtnHPyhHOvG0C7TvfgecV+wHzIm5KUICgzmVpWS+IMEAeg==}
@ -2412,8 +2492,8 @@ packages:
vue-eslint-parser: vue-eslint-parser:
optional: true optional: true
eslint-plugin-petal@3.12.0: eslint-plugin-petal@3.12.1:
resolution: {integrity: sha512-EE1dB1HfHT9YsdjPARgB4r2FtekPDKVE+GKfReDdyWdJa+WZ3E8C/44ZkXMDntzlRJvaGnk22REtB26RC6q+zA==} resolution: {integrity: sha512-6RSOjybHAJ1vg89xLg7KvIUqlOVnPc9YGAkbVVXkw8q/NZUCvGYDD8elg01OZCarTaej0MU4yG3Xtd5GoDM5cw==}
engines: {node: '>=20'} engines: {node: '>=20'}
peerDependencies: peerDependencies:
eslint: '>=8.40.0' eslint: '>=8.40.0'
@ -3529,6 +3609,11 @@ packages:
engines: {node: '>=18.0.0', npm: '>=8.0.0'} engines: {node: '>=18.0.0', npm: '>=8.0.0'}
hasBin: true hasBin: true
rollup@4.21.0:
resolution: {integrity: sha512-vo+S/lfA2lMS7rZ2Qoubi6I5hwZwzXeUIctILZLbHI+laNtvhhOIon2S1JksA5UEDQ7l3vberd0fxK44lTYjbQ==}
engines: {node: '>=18.0.0', npm: '>=8.0.0'}
hasBin: true
rrweb-cssom@0.6.0: rrweb-cssom@0.6.0:
resolution: {integrity: sha512-APM0Gt1KoXBz0iIkkdB/kfvGOwC4UuJFeG/c+yV7wSc7q96cG/kJ0HiYCnzivD9SB53cLV1MlHFNfOuPaadYSw==} resolution: {integrity: sha512-APM0Gt1KoXBz0iIkkdB/kfvGOwC4UuJFeG/c+yV7wSc7q96cG/kJ0HiYCnzivD9SB53cLV1MlHFNfOuPaadYSw==}
@ -4903,7 +4988,7 @@ snapshots:
'@fastify/busboy@2.1.1': {} '@fastify/busboy@2.1.1': {}
'@flowr/eslint-config@3.12.0(@typescript-eslint/utils@8.1.0(eslint@9.9.0(jiti@1.21.6))(typescript@5.5.4))(@unocss/eslint-plugin@0.62.2(eslint@9.9.0(jiti@1.21.6))(typescript@5.5.4))(eslint-plugin-solid@0.14.2(eslint@9.9.0(jiti@1.21.6))(typescript@5.5.4))(eslint-plugin-vue@9.27.0(eslint@9.9.0(jiti@1.21.6)))(eslint-processor-vue-blocks@0.1.2(@vue/compiler-sfc@3.4.38)(eslint@9.9.0(jiti@1.21.6)))(eslint@9.9.0(jiti@1.21.6))(typescript@5.5.4)(vitest@2.0.5(@types/node@22.4.0)(@vitest/ui@2.0.5)(jsdom@24.1.1)(sass@1.77.8))(vue-eslint-parser@9.4.3(eslint@9.9.0(jiti@1.21.6)))': '@flowr/eslint-config@3.12.1(@typescript-eslint/utils@8.1.0(eslint@9.9.0(jiti@1.21.6))(typescript@5.5.4))(@unocss/eslint-plugin@0.62.2(eslint@9.9.0(jiti@1.21.6))(typescript@5.5.4))(eslint-plugin-solid@0.14.2(eslint@9.9.0(jiti@1.21.6))(typescript@5.5.4))(eslint-plugin-vue@9.27.0(eslint@9.9.0(jiti@1.21.6)))(eslint-processor-vue-blocks@0.1.2(@vue/compiler-sfc@3.4.38)(eslint@9.9.0(jiti@1.21.6)))(eslint@9.9.0(jiti@1.21.6))(typescript@5.5.4)(vitest@2.0.5(@types/node@22.4.0)(@vitest/ui@2.0.5)(jsdom@24.1.1)(sass@1.77.8))(vue-eslint-parser@9.4.3(eslint@9.9.0(jiti@1.21.6)))':
dependencies: dependencies:
'@antfu/install-pkg': 0.3.5 '@antfu/install-pkg': 0.3.5
'@clack/prompts': 0.7.0 '@clack/prompts': 0.7.0
@ -4922,7 +5007,7 @@ snapshots:
eslint-plugin-markdown: 5.1.0(eslint@9.9.0(jiti@1.21.6)) eslint-plugin-markdown: 5.1.0(eslint@9.9.0(jiti@1.21.6))
eslint-plugin-n: 17.10.2(eslint@9.9.0(jiti@1.21.6)) eslint-plugin-n: 17.10.2(eslint@9.9.0(jiti@1.21.6))
eslint-plugin-perfectionist: 3.2.0(eslint@9.9.0(jiti@1.21.6))(typescript@5.5.4)(vue-eslint-parser@9.4.3(eslint@9.9.0(jiti@1.21.6))) eslint-plugin-perfectionist: 3.2.0(eslint@9.9.0(jiti@1.21.6))(typescript@5.5.4)(vue-eslint-parser@9.4.3(eslint@9.9.0(jiti@1.21.6)))
eslint-plugin-petal: 3.12.0(eslint@9.9.0(jiti@1.21.6)) eslint-plugin-petal: 3.12.1(eslint@9.9.0(jiti@1.21.6))
eslint-plugin-regexp: 2.6.0(eslint@9.9.0(jiti@1.21.6)) eslint-plugin-regexp: 2.6.0(eslint@9.9.0(jiti@1.21.6))
eslint-plugin-toml: 0.11.1(eslint@9.9.0(jiti@1.21.6)) eslint-plugin-toml: 0.11.1(eslint@9.9.0(jiti@1.21.6))
eslint-plugin-unicorn: 55.0.0(eslint@9.9.0(jiti@1.21.6)) eslint-plugin-unicorn: 55.0.0(eslint@9.9.0(jiti@1.21.6))
@ -4948,7 +5033,7 @@ snapshots:
- typescript - typescript
- vitest - vitest
'@flowr/utils@3.12.0': {} '@flowr/utils@3.12.1': {}
'@fontsource/poppins@5.0.15': {} '@fontsource/poppins@5.0.15': {}
@ -5156,62 +5241,110 @@ snapshots:
'@protobuf-ts/runtime@2.9.4': {} '@protobuf-ts/runtime@2.9.4': {}
'@rollup/pluginutils@5.1.0(rollup@4.20.0)': '@rollup/pluginutils@5.1.0(rollup@4.21.0)':
dependencies: dependencies:
'@types/estree': 1.0.5 '@types/estree': 1.0.5
estree-walker: 2.0.2 estree-walker: 2.0.2
picomatch: 2.3.1 picomatch: 2.3.1
optionalDependencies: optionalDependencies:
rollup: 4.20.0 rollup: 4.21.0
'@rollup/rollup-android-arm-eabi@4.20.0': '@rollup/rollup-android-arm-eabi@4.20.0':
optional: true optional: true
'@rollup/rollup-android-arm-eabi@4.21.0':
optional: true
'@rollup/rollup-android-arm64@4.20.0': '@rollup/rollup-android-arm64@4.20.0':
optional: true optional: true
'@rollup/rollup-android-arm64@4.21.0':
optional: true
'@rollup/rollup-darwin-arm64@4.20.0': '@rollup/rollup-darwin-arm64@4.20.0':
optional: true optional: true
'@rollup/rollup-darwin-arm64@4.21.0':
optional: true
'@rollup/rollup-darwin-x64@4.20.0': '@rollup/rollup-darwin-x64@4.20.0':
optional: true optional: true
'@rollup/rollup-darwin-x64@4.21.0':
optional: true
'@rollup/rollup-linux-arm-gnueabihf@4.20.0': '@rollup/rollup-linux-arm-gnueabihf@4.20.0':
optional: true optional: true
'@rollup/rollup-linux-arm-gnueabihf@4.21.0':
optional: true
'@rollup/rollup-linux-arm-musleabihf@4.20.0': '@rollup/rollup-linux-arm-musleabihf@4.20.0':
optional: true optional: true
'@rollup/rollup-linux-arm-musleabihf@4.21.0':
optional: true
'@rollup/rollup-linux-arm64-gnu@4.20.0': '@rollup/rollup-linux-arm64-gnu@4.20.0':
optional: true optional: true
'@rollup/rollup-linux-arm64-gnu@4.21.0':
optional: true
'@rollup/rollup-linux-arm64-musl@4.20.0': '@rollup/rollup-linux-arm64-musl@4.20.0':
optional: true optional: true
'@rollup/rollup-linux-arm64-musl@4.21.0':
optional: true
'@rollup/rollup-linux-powerpc64le-gnu@4.20.0': '@rollup/rollup-linux-powerpc64le-gnu@4.20.0':
optional: true optional: true
'@rollup/rollup-linux-powerpc64le-gnu@4.21.0':
optional: true
'@rollup/rollup-linux-riscv64-gnu@4.20.0': '@rollup/rollup-linux-riscv64-gnu@4.20.0':
optional: true optional: true
'@rollup/rollup-linux-riscv64-gnu@4.21.0':
optional: true
'@rollup/rollup-linux-s390x-gnu@4.20.0': '@rollup/rollup-linux-s390x-gnu@4.20.0':
optional: true optional: true
'@rollup/rollup-linux-s390x-gnu@4.21.0':
optional: true
'@rollup/rollup-linux-x64-gnu@4.20.0': '@rollup/rollup-linux-x64-gnu@4.20.0':
optional: true optional: true
'@rollup/rollup-linux-x64-gnu@4.21.0':
optional: true
'@rollup/rollup-linux-x64-musl@4.20.0': '@rollup/rollup-linux-x64-musl@4.20.0':
optional: true optional: true
'@rollup/rollup-linux-x64-musl@4.21.0':
optional: true
'@rollup/rollup-win32-arm64-msvc@4.20.0': '@rollup/rollup-win32-arm64-msvc@4.20.0':
optional: true optional: true
'@rollup/rollup-win32-arm64-msvc@4.21.0':
optional: true
'@rollup/rollup-win32-ia32-msvc@4.20.0': '@rollup/rollup-win32-ia32-msvc@4.20.0':
optional: true optional: true
'@rollup/rollup-win32-ia32-msvc@4.21.0':
optional: true
'@rollup/rollup-win32-x64-msvc@4.20.0': '@rollup/rollup-win32-x64-msvc@4.20.0':
optional: true optional: true
'@rollup/rollup-win32-x64-msvc@4.21.0':
optional: true
'@sec-ant/readable-stream@0.4.1': {} '@sec-ant/readable-stream@0.4.1': {}
'@sentry/babel-plugin-component-annotate@2.22.2': {} '@sentry/babel-plugin-component-annotate@2.22.2': {}
@ -5667,21 +5800,21 @@ snapshots:
'@typescript-eslint/types': 8.1.0 '@typescript-eslint/types': 8.1.0
eslint-visitor-keys: 3.4.3 eslint-visitor-keys: 3.4.3
'@unocss/astro@0.62.2(rollup@4.20.0)(vite@5.4.1(@types/node@22.4.0)(sass@1.77.8))': '@unocss/astro@0.62.2(rollup@4.21.0)(vite@5.4.1(@types/node@22.4.0)(sass@1.77.8))':
dependencies: dependencies:
'@unocss/core': 0.62.2 '@unocss/core': 0.62.2
'@unocss/reset': 0.62.2 '@unocss/reset': 0.62.2
'@unocss/vite': 0.62.2(rollup@4.20.0)(vite@5.4.1(@types/node@22.4.0)(sass@1.77.8)) '@unocss/vite': 0.62.2(rollup@4.21.0)(vite@5.4.1(@types/node@22.4.0)(sass@1.77.8))
optionalDependencies: optionalDependencies:
vite: 5.4.1(@types/node@22.4.0)(sass@1.77.8) vite: 5.4.1(@types/node@22.4.0)(sass@1.77.8)
transitivePeerDependencies: transitivePeerDependencies:
- rollup - rollup
- supports-color - supports-color
'@unocss/cli@0.62.2(rollup@4.20.0)': '@unocss/cli@0.62.2(rollup@4.21.0)':
dependencies: dependencies:
'@ampproject/remapping': 2.3.0 '@ampproject/remapping': 2.3.0
'@rollup/pluginutils': 5.1.0(rollup@4.20.0) '@rollup/pluginutils': 5.1.0(rollup@4.21.0)
'@unocss/config': 0.62.2 '@unocss/config': 0.62.2
'@unocss/core': 0.62.2 '@unocss/core': 0.62.2
'@unocss/preset-uno': 0.62.2 '@unocss/preset-uno': 0.62.2
@ -5822,10 +5955,10 @@ snapshots:
dependencies: dependencies:
'@unocss/core': 0.62.2 '@unocss/core': 0.62.2
'@unocss/vite@0.62.2(rollup@4.20.0)(vite@5.4.1(@types/node@22.4.0)(sass@1.77.8))': '@unocss/vite@0.62.2(rollup@4.21.0)(vite@5.4.1(@types/node@22.4.0)(sass@1.77.8))':
dependencies: dependencies:
'@ampproject/remapping': 2.3.0 '@ampproject/remapping': 2.3.0
'@rollup/pluginutils': 5.1.0(rollup@4.20.0) '@rollup/pluginutils': 5.1.0(rollup@4.21.0)
'@unocss/config': 0.62.2 '@unocss/config': 0.62.2
'@unocss/core': 0.62.2 '@unocss/core': 0.62.2
'@unocss/inspector': 0.62.2 '@unocss/inspector': 0.62.2
@ -6578,9 +6711,9 @@ snapshots:
- supports-color - supports-color
- typescript - typescript
eslint-plugin-petal@3.12.0(eslint@9.9.0(jiti@1.21.6)): eslint-plugin-petal@3.12.1(eslint@9.9.0(jiti@1.21.6)):
dependencies: dependencies:
'@flowr/utils': 3.12.0 '@flowr/utils': 3.12.1
eslint: 9.9.0(jiti@1.21.6) eslint: 9.9.0(jiti@1.21.6)
eslint-plugin-regexp@2.6.0(eslint@9.9.0(jiti@1.21.6)): eslint-plugin-regexp@2.6.0(eslint@9.9.0(jiti@1.21.6)):
@ -7749,6 +7882,29 @@ snapshots:
'@rollup/rollup-win32-x64-msvc': 4.20.0 '@rollup/rollup-win32-x64-msvc': 4.20.0
fsevents: 2.3.3 fsevents: 2.3.3
rollup@4.21.0:
dependencies:
'@types/estree': 1.0.5
optionalDependencies:
'@rollup/rollup-android-arm-eabi': 4.21.0
'@rollup/rollup-android-arm64': 4.21.0
'@rollup/rollup-darwin-arm64': 4.21.0
'@rollup/rollup-darwin-x64': 4.21.0
'@rollup/rollup-linux-arm-gnueabihf': 4.21.0
'@rollup/rollup-linux-arm-musleabihf': 4.21.0
'@rollup/rollup-linux-arm64-gnu': 4.21.0
'@rollup/rollup-linux-arm64-musl': 4.21.0
'@rollup/rollup-linux-powerpc64le-gnu': 4.21.0
'@rollup/rollup-linux-riscv64-gnu': 4.21.0
'@rollup/rollup-linux-s390x-gnu': 4.21.0
'@rollup/rollup-linux-x64-gnu': 4.21.0
'@rollup/rollup-linux-x64-musl': 4.21.0
'@rollup/rollup-win32-arm64-msvc': 4.21.0
'@rollup/rollup-win32-ia32-msvc': 4.21.0
'@rollup/rollup-win32-x64-msvc': 4.21.0
fsevents: 2.3.3
optional: true
rrweb-cssom@0.6.0: {} rrweb-cssom@0.6.0: {}
rrweb-cssom@0.7.1: {} rrweb-cssom@0.7.1: {}
@ -8113,10 +8269,10 @@ snapshots:
universalify@0.2.0: {} universalify@0.2.0: {}
unocss@0.62.2(postcss@8.4.41)(rollup@4.20.0)(vite@5.4.1(@types/node@22.4.0)(sass@1.77.8)): unocss@0.62.2(postcss@8.4.41)(rollup@4.21.0)(vite@5.4.1(@types/node@22.4.0)(sass@1.77.8)):
dependencies: dependencies:
'@unocss/astro': 0.62.2(rollup@4.20.0)(vite@5.4.1(@types/node@22.4.0)(sass@1.77.8)) '@unocss/astro': 0.62.2(rollup@4.21.0)(vite@5.4.1(@types/node@22.4.0)(sass@1.77.8))
'@unocss/cli': 0.62.2(rollup@4.20.0) '@unocss/cli': 0.62.2(rollup@4.21.0)
'@unocss/core': 0.62.2 '@unocss/core': 0.62.2
'@unocss/extractor-arbitrary-variants': 0.62.2 '@unocss/extractor-arbitrary-variants': 0.62.2
'@unocss/postcss': 0.62.2(postcss@8.4.41) '@unocss/postcss': 0.62.2(postcss@8.4.41)
@ -8134,7 +8290,7 @@ snapshots:
'@unocss/transformer-compile-class': 0.62.2 '@unocss/transformer-compile-class': 0.62.2
'@unocss/transformer-directives': 0.62.2 '@unocss/transformer-directives': 0.62.2
'@unocss/transformer-variant-group': 0.62.2 '@unocss/transformer-variant-group': 0.62.2
'@unocss/vite': 0.62.2(rollup@4.20.0)(vite@5.4.1(@types/node@22.4.0)(sass@1.77.8)) '@unocss/vite': 0.62.2(rollup@4.21.0)(vite@5.4.1(@types/node@22.4.0)(sass@1.77.8))
optionalDependencies: optionalDependencies:
vite: 5.4.1(@types/node@22.4.0)(sass@1.77.8) vite: 5.4.1(@types/node@22.4.0)(sass@1.77.8)
transitivePeerDependencies: transitivePeerDependencies: