From 41d9c72277b5674c3c1dbddccc6c2eccc8abb47f Mon Sep 17 00:00:00 2001 From: Huakun Shen Date: Sat, 4 Jan 2025 22:31:20 -0500 Subject: [PATCH] [feat] key display (#40) * chore: add tauri-plugin-user-input submodule * feat: add key display extension There is delay, affecting key combination from being detected. I guess it's due to rdev grab, I have to remove grab and use listen directly. * chore: upgrade tauri-plugin-user-input submodule The user-input plugin improves mac's listen feature * chore: upgrade user-input submodule * fix: a platform-specific window command * ci: add libxdo-dev dep for ubuntu * chore: update tauri-plugin-user-input submodule to latest commit 5766c04 --- .github/workflows/ci.yml | 2 +- .github/workflows/desktop-publish.yml | 2 +- .gitmodules | 3 + Cargo.lock | 191 +++++++++- Cargo.toml | 1 + apps/desktop/package.json | 1 + apps/desktop/src-tauri/Cargo.toml | 1 + .../src-tauri/capabilities/default.json | 1 + apps/desktop/src-tauri/src/lib.rs | 1 + apps/desktop/src-tauri/src/setup/window.rs | 55 +-- apps/desktop/src/lib/cmds/builtin.ts | 25 ++ .../app/extension/key-displayer/+page.svelte | 143 ++++++++ packages/api/src/commands/index.ts | 1 + packages/api/src/commands/window.ts | 13 + packages/tauri-plugins/jarvis/Cargo.toml | 3 + packages/tauri-plugins/jarvis/build.rs | 4 + .../tauri-plugins/jarvis/permissions/all.toml | 2 + .../commands/set_transparent_titlebar.toml | 13 + .../permissions/autogenerated/reference.md | 26 ++ .../jarvis/permissions/schemas/schema.json | 10 + .../tauri-plugins/jarvis/src/commands/mod.rs | 1 + .../jarvis/src/commands/window.rs | 19 + packages/tauri-plugins/jarvis/src/lib.rs | 4 + .../tauri-plugins/jarvis/src/setup/mod.rs | 1 + .../tauri-plugins/jarvis/src/setup/window.rs | 53 +++ pnpm-lock.yaml | 341 ++++++++++++++++++ pnpm-workspace.yaml | 1 + vendors/tauri-plugin-user-input | 1 + 28 files changed, 856 insertions(+), 63 deletions(-) create mode 100644 apps/desktop/src/routes/app/extension/key-displayer/+page.svelte create mode 100644 packages/api/src/commands/window.ts create mode 100644 packages/tauri-plugins/jarvis/permissions/autogenerated/commands/set_transparent_titlebar.toml create mode 100644 packages/tauri-plugins/jarvis/src/commands/window.rs create mode 100644 packages/tauri-plugins/jarvis/src/setup/window.rs create mode 160000 vendors/tauri-plugin-user-input diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 44bddbc..07576a1 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -39,7 +39,7 @@ jobs: if: matrix.os == 'ubuntu-24.04' run: | sudo apt-get update - sudo apt-get install -y protobuf-compiler libwebkit2gtk-4.1-dev libappindicator3-dev librsvg2-dev patchelf + sudo apt-get install -y protobuf-compiler libwebkit2gtk-4.1-dev libappindicator3-dev librsvg2-dev patchelf libxdo-dev - name: Install protoc and openssl for windows if: matrix.os == 'windows-latest' run: | diff --git a/.github/workflows/desktop-publish.yml b/.github/workflows/desktop-publish.yml index 5a04155..ded9041 100644 --- a/.github/workflows/desktop-publish.yml +++ b/.github/workflows/desktop-publish.yml @@ -35,7 +35,7 @@ jobs: if: matrix.settings.platform == 'ubuntu-22.04' # This must match the platform value defined above. run: | sudo apt-get update - sudo apt-get install -y libwebkit2gtk-4.1-dev libappindicator3-dev librsvg2-dev patchelf + sudo apt-get install -y libwebkit2gtk-4.1-dev libappindicator3-dev librsvg2-dev patchelf libxdo-dev # You can remove the one that doesn't apply to your app to speed up the workflow a bit. - name: Install protobuf (Mac) if: matrix.settings.platform == 'macos-14' diff --git a/.gitmodules b/.gitmodules index 77d46dc..123aca7 100644 --- a/.gitmodules +++ b/.gitmodules @@ -7,6 +7,9 @@ [submodule "vendors/tauri-plugin-system-info"] path = vendors/tauri-plugin-system-info url = https://github.com/HuakunShen/tauri-plugin-system-info.git +[submodule "vendors/tauri-plugin-user-input"] + path = vendors/tauri-plugin-user-input + url = https://github.com/kunkunsh/tauri-plugin-user-input.git [submodule "vendors/tauri-plugin-keyring"] path = vendors/tauri-plugin-keyring url = https://github.com/HuakunShen/tauri-plugin-keyring.git diff --git a/Cargo.lock b/Cargo.lock index dde59a7..53de7ce 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1751,8 +1751,8 @@ dependencies = [ "rusqlite", "serde", "serde_json", - "strum", - "strum_macros", + "strum 0.26.3", + "strum_macros 0.26.4", "tempfile", ] @@ -2113,6 +2113,46 @@ version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a3d8a32ae18130a3c84dd492d4215c3d913c3b07c6b63c2eb3eb7ff1101ab7bf" +[[package]] +name = "enigo" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0cf6f550bbbdd5fe66f39d429cb2604bcdacbf00dca0f5bbe2e9306a0009b7c6" +dependencies = [ + "core-foundation 0.10.0", + "core-graphics 0.24.0", + "foreign-types-shared 0.3.1", + "libc", + "log", + "objc2", + "objc2-app-kit", + "objc2-foundation", + "serde", + "windows 0.58.0", + "xkbcommon", + "xkeysym", +] + +[[package]] +name = "enum-map" +version = "2.7.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6866f3bfdf8207509a033af1a75a7b08abda06bbaaeae6669323fd5a097df2e9" +dependencies = [ + "enum-map-derive", +] + +[[package]] +name = "enum-map-derive" +version = "0.17.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f282cfdfe92516eb26c2af8589c274c7c17681f5ecc03c18255fe741c6aa64eb" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.87", +] + [[package]] name = "enumflags2" version = "0.7.10" @@ -2144,6 +2184,16 @@ dependencies = [ "regex", ] +[[package]] +name = "epoll" +version = "4.3.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "74351c3392ea1ff6cd2628e0042d268ac2371cb613252ff383b6dfa50d22fa79" +dependencies = [ + "bitflags 2.6.0", + "libc", +] + [[package]] name = "equivalent" version = "1.0.1" @@ -3410,6 +3460,26 @@ dependencies = [ "configparser", ] +[[package]] +name = "inotify" +version = "0.10.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fdd168d97690d0b8c412d6b6c10360277f4d7ee495c5d0d5d5fe0854923255cc" +dependencies = [ + "bitflags 1.3.2", + "inotify-sys", + "libc", +] + +[[package]] +name = "inotify-sys" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e05c02b5e89bff3b946cedeca278abc628fe811e604f027c45a8aa3cf793d0eb" +dependencies = [ + "libc", +] + [[package]] name = "inout" version = "0.1.3" @@ -3741,6 +3811,7 @@ dependencies = [ "tauri-plugin-system-info", "tauri-plugin-updater", "tauri-plugin-upload", + "tauri-plugin-user-input", "tokio", "urlencoding", "uuid", @@ -4082,6 +4153,15 @@ version = "2.7.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "78ca9ab1a0babb1e7d5695e3530886289c18cf2f87ec19a575a0abdce112e3a3" +[[package]] +name = "memmap2" +version = "0.9.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fd3f7eed9d3848f8b98834af67102b720745c4ec028fcd0aa0239277e7de374f" +dependencies = [ + "libc", +] + [[package]] name = "memoffset" version = "0.6.5" @@ -4138,6 +4218,18 @@ dependencies = [ "simd-adler32", ] +[[package]] +name = "mio" +version = "0.8.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a4a650543ca06a924e8b371db273b2756685faae30f8487da1b56505a8f78b0c" +dependencies = [ + "libc", + "log", + "wasi 0.11.0+wasi-snapshot-preview1", + "windows-sys 0.48.0", +] + [[package]] name = "mio" version = "1.0.2" @@ -4910,7 +5002,7 @@ dependencies = [ "byteorder", "chrono", "thiserror 1.0.66", - "widestring", + "widestring 0.4.3", ] [[package]] @@ -5684,6 +5776,31 @@ dependencies = [ "crossbeam-utils", ] +[[package]] +name = "rdev" +version = "0.5.0-2" +source = "git+https://github.com/kunkunsh/rdev.git?rev=0663e6aa3b50fb4daee938fcb02d1a24d89aae22#0663e6aa3b50fb4daee938fcb02d1a24d89aae22" +dependencies = [ + "cocoa 0.24.1", + "core-foundation 0.9.4", + "core-foundation-sys", + "core-graphics 0.22.3", + "dispatch", + "enum-map", + "epoll", + "inotify", + "lazy_static", + "libc", + "log", + "mio 0.8.11", + "serde", + "strum 0.24.1", + "strum_macros 0.24.3", + "widestring 1.1.0", + "winapi", + "x11", +] + [[package]] name = "read-progress-stream" version = "1.0.0" @@ -6367,9 +6484,9 @@ dependencies = [ [[package]] name = "serde_json" -version = "1.0.132" +version = "1.0.134" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d726bfaff4b320266d395898905d0eba0345aae23b54aee3a737e260fd46db03" +checksum = "d00f4175c42ee48b15416f6193a959ba3a0d67fc699a0db9ad12df9f83991c7d" dependencies = [ "itoa 1.0.11", "memchr", @@ -6791,12 +6908,31 @@ version = "0.11.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7da8b5736845d9f2fcb837ea5d9e2628564b3b043a70948a3f0b778838c5fb4f" +[[package]] +name = "strum" +version = "0.24.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "063e6045c0e62079840579a7e47a355ae92f60eb74daaf156fb1e84ba164e63f" + [[package]] name = "strum" version = "0.26.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8fec0f0aef304996cf250b31b5a10dee7980c85da9d759361292b8bca5a18f06" +[[package]] +name = "strum_macros" +version = "0.24.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1e385be0d24f186b4ce2f9982191e7101bb737312ad61c1f2f984f34bcf85d59" +dependencies = [ + "heck 0.4.1", + "proc-macro2", + "quote", + "rustversion", + "syn 1.0.109", +] + [[package]] name = "strum_macros" version = "0.26.4" @@ -7322,6 +7458,7 @@ dependencies = [ "axum-server", "base64 0.22.1", "chrono", + "cocoa 0.24.1", "crypto", "db", "flate2", @@ -7333,6 +7470,7 @@ dependencies = [ "mdns-sd", "mime_guess", "obfstr", + "objc", "openssl", "plist", "prost", @@ -7342,8 +7480,8 @@ dependencies = [ "rustls 0.23.16", "serde", "serde_json", - "strum", - "strum_macros", + "strum 0.26.3", + "strum_macros 0.26.4", "sysinfo 0.32.0", "tar", "tauri", @@ -7622,6 +7760,20 @@ dependencies = [ "tokio-util", ] +[[package]] +name = "tauri-plugin-user-input" +version = "0.1.0" +dependencies = [ + "enigo", + "lazy_static", + "rdev", + "serde", + "serde_json", + "tauri", + "tauri-plugin", + "thiserror 2.0.3", +] + [[package]] name = "tauri-runtime" version = "2.2.0" @@ -7872,7 +8024,7 @@ dependencies = [ "backtrace", "bytes", "libc", - "mio", + "mio 1.0.2", "pin-project-lite", "signal-hook-registry", "socket2", @@ -8778,6 +8930,12 @@ version = "0.4.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c168940144dd21fd8046987c16a46a33d5fc84eec29ef9dcddc2ac9e31526b7c" +[[package]] +name = "widestring" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7219d36b6eac893fa81e84ebe06485e7dcbb616177469b142df14f1f4deb1311" + [[package]] name = "winapi" version = "0.3.9" @@ -9416,6 +9574,23 @@ dependencies = [ "windows-sys 0.59.0", ] +[[package]] +name = "xkbcommon" +version = "0.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8d66ca9352cbd4eecbbc40871d8a11b4ac8107cfc528a6e14d7c19c69d0e1ac9" +dependencies = [ + "libc", + "memmap2", + "xkeysym", +] + +[[package]] +name = "xkeysym" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b9cc00251562a284751c9973bace760d86c0276c471b4be569fe6b068ee97a56" + [[package]] name = "zbus" version = "4.0.1" diff --git a/Cargo.toml b/Cargo.toml index d56e701..c73a54c 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -30,6 +30,7 @@ applications = { path = "./vendors/applications-rs" } grpc = { path = "./packages/grpc" } tauri-plugin-jarvis = { path = "./packages/tauri-plugins/jarvis" } tauri-plugin-system-info = { path = "./vendors/tauri-plugin-system-info" } +tauri-plugin-user-input = { path = "./vendors/tauri-plugin-user-input" } db = { path = "./packages/db" } axum = { version = "0.6.20" } axum-extra = { version = "0.8.0" } diff --git a/apps/desktop/package.json b/apps/desktop/package.json index b318311..0242718 100644 --- a/apps/desktop/package.json +++ b/apps/desktop/package.json @@ -22,6 +22,7 @@ "@std/semver": "npm:@jsr/std__semver@^1.0.3", "@tanstack/table-core": "^8.20.5", "@tauri-apps/api": "^2.1.1", + "tauri-plugin-user-input-api": "workspace:*", "@tauri-apps/plugin-shell": "^2.2.0", "@tauri-apps/plugin-stronghold": "^2.2.0", "dompurify": "^3.2.3", diff --git a/apps/desktop/src-tauri/Cargo.toml b/apps/desktop/src-tauri/Cargo.toml index ff1dfac..a982bd6 100644 --- a/apps/desktop/src-tauri/Cargo.toml +++ b/apps/desktop/src-tauri/Cargo.toml @@ -46,6 +46,7 @@ tauri-plugin-jarvis = { workspace = true } tauri-plugin-keyring = { workspace = true } tauri-plugin-network = { workspace = true } tauri-plugin-system-info = { workspace = true } +tauri-plugin-user-input = { workspace = true } tauri-plugin-clipboard = { workspace = true } tauri-plugin-store = "2.2.0" tauri-plugin-deep-link = "2.2.0" diff --git a/apps/desktop/src-tauri/capabilities/default.json b/apps/desktop/src-tauri/capabilities/default.json index a01015f..ddcfd4b 100644 --- a/apps/desktop/src-tauri/capabilities/default.json +++ b/apps/desktop/src-tauri/capabilities/default.json @@ -146,6 +146,7 @@ "upload:default", "process:default", "system-info:allow-all", + "user-input:default", "shell:default", "keyring:default", "stronghold:default", diff --git a/apps/desktop/src-tauri/src/lib.rs b/apps/desktop/src-tauri/src/lib.rs index bb1a857..dac4f7b 100644 --- a/apps/desktop/src-tauri/src/lib.rs +++ b/apps/desktop/src-tauri/src/lib.rs @@ -91,6 +91,7 @@ pub fn run() { .build(), ) .plugin(tauri_plugin_cli::init()) + .plugin(tauri_plugin_user_input::init()) .plugin(tauri_plugin_deep_link::init()) .plugin(tauri_plugin_shell::init()) .plugin(tauri_plugin_os::init()) diff --git a/apps/desktop/src-tauri/src/setup/window.rs b/apps/desktop/src-tauri/src/setup/window.rs index 5ab5165..b3187cc 100644 --- a/apps/desktop/src-tauri/src/setup/window.rs +++ b/apps/desktop/src-tauri/src/setup/window.rs @@ -1,56 +1,5 @@ -use tauri::{is_dev, App, AppHandle, LogicalSize, Manager, Runtime, Size, WebviewWindow, Window}; - -#[cfg(target_os = "macos")] -use cocoa::appkit::{NSWindow, NSWindowButton, NSWindowStyleMask, NSWindowTitleVisibility}; - -#[cfg(target_os = "macos")] -use objc::runtime::YES; - -pub trait WindowExt { - #[cfg(target_os = "macos")] - fn set_transparent_titlebar(&self, title_transparent: bool, remove_toolbar: bool); -} - -impl WindowExt for WebviewWindow { - #[cfg(target_os = "macos")] - fn set_transparent_titlebar(&self, title_transparent: bool, remove_tool_bar: bool) { - use objc::{msg_send, sel, sel_impl}; - - unsafe { - let id = self.ns_window().unwrap() as cocoa::base::id; - NSWindow::setTitlebarAppearsTransparent_(id, cocoa::base::YES); - let mut style_mask = id.styleMask(); - style_mask.set( - NSWindowStyleMask::NSFullSizeContentViewWindowMask, - title_transparent, - ); - - id.setStyleMask_(style_mask); - - if remove_tool_bar { - let close_button = id.standardWindowButton_(NSWindowButton::NSWindowCloseButton); - let _: () = msg_send![close_button, setHidden: YES]; - let min_button = - id.standardWindowButton_(NSWindowButton::NSWindowMiniaturizeButton); - let _: () = msg_send![min_button, setHidden: YES]; - let zoom_button = id.standardWindowButton_(NSWindowButton::NSWindowZoomButton); - let _: () = msg_send![zoom_button, setHidden: YES]; - } - - id.setTitleVisibility_(if title_transparent { - NSWindowTitleVisibility::NSWindowTitleHidden - } else { - NSWindowTitleVisibility::NSWindowTitleVisible - }); - - id.setTitlebarAppearsTransparent_(if title_transparent { - cocoa::base::YES - } else { - cocoa::base::NO - }); - } - } -} +use tauri::{AppHandle, Manager, Runtime}; +use tauri_plugin_jarvis::setup::window::WindowExt; pub fn setup_window(app: &AppHandle) { #[cfg(target_os = "macos")] diff --git a/apps/desktop/src/lib/cmds/builtin.ts b/apps/desktop/src/lib/cmds/builtin.ts index 6f383f7..c976321 100644 --- a/apps/desktop/src/lib/cmds/builtin.ts +++ b/apps/desktop/src/lib/cmds/builtin.ts @@ -1,5 +1,6 @@ import { appConfig, appState, auth, extensions } from "@/stores" import { checkUpdateAndInstall } from "@/utils/updater" +import { setTransparentTitlebar } from "@kksh/api/commands" import { IconEnum } from "@kksh/api/models" import type { BuiltinCmd } from "@kksh/ui/types" import { getVersion } from "@tauri-apps/api/app" @@ -196,6 +197,30 @@ export const rawBuiltinCmds: BuiltinCmd[] = [ goto("/app/extension/create-quick-link") } }, + { + name: "Key Displayer", + icon: { + type: IconEnum.Iconify, + value: "material-symbols:keyboard" + }, + description: "Display the current key", + function: async () => { + appState.clearSearchTerm() + // goto("/app/extension/key-displayer") + const label = `main:extension:key-displayer-${uuidv4()}` + new WebviewWindow(label, { + url: "/app/extension/key-displayer", + title: "Key Displayer", + decorations: false, + hiddenTitle: true, + visible: false, + alwaysOnTop: true, + width: 200, + height: 140 + }) + // setTransparentTitlebar(label) + } + }, { name: "Settings", icon: { diff --git a/apps/desktop/src/routes/app/extension/key-displayer/+page.svelte b/apps/desktop/src/routes/app/extension/key-displayer/+page.svelte new file mode 100644 index 0000000..b7a90e9 --- /dev/null +++ b/apps/desktop/src/routes/app/extension/key-displayer/+page.svelte @@ -0,0 +1,143 @@ + + + +
+
+
+
+ {#each keys as key, idx} + {key} + {/each} +
+
+ +
+ + + + +
+
diff --git a/packages/api/src/commands/index.ts b/packages/api/src/commands/index.ts index 1fc2f65..be6154c 100644 --- a/packages/api/src/commands/index.ts +++ b/packages/api/src/commands/index.ts @@ -12,6 +12,7 @@ export * from "./fileSearch" export * from "./utils" export * as macSecurity from "./mac-security" export * from "./mdns" +export * from "./window" export * from "./common" export * from "./file-transfer" export * as fileTransfer from "./file-transfer" diff --git a/packages/api/src/commands/window.ts b/packages/api/src/commands/window.ts new file mode 100644 index 0000000..88bc33a --- /dev/null +++ b/packages/api/src/commands/window.ts @@ -0,0 +1,13 @@ +import { invoke } from "@tauri-apps/api/core" +import { generateJarvisPluginCommand } from "./common" + +/** + * Given a window label, set the titlebar to transparent for macos. + * If no window label is provided, the current window will be used. + * @param windowLabel + */ +export async function setTransparentTitlebar(windowLabel?: string): Promise { + await invoke(generateJarvisPluginCommand("set_transparent_titlebar"), { + windowLabel + }) +} diff --git a/packages/tauri-plugins/jarvis/Cargo.toml b/packages/tauri-plugins/jarvis/Cargo.toml index 3e49a99..cbb2ae7 100644 --- a/packages/tauri-plugins/jarvis/Cargo.toml +++ b/packages/tauri-plugins/jarvis/Cargo.toml @@ -56,8 +56,11 @@ grpc = { workspace = true } futures-util = "0.3.31" rayon = { workspace = true } + [target.'cfg(target_os = "macos")'.dependencies] tauri-icns = "0.1.0" +cocoa = "0.24.1" +objc = "0.2.7" [target.'cfg(target_os = "windows")'.dependencies] tauri-winres = "0.1.1" diff --git a/packages/tauri-plugins/jarvis/build.rs b/packages/tauri-plugins/jarvis/build.rs index 0e3db86..37568a7 100644 --- a/packages/tauri-plugins/jarvis/build.rs +++ b/packages/tauri-plugins/jarvis/build.rs @@ -122,6 +122,10 @@ const COMMANDS: &[&str] = &[ "local_net_send_file", "download_files", "file_transfer_preview_bucket", + /* -------------------------------------------------------------------------- */ + /* Window */ + /* -------------------------------------------------------------------------- */ + "set_transparent_titlebar" ]; fn main() { diff --git a/packages/tauri-plugins/jarvis/permissions/all.toml b/packages/tauri-plugins/jarvis/permissions/all.toml index 49cfab2..011b085 100644 --- a/packages/tauri-plugins/jarvis/permissions/all.toml +++ b/packages/tauri-plugins/jarvis/permissions/all.toml @@ -96,4 +96,6 @@ commands.allow = [ "local_net_send_file", "download_files", "file_transfer_preview_bucket", + # Windows + "set_transparent_titlebar", ] diff --git a/packages/tauri-plugins/jarvis/permissions/autogenerated/commands/set_transparent_titlebar.toml b/packages/tauri-plugins/jarvis/permissions/autogenerated/commands/set_transparent_titlebar.toml new file mode 100644 index 0000000..8d9ec6d --- /dev/null +++ b/packages/tauri-plugins/jarvis/permissions/autogenerated/commands/set_transparent_titlebar.toml @@ -0,0 +1,13 @@ +# Automatically generated - DO NOT EDIT! + +"$schema" = "../../schemas/schema.json" + +[[permission]] +identifier = "allow-set-transparent-titlebar" +description = "Enables the set_transparent_titlebar command without any pre-configured scope." +commands.allow = ["set_transparent_titlebar"] + +[[permission]] +identifier = "deny-set-transparent-titlebar" +description = "Denies the set_transparent_titlebar command without any pre-configured scope." +commands.deny = ["set_transparent_titlebar"] diff --git a/packages/tauri-plugins/jarvis/permissions/autogenerated/reference.md b/packages/tauri-plugins/jarvis/permissions/autogenerated/reference.md index d74cee2..19f9805 100644 --- a/packages/tauri-plugins/jarvis/permissions/autogenerated/reference.md +++ b/packages/tauri-plugins/jarvis/permissions/autogenerated/reference.md @@ -1662,6 +1662,32 @@ Denies the set_extension_folder command without any pre-configured scope. +`jarvis:allow-set-transparent-titlebar` + + + + +Enables the set_transparent_titlebar command without any pre-configured scope. + + + + + + + +`jarvis:deny-set-transparent-titlebar` + + + + +Denies the set_transparent_titlebar command without any pre-configured scope. + + + + + + + `jarvis:allow-set-volume` diff --git a/packages/tauri-plugins/jarvis/permissions/schemas/schema.json b/packages/tauri-plugins/jarvis/permissions/schemas/schema.json index c275286..49bd95c 100644 --- a/packages/tauri-plugins/jarvis/permissions/schemas/schema.json +++ b/packages/tauri-plugins/jarvis/permissions/schemas/schema.json @@ -929,6 +929,16 @@ "type": "string", "const": "deny-set-extension-folder" }, + { + "description": "Enables the set_transparent_titlebar command without any pre-configured scope.", + "type": "string", + "const": "allow-set-transparent-titlebar" + }, + { + "description": "Denies the set_transparent_titlebar command without any pre-configured scope.", + "type": "string", + "const": "deny-set-transparent-titlebar" + }, { "description": "Enables the set_volume command without any pre-configured scope.", "type": "string", diff --git a/packages/tauri-plugins/jarvis/src/commands/mod.rs b/packages/tauri-plugins/jarvis/src/commands/mod.rs index 7c7db0a..ccc3c27 100644 --- a/packages/tauri-plugins/jarvis/src/commands/mod.rs +++ b/packages/tauri-plugins/jarvis/src/commands/mod.rs @@ -13,3 +13,4 @@ pub mod file_transfer; pub mod security; pub mod system; pub mod utils; +pub mod window; diff --git a/packages/tauri-plugins/jarvis/src/commands/window.rs b/packages/tauri-plugins/jarvis/src/commands/window.rs new file mode 100644 index 0000000..880bfad --- /dev/null +++ b/packages/tauri-plugins/jarvis/src/commands/window.rs @@ -0,0 +1,19 @@ +use crate::setup::window::WindowExt; +use tauri::{Manager, Runtime}; + +#[tauri::command] +pub async fn set_transparent_titlebar( + app: tauri::AppHandle, + window: tauri::Window, + window_label: Option, +) -> Result<(), String> { + #[cfg(target_os = "macos")] + { + let win_label = window_label.unwrap_or(window.label().to_string()); + match app.get_webview_window(win_label.as_str()) { + Some(webview_win) => webview_win.set_transparent_titlebar(true, true), + None => return Err("Window not found".to_string()), + } + } + Ok(()) +} diff --git a/packages/tauri-plugins/jarvis/src/lib.rs b/packages/tauri-plugins/jarvis/src/lib.rs index c869b26..16aabde 100644 --- a/packages/tauri-plugins/jarvis/src/lib.rs +++ b/packages/tauri-plugins/jarvis/src/lib.rs @@ -176,6 +176,10 @@ pub fn init() -> TauriPlugin { commands::file_transfer::local_net_send_file, commands::file_transfer::download_files, commands::file_transfer::file_transfer_preview_bucket, + /* -------------------------------------------------------------------------- */ + /* Window */ + /* -------------------------------------------------------------------------- */ + commands::window::set_transparent_titlebar, ]) .setup(move |app, api| { utils::setup::setup_app_path(app); diff --git a/packages/tauri-plugins/jarvis/src/setup/mod.rs b/packages/tauri-plugins/jarvis/src/setup/mod.rs index 78dda75..5f6e023 100644 --- a/packages/tauri-plugins/jarvis/src/setup/mod.rs +++ b/packages/tauri-plugins/jarvis/src/setup/mod.rs @@ -1,3 +1,4 @@ pub mod db; pub mod peer_discovery; pub mod server; +pub mod window; diff --git a/packages/tauri-plugins/jarvis/src/setup/window.rs b/packages/tauri-plugins/jarvis/src/setup/window.rs new file mode 100644 index 0000000..3e50efb --- /dev/null +++ b/packages/tauri-plugins/jarvis/src/setup/window.rs @@ -0,0 +1,53 @@ +use tauri::{is_dev, App, AppHandle, LogicalSize, Manager, Runtime, Size, WebviewWindow, Window}; + +#[cfg(target_os = "macos")] +use cocoa::appkit::{NSWindow, NSWindowButton, NSWindowStyleMask, NSWindowTitleVisibility}; + +#[cfg(target_os = "macos")] +use objc::runtime::YES; + +pub trait WindowExt { + #[cfg(target_os = "macos")] + fn set_transparent_titlebar(&self, title_transparent: bool, remove_toolbar: bool); +} + +impl WindowExt for WebviewWindow { + #[cfg(target_os = "macos")] + fn set_transparent_titlebar(&self, title_transparent: bool, remove_tool_bar: bool) { + use objc::{msg_send, sel, sel_impl}; + + unsafe { + let id = self.ns_window().unwrap() as cocoa::base::id; + NSWindow::setTitlebarAppearsTransparent_(id, cocoa::base::YES); + let mut style_mask = id.styleMask(); + style_mask.set( + NSWindowStyleMask::NSFullSizeContentViewWindowMask, + title_transparent, + ); + + id.setStyleMask_(style_mask); + + if remove_tool_bar { + let close_button = id.standardWindowButton_(NSWindowButton::NSWindowCloseButton); + let _: () = msg_send![close_button, setHidden: YES]; + let min_button = + id.standardWindowButton_(NSWindowButton::NSWindowMiniaturizeButton); + let _: () = msg_send![min_button, setHidden: YES]; + let zoom_button = id.standardWindowButton_(NSWindowButton::NSWindowZoomButton); + let _: () = msg_send![zoom_button, setHidden: YES]; + } + + id.setTitleVisibility_(if title_transparent { + NSWindowTitleVisibility::NSWindowTitleHidden + } else { + NSWindowTitleVisibility::NSWindowTitleVisible + }); + + id.setTitlebarAppearsTransparent_(if title_transparent { + cocoa::base::YES + } else { + cocoa::base::NO + }); + } + } +} diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 0357697..9d51619 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -263,6 +263,9 @@ importers: tauri-plugin-clipboard-api: specifier: ^2.1.11 version: 2.1.11(typescript@5.6.3) + tauri-plugin-user-input-api: + specifier: workspace:* + version: link:../../vendors/tauri-plugin-user-input uuid: specifier: ^11.0.3 version: 11.0.3 @@ -1238,6 +1241,31 @@ importers: specifier: ^5.7.2 version: 5.7.2 + vendors/tauri-plugin-user-input: + dependencies: + '@tauri-apps/api': + specifier: '>=2.0.0-beta.6' + version: 2.1.1 + request-promise: + specifier: ^4.2.6 + version: 4.2.6(request@2.88.2) + devDependencies: + '@rollup/plugin-typescript': + specifier: ^11.1.6 + version: 11.1.6(rollup@4.28.1)(tslib@2.8.1)(typescript@5.6.3) + rollup: + specifier: ^4.9.6 + version: 4.28.1 + tslib: + specifier: ^2.6.2 + version: 2.8.1 + typescript: + specifier: ^5.3.3 + version: 5.6.3 + valibot: + specifier: 1.0.0-beta.9 + version: 1.0.0-beta.9(typescript@5.6.3) + packages: '@alloc/quick-lru@5.2.0': @@ -5005,6 +5033,13 @@ packages: resolution: {integrity: sha512-bMxMKAjg13EBSVscxTaYA4mRc5t1UAXa2kXiGTNfZ079HIWXEkKmkgFrh/nJqamaLSrXO5H4WFFkPEaLJWbs3A==} engines: {node: '>= 0.4'} + asn1@0.2.6: + resolution: {integrity: sha512-ix/FxPn0MDjeyJ7i/yoHGFt/EX6LyNbxSEhPPXODPL+KB0VPk86UYfL0lMdy+KCnv+fmvIzySwaK5COwqVbWTQ==} + + assert-plus@1.0.0: + resolution: {integrity: sha512-NfJ4UzBCcQGLDlQq7nHxH+tv3kyZ0hHQqF5BO6J7tNJeP5do1llPr8dZ8zHonfhAu0PHAdMkSo+8o0wxg9lZWw==} + engines: {node: '>=0.8'} + assertion-error@2.0.1: resolution: {integrity: sha512-Izi8RQcffqCeNVgFigKli1ssklIbpHnCYc6AknXGYoB6grJqyeby7jv12JUQgmTAnIDnbck1uxksT4dzN3PWBA==} engines: {node: '>=12'} @@ -5033,6 +5068,9 @@ packages: async@3.2.6: resolution: {integrity: sha512-htCUDlxyyCLMgaM3xXg0C0LW2xqfuQ6p05pCEIsXuyQ+a1koYKTuBMzRNwmybfLgvJDMd0r1LTn4+E0Ti6C2AA==} + asynckit@0.4.0: + resolution: {integrity: sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==} + at-least-node@1.0.0: resolution: {integrity: sha512-+q/t7Ekv1EDY2l6Gda6LLiX14rU9TV20Wa3ofeQmwPFZbOMo9DXrLbOjFaaclkXKWidIaopwAObQDqwWtGUjqg==} engines: {node: '>= 4.0.0'} @@ -5048,6 +5086,12 @@ packages: resolution: {integrity: sha512-wvUjBtSGN7+7SjNpq/9M2Tg350UZD3q62IFZLbRAR1bSMlCo1ZaeW+BJ+D090e4hIIZLBcTDWe4Mh4jvUDajzQ==} engines: {node: '>= 0.4'} + aws-sign2@0.7.0: + resolution: {integrity: sha512-08kcGqnYf/YmjoRhfxyu+CLxBjUtHLXLXX/vUfx9l2LYzG3c1m61nrpyFUZI6zeS+Li/wWMMidD9KgrqtGq3mA==} + + aws4@1.13.2: + resolution: {integrity: sha512-lHe62zvbTB5eEABUVi/AwVh0ZKY9rMMDhmm+eeyuuUQbQ3+J+fONVQOZyj+DdrvD4BY33uYniyRJ4UJIaSKAfw==} + axe-core@4.10.2: resolution: {integrity: sha512-RE3mdQ7P3FRSe7eqCWoeQ/Z9QXrtniSjp1wUjt5nRC3WIpz5rSCve6o3fsZ2aCpJtrZjSZgjwXAoTO5k4tEI0w==} engines: {node: '>=4'} @@ -5072,6 +5116,9 @@ packages: base64-js@1.5.1: resolution: {integrity: sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==} + bcrypt-pbkdf@1.0.2: + resolution: {integrity: sha512-qeFIXtP4MSoi6NLqO12WfqARWWuCKi2Rn/9hJLEmtB5yTNr9DqFWkJRCf2qShWzPeAMRnOgCrq0sg/KLv5ES9w==} + better-path-resolve@1.0.0: resolution: {integrity: sha512-pbnl5XzGBdrFU/wT4jqmJVPn2B6UHPBOhzMQkY/SPUPB6QtUXtmBHBIwCbXJol93mOpGMnQyP/+BB19q04xj7g==} engines: {node: '>=4'} @@ -5110,6 +5157,9 @@ packages: bl@4.1.0: resolution: {integrity: sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==} + bluebird@3.7.2: + resolution: {integrity: sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg==} + boolbase@1.0.0: resolution: {integrity: sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==} @@ -5197,6 +5247,9 @@ packages: resolution: {integrity: sha512-zlOQ80VrQ2Ue+ymH5OuM/DlDq64mEm+B9UTdHULv5osUMD6HalNTblf2b1u/m6QecjsnOkBpqVZ+XPwIVsy7Ng==} engines: {node: '>=12.13'} + caseless@0.12.0: + resolution: {integrity: sha512-4tYFyifaFfGacoiObjJegolkwSU4xQNGbVgUiNYVUxbQ2x2lUsFvY4hVgVzGiIe6WLOPqycWXA40l+PWsxthUw==} + ccount@2.0.1: resolution: {integrity: sha512-eyrF0jiFpY+3drT6383f1qhkbGsLSifNAjA61IUjZjmLCWjItY6LB9ft9YhoDgwfmclB2zhu51Lc7+95b8NRAg==} @@ -5339,6 +5392,10 @@ packages: colorette@1.4.0: resolution: {integrity: sha512-Y2oEozpomLn7Q3HFP7dpww7AtMJplbM9lGZP6RDfHqmbeRjiwRg4n6VM6j4KLmRke85uWEI7JqF17f3pqdRA0g==} + combined-stream@1.0.8: + resolution: {integrity: sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==} + engines: {node: '>= 0.8'} + comma-separated-tokens@2.0.3: resolution: {integrity: sha512-Fu4hJdvzeylCfQPp9SGWidpzrMs7tTrlu6Vb8XGaRGck8QSNZJJp538Wrb60Lax4fPwR64ViY468OIUTbRlGZg==} @@ -5424,6 +5481,9 @@ packages: resolution: {integrity: sha512-yCEafptTtb4bk7GLEQoM8KVJpxAfdBJYaXyzQEgQQQgYrZiDp8SJmGKlYza6CYjEDNstAdNdKA3UuoULlEbS6w==} engines: {node: '>=12.13'} + core-util-is@1.0.2: + resolution: {integrity: sha512-3lqz5YjWTYnW6dlDa5TLaTCcShfar1e40rmcJVwCBJC6mWlFuj0eCHIElmG1g5kyuJ/GD+8Wn4FFCcz4gJPfaQ==} + core-util-is@1.0.3: resolution: {integrity: sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==} @@ -5674,6 +5734,10 @@ packages: damerau-levenshtein@1.0.8: resolution: {integrity: sha512-sdQSFB7+llfUcQHUQO3+B8ERRj0Oa4w9POWMI/puGtuf7gFywGmkaLCElnudfTiKZV+NvHqL0ifzdrI8Ro7ESA==} + dashdash@1.14.1: + resolution: {integrity: sha512-jRFi8UDGo6j+odZiEpjazZaWqEal3w/basFjQHQEwVtZJGDpxbH1MeYluwCS8Xq5wmLJooDlMgvVarmWfGM44g==} + engines: {node: '>=0.10'} + data-uri-to-buffer@4.0.1: resolution: {integrity: sha512-0R9ikRb668HB7QDxT1vkpuUBtqc53YyAwMwGeUFKRojY/NWKvdZ+9UYtRfGmhqNbRkTSVpMbmyhXipFFv2cb/A==} engines: {node: '>= 12'} @@ -5816,6 +5880,10 @@ packages: delaunator@5.0.1: resolution: {integrity: sha512-8nvh+XBe96aCESrGOqMp/84b13H9cdKbG5P2ejQCh4d4sK9RL4371qou9drQjMhvnPmhWl5hnmqbEE0fXr9Xnw==} + delayed-stream@1.0.0: + resolution: {integrity: sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==} + engines: {node: '>=0.4.0'} + delegates@1.0.0: resolution: {integrity: sha512-bd2L678uiWATM6m5Z1VzNCErI3jiGzt6HGY8OVICs40JQq/HALfbyNJmp0UDakEY4pMMaN0Ly5om/B1VI/+xfQ==} @@ -5977,6 +6045,9 @@ packages: eastasianwidth@0.2.0: resolution: {integrity: sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==} + ecc-jsbn@0.1.2: + resolution: {integrity: sha512-eh9O+hwRHNbG4BLTjEl3nw044CkGm5X6LoaCf7LPp7UU8Qrt47JYNi6nPX8xjW97TKGKm1ouctg0QSpZe9qrnw==} + ee-first@1.1.1: resolution: {integrity: sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==} @@ -6343,6 +6414,9 @@ packages: resolution: {integrity: sha512-bFi65yM+xZgk+u/KRIpekdSYkTB5W1pEf0Lt8Q8Msh7b+eQ7LXVtIB1Bkm4fvclDEL1b2CZkMhv2mOeF8tMdkA==} engines: {node: '>=12.0.0'} + extend@3.0.2: + resolution: {integrity: sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==} + extendable-error@0.1.7: resolution: {integrity: sha512-UOiS2in6/Q0FK0R0q6UY9vYpQ21mr/Qn1KOnte7vsACuNJf514WvCCUHSRCPcgjPT2bAhNIJdlE6bVap1GKmeg==} @@ -6353,6 +6427,10 @@ packages: externality@1.0.2: resolution: {integrity: sha512-LyExtJWKxtgVzmgtEHyQtLFpw1KFhQphF9nTG8TpAIVkiI/xQ3FJh75tRFLYl4hkn7BNIIdLJInuDAavX35pMw==} + extsprintf@1.3.0: + resolution: {integrity: sha512-11Ndz7Nv+mvAC1j0ktTa7fAb0vLyGGX+rMHNBYQviQDGU0Hw7lhctJANqbPhu9nV9/izT/IntTgZ7Im/9LJs9g==} + engines: {'0': node >=0.6.0} + fast-check@3.23.0: resolution: {integrity: sha512-TmpgSeJ2jUV+FNWnSy9iIE9bOV9nCNQ4it+K9BpCNT9JsQOfZYznWGSbMw+Wa4uusEss0IcL/trFVoRxS6IuAA==} engines: {node: '>=8.0.0'} @@ -6455,6 +6533,13 @@ packages: resolution: {integrity: sha512-Ld2g8rrAyMYFXBhEqMz8ZAHBi4J4uS1i/CxGMDnjyFWddMXLVcDp051DZfu+t7+ab7Wv6SMqpWmyFIj5UbfFvg==} engines: {node: '>=14'} + forever-agent@0.6.1: + resolution: {integrity: sha512-j0KLYPhm6zeac4lz3oJ3o65qvgQCcPubiyotZrXqEaG4hNagNYO8qdlUrX5vwqv9ohqeT/Z3j6+yW067yWWdUw==} + + form-data@2.3.3: + resolution: {integrity: sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ==} + engines: {node: '>= 0.12'} + formdata-polyfill@4.0.10: resolution: {integrity: sha512-buewHzMvYL29jdeQTVILecSaZKnt/RJWjoZCF5OW60Z67/GmSLBkOFM7qh1PI3zFNtJbaZL5eQu1vLfazOwj4g==} engines: {node: '>=12.20.0'} @@ -6575,6 +6660,9 @@ packages: get-tsconfig@4.8.1: resolution: {integrity: sha512-k9PN+cFBmaLWtVz29SkUoqU5O0slLuHJXt/2P+tMVFT+phsSGXGkp9t3rQIqdz0e+06EHNGs3oM6ZX1s2zHxRg==} + getpass@0.1.7: + resolution: {integrity: sha512-0fzj9JxOLfJ+XGLhR8ze3unN0KZCgZwiSSDz168VERjK8Wl8kVSdcu2kspd4s4wtAa1y/qrVRiAA0WclVsu0ng==} + giget@1.2.3: resolution: {integrity: sha512-8EHPljDvs7qKykr6uw8b+lqLiUc/vUg+KVTI0uND4s63TdsZM2Xus3mflvF0DDG9SiM4RlCkFGL+7aAjRmV7KA==} hasBin: true @@ -6687,6 +6775,15 @@ packages: engines: {node: '>=0.4.7'} hasBin: true + har-schema@2.0.0: + resolution: {integrity: sha512-Oqluz6zhGX8cyRaTQlFMPw80bSJVG2x/cFb8ZPhUILGgHka9SsokCCOQgpveePerqidZOrT14ipqfJb7ILcW5Q==} + engines: {node: '>=4'} + + har-validator@5.1.5: + resolution: {integrity: sha512-nmT2T0lljbxdQZfspsno9hgrG3Uir6Ks5afism62poxqBM6sDnMEuPmzTq8XN0OEwqKLLdh1jQI3qyE66Nzb3w==} + engines: {node: '>=6'} + deprecated: this library is no longer supported + has-bigints@1.0.2: resolution: {integrity: sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ==} @@ -6759,6 +6856,10 @@ packages: resolution: {integrity: sha512-S9wWkJ/VSY9/k4qcjG318bqJNruzE4HySUhFYknwmu6LBP97KLLfwNf+n4V1BHurvFNkSKLFnK/RsuUnRTf9Vw==} engines: {iojs: '>= 1.0.0', node: '>= 0.12.0'} + http-signature@1.2.0: + resolution: {integrity: sha512-CAbnr6Rz4CYQkLYUtSNXxQPUH2gK8f3iWexVlsnMeD+GjlsQ0Xsy1cOX+mN3dtxYomRy21CiOzU8Uhw6OwncEQ==} + engines: {node: '>=0.8', npm: '>=1.3.7'} + https-proxy-agent@5.0.1: resolution: {integrity: sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==} engines: {node: '>= 6'} @@ -7045,6 +7146,9 @@ packages: resolution: {integrity: sha512-uZ25/bUAlUY5fR4OKT4rZQEBrzQWYV9ZJYGGsUmEJ6thodVJ1HX64ePQ6Z0qPWP+m+Uq6e9UugrE38jeYsDSMw==} engines: {node: '>= 0.4'} + is-typedarray@1.0.0: + resolution: {integrity: sha512-cyA56iCMHAh5CdzjJIa4aohJyeO1YbwLi3Jc35MmRU6poroFjIGZzUzupGiRPOjgHg9TLu43xbpwXk523fMxKA==} + is-unicode-supported@0.1.0: resolution: {integrity: sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==} engines: {node: '>=10'} @@ -7096,6 +7200,9 @@ packages: isexe@2.0.0: resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==} + isstream@0.1.2: + resolution: {integrity: sha512-Yljz7ffyPbrLpLngrMtZ7NduUgVvi6wG9RJ9IUcyCd59YQ911PBJphODUcbOVbqYfxe1wuYf/LJ8PauMRwsM/g==} + iterator.prototype@1.1.3: resolution: {integrity: sha512-FW5iMbeQ6rBGm/oKgzq2aW4KvAGpxPzYES8N4g4xNXUKpL1mclMvOe+76AcLDTvD+Ze+sOpVhgdAQEKF4L9iGQ==} engines: {node: '>= 0.4'} @@ -7148,6 +7255,9 @@ packages: resolution: {integrity: sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==} hasBin: true + jsbn@0.1.1: + resolution: {integrity: sha512-UVU9dibq2JcFWxQPA6KCqj5O42VOmAY3zQUfEKxU0KpTGXwNoCjkX1e13eHNvw/xPynt6pU0rZ1htjWTNTSXsg==} + jsesc@3.0.2: resolution: {integrity: sha512-xKqzzWXDttJuOcawBt4KnKHHIf5oQ/Cxax+0PWFG+DFDgHNAdi+TXECADI+RYiFUMmx8792xsMbbgXj4CwnP4g==} engines: {node: '>=6'} @@ -7169,9 +7279,15 @@ packages: json-schema-traverse@1.0.0: resolution: {integrity: sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==} + json-schema@0.4.0: + resolution: {integrity: sha512-es94M3nTIfsEPisRafak+HDLfHXnKBhV3vU5eqPcS3flIWqcxJWgXHXiey3YrpaNsanY5ei1VoYEbOzijuq9BA==} + json-stable-stringify-without-jsonify@1.0.1: resolution: {integrity: sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==} + json-stringify-safe@5.0.1: + resolution: {integrity: sha512-ZClg6AaYvamvYEE82d3Iyd3vSSIjQ+odgjaTzRuO3s7toCdFKczob2i0zCh7JE8kWn17yvAWhUVxvqGwUalsRA==} + json5@1.0.2: resolution: {integrity: sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA==} hasBin: true @@ -7187,6 +7303,10 @@ packages: jsonfile@6.1.0: resolution: {integrity: sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==} + jsprim@1.4.2: + resolution: {integrity: sha512-P2bSOMAc/ciLz6DzgjVlGJP9+BrJWu5UDGK70C2iweC5QBIeFf0ZXRvGjEj2uYgrY2MkAAhsSWHDWlFtEroZWw==} + engines: {node: '>=0.6.0'} + jsx-ast-utils@3.3.5: resolution: {integrity: sha512-ZZow9HBI5O6EPgSJLUb8n2NKgmVWTwCvHGwFuJlMjvLFqlGG6pjirPhtdsseaLZjSibD8eegzmYpUZwoIlj2cQ==} engines: {node: '>=4.0'} @@ -7798,6 +7918,9 @@ packages: engines: {node: ^14.16.0 || >=16.10.0} hasBin: true + oauth-sign@0.9.0: + resolution: {integrity: sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ==} + object-assign@4.1.1: resolution: {integrity: sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==} engines: {node: '>=0.10.0'} @@ -8026,6 +8149,9 @@ packages: perfect-debounce@1.0.0: resolution: {integrity: sha512-xCy9V055GLEqoFaHoC1SoLIaLmWctgCUaBaWxDZ7/Zx4CTyX7cJQLJOok/orfjZAh9kEYpjJa4d0KcJmCbctZA==} + performance-now@2.1.0: + resolution: {integrity: sha512-7EAHlyLHI56VEIdK57uwHdHKIaAGbnXPiw0yWbarQZOKaKpvUIgW0jWRVLiatnM+XXlSwsanIBH/hzGMJulMow==} + picocolors@1.1.0: resolution: {integrity: sha512-TQ92mBOW0l3LeMeyLV6mzy/kWr8lkd/hp3mTg7wYK7zJhuBStmGMBG0BdeDZS/dZx1IukaX6Bk11zcln25o1Aw==} @@ -8527,6 +8653,9 @@ packages: protocols@2.0.1: resolution: {integrity: sha512-/XJ368cyBJ7fzLMwLKv1e4vLxOju2MNAIokcr7meSaNcVbWz/CPcW22cP04mwxOErdA5mwjA8Q6w/cdAQxVn7Q==} + psl@1.15.0: + resolution: {integrity: sha512-JZd3gMVBAVQkSs6HdNZo9Sdo0LNcQeMNP3CozBJb3JYC/QUYZTnKxP+f8oWRX4rHP5EurWxqAHTSwUCjlNKa1w==} + punycode.js@2.3.1: resolution: {integrity: sha512-uxFIHU0YlHYhDQtV4R9J6a52SLx28BCjT+4ieh7IGbgwVJWO+km431c4yRlREUAsAmt/uMjQUyQHNEPf0M39CA==} engines: {node: '>=6'} @@ -8538,6 +8667,10 @@ packages: pure-rand@6.1.0: resolution: {integrity: sha512-bVWawvoZoBYpp6yIoQtQXHZjmz35RSVHnUOTefl8Vcjr8snTPY1wnpSPMWekcFwbxI6gtmT7rSYPFvz71ldiOA==} + qs@6.5.3: + resolution: {integrity: sha512-qxXIEh4pCGfHICj1mAJQ2/2XVZkjCDTcEgfoSQxc/fYivUZxTkk7L3bDBJSoNrEzXI17oUO5Dp07ktqE5KzczA==} + engines: {node: '>=0.6'} + queue-lit@1.5.2: resolution: {integrity: sha512-tLc36IOPeMAubu8BkW8YDBV+WyIgKlYU7zUNs0J5Vk9skSZ4JfGlPOqplP0aHdfv7HL0B2Pg6nwiq60Qc6M2Hw==} engines: {node: '>=12'} @@ -8735,6 +8868,24 @@ packages: engines: {node: '>=10'} hasBin: true + request-promise-core@1.1.4: + resolution: {integrity: sha512-TTbAfBBRdWD7aNNOoVOBH4pN/KigV6LyapYNNlAPA8JwbovRti1E88m3sYAwsLi5ryhPKsE9APwnjFTgdUjTpw==} + engines: {node: '>=0.10.0'} + peerDependencies: + request: ^2.34 + + request-promise@4.2.6: + resolution: {integrity: sha512-HCHI3DJJUakkOr8fNoCc73E5nU5bqITjOYFMDrKHYOXWXrgD/SBaC7LjwuPymUprRyuF06UK7hd/lMHkmUXglQ==} + engines: {node: '>=0.10.0'} + deprecated: request-promise has been deprecated because it extends the now deprecated request package, see https://github.com/request/request/issues/3142 + peerDependencies: + request: ^2.34 + + request@2.88.2: + resolution: {integrity: sha512-MsvtOrfG9ZcrOwAW+Qi+F6HbD0CWXEh9ou77uOb7FM2WPhwT7smM833PzanhJLsgXjN89Ir6V2PczXNnMpwKhw==} + engines: {node: '>= 6'} + deprecated: request has been deprecated, see https://github.com/request/request/issues/3142 + require-directory@2.1.1: resolution: {integrity: sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==} engines: {node: '>=0.10.0'} @@ -9036,6 +9187,11 @@ packages: sprintf-js@1.0.3: resolution: {integrity: sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==} + sshpk@1.18.0: + resolution: {integrity: sha512-2p2KJZTSqQ/I3+HX42EpYOa2l3f8Erv8MWKsy2I9uf4wA7yFIkXRffYdsx86y6z4vHtV8u7g+pPlr8/4ouAxsQ==} + engines: {node: '>=0.10.0'} + hasBin: true + stackback@0.0.2: resolution: {integrity: sha512-1XMJE5fQo1jGH6Y/7ebnwPOBEkIEnT4QF32d5R1+VXdXveM0IBMJt8zfaxX1P3QhVwrYe+576+jkANtSS2mBbw==} @@ -9053,6 +9209,10 @@ packages: std-env@3.8.0: resolution: {integrity: sha512-Bc3YwwCB+OzldMxOXJIIvC6cPRWr/LxOp48CdQTOkPyk/t4JWWJbrilwBd7RJzKV8QW7tJkcgAmeuLLJugl5/w==} + stealthy-require@1.1.1: + resolution: {integrity: sha512-ZnWpYnYugiOVEY5GkcuJK1io5V8QmNYChG62gSit9pQVGErXtrKuPC55ITaVSukmMta5qpMU7vqLt2Lnni4f/g==} + engines: {node: '>=0.10.0'} + stream-to-array@2.3.0: resolution: {integrity: sha512-UsZtOYEn4tWU2RGLOXr/o/xjRBftZRlG3dEWoaHr8j4GuypJ3isitGbVyjQKAuMu+xbiop8q224TjiZWc4XTZA==} @@ -9481,6 +9641,10 @@ packages: resolution: {integrity: sha512-sf4i37nQ2LBx4m3wB74y+ubopq6W/dIzXg0FDGjsYnZHVa1Da8FH853wlL2gtUhg+xJXjfk3kUZS3BRoQeoQBQ==} engines: {node: '>=6'} + tough-cookie@2.5.0: + resolution: {integrity: sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g==} + engines: {node: '>=0.8'} + tr46@0.0.3: resolution: {integrity: sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==} @@ -9538,6 +9702,9 @@ packages: resolution: {integrity: sha512-LxhtAkPDTkVCMQjt2h6eBVY28KCjikZqZfMcC15YBeNjkgUpdCfBu5HoiOTDu86v6smE8yOjyEktJ8hlbANHQA==} engines: {node: '>=0.6.x'} + tunnel-agent@0.6.0: + resolution: {integrity: sha512-McnNiV1l8RYeY8tBgEpuodCC1mLUdbSN+CYBL7kJsJNInOP8UjDDEwdk6Mw60vdLLrr5NHKZhMAOSrR2NZuQ+w==} + turbo-darwin-64@2.3.3: resolution: {integrity: sha512-bxX82xe6du/3rPmm4aCC5RdEilIN99VUld4HkFQuw+mvFg6darNBuQxyWSHZTtc25XgYjQrjsV05888w1grpaA==} cpu: [x64] @@ -9572,6 +9739,9 @@ packages: resolution: {integrity: sha512-DUHWQAcC8BTiUZDRzAYGvpSpGLiaOQPfYXlCieQbwUvmml/LRGIe3raKdrOPOoiX0DYlzxs2nH6BoWJoZrj8hA==} hasBin: true + tweetnacl@0.14.5: + resolution: {integrity: sha512-KXXFFdAbFXY4geFIwoyNK+f5Z1b7swfXABfL7HXCmoIWMKU3dmS26672A4EeQtDzLKy7SXmfBu51JolvEKwtGA==} + type-check@0.4.0: resolution: {integrity: sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==} engines: {node: '>= 0.8.0'} @@ -9845,6 +10015,11 @@ packages: resolution: {integrity: sha512-d0z310fCWv5dJwnX1Y/MncBAqGMKEzlBb1AOf7z9K8ALnd0utBX/msg/fA0+sbyN1ihbMsLhrBlnl1ak7Wa0rg==} hasBin: true + uuid@3.4.0: + resolution: {integrity: sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==} + deprecated: Please upgrade to version 7 or higher. Older versions may use Math.random() in certain circumstances, which is known to be problematic. See https://v8.dev/blog/math-random for details. + hasBin: true + uuid@9.0.1: resolution: {integrity: sha512-b+1eJOlsR9K8HJpow9Ok3fiWOWSIcIzXodvv0rQjVoOVNpWMpxf1wZNpt4y9h10odCNrqnYp1OBzRktckBe3sA==} hasBin: true @@ -9918,6 +10093,10 @@ packages: peerDependencies: vue: ^3.4.26 + verror@1.10.0: + resolution: {integrity: sha512-ZZKSmDAEFOijERBLkmYfJ+vmk3w+7hOLYDNkRCuRuMJGEmqYNCNLyBBFwWKVMhfwaEF3WOd0Zlw86U/WC/+nYw==} + engines: {'0': node >=0.6.0} + vfile-message@4.0.2: resolution: {integrity: sha512-jRDZ1IMLttGj41KcZvlrYAaI3CfqpLpfpf+Mfig13viT6NKvRzWZ+lXz0Y5D60w6uJIBAOGq9mSHf0gktF0duw==} @@ -15548,6 +15727,12 @@ snapshots: is-array-buffer: 3.0.4 is-shared-array-buffer: 1.0.3 + asn1@0.2.6: + dependencies: + safer-buffer: 2.1.2 + + assert-plus@1.0.0: {} + assertion-error@2.0.1: {} ast-kit@1.3.1: @@ -15572,6 +15757,8 @@ snapshots: async@3.2.6: {} + asynckit@0.4.0: {} + at-least-node@1.0.0: {} autoprefixer@10.4.20(postcss@8.4.47): @@ -15598,6 +15785,10 @@ snapshots: dependencies: possible-typed-array-names: 1.0.0 + aws-sign2@0.7.0: {} + + aws4@1.13.2: {} + axe-core@4.10.2: {} axobject-query@4.1.0: {} @@ -15617,6 +15808,10 @@ snapshots: base64-js@1.5.1: {} + bcrypt-pbkdf@1.0.2: + dependencies: + tweetnacl: 0.14.5 + better-path-resolve@1.0.0: dependencies: is-windows: 1.0.2 @@ -15690,6 +15885,8 @@ snapshots: inherits: 2.0.4 readable-stream: 3.6.2 + bluebird@3.7.2: {} + boolbase@1.0.0: {} bowser@2.11.0: {} @@ -15791,6 +15988,8 @@ snapshots: case-anything@2.1.13: {} + caseless@0.12.0: {} + ccount@2.0.1: {} chai@5.1.2: @@ -15923,6 +16122,10 @@ snapshots: colorette@1.4.0: {} + combined-stream@1.0.8: + dependencies: + delayed-stream: 1.0.0 + comma-separated-tokens@2.0.3: {} commander@12.1.0: {} @@ -15986,6 +16189,8 @@ snapshots: dependencies: is-what: 4.1.16 + core-util-is@1.0.2: {} + core-util-is@1.0.3: {} cosmiconfig@7.1.0: @@ -16286,6 +16491,10 @@ snapshots: damerau-levenshtein@1.0.8: {} + dashdash@1.14.1: + dependencies: + assert-plus: 1.0.0 + data-uri-to-buffer@4.0.1: {} data-view-buffer@1.0.1: @@ -16386,6 +16595,8 @@ snapshots: dependencies: robust-predicates: 3.0.2 + delayed-stream@1.0.0: {} + delegates@1.0.0: {} denque@2.1.0: {} @@ -16542,6 +16753,11 @@ snapshots: eastasianwidth@0.2.0: {} + ecc-jsbn@0.1.2: + dependencies: + jsbn: 0.1.1 + safer-buffer: 2.1.2 + ee-first@1.1.1: {} effect@3.11.8: @@ -17184,6 +17400,8 @@ snapshots: expect-type@1.1.0: {} + extend@3.0.2: {} + extendable-error@0.1.7: {} external-editor@3.1.0: @@ -17199,6 +17417,8 @@ snapshots: pathe: 1.1.2 ufo: 1.5.4 + extsprintf@1.3.0: {} + fast-check@3.23.0: dependencies: pure-rand: 6.1.0 @@ -17315,6 +17535,14 @@ snapshots: cross-spawn: 7.0.5 signal-exit: 4.1.0 + forever-agent@0.6.1: {} + + form-data@2.3.3: + dependencies: + asynckit: 0.4.0 + combined-stream: 1.0.8 + mime-types: 2.1.35 + formdata-polyfill@4.0.10: dependencies: fetch-blob: 3.2.0 @@ -17447,6 +17675,10 @@ snapshots: dependencies: resolve-pkg-maps: 1.0.0 + getpass@0.1.7: + dependencies: + assert-plus: 1.0.0 + giget@1.2.3: dependencies: citty: 0.1.6 @@ -17595,6 +17827,13 @@ snapshots: optionalDependencies: uglify-js: 3.19.3 + har-schema@2.0.0: {} + + har-validator@5.1.5: + dependencies: + ajv: 6.12.6 + har-schema: 2.0.0 + has-bigints@1.0.2: {} has-flag@4.0.0: {} @@ -17675,6 +17914,12 @@ snapshots: http-shutdown@1.2.2: {} + http-signature@1.2.0: + dependencies: + assert-plus: 1.0.0 + jsprim: 1.4.2 + sshpk: 1.18.0 + https-proxy-agent@5.0.1: dependencies: agent-base: 6.0.2 @@ -17941,6 +18186,8 @@ snapshots: dependencies: which-typed-array: 1.1.15 + is-typedarray@1.0.0: {} + is-unicode-supported@0.1.0: {} is-url-superb@4.0.0: {} @@ -17980,6 +18227,8 @@ snapshots: isexe@2.0.0: {} + isstream@0.1.2: {} + iterator.prototype@1.1.3: dependencies: define-properties: 1.2.1 @@ -18031,6 +18280,8 @@ snapshots: dependencies: argparse: 2.0.1 + jsbn@0.1.1: {} + jsesc@3.0.2: {} json-buffer@3.0.1: {} @@ -18047,8 +18298,12 @@ snapshots: json-schema-traverse@1.0.0: {} + json-schema@0.4.0: {} + json-stable-stringify-without-jsonify@1.0.1: {} + json-stringify-safe@5.0.1: {} + json5@1.0.2: dependencies: minimist: 1.2.8 @@ -18065,6 +18320,13 @@ snapshots: optionalDependencies: graceful-fs: 4.2.11 + jsprim@1.4.2: + dependencies: + assert-plus: 1.0.0 + extsprintf: 1.3.0 + json-schema: 0.4.0 + verror: 1.10.0 + jsx-ast-utils@3.3.5: dependencies: array-includes: 3.1.8 @@ -18868,6 +19130,8 @@ snapshots: pkg-types: 1.2.1 ufo: 1.5.4 + oauth-sign@0.9.0: {} + object-assign@4.1.1: {} object-hash@3.0.0: {} @@ -19113,6 +19377,8 @@ snapshots: perfect-debounce@1.0.0: {} + performance-now@2.1.0: {} + picocolors@1.1.0: {} picocolors@1.1.1: {} @@ -19501,6 +19767,10 @@ snapshots: protocols@2.0.1: {} + psl@1.15.0: + dependencies: + punycode: 2.3.1 + punycode.js@2.3.1: {} punycode@2.3.1: {} @@ -19508,6 +19778,8 @@ snapshots: pure-rand@6.1.0: optional: true + qs@6.5.3: {} + queue-lit@1.5.2: {} queue-microtask@1.2.3: {} @@ -19739,6 +20011,42 @@ snapshots: glob: 7.2.3 yargs: 17.7.2 + request-promise-core@1.1.4(request@2.88.2): + dependencies: + lodash: 4.17.21 + request: 2.88.2 + + request-promise@4.2.6(request@2.88.2): + dependencies: + bluebird: 3.7.2 + request: 2.88.2 + request-promise-core: 1.1.4(request@2.88.2) + stealthy-require: 1.1.1 + tough-cookie: 2.5.0 + + request@2.88.2: + dependencies: + aws-sign2: 0.7.0 + aws4: 1.13.2 + caseless: 0.12.0 + combined-stream: 1.0.8 + extend: 3.0.2 + forever-agent: 0.6.1 + form-data: 2.3.3 + har-validator: 5.1.5 + http-signature: 1.2.0 + is-typedarray: 1.0.0 + isstream: 0.1.2 + json-stringify-safe: 5.0.1 + mime-types: 2.1.35 + oauth-sign: 0.9.0 + performance-now: 2.1.0 + qs: 6.5.3 + safe-buffer: 5.2.1 + tough-cookie: 2.5.0 + tunnel-agent: 0.6.0 + uuid: 3.4.0 + require-directory@2.1.1: {} require-from-string@2.0.2: {} @@ -20105,6 +20413,18 @@ snapshots: sprintf-js@1.0.3: {} + sshpk@1.18.0: + dependencies: + asn1: 0.2.6 + assert-plus: 1.0.0 + bcrypt-pbkdf: 1.0.2 + dashdash: 1.14.1 + ecc-jsbn: 0.1.2 + getpass: 0.1.7 + jsbn: 0.1.1 + safer-buffer: 2.1.2 + tweetnacl: 0.14.5 + stackback@0.0.2: {} standard-as-callback@2.1.0: {} @@ -20115,6 +20435,8 @@ snapshots: std-env@3.8.0: {} + stealthy-require@1.1.1: {} + stream-to-array@2.3.0: dependencies: any-promise: 1.3.0 @@ -20911,6 +21233,11 @@ snapshots: totalist@3.0.1: {} + tough-cookie@2.5.0: + dependencies: + psl: 1.15.0 + punycode: 2.3.1 + tr46@0.0.3: {} trim-lines@3.0.1: {} @@ -20981,6 +21308,10 @@ snapshots: tsscmp@1.0.6: {} + tunnel-agent@0.6.0: + dependencies: + safe-buffer: 5.2.1 + turbo-darwin-64@2.3.3: optional: true @@ -21008,6 +21339,8 @@ snapshots: turbo-windows-64: 2.3.3 turbo-windows-arm64: 2.3.3 + tweetnacl@0.14.5: {} + type-check@0.4.0: dependencies: prelude-ls: 1.2.1 @@ -21305,6 +21638,8 @@ snapshots: uuid@11.0.3: {} + uuid@3.4.0: {} + uuid@9.0.1: {} v-calendar@3.1.2(@popperjs/core@2.11.8)(vue@3.5.13(typescript@5.6.3)): @@ -21382,6 +21717,12 @@ snapshots: type-fest: 4.27.0 vue: 3.5.13(typescript@5.6.3) + verror@1.10.0: + dependencies: + assert-plus: 1.0.0 + core-util-is: 1.0.2 + extsprintf: 1.3.0 + vfile-message@4.0.2: dependencies: '@types/unist': 3.0.3 diff --git a/pnpm-workspace.yaml b/pnpm-workspace.yaml index 917e24c..ac61b45 100644 --- a/pnpm-workspace.yaml +++ b/pnpm-workspace.yaml @@ -7,5 +7,6 @@ packages: - "vendors/tauri-plugin-network" - "vendors/tauri-plugin-keyring" - "vendors/tauri-plugin-system-info" + - "vendors/tauri-plugin-user-input" - "vendors/kkrpc/packages/kkrpc" diff --git a/vendors/tauri-plugin-user-input b/vendors/tauri-plugin-user-input new file mode 160000 index 0000000..5766c04 --- /dev/null +++ b/vendors/tauri-plugin-user-input @@ -0,0 +1 @@ +Subproject commit 5766c04cb255b88fb569e6db2ae910ad237fef34