diff --git a/Cargo.lock b/Cargo.lock index 5c23ca443f..5dcc22a14a 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1184,7 +1184,7 @@ dependencies = [ [[package]] name = "cap-desktop" -version = "0.4.7" +version = "0.4.71" dependencies = [ "aho-corasick", "anyhow", diff --git a/apps/desktop/src-tauri/DEEPLINKS.md b/apps/desktop/src-tauri/DEEPLINKS.md new file mode 100644 index 0000000000..e090037707 --- /dev/null +++ b/apps/desktop/src-tauri/DEEPLINKS.md @@ -0,0 +1,58 @@ +# Cap Desktop Deeplinks + +Cap desktop handles action deeplinks in this format: + +`cap-desktop://action?value=` + +The `value` parameter is JSON for a `DeepLinkAction`. + +## Recording controls + +- `"start_current_recording"` +- `"stop_recording"` +- `"pause_recording"` +- `"resume_recording"` + +`start_current_recording` uses the current saved recording settings. + +## Device switching + +Switch microphone: + +```json +{"switch_microphone":{"mic_label":null}} +``` + +When `mic_label` is `null`, Cap rotates to the next available microphone. + +```json +{"switch_microphone":{"mic_label":"Shure MV7"}} +``` + +Switch camera: + +```json +{"switch_camera":{"camera_selector":null}} +``` + +When `camera_selector` is `null`, Cap rotates to the next available camera. + +```json +{"switch_camera":{"camera_selector":"FaceTime HD Camera"}} +``` + +`camera_selector` can be camera display name, device id, or model id. + +## Other actions + +```json +{"open_settings":{"page":"general"}} +``` + +```json +{"open_editor":{"project_path":"/absolute/path/to/project.cap"}} +``` + +```json +{"start_recording":{"capture_mode":{"screen":"Built-in Retina Display"},"camera":null,"mic_label":null,"capture_system_audio":true,"mode":"studio"}} +``` diff --git a/apps/desktop/src-tauri/src/deeplink_actions.rs b/apps/desktop/src-tauri/src/deeplink_actions.rs index fce75b4a84..5eccd12f64 100644 --- a/apps/desktop/src-tauri/src/deeplink_actions.rs +++ b/apps/desktop/src-tauri/src/deeplink_actions.rs @@ -1,6 +1,9 @@ use cap_recording::{ - RecordingMode, feeds::camera::DeviceOrModelID, sources::screen_capture::ScreenCaptureTarget, + RecordingMode, + feeds::{camera::DeviceOrModelID, microphone::MicrophoneFeed}, + sources::screen_capture::ScreenCaptureTarget, }; +use scap_targets::Display; use serde::{Deserialize, Serialize}; use std::path::{Path, PathBuf}; use tauri::{AppHandle, Manager, Url}; @@ -8,16 +11,19 @@ use tracing::trace; use crate::{App, ArcLock, recording::StartRecordingInputs, windows::ShowCapWindow}; -#[derive(Debug, Serialize, Deserialize)] +#[derive(Debug, Serialize, Deserialize, PartialEq)] #[serde(rename_all = "snake_case")] pub enum CaptureMode { Screen(String), Window(String), } -#[derive(Debug, Serialize, Deserialize)] +#[derive(Debug, Serialize, Deserialize, PartialEq)] #[serde(rename_all = "snake_case")] pub enum DeepLinkAction { + StartCurrentRecording { + mode: Option, + }, StartRecording { capture_mode: CaptureMode, camera: Option, @@ -26,6 +32,14 @@ pub enum DeepLinkAction { mode: RecordingMode, }, StopRecording, + PauseRecording, + ResumeRecording, + SwitchMicrophone { + mic_label: Option, + }, + SwitchCamera { + camera_selector: Option, + }, OpenEditor { project_path: PathBuf, }, @@ -87,10 +101,12 @@ impl TryFrom<&Url> for DeepLinkAction { }); } - match url.domain() { - Some(v) if v != "action" => Err(ActionParseFromUrlError::NotAction), - _ => Err(ActionParseFromUrlError::Invalid), - }?; + let host = url.host_str().or(url.domain()); + match host { + Some("action") => {} + Some(_) => return Err(ActionParseFromUrlError::NotAction), + None => return Err(ActionParseFromUrlError::Invalid), + } let params = url .query_pairs() @@ -107,6 +123,30 @@ impl TryFrom<&Url> for DeepLinkAction { impl DeepLinkAction { pub async fn execute(self, app: &AppHandle) -> Result<(), String> { match self { + DeepLinkAction::StartCurrentRecording { mode } => { + let settings = crate::recording_settings::RecordingSettingsStore::get(app) + .ok() + .flatten() + .unwrap_or_default(); + + crate::set_mic_input(app.state(), settings.mic_name).await?; + crate::set_camera_input(app.clone(), app.state(), settings.camera_id, None).await?; + + let inputs = StartRecordingInputs { + mode: mode.or(settings.mode).unwrap_or(RecordingMode::Studio), + capture_target: settings.target.unwrap_or_else(|| { + ScreenCaptureTarget::Display { + id: Display::primary().id(), + } + }), + capture_system_audio: settings.system_audio, + organization_id: settings.organization_id, + }; + + crate::recording::start_recording(app.clone(), app.state(), inputs) + .await + .map(|_| ()) + } DeepLinkAction::StartRecording { capture_mode, camera, @@ -146,6 +186,68 @@ impl DeepLinkAction { DeepLinkAction::StopRecording => { crate::recording::stop_recording(app.clone(), app.state()).await } + DeepLinkAction::PauseRecording => { + crate::recording::pause_recording(app.clone(), app.state()).await + } + DeepLinkAction::ResumeRecording => { + crate::recording::resume_recording(app.clone(), app.state()).await + } + DeepLinkAction::SwitchMicrophone { mic_label } => { + if let Some(mic_label) = mic_label { + return crate::set_mic_input(app.state(), Some(mic_label)).await; + } + + let current_mic = app + .state::>() + .read() + .await + .selected_mic_label + .clone(); + let mut microphones: Vec = MicrophoneFeed::list().keys().cloned().collect(); + + if microphones.is_empty() { + return Err("No microphone devices found".to_string()); + } + + microphones.sort_unstable(); + let next_mic = next_item(microphones, current_mic.as_ref()) + .ok_or("No microphone devices found".to_string())?; + + crate::set_mic_input(app.state(), Some(next_mic)).await + } + DeepLinkAction::SwitchCamera { camera_selector } => { + if let Some(camera_selector) = camera_selector { + let camera_id = find_camera_by_selector(&camera_selector) + .ok_or(format!("No camera matching \"{}\"", camera_selector))?; + + return crate::set_camera_input( + app.clone(), + app.state(), + Some(camera_id), + None, + ) + .await; + } + + let camera_ids: Vec = cap_camera::list_cameras() + .map(|camera| DeviceOrModelID::from_info(&camera)) + .collect(); + + if camera_ids.is_empty() { + return Err("No camera devices found".to_string()); + } + + let current_camera = app + .state::>() + .read() + .await + .selected_camera_id + .clone(); + let next_camera = next_item(camera_ids, current_camera.as_ref()) + .ok_or("No camera devices found".to_string())?; + + crate::set_camera_input(app.clone(), app.state(), Some(next_camera), None).await + } DeepLinkAction::OpenEditor { project_path } => { crate::open_project_from_path(Path::new(&project_path), app.clone()) } @@ -155,3 +257,81 @@ impl DeepLinkAction { } } } + +fn find_camera_by_selector(selector: &str) -> Option { + cap_camera::list_cameras().find_map(|camera| { + let model_id = camera.model_id().map(|id| id.to_string()); + if camera.display_name() == selector + || camera.device_id() == selector + || model_id.as_deref() == Some(selector) + { + Some(DeviceOrModelID::from_info(&camera)) + } else { + None + } + }) +} + +fn next_item(items: Vec, current: Option<&T>) -> Option { + if items.is_empty() { + return None; + } + + let next_index = current + .and_then(|value| items.iter().position(|item| item == value)) + .map(|index| (index + 1) % items.len()) + .unwrap_or(0); + + items.get(next_index).cloned() +} + +#[cfg(test)] +mod tests { + use super::*; + + fn action_url(action: DeepLinkAction) -> Url { + let value = serde_json::to_string(&action).expect("serialize action"); + let mut url = Url::parse("cap-desktop://action").expect("parse base url"); + url.query_pairs_mut().append_pair("value", &value); + url + } + + #[test] + fn parses_action_urls() { + let action = DeepLinkAction::PauseRecording; + let parsed = DeepLinkAction::try_from(&action_url(action.clone())).expect("parse action"); + assert_eq!(parsed, action); + } + + #[test] + fn parses_action_with_payload() { + let action = DeepLinkAction::SwitchMicrophone { + mic_label: Some("Shure MV7".to_string()), + }; + let parsed = DeepLinkAction::try_from(&action_url(action.clone())).expect("parse action"); + assert_eq!(parsed, action); + } + + #[test] + fn parses_start_current_recording() { + let action = DeepLinkAction::StartCurrentRecording { + mode: Some(RecordingMode::Studio), + }; + let parsed = DeepLinkAction::try_from(&action_url(action.clone())).expect("parse action"); + assert_eq!(parsed, action); + } + + #[test] + fn returns_not_action_for_non_action_host() { + let url = Url::parse("cap-desktop://signin?token=abc").expect("parse url"); + let parsed = DeepLinkAction::try_from(&url); + assert!(matches!(parsed, Err(ActionParseFromUrlError::NotAction))); + } + + #[test] + fn returns_invalid_without_value() { + let url = Url::parse("cap-desktop://action").expect("parse url"); + let parsed = DeepLinkAction::try_from(&url); + assert!(matches!(parsed, Err(ActionParseFromUrlError::Invalid))); + } +} diff --git a/extensions/raycast/README.md b/extensions/raycast/README.md new file mode 100644 index 0000000000..3c56bf7c95 --- /dev/null +++ b/extensions/raycast/README.md @@ -0,0 +1,33 @@ +# Cap Raycast Extension + +Raycast commands for controlling Cap desktop through deeplinks. + +## Commands + +- Start Recording +- Stop Recording +- Pause Recording +- Resume Recording +- Switch Microphone +- Switch Camera + +Switch commands accept optional arguments. + +- `Switch Microphone` argument: microphone label +- `Switch Camera` argument: camera display name, device id, or model id + +If no argument is provided, Cap switches to the next available device. + +## Development + +Install dependencies: + +```bash +pnpm install +``` + +Typecheck extension sources: + +```bash +pnpm --dir extensions/raycast typecheck +``` diff --git a/extensions/raycast/icon.png b/extensions/raycast/icon.png new file mode 100644 index 0000000000..72dd4dcd07 Binary files /dev/null and b/extensions/raycast/icon.png differ diff --git a/extensions/raycast/package.json b/extensions/raycast/package.json new file mode 100644 index 0000000000..5cc670ea3e --- /dev/null +++ b/extensions/raycast/package.json @@ -0,0 +1,71 @@ +{ + "name": "cap-raycast", + "version": "0.1.0", + "description": "Control Cap desktop recording with Raycast", + "scripts": { + "typecheck": "tsc --noEmit" + }, + "raycast": { + "schemaVersion": 1, + "title": "Cap", + "description": "Control Cap desktop recording", + "icon": "icon.png", + "author": "cap-so", + "categories": [ + "Productivity" + ], + "commands": [ + { + "name": "start-recording", + "title": "Start Recording", + "mode": "no-view" + }, + { + "name": "stop-recording", + "title": "Stop Recording", + "mode": "no-view" + }, + { + "name": "pause-recording", + "title": "Pause Recording", + "mode": "no-view" + }, + { + "name": "resume-recording", + "title": "Resume Recording", + "mode": "no-view" + }, + { + "name": "switch-microphone", + "title": "Switch Microphone", + "mode": "no-view", + "arguments": [ + { + "name": "micLabel", + "type": "text", + "placeholder": "Optional microphone label" + } + ] + }, + { + "name": "switch-camera", + "title": "Switch Camera", + "mode": "no-view", + "arguments": [ + { + "name": "cameraSelector", + "type": "text", + "placeholder": "Optional camera display name/device/model id" + } + ] + } + ] + }, + "dependencies": { + "@raycast/api": "^1.102.0" + }, + "devDependencies": { + "@types/node": "^22.14.1", + "typescript": "^5.8.3" + } +} diff --git a/extensions/raycast/src/lib/deeplink.ts b/extensions/raycast/src/lib/deeplink.ts new file mode 100644 index 0000000000..0b869921b9 --- /dev/null +++ b/extensions/raycast/src/lib/deeplink.ts @@ -0,0 +1,11 @@ +import { closeMainWindow, open, showHUD } from "@raycast/api"; + +type DeepLinkAction = string | Record; + +export async function runDeepLinkAction(action: DeepLinkAction, successMessage: string) { + const value = JSON.stringify(action); + const deeplink = `cap-desktop://action?value=${encodeURIComponent(value)}`; + await closeMainWindow(); + await open(deeplink); + await showHUD(successMessage); +} diff --git a/extensions/raycast/src/pause-recording.ts b/extensions/raycast/src/pause-recording.ts new file mode 100644 index 0000000000..265458539b --- /dev/null +++ b/extensions/raycast/src/pause-recording.ts @@ -0,0 +1,5 @@ +import { runDeepLinkAction } from "./lib/deeplink"; + +export default async function Command() { + await runDeepLinkAction("pause_recording", "Cap pause requested"); +} diff --git a/extensions/raycast/src/resume-recording.ts b/extensions/raycast/src/resume-recording.ts new file mode 100644 index 0000000000..f0459ea96c --- /dev/null +++ b/extensions/raycast/src/resume-recording.ts @@ -0,0 +1,5 @@ +import { runDeepLinkAction } from "./lib/deeplink"; + +export default async function Command() { + await runDeepLinkAction("resume_recording", "Cap resume requested"); +} diff --git a/extensions/raycast/src/start-recording.ts b/extensions/raycast/src/start-recording.ts new file mode 100644 index 0000000000..1c4bda7bca --- /dev/null +++ b/extensions/raycast/src/start-recording.ts @@ -0,0 +1,5 @@ +import { runDeepLinkAction } from "./lib/deeplink"; + +export default async function Command() { + await runDeepLinkAction("start_current_recording", "Cap start requested"); +} diff --git a/extensions/raycast/src/stop-recording.ts b/extensions/raycast/src/stop-recording.ts new file mode 100644 index 0000000000..af0d3aeda6 --- /dev/null +++ b/extensions/raycast/src/stop-recording.ts @@ -0,0 +1,5 @@ +import { runDeepLinkAction } from "./lib/deeplink"; + +export default async function Command() { + await runDeepLinkAction("stop_recording", "Cap stop requested"); +} diff --git a/extensions/raycast/src/switch-camera.ts b/extensions/raycast/src/switch-camera.ts new file mode 100644 index 0000000000..2927ce8194 --- /dev/null +++ b/extensions/raycast/src/switch-camera.ts @@ -0,0 +1,18 @@ +import { LaunchProps } from "@raycast/api"; +import { runDeepLinkAction } from "./lib/deeplink"; + +type CommandArguments = { + cameraSelector?: string; +}; + +export default async function Command(props: LaunchProps<{ arguments: CommandArguments }>) { + const cameraSelector = props.arguments.cameraSelector?.trim(); + await runDeepLinkAction( + { + switch_camera: { + camera_selector: cameraSelector ? cameraSelector : null, + }, + }, + "Cap camera switch requested", + ); +} diff --git a/extensions/raycast/src/switch-microphone.ts b/extensions/raycast/src/switch-microphone.ts new file mode 100644 index 0000000000..416e8608ab --- /dev/null +++ b/extensions/raycast/src/switch-microphone.ts @@ -0,0 +1,18 @@ +import { LaunchProps } from "@raycast/api"; +import { runDeepLinkAction } from "./lib/deeplink"; + +type CommandArguments = { + micLabel?: string; +}; + +export default async function Command(props: LaunchProps<{ arguments: CommandArguments }>) { + const micLabel = props.arguments.micLabel?.trim(); + await runDeepLinkAction( + { + switch_microphone: { + mic_label: micLabel ? micLabel : null, + }, + }, + "Cap microphone switch requested", + ); +} diff --git a/extensions/raycast/tsconfig.json b/extensions/raycast/tsconfig.json new file mode 100644 index 0000000000..bcf78087a9 --- /dev/null +++ b/extensions/raycast/tsconfig.json @@ -0,0 +1,13 @@ +{ + "compilerOptions": { + "target": "ES2022", + "module": "ESNext", + "moduleResolution": "Bundler", + "strict": true, + "jsx": "react-jsx", + "esModuleInterop": true, + "skipLibCheck": true, + "types": ["node"] + }, + "include": ["src"] +} diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index a3c2ec83f7..331a322873 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -885,6 +885,19 @@ importers: specifier: ^10.0.0 version: 10.0.0 + extensions/raycast: + dependencies: + '@raycast/api': + specifier: ^1.102.0 + version: 1.104.6(@types/node@22.15.17) + devDependencies: + '@types/node': + specifier: ^22.14.1 + version: 22.15.17 + typescript: + specifier: ^5.8.3 + version: 5.8.3 + infra: dependencies: '@pulumi/github': @@ -2408,9 +2421,6 @@ packages: '@emnapi/core@1.7.1': resolution: {integrity: sha512-o1uhUASyo921r2XtHYOHy7gdkGLge8ghBEQHMWmyJFoXlpU58kIrhhN3w26lpQb6dspetweapMn2CSNwQ8I4wg==} - '@emnapi/runtime@1.4.3': - resolution: {integrity: sha512-pBPWdu6MLKROBX05wSNKcNb++m5Er+KQ9QkB+WVM+pW2Kx9hoSrVTnu3BdkI5eBLZoKu/J6mW/B6i6bJB2ytXQ==} - '@emnapi/runtime@1.5.0': resolution: {integrity: sha512-97/BJ3iXHww3djw6hYIfErCZFee7qCtrneuLa20UXFCOTCfBM2cvQHjWJ2EG0s0MtdNwInarqCTz35i4wWXHsQ==} @@ -3867,6 +3877,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==} @@ -4322,10 +4466,26 @@ packages: resolution: {integrity: sha512-BMWGvJrzn5PnG60gTNFEvaBT0jvGNiJCKN4aJBYP6E7Bq/Y5XPnxPrkj7ZZs/Jsd1oVn6K/JRmF6gWpv72DOew==} engines: {node: '>=18.0.0'} + '@oclif/core@4.8.0': + resolution: {integrity: sha512-jteNUQKgJHLHFbbz806aGZqf+RJJ7t4gwF4MYa8fCwCxQ8/klJNWc0MvaJiBebk7Mc+J39mdlsB4XraaCKznFw==} + engines: {node: '>=18.0.0'} + + '@oclif/plugin-autocomplete@3.2.40': + resolution: {integrity: sha512-HCfDuUV3l5F5Wz7SKkaoFb+OMQ5vKul8zvsPNgI0QbZcQuGHmn3svk+392wSfXboyA1gq8kzEmKPAoQK6r6UNw==} + engines: {node: '>=18.0.0'} + '@oclif/plugin-help@6.2.31': resolution: {integrity: sha512-o4xR98DEFf+VqY+M9B3ZooTm2T/mlGvyBHwHcnsPJCEnvzHqEA9xUlCUK4jm7FBXHhkppziMgCC2snsueLoIpQ==} 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.74': + resolution: {integrity: sha512-6RD/EuIUGxAYR45nMQg+nw+PqwCXUxkR6Eyn+1fvbVjtb9d+60OPwB77LCRUI4zKNI+n0LOFaMniEdSpb+A7kQ==} + engines: {node: '>=18.0.0'} + '@octokit/app@15.1.6': resolution: {integrity: sha512-WELCamoCJo9SN0lf3SWZccf68CF0sBNPQuLYmZ/n87p5qvBJDe9aBtr5dHkh7T9nxWZ608pizwsUbypSzZAiUw==} engines: {node: '>= 18'} @@ -4701,8 +4861,8 @@ packages: resolution: {integrity: sha512-JD6DerIKdJGmRp4jQyX5FlrQjA4tjOw1cvfsPAZXfOOEErMUHjPcPSICS+6WnM0nB0efSFARh0KAZss+bvExOA==} engines: {node: '>=14'} - '@oxc-project/types@0.113.0': - resolution: {integrity: sha512-Tp3XmgxwNQ9pEN9vxgJBAqdRamHibi76iowQ38O2I4PMpcvNRQNVsU2n1x1nv9yh0XoTrGFzf7cZSGxmixxrhA==} + '@oxc-project/types@0.114.0': + resolution: {integrity: sha512-//nBfbzHQHvJs8oFIjv6coZ6uxQ4alLfiPe6D5vit6c4pmxATHHlVwgB1k+Hv4yoAMyncdxgRBF5K4BYWUCzvA==} '@oxc-project/types@0.94.0': resolution: {integrity: sha512-+UgQT/4o59cZfH6Cp7G0hwmqEQ0wE+AdIwhikdwnhWI9Dp8CgSY081+Q3O67/wq3VJu8mgUEB93J9EHHn70fOw==} @@ -5486,6 +5646,22 @@ packages: '@radix-ui/rect@1.1.1': resolution: {integrity: sha512-HPwpGIzkl28mWyZqG52jiqDJ12waP11Pa1lGoiyUkIEuMLBP0oeK/C89esbXrxsky5we7dfd8U58nm0SgAWpVw==} + '@raycast/api@1.104.6': + resolution: {integrity: sha512-W3UnZrfh1EH9mteQQOibeUvniDnVsbRgcfSUgVWFTGuI6mzKLFzoM8mD6n5amYQM51JVvbuJbaqtfMqsTmnQCQ==} + engines: {node: '>=22.14.0'} + hasBin: true + peerDependencies: + '@types/node': 22.13.10 + '@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==} peerDependencies: @@ -5652,8 +5828,8 @@ packages: cpu: [arm64] os: [android] - '@rolldown/binding-android-arm64@1.0.0-rc.4': - resolution: {integrity: sha512-vRq9f4NzvbdZavhQbjkJBx7rRebDKYR9zHfO/Wg486+I7bSecdUapzCm5cyXoK+LHokTxgSq7A5baAXUZkIz0w==} + '@rolldown/binding-android-arm64@1.0.0-rc.5': + resolution: {integrity: sha512-zCEmUrt1bggwgBgeKLxNj217J1OrChrp3jJt24VK9jAharSTeVaHODNL+LpcQVhRz+FktYWfT9cjo5oZ99ZLpg==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] os: [android] @@ -5664,8 +5840,8 @@ packages: cpu: [arm64] os: [darwin] - '@rolldown/binding-darwin-arm64@1.0.0-rc.4': - resolution: {integrity: sha512-kFgEvkWLqt3YCgKB5re9RlIrx9bRsvyVUnaTakEpOPuLGzLpLapYxE9BufJNvPg8GjT6mB1alN4yN1NjzoeM8Q==} + '@rolldown/binding-darwin-arm64@1.0.0-rc.5': + resolution: {integrity: sha512-ZP9xb9lPAex36pvkNWCjSEJW/Gfdm9I3ssiqOFLmpZ/vosPXgpoGxCmh+dX1Qs+/bWQE6toNFXWWL8vYoKoK9Q==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] os: [darwin] @@ -5676,8 +5852,8 @@ packages: cpu: [x64] os: [darwin] - '@rolldown/binding-darwin-x64@1.0.0-rc.4': - resolution: {integrity: sha512-JXmaOJGsL/+rsmMfutcDjxWM2fTaVgCHGoXS7nE8Z3c9NAYjGqHvXrAhMUZvMpHS/k7Mg+X7n/MVKb7NYWKKww==} + '@rolldown/binding-darwin-x64@1.0.0-rc.5': + resolution: {integrity: sha512-7IdrPunf6dp9mywMgTOKMMGDnMHQ6+h5gRl6LW8rhD8WK2kXX0IwzcM5Zc0B5J7xQs8QWOlKjv8BJsU/1CD3pg==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [x64] os: [darwin] @@ -5688,8 +5864,8 @@ packages: cpu: [x64] os: [freebsd] - '@rolldown/binding-freebsd-x64@1.0.0-rc.4': - resolution: {integrity: sha512-ep3Catd6sPnHTM0P4hNEvIv5arnDvk01PfyJIJ+J3wVCG1eEaPo09tvFqdtcaTrkwQy0VWR24uz+cb4IsK53Qw==} + '@rolldown/binding-freebsd-x64@1.0.0-rc.5': + resolution: {integrity: sha512-o/JCk+dL0IN68EBhZ4DqfsfvxPfMeoM6cJtxORC1YYoxGHZyth2Kb2maXDb4oddw2wu8iIbnYXYPEzBtAF5CAg==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [x64] os: [freebsd] @@ -5700,8 +5876,8 @@ packages: cpu: [arm] os: [linux] - '@rolldown/binding-linux-arm-gnueabihf@1.0.0-rc.4': - resolution: {integrity: sha512-LwA5ayKIpnsgXJEwWc3h8wPiS33NMIHd9BhsV92T8VetVAbGe2qXlJwNVDGHN5cOQ22R9uYvbrQir2AB+ntT2w==} + '@rolldown/binding-linux-arm-gnueabihf@1.0.0-rc.5': + resolution: {integrity: sha512-IIBwTtA6VwxQLcEgq2mfrUgam7VvPZjhd/jxmeS1npM+edWsrrpRLHUdze+sk4rhb8/xpP3flemgcZXXUW6ukw==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm] os: [linux] @@ -5712,8 +5888,8 @@ packages: cpu: [arm64] os: [linux] - '@rolldown/binding-linux-arm64-gnu@1.0.0-rc.4': - resolution: {integrity: sha512-AC1WsGdlV1MtGay/OQ4J9T7GRadVnpYRzTcygV1hKnypbYN20Yh4t6O1Sa2qRBMqv1etulUknqXjc3CTIsBu6A==} + '@rolldown/binding-linux-arm64-gnu@1.0.0-rc.5': + resolution: {integrity: sha512-KSol1De1spMZL+Xg7K5IBWXIvRWv7+pveaxFWXpezezAG7CS6ojzRjtCGCiLxQricutTAi/LkNWKMsd2wNhMKQ==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] os: [linux] @@ -5724,8 +5900,8 @@ packages: cpu: [arm64] os: [linux] - '@rolldown/binding-linux-arm64-musl@1.0.0-rc.4': - resolution: {integrity: sha512-lU+6rgXXViO61B4EudxtVMXSOfiZONR29Sys5VGSetUY7X8mg9FCKIIjcPPj8xNDeYzKl+H8F/qSKOBVFJChCQ==} + '@rolldown/binding-linux-arm64-musl@1.0.0-rc.5': + resolution: {integrity: sha512-WFljyDkxtXRlWxMjxeegf7xMYXxUr8u7JdXlOEWKYgDqEgxUnSEsVDxBiNWQ1D5kQKwf8Wo4sVKEYPRhCdsjwA==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] os: [linux] @@ -5736,8 +5912,8 @@ packages: cpu: [x64] os: [linux] - '@rolldown/binding-linux-x64-gnu@1.0.0-rc.4': - resolution: {integrity: sha512-DZaN1f0PGp/bSvKhtw50pPsnln4T13ycDq1FrDWRiHmWt1JeW+UtYg9touPFf8yt993p8tS2QjybpzKNTxYEwg==} + '@rolldown/binding-linux-x64-gnu@1.0.0-rc.5': + resolution: {integrity: sha512-CUlplTujmbDWp2gamvrqVKi2Or8lmngXT1WxsizJfts7JrvfGhZObciaY/+CbdbS9qNnskvwMZNEhTPrn7b+WA==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [x64] os: [linux] @@ -5748,8 +5924,8 @@ packages: cpu: [x64] os: [linux] - '@rolldown/binding-linux-x64-musl@1.0.0-rc.4': - resolution: {integrity: sha512-RnGxwZLN7fhMMAItnD6dZ7lvy+TI7ba+2V54UF4dhaWa/p8I/ys1E73KO6HmPmgz92ZkfD8TXS1IMV8+uhbR9g==} + '@rolldown/binding-linux-x64-musl@1.0.0-rc.5': + resolution: {integrity: sha512-wdf7g9NbVZCeAo2iGhsjJb7I8ZFfs6X8bumfrWg82VK+8P6AlLXwk48a1ASiJQDTS7Svq2xVzZg3sGO2aXpHRA==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [x64] os: [linux] @@ -5760,8 +5936,8 @@ packages: cpu: [arm64] os: [openharmony] - '@rolldown/binding-openharmony-arm64@1.0.0-rc.4': - resolution: {integrity: sha512-6lcI79+X8klGiGd8yHuTgQRjuuJYNggmEml+RsyN596P23l/zf9FVmJ7K0KVKkFAeYEdg0iMUKyIxiV5vebDNQ==} + '@rolldown/binding-openharmony-arm64@1.0.0-rc.5': + resolution: {integrity: sha512-0CWY7ubu12nhzz+tkpHjoG3IRSTlWYe0wrfJRf4qqjqQSGtAYgoL9kwzdvlhaFdZ5ffVeyYw9qLsChcjUMEloQ==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] os: [openharmony] @@ -5771,8 +5947,8 @@ packages: engines: {node: '>=14.0.0'} cpu: [wasm32] - '@rolldown/binding-wasm32-wasi@1.0.0-rc.4': - resolution: {integrity: sha512-wz7ohsKCAIWy91blZ/1FlpPdqrsm1xpcEOQVveWoL6+aSPKL4VUcoYmmzuLTssyZxRpEwzuIxL/GDsvpjaBtOw==} + '@rolldown/binding-wasm32-wasi@1.0.0-rc.5': + resolution: {integrity: sha512-LztXnGzv6t2u830mnZrFLRVqT/DPJ9DL4ZTz/y93rqUVkeHjMMYIYaFj+BUthiYxbVH9dH0SZYufETspKY/NhA==} engines: {node: '>=14.0.0'} cpu: [wasm32] @@ -5782,8 +5958,8 @@ packages: cpu: [arm64] os: [win32] - '@rolldown/binding-win32-arm64-msvc@1.0.0-rc.4': - resolution: {integrity: sha512-cfiMrfuWCIgsFmcVG0IPuO6qTRHvF7NuG3wngX1RZzc6dU8FuBFb+J3MIR5WrdTNozlumfgL4cvz+R4ozBCvsQ==} + '@rolldown/binding-win32-arm64-msvc@1.0.0-rc.5': + resolution: {integrity: sha512-jUct1XVeGtyjqJXEAfvdFa8xoigYZ2rge7nYEm70ppQxpfH9ze2fbIrpHmP2tNM2vL/F6Dd0CpXhpjPbC6bSxQ==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] os: [win32] @@ -5800,8 +5976,8 @@ packages: cpu: [x64] os: [win32] - '@rolldown/binding-win32-x64-msvc@1.0.0-rc.4': - resolution: {integrity: sha512-p6UeR9y7ht82AH57qwGuFYn69S6CZ7LLKdCKy/8T3zS9VTrJei2/CGsTUV45Da4Z9Rbhc7G4gyWQ/Ioamqn09g==} + '@rolldown/binding-win32-x64-msvc@1.0.0-rc.5': + resolution: {integrity: sha512-VQ8F9ld5gw29epjnVGdrx8ugiLTe8BMqmhDYy7nGbdeDo4HAt4bgdZvLbViEhg7DZyHLpiEUlO5/jPSUrIuxRQ==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [x64] os: [win32] @@ -5809,8 +5985,8 @@ packages: '@rolldown/pluginutils@1.0.0-beta.42': resolution: {integrity: sha512-N7pQzk9CyE7q0bBN/q0J8s6Db279r5kUZc6d7/wWRe9/zXqC52HQovVyu6iXPIDY4BEzzgbVLhVFXrOuGJ22ZQ==} - '@rolldown/pluginutils@1.0.0-rc.4': - resolution: {integrity: sha512-1BrrmTu0TWfOP1riA8uakjFc9bpIUGzVKETsOtzY39pPga8zELGDl8eu1Dx7/gjM5CAz14UknsUMpBO8L+YntQ==} + '@rolldown/pluginutils@1.0.0-rc.5': + resolution: {integrity: sha512-RxlLX/DPoarZ9PtxVrQgZhPoor987YtKQqCo5zkjX+0S0yLJ7Vv515Wk6+xtTL67VONKJKxETWZwuZjss2idYw==} '@rollup/plugin-alias@5.1.1': resolution: {integrity: sha512-PR9zDb+rOzkRb2VD+EuKB7UC41vU5DIwZ5qqCpk0KJudcWAyi8rvYOhS7+L5aZCspw1stTViLgN5v6FF1p5cgQ==} @@ -6827,10 +7003,10 @@ packages: react-dom: optional: true - '@storybook/builder-vite@10.3.0-alpha.6': - resolution: {integrity: sha512-wmMJN+Q7E7bhjwfiaXdPkUkDNysd1pjr1GffkoBHq8I2tsmXNKPVEBnw5iZMRjeEckL9nrUUDahuIIQb6KpweQ==} + '@storybook/builder-vite@10.3.0-alpha.7': + resolution: {integrity: sha512-CwmRck537/nXz64MEjr9Xe0wbaN2IZW/WWRonzA4o37lE+QGPk7BPSLkjw+k8gP/CBb4/COyX3Rj4mm4bKbYgQ==} peerDependencies: - storybook: ^10.3.0-alpha.6 + storybook: ^10.3.0-alpha.7 vite: ^5.0.0 || ^6.0.0 || ^7.0.0 '@storybook/core@8.6.12': @@ -6841,12 +7017,12 @@ packages: prettier: optional: true - '@storybook/csf-plugin@10.3.0-alpha.6': - resolution: {integrity: sha512-/elNU26xT748eDS1wpQhlqR86ujHUuPHOrvGGZeW9oRuU5hOzGyj3G9N5ccN+QQSRDeFcsHOC3M51Gk5VDlC0Q==} + '@storybook/csf-plugin@10.3.0-alpha.7': + resolution: {integrity: sha512-nrA2X5J902ugYIjvQisCrjqJqnNMfFueMl6kWIidsnFKvj8MxyimROs4FrrrWnz9UizeeO0d7y00C4G7jxKLfw==} peerDependencies: esbuild: '*' rollup: '*' - storybook: ^10.3.0-alpha.6 + storybook: ^10.3.0-alpha.7 vite: '*' webpack: '*' peerDependenciesMeta: @@ -8862,6 +9038,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'} @@ -8937,6 +9116,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==} @@ -10356,6 +10539,9 @@ packages: fast-levenshtein@2.0.6: resolution: {integrity: sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==} + fast-levenshtein@3.0.0: + resolution: {integrity: sha512-hKKNajm46uNmTlhHSyZkmToAc56uZJwYq7yrciZjqOxnlfQwERDQJmHPUp7m1m9wx8vgOe8IaCKZ5Kv2k1DdCQ==} + fast-uri@3.0.6: resolution: {integrity: sha512-Atfo14OibSv5wAp4VWNsFYE1AchQRTv9cBGWET4pZWHzYshFSS9NQI6I57rdKn9croWVMbYFbLhJ+yJvmZIIHw==} @@ -10367,6 +10553,10 @@ packages: resolution: {integrity: sha512-pfX9uG9Ki0yekDHx2SiuRIyFdyAr1kMIMitPvb0YBo8SUfKvia7w7FIyd/l6av85pFYRhZscS75MwMnbvY+hcQ==} 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==} @@ -12177,6 +12367,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==} @@ -13283,6 +13477,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'} @@ -13527,8 +13725,8 @@ packages: engines: {node: ^20.19.0 || >=22.12.0} hasBin: true - rolldown@1.0.0-rc.4: - resolution: {integrity: sha512-V2tPDUrY3WSevrvU2E41ijZlpF+5PbZu4giH+VpNraaadsJGHa4fR6IFwsocVwEXDoAdIv5qgPPxgrvKAOIPtA==} + rolldown@1.0.0-rc.5: + resolution: {integrity: sha512-0AdalTs6hNTioaCYIkAa7+xsmHBfU5hCNclZnM/lp7lGGDuUOb6N4BVNtwiomybbencDjq/waKjTImqiGCs5sw==} engines: {node: ^20.19.0 || >=22.12.0} hasBin: true @@ -14164,10 +14362,6 @@ packages: supermemory@4.11.1: resolution: {integrity: sha512-L5I/inWEIjtD+kw/2TAZ7ZsZa3kCYzlXXeNHd09ueFoExvCHLjzTW4SCnN6GjbhE7CZUcwTXA9SttZvihLa8gQ==} - supports-color@10.0.0: - resolution: {integrity: sha512-HRVVSbCCMbj7/kdWF9Q+bbckjBHLtHMEoJWlkmYzzdwhYMkjkOwubLM6t7NbWKjgKamGDrWL1++KrjUO1t9oAQ==} - engines: {node: '>=18'} - supports-color@10.2.2: resolution: {integrity: sha512-SS+jx45GF1QjgEXQx4NJZV9ImqmO2NPz5FNsIHrsDjh2YsHnawpan7SNQ1o8NuhrbHZy9AZhIoCUiCeaW/C80g==} engines: {node: '>=18'} @@ -14836,10 +15030,6 @@ packages: resolution: {integrity: sha512-6NCPkv1ClwH+/BGE9QeoTIl09nuiAt0gS28nn1PvYXsGKRwM2TCbFA2QiilmehPDTXIe684k4rZI1yl3A1PCUw==} engines: {node: '>=18.12.0'} - unplugin@2.3.2: - resolution: {integrity: sha512-3n7YA46rROb3zSj8fFxtxC/PqoyvYQ0llwz9wtUPUutr9ig09C8gGo5CWCwHrUzlqC1LLR43kxp5vEIyH1ac1w==} - engines: {node: '>=18.12.0'} - unrs-resolver@1.7.2: resolution: {integrity: sha512-BBKpaylOW8KbHsu378Zky/dGh4ckT/4NW/0SHRABdqRLcQJ2dAOjDo9g97p04sWflm0kqPqpUatxReNV/dqI5A==} @@ -15438,6 +15628,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'} @@ -15588,6 +15782,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'} @@ -17714,11 +17912,6 @@ snapshots: tslib: 2.8.1 optional: true - '@emnapi/runtime@1.4.3': - dependencies: - tslib: 2.8.1 - optional: true - '@emnapi/runtime@1.5.0': dependencies: tslib: 2.8.1 @@ -18623,7 +18816,7 @@ snapshots: '@img/sharp-wasm32@0.33.5': dependencies: - '@emnapi/runtime': 1.4.3 + '@emnapi/runtime': 1.7.1 optional: true '@img/sharp-wasm32@0.34.4': @@ -18646,6 +18839,131 @@ snapshots: '@img/sharp-win32-x64@0.34.4': 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 @@ -18813,7 +19131,7 @@ snapshots: https-proxy-agent: 7.0.6 node-fetch: 2.7.0(encoding@0.1.13) nopt: 8.1.0 - semver: 7.7.2 + semver: 7.7.3 tar: 7.4.3 transitivePeerDependencies: - encoding @@ -19050,7 +19368,7 @@ snapshots: precinct: 11.0.5 require-package-name: 2.0.1 resolve: 2.0.0-next.5 - semver: 7.7.2 + semver: 7.7.3 tmp-promise: 3.0.3 toml: 3.0.0 unixify: 1.0.0 @@ -19181,7 +19499,7 @@ snapshots: promise-all-reject-late: 1.0.1 promise-call-limit: 3.0.2 read-package-json-fast: 3.0.2 - semver: 7.7.2 + semver: 7.7.3 ssri: 10.0.6 treeverse: 3.0.0 walk-up-path: 3.0.1 @@ -19191,7 +19509,7 @@ snapshots: '@npmcli/fs@3.1.1': dependencies: - semver: 7.7.2 + semver: 7.7.3 '@npmcli/git@5.0.8': dependencies: @@ -19202,7 +19520,7 @@ snapshots: proc-log: 4.2.0 promise-inflight: 1.0.1 promise-retry: 2.0.1 - semver: 7.7.2 + semver: 7.7.3 which: 4.0.0 transitivePeerDependencies: - bluebird @@ -19225,7 +19543,7 @@ snapshots: json-parse-even-better-errors: 3.0.2 pacote: 18.0.6 proc-log: 4.2.0 - semver: 7.7.2 + semver: 7.7.3 transitivePeerDependencies: - bluebird - supports-color @@ -19242,7 +19560,7 @@ snapshots: json-parse-even-better-errors: 3.0.2 normalize-package-data: 6.0.2 proc-log: 4.2.0 - semver: 7.7.2 + semver: 7.7.3 transitivePeerDependencies: - bluebird @@ -19322,12 +19640,55 @@ snapshots: transitivePeerDependencies: - typescript + '@oclif/core@4.8.0': + 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: 9.0.5 + semver: 7.7.3 + string-width: 4.2.3 + supports-color: 8.1.1 + tinyglobby: 0.2.15 + widest-line: 3.1.0 + wordwrap: 1.0.0 + wrap-ansi: 7.0.0 + + '@oclif/plugin-autocomplete@3.2.40': + dependencies: + '@oclif/core': 4.8.0 + 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.31(typescript@5.8.3)': dependencies: '@oclif/core': 4.0.0(typescript@5.8.3) transitivePeerDependencies: - typescript + '@oclif/plugin-help@6.2.37': + dependencies: + '@oclif/core': 4.8.0 + + '@oclif/plugin-not-found@3.2.74(@types/node@22.15.17)': + dependencies: + '@inquirer/prompts': 7.10.1(@types/node@22.15.17) + '@oclif/core': 4.8.0 + ansis: 3.17.0 + fast-levenshtein: 3.0.0 + transitivePeerDependencies: + - '@types/node' + '@octokit/app@15.1.6': dependencies: '@octokit/auth-app': 7.2.1 @@ -19756,7 +20117,7 @@ snapshots: '@opentelemetry/propagator-b3': 1.30.1(@opentelemetry/api@1.9.0) '@opentelemetry/propagator-jaeger': 1.30.1(@opentelemetry/api@1.9.0) '@opentelemetry/sdk-trace-base': 1.30.1(@opentelemetry/api@1.9.0) - semver: 7.7.2 + semver: 7.7.3 '@opentelemetry/sdk-trace-node@2.1.0(@opentelemetry/api@1.9.0)': dependencies: @@ -19779,7 +20140,7 @@ snapshots: '@opentelemetry/semantic-conventions@1.37.0': {} - '@oxc-project/types@0.113.0': {} + '@oxc-project/types@0.114.0': {} '@oxc-project/types@0.94.0': {} @@ -19892,7 +20253,7 @@ snapshots: dependencies: '@poppinss/colors': 4.1.4 '@sindresorhus/is': 7.0.1 - supports-color: 10.0.0 + supports-color: 10.2.2 '@poppinss/exception@1.2.1': {} @@ -20611,6 +20972,19 @@ snapshots: '@radix-ui/rect@1.1.1': {} + '@raycast/api@1.104.6(@types/node@22.15.17)': + dependencies: + '@oclif/core': 4.8.0 + '@oclif/plugin-autocomplete': 3.2.40 + '@oclif/plugin-help': 6.2.37 + '@oclif/plugin-not-found': 3.2.74(@types/node@22.15.17) + esbuild: 0.25.12 + 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 @@ -20758,61 +21132,61 @@ snapshots: '@rolldown/binding-android-arm64@1.0.0-beta.42': optional: true - '@rolldown/binding-android-arm64@1.0.0-rc.4': + '@rolldown/binding-android-arm64@1.0.0-rc.5': optional: true '@rolldown/binding-darwin-arm64@1.0.0-beta.42': optional: true - '@rolldown/binding-darwin-arm64@1.0.0-rc.4': + '@rolldown/binding-darwin-arm64@1.0.0-rc.5': optional: true '@rolldown/binding-darwin-x64@1.0.0-beta.42': optional: true - '@rolldown/binding-darwin-x64@1.0.0-rc.4': + '@rolldown/binding-darwin-x64@1.0.0-rc.5': optional: true '@rolldown/binding-freebsd-x64@1.0.0-beta.42': optional: true - '@rolldown/binding-freebsd-x64@1.0.0-rc.4': + '@rolldown/binding-freebsd-x64@1.0.0-rc.5': optional: true '@rolldown/binding-linux-arm-gnueabihf@1.0.0-beta.42': optional: true - '@rolldown/binding-linux-arm-gnueabihf@1.0.0-rc.4': + '@rolldown/binding-linux-arm-gnueabihf@1.0.0-rc.5': optional: true '@rolldown/binding-linux-arm64-gnu@1.0.0-beta.42': optional: true - '@rolldown/binding-linux-arm64-gnu@1.0.0-rc.4': + '@rolldown/binding-linux-arm64-gnu@1.0.0-rc.5': optional: true '@rolldown/binding-linux-arm64-musl@1.0.0-beta.42': optional: true - '@rolldown/binding-linux-arm64-musl@1.0.0-rc.4': + '@rolldown/binding-linux-arm64-musl@1.0.0-rc.5': optional: true '@rolldown/binding-linux-x64-gnu@1.0.0-beta.42': optional: true - '@rolldown/binding-linux-x64-gnu@1.0.0-rc.4': + '@rolldown/binding-linux-x64-gnu@1.0.0-rc.5': optional: true '@rolldown/binding-linux-x64-musl@1.0.0-beta.42': optional: true - '@rolldown/binding-linux-x64-musl@1.0.0-rc.4': + '@rolldown/binding-linux-x64-musl@1.0.0-rc.5': optional: true '@rolldown/binding-openharmony-arm64@1.0.0-beta.42': optional: true - '@rolldown/binding-openharmony-arm64@1.0.0-rc.4': + '@rolldown/binding-openharmony-arm64@1.0.0-rc.5': optional: true '@rolldown/binding-wasm32-wasi@1.0.0-beta.42': @@ -20820,7 +21194,7 @@ snapshots: '@napi-rs/wasm-runtime': 1.0.6 optional: true - '@rolldown/binding-wasm32-wasi@1.0.0-rc.4': + '@rolldown/binding-wasm32-wasi@1.0.0-rc.5': dependencies: '@napi-rs/wasm-runtime': 1.1.1 optional: true @@ -20828,7 +21202,7 @@ snapshots: '@rolldown/binding-win32-arm64-msvc@1.0.0-beta.42': optional: true - '@rolldown/binding-win32-arm64-msvc@1.0.0-rc.4': + '@rolldown/binding-win32-arm64-msvc@1.0.0-rc.5': optional: true '@rolldown/binding-win32-ia32-msvc@1.0.0-beta.42': @@ -20837,12 +21211,12 @@ snapshots: '@rolldown/binding-win32-x64-msvc@1.0.0-beta.42': optional: true - '@rolldown/binding-win32-x64-msvc@1.0.0-rc.4': + '@rolldown/binding-win32-x64-msvc@1.0.0-rc.5': optional: true '@rolldown/pluginutils@1.0.0-beta.42': {} - '@rolldown/pluginutils@1.0.0-rc.4': {} + '@rolldown/pluginutils@1.0.0-rc.5': {} '@rollup/plugin-alias@5.1.1(rollup@4.40.2)': optionalDependencies: @@ -20907,7 +21281,7 @@ snapshots: dependencies: '@types/estree': 1.0.7 estree-walker: 2.0.2 - picomatch: 4.0.2 + picomatch: 4.0.3 optionalDependencies: rollup: 4.40.2 @@ -22195,9 +22569,9 @@ snapshots: react: 19.1.1 react-dom: 19.1.1(react@19.1.1) - '@storybook/builder-vite@10.3.0-alpha.6(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)(terser@5.44.0)(yaml@2.8.1))(webpack@5.101.3(esbuild@0.25.5))': + '@storybook/builder-vite@10.3.0-alpha.7(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)(terser@5.44.0)(yaml@2.8.1))(webpack@5.101.3(esbuild@0.25.5))': dependencies: - '@storybook/csf-plugin': 10.3.0-alpha.6(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)(terser@5.44.0)(yaml@2.8.1))(webpack@5.101.3(esbuild@0.25.5)) + '@storybook/csf-plugin': 10.3.0-alpha.7(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)(terser@5.44.0)(yaml@2.8.1))(webpack@5.101.3(esbuild@0.25.5)) 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)(terser@5.44.0)(yaml@2.8.1) @@ -22227,7 +22601,7 @@ snapshots: - supports-color - utf-8-validate - '@storybook/csf-plugin@10.3.0-alpha.6(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)(terser@5.44.0)(yaml@2.8.1))(webpack@5.101.3(esbuild@0.25.5))': + '@storybook/csf-plugin@10.3.0-alpha.7(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)(terser@5.44.0)(yaml@2.8.1))(webpack@5.101.3(esbuild@0.25.5))': dependencies: storybook: 8.6.12(prettier@3.7.4) unplugin: 2.3.10 @@ -23042,7 +23416,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': {} @@ -23068,7 +23442,6 @@ snapshots: '@types/node@22.15.17': dependencies: undici-types: 6.21.0 - optional: true '@types/normalize-package-data@2.4.4': {} @@ -23266,7 +23639,7 @@ snapshots: '@typescript-eslint/typescript-estree': 5.62.0(typescript@5.8.3) eslint: 8.57.1 eslint-scope: 5.1.1 - semver: 7.7.1 + semver: 7.7.3 transitivePeerDependencies: - supports-color - typescript @@ -23281,7 +23654,7 @@ snapshots: '@typescript-eslint/typescript-estree': 5.62.0(typescript@5.8.3) eslint: 9.30.1(jiti@2.6.1) eslint-scope: 5.1.1 - semver: 7.7.1 + semver: 7.7.3 transitivePeerDependencies: - supports-color - typescript @@ -23456,10 +23829,10 @@ snapshots: '@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.9)(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.9)(mysql2@3.15.2))(encoding@0.1.13)(ioredis@5.6.1)(jiti@2.6.1)(mysql2@3.15.2)(terser@5.44.0)(xml2js@0.6.2)(yaml@2.8.1))': dependencies: '@babel/parser': 7.27.2 - acorn: 8.14.1 - acorn-jsx: 5.3.2(acorn@8.14.1) + acorn: 8.15.0 + acorn-jsx: 5.3.2(acorn@8.15.0) acorn-loose: 8.5.0 - acorn-typescript: 1.4.13(acorn@8.14.1) + acorn-typescript: 1.4.13(acorn@8.15.0) astring: 1.9.0 magicast: 0.2.11 recast: 0.23.11 @@ -23469,9 +23842,9 @@ snapshots: '@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.9)(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.9)(mysql2@3.15.2))(encoding@0.1.13)(ioredis@5.6.1)(jiti@2.6.1)(mysql2@3.15.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.9)(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.9)(mysql2@3.15.2))(encoding@0.1.13)(ioredis@5.6.1)(jiti@2.6.1)(mysql2@3.15.2)(terser@5.44.0)(xml2js@0.6.2)(yaml@2.8.1)) - acorn: 8.14.1 + acorn: 8.15.0 acorn-loose: 8.5.0 - acorn-typescript: 1.4.13(acorn@8.14.1) + acorn-typescript: 1.4.13(acorn@8.15.0) astring: 1.9.0 magicast: 0.2.11 recast: 0.23.11 @@ -24054,10 +24427,6 @@ snapshots: dependencies: acorn: 7.4.1 - acorn-jsx@5.3.2(acorn@8.14.1): - dependencies: - acorn: 8.14.1 - acorn-jsx@5.3.2(acorn@8.15.0): dependencies: acorn: 8.15.0 @@ -24066,9 +24435,9 @@ snapshots: dependencies: acorn: 8.15.0 - acorn-typescript@1.4.13(acorn@8.14.1): + acorn-typescript@1.4.13(acorn@8.15.0): dependencies: - acorn: 8.14.1 + acorn: 8.15.0 acorn-walk@8.3.2: {} @@ -24744,6 +25113,8 @@ snapshots: character-reference-invalid@2.0.1: {} + chardet@2.1.1: {} + check-error@2.1.1: {} chokidar@3.6.0: @@ -24802,6 +25173,8 @@ snapshots: cli-spinners@2.9.2: {} + cli-width@4.1.0: {} + client-only@0.0.1: {} clipanion@3.2.1(typanion@3.14.0): @@ -26384,8 +26757,8 @@ snapshots: espree@9.6.1: dependencies: - acorn: 8.14.1 - acorn-jsx: 5.3.2(acorn@8.14.1) + acorn: 8.15.0 + acorn-jsx: 5.3.2(acorn@8.15.0) eslint-visitor-keys: 3.4.3 esprima@4.0.1: {} @@ -26597,6 +26970,10 @@ snapshots: fast-levenshtein@2.0.6: {} + fast-levenshtein@3.0.0: + dependencies: + fastest-levenshtein: 1.0.16 + fast-uri@3.0.6: {} fast-xml-parser@4.4.1: @@ -26607,6 +26984,8 @@ snapshots: dependencies: strnum: 2.1.1 + fastest-levenshtein@1.0.16: {} + fastq@1.19.1: dependencies: reusify: 1.1.0 @@ -27998,7 +28377,7 @@ snapshots: make-dir@4.0.0: dependencies: - semver: 7.7.2 + semver: 7.7.3 make-error@1.3.6: optional: true @@ -28747,6 +29126,8 @@ snapshots: mustache@4.2.0: {} + mute-stream@2.0.0: {} + mux-embed@5.9.0: {} mysql2@3.15.2: @@ -28928,7 +29309,7 @@ snapshots: defu: 6.1.4 destr: 2.0.5 dot-prop: 9.0.0 - esbuild: 0.25.5 + esbuild: 0.25.12 escape-string-regexp: 5.0.0 etag: 1.8.1 exsolve: 1.0.5 @@ -28958,7 +29339,7 @@ snapshots: rollup: 4.40.2 rollup-plugin-visualizer: 5.14.0(rollup@4.40.2) scule: 1.3.0 - semver: 7.7.2 + semver: 7.7.3 serve-placeholder: 2.0.2 serve-static: 2.2.0 source-map: 0.7.4 @@ -29045,7 +29426,7 @@ snapshots: make-fetch-happen: 13.0.1 nopt: 7.2.1 proc-log: 4.2.0 - semver: 7.7.2 + semver: 7.7.3 tar: 6.2.1 which: 4.0.0 transitivePeerDependencies: @@ -29078,7 +29459,7 @@ snapshots: normalize-package-data@6.0.2: dependencies: hosted-git-info: 7.0.2 - semver: 7.7.2 + semver: 7.7.3 validate-npm-package-license: 3.0.4 normalize-path@2.1.1: @@ -29097,7 +29478,7 @@ snapshots: npm-install-checks@6.3.0: dependencies: - semver: 7.7.2 + semver: 7.7.3 npm-normalize-package-bin@3.0.1: {} @@ -29105,7 +29486,7 @@ snapshots: dependencies: hosted-git-info: 7.0.2 proc-log: 4.2.0 - semver: 7.7.2 + semver: 7.7.3 validate-npm-package-name: 5.0.1 npm-packlist@8.0.2: @@ -29117,7 +29498,7 @@ snapshots: npm-install-checks: 6.3.0 npm-normalize-package-bin: 3.0.1 npm-package-arg: 11.0.3 - semver: 7.7.2 + semver: 7.7.3 npm-registry-fetch@17.1.0: dependencies: @@ -30033,6 +30414,8 @@ snapshots: react: 19.1.1 react-dom: 19.1.1(react@19.1.1) + react@19.0.0: {} + react@19.1.1: {} read-cache@1.0.0: @@ -30347,7 +30730,7 @@ snapshots: dependencies: glob: 7.2.3 - rolldown-plugin-dts@0.16.11(rolldown@1.0.0-rc.4)(typescript@5.8.3): + rolldown-plugin-dts@0.16.11(rolldown@1.0.0-rc.5)(typescript@5.8.3): dependencies: '@babel/generator': 7.28.3 '@babel/parser': 7.28.4 @@ -30358,7 +30741,7 @@ snapshots: dts-resolver: 2.1.2 get-tsconfig: 4.11.0 magic-string: 0.30.19 - rolldown: 1.0.0-rc.4 + rolldown: 1.0.0-rc.5 optionalDependencies: typescript: 5.8.3 transitivePeerDependencies: @@ -30386,24 +30769,24 @@ snapshots: '@rolldown/binding-win32-ia32-msvc': 1.0.0-beta.42 '@rolldown/binding-win32-x64-msvc': 1.0.0-beta.42 - rolldown@1.0.0-rc.4: + rolldown@1.0.0-rc.5: dependencies: - '@oxc-project/types': 0.113.0 - '@rolldown/pluginutils': 1.0.0-rc.4 + '@oxc-project/types': 0.114.0 + '@rolldown/pluginutils': 1.0.0-rc.5 optionalDependencies: - '@rolldown/binding-android-arm64': 1.0.0-rc.4 - '@rolldown/binding-darwin-arm64': 1.0.0-rc.4 - '@rolldown/binding-darwin-x64': 1.0.0-rc.4 - '@rolldown/binding-freebsd-x64': 1.0.0-rc.4 - '@rolldown/binding-linux-arm-gnueabihf': 1.0.0-rc.4 - '@rolldown/binding-linux-arm64-gnu': 1.0.0-rc.4 - '@rolldown/binding-linux-arm64-musl': 1.0.0-rc.4 - '@rolldown/binding-linux-x64-gnu': 1.0.0-rc.4 - '@rolldown/binding-linux-x64-musl': 1.0.0-rc.4 - '@rolldown/binding-openharmony-arm64': 1.0.0-rc.4 - '@rolldown/binding-wasm32-wasi': 1.0.0-rc.4 - '@rolldown/binding-win32-arm64-msvc': 1.0.0-rc.4 - '@rolldown/binding-win32-x64-msvc': 1.0.0-rc.4 + '@rolldown/binding-android-arm64': 1.0.0-rc.5 + '@rolldown/binding-darwin-arm64': 1.0.0-rc.5 + '@rolldown/binding-darwin-x64': 1.0.0-rc.5 + '@rolldown/binding-freebsd-x64': 1.0.0-rc.5 + '@rolldown/binding-linux-arm-gnueabihf': 1.0.0-rc.5 + '@rolldown/binding-linux-arm64-gnu': 1.0.0-rc.5 + '@rolldown/binding-linux-arm64-musl': 1.0.0-rc.5 + '@rolldown/binding-linux-x64-gnu': 1.0.0-rc.5 + '@rolldown/binding-linux-x64-musl': 1.0.0-rc.5 + '@rolldown/binding-openharmony-arm64': 1.0.0-rc.5 + '@rolldown/binding-wasm32-wasi': 1.0.0-rc.5 + '@rolldown/binding-win32-arm64-msvc': 1.0.0-rc.5 + '@rolldown/binding-win32-x64-msvc': 1.0.0-rc.5 rollup-plugin-inject@3.0.2: dependencies: @@ -30641,7 +31024,7 @@ snapshots: dependencies: color: 4.2.3 detect-libc: 2.0.4 - semver: 7.7.1 + semver: 7.7.3 optionalDependencies: '@img/sharp-darwin-arm64': 0.33.5 '@img/sharp-darwin-x64': 0.33.5 @@ -31016,7 +31399,7 @@ snapshots: 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)(terser@5.44.0)(yaml@2.8.1)))(vite@6.3.5(@types/node@22.15.17)(jiti@2.6.1)(terser@5.44.0)(yaml@2.8.1))(webpack@5.101.3(esbuild@0.25.5)): dependencies: - '@storybook/builder-vite': 10.3.0-alpha.6(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)(terser@5.44.0)(yaml@2.8.1))(webpack@5.101.3(esbuild@0.25.5)) + '@storybook/builder-vite': 10.3.0-alpha.7(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)(terser@5.44.0)(yaml@2.8.1))(webpack@5.101.3(esbuild@0.25.5)) '@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 @@ -31174,7 +31557,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: {} @@ -31214,8 +31597,6 @@ snapshots: supermemory@4.11.1: {} - supports-color@10.0.0: {} - supports-color@10.2.2: {} supports-color@5.5.0: @@ -31663,8 +32044,8 @@ snapshots: diff: 8.0.2 empathic: 2.0.0 hookable: 5.5.3 - rolldown: 1.0.0-rc.4 - rolldown-plugin-dts: 0.16.11(rolldown@1.0.0-rc.4)(typescript@5.8.3) + rolldown: 1.0.0-rc.5 + rolldown-plugin-dts: 0.16.11(rolldown@1.0.0-rc.5)(typescript@5.8.3) semver: 7.7.2 tinyexec: 1.0.1 tinyglobby: 0.2.15 @@ -31839,10 +32220,10 @@ snapshots: unctx@2.4.1: dependencies: - acorn: 8.14.1 + acorn: 8.15.0 estree-walker: 3.0.3 magic-string: 0.30.17 - unplugin: 2.3.2 + unplugin: 2.3.10 undici-types@5.26.5: {} @@ -31913,7 +32294,7 @@ snapshots: unimport@3.14.6(rollup@4.40.2): dependencies: '@rollup/pluginutils': 5.1.4(rollup@4.40.2) - acorn: 8.14.1 + acorn: 8.15.0 escape-string-regexp: 5.0.0 estree-walker: 3.0.3 fast-glob: 3.3.3 @@ -31921,7 +32302,7 @@ snapshots: magic-string: 0.30.17 mlly: 1.7.4 pathe: 2.0.3 - picomatch: 4.0.2 + picomatch: 4.0.3 pkg-types: 1.3.1 scule: 1.3.0 strip-literal: 2.1.1 @@ -32060,7 +32441,7 @@ snapshots: unplugin@1.16.1: dependencies: - acorn: 8.14.1 + acorn: 8.15.0 webpack-virtual-modules: 0.6.2 unplugin@2.0.0-beta.1: @@ -32075,12 +32456,6 @@ snapshots: picomatch: 4.0.3 webpack-virtual-modules: 0.6.2 - unplugin@2.3.2: - dependencies: - acorn: 8.15.0 - picomatch: 4.0.3 - webpack-virtual-modules: 0.6.2 - unrs-resolver@1.7.2: dependencies: napi-postinstall: 0.2.3 @@ -32355,7 +32730,7 @@ snapshots: vite-node@2.1.9(@types/node@22.15.17)(terser@5.44.0): dependencies: cac: 6.7.14 - debug: 4.4.1 + debug: 4.4.3(supports-color@8.1.1) es-module-lexer: 1.7.0 pathe: 1.1.2 vite: 5.4.19(@types/node@22.15.17)(terser@5.44.0) @@ -32889,6 +33264,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 @@ -32988,6 +33369,8 @@ snapshots: yocto-queue@1.2.1: {} + yoctocolors-cjs@2.1.3: {} + yoctocolors@2.1.1: {} youch-core@0.3.2: diff --git a/pnpm-workspace.yaml b/pnpm-workspace.yaml index 614993f77e..01dc46975d 100644 --- a/pnpm-workspace.yaml +++ b/pnpm-workspace.yaml @@ -1,6 +1,7 @@ packages: - "apps/*" - "packages/*" + - "extensions/*" - "crates/tauri-plugin-*" - "infra" - "scripts/orgIdBackfill"