From 2a3a6221109626c34ed2a0b1e355525426eecd6a Mon Sep 17 00:00:00 2001 From: Pranav Tartey Date: Fri, 4 Apr 2025 01:44:53 +0530 Subject: [PATCH 01/11] added the logic for the copying folders in same address --- apps/studio/electron/main/code/index.ts | 14 + apps/studio/electron/main/events/code.ts | 9 +- .../Settings/Project/ConfirmPathUpdate.tsx | 33 ++ .../Modals/Settings/Project/index.tsx | 316 ++++++++++++------ apps/studio/src/lib/editor/engine/index.ts | 2 +- apps/studio/src/locales/en/translation.json | 9 +- apps/studio/src/locales/ja/translation.json | 9 +- apps/studio/src/locales/ko/translation.json | 9 +- apps/studio/src/locales/zh/translation.json | 9 +- packages/models/src/constants/ipc.ts | 1 + 10 files changed, 293 insertions(+), 118 deletions(-) create mode 100644 apps/studio/src/components/Modals/Settings/Project/ConfirmPathUpdate.tsx diff --git a/apps/studio/electron/main/code/index.ts b/apps/studio/electron/main/code/index.ts index 4da7ca54cc..b1b8573ff7 100644 --- a/apps/studio/electron/main/code/index.ts +++ b/apps/studio/electron/main/code/index.ts @@ -8,6 +8,8 @@ import { generateCode } from './diff/helpers'; import { formatContent, readFile, writeFile } from './files'; import { parseJsxCodeBlock } from './helpers'; import { IDE } from '/common/ide'; +import fs from 'fs'; +import path from 'path'; export async function readCodeBlock( templateNode: TemplateNode, @@ -99,3 +101,15 @@ export function pickDirectory() { properties: ['openDirectory', 'createDirectory'], }); } + +export async function moveFolder(source: string, destination: string) { + try { + fs.cpSync(source, destination, { recursive: true }); + fs.rmSync(source, { recursive: true, force: true }); + console.log(`✅ Folder moved from ${source} to ${destination}`); + return { success: true, message: 'Folder moved successfully' }; + } catch (error: any) { + console.error('❌ Move failed:', error); + return { success: false, message: error.message }; + } +} \ No newline at end of file diff --git a/apps/studio/electron/main/events/code.ts b/apps/studio/electron/main/events/code.ts index 039e2df9ae..75764feee5 100644 --- a/apps/studio/electron/main/events/code.ts +++ b/apps/studio/electron/main/events/code.ts @@ -2,7 +2,7 @@ import type { CodeDiff, CodeDiffRequest } from '@onlook/models/code'; import { MainChannels } from '@onlook/models/constants'; import type { TemplateNode } from '@onlook/models/element'; import { ipcMain } from 'electron'; -import { openFileInIde, openInIde, pickDirectory, readCodeBlock, writeCode } from '../code/'; +import { moveFolder, openFileInIde, openInIde, pickDirectory, readCodeBlock, writeCode } from '../code/'; import { getTemplateNodeClass } from '../code/classes'; import { extractComponentsFromDirectory } from '../code/components'; import { getCodeDiffs } from '../code/diff'; @@ -99,10 +99,15 @@ export function listenForCodeMessages() { if (result.canceled) { return null; } - return result.filePaths.at(0) ?? null; }); + ipcMain.handle(MainChannels.MOVE_PROJECT_FOLDER, async (e: Electron.IpcMainInvokeEvent, args) => { + console.log("This is the path values from the frontend : ", args); + const { currentPath, newPath } = args; + return moveFolder(currentPath, newPath) + }) + ipcMain.handle(MainChannels.GET_COMPONENTS, async (_, args) => { if (typeof args !== 'string') { throw new Error('`args` must be a string'); diff --git a/apps/studio/src/components/Modals/Settings/Project/ConfirmPathUpdate.tsx b/apps/studio/src/components/Modals/Settings/Project/ConfirmPathUpdate.tsx new file mode 100644 index 0000000000..3328d9b0c8 --- /dev/null +++ b/apps/studio/src/components/Modals/Settings/Project/ConfirmPathUpdate.tsx @@ -0,0 +1,33 @@ +import { useEditorEngine } from '@/components/Context'; +import { observer } from 'mobx-react-lite'; +import { AnimatePresence, motion } from 'framer-motion'; + +const ConfirmPathUpdate = observer(() => { + const editorEngine = useEditorEngine(); + + return ( + + {editorEngine.isConfirmPathUpdateOpen && ( + <> + (editorEngine.isConfirmPathUpdateOpen = false)} + > +
+

Update Path

+

+ Are you sure that you want to update the location of the + application? +

+
+
+ + )} +
+ ); +}); + +export default ConfirmPathUpdate; diff --git a/apps/studio/src/components/Modals/Settings/Project/index.tsx b/apps/studio/src/components/Modals/Settings/Project/index.tsx index 4e9e151027..5327def216 100644 --- a/apps/studio/src/components/Modals/Settings/Project/index.tsx +++ b/apps/studio/src/components/Modals/Settings/Project/index.tsx @@ -1,4 +1,4 @@ -import { useProjectsManager } from '@/components/Context'; +import { useEditorEngine, useProjectsManager } from '@/components/Context'; import { invokeMainChannel } from '@/lib/utils'; import { DefaultSettings, MainChannels } from '@onlook/models/constants'; import { Button } from '@onlook/ui/button'; @@ -7,6 +7,22 @@ import { Input } from '@onlook/ui/input'; import { Separator } from '@onlook/ui/separator'; import { observer } from 'mobx-react-lite'; import { ReinstallButton } from './ReinstallButon'; +import { toast } from '@onlook/ui/use-toast'; +import { useTranslation } from 'react-i18next'; +import { + AlertDialog, + AlertDialogContent, + AlertDialogDescription, + AlertDialogFooter, + AlertDialogHeader, + AlertDialogTitle, +} from '@onlook/ui/alert-dialog'; +import { useState } from 'react'; + +type MoveProjectFolderResponse = { + success: boolean; + message: string; +}; const ProjectTab = observer(() => { const projectsManager = useProjectsManager(); @@ -19,144 +35,222 @@ const ProjectTab = observer(() => { const name = project?.name || ''; const url = project?.url || ''; + const [showPathUpdateAlert, setShowPathUpdateAlert] = useState(false); + const [copyPath, setCopyPath] = useState(''); + const { t } = useTranslation(); + const handleUpdatePath = async () => { const path = (await invokeMainChannel(MainChannels.PICK_COMPONENTS_DIRECTORY)) as | string | null; - if (!path) { + if (!path || path === project?.folderPath) { console.error('No path selected'); return; } + setCopyPath(path); + setShowPathUpdateAlert(true); + + // console.log( + // 'This is the current path of the project folder on the frontend : ', + // project?.folderPath, + // ); + // console.log('This is the path from the frontend : ', path); + }; - projectsManager.updatePartialProject({ - folderPath: path, - }); + const cancelUpdatePath = async () => { + setCopyPath(''); + setShowPathUpdateAlert(false); + }; + + const confirmUpdatePath = async () => { + try { + const result: MoveProjectFolderResponse = await invokeMainChannel( + MainChannels.MOVE_PROJECT_FOLDER, + { + currentPath: project?.folderPath, + newPath: copyPath, + }, + ); + + console.log('This is the args values from the backend : ', result); + + if (!result.success) { + throw new Error(result.message); + } + + projectsManager.updatePartialProject({ + folderPath: copyPath, + }); + + toast({ + title: `${t('projects.dialogs.updatePath.success')}`, + variant: 'warning', + }); + + setShowPathUpdateAlert(false); + console.log('Your control is now in the confirmUpdatePath function ;)'); + console.log('Keep going'); + } catch (error) { + toast({ + title: `${t('projects.dialogs.updatePath.error')}`, + variant: 'destructive', + }); + setShowPathUpdateAlert(false); + console.error(error); + } }; return ( -
-
-

Metadata

-
-
-

Name

- - projectsManager.updatePartialProject({ - name: e.target.value, - }) - } - className="w-2/3" - /> -
-
-

URL

- - projectsManager.updatePartialProject({ - url: e.target.value, - }) - } - className="w-2/3" - /> -
-
-

Path

-
+ <> +
+
+

Metadata

+
+
+

Name

+ + projectsManager.updatePartialProject({ + name: e.target.value, + }) + } + className="w-2/3" + /> +
+
+

URL

projectsManager.updatePartialProject({ - folderPath: e.target.value, + url: e.target.value, }) } + className="w-2/3" /> - +
+
+

Path

+
+ + projectsManager.updatePartialProject({ + folderPath: e.target.value, + }) + } + /> + +
-
- + -
-
-

Commands

-

- {"Only update these if you know what you're doing!"} -

-
-
-
-

Install

- - projectsManager.updatePartialProject({ - commands: { - ...project?.commands, - install: e.target.value, - }, - }) - } - /> -
-
-

Run

- - projectsManager.updatePartialProject({ - commands: { - ...project?.commands, - run: e.target.value, - }, - }) - } - /> +
+
+

Commands

+

+ {"Only update these if you know what you're doing!"} +

-
-

Build

- - projectsManager.updatePartialProject({ - commands: { - ...project?.commands, - build: e.target.value, - }, - }) - } - className="w-2/3" - /> +
+
+

Install

+ + projectsManager.updatePartialProject({ + commands: { + ...project?.commands, + install: e.target.value, + }, + }) + } + /> +
+
+

Run

+ + projectsManager.updatePartialProject({ + commands: { + ...project?.commands, + run: e.target.value, + }, + }) + } + /> +
+
+

Build

+ + projectsManager.updatePartialProject({ + commands: { + ...project?.commands, + build: e.target.value, + }, + }) + } + className="w-2/3" + /> +
-
- -
-
-

Reinstall Dependencies

-

- For when project failed to install dependencies -

+ +
+
+

Reinstall Dependencies

+

+ For when project failed to install dependencies +

+
+
-
-
+ + + + + + {t('projects.dialogs.updatePath.title')} + + + {t('projects.dialogs.updatePath.description')} + + + + + + + + + ); }); diff --git a/apps/studio/src/lib/editor/engine/index.ts b/apps/studio/src/lib/editor/engine/index.ts index 7db82a4046..09b5403292 100644 --- a/apps/studio/src/lib/editor/engine/index.ts +++ b/apps/studio/src/lib/editor/engine/index.ts @@ -183,7 +183,7 @@ export class EditorEngine { set isSettingsOpen(open: boolean) { this._settingsOpen = open; } - + set isHotkeysOpen(value: boolean) { this._hotkeysOpen = value; } diff --git a/apps/studio/src/locales/en/translation.json b/apps/studio/src/locales/en/translation.json index 0f153e79de..ab84c64cb3 100644 --- a/apps/studio/src/locales/en/translation.json +++ b/apps/studio/src/locales/en/translation.json @@ -50,7 +50,8 @@ "startFromScratch": "Start from scratch", "importProject": "Import a project", "subscriptions": "Subscriptions", - "settings": "Settings" + "settings": "Settings", + "confirm": "Confirm" }, "dialogs": { "delete": { @@ -62,6 +63,12 @@ "title": "Rename Project", "label": "Project Name", "error": "Project name can't be empty" + }, + "updatePath": { + "title": "Update Path", + "description": "Are you sure you want to update project location?", + "success": "Path for the project has been updated", + "error": "Failed to move your project" } }, "prompt": { diff --git a/apps/studio/src/locales/ja/translation.json b/apps/studio/src/locales/ja/translation.json index 41c2cd69b9..ac1ea02d31 100644 --- a/apps/studio/src/locales/ja/translation.json +++ b/apps/studio/src/locales/ja/translation.json @@ -245,7 +245,8 @@ "startFromScratch": "新規作成", "importProject": "プロジェクトをインポート", "subscriptions": "サブスクリプション", - "settings": "設定" + "settings": "設定", + "confirm": "確認" }, "dialogs": { "delete": { @@ -257,6 +258,12 @@ "title": "プロジェクトの名前変更", "label": "プロジェクト名", "error": "プロジェクト名は空にできません" + }, + "updatePath" : { + "title":"パスを更新", + "description":"プロジェクトの場所を更新してもよろしいですか?", + "toast": "プロジェクトのパスが更新されました。", + "error": "プロジェクトの移動に失敗しました" } }, "prompt": { diff --git a/apps/studio/src/locales/ko/translation.json b/apps/studio/src/locales/ko/translation.json index 8d17effcec..30459f9eb5 100644 --- a/apps/studio/src/locales/ko/translation.json +++ b/apps/studio/src/locales/ko/translation.json @@ -50,7 +50,8 @@ "startFromScratch": "처음부터 시작하기", "importProject": "프로젝트 가져오기", "subscriptions": "구독하기", - "settings": "설정" + "settings": "설정", + "confirm": "확인" }, "dialogs": { "delete": { @@ -62,6 +63,12 @@ "title": "프로젝트 이름 변경", "label": "프로젝트 이름", "error": "프로젝트 이름은 비워둘 수 없습니다." + }, + "updatePath" : { + "title":"경로 업데이트", + "description":"프로젝트 위치를 업데이트하시겠습니까?", + "toast": " 프로젝트 경로가 업데이트되었습니다.", + "error": "프로젝트 이동에 실패했습니다" } }, "prompt": { diff --git a/apps/studio/src/locales/zh/translation.json b/apps/studio/src/locales/zh/translation.json index 31474ccc64..2d25c196a8 100644 --- a/apps/studio/src/locales/zh/translation.json +++ b/apps/studio/src/locales/zh/translation.json @@ -50,7 +50,8 @@ "startFromScratch": "从零开始", "importProject": "导入项目", "subscriptions": "订阅", - "settings": "设置" + "settings": "设置", + "confirm": "确认" }, "dialogs": { "delete": { @@ -62,6 +63,12 @@ "title": "重命名项目", "label": "项目名称", "error": "项目名称不能为空" + }, + "updatePath": { + "title": "更新路径", + "description": "您确定要更新项目位置吗?", + "toast": " 项目路径已更新。", + "error": "项目移动失败" } }, "prompt": { diff --git a/packages/models/src/constants/ipc.ts b/packages/models/src/constants/ipc.ts index 7b543fc72e..03590956ff 100644 --- a/packages/models/src/constants/ipc.ts +++ b/packages/models/src/constants/ipc.ts @@ -41,6 +41,7 @@ export enum MainChannels { IS_CHILD_TEXT_EDITABLE = 'is-child-text-editable', IS_PORT_AVAILABLE = 'is-port-available', CLEAN_UP_BEFORE_QUIT = 'clean-up-before-quit', + MOVE_PROJECT_FOLDER = 'move-project-folder', // Code GET_CODE_BLOCK = 'get-code-block', From 58d2b12e13868d2a8f8d03ae30af9e08bde6c829 Mon Sep 17 00:00:00 2001 From: Pranav Tartey Date: Fri, 4 Apr 2025 23:50:02 +0530 Subject: [PATCH 02/11] added the login to stop the project if running while moving the folder --- apps/studio/electron/main/code/index.ts | 10 ++++---- .../Modals/Settings/Project/index.tsx | 23 ++++++++++--------- 2 files changed, 17 insertions(+), 16 deletions(-) diff --git a/apps/studio/electron/main/code/index.ts b/apps/studio/electron/main/code/index.ts index b1b8573ff7..98ac4b39dc 100644 --- a/apps/studio/electron/main/code/index.ts +++ b/apps/studio/electron/main/code/index.ts @@ -104,12 +104,12 @@ export function pickDirectory() { export async function moveFolder(source: string, destination: string) { try { - fs.cpSync(source, destination, { recursive: true }); - fs.rmSync(source, { recursive: true, force: true }); - console.log(`✅ Folder moved from ${source} to ${destination}`); + await fs.mkdir(destination, { recursive: true }, err => { throw err }); + await fs.cp(source, destination, { recursive: true }, err => { throw err }); + return { success: true, message: 'Folder moved successfully' }; } catch (error: any) { - console.error('❌ Move failed:', error); + console.error('Move failed:', error); return { success: false, message: error.message }; } -} \ No newline at end of file +} diff --git a/apps/studio/src/components/Modals/Settings/Project/index.tsx b/apps/studio/src/components/Modals/Settings/Project/index.tsx index 5327def216..8d5151623a 100644 --- a/apps/studio/src/components/Modals/Settings/Project/index.tsx +++ b/apps/studio/src/components/Modals/Settings/Project/index.tsx @@ -1,4 +1,4 @@ -import { useEditorEngine, useProjectsManager } from '@/components/Context'; +import { useProjectsManager } from '@/components/Context'; import { invokeMainChannel } from '@/lib/utils'; import { DefaultSettings, MainChannels } from '@onlook/models/constants'; import { Button } from '@onlook/ui/button'; @@ -18,6 +18,7 @@ import { AlertDialogTitle, } from '@onlook/ui/alert-dialog'; import { useState } from 'react'; +import { RunState } from '@onlook/models'; type MoveProjectFolderResponse = { success: boolean; @@ -35,6 +36,7 @@ const ProjectTab = observer(() => { const name = project?.name || ''; const url = project?.url || ''; + const runner = projectsManager.runner; const [showPathUpdateAlert, setShowPathUpdateAlert] = useState(false); const [copyPath, setCopyPath] = useState(''); const { t } = useTranslation(); @@ -50,12 +52,6 @@ const ProjectTab = observer(() => { } setCopyPath(path); setShowPathUpdateAlert(true); - - // console.log( - // 'This is the current path of the project folder on the frontend : ', - // project?.folderPath, - // ); - // console.log('This is the path from the frontend : ', path); }; const cancelUpdatePath = async () => { @@ -65,6 +61,11 @@ const ProjectTab = observer(() => { const confirmUpdatePath = async () => { try { + if (runner?.state === RunState.RUNNING || runner?.state === RunState.SETTING_UP) { + runner?.stop(); + return; + } + const result: MoveProjectFolderResponse = await invokeMainChannel( MainChannels.MOVE_PROJECT_FOLDER, { @@ -241,12 +242,12 @@ const ProjectTab = observer(() => { - - + From 43e2c44fd74abaec8cf86108c5c51c792c48d153 Mon Sep 17 00:00:00 2001 From: Pranav Tartey Date: Sat, 5 Apr 2025 07:56:11 +0530 Subject: [PATCH 03/11] made some minor fixes and removed console.log --- .../Settings/Project/ConfirmPathUpdate.tsx | 33 ------------------- .../Modals/Settings/Project/index.tsx | 3 -- 2 files changed, 36 deletions(-) delete mode 100644 apps/studio/src/components/Modals/Settings/Project/ConfirmPathUpdate.tsx diff --git a/apps/studio/src/components/Modals/Settings/Project/ConfirmPathUpdate.tsx b/apps/studio/src/components/Modals/Settings/Project/ConfirmPathUpdate.tsx deleted file mode 100644 index 3328d9b0c8..0000000000 --- a/apps/studio/src/components/Modals/Settings/Project/ConfirmPathUpdate.tsx +++ /dev/null @@ -1,33 +0,0 @@ -import { useEditorEngine } from '@/components/Context'; -import { observer } from 'mobx-react-lite'; -import { AnimatePresence, motion } from 'framer-motion'; - -const ConfirmPathUpdate = observer(() => { - const editorEngine = useEditorEngine(); - - return ( - - {editorEngine.isConfirmPathUpdateOpen && ( - <> - (editorEngine.isConfirmPathUpdateOpen = false)} - > -
-

Update Path

-

- Are you sure that you want to update the location of the - application? -

-
-
- - )} -
- ); -}); - -export default ConfirmPathUpdate; diff --git a/apps/studio/src/components/Modals/Settings/Project/index.tsx b/apps/studio/src/components/Modals/Settings/Project/index.tsx index 8d5151623a..7b269ec416 100644 --- a/apps/studio/src/components/Modals/Settings/Project/index.tsx +++ b/apps/studio/src/components/Modals/Settings/Project/index.tsx @@ -63,7 +63,6 @@ const ProjectTab = observer(() => { try { if (runner?.state === RunState.RUNNING || runner?.state === RunState.SETTING_UP) { runner?.stop(); - return; } const result: MoveProjectFolderResponse = await invokeMainChannel( @@ -90,8 +89,6 @@ const ProjectTab = observer(() => { }); setShowPathUpdateAlert(false); - console.log('Your control is now in the confirmUpdatePath function ;)'); - console.log('Keep going'); } catch (error) { toast({ title: `${t('projects.dialogs.updatePath.error')}`, From 9dd890b06ebcf5ba8f209d2f7e64008b79e95e11 Mon Sep 17 00:00:00 2001 From: Kiet Ho Date: Mon, 7 Apr 2025 23:33:07 -0700 Subject: [PATCH 04/11] Clean up --- apps/studio/electron/main/code/index.ts | 7 +-- apps/studio/electron/main/events/code.ts | 54 +++++++++++------- .../Modals/Settings/Project/index.tsx | 57 +++++-------------- apps/studio/src/lib/editor/engine/index.ts | 2 +- apps/studio/src/locales/ja/translation.json | 6 +- apps/studio/src/locales/ko/translation.json | 8 +-- apps/studio/src/locales/zh/translation.json | 2 +- 7 files changed, 59 insertions(+), 77 deletions(-) diff --git a/apps/studio/electron/main/code/index.ts b/apps/studio/electron/main/code/index.ts index 98ac4b39dc..3515749e08 100644 --- a/apps/studio/electron/main/code/index.ts +++ b/apps/studio/electron/main/code/index.ts @@ -2,14 +2,13 @@ import type { CodeDiff } from '@onlook/models/code'; import type { TemplateNode } from '@onlook/models/element'; import { DEFAULT_IDE } from '@onlook/models/ide'; import { dialog, shell } from 'electron'; +import { promises as fs } from 'fs'; import { GENERATE_CODE_OPTIONS } from '../run/helpers'; import { PersistentStorage } from '../storage'; import { generateCode } from './diff/helpers'; import { formatContent, readFile, writeFile } from './files'; import { parseJsxCodeBlock } from './helpers'; import { IDE } from '/common/ide'; -import fs from 'fs'; -import path from 'path'; export async function readCodeBlock( templateNode: TemplateNode, @@ -104,8 +103,8 @@ export function pickDirectory() { export async function moveFolder(source: string, destination: string) { try { - await fs.mkdir(destination, { recursive: true }, err => { throw err }); - await fs.cp(source, destination, { recursive: true }, err => { throw err }); + await fs.mkdir(destination, { recursive: true }); + await fs.cp(source, destination, { recursive: true }); return { success: true, message: 'Folder moved successfully' }; } catch (error: any) { diff --git a/apps/studio/electron/main/events/code.ts b/apps/studio/electron/main/events/code.ts index eec29d8ba3..b366be17fa 100644 --- a/apps/studio/electron/main/events/code.ts +++ b/apps/studio/electron/main/events/code.ts @@ -2,30 +2,37 @@ import type { CodeDiff, CodeDiffRequest } from '@onlook/models/code'; import { MainChannels } from '@onlook/models/constants'; import type { TemplateNode } from '@onlook/models/element'; import { ipcMain } from 'electron'; -import { moveFolder, openFileInIde, openInIde, pickDirectory, readCodeBlock, writeCode } from '../code/'; +import { + addFont, + addLocalFont, + getDefaultFont, + removeFont, + scanFonts, + setDefaultFont, +} from '../assets/fonts/index'; +import { FontFileWatcher } from '../assets/fonts/watcher'; +import { + deleteTailwindColorGroup, + scanTailwindConfig, + updateTailwindColorConfig, +} from '../assets/styles'; +import { + moveFolder, + openFileInIde, + openInIde, + pickDirectory, + readCodeBlock, + writeCode, +} from '../code/'; import { getTemplateNodeClass } from '../code/classes'; import { extractComponentsFromDirectory } from '../code/components'; import { getCodeDiffs } from '../code/diff'; import { isChildTextEditable } from '../code/diff/text'; import { readFile } from '../code/files'; +import { getTemplateNodeProps } from '../code/props'; import { getTemplateNodeChild } from '../code/templateNode'; import runManager from '../run'; import { getFileContentWithoutIds } from '../run/cleanup'; -import { getTemplateNodeProps } from '../code/props'; -import { - scanTailwindConfig, - updateTailwindColorConfig, - deleteTailwindColorGroup, -} from '../assets/styles'; -import { - addFont, - removeFont, - scanFonts, - setDefaultFont, - getDefaultFont, - addLocalFont, -} from '../assets/fonts/index'; -import { FontFileWatcher } from '../assets/fonts/watcher'; const fontFileWatcher = new FontFileWatcher(); @@ -113,11 +120,16 @@ export function listenForCodeMessages() { return result.filePaths.at(0) ?? null; }); - ipcMain.handle(MainChannels.MOVE_PROJECT_FOLDER, async (e: Electron.IpcMainInvokeEvent, args) => { - console.log("This is the path values from the frontend : ", args); - const { currentPath, newPath } = args; - return moveFolder(currentPath, newPath) - }) + ipcMain.handle( + MainChannels.MOVE_PROJECT_FOLDER, + async (e: Electron.IpcMainInvokeEvent, args) => { + const { currentPath, newPath } = args as { + currentPath: string; + newPath: string; + }; + return moveFolder(currentPath, newPath); + }, + ); ipcMain.handle(MainChannels.GET_COMPONENTS, async (_, args) => { if (typeof args !== 'string') { diff --git a/apps/studio/src/components/Modals/Settings/Project/index.tsx b/apps/studio/src/components/Modals/Settings/Project/index.tsx index 4d0b31a2b5..2def90a4ca 100644 --- a/apps/studio/src/components/Modals/Settings/Project/index.tsx +++ b/apps/studio/src/components/Modals/Settings/Project/index.tsx @@ -1,14 +1,7 @@ import { useProjectsManager } from '@/components/Context'; import { invokeMainChannel } from '@/lib/utils'; +import { RunState } from '@onlook/models'; import { DefaultSettings, MainChannels } from '@onlook/models/constants'; -import { Button } from '@onlook/ui/button'; -import { Icons } from '@onlook/ui/icons'; -import { Input } from '@onlook/ui/input'; -import { Separator } from '@onlook/ui/separator'; -import { observer } from 'mobx-react-lite'; -import { ReinstallButton } from './ReinstallButon'; -import { toast } from '@onlook/ui/use-toast'; -import { useTranslation } from 'react-i18next'; import { AlertDialog, AlertDialogContent, @@ -17,8 +10,15 @@ import { AlertDialogHeader, AlertDialogTitle, } from '@onlook/ui/alert-dialog'; +import { Button } from '@onlook/ui/button'; +import { Icons } from '@onlook/ui/icons'; +import { Input } from '@onlook/ui/input'; +import { Separator } from '@onlook/ui/separator'; +import { toast } from '@onlook/ui/use-toast'; +import { observer } from 'mobx-react-lite'; import { useState } from 'react'; -import { RunState } from '@onlook/models'; +import { useTranslation } from 'react-i18next'; +import { ReinstallButton } from './ReinstallButon'; type MoveProjectFolderResponse = { success: boolean; @@ -113,8 +113,7 @@ const ProjectTab = observer(() => { return ( <> -
-
+

Metadata

@@ -142,38 +141,10 @@ const ProjectTab = observer(() => {

Path

- - projectsManager.updatePartialProject({ - url: e.target.value, - }) - } - className="w-2/3" - /> -
-
-

Path

-
- - projectsManager.updatePartialProject({ - folderPath: e.target.value, - }) - } - /> - -
+ +
diff --git a/apps/studio/src/lib/editor/engine/index.ts b/apps/studio/src/lib/editor/engine/index.ts index 2585317c8b..c7591d3237 100644 --- a/apps/studio/src/lib/editor/engine/index.ts +++ b/apps/studio/src/lib/editor/engine/index.ts @@ -215,7 +215,7 @@ export class EditorEngine { set isSettingsOpen(open: boolean) { this._settingsOpen = open; } - + set isHotkeysOpen(value: boolean) { this._hotkeysOpen = value; } diff --git a/apps/studio/src/locales/ja/translation.json b/apps/studio/src/locales/ja/translation.json index ac1ea02d31..0136d6f50a 100644 --- a/apps/studio/src/locales/ja/translation.json +++ b/apps/studio/src/locales/ja/translation.json @@ -259,9 +259,9 @@ "label": "プロジェクト名", "error": "プロジェクト名は空にできません" }, - "updatePath" : { - "title":"パスを更新", - "description":"プロジェクトの場所を更新してもよろしいですか?", + "updatePath": { + "title": "パスを更新", + "description": "プロジェクトの場所を更新してもよろしいですか?", "toast": "プロジェクトのパスが更新されました。", "error": "プロジェクトの移動に失敗しました" } diff --git a/apps/studio/src/locales/ko/translation.json b/apps/studio/src/locales/ko/translation.json index 30459f9eb5..8e8f08613a 100644 --- a/apps/studio/src/locales/ko/translation.json +++ b/apps/studio/src/locales/ko/translation.json @@ -64,10 +64,10 @@ "label": "프로젝트 이름", "error": "프로젝트 이름은 비워둘 수 없습니다." }, - "updatePath" : { - "title":"경로 업데이트", - "description":"프로젝트 위치를 업데이트하시겠습니까?", - "toast": " 프로젝트 경로가 업데이트되었습니다.", + "updatePath": { + "title": "경로 업데이트", + "description": "프로젝트 위치를 업데이트하시겠습니까?", + "toast": "프로젝트 경로가 업데이트되었습니다.", "error": "프로젝트 이동에 실패했습니다" } }, diff --git a/apps/studio/src/locales/zh/translation.json b/apps/studio/src/locales/zh/translation.json index 2d25c196a8..45cfc3b5c0 100644 --- a/apps/studio/src/locales/zh/translation.json +++ b/apps/studio/src/locales/zh/translation.json @@ -67,7 +67,7 @@ "updatePath": { "title": "更新路径", "description": "您确定要更新项目位置吗?", - "toast": " 项目路径已更新。", + "toast": "项目路径已更新。", "error": "项目移动失败" } }, From 4c9acecf9bac72af658049bb7dbac53863b6ece9 Mon Sep 17 00:00:00 2001 From: Pranav Tartey Date: Sun, 13 Apr 2025 01:42:38 +0530 Subject: [PATCH 05/11] commiting same changes again --- apps/studio/electron/main/code/index.ts | 14 - apps/studio/electron/main/events/code.ts | 9 +- .../Modals/Settings/Project/index.tsx | 312 ++++++------------ apps/studio/src/lib/editor/engine/index.ts | 2 +- apps/studio/src/locales/en/translation.json | 9 +- apps/studio/src/locales/ja/translation.json | 9 +- apps/studio/src/locales/ko/translation.json | 9 +- apps/studio/src/locales/zh/translation.json | 9 +- packages/models/src/constants/ipc.ts | 1 - 9 files changed, 117 insertions(+), 257 deletions(-) diff --git a/apps/studio/electron/main/code/index.ts b/apps/studio/electron/main/code/index.ts index 98ac4b39dc..4da7ca54cc 100644 --- a/apps/studio/electron/main/code/index.ts +++ b/apps/studio/electron/main/code/index.ts @@ -8,8 +8,6 @@ import { generateCode } from './diff/helpers'; import { formatContent, readFile, writeFile } from './files'; import { parseJsxCodeBlock } from './helpers'; import { IDE } from '/common/ide'; -import fs from 'fs'; -import path from 'path'; export async function readCodeBlock( templateNode: TemplateNode, @@ -101,15 +99,3 @@ export function pickDirectory() { properties: ['openDirectory', 'createDirectory'], }); } - -export async function moveFolder(source: string, destination: string) { - try { - await fs.mkdir(destination, { recursive: true }, err => { throw err }); - await fs.cp(source, destination, { recursive: true }, err => { throw err }); - - return { success: true, message: 'Folder moved successfully' }; - } catch (error: any) { - console.error('Move failed:', error); - return { success: false, message: error.message }; - } -} diff --git a/apps/studio/electron/main/events/code.ts b/apps/studio/electron/main/events/code.ts index 75764feee5..039e2df9ae 100644 --- a/apps/studio/electron/main/events/code.ts +++ b/apps/studio/electron/main/events/code.ts @@ -2,7 +2,7 @@ import type { CodeDiff, CodeDiffRequest } from '@onlook/models/code'; import { MainChannels } from '@onlook/models/constants'; import type { TemplateNode } from '@onlook/models/element'; import { ipcMain } from 'electron'; -import { moveFolder, openFileInIde, openInIde, pickDirectory, readCodeBlock, writeCode } from '../code/'; +import { openFileInIde, openInIde, pickDirectory, readCodeBlock, writeCode } from '../code/'; import { getTemplateNodeClass } from '../code/classes'; import { extractComponentsFromDirectory } from '../code/components'; import { getCodeDiffs } from '../code/diff'; @@ -99,15 +99,10 @@ export function listenForCodeMessages() { if (result.canceled) { return null; } + return result.filePaths.at(0) ?? null; }); - ipcMain.handle(MainChannels.MOVE_PROJECT_FOLDER, async (e: Electron.IpcMainInvokeEvent, args) => { - console.log("This is the path values from the frontend : ", args); - const { currentPath, newPath } = args; - return moveFolder(currentPath, newPath) - }) - ipcMain.handle(MainChannels.GET_COMPONENTS, async (_, args) => { if (typeof args !== 'string') { throw new Error('`args` must be a string'); diff --git a/apps/studio/src/components/Modals/Settings/Project/index.tsx b/apps/studio/src/components/Modals/Settings/Project/index.tsx index 7b269ec416..4e9e151027 100644 --- a/apps/studio/src/components/Modals/Settings/Project/index.tsx +++ b/apps/studio/src/components/Modals/Settings/Project/index.tsx @@ -7,23 +7,6 @@ import { Input } from '@onlook/ui/input'; import { Separator } from '@onlook/ui/separator'; import { observer } from 'mobx-react-lite'; import { ReinstallButton } from './ReinstallButon'; -import { toast } from '@onlook/ui/use-toast'; -import { useTranslation } from 'react-i18next'; -import { - AlertDialog, - AlertDialogContent, - AlertDialogDescription, - AlertDialogFooter, - AlertDialogHeader, - AlertDialogTitle, -} from '@onlook/ui/alert-dialog'; -import { useState } from 'react'; -import { RunState } from '@onlook/models'; - -type MoveProjectFolderResponse = { - success: boolean; - message: string; -}; const ProjectTab = observer(() => { const projectsManager = useProjectsManager(); @@ -36,219 +19,144 @@ const ProjectTab = observer(() => { const name = project?.name || ''; const url = project?.url || ''; - const runner = projectsManager.runner; - const [showPathUpdateAlert, setShowPathUpdateAlert] = useState(false); - const [copyPath, setCopyPath] = useState(''); - const { t } = useTranslation(); - const handleUpdatePath = async () => { const path = (await invokeMainChannel(MainChannels.PICK_COMPONENTS_DIRECTORY)) as | string | null; - if (!path || path === project?.folderPath) { + if (!path) { console.error('No path selected'); return; } - setCopyPath(path); - setShowPathUpdateAlert(true); - }; - const cancelUpdatePath = async () => { - setCopyPath(''); - setShowPathUpdateAlert(false); - }; - - const confirmUpdatePath = async () => { - try { - if (runner?.state === RunState.RUNNING || runner?.state === RunState.SETTING_UP) { - runner?.stop(); - } - - const result: MoveProjectFolderResponse = await invokeMainChannel( - MainChannels.MOVE_PROJECT_FOLDER, - { - currentPath: project?.folderPath, - newPath: copyPath, - }, - ); - - console.log('This is the args values from the backend : ', result); - - if (!result.success) { - throw new Error(result.message); - } - - projectsManager.updatePartialProject({ - folderPath: copyPath, - }); - - toast({ - title: `${t('projects.dialogs.updatePath.success')}`, - variant: 'warning', - }); - - setShowPathUpdateAlert(false); - } catch (error) { - toast({ - title: `${t('projects.dialogs.updatePath.error')}`, - variant: 'destructive', - }); - setShowPathUpdateAlert(false); - console.error(error); - } + projectsManager.updatePartialProject({ + folderPath: path, + }); }; return ( - <> -
-
-

Metadata

-
-
-

Name

- - projectsManager.updatePartialProject({ - name: e.target.value, - }) - } - className="w-2/3" - /> -
-
-

URL

+
+
+

Metadata

+
+
+

Name

+ + projectsManager.updatePartialProject({ + name: e.target.value, + }) + } + className="w-2/3" + /> +
+
+

URL

+ + projectsManager.updatePartialProject({ + url: e.target.value, + }) + } + className="w-2/3" + /> +
+
+

Path

+
projectsManager.updatePartialProject({ - url: e.target.value, + folderPath: e.target.value, }) } - className="w-2/3" /> -
-
-

Path

-
- - projectsManager.updatePartialProject({ - folderPath: e.target.value, - }) - } - /> - -
+
+
- + -
-
-

Commands

-

- {"Only update these if you know what you're doing!"} -

+
+
+

Commands

+

+ {"Only update these if you know what you're doing!"} +

+
+
+
+

Install

+ + projectsManager.updatePartialProject({ + commands: { + ...project?.commands, + install: e.target.value, + }, + }) + } + />
-
-
-

Install

- - projectsManager.updatePartialProject({ - commands: { - ...project?.commands, - install: e.target.value, - }, - }) - } - /> -
-
-

Run

- - projectsManager.updatePartialProject({ - commands: { - ...project?.commands, - run: e.target.value, - }, - }) - } - /> -
-
-

Build

- - projectsManager.updatePartialProject({ - commands: { - ...project?.commands, - build: e.target.value, - }, - }) - } - className="w-2/3" - /> -
+
+

Run

+ + projectsManager.updatePartialProject({ + commands: { + ...project?.commands, + run: e.target.value, + }, + }) + } + />
-
- -
-
-

Reinstall Dependencies

-

- For when project failed to install dependencies -

+
+

Build

+ + projectsManager.updatePartialProject({ + commands: { + ...project?.commands, + build: e.target.value, + }, + }) + } + className="w-2/3" + />
-
- - - - - - {t('projects.dialogs.updatePath.title')} - - - {t('projects.dialogs.updatePath.description')} - - - - - - - - - + +
+
+

Reinstall Dependencies

+

+ For when project failed to install dependencies +

+
+ +
+
); }); diff --git a/apps/studio/src/lib/editor/engine/index.ts b/apps/studio/src/lib/editor/engine/index.ts index 09b5403292..7db82a4046 100644 --- a/apps/studio/src/lib/editor/engine/index.ts +++ b/apps/studio/src/lib/editor/engine/index.ts @@ -183,7 +183,7 @@ export class EditorEngine { set isSettingsOpen(open: boolean) { this._settingsOpen = open; } - + set isHotkeysOpen(value: boolean) { this._hotkeysOpen = value; } diff --git a/apps/studio/src/locales/en/translation.json b/apps/studio/src/locales/en/translation.json index ab84c64cb3..0f153e79de 100644 --- a/apps/studio/src/locales/en/translation.json +++ b/apps/studio/src/locales/en/translation.json @@ -50,8 +50,7 @@ "startFromScratch": "Start from scratch", "importProject": "Import a project", "subscriptions": "Subscriptions", - "settings": "Settings", - "confirm": "Confirm" + "settings": "Settings" }, "dialogs": { "delete": { @@ -63,12 +62,6 @@ "title": "Rename Project", "label": "Project Name", "error": "Project name can't be empty" - }, - "updatePath": { - "title": "Update Path", - "description": "Are you sure you want to update project location?", - "success": "Path for the project has been updated", - "error": "Failed to move your project" } }, "prompt": { diff --git a/apps/studio/src/locales/ja/translation.json b/apps/studio/src/locales/ja/translation.json index ac1ea02d31..41c2cd69b9 100644 --- a/apps/studio/src/locales/ja/translation.json +++ b/apps/studio/src/locales/ja/translation.json @@ -245,8 +245,7 @@ "startFromScratch": "新規作成", "importProject": "プロジェクトをインポート", "subscriptions": "サブスクリプション", - "settings": "設定", - "confirm": "確認" + "settings": "設定" }, "dialogs": { "delete": { @@ -258,12 +257,6 @@ "title": "プロジェクトの名前変更", "label": "プロジェクト名", "error": "プロジェクト名は空にできません" - }, - "updatePath" : { - "title":"パスを更新", - "description":"プロジェクトの場所を更新してもよろしいですか?", - "toast": "プロジェクトのパスが更新されました。", - "error": "プロジェクトの移動に失敗しました" } }, "prompt": { diff --git a/apps/studio/src/locales/ko/translation.json b/apps/studio/src/locales/ko/translation.json index 30459f9eb5..8d17effcec 100644 --- a/apps/studio/src/locales/ko/translation.json +++ b/apps/studio/src/locales/ko/translation.json @@ -50,8 +50,7 @@ "startFromScratch": "처음부터 시작하기", "importProject": "프로젝트 가져오기", "subscriptions": "구독하기", - "settings": "설정", - "confirm": "확인" + "settings": "설정" }, "dialogs": { "delete": { @@ -63,12 +62,6 @@ "title": "프로젝트 이름 변경", "label": "프로젝트 이름", "error": "프로젝트 이름은 비워둘 수 없습니다." - }, - "updatePath" : { - "title":"경로 업데이트", - "description":"프로젝트 위치를 업데이트하시겠습니까?", - "toast": " 프로젝트 경로가 업데이트되었습니다.", - "error": "프로젝트 이동에 실패했습니다" } }, "prompt": { diff --git a/apps/studio/src/locales/zh/translation.json b/apps/studio/src/locales/zh/translation.json index 2d25c196a8..31474ccc64 100644 --- a/apps/studio/src/locales/zh/translation.json +++ b/apps/studio/src/locales/zh/translation.json @@ -50,8 +50,7 @@ "startFromScratch": "从零开始", "importProject": "导入项目", "subscriptions": "订阅", - "settings": "设置", - "confirm": "确认" + "settings": "设置" }, "dialogs": { "delete": { @@ -63,12 +62,6 @@ "title": "重命名项目", "label": "项目名称", "error": "项目名称不能为空" - }, - "updatePath": { - "title": "更新路径", - "description": "您确定要更新项目位置吗?", - "toast": " 项目路径已更新。", - "error": "项目移动失败" } }, "prompt": { diff --git a/packages/models/src/constants/ipc.ts b/packages/models/src/constants/ipc.ts index 03590956ff..7b543fc72e 100644 --- a/packages/models/src/constants/ipc.ts +++ b/packages/models/src/constants/ipc.ts @@ -41,7 +41,6 @@ export enum MainChannels { IS_CHILD_TEXT_EDITABLE = 'is-child-text-editable', IS_PORT_AVAILABLE = 'is-port-available', CLEAN_UP_BEFORE_QUIT = 'clean-up-before-quit', - MOVE_PROJECT_FOLDER = 'move-project-folder', // Code GET_CODE_BLOCK = 'get-code-block', From 3e9caccc46bd3a4bce7d78976bece484a7ebccbd Mon Sep 17 00:00:00 2001 From: Pranav Tartey Date: Sat, 19 Apr 2025 17:59:25 +0530 Subject: [PATCH 06/11] shows the loading while creating a copy for the project --- apps/studio/electron/main/code/index.ts | 33 ++ apps/studio/electron/main/events/code.ts | 28 +- .../Modals/Settings/Project/index.tsx | 333 ++++++++++++------ apps/studio/src/lib/projects/copy.ts | 74 ++++ apps/studio/src/lib/projects/index.ts | 7 + bun.lock | 31 ++ packages/models/src/constants/ipc.ts | 2 + packages/models/src/create/index.ts | 8 + 8 files changed, 405 insertions(+), 111 deletions(-) create mode 100644 apps/studio/src/lib/projects/copy.ts diff --git a/apps/studio/electron/main/code/index.ts b/apps/studio/electron/main/code/index.ts index 4da7ca54cc..d827d06ac7 100644 --- a/apps/studio/electron/main/code/index.ts +++ b/apps/studio/electron/main/code/index.ts @@ -8,6 +8,9 @@ import { generateCode } from './diff/helpers'; import { formatContent, readFile, writeFile } from './files'; import { parseJsxCodeBlock } from './helpers'; import { IDE } from '/common/ide'; +import fs from 'fs'; +import { CopyStage, type CopyCallback } from '@onlook/models'; +import path from 'path'; export async function readCodeBlock( templateNode: TemplateNode, @@ -94,6 +97,36 @@ export function openFileInIde(filePath: string, line?: number) { shell.openExternal(command); } +export async function moveFolderPath( + currentPath: string, + updatedPath: string, + onProgress: CopyCallback, +): Promise { + try { + onProgress(CopyStage.STARTING, 'Starting to copy the data'); + + if (!fs.existsSync(currentPath)) { + throw new Error('Could not find the source path'); + } + + const parentDir = path.dirname(updatedPath); + if (!fs.existsSync(parentDir)) { + await fs.promises.mkdir(parentDir, { recursive: true }); + } + + onProgress(CopyStage.COPYING, 'Copying the code folder'); + + await fs.promises.cp(currentPath, updatedPath, { recursive: true }); + + onProgress(CopyStage.COMPLETE, 'Successfully copied the source code'); + } catch (error) { + const errorMessage = error instanceof Error ? error.message : 'Unknown Error'; + onProgress(CopyStage.ERROR, errorMessage); + console.error(error); + throw error; + } +} + export function pickDirectory() { return dialog.showOpenDialog({ properties: ['openDirectory', 'createDirectory'], diff --git a/apps/studio/electron/main/events/code.ts b/apps/studio/electron/main/events/code.ts index 039e2df9ae..4bc70b5bf1 100644 --- a/apps/studio/electron/main/events/code.ts +++ b/apps/studio/electron/main/events/code.ts @@ -2,7 +2,14 @@ import type { CodeDiff, CodeDiffRequest } from '@onlook/models/code'; import { MainChannels } from '@onlook/models/constants'; import type { TemplateNode } from '@onlook/models/element'; import { ipcMain } from 'electron'; -import { openFileInIde, openInIde, pickDirectory, readCodeBlock, writeCode } from '../code/'; +import { + moveFolderPath, + openFileInIde, + openInIde, + pickDirectory, + readCodeBlock, + writeCode, +} from '../code/'; import { getTemplateNodeClass } from '../code/classes'; import { extractComponentsFromDirectory } from '../code/components'; import { getCodeDiffs } from '../code/diff'; @@ -17,6 +24,8 @@ import { updateTailwindColorConfig, deleteTailwindColorGroup, } from '../assets/styles'; +import type { CopyCallback, CopyStage } from '@onlook/models'; +import { mainWindow } from '..'; export function listenForCodeMessages() { ipcMain.handle(MainChannels.VIEW_SOURCE_CODE, (e: Electron.IpcMainInvokeEvent, args) => { @@ -103,6 +112,23 @@ export function listenForCodeMessages() { return result.filePaths.at(0) ?? null; }); + ipcMain.handle( + MainChannels.UPDATE_PROJECT_PATH, + async (e: Electron.IpcMainInvokeEvent, args) => { + const progressCallback: CopyCallback = (stage: CopyStage, message: string) => { + mainWindow?.webContents.send(MainChannels.COPY_PROJECT_CALLBACK, { + stage, + message, + }); + }; + const { currentPath, updatedPath } = args as { + currentPath: string; + updatedPath: string; + }; + return moveFolderPath(currentPath, updatedPath, progressCallback); + }, + ); + ipcMain.handle(MainChannels.GET_COMPONENTS, async (_, args) => { if (typeof args !== 'string') { throw new Error('`args` must be a string'); diff --git a/apps/studio/src/components/Modals/Settings/Project/index.tsx b/apps/studio/src/components/Modals/Settings/Project/index.tsx index 4e9e151027..17340edb59 100644 --- a/apps/studio/src/components/Modals/Settings/Project/index.tsx +++ b/apps/studio/src/components/Modals/Settings/Project/index.tsx @@ -7,6 +7,18 @@ import { Input } from '@onlook/ui/input'; import { Separator } from '@onlook/ui/separator'; import { observer } from 'mobx-react-lite'; import { ReinstallButton } from './ReinstallButon'; +import { CopyStage, RunState } from '@onlook/models'; +import { useEffect, useMemo, useState } from 'react'; +import { + AlertDialog, + AlertDialogContent, + AlertDialogDescription, + AlertDialogFooter, + AlertDialogHeader, + AlertDialogTitle, +} from '@onlook/ui/alert-dialog'; +import { toast } from '@onlook/ui/use-toast'; +import { Progress } from '@onlook/ui/progress'; const ProjectTab = observer(() => { const projectsManager = useProjectsManager(); @@ -18,145 +30,246 @@ const ProjectTab = observer(() => { const folderPath = project?.folderPath || ''; const name = project?.name || ''; const url = project?.url || ''; + const isTerminalRunning = projectsManager.runner?.state === RunState.RUNNING; + + const [showWarningModal, setWarningModal] = useState(false); + const [updatedPath, setUpdatedPath] = useState(''); + const [isLoading, setIsLoading] = useState(false); + const [message, setMessage] = useState(''); + const state = projectsManager.copy.copyStage; + + useEffect(() => { + return () => { + window.api.removeAllListeners(MainChannels.UPDATE_PROJECT_PATH); + }; + }, []); + + const progress = useMemo(() => { + switch (state) { + case 'Starting...': { + setMessage(projectsManager.copy.message); + return 30; + } + case 'Copying...': { + setMessage(projectsManager.copy.message); + return 60; + } + case 'Complete': { + setMessage(projectsManager.copy.message); + return 100; + } + case 'Error': { + setMessage(projectsManager.copy.message); + return 0; + } + } + }, [projectsManager.copy.copyStage]); const handleUpdatePath = async () => { const path = (await invokeMainChannel(MainChannels.PICK_COMPONENTS_DIRECTORY)) as | string | null; - if (!path) { + if (!path || folderPath === path) { console.error('No path selected'); return; } - projectsManager.updatePartialProject({ - folderPath: path, - }); + setUpdatedPath(path); + setWarningModal(true); + }; + + const cancelMoveFolder = () => { + setUpdatedPath(''); + setWarningModal(false); + }; + + const confirmMoveFolder = async () => { + try { + setWarningModal(false); + setIsLoading(true); + await projectsManager.copy.createCopy(updatedPath); + toast({ + title: 'Path changed', + description: 'Path has been modified', + variant: 'warning', + }); + } catch (error) { + toast({ + title: 'Error', + description: 'Failed to move path', + variant: 'destructive', + }); + console.error(error); + } }; return ( -
-
-

Metadata

-
-
-

Name

- - projectsManager.updatePartialProject({ - name: e.target.value, - }) - } - className="w-2/3" - /> -
-
-

URL

- - projectsManager.updatePartialProject({ - url: e.target.value, - }) - } - className="w-2/3" - /> -
-
-

Path

-
+ <> +
+
+

Metadata

+
+
+

Name

projectsManager.updatePartialProject({ - folderPath: e.target.value, + name: e.target.value, }) } + className="w-2/3" /> - +
+
+

URL

+ + projectsManager.updatePartialProject({ + url: e.target.value, + }) + } + className="w-2/3" + /> +
+
+

Path

+
+ + +
-
- + -
-
-

Commands

-

- {"Only update these if you know what you're doing!"} -

-
-
-
-

Install

- - projectsManager.updatePartialProject({ - commands: { - ...project?.commands, - install: e.target.value, - }, - }) - } - /> +
+
+

Commands

+

+ {"Only update these if you know what you're doing!"} +

-
-

Run

- - projectsManager.updatePartialProject({ - commands: { - ...project?.commands, - run: e.target.value, - }, - }) - } - /> -
-
-

Build

- - projectsManager.updatePartialProject({ - commands: { - ...project?.commands, - build: e.target.value, - }, - }) - } - className="w-2/3" - /> +
+
+

Install

+ + projectsManager.updatePartialProject({ + commands: { + ...project?.commands, + install: e.target.value, + }, + }) + } + /> +
+
+

Run

+ + projectsManager.updatePartialProject({ + commands: { + ...project?.commands, + run: e.target.value, + }, + }) + } + /> +
+
+

Build

+ + projectsManager.updatePartialProject({ + commands: { + ...project?.commands, + build: e.target.value, + }, + }) + } + className="w-2/3" + /> +
-
- -
-
-

Reinstall Dependencies

-

- For when project failed to install dependencies -

+ +
+
+

Reinstall Dependencies

+

+ For when project failed to install dependencies +

+
+
-
-
+ + + + Move Folder + + {isTerminalRunning + ? 'Your app is currently running. Confirming will stop the running instance. Do you want to continue?' + : 'Your application will be copied to the selected location. Are you sure?'} + + + + + + + + + + + + + Creating Copying... + +

{message}

+
+
+ + {/*
*/} + +

{state}

+
+
+ + + +
+
+ ); }); diff --git a/apps/studio/src/lib/projects/copy.ts b/apps/studio/src/lib/projects/copy.ts new file mode 100644 index 0000000000..7516ca251f --- /dev/null +++ b/apps/studio/src/lib/projects/copy.ts @@ -0,0 +1,74 @@ +import { makeAutoObservable } from 'mobx'; +import { MainChannels } from '@onlook/models/constants'; +import type { ProjectsManager } from '.'; +import { toast } from '@onlook/ui/use-toast'; +import { invokeMainChannel } from '../utils'; +import { CopyStage, RunState } from '@onlook/models'; + +export class CopyManager { + copyStage: CopyStage = CopyStage.STARTING; + progress: number = 0; + message: string = ''; + error: string | null = null; + private cleanupListener: (() => void) | null = null; + private slowConnectionTimer: ReturnType | null = null; + constructor(private projectsManager: ProjectsManager) { + makeAutoObservable(this); + this.listenForPromptProgress(); + } + + get copyState() { + return this.copyStage; + } + + async createCopy(updatedPath: string) { + try { + const currentPath = this.projectsManager.project?.folderPath ?? ''; + if (!currentPath) { + toast({ + title: 'Error', + description: 'No valid path found', + variant: 'destructive', + }); + return; + } + + if (this.projectsManager.runner?.state === RunState.RUNNING) { + await this.projectsManager.runner?.stop(); + } + + await invokeMainChannel(MainChannels.UPDATE_PROJECT_PATH, { + currentPath, + updatedPath, + }); + + this.projectsManager.updatePartialProject({ + folderPath: updatedPath, + }); + } catch (error) { + toast({ + title: 'Error', + description: 'No valid path found', + variant: 'destructive', + }); + console.error(error); + throw error; + } + } + + listenForPromptProgress() { + window.api.on( + MainChannels.COPY_PROJECT_CALLBACK, + ({ message, stage }: { message: string; stage: CopyStage }) => { + this.copyStage = stage; + this.message = message; + }, + ); + + this.cleanupListener = () => { + window.api.removeAllListeners(MainChannels.COPY_PROJECT_CALLBACK); + }; + + return this.cleanupListener; + } +} diff --git a/apps/studio/src/lib/projects/index.ts b/apps/studio/src/lib/projects/index.ts index dbae0ef5c0..0fbddda6a2 100644 --- a/apps/studio/src/lib/projects/index.ts +++ b/apps/studio/src/lib/projects/index.ts @@ -6,6 +6,7 @@ import { nanoid } from 'nanoid/non-secure'; import type { EditorEngine } from '../editor/engine'; import { invokeMainChannel, sendAnalytics } from '../utils'; import { CreateManager } from './create'; +import { CopyManager } from './copy'; import { DomainsManager } from './domains'; import { RunManager } from './run'; import { VersionsManager } from './versions'; @@ -22,6 +23,7 @@ export class ProjectsManager { editorEngine: EditorEngine | null = null; private createManager: CreateManager; + private copyManager: CopyManager; private _project: Project | null = null; private _projects: Project[] = []; private _run: RunManager | null = null; @@ -31,6 +33,7 @@ export class ProjectsManager { constructor() { makeAutoObservable(this); this.createManager = new CreateManager(this); + this.copyManager = new CopyManager(this); this.restoreProjects(); } @@ -38,6 +41,10 @@ export class ProjectsManager { return this.createManager; } + get copy() { + return this.copyManager; + } + async restoreProjects() { const cachedProjects: ProjectsCache | null = await invokeMainChannel( MainChannels.GET_PROJECTS, diff --git a/bun.lock b/bun.lock index 0c88e3cc5e..4f62f57350 100644 --- a/bun.lock +++ b/bun.lock @@ -13,7 +13,11 @@ }, "apps/studio": { "name": "@onlook/studio", +<<<<<<< Updated upstream "version": "0.2.21", +======= + "version": "0.2.27", +>>>>>>> Stashed changes "dependencies": { "@ai-sdk/anthropic": "^1.1.17", "@emotion/react": "^11.13.3", @@ -658,9 +662,13 @@ "@opentelemetry/exporter-zipkin": ["@opentelemetry/exporter-zipkin@1.30.1", "", { "dependencies": { "@opentelemetry/core": "1.30.1", "@opentelemetry/resources": "1.30.1", "@opentelemetry/sdk-trace-base": "1.30.1", "@opentelemetry/semantic-conventions": "1.28.0" }, "peerDependencies": { "@opentelemetry/api": "^1.0.0" } }, "sha512-6S2QIMJahIquvFaaxmcwpvQQRD/YFaMTNoIxrfPIPOeITN+a8lfEcPDxNxn8JDAaxkg+4EnXhz8upVDYenoQjA=="], +<<<<<<< Updated upstream "@opentelemetry/instrumentation": ["@opentelemetry/instrumentation@0.57.2", "", { "dependencies": { "@opentelemetry/api-logs": "0.57.2", "@types/shimmer": "^1.2.0", "import-in-the-middle": "^1.8.1", "require-in-the-middle": "^7.1.1", "semver": "^7.5.2", "shimmer": "^1.2.1" }, "peerDependencies": { "@opentelemetry/api": "^1.3.0" } }, "sha512-BdBGhQBh8IjZ2oIIX6F2/Q3LKm/FDDKi6ccYKcBTeilh6SNdNKveDOLk73BkSJjQLJk6qe4Yh+hHw1UPhCDdrg=="], "@opentelemetry/instrumentation-amqplib": ["@opentelemetry/instrumentation-amqplib@0.46.1", "", { "dependencies": { "@opentelemetry/core": "^1.8.0", "@opentelemetry/instrumentation": "^0.57.1", "@opentelemetry/semantic-conventions": "^1.27.0" }, "peerDependencies": { "@opentelemetry/api": "^1.3.0" } }, "sha512-AyXVnlCf/xV3K/rNumzKxZqsULyITJH6OVLiW6730JPRqWA7Zc9bvYoVNpN6iOpTU8CasH34SU/ksVJmObFibQ=="], +======= + "@onlook/foundation": ["@onlook/foundation@workspace:packages/foundation"], +>>>>>>> Stashed changes "@opentelemetry/instrumentation-aws-lambda": ["@opentelemetry/instrumentation-aws-lambda@0.50.3", "", { "dependencies": { "@opentelemetry/instrumentation": "^0.57.1", "@opentelemetry/semantic-conventions": "^1.27.0", "@types/aws-lambda": "8.10.147" }, "peerDependencies": { "@opentelemetry/api": "^1.3.0" } }, "sha512-kotm/mRvSWUauudxcylc5YCDei+G/r+jnOH6q5S99aPLQ/Ms8D2yonMIxEJUILIPlthEmwLYxkw3ualWzMjm/A=="], @@ -3037,6 +3045,11 @@ "wcwidth": ["wcwidth@1.0.1", "", { "dependencies": { "defaults": "^1.0.3" } }, "sha512-XHPEwS0q6TaxcvG85+8EYkbiCux2XtWG2mkc47Ng2A77BQu9+DqIOJldST4HgPkuea7dvKSj5VgX3P1d4rW8Tg=="], "web-streams-polyfill": ["web-streams-polyfill@4.0.0-beta.3", "", {}, "sha512-QW95TCTaHmsYfHDybGMwO5IJIM93I/6vTRk+daHTWFPhwh+C8Cg7j7XyKrwrj8Ib6vYXe0ocYNrmzY4xAAN6ug=="], +<<<<<<< Updated upstream +======= + + "webfontloader": ["webfontloader@1.6.28", "", {}, "sha512-Egb0oFEga6f+nSgasH3E0M405Pzn6y3/9tOVanv/DLfa1YBIgcv90L18YyWnvXkRbIM17v5Kv6IT2N6g1x5tvQ=="], +>>>>>>> Stashed changes "webidl-conversions": ["webidl-conversions@4.0.2", "", {}, "sha512-YQ+BmxuTgd6UXZW3+ICGfyqRyHXVlD5GtQr5+qjiNW7bF0cqrzX500HVXPBOvgXb5YnzDd+h0zqyv61KUD7+Sg=="], @@ -3350,8 +3363,13 @@ "fetch-blob/web-streams-polyfill": ["web-streams-polyfill@3.3.3", "", {}, "sha512-d2JWLCivmZYTSIoge9MsgFCZrt571BikcWGYkjC1khllbTeDlGqZ2D8vD8E/lJa8WGWbb7Plm8/XJYV7IJHZZw=="], + "fetch-blob/web-streams-polyfill": ["web-streams-polyfill@3.3.3", "", {}, "sha512-d2JWLCivmZYTSIoge9MsgFCZrt571BikcWGYkjC1khllbTeDlGqZ2D8vD8E/lJa8WGWbb7Plm8/XJYV7IJHZZw=="], + +<<<<<<< Updated upstream +======= "filelist/minimatch": ["minimatch@5.1.6", "", { "dependencies": { "brace-expansion": "^2.0.1" } }, "sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g=="], +>>>>>>> Stashed changes "from2/readable-stream": ["readable-stream@2.3.8", "", { "dependencies": { "core-util-is": "~1.0.0", "inherits": "~2.0.3", "isarray": "~1.0.0", "process-nextick-args": "~2.0.0", "safe-buffer": "~5.1.1", "string_decoder": "~1.1.1", "util-deprecate": "~1.0.1" } }, "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA=="], "fs-minipass/minipass": ["minipass@3.3.6", "", { "dependencies": { "yallist": "^4.0.0" } }, "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw=="], @@ -3424,6 +3442,11 @@ "minipass-sized/minipass": ["minipass@3.3.6", "", { "dependencies": { "yallist": "^4.0.0" } }, "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw=="], +<<<<<<< Updated upstream +======= + "next/postcss": ["postcss@8.4.31", "", { "dependencies": { "nanoid": "^3.3.6", "picocolors": "^1.0.0", "source-map-js": "^1.0.2" } }, "sha512-PS08Iboia9mts/2ygV3eLpY5ghnUcfLV/EXTOW1E2qYxJKGGBUtNjN76FYHnMs36RmARn41bC0AZmn+rR0OVpQ=="], + +>>>>>>> Stashed changes "node-abi/semver": ["semver@7.7.1", "", { "bin": { "semver": "bin/semver.js" } }, "sha512-hlq8tAfn0m/61p4BVRcPzIGr6LKiMwo4VM6dGi6pt4qcRkmNzTcWq6eCEjEh+qXjkMDvPlOFFSGwQjoEa6gyMA=="], "node-api-version/semver": ["semver@7.7.1", "", { "bin": { "semver": "bin/semver.js" } }, "sha512-hlq8tAfn0m/61p4BVRcPzIGr6LKiMwo4VM6dGi6pt4qcRkmNzTcWq6eCEjEh+qXjkMDvPlOFFSGwQjoEa6gyMA=="], @@ -3488,8 +3511,11 @@ "simple-update-notifier/semver": ["semver@7.7.1", "", { "bin": { "semver": "bin/semver.js" } }, "sha512-hlq8tAfn0m/61p4BVRcPzIGr6LKiMwo4VM6dGi6pt4qcRkmNzTcWq6eCEjEh+qXjkMDvPlOFFSGwQjoEa6gyMA=="], +<<<<<<< Updated upstream "slice-ansi/ansi-styles": ["ansi-styles@4.3.0", "", { "dependencies": { "color-convert": "^2.0.1" } }, "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg=="], +======= +>>>>>>> Stashed changes "sort-keys/is-plain-obj": ["is-plain-obj@1.1.0", "", {}, "sha512-yvkRyxmFKEOQ4pNXCmJG5AEQNlXJS5LaONXo5/cLdTZdWvsZ1ioJEonLGAosKlMWE8lwUy/bJzMjcw8az73+Fg=="], "source-map-support/source-map": ["source-map@0.6.1", "", {}, "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g=="], @@ -3710,6 +3736,11 @@ "minipass-sized/minipass/yallist": ["yallist@4.0.0", "", {}, "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A=="], +<<<<<<< Updated upstream +======= + "next/postcss/nanoid": ["nanoid@3.3.11", "", { "bin": { "nanoid": "bin/nanoid.cjs" } }, "sha512-N8SpfPUnUp1bK+PMYW8qSWdl9U+wwNWI4QKxOYDy9JAro3WMX7p2OeVRF9v+347pnakNevPmiHhNmZ2HbFA76w=="], + +>>>>>>> Stashed changes "node-gyp/tar/chownr": ["chownr@2.0.0", "", {}, "sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ=="], "node-gyp/tar/minipass": ["minipass@5.0.0", "", {}, "sha512-3FnjYuehv9k6ovOEbyOswadCDPX1piCfhV8ncmYtHOjuPwylVWsghTLo7rabjC3Rx5xD4HDx8Wm1xnMF7S5qFQ=="], diff --git a/packages/models/src/constants/ipc.ts b/packages/models/src/constants/ipc.ts index 7b543fc72e..6fd334950e 100644 --- a/packages/models/src/constants/ipc.ts +++ b/packages/models/src/constants/ipc.ts @@ -50,6 +50,8 @@ export enum MainChannels { VIEW_SOURCE_CODE = 'view-source-code', VIEW_SOURCE_FILE = 'view-source-file', PICK_COMPONENTS_DIRECTORY = 'pick-directory', + COPY_PROJECT_CALLBACK = 'copy-project-callback', + UPDATE_PROJECT_PATH = 'update-project-path', GET_COMPONENTS = 'get-components', CLEAN_CODE_KEYS = 'clean-move-keys', diff --git a/packages/models/src/create/index.ts b/packages/models/src/create/index.ts index 1ff0e64f21..6b362dab81 100644 --- a/packages/models/src/create/index.ts +++ b/packages/models/src/create/index.ts @@ -20,6 +20,13 @@ export enum SetupStage { ERROR = 'error', } +export enum CopyStage { + STARTING = 'Starting...', + COPYING = 'Copying...', + COMPLETE = 'Complete', + ERROR = 'Error', +} + export interface CreateProjectResponse { success: boolean; error?: string; @@ -33,3 +40,4 @@ export interface CreateProjectResponse { export type CreateCallback = (stage: CreateStage, message: string) => void; export type VerifyCallback = (stage: VerifyStage, message: string) => void; export type SetupCallback = (stage: SetupStage, message: string) => void; +export type CopyCallback = (stage: CopyStage, message: string) => void; From d2e38f2c03ac496615adcef4c7c145e914968cde Mon Sep 17 00:00:00 2001 From: Pranav Tartey Date: Sat, 19 Apr 2025 20:32:30 +0530 Subject: [PATCH 07/11] added the multiple language support for the modals and toasts --- apps/studio/electron/main/code/index.ts | 9 +-- apps/studio/electron/main/events/code.ts | 3 +- .../Modals/Settings/Project/index.tsx | 75 +++++++++++++------ apps/studio/src/lib/projects/copy.ts | 24 +----- apps/studio/src/locales/en/translation.json | 35 +++++++++ apps/studio/src/locales/ja/translation.json | 36 +++++++++ apps/studio/src/locales/ko/translation.json | 36 +++++++++ apps/studio/src/locales/zh/translation.json | 36 +++++++++ packages/models/src/create/index.ts | 2 +- 9 files changed, 207 insertions(+), 49 deletions(-) diff --git a/apps/studio/electron/main/code/index.ts b/apps/studio/electron/main/code/index.ts index d827d06ac7..917076a7a3 100644 --- a/apps/studio/electron/main/code/index.ts +++ b/apps/studio/electron/main/code/index.ts @@ -103,7 +103,7 @@ export async function moveFolderPath( onProgress: CopyCallback, ): Promise { try { - onProgress(CopyStage.STARTING, 'Starting to copy the data'); + onProgress(CopyStage.STARTING); if (!fs.existsSync(currentPath)) { throw new Error('Could not find the source path'); @@ -114,14 +114,13 @@ export async function moveFolderPath( await fs.promises.mkdir(parentDir, { recursive: true }); } - onProgress(CopyStage.COPYING, 'Copying the code folder'); + onProgress(CopyStage.COPYING); await fs.promises.cp(currentPath, updatedPath, { recursive: true }); - onProgress(CopyStage.COMPLETE, 'Successfully copied the source code'); + onProgress(CopyStage.COMPLETE); } catch (error) { - const errorMessage = error instanceof Error ? error.message : 'Unknown Error'; - onProgress(CopyStage.ERROR, errorMessage); + onProgress(CopyStage.ERROR); console.error(error); throw error; } diff --git a/apps/studio/electron/main/events/code.ts b/apps/studio/electron/main/events/code.ts index 4bc70b5bf1..4897c39855 100644 --- a/apps/studio/electron/main/events/code.ts +++ b/apps/studio/electron/main/events/code.ts @@ -115,10 +115,9 @@ export function listenForCodeMessages() { ipcMain.handle( MainChannels.UPDATE_PROJECT_PATH, async (e: Electron.IpcMainInvokeEvent, args) => { - const progressCallback: CopyCallback = (stage: CopyStage, message: string) => { + const progressCallback: CopyCallback = (stage: CopyStage) => { mainWindow?.webContents.send(MainChannels.COPY_PROJECT_CALLBACK, { stage, - message, }); }; const { currentPath, updatedPath } = args as { diff --git a/apps/studio/src/components/Modals/Settings/Project/index.tsx b/apps/studio/src/components/Modals/Settings/Project/index.tsx index 17340edb59..4a00587a3b 100644 --- a/apps/studio/src/components/Modals/Settings/Project/index.tsx +++ b/apps/studio/src/components/Modals/Settings/Project/index.tsx @@ -7,7 +7,7 @@ import { Input } from '@onlook/ui/input'; import { Separator } from '@onlook/ui/separator'; import { observer } from 'mobx-react-lite'; import { ReinstallButton } from './ReinstallButon'; -import { CopyStage, RunState } from '@onlook/models'; +import { RunState } from '@onlook/models'; import { useEffect, useMemo, useState } from 'react'; import { AlertDialog, @@ -19,6 +19,7 @@ import { } from '@onlook/ui/alert-dialog'; import { toast } from '@onlook/ui/use-toast'; import { Progress } from '@onlook/ui/progress'; +import { t } from 'i18next'; const ProjectTab = observer(() => { const projectsManager = useProjectsManager(); @@ -30,13 +31,12 @@ const ProjectTab = observer(() => { const folderPath = project?.folderPath || ''; const name = project?.name || ''; const url = project?.url || ''; + const state = projectsManager.copy.copyStage; const isTerminalRunning = projectsManager.runner?.state === RunState.RUNNING; const [showWarningModal, setWarningModal] = useState(false); const [updatedPath, setUpdatedPath] = useState(''); const [isLoading, setIsLoading] = useState(false); - const [message, setMessage] = useState(''); - const state = projectsManager.copy.copyStage; useEffect(() => { return () => { @@ -44,26 +44,57 @@ const ProjectTab = observer(() => { }; }, []); + const loadingStatus: { status: string; message: string } = useMemo(() => { + switch (state) { + case 'Starting...': { + return { + status: t('projects.copy.loadingModal.status.starting'), + message: t('projects.copy.loadingModal.message.starting'), + }; + } + case 'Copying...': { + return { + status: t('projects.copy.loadingModal.status.copying'), + message: t('projects.copy.loadingModal.message.copying'), + }; + } + case 'Complete': { + return { + status: t('projects.copy.loadingModal.status.complete'), + message: t('projects.copy.loadingModal.message.complete'), + }; + } + case 'Error': { + return { + status: t('projects.copy.loadingModal.status.error'), + message: t('projects.copy.loadingModal.message.error'), + }; + } + default: { + return { + status: t('projects.copy.loadingModal.status.copying'), + message: t('projects.copy.loadingModal.message.copying'), + }; + } + } + }, [state]); + const progress = useMemo(() => { switch (state) { case 'Starting...': { - setMessage(projectsManager.copy.message); return 30; } case 'Copying...': { - setMessage(projectsManager.copy.message); return 60; } case 'Complete': { - setMessage(projectsManager.copy.message); return 100; } case 'Error': { - setMessage(projectsManager.copy.message); return 0; } } - }, [projectsManager.copy.copyStage]); + }, [state]); const handleUpdatePath = async () => { const path = (await invokeMainChannel(MainChannels.PICK_COMPONENTS_DIRECTORY)) as @@ -90,14 +121,14 @@ const ProjectTab = observer(() => { setIsLoading(true); await projectsManager.copy.createCopy(updatedPath); toast({ - title: 'Path changed', - description: 'Path has been modified', + title: t('projects.copy.toasts.success.title'), + description: t('projects.copy.toasts.success.description'), variant: 'warning', }); } catch (error) { toast({ - title: 'Error', - description: 'Failed to move path', + title: t('projects.copy.toasts.error.title'), + description: t('projects.copy.toasts.error.description'), variant: 'destructive', }); console.error(error); @@ -226,19 +257,19 @@ const ProjectTab = observer(() => { - Move Folder + {t('projects.copy.warningModal.title')} {isTerminalRunning - ? 'Your app is currently running. Confirming will stop the running instance. Do you want to continue?' - : 'Your application will be copied to the selected location. Are you sure?'} + ? t('projects.copy.warningModal.instanceRunning') + : t('projects.copy.warningModal.instanceNotRunning')} @@ -247,15 +278,17 @@ const ProjectTab = observer(() => { - Creating Copying... + {t('projects.copy.loadingModal.title')} -

{message}

+

+ {loadingStatus.message} +

{/*
*/} -

{state}

+

{loadingStatus.status}

@@ -264,7 +297,7 @@ const ProjectTab = observer(() => { variant="secondary" onClick={() => setIsLoading(false)} > - Finish + {t('projects.copy.loadingModal.finish')}
diff --git a/apps/studio/src/lib/projects/copy.ts b/apps/studio/src/lib/projects/copy.ts index 7516ca251f..1eea2c50c6 100644 --- a/apps/studio/src/lib/projects/copy.ts +++ b/apps/studio/src/lib/projects/copy.ts @@ -7,8 +7,6 @@ import { CopyStage, RunState } from '@onlook/models'; export class CopyManager { copyStage: CopyStage = CopyStage.STARTING; - progress: number = 0; - message: string = ''; error: string | null = null; private cleanupListener: (() => void) | null = null; private slowConnectionTimer: ReturnType | null = null; @@ -25,12 +23,7 @@ export class CopyManager { try { const currentPath = this.projectsManager.project?.folderPath ?? ''; if (!currentPath) { - toast({ - title: 'Error', - description: 'No valid path found', - variant: 'destructive', - }); - return; + throw Error('Valid current path not found'); } if (this.projectsManager.runner?.state === RunState.RUNNING) { @@ -46,24 +39,15 @@ export class CopyManager { folderPath: updatedPath, }); } catch (error) { - toast({ - title: 'Error', - description: 'No valid path found', - variant: 'destructive', - }); console.error(error); throw error; } } listenForPromptProgress() { - window.api.on( - MainChannels.COPY_PROJECT_CALLBACK, - ({ message, stage }: { message: string; stage: CopyStage }) => { - this.copyStage = stage; - this.message = message; - }, - ); + window.api.on(MainChannels.COPY_PROJECT_CALLBACK, ({ stage }: { stage: CopyStage }) => { + this.copyStage = stage; + }); this.cleanupListener = () => { window.api.removeAllListeners(MainChannels.COPY_PROJECT_CALLBACK); diff --git a/apps/studio/src/locales/en/translation.json b/apps/studio/src/locales/en/translation.json index 0f153e79de..185d4a9a01 100644 --- a/apps/studio/src/locales/en/translation.json +++ b/apps/studio/src/locales/en/translation.json @@ -24,6 +24,41 @@ "backToPrompt": "Back to Prompting" } }, + "copy": { + "warningModal": { + "title": "Move Folder", + "instanceRunning": "Your app is currently running. Confirming will stop the running instance. Do you want to continue?", + "instanceNotRunning": "Your application will be copied to the selected location. Are you sure?", + "cancel": "Cancel", + "confirm": "Confirm" + }, + "loadingModal": { + "title": "Creating Copying...", + "message": { + "starting": "Creating a copy for your project...", + "copying": "Please sit back while we create a copy, this might take a while.", + "complete": "Successfully created a copy", + "error": "Could not find the source path, make sure the source path exist." + }, + "status": { + "starting": "Starting", + "copying": "Copying...", + "complete": "Completed", + "error": "Error" + }, + "finish": "Finish" + }, + "toasts": { + "success": { + "title": "Path changed", + "description": "Path has been modified" + }, + "error": { + "title": "Error", + "description": "Failed to move path" + } + } + }, "select": { "empty": "No projects found", "sort": { diff --git a/apps/studio/src/locales/ja/translation.json b/apps/studio/src/locales/ja/translation.json index 41c2cd69b9..df926dcc48 100644 --- a/apps/studio/src/locales/ja/translation.json +++ b/apps/studio/src/locales/ja/translation.json @@ -219,6 +219,42 @@ "backToPrompt": "プロンプトに戻る" } }, + "copy": { + "warningModal": { + "title": "フォルダーの移動", + "instanceRunning": "アプリケーションが現在実行中です。確認すると実行中のインスタンスが停止されます。続行しますか?", + "instanceNotRunning": "アプリケーションが選択した場所にコピーされます。本当に続行しますか?", + "cancel": "キャンセル", + "confirm": "確認" + }, + "loadingModal": { + "title": "コピーを作成中...", + "message": { + "starting": "プロジェクトのコピーを作成しています...", + "copying": "コピーを作成中です。しばらくお待ちください。", + "complete": "コピーが正常に作成されました", + "error": "ソースパスが見つかりません。ソースパスが存在することを確認してください。" + }, + "status": { + "starting": "開始中", + "copying": "コピー中...", + "complete": "完了", + "error": "エラー" + }, + "finish": "完了" + }, + "toasts": { + "success": { + "title": "パスが変更されました", + "description": "パスが変更されました" + }, + "error": { + "title": "エラー", + "description": "パスの移動に失敗しました" + } + } + }, + "select": { "empty": "プロジェクトがありません", "sort": { diff --git a/apps/studio/src/locales/ko/translation.json b/apps/studio/src/locales/ko/translation.json index 8d17effcec..6e55b519c7 100644 --- a/apps/studio/src/locales/ko/translation.json +++ b/apps/studio/src/locales/ko/translation.json @@ -24,6 +24,42 @@ "backToPrompt": "프롬프트로 돌아가기" } }, + "copy": { + "warningModal": { + "title": "폴더 이동", + "instanceRunning": "애플리케이션이 현재 실행 중입니다. 확인하면 실행 중인 인스턴스가 중지됩니다. 계속하시겠습니까?", + "instanceNotRunning": "애플리케이션이 선택한 위치에 복사됩니다. 계속하시겠습니까?", + "cancel": "취소", + "confirm": "확인" + }, + "loadingModal": { + "title": "복사본 생성 중...", + "message": { + "starting": "프로젝트 복사본을 생성 중입니다...", + "copying": "복사본을 생성하는 중입니다. 잠시만 기다려 주세요.", + "complete": "복사본이 성공적으로 생성되었습니다", + "error": "소스 경로를 찾을 수 없습니다. 소스 경로가 존재하는지 확인해 주세요." + }, + "status": { + "starting": "시작 중", + "copying": "복사 중...", + "complete": "완료", + "error": "오류" + }, + "finish": "완료" + }, + "toasts": { + "success": { + "title": "경로가 변경되었습니다", + "description": "경로가 수정되었습니다" + }, + "error": { + "title": "오류", + "description": "경로 이동에 실패했습니다" + } + } + }, + "select": { "empty": "프로젝트를 찾을 수 없습니다.", "sort": { diff --git a/apps/studio/src/locales/zh/translation.json b/apps/studio/src/locales/zh/translation.json index 31474ccc64..4f77673642 100644 --- a/apps/studio/src/locales/zh/translation.json +++ b/apps/studio/src/locales/zh/translation.json @@ -24,6 +24,42 @@ "backToPrompt": "返回提示" } }, + "copy": { + "warningModal": { + "title": "移动文件夹", + "instanceRunning": "您的应用程序正在运行。确认将停止当前运行的实例。您确定要继续吗?", + "instanceNotRunning": "您的应用程序将被复制到所选位置。您确定要继续吗?", + "cancel": "取消", + "confirm": "确认" + }, + "loadingModal": { + "title": "正在创建副本...", + "message": { + "starting": "正在为您的项目创建副本...", + "copying": "正在创建副本,请稍候,这可能需要一些时间。", + "complete": "副本创建成功", + "error": "找不到源路径,请确保源路径存在。" + }, + "status": { + "starting": "开始中", + "copying": "复制中...", + "complete": "已完成", + "error": "错误" + }, + "finish": "完成" + }, + "toasts": { + "success": { + "title": "路径已更改", + "description": "路径已被修改" + }, + "error": { + "title": "错误", + "description": "移动路径失败" + } + } + }, + "select": { "empty": "未找到项目", "sort": { diff --git a/packages/models/src/create/index.ts b/packages/models/src/create/index.ts index 6b362dab81..058a881dc2 100644 --- a/packages/models/src/create/index.ts +++ b/packages/models/src/create/index.ts @@ -40,4 +40,4 @@ export interface CreateProjectResponse { export type CreateCallback = (stage: CreateStage, message: string) => void; export type VerifyCallback = (stage: VerifyStage, message: string) => void; export type SetupCallback = (stage: SetupStage, message: string) => void; -export type CopyCallback = (stage: CopyStage, message: string) => void; +export type CopyCallback = (stage: CopyStage) => void; From c7a206ea4aab8efd87b0375161464cc94345eb90 Mon Sep 17 00:00:00 2001 From: Pranav Tartey Date: Sat, 19 Apr 2025 22:17:22 +0530 Subject: [PATCH 08/11] fixed some minor issues --- .../Modals/Settings/Project/index.tsx | 183 +++++---- bun.lock | 379 ++++-------------- 2 files changed, 182 insertions(+), 380 deletions(-) diff --git a/apps/studio/src/components/Modals/Settings/Project/index.tsx b/apps/studio/src/components/Modals/Settings/Project/index.tsx index c0345b1b9e..bdcef8bf02 100644 --- a/apps/studio/src/components/Modals/Settings/Project/index.tsx +++ b/apps/studio/src/components/Modals/Settings/Project/index.tsx @@ -154,113 +154,118 @@ const ProjectTab = observer(() => { }; return ( - //
<> -
-

Metadata

-
-
-

Name

- - projectsManager.updatePartialProject({ - name: e.target.value, - }) - } - className="w-2/3" - /> -
-
-

URL

- handleUpdateUrl(e.target.value)} - className="w-2/3" - /> -
-
-

Path

-
- - -
-
-
- - - -
-
-

Commands

-

- {"Only update these if you know what you're doing!"} -

-
+
+
+

Metadata

-

Install

+

Name

projectsManager.updatePartialProject({ - commands: { - ...project?.commands, - install: e.target.value, - }, + name: e.target.value, }) } + className="w-2/3" />
-

Run

+

URL

handleUpdateUrl(e.target.value)} className="w-2/3" - onChange={(e) => - projectsManager.updatePartialProject({ - commands: { - ...project?.commands, - run: e.target.value, - }, - }) - } />
-

Build

- - projectsManager.updatePartialProject({ - commands: { - ...project?.commands, - build: e.target.value, - }, - }) - } - className="w-2/3" - /> +

Path

+
+ + +
-
- -
-
-

Reinstall Dependencies

-

- For when project failed to install dependencies -

+ + + +
+
+

Commands

+

+ {"Only update these if you know what you're doing!"} +

+
+
+
+

Install

+ + projectsManager.updatePartialProject({ + commands: { + ...project?.commands, + install: e.target.value, + }, + }) + } + /> +
+
+

Run

+ + projectsManager.updatePartialProject({ + commands: { + ...project?.commands, + run: e.target.value, + }, + }) + } + /> +
+
+

Build

+ + projectsManager.updatePartialProject({ + commands: { + ...project?.commands, + build: e.target.value, + }, + }) + } + className="w-2/3" + /> +
+
+
+ +
+
+

Reinstall Dependencies

+

+ For when project failed to install dependencies +

+
+
-
@@ -289,7 +294,7 @@ const ProjectTab = observer(() => { {t('projects.copy.loadingModal.title')} -

+

{loadingStatus.message}

diff --git a/bun.lock b/bun.lock index 7e5f8ae463..16245da930 100644 --- a/bun.lock +++ b/bun.lock @@ -10,15 +10,7 @@ }, "apps/studio": { "name": "@onlook/studio", -<<<<<<< HEAD -<<<<<<< Updated upstream - "version": "0.2.21", -======= "version": "0.2.27", ->>>>>>> Stashed changes -======= - "version": "0.2.27", ->>>>>>> 1113d4b9e78ac952f59500f747b62c3755487101 "dependencies": { "@ai-sdk/anthropic": "^1.1.17", "@codemirror/autocomplete": "^6.18.6", @@ -457,17 +449,6 @@ "@onlook/typescript": "*", }, }, - "packages/vfs": { - "name": "@onlook/vfs", - "version": "0.0.0", - "dependencies": { - "globby": "^14.1.0", - "isomorphic-git": "^1.29.0", - }, - "devDependencies": { - "@onlook/typescript": "*", - }, - }, "tooling/typescript": { "name": "@onlook/typescript", "version": "0.0.0", @@ -564,7 +545,7 @@ "@codemirror/view": ["@codemirror/view@6.36.5", "", { "dependencies": { "@codemirror/state": "^6.5.0", "style-mod": "^4.1.0", "w3c-keyname": "^2.2.4" } }, "sha512-cd+FZEUlu3GQCYnguYm3EkhJ8KJVisqqUsCOKedBoAt/d9c76JUUap6U0UrpElln5k6VyrEOYliMuDAKIeDQLg=="], - "@codesandbox/sdk": ["@codesandbox/sdk@0.11.1", "", { "bin": { "csb": "dist/bin/codesandbox.cjs" } }, "sha512-MKil+626cDuHOZTuHukAVgOyk3GIogDXLJPnPpCTQNwVq49UaEN6BlkEIuWmSOWE09X66lbXmuU96lJKUJ4aDA=="], + "@codesandbox/sdk": ["@codesandbox/sdk@0.11.2", "", { "bin": { "csb": "dist/bin/codesandbox.cjs" } }, "sha512-sn8+rdrdfRiQ/BeJxHLLXV+J1fiMtL0KGCgFzN8tg/VEHQVvVD31o1xL6j8pg9fm2FVPFWCnZbhMFaj6jOaqyQ=="], "@develar/schema-utils": ["@develar/schema-utils@2.6.5", "", { "dependencies": { "ajv": "^6.12.0", "ajv-keywords": "^3.4.1" } }, "sha512-0cp4PsWQ/9avqTVMCtZ+GirikIA36ikvjtHweU4/j8yLtgObI0+JUPhYFScgwlteveGB1rt3Cm8UhN04XayDig=="], @@ -580,11 +561,11 @@ "@electron/universal": ["@electron/universal@2.0.1", "", { "dependencies": { "@electron/asar": "^3.2.7", "@malept/cross-spawn-promise": "^2.0.0", "debug": "^4.3.1", "dir-compare": "^4.2.0", "fs-extra": "^11.1.1", "minimatch": "^9.0.3", "plist": "^3.1.0" } }, "sha512-fKpv9kg4SPmt+hY7SVBnIYULE9QJl8L3sCfcBsnqbJwwBwAeTLokJ9TRt9y7bK0JAzIW2y78TVVjvnQEms/yyA=="], - "@emnapi/core": ["@emnapi/core@1.4.1", "", { "dependencies": { "@emnapi/wasi-threads": "1.0.1", "tslib": "^2.4.0" } }, "sha512-4JFstCTaToCFrPqrGzgkF8N2NHjtsaY4uRh6brZQ5L9e4wbMieX8oDT8N7qfVFTQecHFEtkj4ve49VIZ3mKVqw=="], + "@emnapi/core": ["@emnapi/core@1.4.3", "", { "dependencies": { "@emnapi/wasi-threads": "1.0.2", "tslib": "^2.4.0" } }, "sha512-4m62DuCE07lw01soJwPiBGC0nAww0Q+RY70VZ+n49yDIO13yyinhbWCeNnaob0lakDtWQzSdtNWzJeOJt2ma+g=="], - "@emnapi/runtime": ["@emnapi/runtime@1.4.1", "", { "dependencies": { "tslib": "^2.4.0" } }, "sha512-LMshMVP0ZhACNjQNYXiU1iZJ6QCcv0lUdPDPugqGvCGXt5xtRVBPdtA0qU12pEXZzpWAhWlZYptfdAFq10DOVQ=="], + "@emnapi/runtime": ["@emnapi/runtime@1.4.3", "", { "dependencies": { "tslib": "^2.4.0" } }, "sha512-pBPWdu6MLKROBX05wSNKcNb++m5Er+KQ9QkB+WVM+pW2Kx9hoSrVTnu3BdkI5eBLZoKu/J6mW/B6i6bJB2ytXQ=="], - "@emnapi/wasi-threads": ["@emnapi/wasi-threads@1.0.1", "", { "dependencies": { "tslib": "^2.4.0" } }, "sha512-iIBu7mwkq4UQGeMEM8bLwNK962nXdhodeScX4slfQnRhEMMzvYivHhutCIk8uojvmASXXPC2WNEjwxFWk72Oqw=="], + "@emnapi/wasi-threads": ["@emnapi/wasi-threads@1.0.2", "", { "dependencies": { "tslib": "^2.4.0" } }, "sha512-5n3nTJblwRi8LlXkJ9eBzu+kZR8Yxcc7ubakyQTFzPMtIhFpUBRbsnc2Dv88IZDIbCDlBiWrknhB4Lsz7mg6BA=="], "@emotion/babel-plugin": ["@emotion/babel-plugin@11.13.5", "", { "dependencies": { "@babel/helper-module-imports": "^7.16.7", "@babel/runtime": "^7.18.3", "@emotion/hash": "^0.9.2", "@emotion/memoize": "^0.9.0", "@emotion/serialize": "^1.3.3", "babel-plugin-macros": "^3.1.0", "convert-source-map": "^1.5.0", "escape-string-regexp": "^4.0.0", "find-root": "^1.1.0", "source-map": "^0.5.7", "stylis": "4.2.0" } }, "sha512-pxHCpT2ex+0q+HH91/zsdHkw/lXd468DIN2zvfvLtPKLLMo6gQj7oLObq8PhkrxOZb/gGCq03S3Z7PDhS8pduQ=="], @@ -664,7 +645,7 @@ "@esbuild/win32-x64": ["@esbuild/win32-x64@0.25.2", "", { "os": "win32", "cpu": "x64" }, "sha512-kM3HKb16VIXZyIeVrM1ygYmZBKybX8N4p754bw390wGO3Tf2j4L2/WYL+4suWujpgf6GBYs3jv7TyUivdd05JA=="], - "@eslint-community/eslint-utils": ["@eslint-community/eslint-utils@4.6.0", "", { "dependencies": { "eslint-visitor-keys": "^3.4.3" }, "peerDependencies": { "eslint": "^6.0.0 || ^7.0.0 || >=8.0.0" } }, "sha512-WhCn7Z7TauhBtmzhvKpoQs0Wwb/kBcy4CwpuI0/eEIr2Lx2auxmulAzLr91wVZJaz47iUZdkXOK7WlAfxGKCnA=="], + "@eslint-community/eslint-utils": ["@eslint-community/eslint-utils@4.6.1", "", { "dependencies": { "eslint-visitor-keys": "^3.4.3" }, "peerDependencies": { "eslint": "^6.0.0 || ^7.0.0 || >=8.0.0" } }, "sha512-KTsJMmobmbrFLe3LDh0PC2FXpcSYJt/MLjlkh/9LEnmKYLSYmT/0EW9JWANjeoemiuZrmogti0tW5Ch+qNUYDw=="], "@eslint-community/regexpp": ["@eslint-community/regexpp@4.12.1", "", {}, "sha512-CCZCDJuduB9OUkFkY2IgppNZMi2lBQgD2qzwXkEia16cge2pijY/aXi96CJMquDMn3nJdlPV1A5KrJEXwfLNzQ=="], @@ -672,11 +653,11 @@ "@eslint/config-helpers": ["@eslint/config-helpers@0.2.1", "", {}, "sha512-RI17tsD2frtDu/3dmI7QRrD4bedNKPM08ziRYaC5AhkGrzIAJelm9kJU1TznK+apx6V+cqRz8tfpEeG3oIyjxw=="], - "@eslint/core": ["@eslint/core@0.12.0", "", { "dependencies": { "@types/json-schema": "^7.0.15" } }, "sha512-cmrR6pytBuSMTaBweKoGMwu3EiHiEC+DoyupPmlZ0HxBJBtIxwe+j/E4XPIKNx+Q74c8lXKPwYawBf5glsTkHg=="], + "@eslint/core": ["@eslint/core@0.13.0", "", { "dependencies": { "@types/json-schema": "^7.0.15" } }, "sha512-yfkgDw1KR66rkT5A8ci4irzDysN7FRpq3ttJolR88OqQikAWqwA8j5VZyas+vjyBNFIJ7MfybJ9plMILI2UrCw=="], "@eslint/eslintrc": ["@eslint/eslintrc@3.3.1", "", { "dependencies": { "ajv": "^6.12.4", "debug": "^4.3.2", "espree": "^10.0.1", "globals": "^14.0.0", "ignore": "^5.2.0", "import-fresh": "^3.2.1", "js-yaml": "^4.1.0", "minimatch": "^3.1.2", "strip-json-comments": "^3.1.1" } }, "sha512-gtF186CXhIl1p4pJNGZw8Yc6RlshoePRvE0X91oPGb3vZ8pM3qOS9W9NGPat9LziaBV7XrJWGylNQXkGcnM3IQ=="], - "@eslint/js": ["@eslint/js@9.24.0", "", {}, "sha512-uIY/y3z0uvOGX8cp1C2fiC4+ZmBhp6yZWkojtHL1YEMnRt1Y63HB9TM17proGEmeG7HeUY+UP36F0aknKYTpYA=="], + "@eslint/js": ["@eslint/js@9.25.0", "", {}, "sha512-iWhsUS8Wgxz9AXNfvfOPFSW4VfMXdVhp1hjkZVhXCrpgh/aLcc45rX6MPu+tIVUWDw0HfNwth7O28M1xDxNf9w=="], "@eslint/object-schema": ["@eslint/object-schema@2.1.6", "", {}, "sha512-RBMg5FRL0I0gs51M/guSAj5/e14VQ4tpZnQNWwuDT66P14I43ItmPfIZRhO9fUVIPOAQXU47atlywZ/czoqFPA=="], @@ -798,7 +779,7 @@ "@lezer/html": ["@lezer/html@1.3.10", "", { "dependencies": { "@lezer/common": "^1.2.0", "@lezer/highlight": "^1.0.0", "@lezer/lr": "^1.0.0" } }, "sha512-dqpT8nISx/p9Do3AchvYGV3qYc4/rKr3IBZxlHmpIKam56P47RSHkSF5f13Vu9hebS1jM0HmtJIwLbWz1VIY6w=="], - "@lezer/javascript": ["@lezer/javascript@1.4.21", "", { "dependencies": { "@lezer/common": "^1.2.0", "@lezer/highlight": "^1.1.3", "@lezer/lr": "^1.3.0" } }, "sha512-lL+1fcuxWYPURMM/oFZLEDm0XuLN128QPV+VuGtKpeaOGdcl9F2LYC3nh1S9LkPqx9M0mndZFdXCipNAZpzIkQ=="], + "@lezer/javascript": ["@lezer/javascript@1.5.1", "", { "dependencies": { "@lezer/common": "^1.2.0", "@lezer/highlight": "^1.1.3", "@lezer/lr": "^1.3.0" } }, "sha512-ATOImjeVJuvgm3JQ/bpo2Tmv55HSScE2MTPnKRMRIPx2cLhHGyX2VnqpHhtIV1tVzIjZDbcWQm+NCTF40ggZVw=="], "@lezer/json": ["@lezer/json@1.0.3", "", { "dependencies": { "@lezer/common": "^1.2.0", "@lezer/highlight": "^1.0.0", "@lezer/lr": "^1.0.0" } }, "sha512-BP9KzdF9Y35PDpv04r0VeSTKDeox5vVr3efE7eBbx3r4s3oNLfunchejZhjArmeieBH+nVOpgIiBJpEAv8ilqQ=="], @@ -812,29 +793,29 @@ "@marijn/find-cluster-break": ["@marijn/find-cluster-break@1.0.2", "", {}, "sha512-l0h88YhZFyKdXIFNfSWpyjStDjGHwZ/U7iobcK1cQQD8sejsONdQtTVU+1wVN1PBw40PiiHB1vA5S7VTfQiP9g=="], - "@napi-rs/wasm-runtime": ["@napi-rs/wasm-runtime@0.2.8", "", { "dependencies": { "@emnapi/core": "^1.4.0", "@emnapi/runtime": "^1.4.0", "@tybys/wasm-util": "^0.9.0" } }, "sha512-OBlgKdX7gin7OIq4fadsjpg+cp2ZphvAIKucHsNfTdJiqdOmOEwQd/bHi0VwNrcw5xpBJyUw6cK/QilCqy1BSg=="], + "@napi-rs/wasm-runtime": ["@napi-rs/wasm-runtime@0.2.9", "", { "dependencies": { "@emnapi/core": "^1.4.0", "@emnapi/runtime": "^1.4.0", "@tybys/wasm-util": "^0.9.0" } }, "sha512-OKRBiajrrxB9ATokgEQoG87Z25c67pCpYcCwmXYX8PBftC9pBfN18gnm/fh1wurSLEKIAt+QRFLFCQISrb66Jg=="], - "@next/env": ["@next/env@15.3.0", "", {}, "sha512-6mDmHX24nWlHOlbwUiAOmMyY7KELimmi+ed8qWcJYjqXeC+G6JzPZ3QosOAfjNwgMIzwhXBiRiCgdh8axTTdTA=="], + "@next/env": ["@next/env@15.3.1", "", {}, "sha512-cwK27QdzrMblHSn9DZRV+DQscHXRuJv6MydlJRpFSqJWZrTYMLzKDeyueJNN9MGd8NNiUKzDQADAf+dMLXX7YQ=="], - "@next/eslint-plugin-next": ["@next/eslint-plugin-next@15.3.0", "", { "dependencies": { "fast-glob": "3.3.1" } }, "sha512-511UUcpWw5GWTyKfzW58U2F/bYJyjLE9e3SlnGK/zSXq7RqLlqFO8B9bitJjumLpj317fycC96KZ2RZsjGNfBw=="], + "@next/eslint-plugin-next": ["@next/eslint-plugin-next@15.3.1", "", { "dependencies": { "fast-glob": "3.3.1" } }, "sha512-oEs4dsfM6iyER3jTzMm4kDSbrQJq8wZw5fmT6fg2V3SMo+kgG+cShzLfEV20senZzv8VF+puNLheiGPlBGsv2A=="], - "@next/swc-darwin-arm64": ["@next/swc-darwin-arm64@15.3.0", "", { "os": "darwin", "cpu": "arm64" }, "sha512-PDQcByT0ZfF2q7QR9d+PNj3wlNN4K6Q8JoHMwFyk252gWo4gKt7BF8Y2+KBgDjTFBETXZ/TkBEUY7NIIY7A/Kw=="], + "@next/swc-darwin-arm64": ["@next/swc-darwin-arm64@15.3.1", "", { "os": "darwin", "cpu": "arm64" }, "sha512-hjDw4f4/nla+6wysBL07z52Gs55Gttp5Bsk5/8AncQLJoisvTBP0pRIBK/B16/KqQyH+uN4Ww8KkcAqJODYH3w=="], - "@next/swc-darwin-x64": ["@next/swc-darwin-x64@15.3.0", "", { "os": "darwin", "cpu": "x64" }, "sha512-m+eO21yg80En8HJ5c49AOQpFDq+nP51nu88ZOMCorvw3g//8g1JSUsEiPSiFpJo1KCTQ+jm9H0hwXK49H/RmXg=="], + "@next/swc-darwin-x64": ["@next/swc-darwin-x64@15.3.1", "", { "os": "darwin", "cpu": "x64" }, "sha512-q+aw+cJ2ooVYdCEqZVk+T4Ni10jF6Fo5DfpEV51OupMaV5XL6pf3GCzrk6kSSZBsMKZtVC1Zm/xaNBFpA6bJ2g=="], - "@next/swc-linux-arm64-gnu": ["@next/swc-linux-arm64-gnu@15.3.0", "", { "os": "linux", "cpu": "arm64" }, "sha512-H0Kk04ZNzb6Aq/G6e0un4B3HekPnyy6D+eUBYPJv9Abx8KDYgNMWzKt4Qhj57HXV3sTTjsfc1Trc1SxuhQB+Tg=="], + "@next/swc-linux-arm64-gnu": ["@next/swc-linux-arm64-gnu@15.3.1", "", { "os": "linux", "cpu": "arm64" }, "sha512-wBQ+jGUI3N0QZyWmmvRHjXjTWFy8o+zPFLSOyAyGFI94oJi+kK/LIZFJXeykvgXUk1NLDAEFDZw/NVINhdk9FQ=="], - "@next/swc-linux-arm64-musl": ["@next/swc-linux-arm64-musl@15.3.0", "", { "os": "linux", "cpu": "arm64" }, "sha512-k8GVkdMrh/+J9uIv/GpnHakzgDQhrprJ/FbGQvwWmstaeFG06nnAoZCJV+wO/bb603iKV1BXt4gHG+s2buJqZA=="], + "@next/swc-linux-arm64-musl": ["@next/swc-linux-arm64-musl@15.3.1", "", { "os": "linux", "cpu": "arm64" }, "sha512-IIxXEXRti/AulO9lWRHiCpUUR8AR/ZYLPALgiIg/9ENzMzLn3l0NSxVdva7R/VDcuSEBo0eGVCe3evSIHNz0Hg=="], - "@next/swc-linux-x64-gnu": ["@next/swc-linux-x64-gnu@15.3.0", "", { "os": "linux", "cpu": "x64" }, "sha512-ZMQ9yzDEts/vkpFLRAqfYO1wSpIJGlQNK9gZ09PgyjBJUmg8F/bb8fw2EXKgEaHbCc4gmqMpDfh+T07qUphp9A=="], + "@next/swc-linux-x64-gnu": ["@next/swc-linux-x64-gnu@15.3.1", "", { "os": "linux", "cpu": "x64" }, "sha512-bfI4AMhySJbyXQIKH5rmLJ5/BP7bPwuxauTvVEiJ/ADoddaA9fgyNNCcsbu9SlqfHDoZmfI6g2EjzLwbsVTr5A=="], - "@next/swc-linux-x64-musl": ["@next/swc-linux-x64-musl@15.3.0", "", { "os": "linux", "cpu": "x64" }, "sha512-RFwq5VKYTw9TMr4T3e5HRP6T4RiAzfDJ6XsxH8j/ZeYq2aLsBqCkFzwMI0FmnSsLaUbOb46Uov0VvN3UciHX5A=="], + "@next/swc-linux-x64-musl": ["@next/swc-linux-x64-musl@15.3.1", "", { "os": "linux", "cpu": "x64" }, "sha512-FeAbR7FYMWR+Z+M5iSGytVryKHiAsc0x3Nc3J+FD5NVbD5Mqz7fTSy8CYliXinn7T26nDMbpExRUI/4ekTvoiA=="], - "@next/swc-win32-arm64-msvc": ["@next/swc-win32-arm64-msvc@15.3.0", "", { "os": "win32", "cpu": "arm64" }, "sha512-a7kUbqa/k09xPjfCl0RSVAvEjAkYBYxUzSVAzk2ptXiNEL+4bDBo9wNC43G/osLA/EOGzG4CuNRFnQyIHfkRgQ=="], + "@next/swc-win32-arm64-msvc": ["@next/swc-win32-arm64-msvc@15.3.1", "", { "os": "win32", "cpu": "arm64" }, "sha512-yP7FueWjphQEPpJQ2oKmshk/ppOt+0/bB8JC8svPUZNy0Pi3KbPx2Llkzv1p8CoQa+D2wknINlJpHf3vtChVBw=="], "@next/swc-win32-ia32-msvc": ["@next/swc-win32-ia32-msvc@14.2.26", "", { "os": "win32", "cpu": "ia32" }, "sha512-GQWg/Vbz9zUGi9X80lOeGsz1rMH/MtFO/XqigDznhhhTfDlDoynCM6982mPCbSlxJ/aveZcKtTlwfAjwhyxDpg=="], - "@next/swc-win32-x64-msvc": ["@next/swc-win32-x64-msvc@15.3.0", "", { "os": "win32", "cpu": "x64" }, "sha512-vHUQS4YVGJPmpjn7r5lEZuMhK5UQBNBRSB+iGDvJjaNk649pTIcRluDWNb9siunyLLiu/LDPHfvxBtNamyuLTw=="], + "@next/swc-win32-x64-msvc": ["@next/swc-win32-x64-msvc@15.3.1", "", { "os": "win32", "cpu": "x64" }, "sha512-3PMvF2zRJAifcRNni9uMk/gulWfWS+qVI/pagd+4yLF5bcXPZPPH2xlYRYOsUjmCJOXSTAC2PjRzbhsRzR2fDQ=="], "@nodelib/fs.scandir": ["@nodelib/fs.scandir@2.1.5", "", { "dependencies": { "@nodelib/fs.stat": "2.0.5", "run-parallel": "^1.1.9" } }, "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g=="], @@ -872,8 +853,6 @@ "@onlook/utility": ["@onlook/utility@workspace:packages/utility"], - "@onlook/vfs": ["@onlook/vfs@workspace:packages/vfs"], - "@onlook/web": ["@onlook/web@workspace:apps/web"], "@onlook/web-client": ["@onlook/web-client@workspace:apps/web/client"], @@ -888,163 +867,6 @@ "@opentelemetry/api": ["@opentelemetry/api@1.9.0", "", {}, "sha512-3giAOQvZiH5F9bMlMiv8+GSPMeqg0dbaeo58/0SlA9sxSqZhnUtxzX9/2FzyhS9sWQf5S0GJE0AKBrFqjpeYcg=="], -<<<<<<< HEAD - "@opentelemetry/api-logs": ["@opentelemetry/api-logs@0.57.2", "", { "dependencies": { "@opentelemetry/api": "^1.3.0" } }, "sha512-uIX52NnTM0iBh84MShlpouI7UKqkZ7MrUszTmaypHBu4r7NofznSnQRfJ+uUeDtQDj6w8eFGg5KBLDAwAPz1+A=="], - - "@opentelemetry/auto-instrumentations-node": ["@opentelemetry/auto-instrumentations-node@0.56.1", "", { "dependencies": { "@opentelemetry/instrumentation": "^0.57.1", "@opentelemetry/instrumentation-amqplib": "^0.46.1", "@opentelemetry/instrumentation-aws-lambda": "^0.50.3", "@opentelemetry/instrumentation-aws-sdk": "^0.49.1", "@opentelemetry/instrumentation-bunyan": "^0.45.1", "@opentelemetry/instrumentation-cassandra-driver": "^0.45.1", "@opentelemetry/instrumentation-connect": "^0.43.1", "@opentelemetry/instrumentation-cucumber": "^0.14.1", "@opentelemetry/instrumentation-dataloader": "^0.16.1", "@opentelemetry/instrumentation-dns": "^0.43.1", "@opentelemetry/instrumentation-express": "^0.47.1", "@opentelemetry/instrumentation-fastify": "^0.44.2", "@opentelemetry/instrumentation-fs": "^0.19.1", "@opentelemetry/instrumentation-generic-pool": "^0.43.1", "@opentelemetry/instrumentation-graphql": "^0.47.1", "@opentelemetry/instrumentation-grpc": "^0.57.1", "@opentelemetry/instrumentation-hapi": "^0.45.2", "@opentelemetry/instrumentation-http": "^0.57.1", "@opentelemetry/instrumentation-ioredis": "^0.47.1", "@opentelemetry/instrumentation-kafkajs": "^0.7.1", "@opentelemetry/instrumentation-knex": "^0.44.1", "@opentelemetry/instrumentation-koa": "^0.47.1", "@opentelemetry/instrumentation-lru-memoizer": "^0.44.1", "@opentelemetry/instrumentation-memcached": "^0.43.1", "@opentelemetry/instrumentation-mongodb": "^0.52.0", "@opentelemetry/instrumentation-mongoose": "^0.46.1", "@opentelemetry/instrumentation-mysql": "^0.45.1", "@opentelemetry/instrumentation-mysql2": "^0.45.2", "@opentelemetry/instrumentation-nestjs-core": "^0.44.1", "@opentelemetry/instrumentation-net": "^0.43.1", "@opentelemetry/instrumentation-pg": "^0.51.1", "@opentelemetry/instrumentation-pino": "^0.46.1", "@opentelemetry/instrumentation-redis": "^0.46.1", "@opentelemetry/instrumentation-redis-4": "^0.46.1", "@opentelemetry/instrumentation-restify": "^0.45.1", "@opentelemetry/instrumentation-router": "^0.44.1", "@opentelemetry/instrumentation-socket.io": "^0.46.1", "@opentelemetry/instrumentation-tedious": "^0.18.1", "@opentelemetry/instrumentation-undici": "^0.10.1", "@opentelemetry/instrumentation-winston": "^0.44.1", "@opentelemetry/resource-detector-alibaba-cloud": "^0.30.1", "@opentelemetry/resource-detector-aws": "^1.12.0", "@opentelemetry/resource-detector-azure": "^0.6.1", "@opentelemetry/resource-detector-container": "^0.6.1", "@opentelemetry/resource-detector-gcp": "^0.33.1", "@opentelemetry/resources": "^1.24.0", "@opentelemetry/sdk-node": "^0.57.1" }, "peerDependencies": { "@opentelemetry/api": "^1.4.1" } }, "sha512-4cK0+unfkXRRbQQg2r9K3ki8JlE0j9Iw8+4DZEkChShAnmviiE+/JMgHGvK+VVcLrSlgV6BBHv4+ZTLukQwhkA=="], - - "@opentelemetry/context-async-hooks": ["@opentelemetry/context-async-hooks@1.30.1", "", { "peerDependencies": { "@opentelemetry/api": ">=1.0.0 <1.10.0" } }, "sha512-s5vvxXPVdjqS3kTLKMeBMvop9hbWkwzBpu+mUO2M7sZtlkyDJGwFe33wRKnbaYDo8ExRVBIIdwIGrqpxHuKttA=="], - - "@opentelemetry/core": ["@opentelemetry/core@1.30.1", "", { "dependencies": { "@opentelemetry/semantic-conventions": "1.28.0" }, "peerDependencies": { "@opentelemetry/api": ">=1.0.0 <1.10.0" } }, "sha512-OOCM2C/QIURhJMuKaekP3TRBxBKxG/TWWA0TL2J6nXUtDnuCtccy49LUJF8xPFXMX+0LMcxFpCo8M9cGY1W6rQ=="], - - "@opentelemetry/exporter-logs-otlp-grpc": ["@opentelemetry/exporter-logs-otlp-grpc@0.57.2", "", { "dependencies": { "@grpc/grpc-js": "^1.7.1", "@opentelemetry/core": "1.30.1", "@opentelemetry/otlp-exporter-base": "0.57.2", "@opentelemetry/otlp-grpc-exporter-base": "0.57.2", "@opentelemetry/otlp-transformer": "0.57.2", "@opentelemetry/sdk-logs": "0.57.2" }, "peerDependencies": { "@opentelemetry/api": "^1.3.0" } }, "sha512-eovEy10n3umjKJl2Ey6TLzikPE+W4cUQ4gCwgGP1RqzTGtgDra0WjIqdy29ohiUKfvmbiL3MndZww58xfIvyFw=="], - - "@opentelemetry/exporter-logs-otlp-http": ["@opentelemetry/exporter-logs-otlp-http@0.57.2", "", { "dependencies": { "@opentelemetry/api-logs": "0.57.2", "@opentelemetry/core": "1.30.1", "@opentelemetry/otlp-exporter-base": "0.57.2", "@opentelemetry/otlp-transformer": "0.57.2", "@opentelemetry/sdk-logs": "0.57.2" }, "peerDependencies": { "@opentelemetry/api": "^1.3.0" } }, "sha512-0rygmvLcehBRp56NQVLSleJ5ITTduq/QfU7obOkyWgPpFHulwpw2LYTqNIz5TczKZuy5YY+5D3SDnXZL1tXImg=="], - - "@opentelemetry/exporter-logs-otlp-proto": ["@opentelemetry/exporter-logs-otlp-proto@0.57.2", "", { "dependencies": { "@opentelemetry/api-logs": "0.57.2", "@opentelemetry/core": "1.30.1", "@opentelemetry/otlp-exporter-base": "0.57.2", "@opentelemetry/otlp-transformer": "0.57.2", "@opentelemetry/resources": "1.30.1", "@opentelemetry/sdk-logs": "0.57.2", "@opentelemetry/sdk-trace-base": "1.30.1" }, "peerDependencies": { "@opentelemetry/api": "^1.3.0" } }, "sha512-ta0ithCin0F8lu9eOf4lEz9YAScecezCHkMMyDkvd9S7AnZNX5ikUmC5EQOQADU+oCcgo/qkQIaKcZvQ0TYKDw=="], - - "@opentelemetry/exporter-metrics-otlp-grpc": ["@opentelemetry/exporter-metrics-otlp-grpc@0.57.2", "", { "dependencies": { "@grpc/grpc-js": "^1.7.1", "@opentelemetry/core": "1.30.1", "@opentelemetry/exporter-metrics-otlp-http": "0.57.2", "@opentelemetry/otlp-exporter-base": "0.57.2", "@opentelemetry/otlp-grpc-exporter-base": "0.57.2", "@opentelemetry/otlp-transformer": "0.57.2", "@opentelemetry/resources": "1.30.1", "@opentelemetry/sdk-metrics": "1.30.1" }, "peerDependencies": { "@opentelemetry/api": "^1.3.0" } }, "sha512-r70B8yKR41F0EC443b5CGB4rUaOMm99I5N75QQt6sHKxYDzSEc6gm48Diz1CI1biwa5tDPznpylTrywO/pT7qw=="], - - "@opentelemetry/exporter-metrics-otlp-http": ["@opentelemetry/exporter-metrics-otlp-http@0.57.2", "", { "dependencies": { "@opentelemetry/core": "1.30.1", "@opentelemetry/otlp-exporter-base": "0.57.2", "@opentelemetry/otlp-transformer": "0.57.2", "@opentelemetry/resources": "1.30.1", "@opentelemetry/sdk-metrics": "1.30.1" }, "peerDependencies": { "@opentelemetry/api": "^1.3.0" } }, "sha512-ttb9+4iKw04IMubjm3t0EZsYRNWr3kg44uUuzfo9CaccYlOh8cDooe4QObDUkvx9d5qQUrbEckhrWKfJnKhemA=="], - - "@opentelemetry/exporter-metrics-otlp-proto": ["@opentelemetry/exporter-metrics-otlp-proto@0.57.2", "", { "dependencies": { "@opentelemetry/core": "1.30.1", "@opentelemetry/exporter-metrics-otlp-http": "0.57.2", "@opentelemetry/otlp-exporter-base": "0.57.2", "@opentelemetry/otlp-transformer": "0.57.2", "@opentelemetry/resources": "1.30.1", "@opentelemetry/sdk-metrics": "1.30.1" }, "peerDependencies": { "@opentelemetry/api": "^1.3.0" } }, "sha512-HX068Q2eNs38uf7RIkNN9Hl4Ynl+3lP0++KELkXMCpsCbFO03+0XNNZ1SkwxPlP9jrhQahsMPMkzNXpq3fKsnw=="], - - "@opentelemetry/exporter-prometheus": ["@opentelemetry/exporter-prometheus@0.57.2", "", { "dependencies": { "@opentelemetry/core": "1.30.1", "@opentelemetry/resources": "1.30.1", "@opentelemetry/sdk-metrics": "1.30.1" }, "peerDependencies": { "@opentelemetry/api": "^1.3.0" } }, "sha512-VqIqXnuxWMWE/1NatAGtB1PvsQipwxDcdG4RwA/umdBcW3/iOHp0uejvFHTRN2O78ZPged87ErJajyUBPUhlDQ=="], - - "@opentelemetry/exporter-trace-otlp-grpc": ["@opentelemetry/exporter-trace-otlp-grpc@0.57.2", "", { "dependencies": { "@grpc/grpc-js": "^1.7.1", "@opentelemetry/core": "1.30.1", "@opentelemetry/otlp-exporter-base": "0.57.2", "@opentelemetry/otlp-grpc-exporter-base": "0.57.2", "@opentelemetry/otlp-transformer": "0.57.2", "@opentelemetry/resources": "1.30.1", "@opentelemetry/sdk-trace-base": "1.30.1" }, "peerDependencies": { "@opentelemetry/api": "^1.3.0" } }, "sha512-gHU1vA3JnHbNxEXg5iysqCWxN9j83d7/epTYBZflqQnTyCC4N7yZXn/dMM+bEmyhQPGjhCkNZLx4vZuChH1PYw=="], - - "@opentelemetry/exporter-trace-otlp-http": ["@opentelemetry/exporter-trace-otlp-http@0.57.2", "", { "dependencies": { "@opentelemetry/core": "1.30.1", "@opentelemetry/otlp-exporter-base": "0.57.2", "@opentelemetry/otlp-transformer": "0.57.2", "@opentelemetry/resources": "1.30.1", "@opentelemetry/sdk-trace-base": "1.30.1" }, "peerDependencies": { "@opentelemetry/api": "^1.3.0" } }, "sha512-sB/gkSYFu+0w2dVQ0PWY9fAMl172PKMZ/JrHkkW8dmjCL0CYkmXeE+ssqIL/yBUTPOvpLIpenX5T9RwXRBW/3g=="], - - "@opentelemetry/exporter-trace-otlp-proto": ["@opentelemetry/exporter-trace-otlp-proto@0.57.2", "", { "dependencies": { "@opentelemetry/core": "1.30.1", "@opentelemetry/otlp-exporter-base": "0.57.2", "@opentelemetry/otlp-transformer": "0.57.2", "@opentelemetry/resources": "1.30.1", "@opentelemetry/sdk-trace-base": "1.30.1" }, "peerDependencies": { "@opentelemetry/api": "^1.3.0" } }, "sha512-awDdNRMIwDvUtoRYxRhja5QYH6+McBLtoz1q9BeEsskhZcrGmH/V1fWpGx8n+Rc+542e8pJA6y+aullbIzQmlw=="], - - "@opentelemetry/exporter-zipkin": ["@opentelemetry/exporter-zipkin@1.30.1", "", { "dependencies": { "@opentelemetry/core": "1.30.1", "@opentelemetry/resources": "1.30.1", "@opentelemetry/sdk-trace-base": "1.30.1", "@opentelemetry/semantic-conventions": "1.28.0" }, "peerDependencies": { "@opentelemetry/api": "^1.0.0" } }, "sha512-6S2QIMJahIquvFaaxmcwpvQQRD/YFaMTNoIxrfPIPOeITN+a8lfEcPDxNxn8JDAaxkg+4EnXhz8upVDYenoQjA=="], - -<<<<<<< Updated upstream - "@opentelemetry/instrumentation": ["@opentelemetry/instrumentation@0.57.2", "", { "dependencies": { "@opentelemetry/api-logs": "0.57.2", "@types/shimmer": "^1.2.0", "import-in-the-middle": "^1.8.1", "require-in-the-middle": "^7.1.1", "semver": "^7.5.2", "shimmer": "^1.2.1" }, "peerDependencies": { "@opentelemetry/api": "^1.3.0" } }, "sha512-BdBGhQBh8IjZ2oIIX6F2/Q3LKm/FDDKi6ccYKcBTeilh6SNdNKveDOLk73BkSJjQLJk6qe4Yh+hHw1UPhCDdrg=="], - - "@opentelemetry/instrumentation-amqplib": ["@opentelemetry/instrumentation-amqplib@0.46.1", "", { "dependencies": { "@opentelemetry/core": "^1.8.0", "@opentelemetry/instrumentation": "^0.57.1", "@opentelemetry/semantic-conventions": "^1.27.0" }, "peerDependencies": { "@opentelemetry/api": "^1.3.0" } }, "sha512-AyXVnlCf/xV3K/rNumzKxZqsULyITJH6OVLiW6730JPRqWA7Zc9bvYoVNpN6iOpTU8CasH34SU/ksVJmObFibQ=="], -======= - "@onlook/foundation": ["@onlook/foundation@workspace:packages/foundation"], ->>>>>>> Stashed changes - - "@opentelemetry/instrumentation-aws-lambda": ["@opentelemetry/instrumentation-aws-lambda@0.50.3", "", { "dependencies": { "@opentelemetry/instrumentation": "^0.57.1", "@opentelemetry/semantic-conventions": "^1.27.0", "@types/aws-lambda": "8.10.147" }, "peerDependencies": { "@opentelemetry/api": "^1.3.0" } }, "sha512-kotm/mRvSWUauudxcylc5YCDei+G/r+jnOH6q5S99aPLQ/Ms8D2yonMIxEJUILIPlthEmwLYxkw3ualWzMjm/A=="], - - "@opentelemetry/instrumentation-aws-sdk": ["@opentelemetry/instrumentation-aws-sdk@0.49.1", "", { "dependencies": { "@opentelemetry/core": "^1.8.0", "@opentelemetry/instrumentation": "^0.57.1", "@opentelemetry/propagation-utils": "^0.30.16", "@opentelemetry/semantic-conventions": "^1.27.0" }, "peerDependencies": { "@opentelemetry/api": "^1.3.0" } }, "sha512-Vbj4BYeV/1K4Pbbfk+gQ8gwYL0w+tBeUwG88cOxnF7CLPO1XnskGV8Q3Gzut2Ah/6Dg17dBtlzEqL3UiFP2Z6A=="], - - "@opentelemetry/instrumentation-bunyan": ["@opentelemetry/instrumentation-bunyan@0.45.1", "", { "dependencies": { "@opentelemetry/api-logs": "^0.57.1", "@opentelemetry/instrumentation": "^0.57.1", "@types/bunyan": "1.8.11" }, "peerDependencies": { "@opentelemetry/api": "^1.3.0" } }, "sha512-T9POV9ccS41UjpsjLrJ4i0m8LfplBiN3dMeH9XZ2btiDrjoaWtDrst6tNb1avetBjkeshOuBp1EWKP22EVSr0g=="], - - "@opentelemetry/instrumentation-cassandra-driver": ["@opentelemetry/instrumentation-cassandra-driver@0.45.1", "", { "dependencies": { "@opentelemetry/instrumentation": "^0.57.1", "@opentelemetry/semantic-conventions": "^1.27.0" }, "peerDependencies": { "@opentelemetry/api": "^1.3.0" } }, "sha512-RqnP0rK2hcKK1AKcmYvedLiL6G5TvFGiSUt2vI9wN0cCBdTt9Y9+wxxY19KoGxq7e9T/aHow6P5SUhCVI1sHvQ=="], - - "@opentelemetry/instrumentation-connect": ["@opentelemetry/instrumentation-connect@0.43.1", "", { "dependencies": { "@opentelemetry/core": "^1.8.0", "@opentelemetry/instrumentation": "^0.57.1", "@opentelemetry/semantic-conventions": "^1.27.0", "@types/connect": "3.4.38" }, "peerDependencies": { "@opentelemetry/api": "^1.3.0" } }, "sha512-ht7YGWQuV5BopMcw5Q2hXn3I8eG8TH0J/kc/GMcW4CuNTgiP6wCu44BOnucJWL3CmFWaRHI//vWyAhaC8BwePw=="], - - "@opentelemetry/instrumentation-cucumber": ["@opentelemetry/instrumentation-cucumber@0.14.1", "", { "dependencies": { "@opentelemetry/instrumentation": "^0.57.1", "@opentelemetry/semantic-conventions": "^1.27.0" }, "peerDependencies": { "@opentelemetry/api": "^1.0.0" } }, "sha512-ybO+tmH85pDO0ywTskmrMtZcccKyQr7Eb7wHy1keR2HFfx46SzZbjHo1AuGAX//Hook3gjM7+w211gJ2bwKe1Q=="], - - "@opentelemetry/instrumentation-dataloader": ["@opentelemetry/instrumentation-dataloader@0.16.1", "", { "dependencies": { "@opentelemetry/instrumentation": "^0.57.1" }, "peerDependencies": { "@opentelemetry/api": "^1.3.0" } }, "sha512-K/qU4CjnzOpNkkKO4DfCLSQshejRNAJtd4esgigo/50nxCB6XCyi1dhAblUHM9jG5dRm8eu0FB+t87nIo99LYQ=="], - - "@opentelemetry/instrumentation-dns": ["@opentelemetry/instrumentation-dns@0.43.1", "", { "dependencies": { "@opentelemetry/instrumentation": "^0.57.1" }, "peerDependencies": { "@opentelemetry/api": "^1.3.0" } }, "sha512-e/tMZYU1nc+k+J3259CQtqVZIPsPRSLNoAQbGEmSKrjLEY/KJSbpBZ17lu4dFVBzqoF1cZYIZxn9WPQxy4V9ng=="], - - "@opentelemetry/instrumentation-express": ["@opentelemetry/instrumentation-express@0.47.1", "", { "dependencies": { "@opentelemetry/core": "^1.8.0", "@opentelemetry/instrumentation": "^0.57.1", "@opentelemetry/semantic-conventions": "^1.27.0" }, "peerDependencies": { "@opentelemetry/api": "^1.3.0" } }, "sha512-QNXPTWteDclR2B4pDFpz0TNghgB33UMjUt14B+BZPmtH1MwUFAfLHBaP5If0Z5NZC+jaH8oF2glgYjrmhZWmSw=="], - - "@opentelemetry/instrumentation-fastify": ["@opentelemetry/instrumentation-fastify@0.44.2", "", { "dependencies": { "@opentelemetry/core": "^1.8.0", "@opentelemetry/instrumentation": "^0.57.1", "@opentelemetry/semantic-conventions": "^1.27.0" }, "peerDependencies": { "@opentelemetry/api": "^1.3.0" } }, "sha512-arSp97Y4D2NWogoXRb8CzFK3W2ooVdvqRRtQDljFt9uC3zI6OuShgey6CVFC0JxT1iGjkAr1r4PDz23mWrFULQ=="], - - "@opentelemetry/instrumentation-fs": ["@opentelemetry/instrumentation-fs@0.19.1", "", { "dependencies": { "@opentelemetry/core": "^1.8.0", "@opentelemetry/instrumentation": "^0.57.1" }, "peerDependencies": { "@opentelemetry/api": "^1.3.0" } }, "sha512-6g0FhB3B9UobAR60BGTcXg4IHZ6aaYJzp0Ki5FhnxyAPt8Ns+9SSvgcrnsN2eGmk3RWG5vYycUGOEApycQL24A=="], - - "@opentelemetry/instrumentation-generic-pool": ["@opentelemetry/instrumentation-generic-pool@0.43.1", "", { "dependencies": { "@opentelemetry/instrumentation": "^0.57.1" }, "peerDependencies": { "@opentelemetry/api": "^1.3.0" } }, "sha512-M6qGYsp1cURtvVLGDrPPZemMFEbuMmCXgQYTReC/IbimV5sGrLBjB+/hANUpRZjX67nGLdKSVLZuQQAiNz+sww=="], - - "@opentelemetry/instrumentation-graphql": ["@opentelemetry/instrumentation-graphql@0.47.1", "", { "dependencies": { "@opentelemetry/instrumentation": "^0.57.1" }, "peerDependencies": { "@opentelemetry/api": "^1.3.0" } }, "sha512-EGQRWMGqwiuVma8ZLAZnExQ7sBvbOx0N/AE/nlafISPs8S+QtXX+Viy6dcQwVWwYHQPAcuY3bFt3xgoAwb4ZNQ=="], - - "@opentelemetry/instrumentation-grpc": ["@opentelemetry/instrumentation-grpc@0.57.2", "", { "dependencies": { "@opentelemetry/instrumentation": "0.57.2", "@opentelemetry/semantic-conventions": "1.28.0" }, "peerDependencies": { "@opentelemetry/api": "^1.3.0" } }, "sha512-TR6YQA67cLSZzdxbf2SrbADJy2Y8eBW1+9mF15P0VK2MYcpdoUSmQTF1oMkBwa3B9NwqDFA2fq7wYTTutFQqaQ=="], - - "@opentelemetry/instrumentation-hapi": ["@opentelemetry/instrumentation-hapi@0.45.2", "", { "dependencies": { "@opentelemetry/core": "^1.8.0", "@opentelemetry/instrumentation": "^0.57.1", "@opentelemetry/semantic-conventions": "^1.27.0" }, "peerDependencies": { "@opentelemetry/api": "^1.3.0" } }, "sha512-7Ehow/7Wp3aoyCrZwQpU7a2CnoMq0XhIcioFuKjBb0PLYfBfmTsFTUyatlHu0fRxhwcRsSQRTvEhmZu8CppBpQ=="], - - "@opentelemetry/instrumentation-http": ["@opentelemetry/instrumentation-http@0.57.2", "", { "dependencies": { "@opentelemetry/core": "1.30.1", "@opentelemetry/instrumentation": "0.57.2", "@opentelemetry/semantic-conventions": "1.28.0", "forwarded-parse": "2.1.2", "semver": "^7.5.2" }, "peerDependencies": { "@opentelemetry/api": "^1.3.0" } }, "sha512-1Uz5iJ9ZAlFOiPuwYg29Bf7bJJc/GeoeJIFKJYQf67nTVKFe8RHbEtxgkOmK4UGZNHKXcpW4P8cWBYzBn1USpg=="], - - "@opentelemetry/instrumentation-ioredis": ["@opentelemetry/instrumentation-ioredis@0.47.1", "", { "dependencies": { "@opentelemetry/instrumentation": "^0.57.1", "@opentelemetry/redis-common": "^0.36.2", "@opentelemetry/semantic-conventions": "^1.27.0" }, "peerDependencies": { "@opentelemetry/api": "^1.3.0" } }, "sha512-OtFGSN+kgk/aoKgdkKQnBsQFDiG8WdCxu+UrHr0bXScdAmtSzLSraLo7wFIb25RVHfRWvzI5kZomqJYEg/l1iA=="], - - "@opentelemetry/instrumentation-kafkajs": ["@opentelemetry/instrumentation-kafkajs@0.7.1", "", { "dependencies": { "@opentelemetry/instrumentation": "^0.57.1", "@opentelemetry/semantic-conventions": "^1.27.0" }, "peerDependencies": { "@opentelemetry/api": "^1.3.0" } }, "sha512-OtjaKs8H7oysfErajdYr1yuWSjMAectT7Dwr+axIoZqT9lmEOkD/H/3rgAs8h/NIuEi2imSXD+vL4MZtOuJfqQ=="], - - "@opentelemetry/instrumentation-knex": ["@opentelemetry/instrumentation-knex@0.44.1", "", { "dependencies": { "@opentelemetry/instrumentation": "^0.57.1", "@opentelemetry/semantic-conventions": "^1.27.0" }, "peerDependencies": { "@opentelemetry/api": "^1.3.0" } }, "sha512-U4dQxkNhvPexffjEmGwCq68FuftFK15JgUF05y/HlK3M6W/G2iEaACIfXdSnwVNe9Qh0sPfw8LbOPxrWzGWGMQ=="], - - "@opentelemetry/instrumentation-koa": ["@opentelemetry/instrumentation-koa@0.47.1", "", { "dependencies": { "@opentelemetry/core": "^1.8.0", "@opentelemetry/instrumentation": "^0.57.1", "@opentelemetry/semantic-conventions": "^1.27.0" }, "peerDependencies": { "@opentelemetry/api": "^1.3.0" } }, "sha512-l/c+Z9F86cOiPJUllUCt09v+kICKvT+Vg1vOAJHtHPsJIzurGayucfCMq2acd/A/yxeNWunl9d9eqZ0G+XiI6A=="], - - "@opentelemetry/instrumentation-lru-memoizer": ["@opentelemetry/instrumentation-lru-memoizer@0.44.1", "", { "dependencies": { "@opentelemetry/instrumentation": "^0.57.1" }, "peerDependencies": { "@opentelemetry/api": "^1.3.0" } }, "sha512-5MPkYCvG2yw7WONEjYj5lr5JFehTobW7wX+ZUFy81oF2lr9IPfZk9qO+FTaM0bGEiymwfLwKe6jE15nHn1nmHg=="], - - "@opentelemetry/instrumentation-memcached": ["@opentelemetry/instrumentation-memcached@0.43.1", "", { "dependencies": { "@opentelemetry/instrumentation": "^0.57.1", "@opentelemetry/semantic-conventions": "^1.27.0", "@types/memcached": "^2.2.6" }, "peerDependencies": { "@opentelemetry/api": "^1.3.0" } }, "sha512-rK5YWC22gmsLp2aEbaPk5F+9r6BFFZuc9GTnW/ErrWpz2XNHUgeFInoPDg4t+Trs8OttIfn8XwkfFkSKqhxanw=="], - - "@opentelemetry/instrumentation-mongodb": ["@opentelemetry/instrumentation-mongodb@0.52.0", "", { "dependencies": { "@opentelemetry/instrumentation": "^0.57.1", "@opentelemetry/semantic-conventions": "^1.27.0" }, "peerDependencies": { "@opentelemetry/api": "^1.3.0" } }, "sha512-1xmAqOtRUQGR7QfJFfGV/M2kC7wmI2WgZdpru8hJl3S0r4hW0n3OQpEHlSGXJAaNFyvT+ilnwkT+g5L4ljHR6g=="], - - "@opentelemetry/instrumentation-mongoose": ["@opentelemetry/instrumentation-mongoose@0.46.1", "", { "dependencies": { "@opentelemetry/core": "^1.8.0", "@opentelemetry/instrumentation": "^0.57.1", "@opentelemetry/semantic-conventions": "^1.27.0" }, "peerDependencies": { "@opentelemetry/api": "^1.3.0" } }, "sha512-3kINtW1LUTPkiXFRSSBmva1SXzS/72we/jL22N+BnF3DFcoewkdkHPYOIdAAk9gSicJ4d5Ojtt1/HeibEc5OQg=="], - - "@opentelemetry/instrumentation-mysql": ["@opentelemetry/instrumentation-mysql@0.45.1", "", { "dependencies": { "@opentelemetry/instrumentation": "^0.57.1", "@opentelemetry/semantic-conventions": "^1.27.0", "@types/mysql": "2.15.26" }, "peerDependencies": { "@opentelemetry/api": "^1.3.0" } }, "sha512-TKp4hQ8iKQsY7vnp/j0yJJ4ZsP109Ht6l4RHTj0lNEG1TfgTrIH5vJMbgmoYXWzNHAqBH2e7fncN12p3BP8LFg=="], - - "@opentelemetry/instrumentation-mysql2": ["@opentelemetry/instrumentation-mysql2@0.45.2", "", { "dependencies": { "@opentelemetry/instrumentation": "^0.57.1", "@opentelemetry/semantic-conventions": "^1.27.0", "@opentelemetry/sql-common": "^0.40.1" }, "peerDependencies": { "@opentelemetry/api": "^1.3.0" } }, "sha512-h6Ad60FjCYdJZ5DTz1Lk2VmQsShiViKe0G7sYikb0GHI0NVvApp2XQNRHNjEMz87roFttGPLHOYVPlfy+yVIhQ=="], - - "@opentelemetry/instrumentation-nestjs-core": ["@opentelemetry/instrumentation-nestjs-core@0.44.1", "", { "dependencies": { "@opentelemetry/instrumentation": "^0.57.1", "@opentelemetry/semantic-conventions": "^1.27.0" }, "peerDependencies": { "@opentelemetry/api": "^1.3.0" } }, "sha512-4TXaqJK27QXoMqrt4+hcQ6rKFd8B6V4JfrTJKnqBmWR1cbaqd/uwyl9yxhNH1JEkyo8GaBfdpBC4ZE4FuUhPmg=="], - - "@opentelemetry/instrumentation-net": ["@opentelemetry/instrumentation-net@0.43.1", "", { "dependencies": { "@opentelemetry/instrumentation": "^0.57.1", "@opentelemetry/semantic-conventions": "^1.27.0" }, "peerDependencies": { "@opentelemetry/api": "^1.3.0" } }, "sha512-TaMqP6tVx9/SxlY81dHlSyP5bWJIKq+K7vKfk4naB/LX4LBePPY3++1s0edpzH+RfwN+tEGVW9zTb9ci0up/lQ=="], - - "@opentelemetry/instrumentation-pg": ["@opentelemetry/instrumentation-pg@0.51.1", "", { "dependencies": { "@opentelemetry/core": "^1.26.0", "@opentelemetry/instrumentation": "^0.57.1", "@opentelemetry/semantic-conventions": "^1.27.0", "@opentelemetry/sql-common": "^0.40.1", "@types/pg": "8.6.1", "@types/pg-pool": "2.0.6" }, "peerDependencies": { "@opentelemetry/api": "^1.3.0" } }, "sha512-QxgjSrxyWZc7Vk+qGSfsejPVFL1AgAJdSBMYZdDUbwg730D09ub3PXScB9d04vIqPriZ+0dqzjmQx0yWKiCi2Q=="], - - "@opentelemetry/instrumentation-pino": ["@opentelemetry/instrumentation-pino@0.46.1", "", { "dependencies": { "@opentelemetry/api-logs": "^0.57.1", "@opentelemetry/core": "^1.25.0", "@opentelemetry/instrumentation": "^0.57.1" }, "peerDependencies": { "@opentelemetry/api": "^1.3.0" } }, "sha512-HB8gD/9CNAKlTV+mdZehnFC4tLUtQ7e+729oGq88e4WipxzZxmMYuRwZ2vzOA9/APtq+MRkERJ9PcoDqSIjZ+g=="], - - "@opentelemetry/instrumentation-redis": ["@opentelemetry/instrumentation-redis@0.46.1", "", { "dependencies": { "@opentelemetry/instrumentation": "^0.57.1", "@opentelemetry/redis-common": "^0.36.2", "@opentelemetry/semantic-conventions": "^1.27.0" }, "peerDependencies": { "@opentelemetry/api": "^1.3.0" } }, "sha512-AN7OvlGlXmlvsgbLHs6dS1bggp6Fcki+GxgYZdSrb/DB692TyfjR7sVILaCe0crnP66aJuXsg9cge3hptHs9UA=="], - - "@opentelemetry/instrumentation-redis-4": ["@opentelemetry/instrumentation-redis-4@0.46.1", "", { "dependencies": { "@opentelemetry/instrumentation": "^0.57.1", "@opentelemetry/redis-common": "^0.36.2", "@opentelemetry/semantic-conventions": "^1.27.0" }, "peerDependencies": { "@opentelemetry/api": "^1.3.0" } }, "sha512-UMqleEoabYMsWoTkqyt9WAzXwZ4BlFZHO40wr3d5ZvtjKCHlD4YXLm+6OLCeIi/HkX7EXvQaz8gtAwkwwSEvcQ=="], - - "@opentelemetry/instrumentation-restify": ["@opentelemetry/instrumentation-restify@0.45.1", "", { "dependencies": { "@opentelemetry/core": "^1.8.0", "@opentelemetry/instrumentation": "^0.57.1", "@opentelemetry/semantic-conventions": "^1.27.0" }, "peerDependencies": { "@opentelemetry/api": "^1.3.0" } }, "sha512-Zd6Go9iEa+0zcoA2vDka9r/plYKaT3BhD3ESIy4JNIzFWXeQBGbH3zZxQIsz0jbNTMEtonlymU7eTLeaGWiApA=="], - - "@opentelemetry/instrumentation-router": ["@opentelemetry/instrumentation-router@0.44.1", "", { "dependencies": { "@opentelemetry/instrumentation": "^0.57.1", "@opentelemetry/semantic-conventions": "^1.27.0" }, "peerDependencies": { "@opentelemetry/api": "^1.3.0" } }, "sha512-l4T/S7ByjpY5TCUPeDe1GPns02/5BpR0jroSMexyH3ZnXJt9PtYqx1IKAlOjaFEGEOQF2tGDsMi4PY5l+fSniQ=="], - - "@opentelemetry/instrumentation-socket.io": ["@opentelemetry/instrumentation-socket.io@0.46.1", "", { "dependencies": { "@opentelemetry/instrumentation": "^0.57.1", "@opentelemetry/semantic-conventions": "^1.27.0" }, "peerDependencies": { "@opentelemetry/api": "^1.3.0" } }, "sha512-9AsCVUAHOqvfe2RM/2I0DsDnx2ihw1d5jIN4+Bly1YPFTJIbk4+bXjAkr9+X6PUfhiV5urQHZkiYYPU1Q4yzPA=="], - - "@opentelemetry/instrumentation-tedious": ["@opentelemetry/instrumentation-tedious@0.18.1", "", { "dependencies": { "@opentelemetry/instrumentation": "^0.57.1", "@opentelemetry/semantic-conventions": "^1.27.0", "@types/tedious": "^4.0.14" }, "peerDependencies": { "@opentelemetry/api": "^1.3.0" } }, "sha512-5Cuy/nj0HBaH+ZJ4leuD7RjgvA844aY2WW+B5uLcWtxGjRZl3MNLuxnNg5DYWZNPO+NafSSnra0q49KWAHsKBg=="], - - "@opentelemetry/instrumentation-undici": ["@opentelemetry/instrumentation-undici@0.10.1", "", { "dependencies": { "@opentelemetry/core": "^1.8.0", "@opentelemetry/instrumentation": "^0.57.1" }, "peerDependencies": { "@opentelemetry/api": "^1.7.0" } }, "sha512-rkOGikPEyRpMCmNu9AQuV5dtRlDmJp2dK5sw8roVshAGoB6hH/3QjDtRhdwd75SsJwgynWUNRUYe0wAkTo16tQ=="], - - "@opentelemetry/instrumentation-winston": ["@opentelemetry/instrumentation-winston@0.44.1", "", { "dependencies": { "@opentelemetry/api-logs": "^0.57.1", "@opentelemetry/instrumentation": "^0.57.1" }, "peerDependencies": { "@opentelemetry/api": "^1.3.0" } }, "sha512-iexblTsT3fP0hHUz/M1mWr+Ylg3bsYN2En/jvKXZtboW3Qkvt17HrQJYTF9leVIkXAfN97QxAcTE99YGbQW7vQ=="], - - "@opentelemetry/otlp-exporter-base": ["@opentelemetry/otlp-exporter-base@0.57.2", "", { "dependencies": { "@opentelemetry/core": "1.30.1", "@opentelemetry/otlp-transformer": "0.57.2" }, "peerDependencies": { "@opentelemetry/api": "^1.3.0" } }, "sha512-XdxEzL23Urhidyebg5E6jZoaiW5ygP/mRjxLHixogbqwDy2Faduzb5N0o/Oi+XTIJu+iyxXdVORjXax+Qgfxag=="], - - "@opentelemetry/otlp-grpc-exporter-base": ["@opentelemetry/otlp-grpc-exporter-base@0.57.2", "", { "dependencies": { "@grpc/grpc-js": "^1.7.1", "@opentelemetry/core": "1.30.1", "@opentelemetry/otlp-exporter-base": "0.57.2", "@opentelemetry/otlp-transformer": "0.57.2" }, "peerDependencies": { "@opentelemetry/api": "^1.3.0" } }, "sha512-USn173KTWy0saqqRB5yU9xUZ2xdgb1Rdu5IosJnm9aV4hMTuFFRTUsQxbgc24QxpCHeoKzzCSnS/JzdV0oM2iQ=="], - - "@opentelemetry/otlp-transformer": ["@opentelemetry/otlp-transformer@0.57.2", "", { "dependencies": { "@opentelemetry/api-logs": "0.57.2", "@opentelemetry/core": "1.30.1", "@opentelemetry/resources": "1.30.1", "@opentelemetry/sdk-logs": "0.57.2", "@opentelemetry/sdk-metrics": "1.30.1", "@opentelemetry/sdk-trace-base": "1.30.1", "protobufjs": "^7.3.0" }, "peerDependencies": { "@opentelemetry/api": "^1.3.0" } }, "sha512-48IIRj49gbQVK52jYsw70+Jv+JbahT8BqT2Th7C4H7RCM9d0gZ5sgNPoMpWldmfjvIsSgiGJtjfk9MeZvjhoig=="], - - "@opentelemetry/propagation-utils": ["@opentelemetry/propagation-utils@0.30.16", "", { "peerDependencies": { "@opentelemetry/api": "^1.0.0" } }, "sha512-ZVQ3Z/PQ+2GQlrBfbMMMT0U7MzvYZLCPP800+ooyaBqm4hMvuQHfP028gB9/db0mwkmyEAMad9houukUVxhwcw=="], - - "@opentelemetry/propagator-b3": ["@opentelemetry/propagator-b3@1.30.1", "", { "dependencies": { "@opentelemetry/core": "1.30.1" }, "peerDependencies": { "@opentelemetry/api": ">=1.0.0 <1.10.0" } }, "sha512-oATwWWDIJzybAZ4pO76ATN5N6FFbOA1otibAVlS8v90B4S1wClnhRUk7K+2CHAwN1JKYuj4jh/lpCEG5BAqFuQ=="], - - "@opentelemetry/propagator-jaeger": ["@opentelemetry/propagator-jaeger@1.30.1", "", { "dependencies": { "@opentelemetry/core": "1.30.1" }, "peerDependencies": { "@opentelemetry/api": ">=1.0.0 <1.10.0" } }, "sha512-Pj/BfnYEKIOImirH76M4hDaBSx6HyZ2CXUqk+Kj02m6BB80c/yo4BdWkn/1gDFfU+YPY+bPR2U0DKBfdxCKwmg=="], - - "@opentelemetry/redis-common": ["@opentelemetry/redis-common@0.36.2", "", {}, "sha512-faYX1N0gpLhej/6nyp6bgRjzAKXn5GOEMYY7YhciSfCoITAktLUtQ36d24QEWNA1/WA1y6qQunCe0OhHRkVl9g=="], - - "@opentelemetry/resource-detector-alibaba-cloud": ["@opentelemetry/resource-detector-alibaba-cloud@0.30.1", "", { "dependencies": { "@opentelemetry/core": "^1.26.0", "@opentelemetry/resources": "^1.10.0", "@opentelemetry/semantic-conventions": "^1.27.0" }, "peerDependencies": { "@opentelemetry/api": "^1.0.0" } }, "sha512-9l0FVP3F4+Z6ax27vMzkmhZdNtxAbDqEfy7rduzya3xFLaRiJSvOpw6cru6Edl5LwO+WvgNui+VzHa9ViE8wCg=="], - - "@opentelemetry/resource-detector-aws": ["@opentelemetry/resource-detector-aws@1.12.0", "", { "dependencies": { "@opentelemetry/core": "^1.0.0", "@opentelemetry/resources": "^1.10.0", "@opentelemetry/semantic-conventions": "^1.27.0" }, "peerDependencies": { "@opentelemetry/api": "^1.0.0" } }, "sha512-Cvi7ckOqiiuWlHBdA1IjS0ufr3sltex2Uws2RK6loVp4gzIJyOijsddAI6IZ5kiO8h/LgCWe8gxPmwkTKImd+Q=="], - - "@opentelemetry/resource-detector-azure": ["@opentelemetry/resource-detector-azure@0.6.1", "", { "dependencies": { "@opentelemetry/core": "^1.25.1", "@opentelemetry/resources": "^1.10.1", "@opentelemetry/semantic-conventions": "^1.27.0" }, "peerDependencies": { "@opentelemetry/api": "^1.0.0" } }, "sha512-Djr31QCExVfWViaf9cGJnH+bUInD72p0GEfgDGgjCAztyvyji6WJvKjs6qmkpPN+Ig6KLk0ho2VgzT5Kdl4L2Q=="], - - "@opentelemetry/resource-detector-container": ["@opentelemetry/resource-detector-container@0.6.1", "", { "dependencies": { "@opentelemetry/core": "^1.26.0", "@opentelemetry/resources": "^1.10.0", "@opentelemetry/semantic-conventions": "^1.27.0" }, "peerDependencies": { "@opentelemetry/api": "^1.0.0" } }, "sha512-o4sLzx149DQXDmVa8pgjBDEEKOj9SuQnkSLbjUVOpQNnn10v0WNR6wLwh30mFsK26xOJ6SpqZBGKZiT7i5MjlA=="], - - "@opentelemetry/resource-detector-gcp": ["@opentelemetry/resource-detector-gcp@0.33.1", "", { "dependencies": { "@opentelemetry/core": "^1.0.0", "@opentelemetry/resources": "^1.10.0", "@opentelemetry/semantic-conventions": "^1.27.0", "gcp-metadata": "^6.0.0" }, "peerDependencies": { "@opentelemetry/api": "^1.0.0" } }, "sha512-/aZJXI1rU6Eus04ih2vU0hxXAibXXMzH1WlDZ8bXcTJmhwmTY8cP392+6l7cWeMnTQOibBUz8UKV3nhcCBAefw=="], - - "@opentelemetry/resources": ["@opentelemetry/resources@1.30.1", "", { "dependencies": { "@opentelemetry/core": "1.30.1", "@opentelemetry/semantic-conventions": "1.28.0" }, "peerDependencies": { "@opentelemetry/api": ">=1.0.0 <1.10.0" } }, "sha512-5UxZqiAgLYGFjS4s9qm5mBVo433u+dSPUFWVWXmLAD4wB65oMCoXaJP1KJa9DIYYMeHu3z4BZcStG3LC593cWA=="], - - "@opentelemetry/sdk-logs": ["@opentelemetry/sdk-logs@0.57.2", "", { "dependencies": { "@opentelemetry/api-logs": "0.57.2", "@opentelemetry/core": "1.30.1", "@opentelemetry/resources": "1.30.1" }, "peerDependencies": { "@opentelemetry/api": ">=1.4.0 <1.10.0" } }, "sha512-TXFHJ5c+BKggWbdEQ/inpgIzEmS2BGQowLE9UhsMd7YYlUfBQJ4uax0VF/B5NYigdM/75OoJGhAV3upEhK+3gg=="], - - "@opentelemetry/sdk-metrics": ["@opentelemetry/sdk-metrics@1.30.1", "", { "dependencies": { "@opentelemetry/core": "1.30.1", "@opentelemetry/resources": "1.30.1" }, "peerDependencies": { "@opentelemetry/api": ">=1.3.0 <1.10.0" } }, "sha512-q9zcZ0Okl8jRgmy7eNW3Ku1XSgg3sDLa5evHZpCwjspw7E8Is4K/haRPDJrBcX3YSn/Y7gUvFnByNYEKQNbNog=="], - - "@opentelemetry/sdk-node": ["@opentelemetry/sdk-node@0.57.2", "", { "dependencies": { "@opentelemetry/api-logs": "0.57.2", "@opentelemetry/core": "1.30.1", "@opentelemetry/exporter-logs-otlp-grpc": "0.57.2", "@opentelemetry/exporter-logs-otlp-http": "0.57.2", "@opentelemetry/exporter-logs-otlp-proto": "0.57.2", "@opentelemetry/exporter-metrics-otlp-grpc": "0.57.2", "@opentelemetry/exporter-metrics-otlp-http": "0.57.2", "@opentelemetry/exporter-metrics-otlp-proto": "0.57.2", "@opentelemetry/exporter-prometheus": "0.57.2", "@opentelemetry/exporter-trace-otlp-grpc": "0.57.2", "@opentelemetry/exporter-trace-otlp-http": "0.57.2", "@opentelemetry/exporter-trace-otlp-proto": "0.57.2", "@opentelemetry/exporter-zipkin": "1.30.1", "@opentelemetry/instrumentation": "0.57.2", "@opentelemetry/resources": "1.30.1", "@opentelemetry/sdk-logs": "0.57.2", "@opentelemetry/sdk-metrics": "1.30.1", "@opentelemetry/sdk-trace-base": "1.30.1", "@opentelemetry/sdk-trace-node": "1.30.1", "@opentelemetry/semantic-conventions": "1.28.0" }, "peerDependencies": { "@opentelemetry/api": ">=1.3.0 <1.10.0" } }, "sha512-8BaeqZyN5sTuPBtAoY+UtKwXBdqyuRKmekN5bFzAO40CgbGzAxfTpiL3PBerT7rhZ7p2nBdq7FaMv/tBQgHE4A=="], - - "@opentelemetry/sdk-trace-base": ["@opentelemetry/sdk-trace-base@1.30.1", "", { "dependencies": { "@opentelemetry/core": "1.30.1", "@opentelemetry/resources": "1.30.1", "@opentelemetry/semantic-conventions": "1.28.0" }, "peerDependencies": { "@opentelemetry/api": ">=1.0.0 <1.10.0" } }, "sha512-jVPgBbH1gCy2Lb7X0AVQ8XAfgg0pJ4nvl8/IiQA6nxOsPvS+0zMJaFSs2ltXe0J6C8dqjcnpyqINDJmU30+uOg=="], - - "@opentelemetry/sdk-trace-node": ["@opentelemetry/sdk-trace-node@1.30.1", "", { "dependencies": { "@opentelemetry/context-async-hooks": "1.30.1", "@opentelemetry/core": "1.30.1", "@opentelemetry/propagator-b3": "1.30.1", "@opentelemetry/propagator-jaeger": "1.30.1", "@opentelemetry/sdk-trace-base": "1.30.1", "semver": "^7.5.2" }, "peerDependencies": { "@opentelemetry/api": ">=1.0.0 <1.10.0" } }, "sha512-cBjYOINt1JxXdpw1e5MlHmFRc5fgj4GW/86vsKFxJCJ8AL4PdVtYH41gWwl4qd4uQjqEL1oJVrXkSy5cnduAnQ=="], - - "@opentelemetry/semantic-conventions": ["@opentelemetry/semantic-conventions@1.30.0", "", {}, "sha512-4VlGgo32k2EQ2wcCY3vEU28A0O13aOtHz3Xt2/2U5FAh9EfhD6t6DqL5Z6yAnRCntbTFDU4YfbpyzSlHNWycPw=="], - - "@opentelemetry/sql-common": ["@opentelemetry/sql-common@0.40.1", "", { "dependencies": { "@opentelemetry/core": "^1.1.0" }, "peerDependencies": { "@opentelemetry/api": "^1.1.0" } }, "sha512-nSDlnHSqzC3pXn/wZEZVLuAuJ1MYMXPBwtv2qAbCa3847SaHItdE7SzUq/Jtb0KZmh1zfAbNi3AAMjztTT4Ugg=="], - -======= ->>>>>>> 1113d4b9e78ac952f59500f747b62c3755487101 "@parcel/watcher": ["@parcel/watcher@2.5.1", "", { "dependencies": { "detect-libc": "^1.0.3", "is-glob": "^4.0.3", "micromatch": "^4.0.5", "node-addon-api": "^7.0.0" }, "optionalDependencies": { "@parcel/watcher-android-arm64": "2.5.1", "@parcel/watcher-darwin-arm64": "2.5.1", "@parcel/watcher-darwin-x64": "2.5.1", "@parcel/watcher-freebsd-x64": "2.5.1", "@parcel/watcher-linux-arm-glibc": "2.5.1", "@parcel/watcher-linux-arm-musl": "2.5.1", "@parcel/watcher-linux-arm64-glibc": "2.5.1", "@parcel/watcher-linux-arm64-musl": "2.5.1", "@parcel/watcher-linux-x64-glibc": "2.5.1", "@parcel/watcher-linux-x64-musl": "2.5.1", "@parcel/watcher-win32-arm64": "2.5.1", "@parcel/watcher-win32-ia32": "2.5.1", "@parcel/watcher-win32-x64": "2.5.1" } }, "sha512-dfUnCxiN9H4ap84DvD2ubjw+3vUNpstxa0TneY/Paat8a3R4uQZDLSvWjmznAY/DoahqTHl9V46HF/Zs3F29pg=="], "@parcel/watcher-android-arm64": ["@parcel/watcher-android-arm64@2.5.1", "", { "os": "android", "cpu": "arm64" }, "sha512-KF8+j9nNbUN8vzOFDpRMsaKBHZ/mcjEjMToVMJOhTozkDonQFFrRcfdLWn6yWKCmJKmdVxSgHiYvTCef4/qcBA=="], @@ -1075,85 +897,87 @@ "@pkgjs/parseargs": ["@pkgjs/parseargs@0.11.0", "", {}, "sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg=="], - "@playwright/test": ["@playwright/test@1.51.1", "", { "dependencies": { "playwright": "1.51.1" }, "bin": { "playwright": "cli.js" } }, "sha512-nM+kEaTSAoVlXmMPH10017vn3FSiFqr/bh4fKg9vmAdMfd9SDqRZNvPSiAHADc/itWak+qPvMPZQOPwCBW7k7Q=="], + "@playwright/test": ["@playwright/test@1.52.0", "", { "dependencies": { "playwright": "1.52.0" }, "bin": { "playwright": "cli.js" } }, "sha512-uh6W7sb55hl7D6vsAeA+V2p5JnlAqzhqFyF0VcJkKZXkgnFcVG9PziERRHQfPLfNGx1C292a4JqbWzhR8L4R1g=="], "@radix-ui/number": ["@radix-ui/number@1.1.1", "", {}, "sha512-MkKCwxlXTgz6CFoJx3pCwn07GKp36+aZyu/u2Ln2VrA5DcdyCZkASEDBTd8x5whTQQL5CiYf4prXKLcgQdv29g=="], "@radix-ui/primitive": ["@radix-ui/primitive@1.1.2", "", {}, "sha512-XnbHrrprsNqZKQhStrSwgRUQzoCI1glLzdw79xiZPoofhGICeZRSQ3dIxAKH1gb3OHfNf4d6f+vAv3kil2eggA=="], - "@radix-ui/react-accordion": ["@radix-ui/react-accordion@1.2.4", "", { "dependencies": { "@radix-ui/primitive": "1.1.2", "@radix-ui/react-collapsible": "1.1.4", "@radix-ui/react-collection": "1.1.3", "@radix-ui/react-compose-refs": "1.1.2", "@radix-ui/react-context": "1.1.2", "@radix-ui/react-direction": "1.1.1", "@radix-ui/react-id": "1.1.1", "@radix-ui/react-primitive": "2.0.3", "@radix-ui/react-use-controllable-state": "1.1.1" }, "peerDependencies": { "@types/react": "*", "@types/react-dom": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react", "@types/react-dom"] }, "sha512-SGCxlSBaMvEzDROzyZjsVNzu9XY5E28B3k8jOENyrz6csOv/pG1eHyYfLJai1n9tRjwG61coXDhfpgtxKxUv5g=="], + "@radix-ui/react-accordion": ["@radix-ui/react-accordion@1.2.7", "", { "dependencies": { "@radix-ui/primitive": "1.1.2", "@radix-ui/react-collapsible": "1.1.7", "@radix-ui/react-collection": "1.1.4", "@radix-ui/react-compose-refs": "1.1.2", "@radix-ui/react-context": "1.1.2", "@radix-ui/react-direction": "1.1.1", "@radix-ui/react-id": "1.1.1", "@radix-ui/react-primitive": "2.1.0", "@radix-ui/react-use-controllable-state": "1.2.2" }, "peerDependencies": { "@types/react": "*", "@types/react-dom": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react", "@types/react-dom"] }, "sha512-stDPylBV/3kFHBAFQK/GeyIFaN7q60zWaXthA5/p6egu8AclIN79zG+bv+Ps+exB4JE5rtW/u3Z7SDvmFuTzgA=="], - "@radix-ui/react-alert-dialog": ["@radix-ui/react-alert-dialog@1.1.7", "", { "dependencies": { "@radix-ui/primitive": "1.1.2", "@radix-ui/react-compose-refs": "1.1.2", "@radix-ui/react-context": "1.1.2", "@radix-ui/react-dialog": "1.1.7", "@radix-ui/react-primitive": "2.0.3", "@radix-ui/react-slot": "1.2.0" }, "peerDependencies": { "@types/react": "*", "@types/react-dom": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react", "@types/react-dom"] }, "sha512-7Gx1gcoltd0VxKoR8mc+TAVbzvChJyZryZsTam0UhoL92z0L+W8ovxvcgvd+nkz24y7Qc51JQKBAGe4+825tYw=="], + "@radix-ui/react-alert-dialog": ["@radix-ui/react-alert-dialog@1.1.10", "", { "dependencies": { "@radix-ui/primitive": "1.1.2", "@radix-ui/react-compose-refs": "1.1.2", "@radix-ui/react-context": "1.1.2", "@radix-ui/react-dialog": "1.1.10", "@radix-ui/react-primitive": "2.1.0", "@radix-ui/react-slot": "1.2.0" }, "peerDependencies": { "@types/react": "*", "@types/react-dom": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react", "@types/react-dom"] }, "sha512-EJ+FGNgLiOw33YOipPZ4/fZC2x1zKELDBjdJJleYsM6kJCBp3lvAPuXeUoYEHXNvv9iWl5VRU3IT7d/f4A5C7g=="], - "@radix-ui/react-arrow": ["@radix-ui/react-arrow@1.1.3", "", { "dependencies": { "@radix-ui/react-primitive": "2.0.3" }, "peerDependencies": { "@types/react": "*", "@types/react-dom": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react", "@types/react-dom"] }, "sha512-2dvVU4jva0qkNZH6HHWuSz5FN5GeU5tymvCgutF8WaXz9WnD1NgUhy73cqzkjkN4Zkn8lfTPv5JIfrC221W+Nw=="], + "@radix-ui/react-arrow": ["@radix-ui/react-arrow@1.1.4", "", { "dependencies": { "@radix-ui/react-primitive": "2.1.0" }, "peerDependencies": { "@types/react": "*", "@types/react-dom": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react", "@types/react-dom"] }, "sha512-qz+fxrqgNxG0dYew5l7qR3c7wdgRu1XVUHGnGYX7rg5HM4p9SWaRmJwfgR3J0SgyUKayLmzQIun+N6rWRgiRKw=="], - "@radix-ui/react-checkbox": ["@radix-ui/react-checkbox@1.1.5", "", { "dependencies": { "@radix-ui/primitive": "1.1.2", "@radix-ui/react-compose-refs": "1.1.2", "@radix-ui/react-context": "1.1.2", "@radix-ui/react-presence": "1.1.3", "@radix-ui/react-primitive": "2.0.3", "@radix-ui/react-use-controllable-state": "1.1.1", "@radix-ui/react-use-previous": "1.1.1", "@radix-ui/react-use-size": "1.1.1" }, "peerDependencies": { "@types/react": "*", "@types/react-dom": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react", "@types/react-dom"] }, "sha512-B0gYIVxl77KYDR25AY9EGe/G//ef85RVBIxQvK+m5pxAC7XihAc/8leMHhDvjvhDu02SBSb6BuytlWr/G7F3+g=="], + "@radix-ui/react-checkbox": ["@radix-ui/react-checkbox@1.2.2", "", { "dependencies": { "@radix-ui/primitive": "1.1.2", "@radix-ui/react-compose-refs": "1.1.2", "@radix-ui/react-context": "1.1.2", "@radix-ui/react-presence": "1.1.3", "@radix-ui/react-primitive": "2.1.0", "@radix-ui/react-use-controllable-state": "1.2.2", "@radix-ui/react-use-previous": "1.1.1", "@radix-ui/react-use-size": "1.1.1" }, "peerDependencies": { "@types/react": "*", "@types/react-dom": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react", "@types/react-dom"] }, "sha512-pMxzQLK+m/tkDRXJg7VUjRx6ozsBdzNLOV4vexfVBU57qT2Gvf4cw2gKKhOohJxjadQ+WcUXCKosTIxcZzi03A=="], - "@radix-ui/react-collapsible": ["@radix-ui/react-collapsible@1.1.4", "", { "dependencies": { "@radix-ui/primitive": "1.1.2", "@radix-ui/react-compose-refs": "1.1.2", "@radix-ui/react-context": "1.1.2", "@radix-ui/react-id": "1.1.1", "@radix-ui/react-presence": "1.1.3", "@radix-ui/react-primitive": "2.0.3", "@radix-ui/react-use-controllable-state": "1.1.1", "@radix-ui/react-use-layout-effect": "1.1.1" }, "peerDependencies": { "@types/react": "*", "@types/react-dom": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react", "@types/react-dom"] }, "sha512-u7LCw1EYInQtBNLGjm9nZ89S/4GcvX1UR5XbekEgnQae2Hkpq39ycJ1OhdeN1/JDfVNG91kWaWoest127TaEKQ=="], + "@radix-ui/react-collapsible": ["@radix-ui/react-collapsible@1.1.7", "", { "dependencies": { "@radix-ui/primitive": "1.1.2", "@radix-ui/react-compose-refs": "1.1.2", "@radix-ui/react-context": "1.1.2", "@radix-ui/react-id": "1.1.1", "@radix-ui/react-presence": "1.1.3", "@radix-ui/react-primitive": "2.1.0", "@radix-ui/react-use-controllable-state": "1.2.2", "@radix-ui/react-use-layout-effect": "1.1.1" }, "peerDependencies": { "@types/react": "*", "@types/react-dom": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react", "@types/react-dom"] }, "sha512-zGFsPcFJNdQa/UNd6MOgF40BS054FIGj32oOWBllixz42f+AkQg3QJ1YT9pw7vs+Ai+EgWkh839h69GEK8oH2A=="], - "@radix-ui/react-collection": ["@radix-ui/react-collection@1.1.3", "", { "dependencies": { "@radix-ui/react-compose-refs": "1.1.2", "@radix-ui/react-context": "1.1.2", "@radix-ui/react-primitive": "2.0.3", "@radix-ui/react-slot": "1.2.0" }, "peerDependencies": { "@types/react": "*", "@types/react-dom": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react", "@types/react-dom"] }, "sha512-mM2pxoQw5HJ49rkzwOs7Y6J4oYH22wS8BfK2/bBxROlI4xuR0c4jEenQP63LlTlDkO6Buj2Vt+QYAYcOgqtrXA=="], + "@radix-ui/react-collection": ["@radix-ui/react-collection@1.1.4", "", { "dependencies": { "@radix-ui/react-compose-refs": "1.1.2", "@radix-ui/react-context": "1.1.2", "@radix-ui/react-primitive": "2.1.0", "@radix-ui/react-slot": "1.2.0" }, "peerDependencies": { "@types/react": "*", "@types/react-dom": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react", "@types/react-dom"] }, "sha512-cv4vSf7HttqXilDnAnvINd53OTl1/bjUYVZrkFnA7nwmY9Ob2POUy0WY0sfqBAe1s5FyKsyceQlqiEGPYNTadg=="], "@radix-ui/react-compose-refs": ["@radix-ui/react-compose-refs@1.1.2", "", { "peerDependencies": { "@types/react": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react"] }, "sha512-z4eqJvfiNnFMHIIvXP3CY57y2WJs5g2v3X0zm9mEJkrkNv4rDxu+sg9Jh8EkXyeqBkB7SOcboo9dMVqhyrACIg=="], "@radix-ui/react-context": ["@radix-ui/react-context@1.1.2", "", { "peerDependencies": { "@types/react": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react"] }, "sha512-jCi/QKUM2r1Ju5a3J64TH2A5SpKAgh0LpknyqdQ4m6DCV0xJ2HG1xARRwNGPQfi1SLdLWZ1OJz6F4OMBBNiGJA=="], - "@radix-ui/react-context-menu": ["@radix-ui/react-context-menu@2.2.7", "", { "dependencies": { "@radix-ui/primitive": "1.1.2", "@radix-ui/react-context": "1.1.2", "@radix-ui/react-menu": "2.1.7", "@radix-ui/react-primitive": "2.0.3", "@radix-ui/react-use-callback-ref": "1.1.1", "@radix-ui/react-use-controllable-state": "1.1.1" }, "peerDependencies": { "@types/react": "*", "@types/react-dom": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react", "@types/react-dom"] }, "sha512-EwO3tyyqwGaLPg0P64jmIKJnBywD0yjiL1eRuMPyhUXPkWWpa5JPDS+oyeIWHy2JbhF+NUlfUPVq6vE7OqgZww=="], + "@radix-ui/react-context-menu": ["@radix-ui/react-context-menu@2.2.10", "", { "dependencies": { "@radix-ui/primitive": "1.1.2", "@radix-ui/react-context": "1.1.2", "@radix-ui/react-menu": "2.1.10", "@radix-ui/react-primitive": "2.1.0", "@radix-ui/react-use-callback-ref": "1.1.1", "@radix-ui/react-use-controllable-state": "1.2.2" }, "peerDependencies": { "@types/react": "*", "@types/react-dom": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react", "@types/react-dom"] }, "sha512-Mxvhy1W5MGoOn/Cu0wosVpIindudtvCPUZuYity0tKxCl9hZshkV3xbqsH2xf0BmZU5OXbaQkiEoaVmG9Ogq8g=="], - "@radix-ui/react-dialog": ["@radix-ui/react-dialog@1.1.7", "", { "dependencies": { "@radix-ui/primitive": "1.1.2", "@radix-ui/react-compose-refs": "1.1.2", "@radix-ui/react-context": "1.1.2", "@radix-ui/react-dismissable-layer": "1.1.6", "@radix-ui/react-focus-guards": "1.1.2", "@radix-ui/react-focus-scope": "1.1.3", "@radix-ui/react-id": "1.1.1", "@radix-ui/react-portal": "1.1.5", "@radix-ui/react-presence": "1.1.3", "@radix-ui/react-primitive": "2.0.3", "@radix-ui/react-slot": "1.2.0", "@radix-ui/react-use-controllable-state": "1.1.1", "aria-hidden": "^1.2.4", "react-remove-scroll": "^2.6.3" }, "peerDependencies": { "@types/react": "*", "@types/react-dom": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react", "@types/react-dom"] }, "sha512-EIdma8C0C/I6kL6sO02avaCRqi3fmWJpxH6mqbVScorW6nNktzKJT/le7VPho3o/7wCsyRg3z0+Q+Obr0Gy/VQ=="], + "@radix-ui/react-dialog": ["@radix-ui/react-dialog@1.1.10", "", { "dependencies": { "@radix-ui/primitive": "1.1.2", "@radix-ui/react-compose-refs": "1.1.2", "@radix-ui/react-context": "1.1.2", "@radix-ui/react-dismissable-layer": "1.1.7", "@radix-ui/react-focus-guards": "1.1.2", "@radix-ui/react-focus-scope": "1.1.4", "@radix-ui/react-id": "1.1.1", "@radix-ui/react-portal": "1.1.6", "@radix-ui/react-presence": "1.1.3", "@radix-ui/react-primitive": "2.1.0", "@radix-ui/react-slot": "1.2.0", "@radix-ui/react-use-controllable-state": "1.2.2", "aria-hidden": "^1.2.4", "react-remove-scroll": "^2.6.3" }, "peerDependencies": { "@types/react": "*", "@types/react-dom": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react", "@types/react-dom"] }, "sha512-m6pZb0gEM5uHPSb+i2nKKGQi/HMSVjARMsLMWQfKDP+eJ6B+uqryHnXhpnohTWElw+vEcMk/o4wJODtdRKHwqg=="], "@radix-ui/react-direction": ["@radix-ui/react-direction@1.1.1", "", { "peerDependencies": { "@types/react": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react"] }, "sha512-1UEWRX6jnOA2y4H5WczZ44gOOjTEmlqv1uNW4GAJEO5+bauCBhv8snY65Iw5/VOS/ghKN9gr2KjnLKxrsvoMVw=="], - "@radix-ui/react-dismissable-layer": ["@radix-ui/react-dismissable-layer@1.1.6", "", { "dependencies": { "@radix-ui/primitive": "1.1.2", "@radix-ui/react-compose-refs": "1.1.2", "@radix-ui/react-primitive": "2.0.3", "@radix-ui/react-use-callback-ref": "1.1.1", "@radix-ui/react-use-escape-keydown": "1.1.1" }, "peerDependencies": { "@types/react": "*", "@types/react-dom": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react", "@types/react-dom"] }, "sha512-7gpgMT2gyKym9Jz2ZhlRXSg2y6cNQIK8d/cqBZ0RBCaps8pFryCWXiUKI+uHGFrhMrbGUP7U6PWgiXzIxoyF3Q=="], + "@radix-ui/react-dismissable-layer": ["@radix-ui/react-dismissable-layer@1.1.7", "", { "dependencies": { "@radix-ui/primitive": "1.1.2", "@radix-ui/react-compose-refs": "1.1.2", "@radix-ui/react-primitive": "2.1.0", "@radix-ui/react-use-callback-ref": "1.1.1", "@radix-ui/react-use-escape-keydown": "1.1.1" }, "peerDependencies": { "@types/react": "*", "@types/react-dom": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react", "@types/react-dom"] }, "sha512-j5+WBUdhccJsmH5/H0K6RncjDtoALSEr6jbkaZu+bjw6hOPOhHycr6vEUujl+HBK8kjUfWcoCJXxP6e4lUlMZw=="], - "@radix-ui/react-dropdown-menu": ["@radix-ui/react-dropdown-menu@2.1.7", "", { "dependencies": { "@radix-ui/primitive": "1.1.2", "@radix-ui/react-compose-refs": "1.1.2", "@radix-ui/react-context": "1.1.2", "@radix-ui/react-id": "1.1.1", "@radix-ui/react-menu": "2.1.7", "@radix-ui/react-primitive": "2.0.3", "@radix-ui/react-use-controllable-state": "1.1.1" }, "peerDependencies": { "@types/react": "*", "@types/react-dom": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react", "@types/react-dom"] }, "sha512-7/1LiuNZuCQE3IzdicGoHdQOHkS2Q08+7p8w6TXZ6ZjgAULaCI85ZY15yPl4o4FVgoKLRT43/rsfNVN8osClQQ=="], + "@radix-ui/react-dropdown-menu": ["@radix-ui/react-dropdown-menu@2.1.10", "", { "dependencies": { "@radix-ui/primitive": "1.1.2", "@radix-ui/react-compose-refs": "1.1.2", "@radix-ui/react-context": "1.1.2", "@radix-ui/react-id": "1.1.1", "@radix-ui/react-menu": "2.1.10", "@radix-ui/react-primitive": "2.1.0", "@radix-ui/react-use-controllable-state": "1.2.2" }, "peerDependencies": { "@types/react": "*", "@types/react-dom": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react", "@types/react-dom"] }, "sha512-8qnILty92BmXbxKugWX3jgEeFeMoxtdggeCCxb/aB7l34QFAKB23IhJfnwyVMbRnAUJiT5LOay4kUS22+AWuRg=="], "@radix-ui/react-focus-guards": ["@radix-ui/react-focus-guards@1.1.2", "", { "peerDependencies": { "@types/react": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react"] }, "sha512-fyjAACV62oPV925xFCrH8DR5xWhg9KYtJT4s3u54jxp+L/hbpTY2kIeEFFbFe+a/HCE94zGQMZLIpVTPVZDhaA=="], - "@radix-ui/react-focus-scope": ["@radix-ui/react-focus-scope@1.1.3", "", { "dependencies": { "@radix-ui/react-compose-refs": "1.1.2", "@radix-ui/react-primitive": "2.0.3", "@radix-ui/react-use-callback-ref": "1.1.1" }, "peerDependencies": { "@types/react": "*", "@types/react-dom": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react", "@types/react-dom"] }, "sha512-4XaDlq0bPt7oJwR+0k0clCiCO/7lO7NKZTAaJBYxDNQT/vj4ig0/UvctrRscZaFREpRvUTkpKR96ov1e6jptQg=="], + "@radix-ui/react-focus-scope": ["@radix-ui/react-focus-scope@1.1.4", "", { "dependencies": { "@radix-ui/react-compose-refs": "1.1.2", "@radix-ui/react-primitive": "2.1.0", "@radix-ui/react-use-callback-ref": "1.1.1" }, "peerDependencies": { "@types/react": "*", "@types/react-dom": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react", "@types/react-dom"] }, "sha512-r2annK27lIW5w9Ho5NyQgqs0MmgZSTIKXWpVCJaLC1q2kZrZkcqnmHkCHMEmv8XLvsLlurKMPT+kbKkRkm/xVA=="], "@radix-ui/react-icons": ["@radix-ui/react-icons@1.3.2", "", { "peerDependencies": { "react": "^16.x || ^17.x || ^18.x || ^19.0.0 || ^19.0.0-rc" } }, "sha512-fyQIhGDhzfc9pK2kH6Pl9c4BDJGfMkPqkyIgYDthyNYoNg3wVhoJMMh19WS4Up/1KMPFVpNsT2q3WmXn2N1m6g=="], "@radix-ui/react-id": ["@radix-ui/react-id@1.1.1", "", { "dependencies": { "@radix-ui/react-use-layout-effect": "1.1.1" }, "peerDependencies": { "@types/react": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react"] }, "sha512-kGkGegYIdQsOb4XjsfM97rXsiHaBwco+hFI66oO4s9LU+PLAC5oJ7khdOVFxkhsmlbpUqDAvXw11CluXP+jkHg=="], - "@radix-ui/react-label": ["@radix-ui/react-label@2.1.3", "", { "dependencies": { "@radix-ui/react-primitive": "2.0.3" }, "peerDependencies": { "@types/react": "*", "@types/react-dom": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react", "@types/react-dom"] }, "sha512-zwSQ1NzSKG95yA0tvBMgv6XPHoqapJCcg9nsUBaQQ66iRBhZNhlpaQG2ERYYX4O4stkYFK5rxj5NsWfO9CS+Hg=="], + "@radix-ui/react-label": ["@radix-ui/react-label@2.1.4", "", { "dependencies": { "@radix-ui/react-primitive": "2.1.0" }, "peerDependencies": { "@types/react": "*", "@types/react-dom": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react", "@types/react-dom"] }, "sha512-wy3dqizZnZVV4ja0FNnUhIWNwWdoldXrneEyUcVtLYDAt8ovGS4ridtMAOGgXBBIfggL4BOveVWsjXDORdGEQg=="], - "@radix-ui/react-menu": ["@radix-ui/react-menu@2.1.7", "", { "dependencies": { "@radix-ui/primitive": "1.1.2", "@radix-ui/react-collection": "1.1.3", "@radix-ui/react-compose-refs": "1.1.2", "@radix-ui/react-context": "1.1.2", "@radix-ui/react-direction": "1.1.1", "@radix-ui/react-dismissable-layer": "1.1.6", "@radix-ui/react-focus-guards": "1.1.2", "@radix-ui/react-focus-scope": "1.1.3", "@radix-ui/react-id": "1.1.1", "@radix-ui/react-popper": "1.2.3", "@radix-ui/react-portal": "1.1.5", "@radix-ui/react-presence": "1.1.3", "@radix-ui/react-primitive": "2.0.3", "@radix-ui/react-roving-focus": "1.1.3", "@radix-ui/react-slot": "1.2.0", "@radix-ui/react-use-callback-ref": "1.1.1", "aria-hidden": "^1.2.4", "react-remove-scroll": "^2.6.3" }, "peerDependencies": { "@types/react": "*", "@types/react-dom": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react", "@types/react-dom"] }, "sha512-tBODsrk68rOi1/iQzbM54toFF+gSw/y+eQgttFflqlGekuSebNqvFNHjJgjqPhiMb4Fw9A0zNFly1QT6ZFdQ+Q=="], + "@radix-ui/react-menu": ["@radix-ui/react-menu@2.1.10", "", { "dependencies": { "@radix-ui/primitive": "1.1.2", "@radix-ui/react-collection": "1.1.4", "@radix-ui/react-compose-refs": "1.1.2", "@radix-ui/react-context": "1.1.2", "@radix-ui/react-direction": "1.1.1", "@radix-ui/react-dismissable-layer": "1.1.7", "@radix-ui/react-focus-guards": "1.1.2", "@radix-ui/react-focus-scope": "1.1.4", "@radix-ui/react-id": "1.1.1", "@radix-ui/react-popper": "1.2.4", "@radix-ui/react-portal": "1.1.6", "@radix-ui/react-presence": "1.1.3", "@radix-ui/react-primitive": "2.1.0", "@radix-ui/react-roving-focus": "1.1.6", "@radix-ui/react-slot": "1.2.0", "@radix-ui/react-use-callback-ref": "1.1.1", "aria-hidden": "^1.2.4", "react-remove-scroll": "^2.6.3" }, "peerDependencies": { "@types/react": "*", "@types/react-dom": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react", "@types/react-dom"] }, "sha512-OupA+1PrVf2H0K4jIwkDyA+rsJ7vF1y/VxLEO43dmZ68GtCjvx9K1/B/QscPZM3jIeFNK/wPd0HmiLjT36hVcA=="], - "@radix-ui/react-popover": ["@radix-ui/react-popover@1.1.7", "", { "dependencies": { "@radix-ui/primitive": "1.1.2", "@radix-ui/react-compose-refs": "1.1.2", "@radix-ui/react-context": "1.1.2", "@radix-ui/react-dismissable-layer": "1.1.6", "@radix-ui/react-focus-guards": "1.1.2", "@radix-ui/react-focus-scope": "1.1.3", "@radix-ui/react-id": "1.1.1", "@radix-ui/react-popper": "1.2.3", "@radix-ui/react-portal": "1.1.5", "@radix-ui/react-presence": "1.1.3", "@radix-ui/react-primitive": "2.0.3", "@radix-ui/react-slot": "1.2.0", "@radix-ui/react-use-controllable-state": "1.1.1", "aria-hidden": "^1.2.4", "react-remove-scroll": "^2.6.3" }, "peerDependencies": { "@types/react": "*", "@types/react-dom": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react", "@types/react-dom"] }, "sha512-I38OYWDmJF2kbO74LX8UsFydSHWOJuQ7LxPnTefjxxvdvPLempvAnmsyX9UsBlywcbSGpRH7oMLfkUf+ij4nrw=="], + "@radix-ui/react-popover": ["@radix-ui/react-popover@1.1.10", "", { "dependencies": { "@radix-ui/primitive": "1.1.2", "@radix-ui/react-compose-refs": "1.1.2", "@radix-ui/react-context": "1.1.2", "@radix-ui/react-dismissable-layer": "1.1.7", "@radix-ui/react-focus-guards": "1.1.2", "@radix-ui/react-focus-scope": "1.1.4", "@radix-ui/react-id": "1.1.1", "@radix-ui/react-popper": "1.2.4", "@radix-ui/react-portal": "1.1.6", "@radix-ui/react-presence": "1.1.3", "@radix-ui/react-primitive": "2.1.0", "@radix-ui/react-slot": "1.2.0", "@radix-ui/react-use-controllable-state": "1.2.2", "aria-hidden": "^1.2.4", "react-remove-scroll": "^2.6.3" }, "peerDependencies": { "@types/react": "*", "@types/react-dom": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react", "@types/react-dom"] }, "sha512-IZN7b3sXqajiPsOzKuNJBSP9obF4MX5/5UhTgWNofw4r1H+eATWb0SyMlaxPD/kzA4vadFgy1s7Z1AEJ6WMyHQ=="], - "@radix-ui/react-popper": ["@radix-ui/react-popper@1.2.3", "", { "dependencies": { "@floating-ui/react-dom": "^2.0.0", "@radix-ui/react-arrow": "1.1.3", "@radix-ui/react-compose-refs": "1.1.2", "@radix-ui/react-context": "1.1.2", "@radix-ui/react-primitive": "2.0.3", "@radix-ui/react-use-callback-ref": "1.1.1", "@radix-ui/react-use-layout-effect": "1.1.1", "@radix-ui/react-use-rect": "1.1.1", "@radix-ui/react-use-size": "1.1.1", "@radix-ui/rect": "1.1.1" }, "peerDependencies": { "@types/react": "*", "@types/react-dom": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react", "@types/react-dom"] }, "sha512-iNb9LYUMkne9zIahukgQmHlSBp9XWGeQQ7FvUGNk45ywzOb6kQa+Ca38OphXlWDiKvyneo9S+KSJsLfLt8812A=="], + "@radix-ui/react-popper": ["@radix-ui/react-popper@1.2.4", "", { "dependencies": { "@floating-ui/react-dom": "^2.0.0", "@radix-ui/react-arrow": "1.1.4", "@radix-ui/react-compose-refs": "1.1.2", "@radix-ui/react-context": "1.1.2", "@radix-ui/react-primitive": "2.1.0", "@radix-ui/react-use-callback-ref": "1.1.1", "@radix-ui/react-use-layout-effect": "1.1.1", "@radix-ui/react-use-rect": "1.1.1", "@radix-ui/react-use-size": "1.1.1", "@radix-ui/rect": "1.1.1" }, "peerDependencies": { "@types/react": "*", "@types/react-dom": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react", "@types/react-dom"] }, "sha512-3p2Rgm/a1cK0r/UVkx5F/K9v/EplfjAeIFCGOPYPO4lZ0jtg4iSQXt/YGTSLWaf4x7NG6Z4+uKFcylcTZjeqDA=="], - "@radix-ui/react-portal": ["@radix-ui/react-portal@1.1.5", "", { "dependencies": { "@radix-ui/react-primitive": "2.0.3", "@radix-ui/react-use-layout-effect": "1.1.1" }, "peerDependencies": { "@types/react": "*", "@types/react-dom": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react", "@types/react-dom"] }, "sha512-ps/67ZqsFm+Mb6lSPJpfhRLrVL2i2fntgCmGMqqth4eaGUf+knAuuRtWVJrNjUhExgmdRqftSgzpf0DF0n6yXA=="], + "@radix-ui/react-portal": ["@radix-ui/react-portal@1.1.6", "", { "dependencies": { "@radix-ui/react-primitive": "2.1.0", "@radix-ui/react-use-layout-effect": "1.1.1" }, "peerDependencies": { "@types/react": "*", "@types/react-dom": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react", "@types/react-dom"] }, "sha512-XmsIl2z1n/TsYFLIdYam2rmFwf9OC/Sh2avkbmVMDuBZIe7hSpM0cYnWPAo7nHOVx8zTuwDZGByfcqLdnzp3Vw=="], "@radix-ui/react-presence": ["@radix-ui/react-presence@1.1.3", "", { "dependencies": { "@radix-ui/react-compose-refs": "1.1.2", "@radix-ui/react-use-layout-effect": "1.1.1" }, "peerDependencies": { "@types/react": "*", "@types/react-dom": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react", "@types/react-dom"] }, "sha512-IrVLIhskYhH3nLvtcBLQFZr61tBG7wx7O3kEmdzcYwRGAEBmBicGGL7ATzNgruYJ3xBTbuzEEq9OXJM3PAX3tA=="], - "@radix-ui/react-primitive": ["@radix-ui/react-primitive@2.0.3", "", { "dependencies": { "@radix-ui/react-slot": "1.2.0" }, "peerDependencies": { "@types/react": "*", "@types/react-dom": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react", "@types/react-dom"] }, "sha512-Pf/t/GkndH7CQ8wE2hbkXA+WyZ83fhQQn5DDmwDiDo6AwN/fhaH8oqZ0jRjMrO2iaMhDi6P1HRx6AZwyMinY1g=="], + "@radix-ui/react-primitive": ["@radix-ui/react-primitive@2.1.0", "", { "dependencies": { "@radix-ui/react-slot": "1.2.0" }, "peerDependencies": { "@types/react": "*", "@types/react-dom": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react", "@types/react-dom"] }, "sha512-/J/FhLdK0zVcILOwt5g+dH4KnkonCtkVJsa2G6JmvbbtZfBEI1gMsO3QMjseL4F/SwfAMt1Vc/0XKYKq+xJ1sw=="], - "@radix-ui/react-progress": ["@radix-ui/react-progress@1.1.3", "", { "dependencies": { "@radix-ui/react-context": "1.1.2", "@radix-ui/react-primitive": "2.0.3" }, "peerDependencies": { "@types/react": "*", "@types/react-dom": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react", "@types/react-dom"] }, "sha512-F56aZPGTPb4qJQ/vDjnAq63oTu/DRoIG/Asb5XKOWj8rpefNLtUllR969j5QDN2sRrTk9VXIqQDRj5VvAuquaw=="], + "@radix-ui/react-progress": ["@radix-ui/react-progress@1.1.4", "", { "dependencies": { "@radix-ui/react-context": "1.1.2", "@radix-ui/react-primitive": "2.1.0" }, "peerDependencies": { "@types/react": "*", "@types/react-dom": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react", "@types/react-dom"] }, "sha512-8rl9w7lJdcVPor47Dhws9mUHRHLE+8JEgyJRdNWCpGPa6HIlr3eh+Yn9gyx1CnCLbw5naHsI2gaO9dBWO50vzw=="], - "@radix-ui/react-roving-focus": ["@radix-ui/react-roving-focus@1.1.3", "", { "dependencies": { "@radix-ui/primitive": "1.1.2", "@radix-ui/react-collection": "1.1.3", "@radix-ui/react-compose-refs": "1.1.2", "@radix-ui/react-context": "1.1.2", "@radix-ui/react-direction": "1.1.1", "@radix-ui/react-id": "1.1.1", "@radix-ui/react-primitive": "2.0.3", "@radix-ui/react-use-callback-ref": "1.1.1", "@radix-ui/react-use-controllable-state": "1.1.1" }, "peerDependencies": { "@types/react": "*", "@types/react-dom": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react", "@types/react-dom"] }, "sha512-ufbpLUjZiOg4iYgb2hQrWXEPYX6jOLBbR27bDyAff5GYMRrCzcze8lukjuXVUQvJ6HZe8+oL+hhswDcjmcgVyg=="], + "@radix-ui/react-roving-focus": ["@radix-ui/react-roving-focus@1.1.6", "", { "dependencies": { "@radix-ui/primitive": "1.1.2", "@radix-ui/react-collection": "1.1.4", "@radix-ui/react-compose-refs": "1.1.2", "@radix-ui/react-context": "1.1.2", "@radix-ui/react-direction": "1.1.1", "@radix-ui/react-id": "1.1.1", "@radix-ui/react-primitive": "2.1.0", "@radix-ui/react-use-callback-ref": "1.1.1", "@radix-ui/react-use-controllable-state": "1.2.2" }, "peerDependencies": { "@types/react": "*", "@types/react-dom": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react", "@types/react-dom"] }, "sha512-D2ReXCuIueKf5L2f1ks/wTj3bWck1SvK1pjLmEHPbwksS1nOHBsvgY0b9Hypt81FczqBqSyLHQxn/vbsQ0gDHw=="], - "@radix-ui/react-scroll-area": ["@radix-ui/react-scroll-area@1.2.4", "", { "dependencies": { "@radix-ui/number": "1.1.1", "@radix-ui/primitive": "1.1.2", "@radix-ui/react-compose-refs": "1.1.2", "@radix-ui/react-context": "1.1.2", "@radix-ui/react-direction": "1.1.1", "@radix-ui/react-presence": "1.1.3", "@radix-ui/react-primitive": "2.0.3", "@radix-ui/react-use-callback-ref": "1.1.1", "@radix-ui/react-use-layout-effect": "1.1.1" }, "peerDependencies": { "@types/react": "*", "@types/react-dom": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react", "@types/react-dom"] }, "sha512-G9rdWTQjOR4sk76HwSdROhPU0jZWpfozn9skU1v4N0/g9k7TmswrJn8W8WMU+aYktnLLpk5LX6fofj2bGe5NFQ=="], + "@radix-ui/react-scroll-area": ["@radix-ui/react-scroll-area@1.2.5", "", { "dependencies": { "@radix-ui/number": "1.1.1", "@radix-ui/primitive": "1.1.2", "@radix-ui/react-compose-refs": "1.1.2", "@radix-ui/react-context": "1.1.2", "@radix-ui/react-direction": "1.1.1", "@radix-ui/react-presence": "1.1.3", "@radix-ui/react-primitive": "2.1.0", "@radix-ui/react-use-callback-ref": "1.1.1", "@radix-ui/react-use-layout-effect": "1.1.1" }, "peerDependencies": { "@types/react": "*", "@types/react-dom": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react", "@types/react-dom"] }, "sha512-VyLjxI8/gXYn+Wij1FLpXjZp6Z/uNklUFQQ75tOpJNESeNaZ2kCRfjiEDmHgWmLeUPeJGwrqbgRmcdFjtYEkMA=="], - "@radix-ui/react-select": ["@radix-ui/react-select@2.1.7", "", { "dependencies": { "@radix-ui/number": "1.1.1", "@radix-ui/primitive": "1.1.2", "@radix-ui/react-collection": "1.1.3", "@radix-ui/react-compose-refs": "1.1.2", "@radix-ui/react-context": "1.1.2", "@radix-ui/react-direction": "1.1.1", "@radix-ui/react-dismissable-layer": "1.1.6", "@radix-ui/react-focus-guards": "1.1.2", "@radix-ui/react-focus-scope": "1.1.3", "@radix-ui/react-id": "1.1.1", "@radix-ui/react-popper": "1.2.3", "@radix-ui/react-portal": "1.1.5", "@radix-ui/react-primitive": "2.0.3", "@radix-ui/react-slot": "1.2.0", "@radix-ui/react-use-callback-ref": "1.1.1", "@radix-ui/react-use-controllable-state": "1.1.1", "@radix-ui/react-use-layout-effect": "1.1.1", "@radix-ui/react-use-previous": "1.1.1", "@radix-ui/react-visually-hidden": "1.1.3", "aria-hidden": "^1.2.4", "react-remove-scroll": "^2.6.3" }, "peerDependencies": { "@types/react": "*", "@types/react-dom": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react", "@types/react-dom"] }, "sha512-exzGIRtc7S8EIM2KjFg+7lJZsH7O7tpaBaJbBNVDnOZNhtoQ2iV+iSNfi2Wth0m6h3trJkMVvzAehB3c6xj/3Q=="], + "@radix-ui/react-select": ["@radix-ui/react-select@2.2.2", "", { "dependencies": { "@radix-ui/number": "1.1.1", "@radix-ui/primitive": "1.1.2", "@radix-ui/react-collection": "1.1.4", "@radix-ui/react-compose-refs": "1.1.2", "@radix-ui/react-context": "1.1.2", "@radix-ui/react-direction": "1.1.1", "@radix-ui/react-dismissable-layer": "1.1.7", "@radix-ui/react-focus-guards": "1.1.2", "@radix-ui/react-focus-scope": "1.1.4", "@radix-ui/react-id": "1.1.1", "@radix-ui/react-popper": "1.2.4", "@radix-ui/react-portal": "1.1.6", "@radix-ui/react-primitive": "2.1.0", "@radix-ui/react-slot": "1.2.0", "@radix-ui/react-use-callback-ref": "1.1.1", "@radix-ui/react-use-controllable-state": "1.2.2", "@radix-ui/react-use-layout-effect": "1.1.1", "@radix-ui/react-use-previous": "1.1.1", "@radix-ui/react-visually-hidden": "1.2.0", "aria-hidden": "^1.2.4", "react-remove-scroll": "^2.6.3" }, "peerDependencies": { "@types/react": "*", "@types/react-dom": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react", "@types/react-dom"] }, "sha512-HjkVHtBkuq+r3zUAZ/CvNWUGKPfuicGDbgtZgiQuFmNcV5F+Tgy24ep2nsAW2nFgvhGPJVqeBZa6KyVN0EyrBA=="], - "@radix-ui/react-separator": ["@radix-ui/react-separator@1.1.3", "", { "dependencies": { "@radix-ui/react-primitive": "2.0.3" }, "peerDependencies": { "@types/react": "*", "@types/react-dom": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react", "@types/react-dom"] }, "sha512-2omrWKJvxR0U/tkIXezcc1nFMwtLU0+b/rDK40gnzJqTLWQ/TD/D5IYVefp9sC3QWfeQbpSbEA6op9MQKyaALQ=="], + "@radix-ui/react-separator": ["@radix-ui/react-separator@1.1.4", "", { "dependencies": { "@radix-ui/react-primitive": "2.1.0" }, "peerDependencies": { "@types/react": "*", "@types/react-dom": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react", "@types/react-dom"] }, "sha512-2fTm6PSiUm8YPq9W0E4reYuv01EE3aFSzt8edBiXqPHshF8N9+Kymt/k0/R+F3dkY5lQyB/zPtrP82phskLi7w=="], "@radix-ui/react-slot": ["@radix-ui/react-slot@1.2.0", "", { "dependencies": { "@radix-ui/react-compose-refs": "1.1.2" }, "peerDependencies": { "@types/react": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react"] }, "sha512-ujc+V6r0HNDviYqIK3rW4ffgYiZ8g5DEHrGJVk4x7kTlLXRDILnKX9vAUYeIsLOoDpDJ0ujpqMkjH4w2ofuo6w=="], - "@radix-ui/react-tabs": ["@radix-ui/react-tabs@1.1.4", "", { "dependencies": { "@radix-ui/primitive": "1.1.2", "@radix-ui/react-context": "1.1.2", "@radix-ui/react-direction": "1.1.1", "@radix-ui/react-id": "1.1.1", "@radix-ui/react-presence": "1.1.3", "@radix-ui/react-primitive": "2.0.3", "@radix-ui/react-roving-focus": "1.1.3", "@radix-ui/react-use-controllable-state": "1.1.1" }, "peerDependencies": { "@types/react": "*", "@types/react-dom": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react", "@types/react-dom"] }, "sha512-fuHMHWSf5SRhXke+DbHXj2wVMo+ghVH30vhX3XVacdXqDl+J4XWafMIGOOER861QpBx1jxgwKXL2dQnfrsd8MQ=="], + "@radix-ui/react-tabs": ["@radix-ui/react-tabs@1.1.7", "", { "dependencies": { "@radix-ui/primitive": "1.1.2", "@radix-ui/react-context": "1.1.2", "@radix-ui/react-direction": "1.1.1", "@radix-ui/react-id": "1.1.1", "@radix-ui/react-presence": "1.1.3", "@radix-ui/react-primitive": "2.1.0", "@radix-ui/react-roving-focus": "1.1.6", "@radix-ui/react-use-controllable-state": "1.2.2" }, "peerDependencies": { "@types/react": "*", "@types/react-dom": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react", "@types/react-dom"] }, "sha512-sawt4HkD+6haVGjYOC3BMIiCumBpqTK6o407n6zN/6yReed2EN7bXyykNrpqg+xCfudpBUZg7Y2cJBd/x/iybA=="], - "@radix-ui/react-toast": ["@radix-ui/react-toast@1.2.7", "", { "dependencies": { "@radix-ui/primitive": "1.1.2", "@radix-ui/react-collection": "1.1.3", "@radix-ui/react-compose-refs": "1.1.2", "@radix-ui/react-context": "1.1.2", "@radix-ui/react-dismissable-layer": "1.1.6", "@radix-ui/react-portal": "1.1.5", "@radix-ui/react-presence": "1.1.3", "@radix-ui/react-primitive": "2.0.3", "@radix-ui/react-use-callback-ref": "1.1.1", "@radix-ui/react-use-controllable-state": "1.1.1", "@radix-ui/react-use-layout-effect": "1.1.1", "@radix-ui/react-visually-hidden": "1.1.3" }, "peerDependencies": { "@types/react": "*", "@types/react-dom": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react", "@types/react-dom"] }, "sha512-0IWTbAUKvzdpOaWDMZisXZvScXzF0phaQjWspK8RUMEUxjLbli+886mB/kXTIC3F+t5vQ0n0vYn+dsX8s+WdfA=="], + "@radix-ui/react-toast": ["@radix-ui/react-toast@1.2.10", "", { "dependencies": { "@radix-ui/primitive": "1.1.2", "@radix-ui/react-collection": "1.1.4", "@radix-ui/react-compose-refs": "1.1.2", "@radix-ui/react-context": "1.1.2", "@radix-ui/react-dismissable-layer": "1.1.7", "@radix-ui/react-portal": "1.1.6", "@radix-ui/react-presence": "1.1.3", "@radix-ui/react-primitive": "2.1.0", "@radix-ui/react-use-callback-ref": "1.1.1", "@radix-ui/react-use-controllable-state": "1.2.2", "@radix-ui/react-use-layout-effect": "1.1.1", "@radix-ui/react-visually-hidden": "1.2.0" }, "peerDependencies": { "@types/react": "*", "@types/react-dom": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react", "@types/react-dom"] }, "sha512-lVe1mQL8Di8KPQp62CDaLgttqyUGTchPuwDiCnaZz40HGxngJKB/fOJCHYxHZh2p1BtcuiPOYOKrxTVEmrnV5A=="], - "@radix-ui/react-toggle": ["@radix-ui/react-toggle@1.1.3", "", { "dependencies": { "@radix-ui/primitive": "1.1.2", "@radix-ui/react-primitive": "2.0.3", "@radix-ui/react-use-controllable-state": "1.1.1" }, "peerDependencies": { "@types/react": "*", "@types/react-dom": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react", "@types/react-dom"] }, "sha512-Za5HHd9nvsiZ2t3EI/dVd4Bm/JydK+D22uHKk46fPtvuPxVCJBUo5mQybN+g5sZe35y7I6GDTTfdkVv5SnxlFg=="], + "@radix-ui/react-toggle": ["@radix-ui/react-toggle@1.1.6", "", { "dependencies": { "@radix-ui/primitive": "1.1.2", "@radix-ui/react-primitive": "2.1.0", "@radix-ui/react-use-controllable-state": "1.2.2" }, "peerDependencies": { "@types/react": "*", "@types/react-dom": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react", "@types/react-dom"] }, "sha512-3SeJxKeO3TO1zVw1Nl++Cp0krYk6zHDHMCUXXVkosIzl6Nxcvb07EerQpyD2wXQSJ5RZajrYAmPaydU8Hk1IyQ=="], - "@radix-ui/react-toggle-group": ["@radix-ui/react-toggle-group@1.1.3", "", { "dependencies": { "@radix-ui/primitive": "1.1.2", "@radix-ui/react-context": "1.1.2", "@radix-ui/react-direction": "1.1.1", "@radix-ui/react-primitive": "2.0.3", "@radix-ui/react-roving-focus": "1.1.3", "@radix-ui/react-toggle": "1.1.3", "@radix-ui/react-use-controllable-state": "1.1.1" }, "peerDependencies": { "@types/react": "*", "@types/react-dom": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react", "@types/react-dom"] }, "sha512-khTzdGIxy8WurYUEUrapvj5aOev/tUA8TDEFi1D0Dn3yX+KR5AqjX0b7E5sL9ngRRpxDN2RRJdn5siasu5jtcg=="], + "@radix-ui/react-toggle-group": ["@radix-ui/react-toggle-group@1.1.6", "", { "dependencies": { "@radix-ui/primitive": "1.1.2", "@radix-ui/react-context": "1.1.2", "@radix-ui/react-direction": "1.1.1", "@radix-ui/react-primitive": "2.1.0", "@radix-ui/react-roving-focus": "1.1.6", "@radix-ui/react-toggle": "1.1.6", "@radix-ui/react-use-controllable-state": "1.2.2" }, "peerDependencies": { "@types/react": "*", "@types/react-dom": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react", "@types/react-dom"] }, "sha512-XOBq9VqC+mIn5hzjGdJLhQbvQeiOpV5ExNE6qMQQPvFsCT44QUcxFzYytTWVoyWg9XKfgrleKmTeEyu6aoTPhg=="], - "@radix-ui/react-tooltip": ["@radix-ui/react-tooltip@1.2.0", "", { "dependencies": { "@radix-ui/primitive": "1.1.2", "@radix-ui/react-compose-refs": "1.1.2", "@radix-ui/react-context": "1.1.2", "@radix-ui/react-dismissable-layer": "1.1.6", "@radix-ui/react-id": "1.1.1", "@radix-ui/react-popper": "1.2.3", "@radix-ui/react-portal": "1.1.5", "@radix-ui/react-presence": "1.1.3", "@radix-ui/react-primitive": "2.0.3", "@radix-ui/react-slot": "1.2.0", "@radix-ui/react-use-controllable-state": "1.1.1", "@radix-ui/react-visually-hidden": "1.1.3" }, "peerDependencies": { "@types/react": "*", "@types/react-dom": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react", "@types/react-dom"] }, "sha512-b1Sdc75s7zN9B8ONQTGBSHL3XS8+IcjcOIY51fhM4R1Hx8s0YbgqgyNZiri4qcYMVZK8hfCZVBiyCm7N9rs0rw=="], + "@radix-ui/react-tooltip": ["@radix-ui/react-tooltip@1.2.3", "", { "dependencies": { "@radix-ui/primitive": "1.1.2", "@radix-ui/react-compose-refs": "1.1.2", "@radix-ui/react-context": "1.1.2", "@radix-ui/react-dismissable-layer": "1.1.7", "@radix-ui/react-id": "1.1.1", "@radix-ui/react-popper": "1.2.4", "@radix-ui/react-portal": "1.1.6", "@radix-ui/react-presence": "1.1.3", "@radix-ui/react-primitive": "2.1.0", "@radix-ui/react-slot": "1.2.0", "@radix-ui/react-use-controllable-state": "1.2.2", "@radix-ui/react-visually-hidden": "1.2.0" }, "peerDependencies": { "@types/react": "*", "@types/react-dom": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react", "@types/react-dom"] }, "sha512-0KX7jUYFA02np01Y11NWkk6Ip6TqMNmD4ijLelYAzeIndl2aVeltjJFJ2gwjNa1P8U/dgjQ+8cr9Y3Ni+ZNoRA=="], "@radix-ui/react-use-callback-ref": ["@radix-ui/react-use-callback-ref@1.1.1", "", { "peerDependencies": { "@types/react": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react"] }, "sha512-FkBMwD+qbGQeMu1cOHnuGB6x4yzPjho8ap5WtbEJ26umhgqVXbhekKUQO+hZEL1vU92a3wHwdp0HAcqAUF5iDg=="], - "@radix-ui/react-use-controllable-state": ["@radix-ui/react-use-controllable-state@1.1.1", "", { "dependencies": { "@radix-ui/react-use-callback-ref": "1.1.1" }, "peerDependencies": { "@types/react": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react"] }, "sha512-YnEXIy8/ga01Y1PN0VfaNH//MhA91JlEGVBDxDzROqwrAtG5Yr2QGEPz8A/rJA3C7ZAHryOYGaUv8fLSW2H/mg=="], + "@radix-ui/react-use-controllable-state": ["@radix-ui/react-use-controllable-state@1.2.2", "", { "dependencies": { "@radix-ui/react-use-effect-event": "0.0.2", "@radix-ui/react-use-layout-effect": "1.1.1" }, "peerDependencies": { "@types/react": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react"] }, "sha512-BjasUjixPFdS+NKkypcyyN5Pmg83Olst0+c6vGov0diwTEo6mgdqVR6hxcEgFuh4QrAs7Rc+9KuGJ9TVCj0Zzg=="], + + "@radix-ui/react-use-effect-event": ["@radix-ui/react-use-effect-event@0.0.2", "", { "dependencies": { "@radix-ui/react-use-layout-effect": "1.1.1" }, "peerDependencies": { "@types/react": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react"] }, "sha512-Qp8WbZOBe+blgpuUT+lw2xheLP8q0oatc9UpmiemEICxGvFLYmHm9QowVZGHtJlGbS6A6yJ3iViad/2cVjnOiA=="], "@radix-ui/react-use-escape-keydown": ["@radix-ui/react-use-escape-keydown@1.1.1", "", { "dependencies": { "@radix-ui/react-use-callback-ref": "1.1.1" }, "peerDependencies": { "@types/react": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react"] }, "sha512-Il0+boE7w/XebUHyBjroE+DbByORGR9KKmITzbR7MyQ4akpORYP/ZmbhAr0DG7RmmBqoOnZdy2QlvajJ2QA59g=="], @@ -1165,7 +989,7 @@ "@radix-ui/react-use-size": ["@radix-ui/react-use-size@1.1.1", "", { "dependencies": { "@radix-ui/react-use-layout-effect": "1.1.1" }, "peerDependencies": { "@types/react": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react"] }, "sha512-ewrXRDTAqAXlkl6t/fkXWNAhFX9I+CkKlw6zjEwk86RSPKwZr3xpBRso655aqYafwtnbpHLj6toFzmd6xdVptQ=="], - "@radix-ui/react-visually-hidden": ["@radix-ui/react-visually-hidden@1.1.3", "", { "dependencies": { "@radix-ui/react-primitive": "2.0.3" }, "peerDependencies": { "@types/react": "*", "@types/react-dom": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react", "@types/react-dom"] }, "sha512-oXSF3ZQRd5fvomd9hmUCb2EHSZbPp3ZSHAHJJU/DlF9XoFkJBBW8RHU/E8WEH+RbSfJd/QFA0sl8ClJXknBwHQ=="], + "@radix-ui/react-visually-hidden": ["@radix-ui/react-visually-hidden@1.2.0", "", { "dependencies": { "@radix-ui/react-primitive": "2.1.0" }, "peerDependencies": { "@types/react": "*", "@types/react-dom": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react", "@types/react-dom"] }, "sha512-rQj0aAWOpCdCMRbI6pLQm8r7S2BM3YhTa0SzOYD55k+hJA8oo9J+H+9wLM9oMlZWOX/wJWPTzfDfmZkf7LvCfg=="], "@radix-ui/rect": ["@radix-ui/rect@1.1.1", "", {}, "sha512-HPwpGIzkl28mWyZqG52jiqDJ12waP11Pa1lGoiyUkIEuMLBP0oeK/C89esbXrxsky5we7dfd8U58nm0SgAWpVw=="], @@ -1299,9 +1123,9 @@ "@tailwindcss/typography": ["@tailwindcss/typography@0.5.16", "", { "dependencies": { "lodash.castarray": "^4.4.0", "lodash.isplainobject": "^4.0.6", "lodash.merge": "^4.6.2", "postcss-selector-parser": "6.0.10" }, "peerDependencies": { "tailwindcss": ">=3.0.0 || insiders || >=4.0.0-alpha.20 || >=4.0.0-beta.1" } }, "sha512-0wDLwCVF5V3x3b1SGXPCDcdsbDHMBe+lkFzBRaHeLvNi+nrrnZ1lA18u+OTWO8iSWU2GxUOCvlXtDuqftc1oiA=="], - "@tanstack/query-core": ["@tanstack/query-core@5.74.3", "", {}, "sha512-Mqk+5o3qTuAiZML248XpNH8r2cOzl15+LTbUsZQEwvSvn1GU4VQhvqzAbil36p+MBxpr/58oBSnRzhrBevDhfg=="], + "@tanstack/query-core": ["@tanstack/query-core@5.74.4", "", {}, "sha512-YuG0A0+3i9b2Gfo9fkmNnkUWh5+5cFhWBN0pJAHkHilTx6A0nv8kepkk4T4GRt4e5ahbtFj2eTtkiPcVU1xO4A=="], - "@tanstack/react-query": ["@tanstack/react-query@5.74.3", "", { "dependencies": { "@tanstack/query-core": "5.74.3" }, "peerDependencies": { "react": "^18 || ^19" } }, "sha512-QrycUn0wxjVPzITvQvOxFRdhlAwIoOQSuav7qWD4SWCoKCdLbyRZ2vji2GuBq/glaxbF4wBx3fqcYRDOt8KDTA=="], + "@tanstack/react-query": ["@tanstack/react-query@5.74.4", "", { "dependencies": { "@tanstack/query-core": "5.74.4" }, "peerDependencies": { "react": "^18 || ^19" } }, "sha512-mAbxw60d4ffQ4qmRYfkO1xzRBPUEf/72Dgo3qqea0J66nIKuDTLEqQt0ku++SDFlMGMnB6uKDnEG1xD/TDse4Q=="], "@tootallnate/once": ["@tootallnate/once@2.0.0", "", {}, "sha512-XCuKFP5PS55gnMVu3dty8KPatLqUoy/ZYzDzAGCQ8JNFCkLXzmI7vNHCR+XpbZaMWQK/vQubr7PkYq8g470J/A=="], @@ -1329,7 +1153,7 @@ "@types/babel__traverse": ["@types/babel__traverse@7.20.7", "", { "dependencies": { "@babel/types": "^7.20.7" } }, "sha512-dkO5fhS7+/oos4ciWxyEyjWe48zmG6wbCheo/G2ZnHx4fs3EU6YC6UM8rk56gAjNJ9P3MTH2jo5jb92/K6wbng=="], - "@types/bun": ["@types/bun@1.2.9", "", { "dependencies": { "bun-types": "1.2.9" } }, "sha512-epShhLGQYc4Bv/aceHbmBhOz1XgUnuTZgcxjxk+WXwNyDXavv5QHD1QEFV0FwbTSQtNq6g4ZcV6y0vZakTjswg=="], + "@types/bun": ["@types/bun@1.2.10", "", { "dependencies": { "bun-types": "1.2.10" } }, "sha512-eilv6WFM3M0c9ztJt7/g80BDusK98z/FrFwseZgT4bXCq2vPhXD4z8R3oddmAn+R/Nmz9vBn4kweJKmGTZj+lg=="], "@types/cacheable-request": ["@types/cacheable-request@6.0.3", "", { "dependencies": { "@types/http-cache-semantics": "*", "@types/keyv": "^3.1.4", "@types/node": "*", "@types/responselike": "^1.0.0" } }, "sha512-IQ3EbTzGxIigb1I3qPZc1rWJnH0BmSKv5QYTalEwweFvyBDLSAe24zP0le/hyi7ecGfZVlIVAg4BZqb8WBwKqw=="], @@ -1475,7 +1299,7 @@ "@unrs/resolver-binding-win32-x64-msvc": ["@unrs/resolver-binding-win32-x64-msvc@1.5.0", "", { "os": "win32", "cpu": "x64" }, "sha512-wAvXp4k7jhioi4SebXW/yfzzYwsUCr9kIX4gCsUFKpCTUf8Mi7vScJXI3S+kupSUf0LbVHudR8qBbe2wFMSNUw=="], - "@vitejs/plugin-react": ["@vitejs/plugin-react@4.3.4", "", { "dependencies": { "@babel/core": "^7.26.0", "@babel/plugin-transform-react-jsx-self": "^7.25.9", "@babel/plugin-transform-react-jsx-source": "^7.25.9", "@types/babel__core": "^7.20.5", "react-refresh": "^0.14.2" }, "peerDependencies": { "vite": "^4.2.0 || ^5.0.0 || ^6.0.0" } }, "sha512-SCCPBJtYLdE8PX/7ZQAs1QAZ8Jqwih+0VBLum1EGqmCCQal+MIUqLCzj3ZUy8ufbC0cAM4LRlSTm7IQJwWT4ug=="], + "@vitejs/plugin-react": ["@vitejs/plugin-react@4.4.1", "", { "dependencies": { "@babel/core": "^7.26.10", "@babel/plugin-transform-react-jsx-self": "^7.25.9", "@babel/plugin-transform-react-jsx-source": "^7.25.9", "@types/babel__core": "^7.20.5", "react-refresh": "^0.17.0" }, "peerDependencies": { "vite": "^4.2.0 || ^5.0.0 || ^6.0.0" } }, "sha512-IpEm5ZmeXAP/osiBXVVP5KjFMzbWOonMs0NaQQl+xYnUAcq4oHUBsF2+p4MgKWG4YMmFYJU8A6sxRPuowllm6w=="], "@xmldom/xmldom": ["@xmldom/xmldom@0.8.10", "", {}, "sha512-2WALfTl4xo2SkGCYRt6rDTFfk9R1czmBvUQy12gK2KuRKIpWEhcbbzy8EZXtz/jkRqHX8bFEc6FC1HjX4TUWYw=="], @@ -1499,7 +1323,7 @@ "aggregate-error": ["aggregate-error@3.1.0", "", { "dependencies": { "clean-stack": "^2.0.0", "indent-string": "^4.0.0" } }, "sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA=="], - "ai": ["ai@4.3.6", "", { "dependencies": { "@ai-sdk/provider": "1.1.3", "@ai-sdk/provider-utils": "2.2.7", "@ai-sdk/react": "1.2.9", "@ai-sdk/ui-utils": "1.2.8", "@opentelemetry/api": "1.9.0", "jsondiffpatch": "0.6.0" }, "peerDependencies": { "react": "^18 || ^19 || ^19.0.0-rc", "zod": "^3.23.8" }, "optionalPeers": ["react"] }, "sha512-cRL/9zFfPRRfVUOk+ll5FHy08FVc692voFzXWJ2YPD9KS+mkjDPp72QT9Etr0ZD/mdlJZHYq4ZHIts7nRpdD6A=="], + "ai": ["ai@4.3.9", "", { "dependencies": { "@ai-sdk/provider": "1.1.3", "@ai-sdk/provider-utils": "2.2.7", "@ai-sdk/react": "1.2.9", "@ai-sdk/ui-utils": "1.2.8", "@opentelemetry/api": "1.9.0", "jsondiffpatch": "0.6.0" }, "peerDependencies": { "react": "^18 || ^19 || ^19.0.0-rc", "zod": "^3.23.8" }, "optionalPeers": ["react"] }, "sha512-P2RpV65sWIPdUlA4f1pcJ11pB0N1YmqPVLEmC4j8WuBwKY0L3q9vGhYPh0Iv+spKHKyn0wUbMfas+7Z6nTfS0g=="], "ajv": ["ajv@6.12.6", "", { "dependencies": { "fast-deep-equal": "^3.1.1", "fast-json-stable-stringify": "^2.0.0", "json-schema-traverse": "^0.4.1", "uri-js": "^4.2.2" } }, "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g=="], @@ -1635,7 +1459,7 @@ "builder-util-runtime": ["builder-util-runtime@9.2.10", "", { "dependencies": { "debug": "^4.3.4", "sax": "^1.2.4" } }, "sha512-6p/gfG1RJSQeIbz8TK5aPNkoztgY1q5TgmGFMAXcY8itsGW6Y2ld1ALsZ5UJn8rog7hKF3zHx5iQbNQ8uLcRlw=="], - "bun-types": ["bun-types@1.2.9", "", { "dependencies": { "@types/node": "*", "@types/ws": "*" } }, "sha512-dk/kOEfQbajENN/D6FyiSgOKEuUi9PWfqKQJEgwKrCMWbjS/S6tEXp178mWvWAcUSYm9ArDlWHZKO3T/4cLXiw=="], + "bun-types": ["bun-types@1.2.10", "", { "dependencies": { "@types/node": "*" } }, "sha512-b5ITZMnVdf3m1gMvJHG+gIfeJHiQPJak0f7925Hxu6ZN5VKA8AGy4GZ4lM+Xkn6jtWxg5S3ldWvfmXdvnkp3GQ=="], "bundle-require": ["bundle-require@5.1.0", "", { "dependencies": { "load-tsconfig": "^0.2.3" }, "peerDependencies": { "esbuild": ">=0.18" } }, "sha512-3WrrOuZiyaaZPWiEt4G3+IffISVC9HYlWueJEBWED4ZH4aIAC2PnkdnuRrR94M+w6yGWn4AglWtJtBI8YqvgoA=="], @@ -1661,7 +1485,7 @@ "camelcase-css": ["camelcase-css@2.0.1", "", {}, "sha512-QOSvevhslijgYwRx6Rv7zKdMF8lbRmx+uQGx2+vDc+KI/eBnsy9kit5aj23AgGu3pa4t9AgwbnXWqS+iOY+2aA=="], - "caniuse-lite": ["caniuse-lite@1.0.30001713", "", {}, "sha512-wCIWIg+A4Xr7NfhTuHdX+/FKh3+Op3LBbSp2N5Pfx6T/LhdQy3GTyoTg48BReaW/MyMNZAkTadsBtai3ldWK0Q=="], + "caniuse-lite": ["caniuse-lite@1.0.30001714", "", {}, "sha512-mtgapdwDLSSBnCI3JokHM7oEQBLxiJKVRtg10AxM1AyeiKcM96f0Mkbqeq+1AbiCtvMcHRulAAEMu693JrSWqg=="], "capital-case": ["capital-case@1.0.4", "", { "dependencies": { "no-case": "^3.0.4", "tslib": "^2.0.3", "upper-case-first": "^2.0.2" } }, "sha512-ds37W8CytHgwnhGGTi88pcPyR15qoNkOpYwmMMfnWqqWgESapLqvDx6huFjQ5vqWSn2Z06173XNA7LtMOeUh1A=="], @@ -1893,11 +1717,11 @@ "electron-builder-squirrel-windows": ["electron-builder-squirrel-windows@25.1.8", "", { "dependencies": { "app-builder-lib": "25.1.8", "archiver": "^5.3.1", "builder-util": "25.1.7", "fs-extra": "^10.1.0" } }, "sha512-2ntkJ+9+0GFP6nAISiMabKt6eqBB0kX1QqHNWFWAXgi0VULKGisM46luRFpIBiU3u/TDmhZMM8tzvo2Abn3ayg=="], - "electron-log": ["electron-log@5.3.3", "", {}, "sha512-ZOnlgCVfhKC0Nef68L0wDhwhg8nh5QkpEOA+udjpBxcPfTHGgbZbfoCBS6hmAgVHTAWByHNPkHKpSbEOPGZcxA=="], + "electron-log": ["electron-log@5.3.4", "", {}, "sha512-QLj0EbsA5R5Yy4vjGlLe7m8hPNZ/Enp7c7a2WH7RUPr0hIOp0vDaC+6bJM0th6+uZKiZGGH5a2aKzvYp3eYwDQ=="], "electron-publish": ["electron-publish@25.1.7", "", { "dependencies": { "@types/fs-extra": "^9.0.11", "builder-util": "25.1.7", "builder-util-runtime": "9.2.10", "chalk": "^4.1.2", "fs-extra": "^10.1.0", "lazy-val": "^1.0.5", "mime": "^2.5.2" } }, "sha512-+jbTkR9m39eDBMP4gfbqglDd6UvBC7RLh5Y0MhFSsc6UkGHj9Vj9TWobxevHYMMqmoujL11ZLjfPpMX+Pt6YEg=="], - "electron-to-chromium": ["electron-to-chromium@1.5.137", "", {}, "sha512-/QSJaU2JyIuTbbABAo/crOs+SuAZLS+fVVS10PVrIT9hrRkmZl8Hb0xPSkKRUUWHQtYzXHpQUW3Dy5hwMzGZkA=="], + "electron-to-chromium": ["electron-to-chromium@1.5.139", "", {}, "sha512-GGnRYOTdN5LYpwbIr0rwP/ZHOQSvAF6TG0LSzp28uCBb9JiXHJGmaaKw29qjNJc5bGnnp6kXJqRnGMQoELwi5w=="], "electron-updater": ["electron-updater@6.6.2", "", { "dependencies": { "builder-util-runtime": "9.3.1", "fs-extra": "^10.1.0", "js-yaml": "^4.1.0", "lazy-val": "^1.0.5", "lodash.escaperegexp": "^4.1.2", "lodash.isequal": "^4.5.0", "semver": "^7.6.3", "tiny-typed-emitter": "^2.1.0" } }, "sha512-Cr4GDOkbAUqRHP5/oeOmH/L2Bn6+FQPxVLZtPbcmKZC63a1F3uu5EefYOssgZXG3u/zBlubbJ5PJdITdMVggbw=="], @@ -1957,9 +1781,9 @@ "escape-string-regexp": ["escape-string-regexp@4.0.0", "", {}, "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA=="], - "eslint": ["eslint@9.24.0", "", { "dependencies": { "@eslint-community/eslint-utils": "^4.2.0", "@eslint-community/regexpp": "^4.12.1", "@eslint/config-array": "^0.20.0", "@eslint/config-helpers": "^0.2.0", "@eslint/core": "^0.12.0", "@eslint/eslintrc": "^3.3.1", "@eslint/js": "9.24.0", "@eslint/plugin-kit": "^0.2.7", "@humanfs/node": "^0.16.6", "@humanwhocodes/module-importer": "^1.0.1", "@humanwhocodes/retry": "^0.4.2", "@types/estree": "^1.0.6", "@types/json-schema": "^7.0.15", "ajv": "^6.12.4", "chalk": "^4.0.0", "cross-spawn": "^7.0.6", "debug": "^4.3.2", "escape-string-regexp": "^4.0.0", "eslint-scope": "^8.3.0", "eslint-visitor-keys": "^4.2.0", "espree": "^10.3.0", "esquery": "^1.5.0", "esutils": "^2.0.2", "fast-deep-equal": "^3.1.3", "file-entry-cache": "^8.0.0", "find-up": "^5.0.0", "glob-parent": "^6.0.2", "ignore": "^5.2.0", "imurmurhash": "^0.1.4", "is-glob": "^4.0.0", "json-stable-stringify-without-jsonify": "^1.0.1", "lodash.merge": "^4.6.2", "minimatch": "^3.1.2", "natural-compare": "^1.4.0", "optionator": "^0.9.3" }, "peerDependencies": { "jiti": "*" }, "optionalPeers": ["jiti"], "bin": { "eslint": "bin/eslint.js" } }, "sha512-eh/jxIEJyZrvbWRe4XuVclLPDYSYYYgLy5zXGGxD6j8zjSAxFEzI2fL/8xNq6O2yKqVt+eF2YhV+hxjV6UKXwQ=="], + "eslint": ["eslint@9.25.0", "", { "dependencies": { "@eslint-community/eslint-utils": "^4.2.0", "@eslint-community/regexpp": "^4.12.1", "@eslint/config-array": "^0.20.0", "@eslint/config-helpers": "^0.2.1", "@eslint/core": "^0.13.0", "@eslint/eslintrc": "^3.3.1", "@eslint/js": "9.25.0", "@eslint/plugin-kit": "^0.2.8", "@humanfs/node": "^0.16.6", "@humanwhocodes/module-importer": "^1.0.1", "@humanwhocodes/retry": "^0.4.2", "@types/estree": "^1.0.6", "@types/json-schema": "^7.0.15", "ajv": "^6.12.4", "chalk": "^4.0.0", "cross-spawn": "^7.0.6", "debug": "^4.3.2", "escape-string-regexp": "^4.0.0", "eslint-scope": "^8.3.0", "eslint-visitor-keys": "^4.2.0", "espree": "^10.3.0", "esquery": "^1.5.0", "esutils": "^2.0.2", "fast-deep-equal": "^3.1.3", "file-entry-cache": "^8.0.0", "find-up": "^5.0.0", "glob-parent": "^6.0.2", "ignore": "^5.2.0", "imurmurhash": "^0.1.4", "is-glob": "^4.0.0", "json-stable-stringify-without-jsonify": "^1.0.1", "lodash.merge": "^4.6.2", "minimatch": "^3.1.2", "natural-compare": "^1.4.0", "optionator": "^0.9.3" }, "peerDependencies": { "jiti": "*" }, "optionalPeers": ["jiti"], "bin": { "eslint": "bin/eslint.js" } }, "sha512-MsBdObhM4cEwkzCiraDv7A6txFXEqtNXOb877TsSp2FCkBNl8JfVQrmiuDqC1IkejT6JLPzYBXx/xAiYhyzgGA=="], - "eslint-config-next": ["eslint-config-next@15.3.0", "", { "dependencies": { "@next/eslint-plugin-next": "15.3.0", "@rushstack/eslint-patch": "^1.10.3", "@typescript-eslint/eslint-plugin": "^5.4.2 || ^6.0.0 || ^7.0.0 || ^8.0.0", "@typescript-eslint/parser": "^5.4.2 || ^6.0.0 || ^7.0.0 || ^8.0.0", "eslint-import-resolver-node": "^0.3.6", "eslint-import-resolver-typescript": "^3.5.2", "eslint-plugin-import": "^2.31.0", "eslint-plugin-jsx-a11y": "^6.10.0", "eslint-plugin-react": "^7.37.0", "eslint-plugin-react-hooks": "^5.0.0" }, "peerDependencies": { "eslint": "^7.23.0 || ^8.0.0 || ^9.0.0", "typescript": ">=3.3.1" }, "optionalPeers": ["typescript"] }, "sha512-+Z3M1W9MnJjX3W4vI9CHfKlEyhTWOUHvc5dB89FyRnzPsUkJlLWZOi8+1pInuVcSztSM4MwBFB0hIHf4Rbwu4g=="], + "eslint-config-next": ["eslint-config-next@15.3.1", "", { "dependencies": { "@next/eslint-plugin-next": "15.3.1", "@rushstack/eslint-patch": "^1.10.3", "@typescript-eslint/eslint-plugin": "^5.4.2 || ^6.0.0 || ^7.0.0 || ^8.0.0", "@typescript-eslint/parser": "^5.4.2 || ^6.0.0 || ^7.0.0 || ^8.0.0", "eslint-import-resolver-node": "^0.3.6", "eslint-import-resolver-typescript": "^3.5.2", "eslint-plugin-import": "^2.31.0", "eslint-plugin-jsx-a11y": "^6.10.0", "eslint-plugin-react": "^7.37.0", "eslint-plugin-react-hooks": "^5.0.0" }, "peerDependencies": { "eslint": "^7.23.0 || ^8.0.0 || ^9.0.0", "typescript": ">=3.3.1" }, "optionalPeers": ["typescript"] }, "sha512-GnmyVd9TE/Ihe3RrvcafFhXErErtr2jS0JDeCSp3vWvy86AXwHsRBt0E3MqP/m8ACS1ivcsi5uaqjbhsG18qKw=="], "eslint-config-prettier": ["eslint-config-prettier@9.1.0", "", { "peerDependencies": { "eslint": ">=7.0.0" }, "bin": { "eslint-config-prettier": "bin/cli.js" } }, "sha512-NSWl5BFQWEPi1j4TjVNItzYV7dZXZ+wP6I6ZhrBGpChQhZRUaElihE9uRRkcbRnNb76UMKDF3r+WTmNcGPKsqw=="], @@ -2035,7 +1859,7 @@ "fast-uri": ["fast-uri@3.0.6", "", {}, "sha512-Atfo14OibSv5wAp4VWNsFYE1AchQRTv9cBGWET4pZWHzYshFSS9NQI6I57rdKn9croWVMbYFbLhJ+yJvmZIIHw=="], - "fastify": ["fastify@5.3.0", "", { "dependencies": { "@fastify/ajv-compiler": "^4.0.0", "@fastify/error": "^4.0.0", "@fastify/fast-json-stringify-compiler": "^5.0.0", "@fastify/proxy-addr": "^5.0.0", "abstract-logging": "^2.0.1", "avvio": "^9.0.0", "fast-json-stringify": "^6.0.0", "find-my-way": "^9.0.0", "light-my-request": "^6.0.0", "pino": "^9.0.0", "process-warning": "^5.0.0", "rfdc": "^1.3.1", "secure-json-parse": "^4.0.0", "semver": "^7.6.0", "toad-cache": "^3.7.0" } }, "sha512-vDpCJa4KRkHrdDMpDNtyPaIDi/ptCwoJ0M8RiefuIMvyXTgG63xYGe9DYYiCpydjh0ETIaLoSyKBNKkh7ew1eA=="], + "fastify": ["fastify@5.3.2", "", { "dependencies": { "@fastify/ajv-compiler": "^4.0.0", "@fastify/error": "^4.0.0", "@fastify/fast-json-stringify-compiler": "^5.0.0", "@fastify/proxy-addr": "^5.0.0", "abstract-logging": "^2.0.1", "avvio": "^9.0.0", "fast-json-stringify": "^6.0.0", "find-my-way": "^9.0.0", "light-my-request": "^6.0.0", "pino": "^9.0.0", "process-warning": "^5.0.0", "rfdc": "^1.3.1", "secure-json-parse": "^4.0.0", "semver": "^7.6.0", "toad-cache": "^3.7.0" } }, "sha512-AIPqBgtqBAwkOkrnwesEE+dOyU30dQ4kh7udxeGVR05CRGwubZx+p2H8P0C4cRnQT0+EPK4VGea2DTL2RtWttg=="], "fastify-plugin": ["fastify-plugin@5.0.1", "", {}, "sha512-HCxs+YnRaWzCl+cWRYFnHmeRFyR5GVnJTAaCJQiYzQSDwK9MgJdyAsuL3nh0EWRCYMgQ5MeziymvmAhUHYHDUQ=="], @@ -2043,7 +1867,7 @@ "fd-slicer": ["fd-slicer@1.1.0", "", { "dependencies": { "pend": "~1.2.0" } }, "sha512-cE1qsB/VwyQozZ+q1dGxR8LBYNZeofhEdUNGSMbQD3Gw2lAzX9Zb3uIU6Ebc/Fmyjo9AWWfnn0AUCHqtevs/8g=="], - "fdir": ["fdir@6.4.3", "", { "peerDependencies": { "picomatch": "^3 || ^4" }, "optionalPeers": ["picomatch"] }, "sha512-PMXmW2y1hDDfTSRc9gaXIuCCRpuoz3Kaz8cUelp3smouvfT632ozg2vrT6lJsHKKOF59YLbOGfAWGUcKEfRMQw=="], + "fdir": ["fdir@6.4.4", "", { "peerDependencies": { "picomatch": "^3 || ^4" }, "optionalPeers": ["picomatch"] }, "sha512-1NZP+GK4GfuAv3PqKvxQRDMjdSRZjnkq7KfhlNrCNNlZ0ygQFpebfrnfnq/W7fpUnAv9aGWmY1zKx7FYL3gwhg=="], "fetch-blob": ["fetch-blob@3.2.0", "", { "dependencies": { "node-domexception": "^1.0.0", "web-streams-polyfill": "^3.0.3" } }, "sha512-7yAQpD2UMJzLi1Dqv7qFYnPbaPx7ZfFK6PiIxQ4PfkGPyNyl2Ugx+a/umUonmKqjhM4DnfbMvdX6otXq83soQQ=="], @@ -2075,7 +1899,7 @@ "flatted": ["flatted@3.3.3", "", {}, "sha512-GX+ysw4PBCz0PzosHDepZGANEuFCMLrnRTiEy9McGjmkCQYwRq4A/X786G/fjM/+OjsWSU1ZrY5qyARZmO/uwg=="], - "flexsearch": ["flexsearch@0.8.154", "", {}, "sha512-1ZMU22O0DHwmK6WZ6hMzMZD79wlyxQ3Bj6JtRhtGnUbIUkx+A7AJs5Yjp7PIEt5INLui15KVdDpI5zlXJDOjfA=="], + "flexsearch": ["flexsearch@0.8.158", "", {}, "sha512-UBOzX2rxIrhAeSSCesTI0qB2Q+75n66rofJx5ppZm5tjXV2P6BxOS3VHKsoSdJhIPg9IMzQl3qkVeSFyq3BUdw=="], "follow-redirects": ["follow-redirects@1.15.9", "", {}, "sha512-gew4GsXizNgdoRyqmyfMHyAmXsZDk6mHkSxZFCzW9gwlbtOW44CDtYavM+y+72qD/Vq2l550kMF52DT8fOLJqQ=="], @@ -2641,7 +2465,7 @@ "negotiator": ["negotiator@1.0.0", "", {}, "sha512-8Ofs/AUQh8MaEcrlq5xOX0CQ9ypTF5dl78mjlMNfOK08fzpgTHQRQPBxcPlEtIw0yRpws+Zo/3r+5WRby7u3Gg=="], - "next": ["next@15.3.0", "", { "dependencies": { "@next/env": "15.3.0", "@swc/counter": "0.1.3", "@swc/helpers": "0.5.15", "busboy": "1.6.0", "caniuse-lite": "^1.0.30001579", "postcss": "8.4.31", "styled-jsx": "5.1.6" }, "optionalDependencies": { "@next/swc-darwin-arm64": "15.3.0", "@next/swc-darwin-x64": "15.3.0", "@next/swc-linux-arm64-gnu": "15.3.0", "@next/swc-linux-arm64-musl": "15.3.0", "@next/swc-linux-x64-gnu": "15.3.0", "@next/swc-linux-x64-musl": "15.3.0", "@next/swc-win32-arm64-msvc": "15.3.0", "@next/swc-win32-x64-msvc": "15.3.0", "sharp": "^0.34.1" }, "peerDependencies": { "@opentelemetry/api": "^1.1.0", "@playwright/test": "^1.41.2", "babel-plugin-react-compiler": "*", "react": "^18.2.0 || 19.0.0-rc-de68d2f4-20241204 || ^19.0.0", "react-dom": "^18.2.0 || 19.0.0-rc-de68d2f4-20241204 || ^19.0.0", "sass": "^1.3.0" }, "optionalPeers": ["@opentelemetry/api", "@playwright/test", "babel-plugin-react-compiler", "sass"], "bin": { "next": "dist/bin/next" } }, "sha512-k0MgP6BsK8cZ73wRjMazl2y2UcXj49ZXLDEgx6BikWuby/CN+nh81qFFI16edgd7xYpe/jj2OZEIwCoqnzz0bQ=="], + "next": ["next@15.3.1", "", { "dependencies": { "@next/env": "15.3.1", "@swc/counter": "0.1.3", "@swc/helpers": "0.5.15", "busboy": "1.6.0", "caniuse-lite": "^1.0.30001579", "postcss": "8.4.31", "styled-jsx": "5.1.6" }, "optionalDependencies": { "@next/swc-darwin-arm64": "15.3.1", "@next/swc-darwin-x64": "15.3.1", "@next/swc-linux-arm64-gnu": "15.3.1", "@next/swc-linux-arm64-musl": "15.3.1", "@next/swc-linux-x64-gnu": "15.3.1", "@next/swc-linux-x64-musl": "15.3.1", "@next/swc-win32-arm64-msvc": "15.3.1", "@next/swc-win32-x64-msvc": "15.3.1", "sharp": "^0.34.1" }, "peerDependencies": { "@opentelemetry/api": "^1.1.0", "@playwright/test": "^1.41.2", "babel-plugin-react-compiler": "*", "react": "^18.2.0 || 19.0.0-rc-de68d2f4-20241204 || ^19.0.0", "react-dom": "^18.2.0 || 19.0.0-rc-de68d2f4-20241204 || ^19.0.0", "sass": "^1.3.0" }, "optionalPeers": ["@opentelemetry/api", "@playwright/test", "babel-plugin-react-compiler", "sass"], "bin": { "next": "dist/bin/next" } }, "sha512-8+dDV0xNLOgHlyBxP1GwHGVaNXsmp+2NhZEYrXr24GWLHtt27YrBPbPuHvzlhi7kZNYjeJNR93IF5zfFu5UL0g=="], "next-intl": ["next-intl@4.0.2", "", { "dependencies": { "@formatjs/intl-localematcher": "^0.5.4", "negotiator": "^1.0.0", "use-intl": "^4.0.2" }, "peerDependencies": { "next": "^12.0.0 || ^13.0.0 || ^14.0.0 || ^15.0.0", "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || >=19.0.0-rc <19.0.0 || ^19.0.0", "typescript": "^5.0.0" }, "optionalPeers": ["typescript"] }, "sha512-3cKVflwdrqxCOvAL+DtGN68qR802i0PEj0dttkAD5IK5XxOjugQs4yU8aSakvPMbkOrhEJ+89z5lG2EAqi7Gkw=="], @@ -2705,7 +2529,7 @@ "oniguruma-to-es": ["oniguruma-to-es@2.3.0", "", { "dependencies": { "emoji-regex-xs": "^1.0.0", "regex": "^5.1.1", "regex-recursion": "^5.1.1" } }, "sha512-bwALDxriqfKGfUufKGGepCzu9x7nJQuoRoAFp4AnwehhC2crqrDIAP/uN2qdlsAvSMpeRC3+Yzhqc7hLmle5+g=="], - "openai": ["openai@4.94.0", "", { "dependencies": { "@types/node": "^18.11.18", "@types/node-fetch": "^2.6.4", "abort-controller": "^3.0.0", "agentkeepalive": "^4.2.1", "form-data-encoder": "1.7.2", "formdata-node": "^4.3.2", "node-fetch": "^2.6.7" }, "peerDependencies": { "ws": "^8.18.0", "zod": "^3.23.8" }, "optionalPeers": ["ws", "zod"], "bin": { "openai": "bin/cli" } }, "sha512-WVmr9HWcwfouLJ7R3UHd2A93ClezTPuJljQxkCYQAL15Sjyt+FBNoqEz5MHSdH/ebQrVyvRhFyn/bvdqtSPyIA=="], + "openai": ["openai@4.95.1", "", { "dependencies": { "@types/node": "^18.11.18", "@types/node-fetch": "^2.6.4", "abort-controller": "^3.0.0", "agentkeepalive": "^4.2.1", "form-data-encoder": "1.7.2", "formdata-node": "^4.3.2", "node-fetch": "^2.6.7" }, "peerDependencies": { "ws": "^8.18.0", "zod": "^3.23.8" }, "optionalPeers": ["ws", "zod"], "bin": { "openai": "bin/cli" } }, "sha512-IqJy+ymeW+k/Wq+2YVN3693OQMMcODRtHEYOlz263MdUwnN/Dwdl9c2EXSxLLtGEHkSHAfvzpDMHI5MaWJKXjQ=="], "openapi": ["openapi@1.0.1", "", { "dependencies": { "@types/jest": "^26.0.14", "change-case": "^4.1.1", "commander": "^6.1.0", "cosmiconfig": "^6.0.0", "is-url": "^1.2.4", "js-yaml": "^3.13.1", "node-fetch": "^2.6.0", "object-hash": "^2.0.3", "url-parse": "^1.4.7" }, "bin": { "openapi": "src/cli/index.js" } }, "sha512-hiQ6/K2Q2eFqlOoPQb8V2hzsVsbv31ipMCKfuwZQmqf+MnLzVUcYMBy0h/Y+Sv/HeDCTN4mf0GoOmET4EoJS8A=="], @@ -2799,9 +2623,9 @@ "pirates": ["pirates@4.0.7", "", {}, "sha512-TfySrs/5nm8fQJDcBDuUng3VOUKsd7S+zqvbOTiGXHfxX4wK31ard+hoNuvkicM/2YFzlpDgABOevKSsB4G/FA=="], - "playwright": ["playwright@1.51.1", "", { "dependencies": { "playwright-core": "1.51.1" }, "optionalDependencies": { "fsevents": "2.3.2" }, "bin": { "playwright": "cli.js" } }, "sha512-kkx+MB2KQRkyxjYPc3a0wLZZoDczmppyGJIvQ43l+aZihkaVvmu/21kiyaHeHjiFxjxNNFnUncKmcGIyOojsaw=="], + "playwright": ["playwright@1.52.0", "", { "dependencies": { "playwright-core": "1.52.0" }, "optionalDependencies": { "fsevents": "2.3.2" }, "bin": { "playwright": "cli.js" } }, "sha512-JAwMNMBlxJ2oD1kce4KPtMkDeKGHQstdpFPcPH3maElAXon/QZeTvtsfXmTMRyO9TslfoYOXkSsvao2nE1ilTw=="], - "playwright-core": ["playwright-core@1.51.1", "", { "bin": { "playwright-core": "cli.js" } }, "sha512-/crRMj8+j/Nq5s8QcvegseuyeZPxpQCZb6HNk3Sos3BlZyAknRjoyJPFWkpNn8v0+P3WiwqFF8P+zQo4eqiNuw=="], + "playwright-core": ["playwright-core@1.52.0", "", { "bin": { "playwright-core": "cli.js" } }, "sha512-l2osTgLXSMeuLZOML9qYODUQoPPnUsKsb5/P6LJ2e6uPKXUdPK5WYhN4z03G+YNbWmGDY4YENauNu4ZKczreHg=="], "plist": ["plist@3.1.0", "", { "dependencies": { "@xmldom/xmldom": "^0.8.8", "base64-js": "^1.5.1", "xmlbuilder": "^15.1.1" } }, "sha512-uysumyrvkUX0rX/dEVqt8gC3sTBzd4zoWfLeS29nb53imdaXVvLINYXTI2GNqzaMuvacNx4uJQ8+b3zXR0pkgQ=="], @@ -2899,7 +2723,7 @@ "react-merge-refs": ["react-merge-refs@2.1.1", "", {}, "sha512-jLQXJ/URln51zskhgppGJ2ub7b2WFKGq3cl3NYKtlHoTG+dN2q7EzWrn3hN3EgPsTMvpR9tpq5ijdp7YwFZkag=="], - "react-refresh": ["react-refresh@0.14.2", "", {}, "sha512-jCvmsr+1IUSMUyzOkRcvnVbX3ZYC6g9TDrDbFuFmRDq7PD4yaGbLKNQL6k2jnArV8hjYxh7hVhAZB6s9HDGpZA=="], + "react-refresh": ["react-refresh@0.17.0", "", {}, "sha512-z6F7K9bV85EfseRCp2bzrpyQ0Gkw1uLoCel9XBVWPg/TjRj94SkJzUTGfOa4bs7iJvBWtQG0Wq7wnI0syw3EBQ=="], "react-remove-scroll": ["react-remove-scroll@2.6.3", "", { "dependencies": { "react-remove-scroll-bar": "^2.3.7", "react-style-singleton": "^2.2.3", "tslib": "^2.1.0", "use-callback-ref": "^1.3.3", "use-sidecar": "^1.1.3" }, "peerDependencies": { "@types/react": "*", "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react"] }, "sha512-pnAi91oOk8g8ABQKGF5/M9qxmmOPxaAnopyTHYfqYEwJhyFrbbBtHuSgtKEoH0jpcxx5o3hXqH1mNd9/Oi+8iQ=="], @@ -3251,7 +3075,7 @@ "type-check": ["type-check@0.4.0", "", { "dependencies": { "prelude-ls": "^1.2.1" } }, "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew=="], - "type-fest": ["type-fest@4.39.1", "", {}, "sha512-uW9qzd66uyHYxwyVBYiwS4Oi0qZyUqwjU+Oevr6ZogYiXt99EOYtwvzMSLw1c3lYo2HzJsep/NB23iEVEgjG/w=="], + "type-fest": ["type-fest@4.40.0", "", {}, "sha512-ABHZ2/tS2JkvH1PEjxFDTUWC8dB5OsIGZP4IFLhR293GqT5Y5qB1WwL2kMPYhQW9DVgVD8Hd7I8gjwPIf5GFkw=="], "typed-array-buffer": ["typed-array-buffer@1.0.3", "", { "dependencies": { "call-bound": "^1.0.3", "es-errors": "^1.3.0", "is-typed-array": "^1.1.14" } }, "sha512-nAYYwfY3qnzX30IkA6AQZjVbtK6duGontcQm1WSG1MD94YLqK0515GNApXkoxKOWMusVssAHWLh9SeaoefYFGw=="], @@ -3335,7 +3159,7 @@ "vfile-message": ["vfile-message@4.0.2", "", { "dependencies": { "@types/unist": "^3.0.0", "unist-util-stringify-position": "^4.0.0" } }, "sha512-jRDZ1IMLttGj41KcZvlrYAaI3CfqpLpfpf+Mfig13viT6NKvRzWZ+lXz0Y5D60w6uJIBAOGq9mSHf0gktF0duw=="], - "vite": ["vite@6.2.6", "", { "dependencies": { "esbuild": "^0.25.0", "postcss": "^8.5.3", "rollup": "^4.30.1" }, "optionalDependencies": { "fsevents": "~2.3.3" }, "peerDependencies": { "@types/node": "^18.0.0 || ^20.0.0 || >=22.0.0", "jiti": ">=1.21.0", "less": "*", "lightningcss": "^1.21.0", "sass": "*", "sass-embedded": "*", "stylus": "*", "sugarss": "*", "terser": "^5.16.0", "tsx": "^4.8.1", "yaml": "^2.4.2" }, "optionalPeers": ["@types/node", "jiti", "less", "lightningcss", "sass", "sass-embedded", "stylus", "sugarss", "terser", "tsx", "yaml"], "bin": { "vite": "bin/vite.js" } }, "sha512-9xpjNl3kR4rVDZgPNdTL0/c6ao4km69a/2ihNQbcANz8RuCOK3hQBmLSJf3bRKVQjVMda+YvizNE8AwvogcPbw=="], + "vite": ["vite@6.3.2", "", { "dependencies": { "esbuild": "^0.25.0", "fdir": "^6.4.3", "picomatch": "^4.0.2", "postcss": "^8.5.3", "rollup": "^4.34.9", "tinyglobby": "^0.2.12" }, "optionalDependencies": { "fsevents": "~2.3.3" }, "peerDependencies": { "@types/node": "^18.0.0 || ^20.0.0 || >=22.0.0", "jiti": ">=1.21.0", "less": "*", "lightningcss": "^1.21.0", "sass": "*", "sass-embedded": "*", "stylus": "*", "sugarss": "*", "terser": "^5.16.0", "tsx": "^4.8.1", "yaml": "^2.4.2" }, "optionalPeers": ["@types/node", "jiti", "less", "lightningcss", "sass", "sass-embedded", "stylus", "sugarss", "terser", "tsx", "yaml"], "bin": { "vite": "bin/vite.js" } }, "sha512-ZSvGOXKGceizRQIZSz7TGJ0pS3QLlVY/9hwxVh17W3re67je1RKYzFHivZ/t0tubU78Vkyb9WnHPENSBCzbckg=="], "vite-plugin-electron": ["vite-plugin-electron@0.29.0", "", { "peerDependencies": { "vite-plugin-electron-renderer": "*" }, "optionalPeers": ["vite-plugin-electron-renderer"] }, "sha512-HP0DI9Shg41hzt55IKYVnbrChWXHX95QtsEQfM+szQBpWjVhVGMlqRjVco6ebfQjWNr+Ga+PeoBjMIl8zMaufw=="], @@ -3348,11 +3172,6 @@ "wcwidth": ["wcwidth@1.0.1", "", { "dependencies": { "defaults": "^1.0.3" } }, "sha512-XHPEwS0q6TaxcvG85+8EYkbiCux2XtWG2mkc47Ng2A77BQu9+DqIOJldST4HgPkuea7dvKSj5VgX3P1d4rW8Tg=="], "web-streams-polyfill": ["web-streams-polyfill@4.0.0-beta.3", "", {}, "sha512-QW95TCTaHmsYfHDybGMwO5IJIM93I/6vTRk+daHTWFPhwh+C8Cg7j7XyKrwrj8Ib6vYXe0ocYNrmzY4xAAN6ug=="], -<<<<<<< Updated upstream -======= - - "webfontloader": ["webfontloader@1.6.28", "", {}, "sha512-Egb0oFEga6f+nSgasH3E0M405Pzn6y3/9tOVanv/DLfa1YBIgcv90L18YyWnvXkRbIM17v5Kv6IT2N6g1x5tvQ=="], ->>>>>>> Stashed changes "webfontloader": ["webfontloader@1.6.28", "", {}, "sha512-Egb0oFEga6f+nSgasH3E0M405Pzn6y3/9tOVanv/DLfa1YBIgcv90L18YyWnvXkRbIM17v5Kv6IT2N6g1x5tvQ=="], @@ -3406,7 +3225,7 @@ "zip-stream": ["zip-stream@4.1.1", "", { "dependencies": { "archiver-utils": "^3.0.4", "compress-commons": "^4.1.2", "readable-stream": "^3.6.0" } }, "sha512-9qv4rlDiopXg4E69k+vMHjNN63YFMe9sZMrdlvKnCjlCRWeCBswPPMPUfx+ipsAWq1LXHe70RcbaHdJJpS6hyQ=="], - "zod": ["zod@3.24.2", "", {}, "sha512-lY7CDW43ECgW9u1TcT3IoXHflywfVqDYze4waEz812jR/bZ8FHDsl7pFQoSZTz5N+2NqRXs8GBwnAwo3ZNxqhQ=="], + "zod": ["zod@3.24.3", "", {}, "sha512-HhY1oqzWCQWuUqvBFnsyrtZRhyPeR7SUGv+C4+MsisMuVfSPx8HpwWqH8tRahSlt6M3PiFAcoeFhZAqIXTxoSg=="], "zod-to-json-schema": ["zod-to-json-schema@3.24.5", "", { "peerDependencies": { "zod": "^3.24.1" } }, "sha512-/AuWwMP+YqiPbsJx5D6TfgRTc4kTLjsh5SOcd4bLsfUg2RcEXrFMJl1DGgdHy2aCfsIA/cr/1JM0xcB2GZji8g=="], @@ -3474,8 +3293,6 @@ "@eslint/eslintrc/ignore": ["ignore@5.3.2", "", {}, "sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g=="], - "@eslint/plugin-kit/@eslint/core": ["@eslint/core@0.13.0", "", { "dependencies": { "@types/json-schema": "^7.0.15" } }, "sha512-yfkgDw1KR66rkT5A8ci4irzDysN7FRpq3ttJolR88OqQikAWqwA8j5VZyas+vjyBNFIJ7MfybJ9plMILI2UrCw=="], - "@fastify/ajv-compiler/ajv": ["ajv@8.17.1", "", { "dependencies": { "fast-deep-equal": "^3.1.3", "fast-uri": "^3.0.1", "json-schema-traverse": "^1.0.0", "require-from-string": "^2.0.2" } }, "sha512-B/gBuNg5SiMTrPkC+A2+cW0RszwxYmn6VYxB/inlBStS5nx6xHIt/ehKRhIMhqusl7a8LjQoZnjCs5vhwxOQ1g=="], "@formatjs/ecma402-abstract/@formatjs/intl-localematcher": ["@formatjs/intl-localematcher@0.6.1", "", { "dependencies": { "tslib": "^2.8.0" } }, "sha512-ePEgLgVCqi2BBFnTMWPfIghu6FkbZnnBVhO2sSxvLfrdFw7wCHAHiDoM2h4NRgjbaY7+B7HgOLZGkK187pZTZg=="], @@ -3504,7 +3321,7 @@ "@onlook/web-client/@types/react-dom": ["@types/react-dom@19.1.2", "", { "peerDependencies": { "@types/react": "^19.0.0" } }, "sha512-XGJkWF41Qq305SKWEILa1O8vzhb3aOo3ogBlSmiqNko/WmRb6QIaweuZCXjKygVDXpzXb5wyxKTSOsmkuqj+Qw=="], - "@onlook/web-client/motion": ["motion@12.7.2", "", { "dependencies": { "framer-motion": "^12.7.2", "tslib": "^2.4.0" }, "peerDependencies": { "@emotion/is-prop-valid": "*", "react": "^18.0.0 || ^19.0.0", "react-dom": "^18.0.0 || ^19.0.0" }, "optionalPeers": ["@emotion/is-prop-valid", "react", "react-dom"] }, "sha512-ZFzhSCuKJYq0UdvFkEkWB6kWfiP+BjiLUkYh1ev7S48fipH0XdiCVHK1xct/zZU13AN7ESIqtm50pKsSDvRqmg=="], + "@onlook/web-client/motion": ["motion@12.7.4", "", { "dependencies": { "framer-motion": "^12.7.4", "tslib": "^2.4.0" }, "peerDependencies": { "@emotion/is-prop-valid": "*", "react": "^18.0.0 || ^19.0.0", "react-dom": "^18.0.0 || ^19.0.0" }, "optionalPeers": ["@emotion/is-prop-valid", "react", "react-dom"] }, "sha512-MBGrMbYageHw4iZJn+pGTr7abq5n53jCxYkhFC1It3vYukQPRWg5zij46MnwYGpLR8KG465MLHSASXot9edYOw=="], "@onlook/web-client/react": ["react@19.1.0", "", {}, "sha512-FS+XFBNvn3GTAWq26joslQgWNoFu08F4kl0J4CgdNKADkdSGXQyTCnKteIAJy96Br6YbpEU1LSzV5dYtjMkMDg=="], @@ -3528,13 +3345,13 @@ "@tailwindcss/node/tailwindcss": ["tailwindcss@4.1.4", "", {}, "sha512-1ZIUqtPITFbv/DxRmDr5/agPqJwF69d24m9qmM1939TJehgY539CtzeZRjbLt5G6fSy/7YqqYsfvoTEw9xUI2A=="], - "@tailwindcss/oxide-wasm32-wasi/@emnapi/core": ["@emnapi/core@1.4.1", "", { "dependencies": { "@emnapi/wasi-threads": "1.0.1", "tslib": "^2.4.0" }, "bundled": true }, "sha512-4JFstCTaToCFrPqrGzgkF8N2NHjtsaY4uRh6brZQ5L9e4wbMieX8oDT8N7qfVFTQecHFEtkj4ve49VIZ3mKVqw=="], + "@tailwindcss/oxide-wasm32-wasi/@emnapi/core": ["@emnapi/core@1.4.3", "", { "dependencies": { "@emnapi/wasi-threads": "1.0.2", "tslib": "^2.4.0" }, "bundled": true }, "sha512-4m62DuCE07lw01soJwPiBGC0nAww0Q+RY70VZ+n49yDIO13yyinhbWCeNnaob0lakDtWQzSdtNWzJeOJt2ma+g=="], - "@tailwindcss/oxide-wasm32-wasi/@emnapi/runtime": ["@emnapi/runtime@1.4.1", "", { "dependencies": { "tslib": "^2.4.0" }, "bundled": true }, "sha512-LMshMVP0ZhACNjQNYXiU1iZJ6QCcv0lUdPDPugqGvCGXt5xtRVBPdtA0qU12pEXZzpWAhWlZYptfdAFq10DOVQ=="], + "@tailwindcss/oxide-wasm32-wasi/@emnapi/runtime": ["@emnapi/runtime@1.4.3", "", { "dependencies": { "tslib": "^2.4.0" }, "bundled": true }, "sha512-pBPWdu6MLKROBX05wSNKcNb++m5Er+KQ9QkB+WVM+pW2Kx9hoSrVTnu3BdkI5eBLZoKu/J6mW/B6i6bJB2ytXQ=="], - "@tailwindcss/oxide-wasm32-wasi/@emnapi/wasi-threads": ["@emnapi/wasi-threads@1.0.1", "", { "dependencies": { "tslib": "^2.4.0" }, "bundled": true }, "sha512-iIBu7mwkq4UQGeMEM8bLwNK962nXdhodeScX4slfQnRhEMMzvYivHhutCIk8uojvmASXXPC2WNEjwxFWk72Oqw=="], + "@tailwindcss/oxide-wasm32-wasi/@emnapi/wasi-threads": ["@emnapi/wasi-threads@1.0.2", "", { "dependencies": { "tslib": "^2.4.0" }, "bundled": true }, "sha512-5n3nTJblwRi8LlXkJ9eBzu+kZR8Yxcc7ubakyQTFzPMtIhFpUBRbsnc2Dv88IZDIbCDlBiWrknhB4Lsz7mg6BA=="], - "@tailwindcss/oxide-wasm32-wasi/@napi-rs/wasm-runtime": ["@napi-rs/wasm-runtime@0.2.8", "", { "dependencies": { "@emnapi/core": "^1.4.0", "@emnapi/runtime": "^1.4.0", "@tybys/wasm-util": "^0.9.0" }, "bundled": true }, "sha512-OBlgKdX7gin7OIq4fadsjpg+cp2ZphvAIKucHsNfTdJiqdOmOEwQd/bHi0VwNrcw5xpBJyUw6cK/QilCqy1BSg=="], + "@tailwindcss/oxide-wasm32-wasi/@napi-rs/wasm-runtime": ["@napi-rs/wasm-runtime@0.2.9", "", { "dependencies": { "@emnapi/core": "^1.4.0", "@emnapi/runtime": "^1.4.0", "@tybys/wasm-util": "^0.9.0" }, "bundled": true }, "sha512-OKRBiajrrxB9ATokgEQoG87Z25c67pCpYcCwmXYX8PBftC9pBfN18gnm/fh1wurSLEKIAt+QRFLFCQISrb66Jg=="], "@tailwindcss/oxide-wasm32-wasi/@tybys/wasm-util": ["@tybys/wasm-util@0.9.0", "", { "dependencies": { "tslib": "^2.4.0" }, "bundled": true }, "sha512-6+7nlbMVX/PVDCwaIQ8nTOPveOcFLSt8GcXdx8hD0bt39uWxYT88uXzqTd4fTvqta7oeUJqudepapKNt2DYJFw=="], @@ -3662,13 +3479,8 @@ "fetch-blob/web-streams-polyfill": ["web-streams-polyfill@3.3.3", "", {}, "sha512-d2JWLCivmZYTSIoge9MsgFCZrt571BikcWGYkjC1khllbTeDlGqZ2D8vD8E/lJa8WGWbb7Plm8/XJYV7IJHZZw=="], - "fetch-blob/web-streams-polyfill": ["web-streams-polyfill@3.3.3", "", {}, "sha512-d2JWLCivmZYTSIoge9MsgFCZrt571BikcWGYkjC1khllbTeDlGqZ2D8vD8E/lJa8WGWbb7Plm8/XJYV7IJHZZw=="], - -<<<<<<< Updated upstream -======= "filelist/minimatch": ["minimatch@5.1.6", "", { "dependencies": { "brace-expansion": "^2.0.1" } }, "sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g=="], ->>>>>>> Stashed changes "from2/readable-stream": ["readable-stream@2.3.8", "", { "dependencies": { "core-util-is": "~1.0.0", "inherits": "~2.0.3", "isarray": "~1.0.0", "process-nextick-args": "~2.0.0", "safe-buffer": "~5.1.1", "string_decoder": "~1.1.1", "util-deprecate": "~1.0.1" } }, "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA=="], "fs-minipass/minipass": ["minipass@3.3.6", "", { "dependencies": { "yallist": "^4.0.0" } }, "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw=="], @@ -3735,16 +3547,8 @@ "minipass-sized/minipass": ["minipass@3.3.6", "", { "dependencies": { "yallist": "^4.0.0" } }, "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw=="], -<<<<<<< HEAD -<<<<<<< Updated upstream -======= - "next/postcss": ["postcss@8.4.31", "", { "dependencies": { "nanoid": "^3.3.6", "picocolors": "^1.0.0", "source-map-js": "^1.0.2" } }, "sha512-PS08Iboia9mts/2ygV3eLpY5ghnUcfLV/EXTOW1E2qYxJKGGBUtNjN76FYHnMs36RmARn41bC0AZmn+rR0OVpQ=="], - ->>>>>>> Stashed changes -======= "next/postcss": ["postcss@8.4.31", "", { "dependencies": { "nanoid": "^3.3.6", "picocolors": "^1.0.0", "source-map-js": "^1.0.2" } }, "sha512-PS08Iboia9mts/2ygV3eLpY5ghnUcfLV/EXTOW1E2qYxJKGGBUtNjN76FYHnMs36RmARn41bC0AZmn+rR0OVpQ=="], ->>>>>>> 1113d4b9e78ac952f59500f747b62c3755487101 "node-abi/semver": ["semver@7.7.1", "", { "bin": { "semver": "bin/semver.js" } }, "sha512-hlq8tAfn0m/61p4BVRcPzIGr6LKiMwo4VM6dGi6pt4qcRkmNzTcWq6eCEjEh+qXjkMDvPlOFFSGwQjoEa6gyMA=="], "node-api-version/semver": ["semver@7.7.1", "", { "bin": { "semver": "bin/semver.js" } }, "sha512-hlq8tAfn0m/61p4BVRcPzIGr6LKiMwo4VM6dGi6pt4qcRkmNzTcWq6eCEjEh+qXjkMDvPlOFFSGwQjoEa6gyMA=="], @@ -3805,15 +3609,8 @@ "simple-swizzle/is-arrayish": ["is-arrayish@0.3.2", "", {}, "sha512-eVRqCvVlZbuw3GrM63ovNSNAeA1K16kaR/LRY/92w0zxQ5/1YzwblUX652i4Xs9RwAGjW9d9y6X88t8OaAJfWQ=="], -<<<<<<< HEAD -<<<<<<< Updated upstream - "slice-ansi/ansi-styles": ["ansi-styles@4.3.0", "", { "dependencies": { "color-convert": "^2.0.1" } }, "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg=="], -======= "simple-update-notifier/semver": ["semver@7.7.1", "", { "bin": { "semver": "bin/semver.js" } }, "sha512-hlq8tAfn0m/61p4BVRcPzIGr6LKiMwo4VM6dGi6pt4qcRkmNzTcWq6eCEjEh+qXjkMDvPlOFFSGwQjoEa6gyMA=="], ->>>>>>> 1113d4b9e78ac952f59500f747b62c3755487101 -======= ->>>>>>> Stashed changes "sort-keys/is-plain-obj": ["is-plain-obj@1.1.0", "", {}, "sha512-yvkRyxmFKEOQ4pNXCmJG5AEQNlXJS5LaONXo5/cLdTZdWvsZ1ioJEonLGAosKlMWE8lwUy/bJzMjcw8az73+Fg=="], "source-map-support/source-map": ["source-map@0.6.1", "", {}, "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g=="], @@ -3904,7 +3701,7 @@ "@onlook/web-client/@types/node/undici-types": ["undici-types@6.19.8", "", {}, "sha512-ve2KP6f/JnbPBFyobGHuerC9g1FYGn/F8n1LWTwNxCEzd6IfqTwUQcNXgEtmmQ6DlRrC1hrSrBnCZPokRrDHjw=="], - "@onlook/web-client/motion/framer-motion": ["framer-motion@12.7.2", "", { "dependencies": { "motion-dom": "^12.7.2", "motion-utils": "^12.7.2", "tslib": "^2.4.0" }, "peerDependencies": { "@emotion/is-prop-valid": "*", "react": "^18.0.0 || ^19.0.0", "react-dom": "^18.0.0 || ^19.0.0" }, "optionalPeers": ["@emotion/is-prop-valid", "react", "react-dom"] }, "sha512-0vLY/JqYqieojTriuIR+UTCBVbj89eNUxXTkb01Xg8gSiTXDeuscOvoYm8vvgRGLMYGsCuJ31kDsTy081kPKFw=="], + "@onlook/web-client/motion/framer-motion": ["framer-motion@12.7.4", "", { "dependencies": { "motion-dom": "^12.7.4", "motion-utils": "^12.7.2", "tslib": "^2.4.0" }, "peerDependencies": { "@emotion/is-prop-valid": "*", "react": "^18.0.0 || ^19.0.0", "react-dom": "^18.0.0 || ^19.0.0" }, "optionalPeers": ["@emotion/is-prop-valid", "react", "react-dom"] }, "sha512-jX0bPsTmU0oPZTYz/dVyD0dmOyEOEJvdn0TaZBE5I8g2GvVnnQnW9f65cJnoVfUkY3WZWNXGXnPbVA9YnaIfVA=="], "@onlook/web-client/react-dom/scheduler": ["scheduler@0.26.0", "", {}, "sha512-NlHwttCI/l5gCPR3D1nNXtWABUmBwvZpEQiD4IXSbIDq8BzLIK/7Ir5gTFSGZDUu37K5cMNp0hFtzO38sC7gWA=="], @@ -3974,6 +3771,8 @@ "app-builder-lib/tar/yallist": ["yallist@4.0.0", "", {}, "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A=="], + "archiver-utils/readable-stream/core-util-is": ["core-util-is@1.0.3", "", {}, "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ=="], + "archiver-utils/readable-stream/isarray": ["isarray@1.0.0", "", {}, "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ=="], "archiver-utils/readable-stream/safe-buffer": ["safe-buffer@5.1.2", "", {}, "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g=="], @@ -4014,6 +3813,8 @@ "filelist/minimatch/brace-expansion": ["brace-expansion@2.0.1", "", { "dependencies": { "balanced-match": "^1.0.0" } }, "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA=="], + "from2/readable-stream/core-util-is": ["core-util-is@1.0.3", "", {}, "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ=="], + "from2/readable-stream/isarray": ["isarray@1.0.0", "", {}, "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ=="], "from2/readable-stream/safe-buffer": ["safe-buffer@5.1.2", "", {}, "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g=="], @@ -4026,6 +3827,8 @@ "hosted-git-info/lru-cache/yallist": ["yallist@4.0.0", "", {}, "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A=="], + "lazystream/readable-stream/core-util-is": ["core-util-is@1.0.3", "", {}, "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ=="], + "lazystream/readable-stream/isarray": ["isarray@1.0.0", "", {}, "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ=="], "lazystream/readable-stream/safe-buffer": ["safe-buffer@5.1.2", "", {}, "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g=="], @@ -4046,16 +3849,8 @@ "minipass-sized/minipass/yallist": ["yallist@4.0.0", "", {}, "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A=="], -<<<<<<< HEAD -<<<<<<< Updated upstream -======= "next/postcss/nanoid": ["nanoid@3.3.11", "", { "bin": { "nanoid": "bin/nanoid.cjs" } }, "sha512-N8SpfPUnUp1bK+PMYW8qSWdl9U+wwNWI4QKxOYDy9JAro3WMX7p2OeVRF9v+347pnakNevPmiHhNmZ2HbFA76w=="], ->>>>>>> Stashed changes -======= - "next/postcss/nanoid": ["nanoid@3.3.11", "", { "bin": { "nanoid": "bin/nanoid.cjs" } }, "sha512-N8SpfPUnUp1bK+PMYW8qSWdl9U+wwNWI4QKxOYDy9JAro3WMX7p2OeVRF9v+347pnakNevPmiHhNmZ2HbFA76w=="], - ->>>>>>> 1113d4b9e78ac952f59500f747b62c3755487101 "node-gyp/tar/chownr": ["chownr@2.0.0", "", {}, "sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ=="], "node-gyp/tar/minipass": ["minipass@5.0.0", "", {}, "sha512-3FnjYuehv9k6ovOEbyOswadCDPX1piCfhV8ncmYtHOjuPwylVWsghTLo7rabjC3Rx5xD4HDx8Wm1xnMF7S5qFQ=="], @@ -4092,6 +3887,8 @@ "tailwindcss/chokidar/readdirp": ["readdirp@3.6.0", "", { "dependencies": { "picomatch": "^2.2.1" } }, "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA=="], + "tar-stream/readable-stream/core-util-is": ["core-util-is@1.0.3", "", {}, "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ=="], + "tar-stream/readable-stream/isarray": ["isarray@1.0.0", "", {}, "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ=="], "tar-stream/readable-stream/safe-buffer": ["safe-buffer@5.1.2", "", {}, "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g=="], @@ -4110,7 +3907,7 @@ "@electron/rebuild/tar/minizlib/minipass": ["minipass@3.3.6", "", { "dependencies": { "yallist": "^4.0.0" } }, "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw=="], - "@onlook/web-client/motion/framer-motion/motion-dom": ["motion-dom@12.7.2", "", { "dependencies": { "motion-utils": "^12.7.2" } }, "sha512-7+sytBQyb9XRRH6lyLRQf+R6y2BE79J2EgTijTSxYgGt+ufpnoRDPgru9KHvA125tTHnbAXDzeTUb9OvscSitA=="], + "@onlook/web-client/motion/framer-motion/motion-dom": ["motion-dom@12.7.4", "", { "dependencies": { "motion-utils": "^12.7.2" } }, "sha512-1ZUHAoSUMMxP6jPqyxlk9XUfb6NxMsnWPnH2YGhrOhTURLcXWbETi6eemoKb60Pe32NVJYduL4B62VQSO5Jq8Q=="], "@onlook/web-client/motion/framer-motion/motion-utils": ["motion-utils@12.7.2", "", {}, "sha512-XhZwqctxyJs89oX00zn3OGCuIIpVevbTa+u82usWBC6pSHUd2AoNWiYa7Du8tJxJy9TFbZ82pcn5t7NOm1PHAw=="], From 4b5000ac76e714dea55c7d903023f5d03987594a Mon Sep 17 00:00:00 2001 From: Pranav Tartey Date: Sat, 19 Apr 2025 22:36:53 +0530 Subject: [PATCH 09/11] removed the unusable code --- apps/studio/src/components/Modals/Settings/Project/index.tsx | 5 ----- apps/studio/src/lib/projects/copy.ts | 3 +-- 2 files changed, 1 insertion(+), 7 deletions(-) diff --git a/apps/studio/src/components/Modals/Settings/Project/index.tsx b/apps/studio/src/components/Modals/Settings/Project/index.tsx index bdcef8bf02..16a5778ccc 100644 --- a/apps/studio/src/components/Modals/Settings/Project/index.tsx +++ b/apps/studio/src/components/Modals/Settings/Project/index.tsx @@ -22,11 +22,6 @@ import { toast } from '@onlook/ui/use-toast'; import { Progress } from '@onlook/ui/progress'; import { t } from 'i18next'; -// type MoveProjectFolderResponse = { -// success: boolean; -// message: string; -// }; - const ProjectTab = observer(() => { const projectsManager = useProjectsManager(); const project = projectsManager.project; diff --git a/apps/studio/src/lib/projects/copy.ts b/apps/studio/src/lib/projects/copy.ts index 1eea2c50c6..14b2492550 100644 --- a/apps/studio/src/lib/projects/copy.ts +++ b/apps/studio/src/lib/projects/copy.ts @@ -1,7 +1,6 @@ import { makeAutoObservable } from 'mobx'; import { MainChannels } from '@onlook/models/constants'; import type { ProjectsManager } from '.'; -import { toast } from '@onlook/ui/use-toast'; import { invokeMainChannel } from '../utils'; import { CopyStage, RunState } from '@onlook/models'; @@ -19,7 +18,7 @@ export class CopyManager { return this.copyStage; } - async createCopy(updatedPath: string) { + async createCopy(updatedPath: string): Promise { try { const currentPath = this.projectsManager.project?.folderPath ?? ''; if (!currentPath) { From ab7f51efc6ed0a034b4317362cbe201ac7876df6 Mon Sep 17 00:00:00 2001 From: Pranav Tartey Date: Sun, 20 Apr 2025 19:37:38 +0530 Subject: [PATCH 10/11] made creating copy optional by adding the checkbox and moved the copy logic to dedicated component --- .../Modals/Settings/Project/Copy.tsx | 204 +++++++++++ .../Modals/Settings/Project/index.tsx | 340 +++++------------- apps/studio/src/lib/projects/copy.ts | 4 - apps/studio/src/locales/en/translation.json | 5 +- apps/studio/src/locales/ja/translation.json | 5 +- apps/studio/src/locales/ko/translation.json | 5 +- apps/studio/src/locales/zh/translation.json | 5 +- 7 files changed, 299 insertions(+), 269 deletions(-) create mode 100644 apps/studio/src/components/Modals/Settings/Project/Copy.tsx diff --git a/apps/studio/src/components/Modals/Settings/Project/Copy.tsx b/apps/studio/src/components/Modals/Settings/Project/Copy.tsx new file mode 100644 index 0000000000..4f44fc31ef --- /dev/null +++ b/apps/studio/src/components/Modals/Settings/Project/Copy.tsx @@ -0,0 +1,204 @@ +import { useProjectsManager } from '@/components/Context'; +import { invokeMainChannel } from '@/lib/utils'; +import { Button } from '@onlook/ui/button'; +import { Icons } from '@onlook/ui/icons/index'; +import { Input } from '@onlook/ui/input'; +import { MainChannels } from '@onlook/models/constants'; +import { observer } from 'mobx-react-lite'; +import { useMemo, useState } from 'react'; +import { toast } from '@onlook/ui/use-toast'; +import { t } from 'i18next'; +import { + AlertDialog, + AlertDialogContent, + AlertDialogDescription, + AlertDialogFooter, + AlertDialogHeader, + AlertDialogTitle, +} from '@onlook/ui/alert-dialog'; +import { RunState } from '@onlook/models'; +import { Progress } from '@onlook/ui/progress'; +import { Checkbox } from '@onlook/ui/checkbox'; +import { Label } from '@onlook/ui/label'; + +const Copy = observer(() => { + const projectsManager = useProjectsManager(); + const project = projectsManager.project; + const folderPath = project?.folderPath || ''; + const state = projectsManager.copy.copyStage; + const isTerminalRunning = projectsManager.runner?.state === RunState.RUNNING; + const [showWarningModal, setWarningModal] = useState(false); + const [updatedPath, setUpdatedPath] = useState(''); + const [isLoading, setIsLoading] = useState(false); + const [createCopy, setCreateCopy] = useState(false); + + const loadingStatus: { status: string; message: string } = useMemo(() => { + switch (state) { + case 'Starting...': { + return { + status: t('projects.copy.loadingModal.status.starting'), + message: t('projects.copy.loadingModal.message.starting'), + }; + } + case 'Copying...': { + return { + status: t('projects.copy.loadingModal.status.copying'), + message: t('projects.copy.loadingModal.message.copying'), + }; + } + case 'Complete': { + return { + status: t('projects.copy.loadingModal.status.complete'), + message: t('projects.copy.loadingModal.message.complete'), + }; + } + case 'Error': { + return { + status: t('projects.copy.loadingModal.status.error'), + message: t('projects.copy.loadingModal.message.error'), + }; + } + default: { + return { + status: t('projects.copy.loadingModal.status.copying'), + message: t('projects.copy.loadingModal.message.copying'), + }; + } + } + }, [state]); + + const progress = useMemo(() => { + switch (state) { + case 'Starting...': { + return 30; + } + case 'Copying...': { + return 60; + } + case 'Complete': { + return 100; + } + case 'Error': { + return 0; + } + } + }, [state]); + + const handleUpdatePath = async () => { + const path = (await invokeMainChannel(MainChannels.PICK_COMPONENTS_DIRECTORY)) as + | string + | null; + + if (!path || folderPath === path) { + console.error('No path selected'); + return; + } + + setUpdatedPath(path); + setWarningModal(true); + }; + + const cancelMoveFolder = () => { + setUpdatedPath(''); + setWarningModal(false); + }; + + const confirmMoveFolder = async () => { + try { + setWarningModal(false); + if (createCopy) { + setIsLoading(true); + await projectsManager.copy.createCopy(updatedPath); + } + projectsManager.updatePartialProject({ + folderPath: updatedPath, + }); + toast({ + title: t('projects.copy.toasts.success.title'), + description: t('projects.copy.toasts.success.description'), + variant: 'warning', + }); + } catch (error) { + toast({ + title: t('projects.copy.toasts.error.title'), + description: t('projects.copy.toasts.error.description'), + variant: 'destructive', + }); + console.error(error); + } + }; + + return ( + <> +
+

Path

+
+ + +
+
+ + + + {t('projects.copy.warningModal.title')} + + {isTerminalRunning + ? t('projects.copy.warningModal.instanceRunning') + : t('projects.copy.warningModal.instanceNotRunning')} + + +
+ setCreateCopy(checked as boolean)} + /> + +
+ + + + +
+
+ + + + + {t('projects.copy.loadingModal.title')} + +

+ {loadingStatus.message} +

+
+
+ + {/*
*/} + +

{loadingStatus.status}

+
+
+ + + +
+
+ + ); +}); + +export default Copy; diff --git a/apps/studio/src/components/Modals/Settings/Project/index.tsx b/apps/studio/src/components/Modals/Settings/Project/index.tsx index 16a5778ccc..e825a3f2ac 100644 --- a/apps/studio/src/components/Modals/Settings/Project/index.tsx +++ b/apps/studio/src/components/Modals/Settings/Project/index.tsx @@ -1,26 +1,12 @@ import { useProjectsManager } from '@/components/Context'; -import { invokeMainChannel } from '@/lib/utils'; -import { RunState } from '@onlook/models'; import { DefaultSettings, MainChannels } from '@onlook/models/constants'; -import { Button } from '@onlook/ui/button'; -import { Icons } from '@onlook/ui/icons'; import { Input } from '@onlook/ui/input'; import { Separator } from '@onlook/ui/separator'; import { observer } from 'mobx-react-lite'; import { ReinstallButton } from './ReinstallButon'; -import { useEffect, useMemo, useState } from 'react'; -import { - AlertDialog, - AlertDialogContent, - AlertDialogDescription, - AlertDialogFooter, - AlertDialogHeader, - AlertDialogTitle, -} from '@onlook/ui/alert-dialog'; +import { useEffect } from 'react'; -import { toast } from '@onlook/ui/use-toast'; -import { Progress } from '@onlook/ui/progress'; -import { t } from 'i18next'; +import Copy from './Copy'; const ProjectTab = observer(() => { const projectsManager = useProjectsManager(); @@ -29,15 +15,8 @@ const ProjectTab = observer(() => { const installCommand = project?.commands?.install || DefaultSettings.COMMANDS.install; const runCommand = project?.commands?.run || DefaultSettings.COMMANDS.run; const buildCommand = project?.commands?.build || DefaultSettings.COMMANDS.build; - const folderPath = project?.folderPath || ''; const name = project?.name || ''; const url = project?.url || ''; - const state = projectsManager.copy.copyStage; - const isTerminalRunning = projectsManager.runner?.state === RunState.RUNNING; - - const [showWarningModal, setWarningModal] = useState(false); - const [updatedPath, setUpdatedPath] = useState(''); - const [isLoading, setIsLoading] = useState(false); useEffect(() => { return () => { @@ -45,97 +24,6 @@ const ProjectTab = observer(() => { }; }, []); - const loadingStatus: { status: string; message: string } = useMemo(() => { - switch (state) { - case 'Starting...': { - return { - status: t('projects.copy.loadingModal.status.starting'), - message: t('projects.copy.loadingModal.message.starting'), - }; - } - case 'Copying...': { - return { - status: t('projects.copy.loadingModal.status.copying'), - message: t('projects.copy.loadingModal.message.copying'), - }; - } - case 'Complete': { - return { - status: t('projects.copy.loadingModal.status.complete'), - message: t('projects.copy.loadingModal.message.complete'), - }; - } - case 'Error': { - return { - status: t('projects.copy.loadingModal.status.error'), - message: t('projects.copy.loadingModal.message.error'), - }; - } - default: { - return { - status: t('projects.copy.loadingModal.status.copying'), - message: t('projects.copy.loadingModal.message.copying'), - }; - } - } - }, [state]); - - const progress = useMemo(() => { - switch (state) { - case 'Starting...': { - return 30; - } - case 'Copying...': { - return 60; - } - case 'Complete': { - return 100; - } - case 'Error': { - return 0; - } - } - }, [state]); - - const handleUpdatePath = async () => { - const path = (await invokeMainChannel(MainChannels.PICK_COMPONENTS_DIRECTORY)) as - | string - | null; - - if (!path || folderPath === path) { - console.error('No path selected'); - return; - } - - setUpdatedPath(path); - setWarningModal(true); - }; - - const cancelMoveFolder = () => { - setUpdatedPath(''); - setWarningModal(false); - }; - - const confirmMoveFolder = async () => { - try { - setWarningModal(false); - setIsLoading(true); - await projectsManager.copy.createCopy(updatedPath); - toast({ - title: t('projects.copy.toasts.success.title'), - description: t('projects.copy.toasts.success.description'), - variant: 'warning', - }); - } catch (error) { - toast({ - title: t('projects.copy.toasts.error.title'), - description: t('projects.copy.toasts.error.description'), - variant: 'destructive', - }); - console.error(error); - } - }; - const handleUpdateUrl = (url: string) => { projectsManager.updatePartialProject({ url, @@ -149,169 +37,107 @@ const ProjectTab = observer(() => { }; return ( - <> -
-
-

Metadata

+
+
+

Metadata

+
+
+

Name

+ + projectsManager.updatePartialProject({ + name: e.target.value, + }) + } + className="w-2/3" + /> +
+
+

URL

+ handleUpdateUrl(e.target.value)} + className="w-2/3" + /> +
+ +
+ + + +
+
+

Commands

+

+ {"Only update these if you know what you're doing!"} +

+
-

Name

+

Install

projectsManager.updatePartialProject({ - name: e.target.value, + commands: { + ...project?.commands, + install: e.target.value, + }, }) } - className="w-2/3" />
-

URL

+

Run

handleUpdateUrl(e.target.value)} + id="run" + value={runCommand} className="w-2/3" + onChange={(e) => + projectsManager.updatePartialProject({ + commands: { + ...project?.commands, + run: e.target.value, + }, + }) + } />
-

Path

-
- - -
-
-
- - - -
-
-

Commands

-

- {"Only update these if you know what you're doing!"} -

-
-
-
-

Install

- - projectsManager.updatePartialProject({ - commands: { - ...project?.commands, - install: e.target.value, - }, - }) - } - /> -
-
-

Run

- - projectsManager.updatePartialProject({ - commands: { - ...project?.commands, - run: e.target.value, - }, - }) - } - /> -
-
-

Build

- - projectsManager.updatePartialProject({ - commands: { - ...project?.commands, - build: e.target.value, - }, - }) - } - className="w-2/3" - /> -
+

Build

+ + projectsManager.updatePartialProject({ + commands: { + ...project?.commands, + build: e.target.value, + }, + }) + } + className="w-2/3" + />
- -
-
-

Reinstall Dependencies

-

- For when project failed to install dependencies -

-
- +
+ +
+
+

Reinstall Dependencies

+

+ For when project failed to install dependencies +

+
- - - - {t('projects.copy.warningModal.title')} - - {isTerminalRunning - ? t('projects.copy.warningModal.instanceRunning') - : t('projects.copy.warningModal.instanceNotRunning')} - - - - - - - - - - - - - {t('projects.copy.loadingModal.title')} - -

- {loadingStatus.message} -

-
-
- - {/*
*/} - -

{loadingStatus.status}

-
-
- - - -
-
- +
); }); diff --git a/apps/studio/src/lib/projects/copy.ts b/apps/studio/src/lib/projects/copy.ts index 14b2492550..814e9515da 100644 --- a/apps/studio/src/lib/projects/copy.ts +++ b/apps/studio/src/lib/projects/copy.ts @@ -33,10 +33,6 @@ export class CopyManager { currentPath, updatedPath, }); - - this.projectsManager.updatePartialProject({ - folderPath: updatedPath, - }); } catch (error) { console.error(error); throw error; diff --git a/apps/studio/src/locales/en/translation.json b/apps/studio/src/locales/en/translation.json index 185d4a9a01..cf3bb0130e 100644 --- a/apps/studio/src/locales/en/translation.json +++ b/apps/studio/src/locales/en/translation.json @@ -27,8 +27,9 @@ "copy": { "warningModal": { "title": "Move Folder", - "instanceRunning": "Your app is currently running. Confirming will stop the running instance. Do you want to continue?", - "instanceNotRunning": "Your application will be copied to the selected location. Are you sure?", + "instanceRunning": "Your app is currently running. Confirming will stop the running instance before setting path to selected location. Do you want to continue?", + "instanceNotRunning": "Path will be set to the selected location. Are you sure?", + "createCopy": "Create a copy and switch to new path", "cancel": "Cancel", "confirm": "Confirm" }, diff --git a/apps/studio/src/locales/ja/translation.json b/apps/studio/src/locales/ja/translation.json index df926dcc48..98fbf06c81 100644 --- a/apps/studio/src/locales/ja/translation.json +++ b/apps/studio/src/locales/ja/translation.json @@ -222,8 +222,9 @@ "copy": { "warningModal": { "title": "フォルダーの移動", - "instanceRunning": "アプリケーションが現在実行中です。確認すると実行中のインスタンスが停止されます。続行しますか?", - "instanceNotRunning": "アプリケーションが選択した場所にコピーされます。本当に続行しますか?", + "instanceRunning": "アプリケーションが現在実行中です。確認すると、選択した場所にパスを設定する前に実行中のインスタンスが停止されます。続行しますか?", + "instanceNotRunning": "パスは選択した場所に設定されます。よろしいですか?", + "createCopy": "コピーを作成して新しいパスに切り替える", "cancel": "キャンセル", "confirm": "確認" }, diff --git a/apps/studio/src/locales/ko/translation.json b/apps/studio/src/locales/ko/translation.json index 6e55b519c7..ca496aad3e 100644 --- a/apps/studio/src/locales/ko/translation.json +++ b/apps/studio/src/locales/ko/translation.json @@ -27,8 +27,9 @@ "copy": { "warningModal": { "title": "폴더 이동", - "instanceRunning": "애플리케이션이 현재 실행 중입니다. 확인하면 실행 중인 인스턴스가 중지됩니다. 계속하시겠습니까?", - "instanceNotRunning": "애플리케이션이 선택한 위치에 복사됩니다. 계속하시겠습니까?", + "instanceRunning": "앱이 현재 실행 중입니다. 확인하면 선택한 위치로 경로를 설정하기 전에 실행 중인 인스턴스가 중지됩니다. 계속하시겠습니까?", + "instanceNotRunning": "경로가 선택한 위치로 설정됩니다. 계속하시겠습니까?", + "createCopy": "복사본을 만들고 새 경로로 전환", "cancel": "취소", "confirm": "확인" }, diff --git a/apps/studio/src/locales/zh/translation.json b/apps/studio/src/locales/zh/translation.json index 4f77673642..7725ff9da7 100644 --- a/apps/studio/src/locales/zh/translation.json +++ b/apps/studio/src/locales/zh/translation.json @@ -27,8 +27,9 @@ "copy": { "warningModal": { "title": "移动文件夹", - "instanceRunning": "您的应用程序正在运行。确认将停止当前运行的实例。您确定要继续吗?", - "instanceNotRunning": "您的应用程序将被复制到所选位置。您确定要继续吗?", + "instanceRunning": "您的应用当前正在运行。确认后将停止正在运行的实例,并将路径设置为所选位置。是否继续?", + "instanceNotRunning": "路径将被设置为所选位置。您确定吗?", + "createCopy": "복사본을 만들고 새 경로로 전환", "cancel": "取消", "confirm": "确认" }, From cf48137628bea4cd267137a101e665a0a4bbde8b Mon Sep 17 00:00:00 2001 From: Pranav Tartey Date: Sun, 27 Apr 2025 22:29:38 +0530 Subject: [PATCH 11/11] fix: running app check for switching path instead of copying --- apps/studio/src/components/Modals/Settings/Project/Copy.tsx | 5 +++++ apps/studio/src/lib/projects/copy.ts | 4 ---- 2 files changed, 5 insertions(+), 4 deletions(-) diff --git a/apps/studio/src/components/Modals/Settings/Project/Copy.tsx b/apps/studio/src/components/Modals/Settings/Project/Copy.tsx index 4f44fc31ef..0567c95c15 100644 --- a/apps/studio/src/components/Modals/Settings/Project/Copy.tsx +++ b/apps/studio/src/components/Modals/Settings/Project/Copy.tsx @@ -106,6 +106,11 @@ const Copy = observer(() => { const confirmMoveFolder = async () => { try { setWarningModal(false); + + if (projectsManager.runner?.state === RunState.RUNNING) { + await projectsManager.runner?.stop(); + } + if (createCopy) { setIsLoading(true); await projectsManager.copy.createCopy(updatedPath); diff --git a/apps/studio/src/lib/projects/copy.ts b/apps/studio/src/lib/projects/copy.ts index 814e9515da..c31e7d2a6f 100644 --- a/apps/studio/src/lib/projects/copy.ts +++ b/apps/studio/src/lib/projects/copy.ts @@ -25,10 +25,6 @@ export class CopyManager { throw Error('Valid current path not found'); } - if (this.projectsManager.runner?.state === RunState.RUNNING) { - await this.projectsManager.runner?.stop(); - } - await invokeMainChannel(MainChannels.UPDATE_PROJECT_PATH, { currentPath, updatedPath,