From 7be9140f2d7b0d1923468a840c3febd129a1e965 Mon Sep 17 00:00:00 2001 From: tonystark-agent Date: Sat, 23 May 2026 18:03:17 +0200 Subject: [PATCH 1/4] feat: add Raycast recording controls --- .../desktop/src-tauri/src/deeplink_actions.rs | 162 +++- apps/raycast/.gitignore | 1 + apps/raycast/README.md | 12 + apps/raycast/assets/command-icon.png | Bin 0 -> 17414 bytes apps/raycast/package.json | 51 ++ apps/raycast/src/cap-control.tsx | 23 + apps/raycast/src/lib/deeplinks.ts | 161 ++++ apps/raycast/src/start-recording.tsx | 50 ++ apps/raycast/src/switch-device.tsx | 41 + apps/raycast/src/take-screenshot.tsx | 33 + apps/raycast/tsconfig.json | 15 + pnpm-lock.yaml | 714 ++++++++++++++---- 12 files changed, 1119 insertions(+), 144 deletions(-) create mode 100644 apps/raycast/.gitignore create mode 100644 apps/raycast/README.md create mode 100644 apps/raycast/assets/command-icon.png create mode 100644 apps/raycast/package.json create mode 100644 apps/raycast/src/cap-control.tsx create mode 100644 apps/raycast/src/lib/deeplinks.ts create mode 100644 apps/raycast/src/start-recording.tsx create mode 100644 apps/raycast/src/switch-device.tsx create mode 100644 apps/raycast/src/take-screenshot.tsx create mode 100644 apps/raycast/tsconfig.json diff --git a/apps/desktop/src-tauri/src/deeplink_actions.rs b/apps/desktop/src-tauri/src/deeplink_actions.rs index a1170284877..e954e9d7a62 100644 --- a/apps/desktop/src-tauri/src/deeplink_actions.rs +++ b/apps/desktop/src-tauri/src/deeplink_actions.rs @@ -2,11 +2,16 @@ use cap_recording::{ RecordingMode, feeds::camera::DeviceOrModelID, sources::screen_capture::ScreenCaptureTarget, }; use serde::{Deserialize, Serialize}; +use std::future::Future; use std::path::{Path, PathBuf}; use tauri::{AppHandle, Manager, Url}; use tracing::trace; -use crate::{App, ArcLock, recording::StartRecordingInputs, windows::ShowCapWindow}; +use crate::{ + App, ArcLock, + recording::{self, StartRecordingInputs}, + windows::ShowCapWindow, +}; #[derive(Debug, Serialize, Deserialize)] #[serde(rename_all = "snake_case")] @@ -26,6 +31,18 @@ pub enum DeepLinkAction { mode: RecordingMode, }, StopRecording, + PauseRecording, + ResumeRecording, + TogglePauseRecording, + TakeScreenshot { + capture_mode: CaptureMode, + }, + SetMicrophone { + mic_label: Option, + }, + SetCamera { + camera: Option, + }, OpenEditor { project_path: PathBuf, }, @@ -70,6 +87,7 @@ pub fn handle(app_handle: &AppHandle, urls: Vec) { }); } +#[derive(Debug)] pub enum ActionParseFromUrlError { ParseFailed(String), Invalid, @@ -88,9 +106,10 @@ impl TryFrom<&Url> for DeepLinkAction { .map_err(|_| ActionParseFromUrlError::Invalid); } - match url.domain() { - Some(v) if v != "action" => Err(ActionParseFromUrlError::NotAction), - _ => Err(ActionParseFromUrlError::Invalid), + match url.host_str() { + Some("action") => Ok(()), + Some(_) => Err(ActionParseFromUrlError::NotAction), + None => Err(ActionParseFromUrlError::Invalid), }?; let params = url @@ -120,18 +139,7 @@ impl DeepLinkAction { crate::set_camera_input(app.clone(), state.clone(), camera, None).await?; crate::set_mic_input(state.clone(), mic_label).await?; - let capture_target: ScreenCaptureTarget = match capture_mode { - CaptureMode::Screen(name) => cap_recording::screen_capture::list_displays() - .into_iter() - .find(|(s, _)| s.name == name) - .map(|(s, _)| ScreenCaptureTarget::Display { id: s.id }) - .ok_or(format!("No screen with name \"{}\"", &name))?, - CaptureMode::Window(name) => cap_recording::screen_capture::list_windows() - .into_iter() - .find(|(w, _)| w.name == name) - .map(|(w, _)| ScreenCaptureTarget::Window { id: w.id }) - .ok_or(format!("No window with name \"{}\"", &name))?, - }; + let capture_target = resolve_capture_target(capture_mode)?; let inputs = StartRecordingInputs { mode, @@ -147,6 +155,33 @@ impl DeepLinkAction { DeepLinkAction::StopRecording => { crate::recording::stop_recording(app.clone(), app.state()).await } + DeepLinkAction::PauseRecording => { + recording::pause_recording(app.clone(), app.state()).await + } + DeepLinkAction::ResumeRecording => { + recording::resume_recording(app.clone(), app.state()).await + } + DeepLinkAction::TogglePauseRecording => { + recording::toggle_pause_recording(app.clone(), app.state()).await + } + DeepLinkAction::TakeScreenshot { capture_mode } => { + let target = resolve_capture_target(capture_mode)?; + let path = recording::take_screenshot(app.clone(), target).await?; + let _ = ShowCapWindow::ScreenshotEditor { path }.show(app).await; + Ok(()) + } + DeepLinkAction::SetMicrophone { mic_label } => { + with_recording_paused_for_input_change(app, async { + crate::set_mic_input(app.state(), mic_label).await + }) + .await + } + DeepLinkAction::SetCamera { camera } => { + with_recording_paused_for_input_change(app, async { + crate::set_camera_input(app.clone(), app.state(), camera, Some(true)).await + }) + .await + } DeepLinkAction::OpenEditor { project_path } => { crate::open_project_from_path(Path::new(&project_path), app.clone()) } @@ -156,3 +191,98 @@ impl DeepLinkAction { } } } + +fn resolve_capture_target(capture_mode: CaptureMode) -> Result { + match capture_mode { + CaptureMode::Screen(name) => cap_recording::screen_capture::list_displays() + .into_iter() + .find(|(s, _)| s.name == name) + .map(|(s, _)| ScreenCaptureTarget::Display { id: s.id }) + .ok_or(format!("No screen with name \"{}\"", &name)), + CaptureMode::Window(name) => cap_recording::screen_capture::list_windows() + .into_iter() + .find(|(w, _)| w.name == name) + .map(|(w, _)| ScreenCaptureTarget::Window { id: w.id }) + .ok_or(format!("No window with name \"{}\"", &name)), + } +} + +async fn with_recording_paused_for_input_change( + app: &AppHandle, + input_change: F, +) -> Result<(), String> +where + F: Future>, +{ + let should_resume = { + let state = app.state::>(); + let state = state.read().await; + match state.current_recording() { + Some(recording) => !recording.is_paused().await.map_err(|e| e.to_string())?, + None => false, + } + }; + + if should_resume { + recording::pause_recording(app.clone(), app.state()).await?; + } + + match input_change.await { + Ok(()) => { + if should_resume { + recording::resume_recording(app.clone(), app.state()).await?; + } + Ok(()) + } + Err(err) => { + if should_resume { + recording::resume_recording(app.clone(), app.state()) + .await + .map_err(|resume_err| { + format!("{err}; failed to resume recording after input change error: {resume_err}") + })?; + } + Err(err) + } + } +} + +#[cfg(test)] +mod tests { + use super::*; + + fn action_from(value: &str) -> DeepLinkAction { + let mut url = Url::parse("cap-desktop://action").unwrap(); + url.query_pairs_mut().append_pair("value", value); + DeepLinkAction::try_from(&url).unwrap() + } + + #[test] + fn parses_action_host_links() { + let action = action_from(r#"{"pause_recording":null}"#); + + assert!(matches!(action, DeepLinkAction::PauseRecording)); + } + + #[test] + fn keeps_signin_links_out_of_action_handler() { + let url = Url::parse("cap-desktop://signin?token=abc").unwrap(); + + assert!(matches!( + DeepLinkAction::try_from(&url), + Err(ActionParseFromUrlError::NotAction) + )); + } + + #[test] + fn parses_nullable_input_actions() { + let mic = action_from(r#"{"set_microphone":{"mic_label":null}}"#); + let camera = action_from(r#"{"set_camera":{"camera":null}}"#); + + assert!(matches!( + mic, + DeepLinkAction::SetMicrophone { mic_label: None } + )); + assert!(matches!(camera, DeepLinkAction::SetCamera { camera: None })); + } +} diff --git a/apps/raycast/.gitignore b/apps/raycast/.gitignore new file mode 100644 index 00000000000..a644ca3de75 --- /dev/null +++ b/apps/raycast/.gitignore @@ -0,0 +1 @@ +raycast-env.d.ts diff --git a/apps/raycast/README.md b/apps/raycast/README.md new file mode 100644 index 00000000000..5f4deebf295 --- /dev/null +++ b/apps/raycast/README.md @@ -0,0 +1,12 @@ +# Cap Raycast Extension + +This extension controls Cap Desktop through the `cap-desktop://action?value=...` deeplink contract. + +Commands: + +- `Control Recording`: pause, resume, toggle pause, or stop the active recording. +- `Start Recording`: start a Studio or Instant recording by screen/window name. +- `Take Screenshot`: capture a screen/window by name. +- `Switch Input Device`: switch or disable the active microphone/camera. + +Camera switching expects the Cap camera device ID. Microphone switching expects the device label shown by Cap. diff --git a/apps/raycast/assets/command-icon.png b/apps/raycast/assets/command-icon.png new file mode 100644 index 0000000000000000000000000000000000000000..541dacc23447c0d19025fa5c0b015f45c33ea664 GIT binary patch literal 17414 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 + {recordingActions.map((item) => ( + + runCapAction(item.action, item.title)} + /> + + } + /> + ))} + + ); +} diff --git a/apps/raycast/src/lib/deeplinks.ts b/apps/raycast/src/lib/deeplinks.ts new file mode 100644 index 00000000000..aa4e112502d --- /dev/null +++ b/apps/raycast/src/lib/deeplinks.ts @@ -0,0 +1,161 @@ +import { open, showToast, Toast } from "@raycast/api"; + +type CaptureMode = + | { + screen: string; + } + | { + window: string; + }; + +type RecordingMode = "studio" | "instant"; + +type CameraId = + | { + DeviceID: string; + } + | { + ModelID: { + id: string; + name: string; + }; + }; + +type CapAction = + | { + start_recording: { + capture_mode: CaptureMode; + camera: CameraId | null; + mic_label: string | null; + capture_system_audio: boolean; + mode: RecordingMode; + }; + } + | { + stop_recording: null; + } + | { + pause_recording: null; + } + | { + resume_recording: null; + } + | { + toggle_pause_recording: null; + } + | { + take_screenshot: { + capture_mode: CaptureMode; + }; + } + | { + set_microphone: { + mic_label: string | null; + }; + } + | { + set_camera: { + camera: CameraId | null; + }; + }; + +export type CaptureTarget = { + kind: "screen" | "window"; + name: string; +}; + +export type StartRecordingOptions = { + target: CaptureTarget; + mode: RecordingMode; + micLabel?: string; + cameraDeviceId?: string; + captureSystemAudio: boolean; +}; + +function captureMode(target: CaptureTarget): CaptureMode { + return target.kind === "screen" + ? { screen: target.name } + : { window: target.name }; +} + +function actionUrl(action: CapAction): string { + const value = encodeURIComponent(JSON.stringify(action)); + return `cap-desktop://action?value=${value}`; +} + +export async function runCapAction(action: CapAction, title: string) { + await open(actionUrl(action)); + await showToast({ + style: Toast.Style.Success, + title, + }); +} + +export async function startRecording(options: StartRecordingOptions) { + await runCapAction( + { + start_recording: { + capture_mode: captureMode(options.target), + camera: options.cameraDeviceId + ? { DeviceID: options.cameraDeviceId } + : null, + mic_label: options.micLabel?.trim() || null, + capture_system_audio: options.captureSystemAudio, + mode: options.mode, + }, + }, + "Started Cap recording", + ); +} + +export async function screenshot(target: CaptureTarget) { + await runCapAction( + { + take_screenshot: { + capture_mode: captureMode(target), + }, + }, + "Captured screenshot", + ); +} + +export async function setMicrophone(micLabel: string | null) { + await runCapAction( + { + set_microphone: { + mic_label: micLabel?.trim() || null, + }, + }, + micLabel ? "Switched microphone" : "Disabled microphone", + ); +} + +export async function setCamera(deviceId: string | null) { + await runCapAction( + { + set_camera: { + camera: deviceId?.trim() ? { DeviceID: deviceId.trim() } : null, + }, + }, + deviceId ? "Switched camera" : "Disabled camera", + ); +} + +export const recordingActions = [ + { + title: "Pause Recording", + action: { pause_recording: null }, + }, + { + title: "Resume Recording", + action: { resume_recording: null }, + }, + { + title: "Toggle Pause", + action: { toggle_pause_recording: null }, + }, + { + title: "Stop Recording", + action: { stop_recording: null }, + }, +] satisfies Array<{ title: string; action: CapAction }>; diff --git a/apps/raycast/src/start-recording.tsx b/apps/raycast/src/start-recording.tsx new file mode 100644 index 00000000000..36410860368 --- /dev/null +++ b/apps/raycast/src/start-recording.tsx @@ -0,0 +1,50 @@ +import { Action, ActionPanel, Form } from "@raycast/api"; +import { startRecording } from "./lib/deeplinks"; + +type Values = { + targetKind: "screen" | "window"; + targetName: string; + mode: "studio" | "instant"; + micLabel?: string; + cameraDeviceId?: string; + captureSystemAudio: boolean; +}; + +export default function Command() { + return ( +
+ + startRecording({ + target: { + kind: values.targetKind, + name: values.targetName, + }, + mode: values.mode, + micLabel: values.micLabel, + cameraDeviceId: values.cameraDeviceId, + captureSystemAudio: values.captureSystemAudio, + }) + } + /> + + } + > + + + + + + + + + + + + + + ); +} diff --git a/apps/raycast/src/switch-device.tsx b/apps/raycast/src/switch-device.tsx new file mode 100644 index 00000000000..02f94da6089 --- /dev/null +++ b/apps/raycast/src/switch-device.tsx @@ -0,0 +1,41 @@ +import { Action, ActionPanel, Form } from "@raycast/api"; +import { setCamera, setMicrophone } from "./lib/deeplinks"; + +type Values = { + deviceKind: "microphone" | "camera"; + value?: string; + disable: boolean; +}; + +export default function Command() { + return ( +
+ { + const value = values.disable + ? null + : values.value?.trim() || null; + if (values.deviceKind === "microphone") + return setMicrophone(value); + return setCamera(value); + }} + /> + + } + > + + + + + + + + ); +} diff --git a/apps/raycast/src/take-screenshot.tsx b/apps/raycast/src/take-screenshot.tsx new file mode 100644 index 00000000000..6dcbf1185cc --- /dev/null +++ b/apps/raycast/src/take-screenshot.tsx @@ -0,0 +1,33 @@ +import { Action, ActionPanel, Form } from "@raycast/api"; +import { screenshot } from "./lib/deeplinks"; + +type Values = { + targetKind: "screen" | "window"; + targetName: string; +}; + +export default function Command() { + return ( +
+ + screenshot({ + kind: values.targetKind, + name: values.targetName, + }) + } + /> + + } + > + + + + + + + ); +} diff --git a/apps/raycast/tsconfig.json b/apps/raycast/tsconfig.json new file mode 100644 index 00000000000..975d68e3f7a --- /dev/null +++ b/apps/raycast/tsconfig.json @@ -0,0 +1,15 @@ +{ + "compilerOptions": { + "allowSyntheticDefaultImports": true, + "esModuleInterop": true, + "jsx": "preserve", + "lib": ["ES2023"], + "module": "commonjs", + "moduleResolution": "node", + "noEmit": true, + "skipLibCheck": true, + "strict": true, + "target": "ES2023" + }, + "include": ["src/**/*"] +} diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 2810356dc57..d480191d34a 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -115,7 +115,7 @@ importers: version: 0.14.10(solid-js@1.9.6) '@solidjs/start': specifier: ^1.1.3 - version: 1.1.3(@testing-library/jest-dom@6.5.0)(@types/node@22.15.17)(jiti@2.6.1)(lightningcss@1.32.0)(solid-js@1.9.6)(terser@5.44.0)(vinxi@0.5.6(@planetscale/database@1.19.0)(@types/node@22.15.17)(db0@0.3.2(drizzle-orm@0.44.6(@cloudflare/workers-types@4.20250507.0)(@opentelemetry/api@1.9.0)(@planetscale/database@1.19.0)(bun-types@1.3.14)(mysql2@3.15.2))(mysql2@3.15.2))(drizzle-orm@0.44.6(@cloudflare/workers-types@4.20250507.0)(@opentelemetry/api@1.9.0)(@planetscale/database@1.19.0)(bun-types@1.3.14)(mysql2@3.15.2))(encoding@0.1.13)(ioredis@5.6.1)(jiti@2.6.1)(lightningcss@1.32.0)(mysql2@3.15.2)(rolldown@1.0.1)(terser@5.44.0)(xml2js@0.6.2)(yaml@2.8.1))(vite@6.3.5(@types/node@22.15.17)(jiti@2.6.1)(lightningcss@1.32.0)(terser@5.44.0)(yaml@2.8.1))(yaml@2.8.1) + version: 1.1.3(@testing-library/jest-dom@6.5.0)(@types/node@22.15.17)(jiti@2.6.1)(lightningcss@1.32.0)(solid-js@1.9.6)(terser@5.44.0)(vinxi@0.5.6(@planetscale/database@1.19.0)(@types/node@22.15.17)(db0@0.3.2(drizzle-orm@0.44.6(@cloudflare/workers-types@4.20250507.0)(@opentelemetry/api@1.9.0)(@planetscale/database@1.19.0)(bun-types@1.3.14)(mysql2@3.15.2))(mysql2@3.15.2))(drizzle-orm@0.44.6(@cloudflare/workers-types@4.20250507.0)(@opentelemetry/api@1.9.0)(@planetscale/database@1.19.0)(bun-types@1.3.14)(mysql2@3.15.2))(encoding@0.1.13)(ioredis@5.6.1)(jiti@2.6.1)(lightningcss@1.32.0)(mysql2@3.15.2)(rolldown@1.0.2)(terser@5.44.0)(xml2js@0.6.2)(yaml@2.8.1))(vite@6.3.5(@types/node@22.15.17)(jiti@2.6.1)(lightningcss@1.32.0)(terser@5.44.0)(yaml@2.8.1))(yaml@2.8.1) '@tanstack/solid-query': specifier: ^5.51.21 version: 5.75.4(solid-js@1.9.6) @@ -205,7 +205,7 @@ importers: version: 9.0.1 vinxi: specifier: ^0.5.6 - version: 0.5.6(@planetscale/database@1.19.0)(@types/node@22.15.17)(db0@0.3.2(drizzle-orm@0.44.6(@cloudflare/workers-types@4.20250507.0)(@opentelemetry/api@1.9.0)(@planetscale/database@1.19.0)(bun-types@1.3.14)(mysql2@3.15.2))(mysql2@3.15.2))(drizzle-orm@0.44.6(@cloudflare/workers-types@4.20250507.0)(@opentelemetry/api@1.9.0)(@planetscale/database@1.19.0)(bun-types@1.3.14)(mysql2@3.15.2))(encoding@0.1.13)(ioredis@5.6.1)(jiti@2.6.1)(lightningcss@1.32.0)(mysql2@3.15.2)(rolldown@1.0.1)(terser@5.44.0)(xml2js@0.6.2)(yaml@2.8.1) + version: 0.5.6(@planetscale/database@1.19.0)(@types/node@22.15.17)(db0@0.3.2(drizzle-orm@0.44.6(@cloudflare/workers-types@4.20250507.0)(@opentelemetry/api@1.9.0)(@planetscale/database@1.19.0)(bun-types@1.3.14)(mysql2@3.15.2))(mysql2@3.15.2))(drizzle-orm@0.44.6(@cloudflare/workers-types@4.20250507.0)(@opentelemetry/api@1.9.0)(@planetscale/database@1.19.0)(bun-types@1.3.14)(mysql2@3.15.2))(encoding@0.1.13)(ioredis@5.6.1)(jiti@2.6.1)(lightningcss@1.32.0)(mysql2@3.15.2)(rolldown@1.0.2)(terser@5.44.0)(xml2js@0.6.2)(yaml@2.8.1) webcodecs: specifier: ^0.1.0 version: 0.1.0 @@ -330,6 +330,19 @@ importers: specifier: latest version: 1.3.14 + apps/raycast: + dependencies: + '@raycast/api': + specifier: ^1.104.17 + version: 1.104.18(@types/node@22.15.17) + devDependencies: + '@types/node': + specifier: 22.15.17 + version: 22.15.17 + typescript: + specifier: ^5.8.3 + version: 5.8.3 + apps/storybook: dependencies: '@cap/ui-solid': @@ -374,7 +387,7 @@ importers: version: 1.0.0-beta.7(@storybook/test@8.6.12(storybook@8.6.12(prettier@3.7.4)))(solid-js@1.9.6)(storybook@8.6.12(prettier@3.7.4)) storybook-solidjs-vite: specifier: ^1.0.0-beta.2 - version: 1.0.0-beta.7(@storybook/test@8.6.12(storybook@8.6.12(prettier@3.7.4)))(esbuild@0.25.5)(rollup@4.40.2)(solid-js@1.9.6)(storybook@8.6.12(prettier@3.7.4))(vite-plugin-solid@2.11.6(@testing-library/jest-dom@6.5.0)(solid-js@1.9.6)(vite@6.3.5(@types/node@22.15.17)(jiti@2.6.1)(lightningcss@1.32.0)(terser@5.44.0)(yaml@2.8.1)))(vite@6.3.5(@types/node@22.15.17)(jiti@2.6.1)(lightningcss@1.32.0)(terser@5.44.0)(yaml@2.8.1))(webpack@5.101.3(esbuild@0.25.5)) + version: 1.0.0-beta.7(@storybook/test@8.6.12(storybook@8.6.12(prettier@3.7.4)))(esbuild@0.25.12)(rollup@4.40.2)(solid-js@1.9.6)(storybook@8.6.12(prettier@3.7.4))(vite-plugin-solid@2.11.6(@testing-library/jest-dom@6.5.0)(solid-js@1.9.6)(vite@6.3.5(@types/node@22.15.17)(jiti@2.6.1)(lightningcss@1.32.0)(terser@5.44.0)(yaml@2.8.1)))(vite@6.3.5(@types/node@22.15.17)(jiti@2.6.1)(lightningcss@1.32.0)(terser@5.44.0)(yaml@2.8.1))(webpack@5.101.3(esbuild@0.25.12)) typescript: specifier: ^5.8.3 version: 5.8.3 @@ -3986,6 +3999,140 @@ packages: cpu: [x64] os: [win32] + '@inquirer/ansi@1.0.2': + resolution: {integrity: sha512-S8qNSZiYzFd0wAcyG5AXCvUHC5Sr7xpZ9wZ2py9XR88jUz8wooStVx5M6dRzczbBWjic9NP7+rY0Xi7qqK/aMQ==} + engines: {node: '>=18'} + + '@inquirer/checkbox@4.3.2': + resolution: {integrity: sha512-VXukHf0RR1doGe6Sm4F0Em7SWYLTHSsbGfJdS9Ja2bX5/D5uwVOEjr07cncLROdBvmnvCATYEWlHqYmXv2IlQA==} + engines: {node: '>=18'} + peerDependencies: + '@types/node': '>=18' + peerDependenciesMeta: + '@types/node': + optional: true + + '@inquirer/confirm@5.1.21': + resolution: {integrity: sha512-KR8edRkIsUayMXV+o3Gv+q4jlhENF9nMYUZs9PA2HzrXeHI8M5uDag70U7RJn9yyiMZSbtF5/UexBtAVtZGSbQ==} + engines: {node: '>=18'} + peerDependencies: + '@types/node': '>=18' + peerDependenciesMeta: + '@types/node': + optional: true + + '@inquirer/core@10.3.2': + resolution: {integrity: sha512-43RTuEbfP8MbKzedNqBrlhhNKVwoK//vUFNW3Q3vZ88BLcrs4kYpGg+B2mm5p2K/HfygoCxuKwJJiv8PbGmE0A==} + engines: {node: '>=18'} + peerDependencies: + '@types/node': '>=18' + peerDependenciesMeta: + '@types/node': + optional: true + + '@inquirer/editor@4.2.23': + resolution: {integrity: sha512-aLSROkEwirotxZ1pBaP8tugXRFCxW94gwrQLxXfrZsKkfjOYC1aRvAZuhpJOb5cu4IBTJdsCigUlf2iCOu4ZDQ==} + engines: {node: '>=18'} + peerDependencies: + '@types/node': '>=18' + peerDependenciesMeta: + '@types/node': + optional: true + + '@inquirer/expand@4.0.23': + resolution: {integrity: sha512-nRzdOyFYnpeYTTR2qFwEVmIWypzdAx/sIkCMeTNTcflFOovfqUk+HcFhQQVBftAh9gmGrpFj6QcGEqrDMDOiew==} + engines: {node: '>=18'} + peerDependencies: + '@types/node': '>=18' + peerDependenciesMeta: + '@types/node': + optional: true + + '@inquirer/external-editor@1.0.3': + resolution: {integrity: sha512-RWbSrDiYmO4LbejWY7ttpxczuwQyZLBUyygsA9Nsv95hpzUWwnNTVQmAq3xuh7vNwCp07UTmE5i11XAEExx4RA==} + engines: {node: '>=18'} + peerDependencies: + '@types/node': '>=18' + peerDependenciesMeta: + '@types/node': + optional: true + + '@inquirer/figures@1.0.15': + resolution: {integrity: sha512-t2IEY+unGHOzAaVM5Xx6DEWKeXlDDcNPeDyUpsRc6CUhBfU3VQOEl+Vssh7VNp1dR8MdUJBWhuObjXCsVpjN5g==} + engines: {node: '>=18'} + + '@inquirer/input@4.3.1': + resolution: {integrity: sha512-kN0pAM4yPrLjJ1XJBjDxyfDduXOuQHrBB8aLDMueuwUGn+vNpF7Gq7TvyVxx8u4SHlFFj4trmj+a2cbpG4Jn1g==} + engines: {node: '>=18'} + peerDependencies: + '@types/node': '>=18' + peerDependenciesMeta: + '@types/node': + optional: true + + '@inquirer/number@3.0.23': + resolution: {integrity: sha512-5Smv0OK7K0KUzUfYUXDXQc9jrf8OHo4ktlEayFlelCjwMXz0299Y8OrI+lj7i4gCBY15UObk76q0QtxjzFcFcg==} + engines: {node: '>=18'} + peerDependencies: + '@types/node': '>=18' + peerDependenciesMeta: + '@types/node': + optional: true + + '@inquirer/password@4.0.23': + resolution: {integrity: sha512-zREJHjhT5vJBMZX/IUbyI9zVtVfOLiTO66MrF/3GFZYZ7T4YILW5MSkEYHceSii/KtRk+4i3RE7E1CUXA2jHcA==} + engines: {node: '>=18'} + peerDependencies: + '@types/node': '>=18' + peerDependenciesMeta: + '@types/node': + optional: true + + '@inquirer/prompts@7.10.1': + resolution: {integrity: sha512-Dx/y9bCQcXLI5ooQ5KyvA4FTgeo2jYj/7plWfV5Ak5wDPKQZgudKez2ixyfz7tKXzcJciTxqLeK7R9HItwiByg==} + engines: {node: '>=18'} + peerDependencies: + '@types/node': '>=18' + peerDependenciesMeta: + '@types/node': + optional: true + + '@inquirer/rawlist@4.1.11': + resolution: {integrity: sha512-+LLQB8XGr3I5LZN/GuAHo+GpDJegQwuPARLChlMICNdwW7OwV2izlCSCxN6cqpL0sMXmbKbFcItJgdQq5EBXTw==} + engines: {node: '>=18'} + peerDependencies: + '@types/node': '>=18' + peerDependenciesMeta: + '@types/node': + optional: true + + '@inquirer/search@3.2.2': + resolution: {integrity: sha512-p2bvRfENXCZdWF/U2BXvnSI9h+tuA8iNqtUKb9UWbmLYCRQxd8WkvwWvYn+3NgYaNwdUkHytJMGG4MMLucI1kA==} + engines: {node: '>=18'} + peerDependencies: + '@types/node': '>=18' + peerDependenciesMeta: + '@types/node': + optional: true + + '@inquirer/select@4.4.2': + resolution: {integrity: sha512-l4xMuJo55MAe+N7Qr4rX90vypFwCajSakx59qe/tMaC1aEHWLyw68wF4o0A4SLAY4E0nd+Vt+EyskeDIqu1M6w==} + engines: {node: '>=18'} + peerDependencies: + '@types/node': '>=18' + peerDependenciesMeta: + '@types/node': + optional: true + + '@inquirer/type@3.0.10': + resolution: {integrity: sha512-BvziSRxfz5Ov8ch0z/n3oijRSEcEsHnhggm4xFZe93DHcUCTlutlq9Ox4SVENAfcRD22UQq7T/atg9Wr3k09eA==} + engines: {node: '>=18'} + peerDependencies: + '@types/node': '>=18' + peerDependenciesMeta: + '@types/node': + optional: true + '@internationalized/date@3.8.0': resolution: {integrity: sha512-J51AJ0fEL68hE4CwGPa6E0PO6JDaVLd8aln48xFCSy7CZkZc96dGEGmLs2OEEbBxcsVZtfrqkXJwI2/MSG8yKw==} @@ -4568,14 +4715,26 @@ packages: engines: {node: ^14.18.0 || >=16.10.0, npm: '>=5.10.0'} hasBin: true + '@oclif/core@4.11.4': + resolution: {integrity: sha512-URwiQ5ALx/sJ2iH4vzXEd+H4K6NAI7LRs6Jag3hrgKEpGmaE6alfRC8qjO4GIgb6A3ACaJumqP9twi/M9ywdHQ==} + engines: {node: '>=18.0.0'} + '@oclif/core@4.8.1': resolution: {integrity: sha512-07mq0vKCWNsB85ZHeBMlTAiO0KLFqHyAeRK3bD2K8CI1tX3tiwkWw1lZQZkiw8MUBrhxdROhMkYMY4Q0l7JHqA==} engines: {node: '>=18.0.0'} + '@oclif/plugin-autocomplete@3.2.49': + resolution: {integrity: sha512-+rrAZ468bW/B9uVrn6sEnFYepy3M1N/BWht8mHzhFIFCIduPSoE+8MweROxZLOGBZrXGWt0iavuPQmy0eaXRfQ==} + engines: {node: '>=18.0.0'} + '@oclif/plugin-help@6.2.37': resolution: {integrity: sha512-5N/X/FzlJaYfpaHwDC0YHzOzKDWa41s9t+4FpCDu4f9OMReds4JeNBaaWk9rlIzdKjh2M6AC5Q18ORfECRkHGA==} engines: {node: '>=18.0.0'} + '@oclif/plugin-not-found@3.2.86': + resolution: {integrity: sha512-BJhJSahwsYayZpo18f0fPTg8tKb9dIvydaz03NCK3eMfmcsT1MmXhXqh1KEV8J7mz0sQ6f0qFEb6BXy490/iUg==} + engines: {node: '>=18.0.0'} + '@octokit/app@15.1.6': resolution: {integrity: sha512-WELCamoCJo9SN0lf3SWZccf68CF0sBNPQuLYmZ/n87p5qvBJDe9aBtr5dHkh7T9nxWZ608pizwsUbypSzZAiUw==} engines: {node: '>= 18'} @@ -4907,8 +5066,8 @@ packages: resolution: {integrity: sha512-JD6DerIKdJGmRp4jQyX5FlrQjA4tjOw1cvfsPAZXfOOEErMUHjPcPSICS+6WnM0nB0efSFARh0KAZss+bvExOA==} engines: {node: '>=14'} - '@oxc-project/types@0.130.0': - resolution: {integrity: sha512-ibD2usx9JRu7f5pu2tMKMI4cpA4NgXJQoYRP4pQ7Pxmn1l6k/53qWtQWZayhYy3X4QZkt90Ot+mJEaeXouio6Q==} + '@oxc-project/types@0.132.0': + resolution: {integrity: sha512-FESMOxil5Se014ui/Eq8fT5uHJo6nIRwH0PfJrZJXs6Gek3ZVFOrpUv3YIZT20m+extU98Hg1Ym72U58rlsxUQ==} '@oxc-project/types@0.94.0': resolution: {integrity: sha512-+UgQT/4o59cZfH6Cp7G0hwmqEQ0wE+AdIwhikdwnhWI9Dp8CgSY081+Q3O67/wq3VJu8mgUEB93J9EHHn70fOw==} @@ -5729,97 +5888,129 @@ packages: '@radix-ui/rect@1.1.1': resolution: {integrity: sha512-HPwpGIzkl28mWyZqG52jiqDJ12waP11Pa1lGoiyUkIEuMLBP0oeK/C89esbXrxsky5we7dfd8U58nm0SgAWpVw==} + '@raycast/api@1.104.18': + resolution: {integrity: sha512-Effu0wSTRwtW7VNjyrDtFNxMQ4BbtRFCIY00PbY4qa3yFPOE/CfbcZJbesyo3nYyuenedqeia/+PvLcieBUO4w==} + engines: {node: '>=22.22.2'} + hasBin: true + peerDependencies: + '@types/node': 22.19.17 + '@types/react': 19.0.10 + react-devtools: 6.1.1 + peerDependenciesMeta: + '@types/node': + optional: true + '@types/react': + optional: true + react-devtools: + optional: true + '@react-email/body@0.0.11': resolution: {integrity: sha512-ZSD2SxVSgUjHGrB0Wi+4tu3MEpB4fYSbezsFNEJk2xCWDBkFiOeEsjTmR5dvi+CxTK691hQTQlHv0XWuP7ENTg==} + deprecated: Package no longer supported. Contact Support at https://www.npmjs.com/support for more info. peerDependencies: react: ^18.0 || ^19.0 || ^19.0.0-rc '@react-email/button@0.1.0': resolution: {integrity: sha512-fg4LtgTu5zXxaRSly9cuv6sHVF/hi1lElbRaIA8EPx5coWOBhCto6rCPfawcXpaN2oER7rNHUrcNBkI+lz5F9A==} engines: {node: '>=18.0.0'} + deprecated: Package no longer supported. Contact Support at https://www.npmjs.com/support for more info. peerDependencies: react: ^18.0 || ^19.0 || ^19.0.0-rc '@react-email/code-block@0.1.0': resolution: {integrity: sha512-jSpHFsgqnQXxDIssE4gvmdtFncaFQz5D6e22BnVjcCPk/udK+0A9jRwGFEG8JD2si9ZXBmU4WsuqQEczuZn4ww==} engines: {node: '>=18.0.0'} + deprecated: Package no longer supported. Contact Support at https://www.npmjs.com/support for more info. peerDependencies: react: ^18.0 || ^19.0 || ^19.0.0-rc '@react-email/code-inline@0.0.5': resolution: {integrity: sha512-MmAsOzdJpzsnY2cZoPHFPk6uDO/Ncpb4Kh1hAt9UZc1xOW3fIzpe1Pi9y9p6wwUmpaeeDalJxAxH6/fnTquinA==} engines: {node: '>=18.0.0'} + deprecated: Package no longer supported. Contact Support at https://www.npmjs.com/support for more info. peerDependencies: react: ^18.0 || ^19.0 || ^19.0.0-rc '@react-email/column@0.0.13': resolution: {integrity: sha512-Lqq17l7ShzJG/d3b1w/+lVO+gp2FM05ZUo/nW0rjxB8xBICXOVv6PqjDnn3FXKssvhO5qAV20lHM6S+spRhEwQ==} engines: {node: '>=18.0.0'} + deprecated: Package no longer supported. Contact Support at https://www.npmjs.com/support for more info. peerDependencies: react: ^18.0 || ^19.0 || ^19.0.0-rc '@react-email/components@0.1.0': resolution: {integrity: sha512-Rx0eZk0XuzLKXC5NoMm8xuH72ALVsPYNb/BvcdCJx4EZAoVpQISb4sCqpo9blVYVIazNr4MqWroqFb3ZNrCLMQ==} engines: {node: '>=18.0.0'} + deprecated: Package no longer supported. Contact Support at https://www.npmjs.com/support for more info. peerDependencies: react: ^18.0 || ^19.0 || ^19.0.0-rc '@react-email/container@0.0.15': resolution: {integrity: sha512-Qo2IQo0ru2kZq47REmHW3iXjAQaKu4tpeq/M8m1zHIVwKduL2vYOBQWbC2oDnMtWPmkBjej6XxgtZByxM6cCFg==} engines: {node: '>=18.0.0'} + deprecated: Package no longer supported. Contact Support at https://www.npmjs.com/support for more info. peerDependencies: react: ^18.0 || ^19.0 || ^19.0.0-rc '@react-email/font@0.0.9': resolution: {integrity: sha512-4zjq23oT9APXkerqeslPH3OZWuh5X4crHK6nx82mVHV2SrLba8+8dPEnWbaACWTNjOCbcLIzaC9unk7Wq2MIXw==} + deprecated: Package no longer supported. Contact Support at https://www.npmjs.com/support for more info. peerDependencies: react: ^18.0 || ^19.0 || ^19.0.0-rc '@react-email/head@0.0.12': resolution: {integrity: sha512-X2Ii6dDFMF+D4niNwMAHbTkeCjlYYnMsd7edXOsi0JByxt9wNyZ9EnhFiBoQdqkE+SMDcu8TlNNttMrf5sJeMA==} engines: {node: '>=18.0.0'} + deprecated: Package no longer supported. Contact Support at https://www.npmjs.com/support for more info. peerDependencies: react: ^18.0 || ^19.0 || ^19.0.0-rc '@react-email/heading@0.0.15': resolution: {integrity: sha512-xF2GqsvBrp/HbRHWEfOgSfRFX+Q8I5KBEIG5+Lv3Vb2R/NYr0s8A5JhHHGf2pWBMJdbP4B2WHgj/VUrhy8dkIg==} engines: {node: '>=18.0.0'} + deprecated: Package no longer supported. Contact Support at https://www.npmjs.com/support for more info. peerDependencies: react: ^18.0 || ^19.0 || ^19.0.0-rc '@react-email/hr@0.0.11': resolution: {integrity: sha512-S1gZHVhwOsd1Iad5IFhpfICwNPMGPJidG/Uysy1AwmspyoAP5a4Iw3OWEpINFdgh9MHladbxcLKO2AJO+cA9Lw==} engines: {node: '>=18.0.0'} + deprecated: Package no longer supported. Contact Support at https://www.npmjs.com/support for more info. peerDependencies: react: ^18.0 || ^19.0 || ^19.0.0-rc '@react-email/html@0.0.11': resolution: {integrity: sha512-qJhbOQy5VW5qzU74AimjAR9FRFQfrMa7dn4gkEXKMB/S9xZN8e1yC1uA9C15jkXI/PzmJ0muDIWmFwatm5/+VA==} engines: {node: '>=18.0.0'} + deprecated: Package no longer supported. Contact Support at https://www.npmjs.com/support for more info. peerDependencies: react: ^18.0 || ^19.0 || ^19.0.0-rc '@react-email/img@0.0.11': resolution: {integrity: sha512-aGc8Y6U5C3igoMaqAJKsCpkbm1XjguQ09Acd+YcTKwjnC2+0w3yGUJkjWB2vTx4tN8dCqQCXO8FmdJpMfOA9EQ==} engines: {node: '>=18.0.0'} + deprecated: Package no longer supported. Contact Support at https://www.npmjs.com/support for more info. peerDependencies: react: ^18.0 || ^19.0 || ^19.0.0-rc '@react-email/link@0.0.12': resolution: {integrity: sha512-vF+xxQk2fGS1CN7UPQDbzvcBGfffr+GjTPNiWM38fhBfsLv6A/YUfaqxWlmL7zLzVmo0K2cvvV9wxlSyNba1aQ==} engines: {node: '>=18.0.0'} + deprecated: Package no longer supported. Contact Support at https://www.npmjs.com/support for more info. peerDependencies: react: ^18.0 || ^19.0 || ^19.0.0-rc '@react-email/markdown@0.0.15': resolution: {integrity: sha512-UQA9pVm5sbflgtg3EX3FquUP4aMBzmLReLbGJ6DZQZnAskBF36aI56cRykDq1o+1jT+CKIK1CducPYziaXliag==} engines: {node: '>=18.0.0'} + deprecated: Package no longer supported. Contact Support at https://www.npmjs.com/support for more info. peerDependencies: react: ^18.0 || ^19.0 || ^19.0.0-rc '@react-email/preview@0.0.13': resolution: {integrity: sha512-F7j9FJ0JN/A4d7yr+aw28p4uX7VLWs7hTHtLo7WRyw4G+Lit6Zucq4UWKRxJC8lpsUdzVmG7aBJnKOT+urqs/w==} engines: {node: '>=18.0.0'} + deprecated: Package no longer supported. Contact Support at https://www.npmjs.com/support for more info. peerDependencies: react: ^18.0 || ^19.0 || ^19.0.0-rc @@ -5833,24 +6024,28 @@ packages: '@react-email/row@0.0.12': resolution: {integrity: sha512-HkCdnEjvK3o+n0y0tZKXYhIXUNPDx+2vq1dJTmqappVHXS5tXS6W5JOPZr5j+eoZ8gY3PShI2LWj5rWF7ZEtIQ==} engines: {node: '>=18.0.0'} + deprecated: Package no longer supported. Contact Support at https://www.npmjs.com/support for more info. peerDependencies: react: ^18.0 || ^19.0 || ^19.0.0-rc '@react-email/section@0.0.16': resolution: {integrity: sha512-FjqF9xQ8FoeUZYKSdt8sMIKvoT9XF8BrzhT3xiFKdEMwYNbsDflcjfErJe3jb7Wj/es/lKTbV5QR1dnLzGpL3w==} engines: {node: '>=18.0.0'} + deprecated: Package no longer supported. Contact Support at https://www.npmjs.com/support for more info. peerDependencies: react: ^18.0 || ^19.0 || ^19.0.0-rc '@react-email/tailwind@1.0.5': resolution: {integrity: sha512-BH00cZSeFfP9HiDASl+sPHi7Hh77W5nzDgdnxtsVr/m3uQD9g180UwxcE3PhOfx0vRdLzQUU8PtmvvDfbztKQg==} engines: {node: '>=18.0.0'} + deprecated: Package no longer supported. Contact Support at https://www.npmjs.com/support for more info. peerDependencies: react: ^18.0 || ^19.0 || ^19.0.0-rc '@react-email/text@0.1.5': resolution: {integrity: sha512-o5PNHFSE085VMXayxH+SJ1LSOtGsTv+RpNKnTiJDrJUwoBu77G3PlKOsZZQHCNyD28WsQpl9v2WcJLbQudqwPg==} engines: {node: '>=18.0.0'} + deprecated: Package no longer supported. Contact Support at https://www.npmjs.com/support for more info. peerDependencies: react: ^18.0 || ^19.0 || ^19.0.0-rc @@ -5895,8 +6090,8 @@ packages: cpu: [arm64] os: [android] - '@rolldown/binding-android-arm64@1.0.1': - resolution: {integrity: sha512-fJI3I0r3C3Oj/zdBCpaCmBRZYf07xpaq4yCfDDoSFm+beWNzbIl26puW8RraUdugoJw/95zerNOn6jasAhzSmg==} + '@rolldown/binding-android-arm64@1.0.2': + resolution: {integrity: sha512-ZS4D1JPGn/MYQN/SYDWftIE/nVsM8j/AFOYEzAoOE2O3NktQOZru+/vYXGbR/qtdLdIfGCP0lcoJiYVzsEz+iQ==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] os: [android] @@ -5907,8 +6102,8 @@ packages: cpu: [arm64] os: [darwin] - '@rolldown/binding-darwin-arm64@1.0.1': - resolution: {integrity: sha512-cKnAhWEsV7TPcA/5EAteDp6KcJZBQ2G+BqE7zayMMi7kMvwRsbv7WT9aOnn0WNl4SKEIf43vjS31iUPu80nzXg==} + '@rolldown/binding-darwin-arm64@1.0.2': + resolution: {integrity: sha512-vdFA9+C/rekyGce7WqHs/xoT0ioZEWaOFyZLIV1mEeNFaFDUQrPIo8Vs2GvJ6eetb3rzDUtUBgzto3ExpXJB3w==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] os: [darwin] @@ -5919,8 +6114,8 @@ packages: cpu: [x64] os: [darwin] - '@rolldown/binding-darwin-x64@1.0.1': - resolution: {integrity: sha512-YKrVwQjIRBPo+5G/u03wGjbdy4q7pyzCe93DK9VJ7zkVmeg8LJ7GbgsiHWdR4xSoe4CAXRD7Bcjgbtr64bkXNg==} + '@rolldown/binding-darwin-x64@1.0.2': + resolution: {integrity: sha512-BewSOwTHazv77DTYiAZXSqqKZ4KP/KonFisDMVU7PImxoWfB2aepnPhd2E4SWz3zDzYgDNbs6jBmTdgNnF02GA==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [x64] os: [darwin] @@ -5931,8 +6126,8 @@ packages: cpu: [x64] os: [freebsd] - '@rolldown/binding-freebsd-x64@1.0.1': - resolution: {integrity: sha512-z/oBsREo46SsFqBwYtFe0kpJeBijAT48O/WXLI4suiCLBkr03RTtTJMCzSdDd2znlh8VJizL09XVkQgk8IZonw==} + '@rolldown/binding-freebsd-x64@1.0.2': + resolution: {integrity: sha512-m41o7M0YWtUdqk61Tb+jnKb2rN++iRdIASlExkUoKfIAH30DOHCB8fVLzSUpbWHHU8esmEioY62PxzexE8MBuA==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [x64] os: [freebsd] @@ -5943,8 +6138,8 @@ packages: cpu: [arm] os: [linux] - '@rolldown/binding-linux-arm-gnueabihf@1.0.1': - resolution: {integrity: sha512-ik8q7GM11zxvYxFc2PeDcT6TBvhCQMaUxfph/M5l9sKuTs/Sjg3L+Byw0F7w0ZVLBZmx30P+gG0ECzzN+MFcmQ==} + '@rolldown/binding-linux-arm-gnueabihf@1.0.2': + resolution: {integrity: sha512-jcojB9H7W/jS29pMKWAK1N+fU99vXodHDTatS3b3y/XSOCiHo0kkA74pL3jJmkoQtYpOCxDvaKs1fo2Ij/1X5w==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm] os: [linux] @@ -5955,8 +6150,8 @@ packages: cpu: [arm64] os: [linux] - '@rolldown/binding-linux-arm64-gnu@1.0.1': - resolution: {integrity: sha512-QoSx2EkyrrdZ6kcyE8stqZ62t0Yra8Fs5ia9lOxJrh6TMQJK7gQKmscdTHf7pOXKREKrVwOtJcQG3qVSfc866A==} + '@rolldown/binding-linux-arm64-gnu@1.0.2': + resolution: {integrity: sha512-1jn6qDU5iiOgFgygDzKUuKP0maTi0/f1+sBLgvij/76C77Nm3ts6ufz9Bjg5q5dduxiUIxtq86JIoBvo1xQ4Ig==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] os: [linux] @@ -5967,20 +6162,20 @@ packages: cpu: [arm64] os: [linux] - '@rolldown/binding-linux-arm64-musl@1.0.1': - resolution: {integrity: sha512-uwNwFpwKeNiZawfAWBgg0VIztPTV3ihhh1vV334h9ivnNLorxnQMU6Fz8wG1Zb4Qh9LC1/MkcyT3YlDXG3Rsgg==} + '@rolldown/binding-linux-arm64-musl@1.0.2': + resolution: {integrity: sha512-QVLO/czFMdoMFSqlX3bcswcJNm/23r+qoa/jgtmFc/qEp6/jXmIkDjF/XIo8dPfGaiwy1xfQn8o77L79GeXFgw==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] os: [linux] - '@rolldown/binding-linux-ppc64-gnu@1.0.1': - resolution: {integrity: sha512-zY1bul7OWr7DFBiJ++wofXvnr8B45ce3QsQUhKrIhXsygAh7bTkwyeM1bi1a2g5C/yC/N8TZyGDEoMfm/l9mpg==} + '@rolldown/binding-linux-ppc64-gnu@1.0.2': + resolution: {integrity: sha512-hgO5Abm0w5UL6FEa2iFnZqo2KlK7TQ5QhV5x09hujBf7t5KzHQ1VmfPuTpqRy/rNlSxua3eWH374xxiVrP+lcA==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [ppc64] os: [linux] - '@rolldown/binding-linux-s390x-gnu@1.0.1': - resolution: {integrity: sha512-0frlsT/f4Ft6I7SMESTKnF3cZsdicQn1dCMkF/jT9wDLE+gGoiQfv1nmT9e+s7s/fekvvy6tZM2jHvI2tkbJDQ==} + '@rolldown/binding-linux-s390x-gnu@1.0.2': + resolution: {integrity: sha512-fy8rXxuYEu602abC8MUNaPjYLIFzReOaEIEMKMUa0rFEUxNpVXhs15KSSQ4qlqSaM7B6rcj9rDZgADh/IGDzLQ==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [s390x] os: [linux] @@ -5991,8 +6186,8 @@ packages: cpu: [x64] os: [linux] - '@rolldown/binding-linux-x64-gnu@1.0.1': - resolution: {integrity: sha512-XABVmGp9Tg0WspTVvwduTc4fpqy6JnAUrSQe6OuyqD/03nI7r0O9OWUkMIwFrjKAIqolvqoA4ZrJppgwE0Gxmw==} + '@rolldown/binding-linux-x64-gnu@1.0.2': + resolution: {integrity: sha512-0+bOkiQ779+r1WpoHOWHqncvyySci0vKph+myNDYb+im6meJAzHQXay6oEgnkHuUGouM1LKTZwqKpBow6Kj7CQ==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [x64] os: [linux] @@ -6003,8 +6198,8 @@ packages: cpu: [x64] os: [linux] - '@rolldown/binding-linux-x64-musl@1.0.1': - resolution: {integrity: sha512-bV4fzswuzVcKD90o/VM6QqKxnxlDq0g2BISDLNVmxrnhpv1DDbyPhCIjYfvzYLV+MvkKKnQt2Q6AO86SEBULUQ==} + '@rolldown/binding-linux-x64-musl@1.0.2': + resolution: {integrity: sha512-mjSkrzZK5Qsl0a9d1JgILOiuZOSDTVdKENcSXBoqbzSrspLR/4/IRVDo5wd2GgZjNss/viBFJdeq+j7qH2nypw==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [x64] os: [linux] @@ -6015,8 +6210,8 @@ packages: cpu: [arm64] os: [openharmony] - '@rolldown/binding-openharmony-arm64@1.0.1': - resolution: {integrity: sha512-/Mh0Zhq3OP7fVs0kcQHZP6lZEthMGTaSf8UBQYSFEZDWGXXlEC+nJ6EqenaK2t4LBXMe3A+K/G2BVXXdtOr4PQ==} + '@rolldown/binding-openharmony-arm64@1.0.2': + resolution: {integrity: sha512-1v5vHasdfQAZoEHakBV72LIFAC9JjnymsiKxp+GEr/ma3+NJCPSaYK+qavInOovJkgwFrs7GccX2d6IgDA3Z5w==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] os: [openharmony] @@ -6026,8 +6221,8 @@ packages: engines: {node: '>=14.0.0'} cpu: [wasm32] - '@rolldown/binding-wasm32-wasi@1.0.1': - resolution: {integrity: sha512-+1xc9X45l8ufsBAm6Gjvx2qDRIY9lTVt0cgWNcJ+1gdhXvkbxePA60yRTwSTuXL09CMhyJmjpV7E3NoyxbqFQQ==} + '@rolldown/binding-wasm32-wasi@1.0.2': + resolution: {integrity: sha512-mb1VobWn6NheziTk5/WEaR6AKVbrwT5sOi6C7zk3gy/pD1qtJfU1j4PgTo2NJnOtbL9Dl3Aeei8w9jJ7qC2jZQ==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [wasm32] @@ -6037,8 +6232,8 @@ packages: cpu: [arm64] os: [win32] - '@rolldown/binding-win32-arm64-msvc@1.0.1': - resolution: {integrity: sha512-1D+UqZdfnuR+Jy1GgMJwi85bD40H21uNmOPRWQhw4oRSuolZ/B5rixZ45DK2KXOTCvmVCecauWgEhbw8bI7tOw==} + '@rolldown/binding-win32-arm64-msvc@1.0.2': + resolution: {integrity: sha512-SqKonF56vA/L2yHwHYcEp2P34URpOZ7d1fS635cTkpDnUtEGdUbhI6NzsPdqeSWvAAeGDrxjWjNmibDIdFf9/A==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] os: [win32] @@ -6055,8 +6250,8 @@ packages: cpu: [x64] os: [win32] - '@rolldown/binding-win32-x64-msvc@1.0.1': - resolution: {integrity: sha512-INAycaWuhlOK3wk4mRHGsdgwYWmd9cChdPdE9bwWmy6rn9VqVNYNFGhOdXrofXUxwHIncSiPNb8tNm8knDVIeQ==} + '@rolldown/binding-win32-x64-msvc@1.0.2': + resolution: {integrity: sha512-v7qRI7gXLRINcOGXt+7YmAZ6iFuyZVMIoXAxhd8oP+DR9dLfL9GfNIx7PLMxmhZdvq8waUJBQiWN9EKNy+TRBQ==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [x64] os: [win32] @@ -7191,10 +7386,10 @@ packages: react-dom: optional: true - '@storybook/builder-vite@10.5.0-alpha.0': - resolution: {integrity: sha512-4iCteRr03HHLbeD3osey14D8ZQS8hu5OkamlmARR4JLJUF/o6hjxckZ9xD+Ci7jjeGrlGLom71Y+TneN1iLx4g==} + '@storybook/builder-vite@10.5.0-alpha.2': + resolution: {integrity: sha512-yzjn/TcKNSOXvdn5S0A5RrkSCtsYa0Ath3aL0EVfgkWbPuwHwOD/u3h91CVWRpjGHAOctjhk6cX1nJJQwDx1kQ==} peerDependencies: - storybook: ^10.5.0-alpha.0 + storybook: ^10.5.0-alpha.2 vite: ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0 '@storybook/core@8.6.12': @@ -7205,12 +7400,12 @@ packages: prettier: optional: true - '@storybook/csf-plugin@10.5.0-alpha.0': - resolution: {integrity: sha512-XO6PgW7aldty1BsvwL7HFljELSJK4noZsGqgt+nHXvq46mXyl2OXJUpO+z06DoN8KabQGup//y49aYh4uBm/uw==} + '@storybook/csf-plugin@10.5.0-alpha.2': + resolution: {integrity: sha512-U2eLlrx3PrzwSbUSa8N1rScUqo+QD3T0yATfneWjiKfpQ5gL1O5dK2U/AbfqIdXzLEgco7NDz8iGx45CtFJlmA==} peerDependencies: esbuild: '*' rollup: '*' - storybook: ^10.5.0-alpha.0 + storybook: ^10.5.0-alpha.2 vite: '*' webpack: '*' peerDependenciesMeta: @@ -9160,6 +9355,7 @@ packages: aws-sdk@2.1692.0: resolution: {integrity: sha512-x511uiJ/57FIsbgUe5csJ13k3uzu25uWQE+XqfBis/sB0SFoiElJWXRkgEAUh0U6n40eT3ay5Ue4oPkRMu1LYw==} engines: {node: '>= 10.0.0'} + deprecated: The AWS SDK for JavaScript (v2) has reached end-of-support, and no longer receives updates. Please migrate your code to use AWS SDK for JavaScript (v3). More info https://a.co/cUPnyil aws-ssl-profiles@1.1.2: resolution: {integrity: sha512-NZKeq9AfyQvEeNlN0zSYAaWrmBffJh3IELMZfRpJVWgrpEbtEpnjvzqBPf+mxoI287JohRDoa+/nsfqqiZmF6g==} @@ -9498,6 +9694,9 @@ packages: character-reference-invalid@2.0.1: resolution: {integrity: sha512-iBZ4F4wRbyORVsu0jPV7gXkOsGYjGHPmAyv+HiHG8gi5PtC9KI2j1+v8/tlibRvjoWX027ypmG/n0HtO5t7unw==} + chardet@2.1.1: + resolution: {integrity: sha512-PsezH1rqdV9VvyNhxxOW32/d75r01NY7TQCmOqomRo15ZSOKbpTFVsfjghxo6JloQUCGnH4k1LGu0R4yCLlWQQ==} + check-error@2.1.1: resolution: {integrity: sha512-OAlb+T7V4Op9OwdkjmguYRqncdlx5JiofwOAUkmTF+jNdHwzTaTs4sRAGpzLF3oOz5xAyDGrPgeIDFQmDOTiJw==} engines: {node: '>= 16'} @@ -9570,6 +9769,10 @@ packages: resolution: {integrity: sha512-ywqV+5MmyL4E7ybXgKys4DugZbX0FC6LnwrhjuykIjnK9k8OQacQ7axGKnjDXWNhns0xot3bZI5h55H8yo9cJg==} engines: {node: '>=6'} + cli-width@4.1.0: + resolution: {integrity: sha512-ouuZd4/dm2Sw5Gmqy6bGyNNNe1qt9RpmxveLSO7KcgsTnU7RXfsw+/bukWGo1abgBiMAic068rclZsO4IWmmxQ==} + engines: {node: '>= 12'} + client-only@0.0.1: resolution: {integrity: sha512-IV3Ou0jSMzZrd3pZ48nLkT9DA7Ag1pnPzaiQhpW7c3RbcqqzvzzVu+L8gfqMp/8IM2MQtSiqaCxrrcfu8I8rMA==} @@ -11019,6 +11222,9 @@ packages: fast-levenshtein@2.0.6: resolution: {integrity: sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==} + fast-levenshtein@3.0.0: + resolution: {integrity: sha512-hKKNajm46uNmTlhHSyZkmToAc56uZJwYq7yrciZjqOxnlfQwERDQJmHPUp7m1m9wx8vgOe8IaCKZ5Kv2k1DdCQ==} + fast-safe-stringify@2.1.1: resolution: {integrity: sha512-W+KJc2dmILlPplD/H4K9l9LcAHAfPtP6BY84uVLXQ6Evcz9Lcg33Y2z1IVblT6xdY54PXYVHEv+0Wpq8Io6zkA==} @@ -11040,6 +11246,10 @@ packages: resolution: {integrity: sha512-Z7Fh2nVQSb2d+poDViM063ix2ZGt9jmY1nWhPfHBOK2Hgnb/OW3P4Et3P/81SEej0J7QbWtJqxO05h8QYfK7LQ==} hasBin: true + fastest-levenshtein@1.0.16: + resolution: {integrity: sha512-eRnCtTTtGZFpQCwhJiUOuxPQWRXVKYDn0b2PeHfXL6/Zi53SLAzAHfVhVWK2AryC/WH05kGfxhFIPvTF0SXQzg==} + engines: {node: '>= 4.9.1'} + fastq@1.19.1: resolution: {integrity: sha512-GwLTyxkCXjXbxqIhTsMI2Nui8huMPtnxg7krajPJAjnEG/iiOS7i+zCtWGZR9G0NBKbXKh6X9m9UIsYX/N6vvQ==} @@ -12856,6 +13066,10 @@ packages: resolution: {integrity: sha512-oRjTw/97aTBN0RHbYCdtF1MQfvusSIBQM0IZEgzl6426+8jSC0nF1a/GmnVLpfB9yyr6g6FTqWqiZVbxrtaCIg==} engines: {node: 18 || 20 || >=22} + minimatch@10.2.5: + resolution: {integrity: sha512-MULkVLfKGYDFYejP07QOurDLLQpcjk7Fw+7jXS2R2czRQzR56yHRveU5NDJEOviH+hETZKSkIk5c+T23GjFUMg==} + engines: {node: 18 || 20 || >=22} + minimatch@3.1.2: resolution: {integrity: sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==} @@ -13005,6 +13219,10 @@ packages: resolution: {integrity: sha512-71ippSywq5Yb7/tVYyGbkBggbU8H3u5Rz56fH60jGFgr8uHwxs+aSKeqmluIVzM0m0kB7xQjKS6qPfd0b2ZoqQ==} hasBin: true + mute-stream@2.0.0: + resolution: {integrity: sha512-WWdIxpyjEn+FhQJQQv9aQAYlHoNVdzIzUySNV1gHUPDSdZJ3yZn7pAAbQcV7B56Mvu881q9FZV+0Vx2xC44VWA==} + engines: {node: ^18.17.0 || >=20.5.0} + mux-embed@5.9.0: resolution: {integrity: sha512-wmunL3uoPhma/tWy8PrDPZkvJpXvSFBwbD3KkC4PG8Ztjfb1X3hRJwGUAQyRz7z99b/ovLm2UTTitrkvStjH4w==} @@ -13631,6 +13849,10 @@ packages: resolution: {integrity: sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==} engines: {node: '>=12'} + picomatch@4.0.4: + resolution: {integrity: sha512-QP88BAKvMam/3NxH6vj2o21R6MjxZUAd6nlwAS/pnGvN9IVLocLHxGYIzFhg6fUQ+5th6P4dv4eW9jX3DSIj7A==} + engines: {node: '>=12'} + pify@2.3.0: resolution: {integrity: sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==} engines: {node: '>=0.10.0'} @@ -14125,6 +14347,10 @@ packages: react: '>=16.14.0' react-dom: '>=16.14.0' + react@19.0.0: + resolution: {integrity: sha512-V8AVnmPIICiWpGfm6GLzCR/W5FXLchHop40W4nXBmdlEceh16rCN8O8LNWm5bh5XUX91fh7KpA+W0TgMKmgTpQ==} + engines: {node: '>=0.10.0'} + react@19.1.1: resolution: {integrity: sha512-w8nqGImo45dmMIfljjMwOGtbmC/mk4CMYhWIicdSflH91J9TyCyczcPFXJzrZ/ZXcgGRFeP6BU0BEJTw6tZdfQ==} engines: {node: '>=0.10.0'} @@ -14382,8 +14608,8 @@ packages: engines: {node: ^20.19.0 || >=22.12.0} hasBin: true - rolldown@1.0.1: - resolution: {integrity: sha512-X0KQHljNnEkWNqqiz9zJrGunh1B0HgOxLXvnFpCOcadzcy5qohZ3tqMEUg00vncoRovXuK3ZqCT9KnnKzoInFQ==} + rolldown@1.0.2: + resolution: {integrity: sha512-oZx5zVDtVB44AW3eaifgDml1gWRDZGvjcfdxonE4swNPG98PrrXjaO/KrnUjzlMnztCCRVlUueA1kCXhARGk6g==} engines: {node: ^20.19.0 || >=22.12.0} hasBin: true @@ -14522,6 +14748,11 @@ packages: engines: {node: '>=10'} hasBin: true + semver@7.8.1: + resolution: {integrity: sha512-rkVq3IXh+4FDGch+KwzX3aV9W3kO54GyEgpvBzSyctDA6Xtd7RJQV1xmXbeQp5v7+VzLOfVqiutSE6GICgPFvg==} + engines: {node: '>=10'} + hasBin: true + send@0.19.0: resolution: {integrity: sha512-dW41u5VfLXu8SJh5bwRmyYUbAoSB3c9uQh6L8h/KtsFREPWpbX1lrljJo186Jc4nmci/sGUZ9a0a0J2zgfq2hw==} engines: {node: '>= 0.8.0'} @@ -15231,6 +15462,10 @@ packages: resolution: {integrity: sha512-j2Zq4NyQYG5XMST4cbs02Ak8iJUdxRM0XI5QyxXuZOzKOINmWurp3smXu3y5wDcJrptwpSjgXHzIQxR0omXljQ==} engines: {node: '>=12.0.0'} + tinyglobby@0.2.16: + resolution: {integrity: sha512-pn99VhoACYR8nFHhxqix+uvsbXineAasWm5ojXoN8xEwK5Kd3/TrhNn1wByuD52UxWRLy8pu+kRMniEi6Eq9Zg==} + engines: {node: '>=12.0.0'} + tinypool@1.0.2: resolution: {integrity: sha512-al6n+QEANGFOMf/dmUMsuS5/r9B06uwlyNjZZql/zv8J7ybHCgoihBNORZCY2mzUuAnomQa2JdhyHKzZxPCrFA==} engines: {node: ^18.0.0 || >=20.0.0} @@ -16408,6 +16643,10 @@ packages: '@cloudflare/workers-types': optional: true + wrap-ansi@6.2.0: + resolution: {integrity: sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==} + engines: {node: '>=8'} + wrap-ansi@7.0.0: resolution: {integrity: sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==} engines: {node: '>=10'} @@ -16557,6 +16796,10 @@ packages: resolution: {integrity: sha512-AyeEbWOu/TAXdxlV9wmGcR0+yh2j3vYPGOECcIj2S7MkrLyC7ne+oye2BKTItt0ii2PHk4cDy+95+LshzbXnGg==} engines: {node: '>=12.20'} + yoctocolors-cjs@2.1.3: + resolution: {integrity: sha512-U/PBtDf35ff0D8X8D0jfdzHYEPFxAI7jJlxZXwCSez5M3190m+QobIfh+sWDWSHMCWWJN2AWamkegn6vr6YBTw==} + engines: {node: '>=18'} + yoctocolors@2.1.1: resolution: {integrity: sha512-GQHQqAopRhwU8Kt1DDM8NjibDXHC8eoh1erhGAJPEyveY9qqVeXvVikNKrDz69sHowPMorbPUrH/mx8c50eiBQ==} engines: {node: '>=18'} @@ -19341,6 +19584,131 @@ snapshots: '@img/sharp-win32-x64@0.34.5': optional: true + '@inquirer/ansi@1.0.2': {} + + '@inquirer/checkbox@4.3.2(@types/node@22.15.17)': + dependencies: + '@inquirer/ansi': 1.0.2 + '@inquirer/core': 10.3.2(@types/node@22.15.17) + '@inquirer/figures': 1.0.15 + '@inquirer/type': 3.0.10(@types/node@22.15.17) + yoctocolors-cjs: 2.1.3 + optionalDependencies: + '@types/node': 22.15.17 + + '@inquirer/confirm@5.1.21(@types/node@22.15.17)': + dependencies: + '@inquirer/core': 10.3.2(@types/node@22.15.17) + '@inquirer/type': 3.0.10(@types/node@22.15.17) + optionalDependencies: + '@types/node': 22.15.17 + + '@inquirer/core@10.3.2(@types/node@22.15.17)': + dependencies: + '@inquirer/ansi': 1.0.2 + '@inquirer/figures': 1.0.15 + '@inquirer/type': 3.0.10(@types/node@22.15.17) + cli-width: 4.1.0 + mute-stream: 2.0.0 + signal-exit: 4.1.0 + wrap-ansi: 6.2.0 + yoctocolors-cjs: 2.1.3 + optionalDependencies: + '@types/node': 22.15.17 + + '@inquirer/editor@4.2.23(@types/node@22.15.17)': + dependencies: + '@inquirer/core': 10.3.2(@types/node@22.15.17) + '@inquirer/external-editor': 1.0.3(@types/node@22.15.17) + '@inquirer/type': 3.0.10(@types/node@22.15.17) + optionalDependencies: + '@types/node': 22.15.17 + + '@inquirer/expand@4.0.23(@types/node@22.15.17)': + dependencies: + '@inquirer/core': 10.3.2(@types/node@22.15.17) + '@inquirer/type': 3.0.10(@types/node@22.15.17) + yoctocolors-cjs: 2.1.3 + optionalDependencies: + '@types/node': 22.15.17 + + '@inquirer/external-editor@1.0.3(@types/node@22.15.17)': + dependencies: + chardet: 2.1.1 + iconv-lite: 0.7.0 + optionalDependencies: + '@types/node': 22.15.17 + + '@inquirer/figures@1.0.15': {} + + '@inquirer/input@4.3.1(@types/node@22.15.17)': + dependencies: + '@inquirer/core': 10.3.2(@types/node@22.15.17) + '@inquirer/type': 3.0.10(@types/node@22.15.17) + optionalDependencies: + '@types/node': 22.15.17 + + '@inquirer/number@3.0.23(@types/node@22.15.17)': + dependencies: + '@inquirer/core': 10.3.2(@types/node@22.15.17) + '@inquirer/type': 3.0.10(@types/node@22.15.17) + optionalDependencies: + '@types/node': 22.15.17 + + '@inquirer/password@4.0.23(@types/node@22.15.17)': + dependencies: + '@inquirer/ansi': 1.0.2 + '@inquirer/core': 10.3.2(@types/node@22.15.17) + '@inquirer/type': 3.0.10(@types/node@22.15.17) + optionalDependencies: + '@types/node': 22.15.17 + + '@inquirer/prompts@7.10.1(@types/node@22.15.17)': + dependencies: + '@inquirer/checkbox': 4.3.2(@types/node@22.15.17) + '@inquirer/confirm': 5.1.21(@types/node@22.15.17) + '@inquirer/editor': 4.2.23(@types/node@22.15.17) + '@inquirer/expand': 4.0.23(@types/node@22.15.17) + '@inquirer/input': 4.3.1(@types/node@22.15.17) + '@inquirer/number': 3.0.23(@types/node@22.15.17) + '@inquirer/password': 4.0.23(@types/node@22.15.17) + '@inquirer/rawlist': 4.1.11(@types/node@22.15.17) + '@inquirer/search': 3.2.2(@types/node@22.15.17) + '@inquirer/select': 4.4.2(@types/node@22.15.17) + optionalDependencies: + '@types/node': 22.15.17 + + '@inquirer/rawlist@4.1.11(@types/node@22.15.17)': + dependencies: + '@inquirer/core': 10.3.2(@types/node@22.15.17) + '@inquirer/type': 3.0.10(@types/node@22.15.17) + yoctocolors-cjs: 2.1.3 + optionalDependencies: + '@types/node': 22.15.17 + + '@inquirer/search@3.2.2(@types/node@22.15.17)': + dependencies: + '@inquirer/core': 10.3.2(@types/node@22.15.17) + '@inquirer/figures': 1.0.15 + '@inquirer/type': 3.0.10(@types/node@22.15.17) + yoctocolors-cjs: 2.1.3 + optionalDependencies: + '@types/node': 22.15.17 + + '@inquirer/select@4.4.2(@types/node@22.15.17)': + dependencies: + '@inquirer/ansi': 1.0.2 + '@inquirer/core': 10.3.2(@types/node@22.15.17) + '@inquirer/figures': 1.0.15 + '@inquirer/type': 3.0.10(@types/node@22.15.17) + yoctocolors-cjs: 2.1.3 + optionalDependencies: + '@types/node': 22.15.17 + + '@inquirer/type@3.0.10(@types/node@22.15.17)': + optionalDependencies: + '@types/node': 22.15.17 + '@internationalized/date@3.8.0': dependencies: '@swc/helpers': 0.5.17 @@ -19962,7 +20330,7 @@ snapshots: '@npmcli/fs@3.1.1': dependencies: - semver: 7.7.3 + semver: 7.7.4 '@npmcli/git@5.0.8': dependencies: @@ -19996,7 +20364,7 @@ snapshots: json-parse-even-better-errors: 3.0.2 pacote: 18.0.6 proc-log: 4.2.0 - semver: 7.7.3 + semver: 7.7.4 transitivePeerDependencies: - bluebird - supports-color @@ -20013,7 +20381,7 @@ snapshots: json-parse-even-better-errors: 3.0.2 normalize-package-data: 6.0.2 proc-log: 4.2.0 - semver: 7.7.3 + semver: 7.7.4 transitivePeerDependencies: - bluebird @@ -20075,6 +20443,27 @@ snapshots: dependencies: consola: 3.4.2 + '@oclif/core@4.11.4': + dependencies: + ansi-escapes: 4.3.2 + ansis: 3.17.0 + clean-stack: 3.0.1 + cli-spinners: 2.9.2 + debug: 4.4.3(supports-color@8.1.1) + ejs: 3.1.10 + get-package-type: 0.1.0 + indent-string: 4.0.0 + is-wsl: 2.2.0 + lilconfig: 3.1.3 + minimatch: 10.2.5 + semver: 7.8.1 + string-width: 4.2.3 + supports-color: 8.1.1 + tinyglobby: 0.2.16 + widest-line: 3.1.0 + wordwrap: 1.0.0 + wrap-ansi: 7.0.0 + '@oclif/core@4.8.1': dependencies: ansi-escapes: 4.3.2 @@ -20096,9 +20485,27 @@ snapshots: wordwrap: 1.0.0 wrap-ansi: 7.0.0 + '@oclif/plugin-autocomplete@3.2.49': + dependencies: + '@oclif/core': 4.11.4 + ansis: 3.17.0 + debug: 4.4.3(supports-color@8.1.1) + ejs: 3.1.10 + transitivePeerDependencies: + - supports-color + '@oclif/plugin-help@6.2.37': dependencies: - '@oclif/core': 4.8.1 + '@oclif/core': 4.11.4 + + '@oclif/plugin-not-found@3.2.86(@types/node@22.15.17)': + dependencies: + '@inquirer/prompts': 7.10.1(@types/node@22.15.17) + '@oclif/core': 4.11.4 + ansis: 3.17.0 + fast-levenshtein: 3.0.0 + transitivePeerDependencies: + - '@types/node' '@octokit/app@15.1.6': dependencies: @@ -20496,7 +20903,7 @@ snapshots: '@opentelemetry/semantic-conventions@1.37.0': {} - '@oxc-project/types@0.130.0': {} + '@oxc-project/types@0.132.0': {} '@oxc-project/types@0.94.0': {} @@ -21422,6 +21829,19 @@ snapshots: '@radix-ui/rect@1.1.1': {} + '@raycast/api@1.104.18(@types/node@22.15.17)': + dependencies: + '@oclif/core': 4.11.4 + '@oclif/plugin-autocomplete': 3.2.49 + '@oclif/plugin-help': 6.2.37 + '@oclif/plugin-not-found': 3.2.86(@types/node@22.15.17) + esbuild: 0.27.4 + react: 19.0.0 + optionalDependencies: + '@types/node': 22.15.17 + transitivePeerDependencies: + - supports-color + '@react-email/body@0.0.11(react@19.1.1)': dependencies: react: 19.1.1 @@ -21681,67 +22101,67 @@ snapshots: '@rolldown/binding-android-arm64@1.0.0-beta.42': optional: true - '@rolldown/binding-android-arm64@1.0.1': + '@rolldown/binding-android-arm64@1.0.2': optional: true '@rolldown/binding-darwin-arm64@1.0.0-beta.42': optional: true - '@rolldown/binding-darwin-arm64@1.0.1': + '@rolldown/binding-darwin-arm64@1.0.2': optional: true '@rolldown/binding-darwin-x64@1.0.0-beta.42': optional: true - '@rolldown/binding-darwin-x64@1.0.1': + '@rolldown/binding-darwin-x64@1.0.2': optional: true '@rolldown/binding-freebsd-x64@1.0.0-beta.42': optional: true - '@rolldown/binding-freebsd-x64@1.0.1': + '@rolldown/binding-freebsd-x64@1.0.2': optional: true '@rolldown/binding-linux-arm-gnueabihf@1.0.0-beta.42': optional: true - '@rolldown/binding-linux-arm-gnueabihf@1.0.1': + '@rolldown/binding-linux-arm-gnueabihf@1.0.2': optional: true '@rolldown/binding-linux-arm64-gnu@1.0.0-beta.42': optional: true - '@rolldown/binding-linux-arm64-gnu@1.0.1': + '@rolldown/binding-linux-arm64-gnu@1.0.2': optional: true '@rolldown/binding-linux-arm64-musl@1.0.0-beta.42': optional: true - '@rolldown/binding-linux-arm64-musl@1.0.1': + '@rolldown/binding-linux-arm64-musl@1.0.2': optional: true - '@rolldown/binding-linux-ppc64-gnu@1.0.1': + '@rolldown/binding-linux-ppc64-gnu@1.0.2': optional: true - '@rolldown/binding-linux-s390x-gnu@1.0.1': + '@rolldown/binding-linux-s390x-gnu@1.0.2': optional: true '@rolldown/binding-linux-x64-gnu@1.0.0-beta.42': optional: true - '@rolldown/binding-linux-x64-gnu@1.0.1': + '@rolldown/binding-linux-x64-gnu@1.0.2': optional: true '@rolldown/binding-linux-x64-musl@1.0.0-beta.42': optional: true - '@rolldown/binding-linux-x64-musl@1.0.1': + '@rolldown/binding-linux-x64-musl@1.0.2': optional: true '@rolldown/binding-openharmony-arm64@1.0.0-beta.42': optional: true - '@rolldown/binding-openharmony-arm64@1.0.1': + '@rolldown/binding-openharmony-arm64@1.0.2': optional: true '@rolldown/binding-wasm32-wasi@1.0.0-beta.42': @@ -21749,7 +22169,7 @@ snapshots: '@napi-rs/wasm-runtime': 1.0.6 optional: true - '@rolldown/binding-wasm32-wasi@1.0.1': + '@rolldown/binding-wasm32-wasi@1.0.2': dependencies: '@emnapi/core': 1.10.0 '@emnapi/runtime': 1.10.0 @@ -21759,7 +22179,7 @@ snapshots: '@rolldown/binding-win32-arm64-msvc@1.0.0-beta.42': optional: true - '@rolldown/binding-win32-arm64-msvc@1.0.1': + '@rolldown/binding-win32-arm64-msvc@1.0.2': optional: true '@rolldown/binding-win32-ia32-msvc@1.0.0-beta.42': @@ -21768,7 +22188,7 @@ snapshots: '@rolldown/binding-win32-x64-msvc@1.0.0-beta.42': optional: true - '@rolldown/binding-win32-x64-msvc@1.0.1': + '@rolldown/binding-win32-x64-msvc@1.0.2': optional: true '@rolldown/pluginutils@1.0.0': {} @@ -23081,11 +23501,11 @@ snapshots: dependencies: solid-js: 1.9.6 - '@solidjs/start@1.1.3(@testing-library/jest-dom@6.5.0)(@types/node@22.15.17)(jiti@2.6.1)(lightningcss@1.32.0)(solid-js@1.9.6)(terser@5.44.0)(vinxi@0.5.6(@planetscale/database@1.19.0)(@types/node@22.15.17)(db0@0.3.2(drizzle-orm@0.44.6(@cloudflare/workers-types@4.20250507.0)(@opentelemetry/api@1.9.0)(@planetscale/database@1.19.0)(bun-types@1.3.14)(mysql2@3.15.2))(mysql2@3.15.2))(drizzle-orm@0.44.6(@cloudflare/workers-types@4.20250507.0)(@opentelemetry/api@1.9.0)(@planetscale/database@1.19.0)(bun-types@1.3.14)(mysql2@3.15.2))(encoding@0.1.13)(ioredis@5.6.1)(jiti@2.6.1)(lightningcss@1.32.0)(mysql2@3.15.2)(rolldown@1.0.1)(terser@5.44.0)(xml2js@0.6.2)(yaml@2.8.1))(vite@6.3.5(@types/node@22.15.17)(jiti@2.6.1)(lightningcss@1.32.0)(terser@5.44.0)(yaml@2.8.1))(yaml@2.8.1)': + '@solidjs/start@1.1.3(@testing-library/jest-dom@6.5.0)(@types/node@22.15.17)(jiti@2.6.1)(lightningcss@1.32.0)(solid-js@1.9.6)(terser@5.44.0)(vinxi@0.5.6(@planetscale/database@1.19.0)(@types/node@22.15.17)(db0@0.3.2(drizzle-orm@0.44.6(@cloudflare/workers-types@4.20250507.0)(@opentelemetry/api@1.9.0)(@planetscale/database@1.19.0)(bun-types@1.3.14)(mysql2@3.15.2))(mysql2@3.15.2))(drizzle-orm@0.44.6(@cloudflare/workers-types@4.20250507.0)(@opentelemetry/api@1.9.0)(@planetscale/database@1.19.0)(bun-types@1.3.14)(mysql2@3.15.2))(encoding@0.1.13)(ioredis@5.6.1)(jiti@2.6.1)(lightningcss@1.32.0)(mysql2@3.15.2)(rolldown@1.0.2)(terser@5.44.0)(xml2js@0.6.2)(yaml@2.8.1))(vite@6.3.5(@types/node@22.15.17)(jiti@2.6.1)(lightningcss@1.32.0)(terser@5.44.0)(yaml@2.8.1))(yaml@2.8.1)': dependencies: '@tanstack/server-functions-plugin': 1.119.2(@types/node@22.15.17)(jiti@2.6.1)(lightningcss@1.32.0)(terser@5.44.0)(yaml@2.8.1) - '@vinxi/plugin-directives': 0.5.1(vinxi@0.5.6(@planetscale/database@1.19.0)(@types/node@22.15.17)(db0@0.3.2(drizzle-orm@0.44.6(@cloudflare/workers-types@4.20250507.0)(@opentelemetry/api@1.9.0)(@planetscale/database@1.19.0)(bun-types@1.3.14)(mysql2@3.15.2))(mysql2@3.15.2))(drizzle-orm@0.44.6(@cloudflare/workers-types@4.20250507.0)(@opentelemetry/api@1.9.0)(@planetscale/database@1.19.0)(bun-types@1.3.14)(mysql2@3.15.2))(encoding@0.1.13)(ioredis@5.6.1)(jiti@2.6.1)(lightningcss@1.32.0)(mysql2@3.15.2)(rolldown@1.0.1)(terser@5.44.0)(xml2js@0.6.2)(yaml@2.8.1)) - '@vinxi/server-components': 0.5.1(vinxi@0.5.6(@planetscale/database@1.19.0)(@types/node@22.15.17)(db0@0.3.2(drizzle-orm@0.44.6(@cloudflare/workers-types@4.20250507.0)(@opentelemetry/api@1.9.0)(@planetscale/database@1.19.0)(bun-types@1.3.14)(mysql2@3.15.2))(mysql2@3.15.2))(drizzle-orm@0.44.6(@cloudflare/workers-types@4.20250507.0)(@opentelemetry/api@1.9.0)(@planetscale/database@1.19.0)(bun-types@1.3.14)(mysql2@3.15.2))(encoding@0.1.13)(ioredis@5.6.1)(jiti@2.6.1)(lightningcss@1.32.0)(mysql2@3.15.2)(rolldown@1.0.1)(terser@5.44.0)(xml2js@0.6.2)(yaml@2.8.1)) + '@vinxi/plugin-directives': 0.5.1(vinxi@0.5.6(@planetscale/database@1.19.0)(@types/node@22.15.17)(db0@0.3.2(drizzle-orm@0.44.6(@cloudflare/workers-types@4.20250507.0)(@opentelemetry/api@1.9.0)(@planetscale/database@1.19.0)(bun-types@1.3.14)(mysql2@3.15.2))(mysql2@3.15.2))(drizzle-orm@0.44.6(@cloudflare/workers-types@4.20250507.0)(@opentelemetry/api@1.9.0)(@planetscale/database@1.19.0)(bun-types@1.3.14)(mysql2@3.15.2))(encoding@0.1.13)(ioredis@5.6.1)(jiti@2.6.1)(lightningcss@1.32.0)(mysql2@3.15.2)(rolldown@1.0.2)(terser@5.44.0)(xml2js@0.6.2)(yaml@2.8.1)) + '@vinxi/server-components': 0.5.1(vinxi@0.5.6(@planetscale/database@1.19.0)(@types/node@22.15.17)(db0@0.3.2(drizzle-orm@0.44.6(@cloudflare/workers-types@4.20250507.0)(@opentelemetry/api@1.9.0)(@planetscale/database@1.19.0)(bun-types@1.3.14)(mysql2@3.15.2))(mysql2@3.15.2))(drizzle-orm@0.44.6(@cloudflare/workers-types@4.20250507.0)(@opentelemetry/api@1.9.0)(@planetscale/database@1.19.0)(bun-types@1.3.14)(mysql2@3.15.2))(encoding@0.1.13)(ioredis@5.6.1)(jiti@2.6.1)(lightningcss@1.32.0)(mysql2@3.15.2)(rolldown@1.0.2)(terser@5.44.0)(xml2js@0.6.2)(yaml@2.8.1)) defu: 6.1.4 error-stack-parser: 2.1.4 html-to-image: 1.11.13 @@ -23096,7 +23516,7 @@ snapshots: source-map-js: 1.2.1 terracotta: 1.0.6(solid-js@1.9.6) tinyglobby: 0.2.13 - vinxi: 0.5.6(@planetscale/database@1.19.0)(@types/node@22.15.17)(db0@0.3.2(drizzle-orm@0.44.6(@cloudflare/workers-types@4.20250507.0)(@opentelemetry/api@1.9.0)(@planetscale/database@1.19.0)(bun-types@1.3.14)(mysql2@3.15.2))(mysql2@3.15.2))(drizzle-orm@0.44.6(@cloudflare/workers-types@4.20250507.0)(@opentelemetry/api@1.9.0)(@planetscale/database@1.19.0)(bun-types@1.3.14)(mysql2@3.15.2))(encoding@0.1.13)(ioredis@5.6.1)(jiti@2.6.1)(lightningcss@1.32.0)(mysql2@3.15.2)(rolldown@1.0.1)(terser@5.44.0)(xml2js@0.6.2)(yaml@2.8.1) + vinxi: 0.5.6(@planetscale/database@1.19.0)(@types/node@22.15.17)(db0@0.3.2(drizzle-orm@0.44.6(@cloudflare/workers-types@4.20250507.0)(@opentelemetry/api@1.9.0)(@planetscale/database@1.19.0)(bun-types@1.3.14)(mysql2@3.15.2))(mysql2@3.15.2))(drizzle-orm@0.44.6(@cloudflare/workers-types@4.20250507.0)(@opentelemetry/api@1.9.0)(@planetscale/database@1.19.0)(bun-types@1.3.14)(mysql2@3.15.2))(encoding@0.1.13)(ioredis@5.6.1)(jiti@2.6.1)(lightningcss@1.32.0)(mysql2@3.15.2)(rolldown@1.0.2)(terser@5.44.0)(xml2js@0.6.2)(yaml@2.8.1) vite-plugin-solid: 2.11.6(@testing-library/jest-dom@6.5.0)(solid-js@1.9.6)(vite@6.3.5(@types/node@22.15.17)(jiti@2.6.1)(lightningcss@1.32.0)(terser@5.44.0)(yaml@2.8.1)) transitivePeerDependencies: - '@testing-library/jest-dom' @@ -23226,9 +23646,9 @@ snapshots: react: 19.2.4 react-dom: 19.2.4(react@19.2.4) - '@storybook/builder-vite@10.5.0-alpha.0(esbuild@0.25.5)(rollup@4.40.2)(storybook@8.6.12(prettier@3.7.4))(vite@6.3.5(@types/node@22.15.17)(jiti@2.6.1)(lightningcss@1.32.0)(terser@5.44.0)(yaml@2.8.1))(webpack@5.101.3(esbuild@0.25.5))': + '@storybook/builder-vite@10.5.0-alpha.2(esbuild@0.25.12)(rollup@4.40.2)(storybook@8.6.12(prettier@3.7.4))(vite@6.3.5(@types/node@22.15.17)(jiti@2.6.1)(lightningcss@1.32.0)(terser@5.44.0)(yaml@2.8.1))(webpack@5.101.3(esbuild@0.25.12))': dependencies: - '@storybook/csf-plugin': 10.5.0-alpha.0(esbuild@0.25.5)(rollup@4.40.2)(storybook@8.6.12(prettier@3.7.4))(vite@6.3.5(@types/node@22.15.17)(jiti@2.6.1)(lightningcss@1.32.0)(terser@5.44.0)(yaml@2.8.1))(webpack@5.101.3(esbuild@0.25.5)) + '@storybook/csf-plugin': 10.5.0-alpha.2(esbuild@0.25.12)(rollup@4.40.2)(storybook@8.6.12(prettier@3.7.4))(vite@6.3.5(@types/node@22.15.17)(jiti@2.6.1)(lightningcss@1.32.0)(terser@5.44.0)(yaml@2.8.1))(webpack@5.101.3(esbuild@0.25.12)) storybook: 8.6.12(prettier@3.7.4) ts-dedent: 2.2.0 vite: 6.3.5(@types/node@22.15.17)(jiti@2.6.1)(lightningcss@1.32.0)(terser@5.44.0)(yaml@2.8.1) @@ -23242,8 +23662,8 @@ snapshots: '@storybook/theming': 8.6.12(storybook@8.6.12(prettier@3.7.4)) better-opn: 3.0.2 browser-assert: 1.2.1 - esbuild: 0.25.5 - esbuild-register: 3.6.0(esbuild@0.25.5) + esbuild: 0.25.12 + esbuild-register: 3.6.0(esbuild@0.25.12) jsdoc-type-pratt-parser: 4.1.0 process: 0.11.10 recast: 0.23.11 @@ -23258,15 +23678,15 @@ snapshots: - supports-color - utf-8-validate - '@storybook/csf-plugin@10.5.0-alpha.0(esbuild@0.25.5)(rollup@4.40.2)(storybook@8.6.12(prettier@3.7.4))(vite@6.3.5(@types/node@22.15.17)(jiti@2.6.1)(lightningcss@1.32.0)(terser@5.44.0)(yaml@2.8.1))(webpack@5.101.3(esbuild@0.25.5))': + '@storybook/csf-plugin@10.5.0-alpha.2(esbuild@0.25.12)(rollup@4.40.2)(storybook@8.6.12(prettier@3.7.4))(vite@6.3.5(@types/node@22.15.17)(jiti@2.6.1)(lightningcss@1.32.0)(terser@5.44.0)(yaml@2.8.1))(webpack@5.101.3(esbuild@0.25.12))': dependencies: storybook: 8.6.12(prettier@3.7.4) unplugin: 2.3.11 optionalDependencies: - esbuild: 0.25.5 + esbuild: 0.25.12 rollup: 4.40.2 vite: 6.3.5(@types/node@22.15.17)(jiti@2.6.1)(lightningcss@1.32.0)(terser@5.44.0)(yaml@2.8.1) - webpack: 5.101.3(esbuild@0.25.5) + webpack: 5.101.3(esbuild@0.25.12) '@storybook/csf-plugin@8.6.12(storybook@8.6.12(prettier@3.7.4))': dependencies: @@ -24126,7 +24546,7 @@ snapshots: '@types/jsdom@21.1.7': dependencies: - '@types/node': 20.17.43 + '@types/node': 20.19.21 '@types/tough-cookie': 4.0.5 parse5: 7.3.0 @@ -24173,7 +24593,7 @@ snapshots: '@types/node-fetch@2.6.12': dependencies: - '@types/node': 20.17.43 + '@types/node': 20.19.21 form-data: 4.0.2 '@types/node@10.17.60': {} @@ -24199,7 +24619,6 @@ snapshots: '@types/node@22.15.17': dependencies: undici-types: 6.21.0 - optional: true '@types/normalize-package-data@2.4.4': {} @@ -24627,7 +25046,7 @@ snapshots: untun: 0.1.3 uqr: 0.1.2 - '@vinxi/plugin-directives@0.5.1(vinxi@0.5.6(@planetscale/database@1.19.0)(@types/node@22.15.17)(db0@0.3.2(drizzle-orm@0.44.6(@cloudflare/workers-types@4.20250507.0)(@opentelemetry/api@1.9.0)(@planetscale/database@1.19.0)(bun-types@1.3.14)(mysql2@3.15.2))(mysql2@3.15.2))(drizzle-orm@0.44.6(@cloudflare/workers-types@4.20250507.0)(@opentelemetry/api@1.9.0)(@planetscale/database@1.19.0)(bun-types@1.3.14)(mysql2@3.15.2))(encoding@0.1.13)(ioredis@5.6.1)(jiti@2.6.1)(lightningcss@1.32.0)(mysql2@3.15.2)(rolldown@1.0.1)(terser@5.44.0)(xml2js@0.6.2)(yaml@2.8.1))': + '@vinxi/plugin-directives@0.5.1(vinxi@0.5.6(@planetscale/database@1.19.0)(@types/node@22.15.17)(db0@0.3.2(drizzle-orm@0.44.6(@cloudflare/workers-types@4.20250507.0)(@opentelemetry/api@1.9.0)(@planetscale/database@1.19.0)(bun-types@1.3.14)(mysql2@3.15.2))(mysql2@3.15.2))(drizzle-orm@0.44.6(@cloudflare/workers-types@4.20250507.0)(@opentelemetry/api@1.9.0)(@planetscale/database@1.19.0)(bun-types@1.3.14)(mysql2@3.15.2))(encoding@0.1.13)(ioredis@5.6.1)(jiti@2.6.1)(lightningcss@1.32.0)(mysql2@3.15.2)(rolldown@1.0.2)(terser@5.44.0)(xml2js@0.6.2)(yaml@2.8.1))': dependencies: '@babel/parser': 7.27.2 acorn: 8.14.1 @@ -24638,18 +25057,18 @@ snapshots: magicast: 0.2.11 recast: 0.23.11 tslib: 2.8.1 - vinxi: 0.5.6(@planetscale/database@1.19.0)(@types/node@22.15.17)(db0@0.3.2(drizzle-orm@0.44.6(@cloudflare/workers-types@4.20250507.0)(@opentelemetry/api@1.9.0)(@planetscale/database@1.19.0)(bun-types@1.3.14)(mysql2@3.15.2))(mysql2@3.15.2))(drizzle-orm@0.44.6(@cloudflare/workers-types@4.20250507.0)(@opentelemetry/api@1.9.0)(@planetscale/database@1.19.0)(bun-types@1.3.14)(mysql2@3.15.2))(encoding@0.1.13)(ioredis@5.6.1)(jiti@2.6.1)(lightningcss@1.32.0)(mysql2@3.15.2)(rolldown@1.0.1)(terser@5.44.0)(xml2js@0.6.2)(yaml@2.8.1) + vinxi: 0.5.6(@planetscale/database@1.19.0)(@types/node@22.15.17)(db0@0.3.2(drizzle-orm@0.44.6(@cloudflare/workers-types@4.20250507.0)(@opentelemetry/api@1.9.0)(@planetscale/database@1.19.0)(bun-types@1.3.14)(mysql2@3.15.2))(mysql2@3.15.2))(drizzle-orm@0.44.6(@cloudflare/workers-types@4.20250507.0)(@opentelemetry/api@1.9.0)(@planetscale/database@1.19.0)(bun-types@1.3.14)(mysql2@3.15.2))(encoding@0.1.13)(ioredis@5.6.1)(jiti@2.6.1)(lightningcss@1.32.0)(mysql2@3.15.2)(rolldown@1.0.2)(terser@5.44.0)(xml2js@0.6.2)(yaml@2.8.1) - '@vinxi/server-components@0.5.1(vinxi@0.5.6(@planetscale/database@1.19.0)(@types/node@22.15.17)(db0@0.3.2(drizzle-orm@0.44.6(@cloudflare/workers-types@4.20250507.0)(@opentelemetry/api@1.9.0)(@planetscale/database@1.19.0)(bun-types@1.3.14)(mysql2@3.15.2))(mysql2@3.15.2))(drizzle-orm@0.44.6(@cloudflare/workers-types@4.20250507.0)(@opentelemetry/api@1.9.0)(@planetscale/database@1.19.0)(bun-types@1.3.14)(mysql2@3.15.2))(encoding@0.1.13)(ioredis@5.6.1)(jiti@2.6.1)(lightningcss@1.32.0)(mysql2@3.15.2)(rolldown@1.0.1)(terser@5.44.0)(xml2js@0.6.2)(yaml@2.8.1))': + '@vinxi/server-components@0.5.1(vinxi@0.5.6(@planetscale/database@1.19.0)(@types/node@22.15.17)(db0@0.3.2(drizzle-orm@0.44.6(@cloudflare/workers-types@4.20250507.0)(@opentelemetry/api@1.9.0)(@planetscale/database@1.19.0)(bun-types@1.3.14)(mysql2@3.15.2))(mysql2@3.15.2))(drizzle-orm@0.44.6(@cloudflare/workers-types@4.20250507.0)(@opentelemetry/api@1.9.0)(@planetscale/database@1.19.0)(bun-types@1.3.14)(mysql2@3.15.2))(encoding@0.1.13)(ioredis@5.6.1)(jiti@2.6.1)(lightningcss@1.32.0)(mysql2@3.15.2)(rolldown@1.0.2)(terser@5.44.0)(xml2js@0.6.2)(yaml@2.8.1))': dependencies: - '@vinxi/plugin-directives': 0.5.1(vinxi@0.5.6(@planetscale/database@1.19.0)(@types/node@22.15.17)(db0@0.3.2(drizzle-orm@0.44.6(@cloudflare/workers-types@4.20250507.0)(@opentelemetry/api@1.9.0)(@planetscale/database@1.19.0)(bun-types@1.3.14)(mysql2@3.15.2))(mysql2@3.15.2))(drizzle-orm@0.44.6(@cloudflare/workers-types@4.20250507.0)(@opentelemetry/api@1.9.0)(@planetscale/database@1.19.0)(bun-types@1.3.14)(mysql2@3.15.2))(encoding@0.1.13)(ioredis@5.6.1)(jiti@2.6.1)(lightningcss@1.32.0)(mysql2@3.15.2)(rolldown@1.0.1)(terser@5.44.0)(xml2js@0.6.2)(yaml@2.8.1)) + '@vinxi/plugin-directives': 0.5.1(vinxi@0.5.6(@planetscale/database@1.19.0)(@types/node@22.15.17)(db0@0.3.2(drizzle-orm@0.44.6(@cloudflare/workers-types@4.20250507.0)(@opentelemetry/api@1.9.0)(@planetscale/database@1.19.0)(bun-types@1.3.14)(mysql2@3.15.2))(mysql2@3.15.2))(drizzle-orm@0.44.6(@cloudflare/workers-types@4.20250507.0)(@opentelemetry/api@1.9.0)(@planetscale/database@1.19.0)(bun-types@1.3.14)(mysql2@3.15.2))(encoding@0.1.13)(ioredis@5.6.1)(jiti@2.6.1)(lightningcss@1.32.0)(mysql2@3.15.2)(rolldown@1.0.2)(terser@5.44.0)(xml2js@0.6.2)(yaml@2.8.1)) acorn: 8.14.1 acorn-loose: 8.5.0 acorn-typescript: 1.4.13(acorn@8.14.1) astring: 1.9.0 magicast: 0.2.11 recast: 0.23.11 - vinxi: 0.5.6(@planetscale/database@1.19.0)(@types/node@22.15.17)(db0@0.3.2(drizzle-orm@0.44.6(@cloudflare/workers-types@4.20250507.0)(@opentelemetry/api@1.9.0)(@planetscale/database@1.19.0)(bun-types@1.3.14)(mysql2@3.15.2))(mysql2@3.15.2))(drizzle-orm@0.44.6(@cloudflare/workers-types@4.20250507.0)(@opentelemetry/api@1.9.0)(@planetscale/database@1.19.0)(bun-types@1.3.14)(mysql2@3.15.2))(encoding@0.1.13)(ioredis@5.6.1)(jiti@2.6.1)(lightningcss@1.32.0)(mysql2@3.15.2)(rolldown@1.0.1)(terser@5.44.0)(xml2js@0.6.2)(yaml@2.8.1) + vinxi: 0.5.6(@planetscale/database@1.19.0)(@types/node@22.15.17)(db0@0.3.2(drizzle-orm@0.44.6(@cloudflare/workers-types@4.20250507.0)(@opentelemetry/api@1.9.0)(@planetscale/database@1.19.0)(bun-types@1.3.14)(mysql2@3.15.2))(mysql2@3.15.2))(drizzle-orm@0.44.6(@cloudflare/workers-types@4.20250507.0)(@opentelemetry/api@1.9.0)(@planetscale/database@1.19.0)(bun-types@1.3.14)(mysql2@3.15.2))(encoding@0.1.13)(ioredis@5.6.1)(jiti@2.6.1)(lightningcss@1.32.0)(mysql2@3.15.2)(rolldown@1.0.2)(terser@5.44.0)(xml2js@0.6.2)(yaml@2.8.1) '@virtual-grid/core@2.0.1': {} @@ -26099,6 +26518,8 @@ snapshots: character-reference-invalid@2.0.1: {} + chardet@2.1.1: {} + check-error@2.1.1: {} chokidar@3.6.0: @@ -26156,6 +26577,8 @@ snapshots: cli-spinners@2.9.2: {} + cli-width@4.1.0: {} + client-only@0.0.1: {} clipboardy@4.0.0: @@ -27079,17 +27502,17 @@ snapshots: esast-util-from-estree: 2.0.0 vfile-message: 4.0.2 - esbuild-register@3.6.0(esbuild@0.25.4): + esbuild-register@3.6.0(esbuild@0.25.12): dependencies: debug: 4.4.3(supports-color@8.1.1) - esbuild: 0.25.4 + esbuild: 0.25.12 transitivePeerDependencies: - supports-color - esbuild-register@3.6.0(esbuild@0.25.5): + esbuild-register@3.6.0(esbuild@0.25.4): dependencies: debug: 4.4.3(supports-color@8.1.1) - esbuild: 0.25.5 + esbuild: 0.25.4 transitivePeerDependencies: - supports-color @@ -27354,7 +27777,7 @@ snapshots: eslint: 9.30.1(jiti@2.6.1) eslint-import-resolver-node: 0.3.9 eslint-import-resolver-typescript: 3.10.1(eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.57.2(eslint@9.30.1(jiti@2.6.1))(typescript@5.8.3))(eslint@9.30.1(jiti@2.6.1)))(eslint@9.30.1(jiti@2.6.1)) - eslint-plugin-import: 2.32.0(@typescript-eslint/parser@8.57.2(eslint@9.30.1(jiti@2.6.1))(typescript@5.8.3))(eslint-import-resolver-typescript@3.10.1(eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.57.2(eslint@9.30.1(jiti@2.6.1))(typescript@5.8.3))(eslint@9.30.1(jiti@2.6.1)))(eslint@9.30.1(jiti@2.6.1)))(eslint@9.30.1(jiti@2.6.1)) + eslint-plugin-import: 2.32.0(@typescript-eslint/parser@8.57.2(eslint@9.30.1(jiti@2.6.1))(typescript@5.8.3))(eslint-import-resolver-typescript@3.10.1)(eslint@9.30.1(jiti@2.6.1)) eslint-plugin-jsx-a11y: 6.10.2(eslint@9.30.1(jiti@2.6.1)) eslint-plugin-react: 7.37.5(eslint@9.30.1(jiti@2.6.1)) eslint-plugin-react-hooks: 7.0.1(eslint@9.30.1(jiti@2.6.1)) @@ -27411,7 +27834,7 @@ snapshots: tinyglobby: 0.2.15 unrs-resolver: 1.7.2 optionalDependencies: - eslint-plugin-import: 2.32.0(@typescript-eslint/parser@8.57.2(eslint@9.30.1(jiti@2.6.1))(typescript@5.8.3))(eslint-import-resolver-typescript@3.10.1(eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.57.2(eslint@9.30.1(jiti@2.6.1))(typescript@5.8.3))(eslint@9.30.1(jiti@2.6.1)))(eslint@9.30.1(jiti@2.6.1)))(eslint@9.30.1(jiti@2.6.1)) + eslint-plugin-import: 2.32.0(@typescript-eslint/parser@8.57.2(eslint@9.30.1(jiti@2.6.1))(typescript@5.8.3))(eslint-import-resolver-typescript@3.10.1)(eslint@9.30.1(jiti@2.6.1)) transitivePeerDependencies: - supports-color @@ -27466,7 +27889,7 @@ snapshots: - eslint-import-resolver-webpack - supports-color - eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.57.2(eslint@9.30.1(jiti@2.6.1))(typescript@5.8.3))(eslint-import-resolver-typescript@3.10.1(eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.57.2(eslint@9.30.1(jiti@2.6.1))(typescript@5.8.3))(eslint@9.30.1(jiti@2.6.1)))(eslint@9.30.1(jiti@2.6.1)))(eslint@9.30.1(jiti@2.6.1)): + eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.57.2(eslint@9.30.1(jiti@2.6.1))(typescript@5.8.3))(eslint-import-resolver-typescript@3.10.1)(eslint@9.30.1(jiti@2.6.1)): dependencies: '@rtsao/scc': 1.1.0 array-includes: 3.1.9 @@ -28041,6 +28464,10 @@ snapshots: fast-levenshtein@2.0.6: {} + fast-levenshtein@3.0.0: + dependencies: + fastest-levenshtein: 1.0.16 + fast-safe-stringify@2.1.1: {} fast-uri@3.0.6: {} @@ -28063,6 +28490,8 @@ snapshots: path-expression-matcher: 1.2.0 strnum: 2.2.2 + fastest-levenshtein@1.0.16: {} + fastq@1.19.1: dependencies: reusify: 1.1.0 @@ -28087,6 +28516,10 @@ snapshots: optionalDependencies: picomatch: 4.0.3 + fdir@6.5.0(picomatch@4.0.4): + optionalDependencies: + picomatch: 4.0.4 + fecha@4.2.3: {} fetch-blob@3.2.0: @@ -29620,7 +30053,7 @@ snapshots: make-dir@4.0.0: dependencies: - semver: 7.7.3 + semver: 7.7.4 make-error@1.3.6: optional: true @@ -30216,6 +30649,10 @@ snapshots: dependencies: brace-expansion: 5.0.5 + minimatch@10.2.5: + dependencies: + brace-expansion: 5.0.5 + minimatch@3.1.2: dependencies: brace-expansion: 1.1.11 @@ -30362,6 +30799,8 @@ snapshots: mustache@4.2.0: {} + mute-stream@2.0.0: {} + mux-embed@5.9.0: {} mysql2@3.15.2: @@ -30540,7 +30979,7 @@ snapshots: - '@babel/core' - babel-plugin-macros - nitropack@2.11.11(@planetscale/database@1.19.0)(drizzle-orm@0.44.6(@cloudflare/workers-types@4.20250507.0)(@opentelemetry/api@1.9.0)(@planetscale/database@1.19.0)(bun-types@1.3.14)(mysql2@3.15.2))(encoding@0.1.13)(mysql2@3.15.2)(rolldown@1.0.1)(xml2js@0.6.2): + nitropack@2.11.11(@planetscale/database@1.19.0)(drizzle-orm@0.44.6(@cloudflare/workers-types@4.20250507.0)(@opentelemetry/api@1.9.0)(@planetscale/database@1.19.0)(bun-types@1.3.14)(mysql2@3.15.2))(encoding@0.1.13)(mysql2@3.15.2)(rolldown@1.0.2)(xml2js@0.6.2): dependencies: '@cloudflare/kv-asset-handler': 0.4.0 '@netlify/functions': 3.1.5(encoding@0.1.13)(rollup@4.40.2) @@ -30594,7 +31033,7 @@ snapshots: pretty-bytes: 6.1.1 radix3: 1.1.2 rollup: 4.40.2 - rollup-plugin-visualizer: 5.14.0(rolldown@1.0.1)(rollup@4.40.2) + rollup-plugin-visualizer: 5.14.0(rolldown@1.0.2)(rollup@4.40.2) scule: 1.3.0 semver: 7.7.2 serve-placeholder: 2.0.2 @@ -30755,7 +31194,7 @@ snapshots: npm-install-checks@6.3.0: dependencies: - semver: 7.7.3 + semver: 7.7.4 npm-normalize-package-bin@3.0.1: {} @@ -30763,7 +31202,7 @@ snapshots: dependencies: hosted-git-info: 7.0.2 proc-log: 4.2.0 - semver: 7.7.3 + semver: 7.7.4 validate-npm-package-name: 5.0.1 npm-packlist@8.0.2: @@ -30775,7 +31214,7 @@ snapshots: npm-install-checks: 6.3.0 npm-normalize-package-bin: 3.0.1 npm-package-arg: 11.0.3 - semver: 7.7.3 + semver: 7.7.4 npm-registry-fetch@17.1.0: dependencies: @@ -31185,6 +31624,8 @@ snapshots: picomatch@4.0.3: {} + picomatch@4.0.4: {} + pify@2.3.0: {} pirates@4.0.7: {} @@ -31727,6 +32168,8 @@ snapshots: react: 19.2.4 react-dom: 19.2.4(react@19.2.4) + react@19.0.0: {} + react@19.1.1: {} react@19.2.4: {} @@ -32054,7 +32497,7 @@ snapshots: dependencies: glob: 7.2.3 - rolldown-plugin-dts@0.16.11(rolldown@1.0.1)(typescript@5.8.3): + rolldown-plugin-dts@0.16.11(rolldown@1.0.2)(typescript@5.8.3): dependencies: '@babel/generator': 7.28.3 '@babel/parser': 7.28.4 @@ -32065,7 +32508,7 @@ snapshots: dts-resolver: 2.1.2 get-tsconfig: 4.11.0 magic-string: 0.30.19 - rolldown: 1.0.1 + rolldown: 1.0.2 optionalDependencies: typescript: 5.8.3 transitivePeerDependencies: @@ -32093,26 +32536,26 @@ snapshots: '@rolldown/binding-win32-ia32-msvc': 1.0.0-beta.42 '@rolldown/binding-win32-x64-msvc': 1.0.0-beta.42 - rolldown@1.0.1: + rolldown@1.0.2: dependencies: - '@oxc-project/types': 0.130.0 + '@oxc-project/types': 0.132.0 '@rolldown/pluginutils': 1.0.0 optionalDependencies: - '@rolldown/binding-android-arm64': 1.0.1 - '@rolldown/binding-darwin-arm64': 1.0.1 - '@rolldown/binding-darwin-x64': 1.0.1 - '@rolldown/binding-freebsd-x64': 1.0.1 - '@rolldown/binding-linux-arm-gnueabihf': 1.0.1 - '@rolldown/binding-linux-arm64-gnu': 1.0.1 - '@rolldown/binding-linux-arm64-musl': 1.0.1 - '@rolldown/binding-linux-ppc64-gnu': 1.0.1 - '@rolldown/binding-linux-s390x-gnu': 1.0.1 - '@rolldown/binding-linux-x64-gnu': 1.0.1 - '@rolldown/binding-linux-x64-musl': 1.0.1 - '@rolldown/binding-openharmony-arm64': 1.0.1 - '@rolldown/binding-wasm32-wasi': 1.0.1 - '@rolldown/binding-win32-arm64-msvc': 1.0.1 - '@rolldown/binding-win32-x64-msvc': 1.0.1 + '@rolldown/binding-android-arm64': 1.0.2 + '@rolldown/binding-darwin-arm64': 1.0.2 + '@rolldown/binding-darwin-x64': 1.0.2 + '@rolldown/binding-freebsd-x64': 1.0.2 + '@rolldown/binding-linux-arm-gnueabihf': 1.0.2 + '@rolldown/binding-linux-arm64-gnu': 1.0.2 + '@rolldown/binding-linux-arm64-musl': 1.0.2 + '@rolldown/binding-linux-ppc64-gnu': 1.0.2 + '@rolldown/binding-linux-s390x-gnu': 1.0.2 + '@rolldown/binding-linux-x64-gnu': 1.0.2 + '@rolldown/binding-linux-x64-musl': 1.0.2 + '@rolldown/binding-openharmony-arm64': 1.0.2 + '@rolldown/binding-wasm32-wasi': 1.0.2 + '@rolldown/binding-win32-arm64-msvc': 1.0.2 + '@rolldown/binding-win32-x64-msvc': 1.0.2 rollup-plugin-inject@3.0.2: dependencies: @@ -32124,14 +32567,14 @@ snapshots: dependencies: rollup-plugin-inject: 3.0.2 - rollup-plugin-visualizer@5.14.0(rolldown@1.0.1)(rollup@4.40.2): + rollup-plugin-visualizer@5.14.0(rolldown@1.0.2)(rollup@4.40.2): dependencies: open: 8.4.2 picomatch: 4.0.3 source-map: 0.7.4 yargs: 17.7.2 optionalDependencies: - rolldown: 1.0.1 + rolldown: 1.0.2 rollup: 4.40.2 rollup-pluginutils@2.8.2: @@ -32261,6 +32704,8 @@ snapshots: semver@7.7.4: {} + semver@7.8.1: {} + send@0.19.0: dependencies: debug: 2.6.9 @@ -32757,9 +33202,9 @@ snapshots: stoppable@1.1.0: {} - storybook-solidjs-vite@1.0.0-beta.7(@storybook/test@8.6.12(storybook@8.6.12(prettier@3.7.4)))(esbuild@0.25.5)(rollup@4.40.2)(solid-js@1.9.6)(storybook@8.6.12(prettier@3.7.4))(vite-plugin-solid@2.11.6(@testing-library/jest-dom@6.5.0)(solid-js@1.9.6)(vite@6.3.5(@types/node@22.15.17)(jiti@2.6.1)(lightningcss@1.32.0)(terser@5.44.0)(yaml@2.8.1)))(vite@6.3.5(@types/node@22.15.17)(jiti@2.6.1)(lightningcss@1.32.0)(terser@5.44.0)(yaml@2.8.1))(webpack@5.101.3(esbuild@0.25.5)): + storybook-solidjs-vite@1.0.0-beta.7(@storybook/test@8.6.12(storybook@8.6.12(prettier@3.7.4)))(esbuild@0.25.12)(rollup@4.40.2)(solid-js@1.9.6)(storybook@8.6.12(prettier@3.7.4))(vite-plugin-solid@2.11.6(@testing-library/jest-dom@6.5.0)(solid-js@1.9.6)(vite@6.3.5(@types/node@22.15.17)(jiti@2.6.1)(lightningcss@1.32.0)(terser@5.44.0)(yaml@2.8.1)))(vite@6.3.5(@types/node@22.15.17)(jiti@2.6.1)(lightningcss@1.32.0)(terser@5.44.0)(yaml@2.8.1))(webpack@5.101.3(esbuild@0.25.12)): dependencies: - '@storybook/builder-vite': 10.5.0-alpha.0(esbuild@0.25.5)(rollup@4.40.2)(storybook@8.6.12(prettier@3.7.4))(vite@6.3.5(@types/node@22.15.17)(jiti@2.6.1)(lightningcss@1.32.0)(terser@5.44.0)(yaml@2.8.1))(webpack@5.101.3(esbuild@0.25.5)) + '@storybook/builder-vite': 10.5.0-alpha.2(esbuild@0.25.12)(rollup@4.40.2)(storybook@8.6.12(prettier@3.7.4))(vite@6.3.5(@types/node@22.15.17)(jiti@2.6.1)(lightningcss@1.32.0)(terser@5.44.0)(yaml@2.8.1))(webpack@5.101.3(esbuild@0.25.12)) '@storybook/types': 9.0.0-alpha.1(storybook@8.6.12(prettier@3.7.4)) magic-string: 0.30.17 solid-js: 1.9.6 @@ -32920,7 +33365,7 @@ snapshots: stripe@14.25.0: dependencies: - '@types/node': 20.17.43 + '@types/node': 20.19.21 qs: 6.14.0 strnum@1.1.2: {} @@ -33133,16 +33578,16 @@ snapshots: solid-js: 1.9.6 solid-use: 0.9.1(solid-js@1.9.6) - terser-webpack-plugin@5.3.14(esbuild@0.25.5)(webpack@5.101.3(esbuild@0.25.5)): + terser-webpack-plugin@5.3.14(esbuild@0.25.12)(webpack@5.101.3(esbuild@0.25.12)): dependencies: '@jridgewell/trace-mapping': 0.3.31 jest-worker: 27.5.1 schema-utils: 4.3.3 serialize-javascript: 6.0.2 terser: 5.44.0 - webpack: 5.101.3(esbuild@0.25.5) + webpack: 5.101.3(esbuild@0.25.12) optionalDependencies: - esbuild: 0.25.5 + esbuild: 0.25.12 optional: true terser@5.39.0: @@ -33204,6 +33649,11 @@ snapshots: fdir: 6.5.0(picomatch@4.0.3) picomatch: 4.0.3 + tinyglobby@0.2.16: + dependencies: + fdir: 6.5.0(picomatch@4.0.4) + picomatch: 4.0.4 + tinypool@1.0.2: {} tinypool@1.1.1: {} @@ -33378,8 +33828,8 @@ snapshots: diff: 8.0.2 empathic: 2.0.0 hookable: 5.5.3 - rolldown: 1.0.1 - rolldown-plugin-dts: 0.16.11(rolldown@1.0.1)(typescript@5.8.3) + rolldown: 1.0.2 + rolldown-plugin-dts: 0.16.11(rolldown@1.0.2)(typescript@5.8.3) semver: 7.7.2 tinyexec: 1.0.1 tinyglobby: 0.2.15 @@ -34051,7 +34501,7 @@ snapshots: d3-time: 3.1.0 d3-timer: 3.0.1 - vinxi@0.5.6(@planetscale/database@1.19.0)(@types/node@22.15.17)(db0@0.3.2(drizzle-orm@0.44.6(@cloudflare/workers-types@4.20250507.0)(@opentelemetry/api@1.9.0)(@planetscale/database@1.19.0)(bun-types@1.3.14)(mysql2@3.15.2))(mysql2@3.15.2))(drizzle-orm@0.44.6(@cloudflare/workers-types@4.20250507.0)(@opentelemetry/api@1.9.0)(@planetscale/database@1.19.0)(bun-types@1.3.14)(mysql2@3.15.2))(encoding@0.1.13)(ioredis@5.6.1)(jiti@2.6.1)(lightningcss@1.32.0)(mysql2@3.15.2)(rolldown@1.0.1)(terser@5.44.0)(xml2js@0.6.2)(yaml@2.8.1): + vinxi@0.5.6(@planetscale/database@1.19.0)(@types/node@22.15.17)(db0@0.3.2(drizzle-orm@0.44.6(@cloudflare/workers-types@4.20250507.0)(@opentelemetry/api@1.9.0)(@planetscale/database@1.19.0)(bun-types@1.3.14)(mysql2@3.15.2))(mysql2@3.15.2))(drizzle-orm@0.44.6(@cloudflare/workers-types@4.20250507.0)(@opentelemetry/api@1.9.0)(@planetscale/database@1.19.0)(bun-types@1.3.14)(mysql2@3.15.2))(encoding@0.1.13)(ioredis@5.6.1)(jiti@2.6.1)(lightningcss@1.32.0)(mysql2@3.15.2)(rolldown@1.0.2)(terser@5.44.0)(xml2js@0.6.2)(yaml@2.8.1): dependencies: '@babel/core': 7.27.1 '@babel/plugin-syntax-jsx': 7.27.1(@babel/core@7.27.1) @@ -34073,7 +34523,7 @@ snapshots: hookable: 5.5.3 http-proxy: 1.18.1 micromatch: 4.0.8 - nitropack: 2.11.11(@planetscale/database@1.19.0)(drizzle-orm@0.44.6(@cloudflare/workers-types@4.20250507.0)(@opentelemetry/api@1.9.0)(@planetscale/database@1.19.0)(bun-types@1.3.14)(mysql2@3.15.2))(encoding@0.1.13)(mysql2@3.15.2)(rolldown@1.0.1)(xml2js@0.6.2) + nitropack: 2.11.11(@planetscale/database@1.19.0)(drizzle-orm@0.44.6(@cloudflare/workers-types@4.20250507.0)(@opentelemetry/api@1.9.0)(@planetscale/database@1.19.0)(bun-types@1.3.14)(mysql2@3.15.2))(encoding@0.1.13)(mysql2@3.15.2)(rolldown@1.0.2)(xml2js@0.6.2) node-fetch-native: 1.6.6 path-to-regexp: 6.3.0 pathe: 1.1.2 @@ -34405,7 +34855,7 @@ snapshots: webpack-virtual-modules@0.6.2: {} - webpack@5.101.3(esbuild@0.25.5): + webpack@5.101.3(esbuild@0.25.12): dependencies: '@types/eslint-scope': 3.7.7 '@types/estree': 1.0.8 @@ -34429,7 +34879,7 @@ snapshots: neo-async: 2.6.2 schema-utils: 4.3.3 tapable: 2.3.3 - terser-webpack-plugin: 5.3.14(esbuild@0.25.5)(webpack@5.101.3(esbuild@0.25.5)) + terser-webpack-plugin: 5.3.14(esbuild@0.25.12)(webpack@5.101.3(esbuild@0.25.12)) watchpack: 2.5.1 webpack-sources: 3.3.3 transitivePeerDependencies: @@ -34703,6 +35153,12 @@ snapshots: - bufferutil - utf-8-validate + wrap-ansi@6.2.0: + dependencies: + ansi-styles: 4.3.0 + string-width: 4.2.3 + strip-ansi: 6.0.1 + wrap-ansi@7.0.0: dependencies: ansi-styles: 4.3.0 @@ -34805,6 +35261,8 @@ snapshots: yocto-queue@1.2.1: {} + yoctocolors-cjs@2.1.3: {} + yoctocolors@2.1.1: {} youch-core@0.3.2: From 3bcf7b1f8ae07e22a5e617a550715b68778dcb62 Mon Sep 17 00:00:00 2001 From: tonystark-agent Date: Sat, 23 May 2026 20:50:15 +0200 Subject: [PATCH 2/4] fix: confirm sensitive deeplink actions --- .../desktop/src-tauri/src/deeplink_actions.rs | 27 +++++++++++++++++++ 1 file changed, 27 insertions(+) diff --git a/apps/desktop/src-tauri/src/deeplink_actions.rs b/apps/desktop/src-tauri/src/deeplink_actions.rs index e954e9d7a62..adb8c6951ac 100644 --- a/apps/desktop/src-tauri/src/deeplink_actions.rs +++ b/apps/desktop/src-tauri/src/deeplink_actions.rs @@ -5,6 +5,7 @@ use serde::{Deserialize, Serialize}; use std::future::Future; use std::path::{Path, PathBuf}; use tauri::{AppHandle, Manager, Url}; +use tauri_plugin_dialog::{DialogExt, MessageDialogButtons, MessageDialogKind}; use tracing::trace; use crate::{ @@ -153,30 +154,37 @@ impl DeepLinkAction { .map(|_| ()) } DeepLinkAction::StopRecording => { + confirm_sensitive_action(app, "stop the active recording")?; crate::recording::stop_recording(app.clone(), app.state()).await } DeepLinkAction::PauseRecording => { + confirm_sensitive_action(app, "pause the active recording")?; recording::pause_recording(app.clone(), app.state()).await } DeepLinkAction::ResumeRecording => { + confirm_sensitive_action(app, "resume the active recording")?; recording::resume_recording(app.clone(), app.state()).await } DeepLinkAction::TogglePauseRecording => { + confirm_sensitive_action(app, "toggle recording pause")?; recording::toggle_pause_recording(app.clone(), app.state()).await } DeepLinkAction::TakeScreenshot { capture_mode } => { + confirm_sensitive_action(app, "take a screenshot")?; let target = resolve_capture_target(capture_mode)?; let path = recording::take_screenshot(app.clone(), target).await?; let _ = ShowCapWindow::ScreenshotEditor { path }.show(app).await; Ok(()) } DeepLinkAction::SetMicrophone { mic_label } => { + confirm_sensitive_action(app, "change the active microphone")?; with_recording_paused_for_input_change(app, async { crate::set_mic_input(app.state(), mic_label).await }) .await } DeepLinkAction::SetCamera { camera } => { + confirm_sensitive_action(app, "change the active camera")?; with_recording_paused_for_input_change(app, async { crate::set_camera_input(app.clone(), app.state(), camera, Some(true)).await }) @@ -192,6 +200,25 @@ impl DeepLinkAction { } } +fn confirm_sensitive_action(app: &AppHandle, action: &str) -> Result<(), String> { + let approved = app + .dialog() + .message(format!("Raycast wants to {action} in Cap.")) + .title("Confirm Cap action") + .kind(MessageDialogKind::Warning) + .buttons(MessageDialogButtons::OkCancelCustom( + "Allow".to_string(), + "Cancel".to_string(), + )) + .blocking_show(); + + if approved { + Ok(()) + } else { + Err("Cap action cancelled".to_string()) + } +} + fn resolve_capture_target(capture_mode: CaptureMode) -> Result { match capture_mode { CaptureMode::Screen(name) => cap_recording::screen_capture::list_displays() From 2bddaeb4cb6129640417e75845c98f2d142447de Mon Sep 17 00:00:00 2001 From: tonystark-agent Date: Sat, 23 May 2026 23:40:38 +0200 Subject: [PATCH 3/4] fix: confirm start recording deeplink --- apps/desktop/src-tauri/src/deeplink_actions.rs | 1 + 1 file changed, 1 insertion(+) diff --git a/apps/desktop/src-tauri/src/deeplink_actions.rs b/apps/desktop/src-tauri/src/deeplink_actions.rs index adb8c6951ac..bfb73c887c5 100644 --- a/apps/desktop/src-tauri/src/deeplink_actions.rs +++ b/apps/desktop/src-tauri/src/deeplink_actions.rs @@ -135,6 +135,7 @@ impl DeepLinkAction { capture_system_audio, mode, } => { + confirm_sensitive_action(app, "start a recording")?; let state = app.state::>(); crate::set_camera_input(app.clone(), state.clone(), camera, None).await?; From c8fbdd4275bc01784a95148b3ff0d653d94e0542 Mon Sep 17 00:00:00 2001 From: tonystark-agent Date: Sat, 23 May 2026 23:41:39 +0200 Subject: [PATCH 4/4] fix: use generic deeplink confirmation copy --- apps/desktop/src-tauri/src/deeplink_actions.rs | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/apps/desktop/src-tauri/src/deeplink_actions.rs b/apps/desktop/src-tauri/src/deeplink_actions.rs index bfb73c887c5..3775e4be8bf 100644 --- a/apps/desktop/src-tauri/src/deeplink_actions.rs +++ b/apps/desktop/src-tauri/src/deeplink_actions.rs @@ -204,7 +204,9 @@ impl DeepLinkAction { fn confirm_sensitive_action(app: &AppHandle, action: &str) -> Result<(), String> { let approved = app .dialog() - .message(format!("Raycast wants to {action} in Cap.")) + .message(format!( + "An external app or website requested to {action} in Cap." + )) .title("Confirm Cap action") .kind(MessageDialogKind::Warning) .buttons(MessageDialogButtons::OkCancelCustom(