From 66ac303d44785f6c2fbfac6d553f8a9aae0ce88d Mon Sep 17 00:00:00 2001 From: zhangjiaqun Date: Wed, 6 Aug 2025 10:07:43 +0800 Subject: [PATCH 1/3] support i18n for cn-ZH and en-US --- frontend/gatsby-browser.js | 1 + frontend/package.json | 4 + frontend/src/assets/light2_bg.png | Bin 0 -> 238993 bytes .../src/components/common/filerenderer.tsx | 21 +- frontend/src/components/contentheader.tsx | 18 +- .../features/Plans/LearnPlanButton.tsx | 28 +- .../components/features/Plans/PlanCard.tsx | 34 +- .../components/features/Plans/PlanList.tsx | 60 +- frontend/src/components/layout.tsx | 5 +- .../src/components/settings/SettingsModal.tsx | 61 +- .../GeneralSettings/AllowedWebsitesList.tsx | 14 +- .../tabs/GeneralSettings/GeneralSettings.tsx | 103 +- .../tabs/advancedSetings/AdvancedSettings.tsx | 46 +- .../tabs/agentSettings/AgentSettingsTab.tsx | 21 +- .../mcpAgentsSettings/MCPAgentsSettings.tsx | 7 +- frontend/src/components/signin.tsx | 10 +- .../views/chat/DetailViewer/FeedbackForm.tsx | 10 +- .../chat/DetailViewer/SecurityBanner.tsx | 6 +- .../views/chat/DetailViewer/browser_modal.tsx | 6 +- .../views/chat/approval_buttons.tsx | 10 +- frontend/src/components/views/chat/chat.tsx | 65 +- .../src/components/views/chat/chatinput.tsx | 60 +- frontend/src/components/views/chat/plan.tsx | 51 +- .../src/components/views/chat/sampletasks.tsx | 26 +- .../components/views/magentic_ui_manager.tsx | 4 +- frontend/src/components/views/manager.tsx | 16 +- .../src/components/views/session_editor.tsx | 10 +- frontend/src/components/views/sidebar.tsx | 38 +- frontend/src/components/views/statusicon.tsx | 22 +- frontend/src/hooks/provider.tsx | 25 +- frontend/src/i18n/index.ts | 36 + frontend/src/i18n/locales/en-US.json | 364 ++ frontend/src/i18n/locales/zh-CN.json | 364 ++ frontend/src/pages/404.tsx | 9 +- frontend/yarn.lock | 3497 +++++++++-------- src/magentic_ui/backend/i18n/__init__.py | 10 + src/magentic_ui/backend/i18n/messages.py | 285 ++ src/magentic_ui/backend/i18n/translations.py | 213 + .../backend/web/managers/connection.py | 51 +- 39 files changed, 3616 insertions(+), 1995 deletions(-) create mode 100644 frontend/src/assets/light2_bg.png create mode 100644 frontend/src/i18n/index.ts create mode 100644 frontend/src/i18n/locales/en-US.json create mode 100644 frontend/src/i18n/locales/zh-CN.json create mode 100644 src/magentic_ui/backend/i18n/__init__.py create mode 100644 src/magentic_ui/backend/i18n/messages.py create mode 100644 src/magentic_ui/backend/i18n/translations.py diff --git a/frontend/gatsby-browser.js b/frontend/gatsby-browser.js index b28e798f..df489959 100644 --- a/frontend/gatsby-browser.js +++ b/frontend/gatsby-browser.js @@ -1,5 +1,6 @@ import "antd/dist/reset.css"; import "./src/styles/global.css"; +import "./src/i18n"; import AuthProvider from "./src/hooks/provider"; diff --git a/frontend/package.json b/frontend/package.json index a45fb11c..258f3fd9 100644 --- a/frontend/package.json +++ b/frontend/package.json @@ -37,12 +37,15 @@ "gatsby-plugin-sitemap": "^6.14.0", "gatsby-source-filesystem": "^5.14.0", "gatsby-transformer-sharp": "^5.14.0", + "i18next": "^25.3.2", + "i18next-browser-languagedetector": "^8.2.0", "install": "^0.13.0", "js-yaml": "^4.1.0", "lucide-react": "^0.460.0", "postcss": "^8.4.49", "react": "^18.2.0", "react-dom": "^18.2.0", + "react-i18next": "^15.6.0", "react-markdown": "^9.0.1", "react-syntax-highlighter": "^15.6.1", "react-vnc": "^3.0.8", @@ -54,6 +57,7 @@ "zustand": "^5.0.1" }, "devDependencies": { + "@types/js-yaml": "^4.0.9", "@types/lodash.debounce": "^4.0.9", "@types/node": "^22.9.0", "@types/react": "^18.2.55", diff --git a/frontend/src/assets/light2_bg.png b/frontend/src/assets/light2_bg.png new file mode 100644 index 0000000000000000000000000000000000000000..e94bdae424df6ee6c2d28f705f0ab9276b16859a GIT binary patch literal 238993 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 QcidgHVAEU%C1 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 HN@xNA{``sZ literal 0 HcmV?d00001 diff --git a/frontend/src/components/common/filerenderer.tsx b/frontend/src/components/common/filerenderer.tsx index 8a9fff6a..8fa37d65 100644 --- a/frontend/src/components/common/filerenderer.tsx +++ b/frontend/src/components/common/filerenderer.tsx @@ -8,6 +8,7 @@ import { X, Download, } from "lucide-react"; +import { useTranslation } from "react-i18next"; import MarkdownRenderer from "./markdownrender"; import { ClickableImage } from "../views/atoms"; import { AgentMessageConfig } from "../types/datamodel"; @@ -98,6 +99,7 @@ const FileModal: React.FC = ({ file, content, }) => { + const { t } = useTranslation(); const [isFullScreen, setIsFullScreen] = useState(false); const modalRef = React.useRef(null); const [downloadUrl, setDownloadUrl] = useState(null); @@ -188,7 +190,7 @@ const FileModal: React.FC = ({ return (

-

Loading file content...

+

{t("fileRenderer.loadingFileContent")}

); } @@ -212,11 +214,11 @@ const FileModal: React.FC = ({
{isLoading ? (
-
-

Processing large file...

+
+

{t("fileRenderer.processingLargeFile")}

) : processedContent === null ? ( -
No content available
+
{t("fileRenderer.noContentAvailable")}
) : ( = ({ // For unknown file types, show a message return (
-

Unable to preview this file type.

-

Filename: {file.name}

+

{t("fileRenderer.unableToPreviewFileType")}

+

{t("fileRenderer.filename")}: {file.name}

); }; @@ -271,7 +273,7 @@ const FileModal: React.FC = ({ href={downloadUrl} download={file.name} className="p-1 rounded-full hover:bg-gray-200 text-black flex items-center justify-center" - title="Download file" + title={t("fileRenderer.downloadFile")} onClick={(e) => e.stopPropagation()} > @@ -287,7 +289,7 @@ const FileModal: React.FC = ({ @@ -367,6 +369,7 @@ ImageThumbnail.displayName = "ImageThumbnail"; // Add this new component for the download button const DownloadButton = memo<{ file: FileInfo }>(({ file }) => { + const { t } = useTranslation(); const handleDownload = (e: React.MouseEvent) => { e.stopPropagation(); // Prevent opening the modal @@ -388,7 +391,7 @@ const DownloadButton = memo<{ file: FileInfo }>(({ file }) => { diff --git a/frontend/src/components/contentheader.tsx b/frontend/src/components/contentheader.tsx index 61014215..9f2e3ca3 100644 --- a/frontend/src/components/contentheader.tsx +++ b/frontend/src/components/contentheader.tsx @@ -8,6 +8,7 @@ import SignInModal from "./signin"; import SettingsModal from "./settings/SettingsModal"; import logo from "../assets/logo.svg"; import { Button } from "./common/Button"; +import { useTranslation } from "react-i18next"; type ContentHeaderProps = { onMobileMenuToggle: () => void; @@ -26,14 +27,15 @@ const ContentHeader = ({ useConfigStore(); const [isEmailModalOpen, setIsEmailModalOpen] = React.useState(false); const [isSettingsOpen, setIsSettingsOpen] = React.useState(false); + const { t } = useTranslation(); return ( -
+
{/* Left side: Text and Sidebar Controls */}
{/* Sidebar Toggle */} - +
@@ -73,7 +75,7 @@ const ContentHeader = ({
{/* User Profile */} {user && ( - +
setIsEmailModalOpen(true)} @@ -95,14 +97,14 @@ const ContentHeader = ({ {/* Settings Button */}
- +
diff --git a/frontend/src/components/features/Plans/LearnPlanButton.tsx b/frontend/src/components/features/Plans/LearnPlanButton.tsx index 0f39a41f..22413198 100644 --- a/frontend/src/components/features/Plans/LearnPlanButton.tsx +++ b/frontend/src/components/features/Plans/LearnPlanButton.tsx @@ -1,5 +1,6 @@ import React, { useState, useContext } from "react"; import { message, Spin, Tooltip } from "antd"; +import { useTranslation } from "react-i18next"; import { appContext } from "../../../hooks/provider"; import { PlanAPI } from "../../views/api"; import { LightBulbIcon, CheckCircleIcon } from "@heroicons/react/24/outline"; @@ -20,6 +21,7 @@ export const LearnPlanButton: React.FC = ({ const [isLearning, setIsLearning] = useState(false); const [isLearned, setIsLearned] = useState(false); const [error, setError] = useState(null); + const { t } = useTranslation(); const { user, darkMode } = useContext(appContext); const planAPI = new PlanAPI(); @@ -38,7 +40,7 @@ export const LearnPlanButton: React.FC = ({ const handleLearnPlan = async () => { if (!sessionId || !effectiveUserId) { - message.error("Missing session or user information"); + message.error(t("learnPlanButton.missingSessionOrUser")); return; } @@ -46,7 +48,7 @@ export const LearnPlanButton: React.FC = ({ setIsLearning(true); setError(null); message.loading({ - content: "Creating plan from conversation...", + content: t("learnPlanButton.creatingPlan"), key: "learnPlan", }); @@ -54,7 +56,7 @@ export const LearnPlanButton: React.FC = ({ if (response && response.status) { message.success({ - content: "Plan created successfully!", + content: t("learnPlanButton.planCreatedSuccessfully"), key: "learnPlan", duration: 2, }); @@ -71,14 +73,14 @@ export const LearnPlanButton: React.FC = ({ learnedPlans[`${sessionId}-${messageId}`] = true; localStorage.setItem("learned_plans", JSON.stringify(learnedPlans)); } else { - throw new Error(response?.message || "Failed to create plan"); + throw new Error(response?.message || t("learnPlanButton.failedToCreatePlan")); } } catch (error) { console.error("Error creating plan:", error); - setError(error instanceof Error ? error.message : "Unknown error"); + setError(error instanceof Error ? error.message : t("learnPlanButton.unknownError")); message.error({ - content: `Failed to create plan: ${ - error instanceof Error ? error.message : "Unknown error" + content: `${t("learnPlanButton.failedToCreatePlan")}: ${ + error instanceof Error ? error.message : t("learnPlanButton.unknownError") }`, key: "learnPlan", }); @@ -90,7 +92,7 @@ export const LearnPlanButton: React.FC = ({ // If already learned, show success message if (isLearned) { return ( - +
= ({ }`} > - Plan Learned + {t("learnPlanButton.planLearned")}
); @@ -108,7 +110,7 @@ export const LearnPlanButton: React.FC = ({ // If learning, show spinner if (isLearning) { return ( - + ); @@ -126,7 +128,7 @@ export const LearnPlanButton: React.FC = ({ // Default state - ready to learn return ( - + ); diff --git a/frontend/src/components/features/Plans/PlanCard.tsx b/frontend/src/components/features/Plans/PlanCard.tsx index 02eed528..68177dd7 100644 --- a/frontend/src/components/features/Plans/PlanCard.tsx +++ b/frontend/src/components/features/Plans/PlanCard.tsx @@ -5,6 +5,7 @@ import { planAPI } from "../../views/api"; import PlanView from "../../views/chat/plan"; import { getRelativeTimeString } from "../../views/atoms"; import { IPlan, IPlanStep } from "../../types/plan"; +import { useTranslation } from "react-i18next"; interface PlanCardProps { plan: IPlan; onUsePlan?: (plan: IPlan) => void; @@ -24,6 +25,7 @@ const PlanCard: React.FC = ({ isNew = false, onEditComplete, }) => { + const { t } = useTranslation(); const [isHovering, setIsHovering] = useState(false); const [isModalOpen, setIsModalOpen] = useState(isNew); const [localSteps, setLocalSteps] = useState(plan.steps || []); @@ -43,7 +45,7 @@ const PlanCard: React.FC = ({ return; } - if (window.confirm(`Are you sure you want to delete "${plan.task}"?`)) { + if (window.confirm(t("planCard.confirmDelete", { task: plan.task }))) { await planAPI.deletePlan(plan.id, plan.user_id); if (onDeletePlan) { @@ -162,26 +164,26 @@ const PlanCard: React.FC = ({
- {plan.task || "Untitled Plan"} + {plan.task || t("planCard.untitledPlan")} {isHovering && (
- + - + @@ -195,7 +197,7 @@ const PlanCard: React.FC = ({ onMouseLeave={() => setIsHovering(false)} actions={[
- +
,
- +
, @@ -225,7 +227,7 @@ const PlanCard: React.FC = ({
-

{steps.length} steps

+

{t("planCard.stepsCount", { count: steps.length })}

@@ -234,12 +236,12 @@ const PlanCard: React.FC = ({ key={idx} className="text-xs border-l-2 border-gray-200 pl-2" > - {step.title || `Step ${idx + 1}`} + {step.title || t("planCard.stepNumber", { number: idx + 1 })}
))} {steps.length > 3 && (
- + {steps.length - 3} more steps + {t("planCard.moreSteps", { count: steps.length - 3 })}
)}
@@ -269,14 +271,14 @@ const PlanCard: React.FC = ({
setLocalTask(e.target.value)} onPressEnter={() => handleSavePlan(localSteps, false)} - placeholder="Enter plan title" + placeholder={t("planCard.enterPlanTitle")} />
= ({ const [isDragging, setIsDragging] = useState(false); const [searchTerm, setSearchTerm] = useState(""); const [newPlanId, setNewPlanId] = useState(null); + const { t } = useTranslation(); const userId = user?.email || ""; @@ -78,7 +80,7 @@ const PlanList: React.FC = ({ } catch (err) { console.error("Error fetching plans:", err); setError( - `An error occurred: ${err instanceof Error ? err.message : String(err)}` + `${t('plans.errorOccurred')}: ${err instanceof Error ? err.message : String(err)}` ); } finally { setLoading(false); @@ -90,13 +92,13 @@ const PlanList: React.FC = ({ fetchPlans(); } else { setLoading(false); - setError("Please sign in to view your plans"); + setError(t('plans.pleaseSignIn')); } }, [user?.email]); const handleDeletePlan = (planId: number) => { setPlans((prevPlans) => prevPlans.filter((plan) => plan.id !== planId)); - message.success("Plan deleted successfully"); + message.success(t('plans.planDeletedSuccessfully')); }; const handlePlanSaved = (updatedPlan: IPlan) => { @@ -110,20 +112,20 @@ const PlanList: React.FC = ({ const handleUsePlan = async (plan: IPlan) => { try { message.loading({ - content: "Creating new session from plan...", + content: t('plans.creatingNewSession'), key: "sessionCreation", }); const sessionResponse = await sessionAPI.createSession( { - name: `Plan: ${plan.task}`, + name: `${t('plans.planPrefix')}: ${plan.task}`, team_id: undefined, // TODO: remove team_id if not needed }, userId ); if (onCreateSessionFromPlan && sessionResponse.id) { - onCreateSessionFromPlan(sessionResponse.id, `Plan: ${plan.task}`, plan); + onCreateSessionFromPlan(sessionResponse.id, `${t('plans.planPrefix')}: ${plan.task}`, plan); } if (onTabChange) { @@ -132,7 +134,7 @@ const PlanList: React.FC = ({ } catch (error) { console.error("Error using plan:", error); message.error({ - content: "Error creating session", + content: t('plans.errorCreatingSession'), key: "sessionCreation", }); } @@ -143,21 +145,21 @@ const PlanList: React.FC = ({ setIsCreatingPlan(true); const newPlan = normalizePlanData( - { task: "New Plan", steps: [] }, + { task: t('plans.newPlan'), steps: [] }, userId ); const response = await planAPI.createPlan(newPlan, userId); if (response && response.id) { - message.success("New plan created successfully"); + message.success(t('plans.newPlanCreatedSuccessfully')); setNewPlanId(response.id); // Store the new plan ID fetchPlans(); // Refresh the list to include the new plan } } catch (err) { console.error("Error creating new plan:", err); message.error( - `Failed to create plan: ${ + `${t('plans.failedToCreatePlan')}: ${ err instanceof Error ? err.message : String(err) }` ); @@ -175,8 +177,7 @@ const PlanList: React.FC = ({ planData = JSON.parse(fileContent); } catch (parseError) { message.error({ - content: - "Invalid JSON file format. Please check your file and try again.", + content: t('plans.invalidJsonFormat'), duration: 5, }); return; @@ -184,25 +185,24 @@ const PlanList: React.FC = ({ if (!planData || typeof planData !== "object") { message.error({ - content: - "Invalid plan format. The file does not contain a valid plan structure.", + content: t('plans.invalidPlanFormat'), duration: 5, }); return; } - const newPlan = normalizePlanData(planData, userId, "Imported Plan"); + const newPlan = normalizePlanData(planData, userId, t('plans.importedPlan')); const response = await planAPI.createPlan(newPlan, userId); if (response && response.id) { - message.success("Plan imported successfully"); + message.success(t('plans.planImportedSuccessfully')); fetchPlans(); // Refresh to get the new plan with its ID } } catch (err) { console.error("Error importing plan:", err); message.error({ - content: `Failed to import plan: ${ + content: `${t('plans.failedToImportPlan')}: ${ err instanceof Error ? err.message : String(err) }`, duration: 5, @@ -241,7 +241,7 @@ const PlanList: React.FC = ({ if (file.type === "application/json" || file.name.endsWith(".json")) { handleImportPlan(file); } else { - message.error("Please upload a JSON file"); + message.error(t('plans.pleaseUploadJsonFile')); } } }; @@ -254,7 +254,7 @@ const PlanList: React.FC = ({ if (loading) { return (
- +
); } @@ -267,7 +267,7 @@ const PlanList: React.FC = ({ className="mt-4 px-4 py-2 bg-primary text-white rounded hover:bg-primary/80" onClick={() => window.location.reload()} > - Retry + {t('common.retry')}
); @@ -303,33 +303,33 @@ const PlanList: React.FC = ({ }} >
- Drop your plan file here to import + {t('plans.dropPlanFileHere')}
)}
-

Your Saved Plans

+

{t('plans.yourSavedPlans')}

- + - + } value={searchTerm} onChange={(e) => setSearchTerm(e.target.value)} @@ -365,18 +365,18 @@ const PlanList: React.FC = ({ -

No plans found matching "{searchTerm}"

+

{t('plans.noPlansFoundMatching', { searchTerm })}

) : (
-

No plans yet. Create one or import an existing plan.

+

{t('plans.noPlansYet')}

)}
diff --git a/frontend/src/components/layout.tsx b/frontend/src/components/layout.tsx index 6b581094..6c3be0b1 100644 --- a/frontend/src/components/layout.tsx +++ b/frontend/src/components/layout.tsx @@ -4,6 +4,7 @@ import { useConfigStore } from "../hooks/store"; import "antd/dist/reset.css"; import { ConfigProvider, theme } from "antd"; import { SessionManager } from "./views/manager"; +import { useTranslation } from "react-i18next"; const classNames = (...classes: (string | undefined | boolean)[]) => { return classes.filter(Boolean).join(" "); @@ -33,6 +34,7 @@ const MagenticUILayout = ({ const { sidebar } = useConfigStore(); const { isExpanded } = sidebar; const [isMobileMenuOpen, setIsMobileMenuOpen] = React.useState(false); + const { t } = useTranslation(); // Mimic sign-in: if no user or user.email, set default user and localStorage React.useEffect(() => { @@ -84,8 +86,7 @@ const MagenticUILayout = ({
- Magentic-UI can make mistakes. Please monitor its work and intervene if - necessary. + {t('messages.mistakes')}
diff --git a/frontend/src/components/settings/SettingsModal.tsx b/frontend/src/components/settings/SettingsModal.tsx index 5abfa711..b1d5ea54 100644 --- a/frontend/src/components/settings/SettingsModal.tsx +++ b/frontend/src/components/settings/SettingsModal.tsx @@ -1,4 +1,5 @@ import React, { useCallback } from "react"; +import { useTranslation } from "react-i18next"; import { appContext } from "../../hooks/provider"; import SignInModal from "../signin"; import { useSettingsStore } from "../store"; @@ -27,6 +28,7 @@ const SettingsModal: React.FC = ({ isOpen, onClose }) => { const { darkMode, setDarkMode, user } = React.useContext(appContext); const [isEmailModalOpen, setIsEmailModalOpen] = React.useState(false); const [hasChanges, setHasChanges] = React.useState(false); + const { t } = useTranslation(); const [isLoading, setIsLoading] = React.useState(false); const [originalConfig, setOriginalConfig] = React.useState(null); @@ -51,7 +53,7 @@ const SettingsModal: React.FC = ({ isOpen, onClose }) => { setOriginalConfig(mergedConfig); } catch (error) { message.error( - "Failed to load settings. Using defaults. Error: " + error + t('settings.failedToLoadSettings') + ", Error: " + error ); resetToDefaults(); setOriginalConfig(null); @@ -90,9 +92,9 @@ const SettingsModal: React.FC = ({ isOpen, onClose }) => { if (hasActualChanges && user?.email) { try { await settingsAPI.updateSettings(user.email, config); - message.success("Updated settings!"); + message.success(t('settings.updatedSettings')); } catch (error) { - message.error("Failed to save settings"); + message.error(t('settings.failedToSaveSettings')); console.error("Failed to save settings:", error); return; } @@ -102,44 +104,44 @@ const SettingsModal: React.FC = ({ isOpen, onClose }) => { }, [config, originalConfig, user?.email, onClose]); const tabItems = { - general: { - label: "General", + "general": { + label: t('settings.general'), children: ( <> - General Settings - - {t('generalSettings.title')} + + ), }, - agents: { - label: "Agent Settings", + "agents": { + label: t('settings.agents'), children: ( <> - Agent Settings - - {t('agentSettings.title')} + + ), }, - advanced_config: { - label: "Advanced Settings", + "advanced_config": { + label: t('settings.advanced'), children: ( <> - Advanced Settings - - {t('advancedSettings.title')} + + ), @@ -162,13 +164,12 @@ const SettingsModal: React.FC = ({ isOpen, onClose }) => { onClick={handleResetDefaults} disabled={isLoading} > - Reset to Defaults + {t('settings.resetToDefaults')} {hasChanges && ( - - Warning: Settings changes will only apply when you create a new - session - + + {t('settings.settingsChangesWarning')} + )} , ]} diff --git a/frontend/src/components/settings/tabs/GeneralSettings/AllowedWebsitesList.tsx b/frontend/src/components/settings/tabs/GeneralSettings/AllowedWebsitesList.tsx index 4f1dd0a2..8686cc55 100644 --- a/frontend/src/components/settings/tabs/GeneralSettings/AllowedWebsitesList.tsx +++ b/frontend/src/components/settings/tabs/GeneralSettings/AllowedWebsitesList.tsx @@ -1,7 +1,7 @@ import React from "react"; -import { Input, Switch, Button, Flex, Tag, Tooltip } from "antd"; -import { InfoCircleOutlined } from "@ant-design/icons"; -import { Plus } from "lucide-react"; +import { Flex, Switch, Tooltip, Input, Button, List, Tag } from "antd"; +import { InfoCircleOutlined, PlusOutlined, DeleteOutlined } from "@ant-design/icons"; +import { useTranslation } from "react-i18next"; interface AllowedWebsitesListProps { config: any; @@ -36,12 +36,14 @@ const AllowedWebsitesList: React.FC = ({ handleUpdateConfig({ allowed_websites: updatedList }); }; + const { t } = useTranslation(); + return ( - Allowed Websites List - + {t('generalSettings.allowedWebsites')} + @@ -72,7 +74,7 @@ const AllowedWebsitesList: React.FC = ({ onPressEnter={addWebsite} // className="flex-1" /> - diff --git a/frontend/src/components/settings/tabs/GeneralSettings/GeneralSettings.tsx b/frontend/src/components/settings/tabs/GeneralSettings/GeneralSettings.tsx index c2a81bf8..5117bc21 100644 --- a/frontend/src/components/settings/tabs/GeneralSettings/GeneralSettings.tsx +++ b/frontend/src/components/settings/tabs/GeneralSettings/GeneralSettings.tsx @@ -1,6 +1,8 @@ import React from "react"; import { Divider, Tooltip, Select, Flex, Switch } from "antd"; -import { InfoCircleOutlined, MoonFilled, SunFilled } from "@ant-design/icons"; +import { InfoCircleOutlined, MoonFilled, SunFilled, StarFilled, GlobalOutlined } from "@ant-design/icons"; +import { useTranslation } from "react-i18next"; +import { appContext } from "../../../../hooks/provider"; import AllowedWebsitesList from "./AllowedWebsitesList"; interface GeneralSettingsProps { @@ -16,45 +18,78 @@ const GeneralSettings: React.FC = ({ setDarkMode, handleUpdateConfig, }) => { + const { t } = useTranslation(); + const { language, setLanguage } = React.useContext(appContext); + + const getLanguageIcon = () => { + return ; + }; + return ( {/* Dark Mode Toggle */} {darkMode === "dark" ? "Dark Mode" : "Light Mode"} - + + {t('language.language')} + handleUpdateConfig({ approval_policy: value })} + options={[ + { value: "never", label: t('generalSettings.approvalPolicyNever') }, + { value: "auto-conservative", label: t('generalSettings.approvalPolicyAutoConservative') }, + { value: "always", label: t('generalSettings.approvalPolicyAlways') }, + ]} + /> - = ({ } }} > - Apply Changes + {t('advancedSettings.applyChanges')} + {errors.length > 0 && ( + + {errors.map((err, idx) => ( +
{err}
+ ))} +
+ } + color="red" + placement="right" + > + + + + + + + + {t('advancedSettings.errorCount', { count: errors.length })} + + +
+ )}
= ({ config, handleUpdateConfig, }) => { + const { t } = useTranslation(); const [advanced, setAdvanced] = useState( (config as any).advanced_agent_settings ?? false ); @@ -62,7 +65,7 @@ const AgentSettingsTab: React.FC = ({ } // Otherwise, try to detect if all agents use the same model - const configs = config.model_client_configs; + const configs = config.model_client_configs as Record; if (configs) { const firstConfig = configs[Object.keys(MODEL_CLIENT_CONFIGS)[0]]; const allSame = Object.values(MODEL_CLIENT_CONFIGS).every(({ value }) => { @@ -111,7 +114,7 @@ const AgentSettingsTab: React.FC = ({ default_model: defaultModel, }); } - }, [defaultModel]); + }, [defaultModel, t]); // Fetch config info on component mount useEffect(() => { @@ -136,9 +139,11 @@ const AgentSettingsTab: React.FC = ({ }); }; - const header = advanced - ? "Set the LLM for each agent." - : "Set the LLM for all agents."; + const header = ( + advanced + ? t('agentSettings.setLlmForEachAgent') + : t('agentSettings.setLlmForAllAgents') + ); return ( @@ -187,9 +192,9 @@ const AgentSettingsTab: React.FC = ({ {header} - + - Advanced + {t('agentSettings.advanced')} @@ -228,7 +233,7 @@ const AgentSettingsTab: React.FC = ({ )} - + = ({ config, handleUpdateConfig, defaultModel, advanced }) => { const value = config?.mcp_agent_configs || []; + const { t } = useTranslation(); const handleAgentChange = (idx: number, updated: MCPAgentConfig) => { const updatedAgents = value.map((a, i) => (i === idx ? updated : a)); @@ -43,7 +44,7 @@ const MCPAgentsSettings: React.FC = ({ config, handleUpd return ( - Extend Magentic-UI's capabilities by adding custom agents that connect to local or remote Model Context Protocol (MCP) Servers! + {t('agentSettings.mcpAgentsDescription')} Any number of agents are supported, and each agent requires at least one MCP Server. diff --git a/frontend/src/components/signin.tsx b/frontend/src/components/signin.tsx index 2ef0c87c..d8703c4d 100644 --- a/frontend/src/components/signin.tsx +++ b/frontend/src/components/signin.tsx @@ -1,4 +1,5 @@ import { Modal, Input, message } from "antd"; +import { useTranslation } from "react-i18next"; import { setLocalStorage } from "./utils"; import { appContext } from "../hooks/provider"; import * as React from "react"; @@ -10,6 +11,7 @@ type SignInModalProps = { }; const SignInModal = ({ isVisible, onClose }: SignInModalProps) => { + const { t } = useTranslation(); const { user, setUser } = React.useContext(appContext); const [email, setEmail] = React.useState(user?.email || "default"); @@ -22,7 +24,7 @@ const SignInModal = ({ isVisible, onClose }: SignInModalProps) => { const handleSignIn = () => { const trimmedEmail = email.trim(); if (!trimmedEmail) { - message.error("Username cannot be empty"); + message.error(t("signIn.usernameCannotBeEmpty")); return; } setUser({ ...user, email: trimmedEmail, name: trimmedEmail }); @@ -39,12 +41,12 @@ const SignInModal = ({ isVisible, onClose }: SignInModalProps) => { onCancel={isAlreadySignedIn ? onClose : undefined} > - Enter a username.

A change of username will create a new profile. + {t("signIn.enterUsername")}

{t("signIn.changeUsernameWillCreateNewProfile")}
{ variant="primary" onClick={handleSignIn} > - Sign In + {t("signIn.signIn")}
diff --git a/frontend/src/components/views/chat/DetailViewer/FeedbackForm.tsx b/frontend/src/components/views/chat/DetailViewer/FeedbackForm.tsx index 7c6a1e24..e6d45993 100644 --- a/frontend/src/components/views/chat/DetailViewer/FeedbackForm.tsx +++ b/frontend/src/components/views/chat/DetailViewer/FeedbackForm.tsx @@ -1,6 +1,7 @@ -import React from "react"; -import { Input } from "antd"; +import React, { useState } from "react"; +import { Rate, Input, message } from "antd"; import { EyeOff } from "lucide-react"; +import { useTranslation } from "react-i18next"; import { Button } from "../../../../components/common/Button"; const { TextArea } = Input; @@ -16,6 +17,7 @@ const FeedbackForm: React.FC = ({ setUserFeedback, onSubmit, }) => { + const { t } = useTranslation(); return (
{/* This container controls the position */} @@ -28,7 +30,7 @@ const FeedbackForm: React.FC = ({

- Magentic-UI can't see what you do when you take control. + {t('security.cantSee')}

Please describe what you did when you are ready to hand back @@ -51,7 +53,7 @@ const FeedbackForm: React.FC = ({ onClick={onSubmit} className="font-medium shadow-md" > - Give control back to Magentic-UI + {t('security.giveControlBack')}

diff --git a/frontend/src/components/views/chat/DetailViewer/SecurityBanner.tsx b/frontend/src/components/views/chat/DetailViewer/SecurityBanner.tsx index 1cde2512..9f5358fe 100644 --- a/frontend/src/components/views/chat/DetailViewer/SecurityBanner.tsx +++ b/frontend/src/components/views/chat/DetailViewer/SecurityBanner.tsx @@ -1,5 +1,6 @@ import React from "react"; import { ShieldAlert } from "lucide-react"; +import { useTranslation } from "react-i18next"; interface SecurityBannerProps { className?: string; @@ -10,6 +11,7 @@ const SecurityBanner: React.FC = ({ className = "", style = {}, }) => { + const { t } = useTranslation(); return (
= ({ >

- Security Note: Magentic-UI cannot see what - you do when you take control. Be cautious about entering passwords or - sensitive information. + {t('security.securityNote')} {t('security.securityNoteText')}

); diff --git a/frontend/src/components/views/chat/DetailViewer/browser_modal.tsx b/frontend/src/components/views/chat/DetailViewer/browser_modal.tsx index 647420e4..5a57824f 100644 --- a/frontend/src/components/views/chat/DetailViewer/browser_modal.tsx +++ b/frontend/src/components/views/chat/DetailViewer/browser_modal.tsx @@ -3,12 +3,14 @@ import ReactDOM from "react-dom"; import { X } from "lucide-react"; import BrowserIframe from "./browser_iframe"; import { Button } from "antd"; +import { useTranslation } from "react-i18next"; interface BrowserModalProps { isOpen: boolean; onClose: () => void; novncPort?: string; title?: string; onPause?: () => void; + onTerminal?: () => void; runStatus?: string; onControlHandover?: () => void; isControlMode?: boolean; @@ -22,6 +24,7 @@ const BrowserModal: React.FC = (props) => { novncPort, title = "Browser View", onPause, + onTerminal, runStatus, onControlHandover, isControlMode = false, @@ -29,6 +32,7 @@ const BrowserModal: React.FC = (props) => { } = props; const [modalRoot, setModalRoot] = useState(null); const modalIframeId = "modal-browser-iframe"; + const { t } = useTranslation(); useEffect(() => { // Look for existing modal root @@ -93,7 +97,7 @@ const BrowserModal: React.FC = (props) => { className="font-medium shadow-md flex justify-center items-center" size="large" > - Give control back to Magentic-UI + {t('security.giveControlBack')} )}
diff --git a/frontend/src/components/views/chat/approval_buttons.tsx b/frontend/src/components/views/chat/approval_buttons.tsx index 4554655b..de7e82b9 100644 --- a/frontend/src/components/views/chat/approval_buttons.tsx +++ b/frontend/src/components/views/chat/approval_buttons.tsx @@ -1,5 +1,6 @@ import React from "react"; import { CheckCircle, CircleX, CircleCheckBig, RotateCw } from "lucide-react"; +import { useTranslation } from "react-i18next"; interface ApprovalButtonsProps { status: string; @@ -22,6 +23,7 @@ const ApprovalButtons: React.FC = ({ onAcceptPlan, onRegeneratePlan, }) => { + const { t } = useTranslation(); const [planAcceptText, setPlanAcceptText] = React.useState(""); if (status !== "awaiting_input") { @@ -38,7 +40,7 @@ const ApprovalButtons: React.FC = ({ className="bg-green-500 hover:bg-green-600 text-white rounded flex justify-center items-center px-2 py-1.5 transition duration-300" > - Approve + {t("approvalButtons.approve")} ) : ( @@ -59,7 +61,7 @@ const ApprovalButtons: React.FC = ({ className="bg-green-500 hover:bg-green-600 text-white rounded flex justify-center items-center px-2 py-1.5 transition duration-300" > - Accept Plan + {t("approvalButtons.acceptPlan")}
) diff --git a/frontend/src/components/views/chat/chat.tsx b/frontend/src/components/views/chat/chat.tsx index 3e583b88..e0132fd0 100644 --- a/frontend/src/components/views/chat/chat.tsx +++ b/frontend/src/components/views/chat/chat.tsx @@ -28,6 +28,13 @@ import { } from "../../types/plan"; import SampleTasks from "./sampletasks"; import ProgressBar from "./progressbar"; +import { useTranslation } from "react-i18next"; +import { + PaperAirplaneIcon, + ExclamationTriangleIcon, + PauseCircleIcon, + CommandLineIcon, // 添加 Terminal 图标 +} from "@heroicons/react/24/outline"; // Extend RunStatus for sidebar status reporting type SidebarRunStatus = BaseRunStatus | "final_answer_awaiting_input"; @@ -76,6 +83,7 @@ export default function ChatView({ visible = true, onRunStatusChange, }: ChatViewProps) { + const { t } = useTranslation(); const serverUrl = getServerUrl(); const [error, setError] = React.useState({ status: true, @@ -122,7 +130,7 @@ export default function ChatView({ // Replace stepTitles state with currentPlan state const [currentPlan, setCurrentPlan] = React.useState(); - + // Create a Message object from AgentMessageConfig const createMessage = ( config: AgentMessageConfig, @@ -146,7 +154,7 @@ export default function ChatView({ return latestRun; } catch (error) { console.error("Error loading session runs:", error); - messageApi.error("Failed to load chat history"); + messageApi.error(t("chat.failedToLoadHistory")); return null; } }; @@ -166,18 +174,18 @@ export default function ChatView({ // Only load data if component is visible const latestRun = await loadSessionRun(); - + console.log("latestRun", latestRun); if (latestRun) { setCurrentRun(latestRun); setNoMessagesYet(latestRun.messages.length === 0); if (latestRun.id) { - setupWebSocket(latestRun.id, false, true); + setupWebSocket(latestRun.id, true, true); } } else { setError({ status: false, - message: "No run found", + message: t("chat.noRunFound"), }); } } else { @@ -304,7 +312,9 @@ export default function ChatView({ // Update the run status even when not visible onRunStatusChange(session.id, message.status as BaseRunStatus); } - } catch (error) {} + } catch (error) { + console.error("WebSocket message parsing error:", error); + } }; activeSocket.addEventListener("message", messageHandler); @@ -428,12 +438,12 @@ export default function ChatView({ const handleError = (error: any) => { console.error("Error:", error); - message.error("Error during request processing"); + message.error(t("chat.errorDuringProcessing")); setError({ status: false, message: - error instanceof Error ? error.message : "Unknown error occurred", + error instanceof Error ? error.message : t("chat.unknownError"), }); }; @@ -519,7 +529,6 @@ export default function ChatView({ return processedFiles; }; - const handleInputResponse = async ( response: string, files: RcFile[] = [], @@ -527,12 +536,12 @@ export default function ChatView({ plan?: IPlan ) => { if (!currentRun || !activeSocketRef.current) { - handleError(new Error("WebSocket connection not available")); + handleError(new Error(t("chat.websocketNotAvailable"))); return; } if (activeSocketRef.current.readyState !== WebSocket.OPEN) { - handleError(new Error("WebSocket connection not available")); + handleError(new Error(t("chat.websocketNotAvailable"))); return; } @@ -561,7 +570,7 @@ export default function ChatView({ const uploadedFilesList = processedFiles.filter((f) => f.uploaded); if (uploadedFilesList.length > 0) { const filesList = uploadedFilesList.map((f) => f.name).join(", "); - enhancedResponse = `Uploaded files: ${filesList}\n\n${response}`; + enhancedResponse = `${t('chatInput.uploadedFiles')}: ${filesList}\n\n${response}`; } const responseJson = { @@ -594,12 +603,12 @@ export default function ChatView({ const handleRegeneratePlan = async () => { if (!currentRun || !activeSocketRef.current) { - handleError(new Error("WebSocket connection not available")); + handleError(new Error(t("chat.websocketNotAvailable"))); return; } if (activeSocketRef.current.readyState !== WebSocket.OPEN) { - handleError(new Error("WebSocket connection not available")); + handleError(new Error(t("chat.websocketNotAvailable"))); return; } @@ -615,7 +624,7 @@ export default function ChatView({ } const responseJson = { - content: "Regenerate a plan that improves on the current plan", + content: t("chat.regeneratePlanMessage"), ...(planString !== "" && { plan: planString }), }; const responseString = JSON.stringify(responseJson); @@ -643,7 +652,7 @@ export default function ChatView({ activeSocketRef.current.send( JSON.stringify({ type: "stop", - reason: "Cancelled by user", + reason: t("chat.cancelledByUser"), }) ); @@ -666,7 +675,7 @@ export default function ChatView({ try { if (activeSocketRef.current.readyState !== WebSocket.OPEN) { - throw new Error("WebSocket connection not available"); + throw new Error(t("chat.websocketNotAvailable")); } if ( @@ -711,7 +720,7 @@ export default function ChatView({ if (run) { setCurrentRun(run); } else { - throw new Error("Could not setup run"); + throw new Error(t("chat.couldNotSetupRun")); } } @@ -731,7 +740,7 @@ export default function ChatView({ // Setup websocket connection const socket = setupWebSocket(run.id, fresh_socket, false); if (!socket) { - throw new Error("WebSocket connection not available"); + throw new Error(t("chat.websocketNotAvailable")); } // Wait for socket to be ready @@ -743,7 +752,7 @@ export default function ChatView({ socket.readyState === WebSocket.CLOSED || socket.readyState === WebSocket.CLOSING ) { - reject(new Error("Socket failed to connect")); + reject(new Error(t("chat.socketFailedToConnect"))); } else { setTimeout(checkState, 100); } @@ -760,9 +769,8 @@ export default function ChatView({ const uploadedFilesList = processedFiles.filter((f) => f.uploaded); if (uploadedFilesList.length > 0) { const filesList = uploadedFilesList.map((f) => f.name).join(", "); - enhancedQuery = `Uploaded files: ${filesList}\n\n${query}`; + enhancedQuery = `${t('chatInput.uploadedFiles')}: ${filesList}\n\n${query}`; } - var planString = plan ? convertPlanStepsToJsonString(plan.steps) : ""; const taskJson = { @@ -788,7 +796,7 @@ export default function ChatView({ setError({ status: false, message: - error instanceof Error ? error.message : "Failed to start task", + error instanceof Error ? error.message : t("chat.failedToStartTask"), }); } }; @@ -872,6 +880,7 @@ export default function ChatView({ : setupWebSocket(currentRun.id, true, false); if (!socket || socket.readyState !== WebSocket.OPEN) { + console.error(t("chat.websocketNotAvailableOrNotOpen")); return; } @@ -881,7 +890,7 @@ export default function ChatView({ plan: { task: newPlan.task, steps: newPlan.steps, - plan_summary: "Saved plan for task: " + newPlan.task, + plan_summary: t("chat.savedPlanForTask") + ": " + newPlan.task, }, }; @@ -908,7 +917,7 @@ export default function ChatView({ processedPlanIds.add(newPlan.messageId); } } catch (err) { - console.error("Error processing plan for session:", session.id, err); + console.error(t("chat.errorProcessingPlanForSession"), session.id, err); } }; @@ -1059,7 +1068,7 @@ export default function ChatView({ const handleAcceptPlan = (text: string) => { if (currentRun?.status === "awaiting_input") { - const query = text || "Plan Accepted"; + const query = text || t("chat.planAccepted"); handleInputResponse(query, [], true); } }; @@ -1073,7 +1082,7 @@ export default function ChatView({ {contextHolder}
{/* Progress Bar - Sticky at top */} -
+
- Enter a message to get started + {t("chat.enterMessageToGetStarted")}
diff --git a/frontend/src/components/views/chat/chatinput.tsx b/frontend/src/components/views/chat/chatinput.tsx index e46d8f3e..573ab8f6 100644 --- a/frontend/src/components/views/chat/chatinput.tsx +++ b/frontend/src/components/views/chat/chatinput.tsx @@ -4,6 +4,7 @@ import { PauseCircleIcon, } from "@heroicons/react/24/outline"; import * as React from "react"; +import { useTranslation } from "react-i18next"; import { appContext } from "../../../hooks/provider"; import { IStatus } from "../../types/app"; import { @@ -95,6 +96,8 @@ const ChatInput = React.forwardRef<{ focus: () => void }, ChatInputProps>( runStatus === "pausing" || inputRequest?.input_type === "approval"; + const { t } = useTranslation(); + // Handle textarea auto-resize React.useEffect(() => { if (textAreaRef.current) { @@ -189,7 +192,7 @@ const ChatInput = React.forwardRef<{ focus: () => void }, ChatInputProps>( setFileList((prev) => [...prev, uploadFile]); // Show successful paste notification - message.success(`File pasted successfully`); + message.success(t('chatInput.imagePastedSuccessfully')); } } @@ -247,12 +250,12 @@ const ChatInput = React.forwardRef<{ focus: () => void }, ChatInputProps>( notificationApi.info({ message: ( - Large Text Converted to File + {t('chatInput.largeTextConvertedToFile')} ), description: ( - Your pasted text has been attached as a file. + {t('chatInput.largeTextConvertedToFileDescription')} ), duration: 3, @@ -340,6 +343,7 @@ const ChatInput = React.forwardRef<{ focus: () => void }, ChatInputProps>( setIsRelevantPlansVisible(false); } } catch (error) { + console.error("Error searching plans:", error); } finally { setIsSearching(false); } @@ -462,11 +466,11 @@ const ChatInput = React.forwardRef<{ focus: () => void }, ChatInputProps>( const getFileIcon = (file: UploadFile) => { const fileType = file.type || ""; const fileName = file.name || ""; - + if (fileType.startsWith("image/")) { return ; } - + // Check for specific file types based on extension const extension = fileName.split(".").pop()?.toLowerCase(); switch (extension) { @@ -483,7 +487,7 @@ const ChatInput = React.forwardRef<{ focus: () => void }, ChatInputProps>( case "7z": return ; default: - return ; + return ; } }; @@ -645,7 +649,7 @@ const ChatInput = React.forwardRef<{ focus: () => void }, ChatInputProps>( {/* Plan View Modal */} void }, ChatInputProps>( }} placeholder={ runStatus === "awaiting_input" - ? "Type your response here and let Magentic-UI know of any changes in the browser." + ? t('chat.inputPlaceholder') : enable_upload ? dragOver - ? "Drop files here..." - : "Type your message here..." - : "Type your message here..." + ? t('chatInput.dropFilesHere') + : t('chatInput.typeMessageHere') + : t('chatInput.typeMessageHere') } disabled={isInputDisabled} /> @@ -735,15 +739,15 @@ const ChatInput = React.forwardRef<{ focus: () => void }, ChatInputProps>( - Attach File + {t('chatInput.attachFile')} - + {allPlans.length === 0 ? ( - No plans available + {t('chatInput.noPlansAvailable')} ) : ( allPlans.map((plan: any) => ( @@ -751,7 +755,7 @@ const ChatInput = React.forwardRef<{ focus: () => void }, ChatInputProps>( key={plan.id || plan.task} onClick={() => handleUsePlan(plan)} > - {plan.task} + {plan.task} )) )} @@ -762,7 +766,7 @@ const ChatInput = React.forwardRef<{ focus: () => void }, ChatInputProps>( > Attach File or Plan + {t('chatInput.attachFileOrPlan')} } placement="top" > @@ -788,18 +792,18 @@ const ChatInput = React.forwardRef<{ focus: () => void }, ChatInputProps>( )} { - + }
diff --git a/frontend/src/components/views/chat/plan.tsx b/frontend/src/components/views/chat/plan.tsx index 2c8a0f93..064a95b1 100644 --- a/frontend/src/components/views/chat/plan.tsx +++ b/frontend/src/components/views/chat/plan.tsx @@ -8,6 +8,7 @@ import React, { } from "react"; import { ChevronDownIcon, PlusIcon } from "@heroicons/react/24/outline"; import { ClipboardList } from "lucide-react"; +import { useTranslation } from "react-i18next"; import { DragDropContext, Droppable, @@ -75,6 +76,7 @@ const PlanView: React.FC = ({ isCollapsed: initialIsCollapsed = false, forceCollapsed = false, }) => { + const { t } = useTranslation(); const [localPlan, setLocalPlan] = useState([]); const [isCollapsed, setIsCollapsed] = useState( viewOnly && (initialIsCollapsed || forceCollapsed) @@ -156,25 +158,22 @@ const PlanView: React.FC = ({ const getAgentIcon = (agentName: string | undefined): JSX.Element | null => { const lowerCaseName = (agentName || "").toLowerCase(); - if (lowerCaseName === "coder_agent") return ; - if (lowerCaseName === "web_surfer") - return ; - if (lowerCaseName === "file_surfer") - return ; - if (lowerCaseName === "user_proxy") return ; - if (lowerCaseName === "no_action_agent") - return ; - return ; + if (lowerCaseName === "coder_agent") return ; + if (lowerCaseName === "web_surfer") return ; + if (lowerCaseName === "file_surfer") return ; + if (lowerCaseName === "user_proxy") return ; + if (lowerCaseName === "no_action_agent") return ; + return ; }; const getAgentName = (agentName: string | undefined): string => { const lowerCaseName = (agentName || "").toLowerCase(); - if (lowerCaseName === "coder_agent") return "Coder"; - if (lowerCaseName === "web_surfer") return "WebSurfer"; - if (lowerCaseName === "file_surfer") return "FileSurfer"; - if (lowerCaseName === "user_proxy") return "User"; - if (lowerCaseName === "no_action_agent") return "Self-Reflection"; - return agentName || "Agent"; + if (lowerCaseName === "coder_agent") return t("agents.coder"); + if (lowerCaseName === "web_surfer") return t("agents.webSurfer"); + if (lowerCaseName === "file_surfer") return t("agents.fileSurfer"); + if (lowerCaseName === "user_proxy") return t("agents.user"); + if (lowerCaseName === "no_action_agent") return t("agents.selfReflection"); + return agentName || t("agents.agent"); }; const noop = () => {}; @@ -185,9 +184,9 @@ const PlanView: React.FC = ({
{fromMemory - ? "Potentially relevant plan retrieved from memory. " - : "Here's a plan. "} - You can edit it directly or through the chat. + ? t("planView.potentiallyRelevantPlanFromMemory") + : t("planView.heresAPlan")} + {t("planView.youCanEditDirectlyOrThroughChat")}
)}
@@ -197,7 +196,7 @@ const PlanView: React.FC = ({ onClick={() => setIsCollapsed(false)} > -

Plan for: {task}

+

{t("planView.planFor")} {task === "Untitled" ? t("planCard.untitledPlan") : task}

) : ( <> @@ -216,7 +215,7 @@ const PlanView: React.FC = ({ {viewOnly && ( )} -

Plan for: {task}

+

{t("planView.planFor")} {task === "Untitled" ? t("planCard.untitledPlan") : task}

)} @@ -246,7 +245,7 @@ const PlanView: React.FC = ({ !viewOnly ? "cursor-grab" : "" }`} > - Step {index + 1} + {t("planView.step")} {index + 1}
@@ -282,7 +281,7 @@ const PlanView: React.FC = ({ : "" }`} readOnly={viewOnly} - placeholder="Enter step details" + placeholder={t("planView.enterStepDetails")} /> } {!viewOnly && ( @@ -315,16 +314,16 @@ const PlanView: React.FC = ({
- {saveStatus === "saving" && "Saving..."} - {saveStatus === "saved" && ""} - {saveStatus === "error" && "Error saving changes"} + {saveStatus === "saving" && t("planView.saving")} + {saveStatus === "saved" && ""} + {saveStatus === "error" && t("planView.errorSavingChanges")}
- Add Step + {t("planView.addStep")}
diff --git a/frontend/src/components/views/chat/sampletasks.tsx b/frontend/src/components/views/chat/sampletasks.tsx index 0975f69b..e5c5df0c 100644 --- a/frontend/src/components/views/chat/sampletasks.tsx +++ b/frontend/src/components/views/chat/sampletasks.tsx @@ -1,22 +1,26 @@ import React, { useState, useEffect } from "react"; +import { useTranslation } from "react-i18next"; interface SampleTasksProps { onSelect: (task: string) => void; } -const SAMPLE_TASKS = [ - "When does the post office near me close today?", - "Find the latest publications from the the Microsoft Research AI Frontiers Lab on Human-Agent interaction", - "Which commit of Microsoft/markitdown repo introduced MCP support?", - "Can you make a Markdown file with python that summarizes the Microsoft AutoGen repo?", - "Order me a custom pizza from Tangle Town Pub with sausage, pineapple, and black olives", - "Search arXiv for the latest papers on computer use agents", -]; - const SampleTasks: React.FC = ({ onSelect }) => { + const { t } = useTranslation(); const [isExpanded, setIsExpanded] = useState(false); const [windowWidth, setWindowWidth] = useState(0); + // 使用 i18n 翻译的示例任务 + const SAMPLE_TASKS = [ + t("sampleTasks.guangzhouWeather"), + t("sampleTasks.postOfficeHours"), + t("sampleTasks.microsoftResearchPapers"), + t("sampleTasks.markitdownMCPCommit"), + t("sampleTasks.autogenSummaryPython"), + t("sampleTasks.customPizzaOrder"), + t("sampleTasks.arxivComputerAgents") + ]; + useEffect(() => { const handleResize = () => setWindowWidth(window.innerWidth); handleResize(); // Initial width @@ -39,7 +43,7 @@ const SampleTasks: React.FC = ({ onSelect }) => { return (
- or try a sample task from below{" "} + {t("sampleTasks.orTrySampleTask")}{" "}
@@ -60,7 +64,7 @@ const SampleTasks: React.FC = ({ onSelect }) => { onClick={() => setIsExpanded(!isExpanded)} type="button" > - {isExpanded ? "Show less..." : "Show more sample tasks..."} + {isExpanded ? t("sampleTasks.showLess") : t("sampleTasks.showMore")} )}
diff --git a/frontend/src/components/views/magentic_ui_manager.tsx b/frontend/src/components/views/magentic_ui_manager.tsx index fb1f4bcc..d5f192e2 100644 --- a/frontend/src/components/views/magentic_ui_manager.tsx +++ b/frontend/src/components/views/magentic_ui_manager.tsx @@ -1,7 +1,9 @@ import React from "react"; +import { useTranslation } from "react-i18next"; export const MagenticUIManager: React.FC = () => { - return
Magentic-UI component
; + const { t } = useTranslation(); + return
{t("header.title")} component
; }; export default MagenticUIManager; \ No newline at end of file diff --git a/frontend/src/components/views/manager.tsx b/frontend/src/components/views/manager.tsx index 3a3d68ba..d8e772af 100644 --- a/frontend/src/components/views/manager.tsx +++ b/frontend/src/components/views/manager.tsx @@ -6,6 +6,7 @@ import React, { useMemo, } from "react"; import { message, Spin } from "antd"; +import { useTranslation } from "react-i18next"; import { useConfigStore } from "../../hooks/store"; import { appContext } from "../../hooks/provider"; import { sessionAPI } from "./api"; @@ -28,6 +29,7 @@ type SessionWebSockets = { }; export const SessionManager: React.FC = () => { + const { t } = useTranslation(); const [isLoading, setIsLoading] = useState(false); const [isEditorOpen, setIsEditorOpen] = useState(false); const [editingSession, setEditingSession] = useState(); @@ -70,12 +72,13 @@ export const SessionManager: React.FC = () => { setSession(data[0]); } else { if (data.length === 0) { - createDefaultSession(); + console.log(t("sessionManager.noSessionsFound")); + createDefaultSession(); } } } catch (error) { console.error("Error fetching sessions:", error); - messageApi.error("Error loading sessions"); + messageApi.error(t("sessionManager.errorLoadingSessions")); } finally { setIsLoading(false); } @@ -298,11 +301,14 @@ export const SessionManager: React.FC = () => { fresh_socket: boolean = false, only_retrieve_existing_socket: boolean = false ): WebSocket | null => { - if (fresh_socket) { + console.log("getSessionSocket", sessionId, runId, fresh_socket, only_retrieve_existing_socket); + // 如果fresh_socket为true,并且sessionId不存在于sessionSockets中,则创建新的socket + const sessionExists = sessionId in sessionSockets; + if (fresh_socket && !sessionExists) { return setupWebSocket(sessionId, runId); } else { const existingSocket = sessionSockets[sessionId]; - + console.log("existingSocket", existingSocket); if ( existingSocket?.socket.readyState === WebSocket.OPEN && existingSocket.runId === runId @@ -355,7 +361,7 @@ export const SessionManager: React.FC = () => { window.history.pushState({}, "", `?sessionId=${created.id}`); } catch (error) { console.error("Error creating default session:", error); - messageApi.error("Error creating default session"); + messageApi.error(t("sessionManager.errorCreatingDefaultSession")); } finally { setIsLoading(false); } diff --git a/frontend/src/components/views/session_editor.tsx b/frontend/src/components/views/session_editor.tsx index fb339545..cec005b0 100644 --- a/frontend/src/components/views/session_editor.tsx +++ b/frontend/src/components/views/session_editor.tsx @@ -1,6 +1,7 @@ import React, { useContext, useEffect, useState } from "react"; import { Modal, Form, message, Input, Button } from "antd"; import type { FormProps } from "antd"; +import { useTranslation } from "react-i18next"; import { SessionEditorProps } from "./types"; import { Team } from "../types/datamodel"; import { teamAPI } from "./api"; @@ -17,6 +18,7 @@ export const SessionEditor: React.FC = ({ onCancel, isOpen, }) => { + const { t } = useTranslation(); const [form] = Form.useForm(); const [teams, setTeams] = useState([]); const [loading, setLoading] = useState(false); @@ -44,7 +46,7 @@ export const SessionEditor: React.FC = ({ const teamsData = await teamAPI.listTeams(userId); setTeams(teamsData); } catch (error) { - messageApi.error("Error loading teams"); + messageApi.error(t("sessionEditor.errorLoadingTeams")); console.error("Error loading teams:", error); } finally { setLoading(false); @@ -74,7 +76,7 @@ export const SessionEditor: React.FC = ({ id: session?.id, }); messageApi.success( - `Session ${session ? "updated" : "created"} successfully` + session ? t("sessionEditor.sessionUpdatedSuccessfully") : t("sessionEditor.sessionCreatedSuccessfully") ); } catch (error) { if (error instanceof Error) { @@ -86,7 +88,7 @@ export const SessionEditor: React.FC = ({ const onFinishFailed: FormProps["onFinishFailed"] = ( errorInfo: any ) => { - messageApi.error("Please check the form for errors"); + messageApi.error(t("sessionEditor.pleaseCheckFormForErrors")); console.error("Form validation failed:", errorInfo); }; @@ -94,7 +96,7 @@ export const SessionEditor: React.FC = ({ return ( = ({ onSubMenuChange, onStopSession, }) => { + const { t } = useTranslation(); + // Group sessions by time period const groupSessions = (sessions: Session[]) => { const now = new Date(); @@ -147,7 +150,7 @@ export const Sidebar: React.FC = ({ }} > {" "} - Edit + {t('common.edit')} = ({ danger > {" "} - Disconnect + {t('sidebar.disconnect')} = ({ danger > {" "} - Delete + {t('common.delete')} = ({ } return ( -
+
, }, { id: "saved_plan", - label: "Saved Plans", + label: t('sidebar.savedPlans'), icon: , }, ]} @@ -231,11 +234,11 @@ export const Sidebar: React.FC = ({ <>
- Sessions + {t('sidebar.sessions')} {isLoading ? (
- Loading...{" "} + {t('common.loading')}{" "}
) : ( @@ -248,7 +251,7 @@ export const Sidebar: React.FC = ({
- +
@@ -267,20 +270,20 @@ export const Sidebar: React.FC = ({ {sortedSessions.length === 0 ? (
- No recent sessions found + {t('sidebar.noRecentSessions')}
) : ( <> {groupedSessions.today.length > 0 && (
-
Today
+
{t('sidebar.today')}
{renderSessionGroup(groupedSessions.today)}
)} {groupedSessions.yesterday.length > 0 && (
- Yesterday + {t('sidebar.yesterday')}
{renderSessionGroup(groupedSessions.yesterday)}
@@ -288,7 +291,7 @@ export const Sidebar: React.FC = ({ {groupedSessions.last7Days.length > 0 && (
- Last 7 Days + {t('sidebar.last7Days')}
{renderSessionGroup(groupedSessions.last7Days)}
@@ -296,14 +299,14 @@ export const Sidebar: React.FC = ({ {groupedSessions.last30Days.length > 0 && (
- Last 30 Days + {t('sidebar.last30Days')}
{renderSessionGroup(groupedSessions.last30Days)}
)} {groupedSessions.older.length > 0 && ( -
-
Older
+
+
{t('sidebar.older')}
{renderSessionGroup(groupedSessions.older)}
)} @@ -323,6 +326,7 @@ export const Sidebar: React.FC = ({ isLoading, onEditSession, renderSessionGroup, + t, ]); return sidebarContent; diff --git a/frontend/src/components/views/statusicon.tsx b/frontend/src/components/views/statusicon.tsx index 71631bf3..0a504ce5 100644 --- a/frontend/src/components/views/statusicon.tsx +++ b/frontend/src/components/views/statusicon.tsx @@ -8,6 +8,7 @@ import { HelpCircle, CheckCircle, } from "lucide-react"; +import { useTranslation } from "react-i18next"; import { Run, InputRequest } from "../types/datamodel"; export const getStatusIcon = ( @@ -16,6 +17,7 @@ export const getStatusIcon = ( stopReason?: string, inputRequest?: InputRequest ) => { + const { t } = useTranslation(); switch (status) { case "active": return ( @@ -24,7 +26,7 @@ export const getStatusIcon = ( size={20} className="inline-block mr-1 text-accent animate-spin" /> - Processing + {t("statusIcon.processing")}
); case "awaiting_input": @@ -36,8 +38,8 @@ export const getStatusIcon = (
- Approval Request:{" "} - {inputRequest.prompt || "Waiting for approval"} + {t("statusIcon.approvalRequest")}:{" "} + {inputRequest.prompt || t("statusIcon.waitingForApproval")}
@@ -47,7 +49,7 @@ export const getStatusIcon = ( size={20} className="flex-shrink-0 mr-2 text-accent" /> - Waiting for your input + {t("statusIcon.waitingForInput")} )}
@@ -56,21 +58,21 @@ export const getStatusIcon = ( return (
- {errorMessage || "An error occurred"} + {errorMessage || t("statusIcon.errorOccurred")}
); case "error": return (
- {errorMessage || "An error occurred"} + {errorMessage || t("statusIcon.errorOccurred")}
); case "stopped": return (
- Task was stopped: {stopReason} + {t("statusIcon.taskStopped")}: {stopReason}
); case "pausing": @@ -80,14 +82,14 @@ export const getStatusIcon = ( size={20} className="inline-block mr-2 text-accent animate-spin" /> - Pausing + {t("statusIcon.pausing")}
); case "paused": return (
- Paused + {t("statusIcon.paused")}
); case "resuming": @@ -97,7 +99,7 @@ export const getStatusIcon = ( size={20} className="inline-block mr-2 text-accent animate-spin" /> - Resuming + {t("statusIcon.resuming")}
); default: diff --git a/frontend/src/hooks/provider.tsx b/frontend/src/hooks/provider.tsx index a6e26ffc..04fe8a03 100644 --- a/frontend/src/hooks/provider.tsx +++ b/frontend/src/hooks/provider.tsx @@ -1,6 +1,7 @@ import React, { useState } from "react"; import { getLocalStorage, setLocalStorage } from "../components/utils"; import { message } from "antd"; +import { useTranslation } from "react-i18next"; export interface IUser { name: string; @@ -17,6 +18,8 @@ export interface AppContextType { cookie_name: string; darkMode: string; setDarkMode: any; + language: "zh-CN" | "en-US"; + setLanguage: any; } const cookie_name = "coral_app_cookie_"; @@ -25,11 +28,18 @@ export const appContext = React.createContext( {} as AppContextType ); const Provider = ({ children }: any) => { + const { i18n } = useTranslation(); + + // theme config const storedValue = getLocalStorage("darkmode", false); const [darkMode, setDarkMode] = useState( storedValue === null ? "dark" : storedValue === "dark" ? "dark" : "light" ); - + // language config + const storedLanguage = getLocalStorage("language", false); + const [language, setLanguageState] = useState<"zh-CN" | "en-US">( + storedLanguage === null ? "zh-CN" : (storedLanguage === "zh-CN" || storedLanguage === "en-US") ? storedLanguage : "zh-CN" + ); const logout = () => { // setUser(null); // eraseCookie(cookie_name); @@ -42,6 +52,17 @@ const Provider = ({ children }: any) => { setLocalStorage("darkmode", darkMode, false); }; + const updateLanguage = (language: "zh-CN" | "en-US") => { + setLanguageState(language); + setLocalStorage("language", language, false); + i18n.changeLanguage(language); + }; + + // 初始化语言 + React.useEffect(() => { + i18n.changeLanguage(language); + }, [i18n, language]); + // Modify logic here to add your own authentication const initUser = { name: "Guest User", @@ -78,6 +99,8 @@ const Provider = ({ children }: any) => { cookie_name, darkMode, setDarkMode: updateDarkMode, + language, + setLanguage: updateLanguage, }} > {children} diff --git a/frontend/src/i18n/index.ts b/frontend/src/i18n/index.ts new file mode 100644 index 00000000..e2688922 --- /dev/null +++ b/frontend/src/i18n/index.ts @@ -0,0 +1,36 @@ +import i18n from 'i18next'; +import { initReactI18next } from 'react-i18next'; +import LanguageDetector from 'i18next-browser-languagedetector'; + +// import language files +import zhCN from './locales/zh-CN.json'; +import enUS from './locales/en-US.json'; + +const resources = { + 'zh-CN': { + translation: zhCN + }, + 'en-US': { + translation: enUS + } +}; + +i18n + .use(LanguageDetector) + .use(initReactI18next) + .init({ + resources, + fallbackLng: 'zh-CN', // default language is Chinese + debug: process.env.NODE_ENV === 'development', + + interpolation: { + escapeValue: false, // React has already handled XSS + }, + + detection: { + order: ['localStorage', 'navigator', 'htmlTag'], + caches: ['localStorage'], + } + }); + +export default i18n; \ No newline at end of file diff --git a/frontend/src/i18n/locales/en-US.json b/frontend/src/i18n/locales/en-US.json new file mode 100644 index 00000000..3bb0389c --- /dev/null +++ b/frontend/src/i18n/locales/en-US.json @@ -0,0 +1,364 @@ +{ + "common": { + "loading": "Loading...", + "error": "Error", + "success": "Success", + "cancel": "Cancel", + "confirm": "Confirm", + "save": "Save", + "delete": "Delete", + "edit": "Edit", + "add": "Add", + "close": "Close", + "back": "Back", + "next": "Next", + "previous": "Previous", + "submit": "Submit", + "reset": "Reset", + "search": "Search", + "filter": "Filter", + "sort": "Sort", + "refresh": "Refresh", + "copy": "Copy", + "paste": "Paste", + "cut": "Cut", + "undo": "Undo", + "redo": "Redo", + "retry": "Retry", + "on": "ON", + "off": "OFF" + }, + "theme": { + "light": "Light Mode", + "dark": "Dark Mode", + "spirits": "Spirits Mode", + "theme": "Theme" + }, + "language": { + "zh-CN": "中文", + "en-US": "English", + "language": "Language" + }, + "header": { + "title": "Magentic UI", + "logo": "Magentic UI Logo", + "closeSidebar": "Close Sidebar", + "openSidebar": "Open Sidebar", + "createNewSession": "Create new session", + "viewProfile": "View or update your profile", + "settings": "Settings" + }, + "sidebar": { + "currentSession": "Current Session", + "savedPlans": "Saved Plans", + "sessions": "Sessions", + "disconnect": "Disconnect", + "createNewSession": "Create new session", + "newSession": "New Session", + "noRecentSessions": "No recent sessions found", + "today": "Today", + "yesterday": "Yesterday", + "last7Days": "Last 7 Days", + "last30Days": "Last 30 Days", + "older": "Older" + }, + "plans": { + "errorOccurred": "An error occurred", + "pleaseSignIn": "Please sign in to view your plans", + "planDeletedSuccessfully": "Plan deleted successfully", + "creatingNewSession": "Creating new session from plan...", + "planPrefix": "Plan", + "errorCreatingSession": "Error creating session", + "newPlan": "New Plan", + "newPlanCreatedSuccessfully": "New plan created successfully", + "failedToCreatePlan": "Failed to create plan", + "invalidJsonFormat": "Invalid JSON file format. Please check your file and try again.", + "invalidPlanFormat": "Invalid plan format. The file does not contain a valid plan structure.", + "importedPlan": "Imported Plan", + "planImportedSuccessfully": "Plan imported successfully", + "failedToImportPlan": "Failed to import plan", + "pleaseUploadJsonFile": "Please upload a JSON file", + "loadingPlans": "Loading plans...", + "dropPlanFileHere": "Drop your plan file here to import", + "yourSavedPlans": "Your Saved Plans", + "createNewEmptyPlan": "Create a new empty plan", + "create": "Create", + "importPlanFromJson": "Import a plan from a JSON file", + "import": "Import", + "searchPlans": "Search plans...", + "noPlansFoundMatching": "No plans found matching \"{searchTerm}\"", + "clearSearch": "Clear search", + "noPlansYet": "No plans yet. Create one or import an existing plan." + }, + "navigation": { + "home": "Home", + "settings": "Settings", + "help": "Help", + "about": "About" + }, + "chat": { + "inputPlaceholder": "Type your response here and let Magentic-UI know of any changes in the browser.", + "send": "Send", + "clear": "Clear", + "newChat": "New Chat", + "history": "Chat History", + "failedToLoadHistory": "Failed to load chat history", + "errorDuringProcessing": "Error during request processing", + "unknownError": "Unknown error occurred", + "websocketNotAvailable": "WebSocket connection not available", + "cancelledByUser": "Cancelled by user", + "couldNotSetupRun": "Could not setup run", + "regeneratePlanMessage": "Regenerate a plan that improves on the current plan", + "failedToStartTask": "Failed to start task", + "websocketNotAvailableOrNotOpen": "WebSocket not available or not open", + "savedPlanForTask": "Saved plan for task", + "errorProcessingPlanForSession": "Error processing plan for session", + "planAccepted": "Plan Accepted", + "enterMessageToGetStarted": "Enter a message to get started", + "noRunFound": "No run found", + "socketFailedToConnect": "Socket failed to connect", + "invalidSessionConfiguration": "Invalid session configuration" + }, + "settings": { + "title": "Settings", + "general": "General", + "agents": "Agent Settings", + "advanced": "Advanced Settings", + "modelConfiguration": "Model Configuration", + "resetToDefaults": "Reset to Defaults", + "settingsChangesWarning": "Warning: Settings changes will only apply when you create a new session", + "updatedSettings": "Updated settings!", + "failedToSaveSettings": "Failed to save settings", + "failedToLoadSettings": "Failed to load settings. Using defaults.", + "modelConfigurationTooltip1": "YAML configuration for the underlying LLM of the agents.", + "modelConfigurationTooltip2": "The configuration uses AutoGen ChatCompletionClient format.", + "modelConfigurationTooltip3": "Must include configurations for: orchestrator_client, coder_client, web_surfer_client, and file_surfer_client.", + "modelConfigurationTooltip4": "Each client should follow the AutoGen ChatCompletionClient specification with provider, config (model, etc), and max_retries.", + "modelConfigurationTooltip5": "Changes require a new session to take effect.", + "importYaml": "Import YAML", + "selectLlmForAllClients": "Select LLM for All Clients", + "selectLlmForAllClientsTooltip": "This will update the model configuration for all agent clients (orchestrator, coder, web surfer, and file surfer)", + "selectModelPlaceholder": "Select model to use for all clients", + "advancedConfiguration": "Advanced Configuration (YAML)" + }, + "generalSettings": { + "title": "General Settings", + "theme": "Theme", + "language": "Language", + "allowedWebsites": "Allowed Websites List", + "allowedWebsitesTooltip": "When enabled, Magentic-UI will only be able to visit websites you add to the list below.", + "maxActionsPerStep": "Max Actions Per Step", + "multipleToolsPerCall": "Multiple Tools Per Call", + "maxTurns": "Max Turns", + "approvalPolicy": "Approval Policy", + "approvalPolicyAlways": "Always", + "approvalPolicyNever": "Never", + "approvalPolicyAutoConservative": "Auto Conservative", + "approvalPolicyAutoPermissive": "Auto Permissive", + "approvalPolicyTooltip": "Controls when approval is required before taking actions", + "allowReplans": "Allow Replans", + "allowReplansTooltip": "When enabled, Magentic-UI will automatically replan if the current plan is not working or you change the original request", + "doBingSearch": "Use Bing Search for Planning", + "doBingSearchTooltip": "When enabled, Magentic-UI will use Bing Search when coming up with a plan. Note this adds 10 seconds to the planning time.", + "retrieveRelevantPlans": "Retrieve Relevant Plans", + "retrieveRelevantPlansTooltip": "Controls how Magentic-UI retrieves and uses relevant plans from previous sessions", + "retrieveRelevantPlansNever": "Never", + "retrieveRelevantPlansHint": "Hint", + "retrieveRelevantPlansReuse": "Reuse", + "browserHeadless": "Browser Headless", + "browserHeadlessTooltip": "Only applicable when running without docker. When enabled, the browser will run in headless mode (no UI).", + "restrictedToList": "Restricted to List", + "allWebsitesAllowed": "All Websites Allowed", + "validationWarning": "You must add at least one website to the Allowed Websites list or turn off this feature" + }, + "agentSettings": { + "title": "Agent Settings", + "modelSelector": "Model Selector", + "mcpAgents": "MCP Agents", + "mcpAgentsDescription": "Extend Magentic-UI's capabilities by adding custom agents that connect to local or remote Model Context Protocol (MCP) Servers!", + "setLlmForEachAgent": "Set the LLM for each agent", + "setLlmForAllAgents": "Set the LLM for all agents", + "toggleBasicAdvancedTooltip": "Toggle between Basic and Advanced settings", + "advanced": "Advanced", + "customAgents": "Custom Agents", + "orchestrator": "Orchestrator", + "webSurfer": "Web Surfer", + "coder": "Coder", + "fileSurfer": "File Surfer", + "actionGuard": "Action Guard" + }, + "advancedSettings": { + "title": "Advanced Settings", + "advancedConfiguration": "Advanced Configuration (YAML)", + "unsupportedFileType": "Unsupported file type", + "failedToParseFile": "Failed to parse uploaded file", + "upload": "Upload", + "applyChanges": "Apply Changes", + "discardChanges": "Discard Changes", + "errorCount": "{{count}} error{{count > 1 ? 's' : ''}}" + }, + "security": { + "securityNote": "Security Note:", + "securityNoteText": "Magentic-UI cannot see what you do when you take control. Be cautious about entering passwords or sensitive information.", + "cantSee": "Magentic-UI can't see what you do when you take control.", + "giveControlBack": "Give control back to Magentic-UI" + }, + "feedback": { + "title": "Feedback", + "description": "Please tell us about your experience", + "rating": "Rating", + "comment": "Comment", + "submit": "Submit Feedback" + }, + "errors": { + "pageNotFound": "Page Not Found", + "pageNotFoundTitle": "Page Not Found | Magentic-UI", + "connectionError": "Connection Error", + "serverError": "Server Error", + "validationError": "Validation Error" + }, + "messages": { + "mistakes": "Magentic-UI can make mistakes. Please monitor its work and intervene if necessary." + }, + "sampleTasks": { + "orTrySampleTask": "or try a sample task from below", + "showLess": "Show less...", + "showMore": "Show more sample tasks...", + "guangzhouWeather": "What's the weather in Guangzhou today?", + "postOfficeHours": "When does the post office near me close today?", + "microsoftResearchPapers": "Find the latest publications from the Microsoft Research AI Frontiers Lab on Human-Agent interaction", + "markitdownMCPCommit": "Which commit of Microsoft/markitdown repo introduced MCP support?", + "autogenSummaryPython": "Can you make a Markdown file with python that summarizes the Microsoft AutoGen repo?", + "customPizzaOrder": "Order me a custom pizza from Tangle Town Pub with sausage, pineapple, and black olives", + "arxivComputerAgents": "Search arXiv for the latest papers on computer use agents" + }, + "planCard": { + "confirmDelete": "Are you sure you want to delete \"{{task}}\"?", + "untitledPlan": "Untitled Plan", + "exportPlanTooltip": "Export plan as JSON file", + "exportPlan": "Export plan", + "deletePlanTooltip": "Delete this plan", + "deletePlan": "Delete plan", + "runPlanTooltip": "Create a new session with this plan loaded", + "runPlan": "Run Plan", + "editPlanTooltip": "Modify plan title and steps", + "edit": "Edit", + "stepsCount": "{{count}} steps", + "stepNumber": "Step {{number}}", + "moreSteps": "+ {{count}} more steps", + "planTitle": "Plan Title", + "enterPlanTitle": "Enter plan title" + }, + "chatInput": { + "imagePastedSuccessfully": "Image pasted successfully", + "imageTooLarge": "Pasted image is too large. Maximum size is 5MB.", + "largeTextConvertedToFile": "Large Text Converted to File", + "largeTextConvertedToFileDescription": "Your pasted text has been attached as a file.", + "fileTooLarge": "{{fileName}} is too large. Maximum size is 5MB.", + "unsupportedFileType": "Unsupported File Type", + "unsupportedFileTypeDescription": "Please upload only text (.txt), CSV (.csv), Excel (.xls, .xlsx) or images (.jpg, .png, .gif, .svg) files.", + "uploadingFiles": "Uploading files...", + "filesUploadedSuccessfully": "Files uploaded successfully", + "failedToUploadFiles": "Failed to upload files", + "dropFilesHere": "Drop files here...", + "typeMessageHere": "Type your message here...", + "attachFile": "Attach File", + "attachPlan": "Attach Plan", + "noPlansAvailable": "No plans available", + "attachFileOrPlan": "Attach File or Plan", + "plan": "Plan", + "uploadedFiles": "Uploaded Files" + }, + "statusIcon": { + "processing": "Processing", + "approvalRequest": "Approval Request", + "waitingForApproval": "Waiting for approval", + "waitingForInput": "Waiting for your input", + "errorOccurred": "An error occurred", + "taskStopped": "Task was stopped", + "pausing": "Pausing", + "paused": "Paused", + "resuming": "Resuming" + }, + "approvalButtons": { + "approve": "Approve", + "reject": "Reject", + "acceptPlan": "Accept Plan", + "generateNewPlan": "Generate New Plan" + }, + "learnPlanButton": { + "missingSessionOrUser": "Missing session or user information", + "creatingPlan": "Creating plan from conversation...", + "planCreatedSuccessfully": "Plan created successfully!", + "failedToCreatePlan": "Failed to create plan", + "unknownError": "Unknown error", + "planSavedToLibrary": "This plan has been saved to your library", + "planLearned": "Plan Learned", + "creatingPlanFromConversation": "Creating a plan from this conversation", + "learningPlan": "Learning Plan...", + "learnReusablePlan": "Learn a reusable plan from this conversation and save it to your library", + "learnPlan": "Learn Plan" + }, + "fileRenderer": { + "loadingFileContent": "Loading file content...", + "processingLargeFile": "Processing large file...", + "noContentAvailable": "No content available", + "unableToPreviewFileType": "Unable to preview this file type", + "filename": "Filename", + "downloadFile": "Download file", + "close": "Close" + }, + "sessionManager": { + "noSessionsFound": "No sessions found, creating default session...", + "errorLoadingSessions": "Error loading sessions", + "errorCreatingDefaultSession": "Error creating default session" + }, + "planView": { + "youCanEditDirectlyOrThroughChat": "You can edit it directly or through the chat.", + "saving": "Saving...", + "errorSavingChanges": "Error saving changes", + "addStep": "Add Step", + "planFor": "Plan for:", + "step": "Step", + "enterStepDetails": "Enter step details", + "potentiallyRelevantPlanFromMemory": "Potentially relevant plan retrieved from memory.", + "heresAPlan": "Here's a plan.", + "planCollapsed": "Plan collapsed" + }, + "sessionEditor": { + "errorLoadingTeams": "Error loading teams", + "sessionUpdatedSuccessfully": "Session updated successfully", + "sessionCreatedSuccessfully": "Session created successfully", + "pleaseCheckFormForErrors": "Please check the form for errors", + "editSession": "Edit Session", + "createSession": "Create Session" + }, + "agents": { + "coder": "Coder", + "webSurfer": "WebSurfer", + "fileSurfer": "FileSurfer", + "user": "User", + "selfReflection": "Self-Reflection", + "agent": "Agent" + }, + "signIn": { + "usernameCannotBeEmpty": "Username cannot be empty", + "enterUsername": "Enter a username", + "changeUsernameWillCreateNewProfile": "A change of username will create a new profile", + "signIn": "Sign In" + }, + "detailViewer": { + "waitingForBrowserSessionToStart": "Waiting for browser session to start..." + }, + "filesViewer": { + "uploadFiles": "Upload Files", + "upload": "Upload", + "cancel": "Cancel", + "refresh": "Refresh", + "selectFiles": "Select Files", + "noFilesFound": "No files found", + "uploadFilesToGetStarted": "Upload files to get started", + "download": "Download", + "delete": "Delete" + } +} \ No newline at end of file diff --git a/frontend/src/i18n/locales/zh-CN.json b/frontend/src/i18n/locales/zh-CN.json new file mode 100644 index 00000000..ee70f735 --- /dev/null +++ b/frontend/src/i18n/locales/zh-CN.json @@ -0,0 +1,364 @@ +{ + "common": { + "loading": "加载中...", + "error": "错误", + "success": "成功", + "cancel": "取消", + "confirm": "确认", + "save": "保存", + "delete": "删除", + "edit": "编辑", + "add": "添加", + "close": "关闭", + "back": "返回", + "next": "下一步", + "previous": "上一步", + "submit": "提交", + "reset": "重置", + "search": "搜索", + "filter": "筛选", + "sort": "排序", + "refresh": "刷新", + "copy": "复制", + "paste": "粘贴", + "cut": "剪切", + "undo": "撤销", + "redo": "重做", + "retry": "重试", + "on": "开启", + "off": "关闭" + }, + "theme": { + "light": "浅色模式", + "dark": "深色模式", + "spirits": "Magentic-UI模式", + "theme": "主题" + }, + "language": { + "zh-CN": "中文", + "en-US": "English", + "language": "语言" + }, + "header": { + "title": "Magentic UI", + "logo": "Magentic UI Logo", + "closeSidebar": "关闭侧边栏", + "openSidebar": "打开侧边栏", + "createNewSession": "创建新会话", + "viewProfile": "查看或更新您的个人资料", + "settings": "设置" + }, + "sidebar": { + "currentSession": "当前会话", + "savedPlans": "已保存的计划", + "sessions": "会话", + "disconnect": "断开连接", + "createNewSession": "创建新会话", + "newSession": "新会话", + "noRecentSessions": "未找到最近的会话", + "today": "今天", + "yesterday": "昨天", + "last7Days": "最近7天", + "last30Days": "最近30天", + "older": "更早" + }, + "plans": { + "errorOccurred": "发生错误", + "pleaseSignIn": "请登录以查看您的计划", + "planDeletedSuccessfully": "计划删除成功", + "creatingNewSession": "正在从计划创建新会话...", + "planPrefix": "计划", + "errorCreatingSession": "创建会话时出错", + "newPlan": "新计划", + "newPlanCreatedSuccessfully": "新计划创建成功", + "failedToCreatePlan": "创建计划失败", + "invalidJsonFormat": "无效的JSON文件格式。请检查您的文件并重试。", + "invalidPlanFormat": "无效的计划格式。文件不包含有效的计划结构。", + "importedPlan": "导入的计划", + "planImportedSuccessfully": "计划导入成功", + "failedToImportPlan": "导入计划失败", + "pleaseUploadJsonFile": "请上传JSON文件", + "loadingPlans": "正在加载计划...", + "dropPlanFileHere": "将您的计划文件拖放到此处以导入", + "yourSavedPlans": "您保存的计划", + "createNewEmptyPlan": "创建一个新的空计划", + "create": "创建", + "importPlanFromJson": "从JSON文件导入计划", + "import": "导入", + "searchPlans": "搜索计划...", + "noPlansFoundMatching": "未找到匹配\"{searchTerm}\"的计划", + "clearSearch": "清除搜索", + "noPlansYet": "还没有计划。创建一个或导入现有计划。" + }, + "navigation": { + "home": "首页", + "settings": "设置", + "help": "帮助", + "about": "关于" + }, + "chat": { + "inputPlaceholder": "在此输入您的回复,让Magentic-UI了解浏览器中的任何变化。", + "send": "发送", + "clear": "清空", + "newChat": "新对话", + "history": "对话历史", + "failedToLoadHistory": "加载聊天历史失败", + "errorDuringProcessing": "请求处理过程中出错", + "unknownError": "发生未知错误", + "websocketNotAvailable": "WebSocket连接不可用", + "cancelledByUser": "用户取消", + "couldNotSetupRun": "无法设置运行", + "regeneratePlanMessage": "重新生成一个改进当前计划的计划", + "failedToStartTask": "启动任务失败", + "websocketNotAvailableOrNotOpen": "WebSocket不可用或未打开", + "savedPlanForTask": "已保存任务计划", + "errorProcessingPlanForSession": "处理会话计划时出错", + "planAccepted": "计划已接受", + "enterMessageToGetStarted": "输入消息开始对话", + "noRunFound": "未找到运行", + "socketFailedToConnect": "Socket连接失败", + "invalidSessionConfiguration": "无效的会话配置" + }, + "settings": { + "title": "设置", + "general": "常规", + "agents": "代理设置", + "advanced": "高级设置", + "modelConfiguration": "模型配置", + "resetToDefaults": "重置为默认值", + "settingsChangesWarning": "警告:设置更改只会在您创建新会话时生效", + "updatedSettings": "设置已更新!", + "failedToSaveSettings": "保存设置失败", + "failedToLoadSettings": "加载设置失败,使用默认值。", + "modelConfigurationTooltip1": "代理底层LLM的YAML配置。", + "modelConfigurationTooltip2": "配置使用AutoGen ChatCompletionClient格式。", + "modelConfigurationTooltip3": "必须包含以下配置:orchestrator_client、coder_client、web_surfer_client和file_surfer_client。", + "modelConfigurationTooltip4": "每个客户端都应遵循AutoGen ChatCompletionClient规范,包含provider、config(模型等)和max_retries。", + "modelConfigurationTooltip5": "更改需要新会话才能生效。", + "importYaml": "导入YAML", + "selectLlmForAllClients": "为所有客户端选择LLM", + "selectLlmForAllClientsTooltip": "这将更新所有代理客户端(orchestrator、coder、web surfer和file surfer)的模型配置", + "selectModelPlaceholder": "选择用于所有客户端的模型", + "advancedConfiguration": "高级配置 (YAML)" + }, + "generalSettings": { + "title": "常规设置", + "theme": "主题", + "language": "语言", + "allowedWebsites": "允许的网站列表", + "allowedWebsitesTooltip": "启用后,Magentic-UI只能访问您添加到下面列表中的网站。", + "maxActionsPerStep": "每步最大操作数", + "multipleToolsPerCall": "每次调用允许多个工具", + "maxTurns": "最大轮次", + "approvalPolicy": "审批策略", + "approvalPolicyAlways": "总是", + "approvalPolicyNever": "从不", + "approvalPolicyAutoConservative": "自动保守", + "approvalPolicyAutoPermissive": "自动宽松", + "approvalPolicyTooltip": "控制在执行操作前何时需要审批", + "allowReplans": "允许重新规划", + "allowReplansTooltip": "启用后,如果当前计划不起作用或您更改原始请求,Magentic-UI将自动重新规划", + "doBingSearch": "使用必应搜索进行规划", + "doBingSearchTooltip": "启用后,Magentic-UI在制定计划时将使用必应搜索。注意这会增加10秒的规划时间。", + "retrieveRelevantPlans": "检索相关计划", + "retrieveRelevantPlansTooltip": "控制Magentic-UI如何从之前的会话中检索和使用相关计划", + "retrieveRelevantPlansNever": "从不", + "retrieveRelevantPlansHint": "提示", + "retrieveRelevantPlansReuse": "重用", + "browserHeadless": "浏览器无头模式", + "browserHeadlessTooltip": "仅在不使用docker运行时适用。启用后,浏览器将在无头模式下运行(无UI)。", + "restrictedToList": "限制为列表", + "allWebsitesAllowed": "允许所有网站", + "validationWarning": "您必须至少添加一个网站到允许的网站列表,或关闭此功能" + }, + "agentSettings": { + "title": "代理设置", + "modelSelector": "模型选择器", + "mcpAgents": "MCP代理", + "mcpAgentsDescription": "通过添加连接到本地或远程模型上下文协议(MCP)服务器的自定义代理来扩展Magentic-UI的功能!", + "setLlmForEachAgent": "为每个代理设置LLM", + "setLlmForAllAgents": "为所有代理设置LLM", + "toggleBasicAdvancedTooltip": "在基本和高级设置之间切换", + "advanced": "高级", + "customAgents": "自定义代理", + "orchestrator": "编排器", + "webSurfer": "网页浏览", + "coder": "编码器", + "fileSurfer": "文件浏览", + "actionGuard": "操作守卫" + }, + "advancedSettings": { + "title": "高级设置", + "advancedConfiguration": "高级配置 (YAML)", + "unsupportedFileType": "不支持的文件类型", + "failedToParseFile": "解析上传文件失败", + "upload": "上传", + "applyChanges": "应用更改", + "discardChanges": "放弃更改", + "errorCount": "{{count}} 个错误" + }, + "security": { + "securityNote": "安全提示:", + "securityNoteText": "Magentic-UI无法看到您控制时所做的操作。在输入密码或敏感信息时要小心。", + "cantSee": "Magentic-UI无法看到您控制时所做的操作。", + "giveControlBack": "将控制权交还给Magentic-UI" + }, + "feedback": { + "title": "反馈", + "description": "请告诉我们您的体验如何", + "rating": "评分", + "comment": "评论", + "submit": "提交反馈" + }, + "errors": { + "pageNotFound": "页面未找到", + "pageNotFoundTitle": "页面未找到 | Magentic-UI", + "connectionError": "连接错误", + "serverError": "服务器错误", + "validationError": "验证错误" + }, + "messages": { + "mistakes": "Magentic-UI可能会犯错。请监控其工作并在必要时进行干预。" + }, + "sampleTasks": { + "orTrySampleTask": "或尝试下面的示例任务", + "showLess": "显示更少...", + "showMore": "显示更多示例任务...", + "guangzhouWeather": "广州今天的天气怎么样?", + "postOfficeHours": "我家附近的邮局今天什么时候关门?", + "microsoftResearchPapers": "微软研究院人工智能前沿实验室的最新论文有哪些?", + "markitdownMCPCommit": "微软/markitdown仓库中,哪个commit引入了MCP支持?", + "autogenSummaryPython": "用python写一个Markdown文件,总结微软AutoGen仓库的内容。", + "customPizzaOrder": "从Tangle Town Pub订一个包含香肠、菠萝和黑橄榄的披萨。", + "arxivComputerAgents": "搜索arXiv,获取最新的计算机使用代理的论文。" + }, + "planCard": { + "confirmDelete": "您确定要删除\"{{task}}\"吗?", + "untitledPlan": "未命名计划", + "exportPlanTooltip": "将计划导出为JSON文件", + "exportPlan": "导出计划", + "deletePlanTooltip": "删除此计划", + "deletePlan": "删除计划", + "runPlanTooltip": "创建加载此计划的新会话", + "runPlan": "运行计划", + "editPlanTooltip": "修改计划标题和步骤", + "edit": "编辑", + "stepsCount": "{{count}} 步骤", + "stepNumber": "步骤 {{number}}", + "moreSteps": "+ {{count}} 更多步骤", + "planTitle": "计划标题", + "enterPlanTitle": "输入计划标题" + }, + "chatInput": { + "imagePastedSuccessfully": "图片粘贴成功", + "imageTooLarge": "粘贴的图片太大。最大大小为5MB。", + "largeTextConvertedToFile": "大文本已转换为文件", + "largeTextConvertedToFileDescription": "您粘贴的文本已作为文件附加。", + "fileTooLarge": "{{fileName}} 太大。最大大小为50MB。", + "unsupportedFileType": "不支持的文件类型", + "unsupportedFileTypeDescription": "请仅上传文本(.txt)、CSV(.csv)、Excel(.xls, .xlsx)或图片(.jpg, .png, .gif, .svg)文件。", + "uploadingFiles": "正在上传文件...", + "filesUploadedSuccessfully": "文件上传成功", + "failedToUploadFiles": "文件上传失败", + "dropFilesHere": "在此放置文件...", + "typeMessageHere": "在此输入您的消息...", + "attachFile": "附加文件", + "attachPlan": "附加计划", + "noPlansAvailable": "没有可用的计划", + "attachFileOrPlan": "附加文件或计划", + "uploadedFiles": "已上传文件", + "plan": "计划" + }, + "statusIcon": { + "processing": "处理中", + "approvalRequest": "审批请求", + "waitingForApproval": "等待审批", + "waitingForInput": "等待您的输入", + "errorOccurred": "发生错误", + "taskStopped": "任务已停止", + "pausing": "暂停中", + "paused": "已暂停", + "resuming": "恢复中" + }, + "approvalButtons": { + "approve": "批准", + "reject": "拒绝", + "acceptPlan": "接受计划", + "generateNewPlan": "生成新计划" + }, + "learnPlanButton": { + "missingSessionOrUser": "缺少会话或用户信息", + "creatingPlan": "正在从对话创建计划...", + "planCreatedSuccessfully": "计划创建成功!", + "failedToCreatePlan": "创建计划失败", + "unknownError": "未知错误", + "planSavedToLibrary": "此计划已保存到您的库中", + "planLearned": "计划已学习", + "creatingPlanFromConversation": "正在从对话创建计划", + "learningPlan": "学习计划中...", + "learnReusablePlan": "从对话中学习可重用计划并保存到您的库中", + "learnPlan": "学习计划" + }, + "fileRenderer": { + "loadingFileContent": "正在加载文件内容...", + "processingLargeFile": "正在处理大文件...", + "noContentAvailable": "无可用内容", + "unableToPreviewFileType": "无法预览此文件类型", + "filename": "文件名", + "downloadFile": "下载文件", + "close": "关闭" + }, + "sessionManager": { + "noSessionsFound": "未找到会话,正在创建默认会话...", + "errorLoadingSessions": "加载会话时出错", + "errorCreatingDefaultSession": "创建默认会话时出错" + }, + "planView": { + "youCanEditDirectlyOrThroughChat": "您可以直接编辑或通过聊天编辑。", + "saving": "保存中...", + "errorSavingChanges": "保存更改时出错", + "addStep": "添加步骤", + "planFor": "计划:", + "step": "步骤", + "enterStepDetails": "输入步骤详情", + "potentiallyRelevantPlanFromMemory": "从记忆中检索到的潜在相关计划。", + "heresAPlan": "这是一个计划。", + "planCollapsed": "计划已折叠" + }, + "sessionEditor": { + "errorLoadingTeams": "加载团队时出错", + "sessionUpdatedSuccessfully": "会话更新成功", + "sessionCreatedSuccessfully": "会话创建成功", + "pleaseCheckFormForErrors": "请检查表单是否有错误", + "editSession": "编辑会话", + "createSession": "创建会话" + }, + "agents": { + "coder": "代码代理", + "webSurfer": "网页浏览代理", + "fileSurfer": "文件浏览代理", + "user": "用户", + "selfReflection": "自我反思", + "agent": "代理" + }, + "signIn": { + "usernameCannotBeEmpty": "用户名不能为空", + "enterUsername": "输入用户名", + "changeUsernameWillCreateNewProfile": "更改用户名将创建新配置文件", + "signIn": "登录" + }, + "detailViewer": { + "waitingForBrowserSessionToStart": "等待浏览器会话启动..." + }, + "filesViewer": { + "uploadFiles": "上传文件", + "upload": "上传", + "cancel": "取消", + "refresh": "刷新", + "selectFiles": "选择文件", + "noFilesFound": "未找到文件", + "uploadFilesToGetStarted": "上传文件以开始", + "download": "下载", + "delete": "删除" + } +} \ No newline at end of file diff --git a/frontend/src/pages/404.tsx b/frontend/src/pages/404.tsx index eb24bc08..63542f50 100644 --- a/frontend/src/pages/404.tsx +++ b/frontend/src/pages/404.tsx @@ -1,4 +1,5 @@ -import * as React from "react" +import React from "react"; +import { useTranslation } from "react-i18next"; import { Link, HeadFC, PageProps } from "gatsby" const containerStyle: React.CSSProperties = { @@ -46,6 +47,7 @@ const linkStyle: React.CSSProperties = { } const NotFoundPage: React.FC = () => { + const { t } = useTranslation(); return (

404

@@ -66,4 +68,7 @@ const NotFoundPage: React.FC = () => { export default NotFoundPage -export const Head: HeadFC = () => Page Not Found | Magentic-UI +export const Head: HeadFC = () => { + const { t } = useTranslation(); + return {t('errors.pageNotFoundTitle')} +} diff --git a/frontend/yarn.lock b/frontend/yarn.lock index 5af65fdc..5c80838b 100644 --- a/frontend/yarn.lock +++ b/frontend/yarn.lock @@ -32,9 +32,9 @@ rc-util "^5.38.0" "@ant-design/cssinjs@^1.21.0", "@ant-design/cssinjs@^1.23.0": - version "1.23.0" - resolved "https://registry.yarnpkg.com/@ant-design/cssinjs/-/cssinjs-1.23.0.tgz#492efba9b15d64f42a4cb5d568cab0607d0c2b16" - integrity sha512-7GAg9bD/iC9ikWatU9ym+P9ugJhi/WbsTWzcKN6T4gU0aehsprtke1UAaaSxxkjjmkJb3llet/rbUSLPgwlY4w== + version "1.24.0" + resolved "https://registry.yarnpkg.com/@ant-design/cssinjs/-/cssinjs-1.24.0.tgz#7db091f03f189abc77a13cbd27a2293802cd7285" + integrity sha512-K4cYrJBsgvL+IoozUXYjbT6LHHNt+19a9zkvpBPxLjFHas1UpPM2A5MlhROb0BT8N8WoavM5VsP9MeSeNK/3mg== dependencies: "@babel/runtime" "^7.11.1" "@emotion/hash" "^0.8.0" @@ -108,35 +108,35 @@ dependencies: "@babel/highlight" "^7.10.4" -"@babel/code-frame@^7.0.0", "@babel/code-frame@^7.16.0", "@babel/code-frame@^7.18.6", "@babel/code-frame@^7.25.9", "@babel/code-frame@^7.26.0", "@babel/code-frame@^7.26.2", "@babel/code-frame@^7.8.3": - version "7.26.2" - resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.26.2.tgz#4b5fab97d33338eff916235055f0ebc21e573a85" - integrity sha512-RJlIHRueQgwWitWgF8OdFYGZX328Ax5BCemNGlqHfplnRT9ESi8JkFlvaVYbS+UubVY6dpv87Fs2u5M29iNFVQ== +"@babel/code-frame@^7.0.0", "@babel/code-frame@^7.16.0", "@babel/code-frame@^7.18.6", "@babel/code-frame@^7.27.1", "@babel/code-frame@^7.8.3": + version "7.27.1" + resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.27.1.tgz#200f715e66d52a23b221a9435534a91cc13ad5be" + integrity sha512-cjQ7ZlQ0Mv3b47hABuTevyTuYN4i+loJKGeV9flcCgIK37cCXRh+L1bd3iBHlynerhQ7BhCkn2BPbQUL+rGqFg== dependencies: - "@babel/helper-validator-identifier" "^7.25.9" + "@babel/helper-validator-identifier" "^7.27.1" js-tokens "^4.0.0" - picocolors "^1.0.0" + picocolors "^1.1.1" -"@babel/compat-data@^7.20.5", "@babel/compat-data@^7.22.6", "@babel/compat-data@^7.25.9", "@babel/compat-data@^7.26.0": - version "7.26.3" - resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.26.3.tgz#99488264a56b2aded63983abd6a417f03b92ed02" - integrity sha512-nHIxvKPniQXpmQLb0vhY3VaFb3S0YrTAwpOWJZh1wn3oJPjJk9Asva204PsBdmAE8vpzfHudT8DB0scYvy9q0g== +"@babel/compat-data@^7.20.5", "@babel/compat-data@^7.27.2", "@babel/compat-data@^7.27.7", "@babel/compat-data@^7.28.0": + version "7.28.0" + resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.28.0.tgz#9fc6fd58c2a6a15243cd13983224968392070790" + integrity sha512-60X7qkglvrap8mn1lh2ebxXdZYtUcpd7gsmy9kLaBJ4i/WdY8PqTSdxyA8qraikqKQK5C1KRBKXqznrVapyNaw== "@babel/core@^7.14.0", "@babel/core@^7.20.12": - version "7.26.0" - resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.26.0.tgz#d78b6023cc8f3114ccf049eb219613f74a747b40" - integrity sha512-i1SLeK+DzNnQ3LL/CswPCa/E5u4lh1k6IAEphON8F+cXt0t9euTshDru0q7/IqMa1PMPz5RnHuHscF8/ZJsStg== + version "7.28.0" + resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.28.0.tgz#55dad808d5bf3445a108eefc88ea3fdf034749a4" + integrity sha512-UlLAnTPrFdNGoFtbSXwcGFQBtQZJCNjaN6hQNP3UPvuNXT1i82N26KL3dZeIpNalWywr9IuQuncaAfUaS1g6sQ== dependencies: "@ampproject/remapping" "^2.2.0" - "@babel/code-frame" "^7.26.0" - "@babel/generator" "^7.26.0" - "@babel/helper-compilation-targets" "^7.25.9" - "@babel/helper-module-transforms" "^7.26.0" - "@babel/helpers" "^7.26.0" - "@babel/parser" "^7.26.0" - "@babel/template" "^7.25.9" - "@babel/traverse" "^7.25.9" - "@babel/types" "^7.26.0" + "@babel/code-frame" "^7.27.1" + "@babel/generator" "^7.28.0" + "@babel/helper-compilation-targets" "^7.27.2" + "@babel/helper-module-transforms" "^7.27.3" + "@babel/helpers" "^7.27.6" + "@babel/parser" "^7.28.0" + "@babel/template" "^7.27.2" + "@babel/traverse" "^7.28.0" + "@babel/types" "^7.28.0" convert-source-map "^2.0.0" debug "^4.1.0" gensync "^1.0.0-beta.2" @@ -144,170 +144,175 @@ semver "^6.3.1" "@babel/eslint-parser@^7.19.1": - version "7.25.9" - resolved "https://registry.yarnpkg.com/@babel/eslint-parser/-/eslint-parser-7.25.9.tgz#603c68a63078796527bc9d0833f5e52dd5f9224c" - integrity sha512-5UXfgpK0j0Xr/xIdgdLEhOFxaDZ0bRPWJJchRpqOSur/3rZoPbqqki5mm0p4NE2cs28krBEiSM2MB7//afRSQQ== + version "7.28.0" + resolved "https://registry.yarnpkg.com/@babel/eslint-parser/-/eslint-parser-7.28.0.tgz#c1b3fbba070f5bac32e3d02f244201add4afdd6e" + integrity sha512-N4ntErOlKvcbTt01rr5wj3y55xnIdx1ymrfIr8C2WnM1Y9glFgWaGDEULJIazOX3XM9NRzhfJ6zZnQ1sBNWU+w== dependencies: "@nicolo-ribaudo/eslint-scope-5-internals" "5.1.1-v1" eslint-visitor-keys "^2.1.0" semver "^6.3.1" -"@babel/generator@^7.14.0", "@babel/generator@^7.20.14", "@babel/generator@^7.26.0", "@babel/generator@^7.26.3": - version "7.26.3" - resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.26.3.tgz#ab8d4360544a425c90c248df7059881f4b2ce019" - integrity sha512-6FF/urZvD0sTeO7k6/B15pMLC4CHUv1426lzr3N01aHJTl046uCAh9LXW/fzeXXjPNCJ6iABW5XaWOsIZB93aQ== +"@babel/generator@^7.14.0", "@babel/generator@^7.20.14", "@babel/generator@^7.28.0": + version "7.28.0" + resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.28.0.tgz#9cc2f7bd6eb054d77dc66c2664148a0c5118acd2" + integrity sha512-lJjzvrbEeWrhB4P3QBsH7tey117PjLZnDbLiQEKjQ/fNJTjuq4HSqgFA+UNSwZT8D7dxxbnuSBMsa1lrWzKlQg== dependencies: - "@babel/parser" "^7.26.3" - "@babel/types" "^7.26.3" - "@jridgewell/gen-mapping" "^0.3.5" - "@jridgewell/trace-mapping" "^0.3.25" + "@babel/parser" "^7.28.0" + "@babel/types" "^7.28.0" + "@jridgewell/gen-mapping" "^0.3.12" + "@jridgewell/trace-mapping" "^0.3.28" jsesc "^3.0.2" -"@babel/helper-annotate-as-pure@^7.25.9": - version "7.25.9" - resolved "https://registry.yarnpkg.com/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.25.9.tgz#d8eac4d2dc0d7b6e11fa6e535332e0d3184f06b4" - integrity sha512-gv7320KBUFJz1RnylIg5WWYPRXKZ884AGkYpgpWW02TH66Dl+HaC1t1CKd0z3R4b6hdYEcmrNZHUmfCP+1u3/g== +"@babel/helper-annotate-as-pure@^7.27.1", "@babel/helper-annotate-as-pure@^7.27.3": + version "7.27.3" + resolved "https://registry.yarnpkg.com/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.27.3.tgz#f31fd86b915fc4daf1f3ac6976c59be7084ed9c5" + integrity sha512-fXSwMQqitTGeHLBC08Eq5yXz2m37E4pJX1qAU1+2cNedz/ifv/bVXft90VeSav5nFO61EcNgwr0aJxbyPaWBPg== dependencies: - "@babel/types" "^7.25.9" + "@babel/types" "^7.27.3" -"@babel/helper-compilation-targets@^7.20.7", "@babel/helper-compilation-targets@^7.22.6", "@babel/helper-compilation-targets@^7.25.9": - version "7.25.9" - resolved "https://registry.yarnpkg.com/@babel/helper-compilation-targets/-/helper-compilation-targets-7.25.9.tgz#55af025ce365be3cdc0c1c1e56c6af617ce88875" - integrity sha512-j9Db8Suy6yV/VHa4qzrj9yZfZxhLWQdVnRlXxmKLYlhWUVB1sB2G5sxuWYXk/whHD9iW76PmNzxZ4UCnTQTVEQ== +"@babel/helper-compilation-targets@^7.20.7", "@babel/helper-compilation-targets@^7.27.1", "@babel/helper-compilation-targets@^7.27.2": + version "7.27.2" + resolved "https://registry.yarnpkg.com/@babel/helper-compilation-targets/-/helper-compilation-targets-7.27.2.tgz#46a0f6efab808d51d29ce96858dd10ce8732733d" + integrity sha512-2+1thGUUWWjLTYTHZWK1n8Yga0ijBz1XAhUXcKy81rd5g6yh7hGqMp45v7cadSbEHc9G3OTv45SyneRN3ps4DQ== dependencies: - "@babel/compat-data" "^7.25.9" - "@babel/helper-validator-option" "^7.25.9" + "@babel/compat-data" "^7.27.2" + "@babel/helper-validator-option" "^7.27.1" browserslist "^4.24.0" lru-cache "^5.1.1" semver "^6.3.1" -"@babel/helper-create-class-features-plugin@^7.18.6", "@babel/helper-create-class-features-plugin@^7.25.9": - version "7.25.9" - resolved "https://registry.yarnpkg.com/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.25.9.tgz#7644147706bb90ff613297d49ed5266bde729f83" - integrity sha512-UTZQMvt0d/rSz6KI+qdu7GQze5TIajwTS++GUozlw8VBJDEOAqSXwm1WvmYEZwqdqSGQshRocPDqrt4HBZB3fQ== - dependencies: - "@babel/helper-annotate-as-pure" "^7.25.9" - "@babel/helper-member-expression-to-functions" "^7.25.9" - "@babel/helper-optimise-call-expression" "^7.25.9" - "@babel/helper-replace-supers" "^7.25.9" - "@babel/helper-skip-transparent-expression-wrappers" "^7.25.9" - "@babel/traverse" "^7.25.9" +"@babel/helper-create-class-features-plugin@^7.18.6", "@babel/helper-create-class-features-plugin@^7.27.1": + version "7.27.1" + resolved "https://registry.yarnpkg.com/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.27.1.tgz#5bee4262a6ea5ddc852d0806199eb17ca3de9281" + integrity sha512-QwGAmuvM17btKU5VqXfb+Giw4JcN0hjuufz3DYnpeVDvZLAObloM77bhMXiqry3Iio+Ai4phVRDwl6WU10+r5A== + dependencies: + "@babel/helper-annotate-as-pure" "^7.27.1" + "@babel/helper-member-expression-to-functions" "^7.27.1" + "@babel/helper-optimise-call-expression" "^7.27.1" + "@babel/helper-replace-supers" "^7.27.1" + "@babel/helper-skip-transparent-expression-wrappers" "^7.27.1" + "@babel/traverse" "^7.27.1" semver "^6.3.1" -"@babel/helper-create-regexp-features-plugin@^7.18.6", "@babel/helper-create-regexp-features-plugin@^7.25.9": - version "7.26.3" - resolved "https://registry.yarnpkg.com/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.26.3.tgz#5169756ecbe1d95f7866b90bb555b022595302a0" - integrity sha512-G7ZRb40uUgdKOQqPLjfD12ZmGA54PzqDFUv2BKImnC9QIfGhIHKvVML0oN8IUiDq4iRqpq74ABpvOaerfWdong== +"@babel/helper-create-regexp-features-plugin@^7.18.6", "@babel/helper-create-regexp-features-plugin@^7.27.1": + version "7.27.1" + resolved "https://registry.yarnpkg.com/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.27.1.tgz#05b0882d97ba1d4d03519e4bce615d70afa18c53" + integrity sha512-uVDC72XVf8UbrH5qQTc18Agb8emwjTiZrQE11Nv3CuBEZmVvTwwE9CBUEvHku06gQCAyYf8Nv6ja1IN+6LMbxQ== dependencies: - "@babel/helper-annotate-as-pure" "^7.25.9" + "@babel/helper-annotate-as-pure" "^7.27.1" regexpu-core "^6.2.0" semver "^6.3.1" -"@babel/helper-define-polyfill-provider@^0.6.2", "@babel/helper-define-polyfill-provider@^0.6.3": - version "0.6.3" - resolved "https://registry.yarnpkg.com/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.6.3.tgz#f4f2792fae2ef382074bc2d713522cf24e6ddb21" - integrity sha512-HK7Bi+Hj6H+VTHA3ZvBis7V/6hu9QuTrnMXNybfUf2iiuU/N97I8VjB+KbhFF8Rld/Lx5MzoCwPCpPjfK+n8Cg== +"@babel/helper-define-polyfill-provider@^0.6.5": + version "0.6.5" + resolved "https://registry.yarnpkg.com/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.6.5.tgz#742ccf1cb003c07b48859fc9fa2c1bbe40e5f753" + integrity sha512-uJnGFcPsWQK8fvjgGP5LZUZZsYGIoPeRjSF5PGwrelYgq7Q15/Ft9NGFp1zglwgIv//W0uG4BevRuSJRyylZPg== dependencies: - "@babel/helper-compilation-targets" "^7.22.6" - "@babel/helper-plugin-utils" "^7.22.5" - debug "^4.1.1" + "@babel/helper-compilation-targets" "^7.27.2" + "@babel/helper-plugin-utils" "^7.27.1" + debug "^4.4.1" lodash.debounce "^4.0.8" - resolve "^1.14.2" - -"@babel/helper-member-expression-to-functions@^7.25.9": - version "7.25.9" - resolved "https://registry.yarnpkg.com/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.25.9.tgz#9dfffe46f727005a5ea29051ac835fb735e4c1a3" - integrity sha512-wbfdZ9w5vk0C0oyHqAJbc62+vet5prjj01jjJ8sKn3j9h3MQQlflEdXYvuqRWjHnM12coDEqiC1IRCi0U/EKwQ== - dependencies: - "@babel/traverse" "^7.25.9" - "@babel/types" "^7.25.9" - -"@babel/helper-module-imports@^7.0.0", "@babel/helper-module-imports@^7.25.9": - version "7.25.9" - resolved "https://registry.yarnpkg.com/@babel/helper-module-imports/-/helper-module-imports-7.25.9.tgz#e7f8d20602ebdbf9ebbea0a0751fb0f2a4141715" - integrity sha512-tnUA4RsrmflIM6W6RFTLFSXITtl0wKjgpnLgXyowocVPrbYrLUXSBXDgTs8BlbmIzIdlBySRQjINYs2BAkiLtw== - dependencies: - "@babel/traverse" "^7.25.9" - "@babel/types" "^7.25.9" - -"@babel/helper-module-transforms@^7.25.9", "@babel/helper-module-transforms@^7.26.0": - version "7.26.0" - resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.26.0.tgz#8ce54ec9d592695e58d84cd884b7b5c6a2fdeeae" - integrity sha512-xO+xu6B5K2czEnQye6BHA7DolFFmS3LB7stHZFaOLb1pAwO1HWLS8fXA+eh0A2yIvltPVmx3eNNDBJA2SLHXFw== - dependencies: - "@babel/helper-module-imports" "^7.25.9" - "@babel/helper-validator-identifier" "^7.25.9" - "@babel/traverse" "^7.25.9" - -"@babel/helper-optimise-call-expression@^7.25.9": - version "7.25.9" - resolved "https://registry.yarnpkg.com/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.25.9.tgz#3324ae50bae7e2ab3c33f60c9a877b6a0146b54e" - integrity sha512-FIpuNaz5ow8VyrYcnXQTDRGvV6tTjkNtCK/RYNDXGSLlUD6cBuQTSw43CShGxjvfBTfcUA/r6UhUCbtYqkhcuQ== - dependencies: - "@babel/types" "^7.25.9" - -"@babel/helper-plugin-utils@^7.0.0", "@babel/helper-plugin-utils@^7.10.4", "@babel/helper-plugin-utils@^7.12.13", "@babel/helper-plugin-utils@^7.18.6", "@babel/helper-plugin-utils@^7.20.2", "@babel/helper-plugin-utils@^7.22.5", "@babel/helper-plugin-utils@^7.25.9", "@babel/helper-plugin-utils@^7.8.0": - version "7.25.9" - resolved "https://registry.yarnpkg.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.25.9.tgz#9cbdd63a9443a2c92a725cca7ebca12cc8dd9f46" - integrity sha512-kSMlyUVdWe25rEsRGviIgOWnoT/nfABVWlqt9N19/dIPWViAOW2s9wznP5tURbs/IDuNk4gPy3YdYRgH3uxhBw== - -"@babel/helper-remap-async-to-generator@^7.25.9": - version "7.25.9" - resolved "https://registry.yarnpkg.com/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.25.9.tgz#e53956ab3d5b9fb88be04b3e2f31b523afd34b92" - integrity sha512-IZtukuUeBbhgOcaW2s06OXTzVNJR0ybm4W5xC1opWFFJMZbwRj5LCk+ByYH7WdZPZTt8KnFwA8pvjN2yqcPlgw== - dependencies: - "@babel/helper-annotate-as-pure" "^7.25.9" - "@babel/helper-wrap-function" "^7.25.9" - "@babel/traverse" "^7.25.9" - -"@babel/helper-replace-supers@^7.25.9": - version "7.25.9" - resolved "https://registry.yarnpkg.com/@babel/helper-replace-supers/-/helper-replace-supers-7.25.9.tgz#ba447224798c3da3f8713fc272b145e33da6a5c5" - integrity sha512-IiDqTOTBQy0sWyeXyGSC5TBJpGFXBkRynjBeXsvbhQFKj2viwJC76Epz35YLU1fpe/Am6Vppb7W7zM4fPQzLsQ== - dependencies: - "@babel/helper-member-expression-to-functions" "^7.25.9" - "@babel/helper-optimise-call-expression" "^7.25.9" - "@babel/traverse" "^7.25.9" - -"@babel/helper-skip-transparent-expression-wrappers@^7.20.0", "@babel/helper-skip-transparent-expression-wrappers@^7.25.9": - version "7.25.9" - resolved "https://registry.yarnpkg.com/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.25.9.tgz#0b2e1b62d560d6b1954893fd2b705dc17c91f0c9" - integrity sha512-K4Du3BFa3gvyhzgPcntrkDgZzQaq6uozzcpGbOO1OEJaI+EJdqWIMTLgFgQf6lrfiDFo5FU+BxKepI9RmZqahA== - dependencies: - "@babel/traverse" "^7.25.9" - "@babel/types" "^7.25.9" - -"@babel/helper-string-parser@^7.25.9": - version "7.25.9" - resolved "https://registry.yarnpkg.com/@babel/helper-string-parser/-/helper-string-parser-7.25.9.tgz#1aabb72ee72ed35789b4bbcad3ca2862ce614e8c" - integrity sha512-4A/SCr/2KLd5jrtOMFzaKjVtAei3+2r/NChoBNoZ3EyP/+GlhoaEGoWOZUmFmoITP7zOJyHIMm+DYRd8o3PvHA== - -"@babel/helper-validator-identifier@^7.25.9": - version "7.25.9" - resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.25.9.tgz#24b64e2c3ec7cd3b3c547729b8d16871f22cbdc7" - integrity sha512-Ed61U6XJc3CVRfkERJWDz4dJwKe7iLmmJsbOGu9wSloNSFttHV0I8g6UAgb7qnK5ly5bGLPd4oXZlxCdANBOWQ== - -"@babel/helper-validator-option@^7.25.9": - version "7.25.9" - resolved "https://registry.yarnpkg.com/@babel/helper-validator-option/-/helper-validator-option-7.25.9.tgz#86e45bd8a49ab7e03f276577f96179653d41da72" - integrity sha512-e/zv1co8pp55dNdEcCynfj9X7nyUKUXoUEwfXqaZt0omVOmDe9oOTdKStH4GmAw6zxMFs50ZayuMfHDKlO7Tfw== - -"@babel/helper-wrap-function@^7.25.9": - version "7.25.9" - resolved "https://registry.yarnpkg.com/@babel/helper-wrap-function/-/helper-wrap-function-7.25.9.tgz#d99dfd595312e6c894bd7d237470025c85eea9d0" - integrity sha512-ETzz9UTjQSTmw39GboatdymDq4XIQbR8ySgVrylRhPOFpsd+JrKHIuF0de7GCWmem+T4uC5z7EZguod7Wj4A4g== - dependencies: - "@babel/template" "^7.25.9" - "@babel/traverse" "^7.25.9" - "@babel/types" "^7.25.9" - -"@babel/helpers@^7.26.0": - version "7.26.10" - resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.26.10.tgz#6baea3cd62ec2d0c1068778d63cb1314f6637384" - integrity sha512-UPYc3SauzZ3JGgj87GgZ89JVdC5dj0AoetR5Bw6wj4niittNyFh6+eOGonYvJ1ao6B8lEa3Q3klS7ADZ53bc5g== - dependencies: - "@babel/template" "^7.26.9" - "@babel/types" "^7.26.10" + resolve "^1.22.10" + +"@babel/helper-globals@^7.28.0": + version "7.28.0" + resolved "https://registry.yarnpkg.com/@babel/helper-globals/-/helper-globals-7.28.0.tgz#b9430df2aa4e17bc28665eadeae8aa1d985e6674" + integrity sha512-+W6cISkXFa1jXsDEdYA8HeevQT/FULhxzR99pxphltZcVaugps53THCeiWA8SguxxpSp3gKPiuYfSWopkLQ4hw== + +"@babel/helper-member-expression-to-functions@^7.27.1": + version "7.27.1" + resolved "https://registry.yarnpkg.com/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.27.1.tgz#ea1211276be93e798ce19037da6f06fbb994fa44" + integrity sha512-E5chM8eWjTp/aNoVpcbfM7mLxu9XGLWYise2eBKGQomAk/Mb4XoxyqXTZbuTohbsl8EKqdlMhnDI2CCLfcs9wA== + dependencies: + "@babel/traverse" "^7.27.1" + "@babel/types" "^7.27.1" + +"@babel/helper-module-imports@^7.0.0", "@babel/helper-module-imports@^7.27.1": + version "7.27.1" + resolved "https://registry.yarnpkg.com/@babel/helper-module-imports/-/helper-module-imports-7.27.1.tgz#7ef769a323e2655e126673bb6d2d6913bbead204" + integrity sha512-0gSFWUPNXNopqtIPQvlD5WgXYI5GY2kP2cCvoT8kczjbfcfuIljTbcWrulD1CIPIX2gt1wghbDy08yE1p+/r3w== + dependencies: + "@babel/traverse" "^7.27.1" + "@babel/types" "^7.27.1" + +"@babel/helper-module-transforms@^7.27.1", "@babel/helper-module-transforms@^7.27.3": + version "7.27.3" + resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.27.3.tgz#db0bbcfba5802f9ef7870705a7ef8788508ede02" + integrity sha512-dSOvYwvyLsWBeIRyOeHXp5vPj5l1I011r52FM1+r1jCERv+aFXYk4whgQccYEGYxK2H3ZAIA8nuPkQ0HaUo3qg== + dependencies: + "@babel/helper-module-imports" "^7.27.1" + "@babel/helper-validator-identifier" "^7.27.1" + "@babel/traverse" "^7.27.3" + +"@babel/helper-optimise-call-expression@^7.27.1": + version "7.27.1" + resolved "https://registry.yarnpkg.com/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.27.1.tgz#c65221b61a643f3e62705e5dd2b5f115e35f9200" + integrity sha512-URMGH08NzYFhubNSGJrpUEphGKQwMQYBySzat5cAByY1/YgIRkULnIy3tAMeszlL/so2HbeilYloUmSpd7GdVw== + dependencies: + "@babel/types" "^7.27.1" + +"@babel/helper-plugin-utils@^7.0.0", "@babel/helper-plugin-utils@^7.10.4", "@babel/helper-plugin-utils@^7.12.13", "@babel/helper-plugin-utils@^7.18.6", "@babel/helper-plugin-utils@^7.20.2", "@babel/helper-plugin-utils@^7.27.1", "@babel/helper-plugin-utils@^7.8.0": + version "7.27.1" + resolved "https://registry.yarnpkg.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.27.1.tgz#ddb2f876534ff8013e6c2b299bf4d39b3c51d44c" + integrity sha512-1gn1Up5YXka3YYAHGKpbideQ5Yjf1tDa9qYcgysz+cNCXukyLl6DjPXhD3VRwSb8c0J9tA4b2+rHEZtc6R0tlw== + +"@babel/helper-remap-async-to-generator@^7.27.1": + version "7.27.1" + resolved "https://registry.yarnpkg.com/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.27.1.tgz#4601d5c7ce2eb2aea58328d43725523fcd362ce6" + integrity sha512-7fiA521aVw8lSPeI4ZOD3vRFkoqkJcS+z4hFo82bFSH/2tNd6eJ5qCVMS5OzDmZh/kaHQeBaeyxK6wljcPtveA== + dependencies: + "@babel/helper-annotate-as-pure" "^7.27.1" + "@babel/helper-wrap-function" "^7.27.1" + "@babel/traverse" "^7.27.1" + +"@babel/helper-replace-supers@^7.27.1": + version "7.27.1" + resolved "https://registry.yarnpkg.com/@babel/helper-replace-supers/-/helper-replace-supers-7.27.1.tgz#b1ed2d634ce3bdb730e4b52de30f8cccfd692bc0" + integrity sha512-7EHz6qDZc8RYS5ElPoShMheWvEgERonFCs7IAonWLLUTXW59DP14bCZt89/GKyreYn8g3S83m21FelHKbeDCKA== + dependencies: + "@babel/helper-member-expression-to-functions" "^7.27.1" + "@babel/helper-optimise-call-expression" "^7.27.1" + "@babel/traverse" "^7.27.1" + +"@babel/helper-skip-transparent-expression-wrappers@^7.20.0", "@babel/helper-skip-transparent-expression-wrappers@^7.27.1": + version "7.27.1" + resolved "https://registry.yarnpkg.com/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.27.1.tgz#62bb91b3abba8c7f1fec0252d9dbea11b3ee7a56" + integrity sha512-Tub4ZKEXqbPjXgWLl2+3JpQAYBJ8+ikpQ2Ocj/q/r0LwE3UhENh7EUabyHjz2kCEsrRY83ew2DQdHluuiDQFzg== + dependencies: + "@babel/traverse" "^7.27.1" + "@babel/types" "^7.27.1" + +"@babel/helper-string-parser@^7.27.1": + version "7.27.1" + resolved "https://registry.yarnpkg.com/@babel/helper-string-parser/-/helper-string-parser-7.27.1.tgz#54da796097ab19ce67ed9f88b47bb2ec49367687" + integrity sha512-qMlSxKbpRlAridDExk92nSobyDdpPijUq2DW6oDnUqd0iOGxmQjyqhMIihI9+zv4LPyZdRje2cavWPbCbWm3eA== + +"@babel/helper-validator-identifier@^7.25.9", "@babel/helper-validator-identifier@^7.27.1": + version "7.27.1" + resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.27.1.tgz#a7054dcc145a967dd4dc8fee845a57c1316c9df8" + integrity sha512-D2hP9eA+Sqx1kBZgzxZh0y1trbuU+JoDkiEwqhQ36nodYqJwyEIhPSdMNd7lOm/4io72luTPWH20Yda0xOuUow== + +"@babel/helper-validator-option@^7.27.1": + version "7.27.1" + resolved "https://registry.yarnpkg.com/@babel/helper-validator-option/-/helper-validator-option-7.27.1.tgz#fa52f5b1e7db1ab049445b421c4471303897702f" + integrity sha512-YvjJow9FxbhFFKDSuFnVCe2WxXk1zWc22fFePVNEaWJEu8IrZVlda6N0uHwzZrUM1il7NC9Mlp4MaJYbYd9JSg== + +"@babel/helper-wrap-function@^7.27.1": + version "7.27.1" + resolved "https://registry.yarnpkg.com/@babel/helper-wrap-function/-/helper-wrap-function-7.27.1.tgz#b88285009c31427af318d4fe37651cd62a142409" + integrity sha512-NFJK2sHUvrjo8wAU/nQTWU890/zB2jj0qBcCbZbbf+005cAsv6tMjXz31fBign6M5ov1o0Bllu+9nbqkfsjjJQ== + dependencies: + "@babel/template" "^7.27.1" + "@babel/traverse" "^7.27.1" + "@babel/types" "^7.27.1" + +"@babel/helpers@^7.27.6": + version "7.28.2" + resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.28.2.tgz#80f0918fecbfebea9af856c419763230040ee850" + integrity sha512-/V9771t+EgXz62aCcyofnQhGM8DQACbRhvzKFsXKC9QM+5MadF8ZmIm0crDMaz3+o0h0zXfJnd4EhbYbxsrcFw== + dependencies: + "@babel/template" "^7.27.2" + "@babel/types" "^7.28.2" "@babel/highlight@^7.10.4": version "7.25.9" @@ -319,58 +324,51 @@ js-tokens "^4.0.0" picocolors "^1.0.0" -"@babel/parser@^7.14.0", "@babel/parser@^7.16.8", "@babel/parser@^7.20.13", "@babel/parser@^7.25.9", "@babel/parser@^7.26.0", "@babel/parser@^7.26.3": - version "7.26.3" - resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.26.3.tgz#8c51c5db6ddf08134af1ddbacf16aaab48bac234" - integrity sha512-WJ/CvmY8Mea8iDXo6a7RK2wbmJITT5fN3BEkRuFlxVyNx8jOKIIhmC4fSkTcPcf8JyavbBwIe6OpiCOBXt/IcA== +"@babel/parser@^7.14.0", "@babel/parser@^7.16.8", "@babel/parser@^7.20.13", "@babel/parser@^7.27.2", "@babel/parser@^7.28.0": + version "7.28.0" + resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.28.0.tgz#979829fbab51a29e13901e5a80713dbcb840825e" + integrity sha512-jVZGvOxOuNSsuQuLRTh13nU0AogFlw32w/MT+LV6D3sP5WdbW61E77RnkbaO2dUvmPAYrBDJXGn5gGS6tH4j8g== dependencies: - "@babel/types" "^7.26.3" + "@babel/types" "^7.28.0" -"@babel/parser@^7.26.9": - version "7.26.10" - resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.26.10.tgz#e9bdb82f14b97df6569b0b038edd436839c57749" - integrity sha512-6aQR2zGE/QFi8JpDLjUZEPYOs7+mhKXm86VaKFiLP35JQwQb6bwUE+XbvkH0EptsYhbNBSUGaUBLKqxH1xSgsA== +"@babel/plugin-bugfix-firefox-class-in-computed-class-key@^7.27.1": + version "7.27.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-bugfix-firefox-class-in-computed-class-key/-/plugin-bugfix-firefox-class-in-computed-class-key-7.27.1.tgz#61dd8a8e61f7eb568268d1b5f129da3eee364bf9" + integrity sha512-QPG3C9cCVRQLxAVwmefEmwdTanECuUBMQZ/ym5kiw3XKCGA7qkuQLcjWWHcrD/GKbn/WmJwaezfuuAOcyKlRPA== dependencies: - "@babel/types" "^7.26.10" + "@babel/helper-plugin-utils" "^7.27.1" + "@babel/traverse" "^7.27.1" -"@babel/plugin-bugfix-firefox-class-in-computed-class-key@^7.25.9": - version "7.25.9" - resolved "https://registry.yarnpkg.com/@babel/plugin-bugfix-firefox-class-in-computed-class-key/-/plugin-bugfix-firefox-class-in-computed-class-key-7.25.9.tgz#cc2e53ebf0a0340777fff5ed521943e253b4d8fe" - integrity sha512-ZkRyVkThtxQ/J6nv3JFYv1RYY+JT5BvU0y3k5bWrmuG4woXypRa4PXmm9RhOwodRkYFWqC0C0cqcJ4OqR7kW+g== +"@babel/plugin-bugfix-safari-class-field-initializer-scope@^7.27.1": + version "7.27.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-bugfix-safari-class-field-initializer-scope/-/plugin-bugfix-safari-class-field-initializer-scope-7.27.1.tgz#43f70a6d7efd52370eefbdf55ae03d91b293856d" + integrity sha512-qNeq3bCKnGgLkEXUuFry6dPlGfCdQNZbn7yUAPCInwAJHMU7THJfrBSozkcWq5sNM6RcF3S8XyQL2A52KNR9IA== dependencies: - "@babel/helper-plugin-utils" "^7.25.9" - "@babel/traverse" "^7.25.9" + "@babel/helper-plugin-utils" "^7.27.1" -"@babel/plugin-bugfix-safari-class-field-initializer-scope@^7.25.9": - version "7.25.9" - resolved "https://registry.yarnpkg.com/@babel/plugin-bugfix-safari-class-field-initializer-scope/-/plugin-bugfix-safari-class-field-initializer-scope-7.25.9.tgz#af9e4fb63ccb8abcb92375b2fcfe36b60c774d30" - integrity sha512-MrGRLZxLD/Zjj0gdU15dfs+HH/OXvnw/U4jJD8vpcP2CJQapPEv1IWwjc/qMg7ItBlPwSv1hRBbb7LeuANdcnw== +"@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@^7.27.1": + version "7.27.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/-/plugin-bugfix-safari-id-destructuring-collision-in-function-expression-7.27.1.tgz#beb623bd573b8b6f3047bd04c32506adc3e58a72" + integrity sha512-g4L7OYun04N1WyqMNjldFwlfPCLVkgB54A/YCXICZYBsvJJE3kByKv9c9+R/nAfmIfjl2rKYLNyMHboYbZaWaA== dependencies: - "@babel/helper-plugin-utils" "^7.25.9" + "@babel/helper-plugin-utils" "^7.27.1" -"@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@^7.25.9": - version "7.25.9" - resolved "https://registry.yarnpkg.com/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/-/plugin-bugfix-safari-id-destructuring-collision-in-function-expression-7.25.9.tgz#e8dc26fcd616e6c5bf2bd0d5a2c151d4f92a9137" - integrity sha512-2qUwwfAFpJLZqxd02YW9btUCZHl+RFvdDkNfZwaIJrvB8Tesjsk8pEQkTvGwZXLqXUx/2oyY3ySRhm6HOXuCug== +"@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@^7.27.1": + version "7.27.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.27.1.tgz#e134a5479eb2ba9c02714e8c1ebf1ec9076124fd" + integrity sha512-oO02gcONcD5O1iTLi/6frMJBIwWEHceWGSGqrpCmEL8nogiS6J9PBlE48CaK20/Jx1LuRml9aDftLgdjXT8+Cw== dependencies: - "@babel/helper-plugin-utils" "^7.25.9" + "@babel/helper-plugin-utils" "^7.27.1" + "@babel/helper-skip-transparent-expression-wrappers" "^7.27.1" + "@babel/plugin-transform-optional-chaining" "^7.27.1" -"@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@^7.25.9": - version "7.25.9" - resolved "https://registry.yarnpkg.com/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.25.9.tgz#807a667f9158acac6f6164b4beb85ad9ebc9e1d1" - integrity sha512-6xWgLZTJXwilVjlnV7ospI3xi+sl8lN8rXXbBD6vYn3UYDlGsag8wrZkKcSI8G6KgqKP7vNFaDgeDnfAABq61g== +"@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly@^7.27.1": + version "7.27.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly/-/plugin-bugfix-v8-static-class-fields-redefine-readonly-7.27.1.tgz#bb1c25af34d75115ce229a1de7fa44bf8f955670" + integrity sha512-6BpaYGDavZqkI6yT+KSPdpZFfpnd68UKXbcjI9pJ13pvHhPrCKWOOLp+ysvMeA+DxnhuPpgIaRpxRxo5A9t5jw== dependencies: - "@babel/helper-plugin-utils" "^7.25.9" - "@babel/helper-skip-transparent-expression-wrappers" "^7.25.9" - "@babel/plugin-transform-optional-chaining" "^7.25.9" - -"@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly@^7.25.9": - version "7.25.9" - resolved "https://registry.yarnpkg.com/@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly/-/plugin-bugfix-v8-static-class-fields-redefine-readonly-7.25.9.tgz#de7093f1e7deaf68eadd7cc6b07f2ab82543269e" - integrity sha512-aLnMXYPnzwwqhYSCyXfKkIkYgJ8zv9RK+roo9DkTXz38ynIhd9XCbN08s3MGvqL2MYGVUGdRQLL/JqBIeJhJBg== - dependencies: - "@babel/helper-plugin-utils" "^7.25.9" - "@babel/traverse" "^7.25.9" + "@babel/helper-plugin-utils" "^7.27.1" + "@babel/traverse" "^7.27.1" "@babel/plugin-proposal-class-properties@^7.0.0", "@babel/plugin-proposal-class-properties@^7.18.6": version "7.18.6" @@ -435,33 +433,33 @@ dependencies: "@babel/helper-plugin-utils" "^7.8.0" -"@babel/plugin-syntax-flow@^7.0.0", "@babel/plugin-syntax-flow@^7.25.9": - version "7.26.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-flow/-/plugin-syntax-flow-7.26.0.tgz#96507595c21b45fccfc2bc758d5c45452e6164fa" - integrity sha512-B+O2DnPc0iG+YXFqOxv2WNuNU97ToWjOomUQ78DouOENWUaM5sVrmet9mcomUGQFwpJd//gvUagXBSdzO1fRKg== +"@babel/plugin-syntax-flow@^7.0.0", "@babel/plugin-syntax-flow@^7.27.1": + version "7.27.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-flow/-/plugin-syntax-flow-7.27.1.tgz#6c83cf0d7d635b716827284b7ecd5aead9237662" + integrity sha512-p9OkPbZ5G7UT1MofwYFigGebnrzGJacoBSQM0/6bi/PUMVE+qlWDD/OalvQKbwgQzU6dl0xAv6r4X7Jme0RYxA== dependencies: - "@babel/helper-plugin-utils" "^7.25.9" + "@babel/helper-plugin-utils" "^7.27.1" -"@babel/plugin-syntax-import-assertions@^7.20.0", "@babel/plugin-syntax-import-assertions@^7.26.0": - version "7.26.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-import-assertions/-/plugin-syntax-import-assertions-7.26.0.tgz#620412405058efa56e4a564903b79355020f445f" - integrity sha512-QCWT5Hh830hK5EQa7XzuqIkQU9tT/whqbDz7kuaZMHFl1inRRg7JnuAEOQ0Ur0QUl0NufCk1msK2BeY79Aj/eg== +"@babel/plugin-syntax-import-assertions@^7.20.0", "@babel/plugin-syntax-import-assertions@^7.27.1": + version "7.27.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-import-assertions/-/plugin-syntax-import-assertions-7.27.1.tgz#88894aefd2b03b5ee6ad1562a7c8e1587496aecd" + integrity sha512-UT/Jrhw57xg4ILHLFnzFpPDlMbcdEicaAtjPQpbj9wa8T4r5KVWCimHcL/460g8Ht0DMxDyjsLgiWSkVjnwPFg== dependencies: - "@babel/helper-plugin-utils" "^7.25.9" + "@babel/helper-plugin-utils" "^7.27.1" -"@babel/plugin-syntax-import-attributes@^7.26.0": - version "7.26.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-import-attributes/-/plugin-syntax-import-attributes-7.26.0.tgz#3b1412847699eea739b4f2602c74ce36f6b0b0f7" - integrity sha512-e2dttdsJ1ZTpi3B9UYGLw41hifAubg19AtCu/2I/F1QNVclOBr1dYpTdmdyZ84Xiz43BS/tCUkMAZNLv12Pi+A== +"@babel/plugin-syntax-import-attributes@^7.27.1": + version "7.27.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-import-attributes/-/plugin-syntax-import-attributes-7.27.1.tgz#34c017d54496f9b11b61474e7ea3dfd5563ffe07" + integrity sha512-oFT0FrKHgF53f4vOsZGi2Hh3I35PfSmVs4IBFLFj4dnafP+hIWDLg3VyKmUHfLoLHlyxY4C7DGtmHuJgn+IGww== dependencies: - "@babel/helper-plugin-utils" "^7.25.9" + "@babel/helper-plugin-utils" "^7.27.1" -"@babel/plugin-syntax-jsx@^7.0.0", "@babel/plugin-syntax-jsx@^7.25.9": - version "7.25.9" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.25.9.tgz#a34313a178ea56f1951599b929c1ceacee719290" - integrity sha512-ld6oezHQMZsZfp6pWtbjaNDF2tiiCYYDqQszHt5VV437lewP9aSi2Of99CK0D0XB21k7FLgnLcmQKyKzynfeAA== +"@babel/plugin-syntax-jsx@^7.0.0", "@babel/plugin-syntax-jsx@^7.27.1": + version "7.27.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.27.1.tgz#2f9beb5eff30fa507c5532d107daac7b888fa34c" + integrity sha512-y8YTNIeKoyhGd9O0Jiyzyyqk8gdjnumGTQPsz0xOZOQ2RmkVJeZ1vmmfIvFEKqucBG6axJGBZDE/7iI5suUI/w== dependencies: - "@babel/helper-plugin-utils" "^7.25.9" + "@babel/helper-plugin-utils" "^7.27.1" "@babel/plugin-syntax-nullish-coalescing-operator@^7.8.3": version "7.8.3" @@ -491,12 +489,12 @@ dependencies: "@babel/helper-plugin-utils" "^7.8.0" -"@babel/plugin-syntax-typescript@^7.25.9": - version "7.25.9" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.25.9.tgz#67dda2b74da43727cf21d46cf9afef23f4365399" - integrity sha512-hjMgRy5hb8uJJjUcdWunWVcoi9bGpJp8p5Ol1229PoN6aytsLwNMgmdftO23wnCLMfVmTwZDWMPNq/D1SY60JQ== +"@babel/plugin-syntax-typescript@^7.27.1": + version "7.27.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.27.1.tgz#5147d29066a793450f220c63fa3a9431b7e6dd18" + integrity sha512-xfYCBMxveHrRMnAWl1ZlPXOZjzkN82THFvLhQhFXFt81Z5HnN+EtUkZhv/zcKpmT3fzmWZB0ywiBrbC3vogbwQ== dependencies: - "@babel/helper-plugin-utils" "^7.25.9" + "@babel/helper-plugin-utils" "^7.27.1" "@babel/plugin-syntax-unicode-sets-regex@^7.18.6": version "7.18.6" @@ -506,530 +504,541 @@ "@babel/helper-create-regexp-features-plugin" "^7.18.6" "@babel/helper-plugin-utils" "^7.18.6" -"@babel/plugin-transform-arrow-functions@^7.0.0", "@babel/plugin-transform-arrow-functions@^7.25.9": - version "7.25.9" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.25.9.tgz#7821d4410bee5daaadbb4cdd9a6649704e176845" - integrity sha512-6jmooXYIwn9ca5/RylZADJ+EnSxVUS5sjeJ9UPk6RWRzXCmOJCy6dqItPJFpw2cuCangPK4OYr5uhGKcmrm5Qg== +"@babel/plugin-transform-arrow-functions@^7.0.0", "@babel/plugin-transform-arrow-functions@^7.27.1": + version "7.27.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.27.1.tgz#6e2061067ba3ab0266d834a9f94811196f2aba9a" + integrity sha512-8Z4TGic6xW70FKThA5HYEKKyBpOOsucTOD1DjU3fZxDg+K3zBJcXMFnt/4yQiZnf5+MiOMSXQ9PaEK/Ilh1DeA== dependencies: - "@babel/helper-plugin-utils" "^7.25.9" + "@babel/helper-plugin-utils" "^7.27.1" -"@babel/plugin-transform-async-generator-functions@^7.25.9": - version "7.25.9" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-async-generator-functions/-/plugin-transform-async-generator-functions-7.25.9.tgz#1b18530b077d18a407c494eb3d1d72da505283a2" - integrity sha512-RXV6QAzTBbhDMO9fWwOmwwTuYaiPbggWQ9INdZqAYeSHyG7FzQ+nOZaUUjNwKv9pV3aE4WFqFm1Hnbci5tBCAw== +"@babel/plugin-transform-async-generator-functions@^7.28.0": + version "7.28.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-async-generator-functions/-/plugin-transform-async-generator-functions-7.28.0.tgz#1276e6c7285ab2cd1eccb0bc7356b7a69ff842c2" + integrity sha512-BEOdvX4+M765icNPZeidyADIvQ1m1gmunXufXxvRESy/jNNyfovIqUyE7MVgGBjWktCoJlzvFA1To2O4ymIO3Q== dependencies: - "@babel/helper-plugin-utils" "^7.25.9" - "@babel/helper-remap-async-to-generator" "^7.25.9" - "@babel/traverse" "^7.25.9" + "@babel/helper-plugin-utils" "^7.27.1" + "@babel/helper-remap-async-to-generator" "^7.27.1" + "@babel/traverse" "^7.28.0" -"@babel/plugin-transform-async-to-generator@^7.25.9": - version "7.25.9" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.25.9.tgz#c80008dacae51482793e5a9c08b39a5be7e12d71" - integrity sha512-NT7Ejn7Z/LjUH0Gv5KsBCxh7BH3fbLTV0ptHvpeMvrt3cPThHfJfst9Wrb7S8EvJ7vRTFI7z+VAvFVEQn/m5zQ== +"@babel/plugin-transform-async-to-generator@^7.27.1": + version "7.27.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.27.1.tgz#9a93893b9379b39466c74474f55af03de78c66e7" + integrity sha512-NREkZsZVJS4xmTr8qzE5y8AfIPqsdQfRuUiLRTEzb7Qii8iFWCyDKaUV2c0rCuh4ljDZ98ALHP/PetiBV2nddA== dependencies: - "@babel/helper-module-imports" "^7.25.9" - "@babel/helper-plugin-utils" "^7.25.9" - "@babel/helper-remap-async-to-generator" "^7.25.9" + "@babel/helper-module-imports" "^7.27.1" + "@babel/helper-plugin-utils" "^7.27.1" + "@babel/helper-remap-async-to-generator" "^7.27.1" -"@babel/plugin-transform-block-scoped-functions@^7.0.0", "@babel/plugin-transform-block-scoped-functions@^7.25.9": - version "7.25.9" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.25.9.tgz#5700691dbd7abb93de300ca7be94203764fce458" - integrity sha512-toHc9fzab0ZfenFpsyYinOX0J/5dgJVA2fm64xPewu7CoYHWEivIWKxkK2rMi4r3yQqLnVmheMXRdG+k239CgA== +"@babel/plugin-transform-block-scoped-functions@^7.0.0", "@babel/plugin-transform-block-scoped-functions@^7.27.1": + version "7.27.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.27.1.tgz#558a9d6e24cf72802dd3b62a4b51e0d62c0f57f9" + integrity sha512-cnqkuOtZLapWYZUYM5rVIdv1nXYuFVIltZ6ZJ7nIj585QsjKM5dhL2Fu/lICXZ1OyIAFc7Qy+bvDAtTXqGrlhg== dependencies: - "@babel/helper-plugin-utils" "^7.25.9" + "@babel/helper-plugin-utils" "^7.27.1" -"@babel/plugin-transform-block-scoping@^7.0.0", "@babel/plugin-transform-block-scoping@^7.25.9": - version "7.25.9" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.25.9.tgz#c33665e46b06759c93687ca0f84395b80c0473a1" - integrity sha512-1F05O7AYjymAtqbsFETboN1NvBdcnzMerO+zlMyJBEz6WkMdejvGWw9p05iTSjC85RLlBseHHQpYaM4gzJkBGg== +"@babel/plugin-transform-block-scoping@^7.0.0", "@babel/plugin-transform-block-scoping@^7.28.0": + version "7.28.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.28.0.tgz#e7c50cbacc18034f210b93defa89638666099451" + integrity sha512-gKKnwjpdx5sER/wl0WN0efUBFzF/56YZO0RJrSYP4CljXnP31ByY7fol89AzomdlLNzI36AvOTmYHsnZTCkq8Q== dependencies: - "@babel/helper-plugin-utils" "^7.25.9" + "@babel/helper-plugin-utils" "^7.27.1" -"@babel/plugin-transform-class-properties@^7.25.9": - version "7.25.9" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-class-properties/-/plugin-transform-class-properties-7.25.9.tgz#a8ce84fedb9ad512549984101fa84080a9f5f51f" - integrity sha512-bbMAII8GRSkcd0h0b4X+36GksxuheLFjP65ul9w6C3KgAamI3JqErNgSrosX6ZPj+Mpim5VvEbawXxJCyEUV3Q== +"@babel/plugin-transform-class-properties@^7.27.1": + version "7.27.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-class-properties/-/plugin-transform-class-properties-7.27.1.tgz#dd40a6a370dfd49d32362ae206ddaf2bb082a925" + integrity sha512-D0VcalChDMtuRvJIu3U/fwWjf8ZMykz5iZsg77Nuj821vCKI3zCyRLwRdWbsuJ/uRwZhZ002QtCqIkwC/ZkvbA== dependencies: - "@babel/helper-create-class-features-plugin" "^7.25.9" - "@babel/helper-plugin-utils" "^7.25.9" + "@babel/helper-create-class-features-plugin" "^7.27.1" + "@babel/helper-plugin-utils" "^7.27.1" -"@babel/plugin-transform-class-static-block@^7.26.0": - version "7.26.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-class-static-block/-/plugin-transform-class-static-block-7.26.0.tgz#6c8da219f4eb15cae9834ec4348ff8e9e09664a0" - integrity sha512-6J2APTs7BDDm+UMqP1useWqhcRAXo0WIoVj26N7kPFB6S73Lgvyka4KTZYIxtgYXiN5HTyRObA72N2iu628iTQ== +"@babel/plugin-transform-class-static-block@^7.27.1": + version "7.27.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-class-static-block/-/plugin-transform-class-static-block-7.27.1.tgz#7e920d5625b25bbccd3061aefbcc05805ed56ce4" + integrity sha512-s734HmYU78MVzZ++joYM+NkJusItbdRcbm+AGRgJCt3iA+yux0QpD9cBVdz3tKyrjVYWRl7j0mHSmv4lhV0aoA== dependencies: - "@babel/helper-create-class-features-plugin" "^7.25.9" - "@babel/helper-plugin-utils" "^7.25.9" + "@babel/helper-create-class-features-plugin" "^7.27.1" + "@babel/helper-plugin-utils" "^7.27.1" -"@babel/plugin-transform-classes@^7.0.0", "@babel/plugin-transform-classes@^7.20.7", "@babel/plugin-transform-classes@^7.25.9": - version "7.25.9" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-classes/-/plugin-transform-classes-7.25.9.tgz#7152457f7880b593a63ade8a861e6e26a4469f52" - integrity sha512-mD8APIXmseE7oZvZgGABDyM34GUmK45Um2TXiBUt7PnuAxrgoSVf123qUzPxEr/+/BHrRn5NMZCdE2m/1F8DGg== +"@babel/plugin-transform-classes@^7.0.0", "@babel/plugin-transform-classes@^7.20.7", "@babel/plugin-transform-classes@^7.28.0": + version "7.28.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-classes/-/plugin-transform-classes-7.28.0.tgz#12fa46cffc32a6e084011b650539e880add8a0f8" + integrity sha512-IjM1IoJNw72AZFlj33Cu8X0q2XK/6AaVC3jQu+cgQ5lThWD5ajnuUAml80dqRmOhmPkTH8uAwnpMu9Rvj0LTRA== dependencies: - "@babel/helper-annotate-as-pure" "^7.25.9" - "@babel/helper-compilation-targets" "^7.25.9" - "@babel/helper-plugin-utils" "^7.25.9" - "@babel/helper-replace-supers" "^7.25.9" - "@babel/traverse" "^7.25.9" - globals "^11.1.0" + "@babel/helper-annotate-as-pure" "^7.27.3" + "@babel/helper-compilation-targets" "^7.27.2" + "@babel/helper-globals" "^7.28.0" + "@babel/helper-plugin-utils" "^7.27.1" + "@babel/helper-replace-supers" "^7.27.1" + "@babel/traverse" "^7.28.0" -"@babel/plugin-transform-computed-properties@^7.0.0", "@babel/plugin-transform-computed-properties@^7.25.9": - version "7.25.9" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.25.9.tgz#db36492c78460e534b8852b1d5befe3c923ef10b" - integrity sha512-HnBegGqXZR12xbcTHlJ9HGxw1OniltT26J5YpfruGqtUHlz/xKf/G2ak9e+t0rVqrjXa9WOhvYPz1ERfMj23AA== +"@babel/plugin-transform-computed-properties@^7.0.0", "@babel/plugin-transform-computed-properties@^7.27.1": + version "7.27.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.27.1.tgz#81662e78bf5e734a97982c2b7f0a793288ef3caa" + integrity sha512-lj9PGWvMTVksbWiDT2tW68zGS/cyo4AkZ/QTp0sQT0mjPopCmrSkzxeXkznjqBxzDI6TclZhOJbBmbBLjuOZUw== dependencies: - "@babel/helper-plugin-utils" "^7.25.9" - "@babel/template" "^7.25.9" + "@babel/helper-plugin-utils" "^7.27.1" + "@babel/template" "^7.27.1" -"@babel/plugin-transform-destructuring@^7.0.0", "@babel/plugin-transform-destructuring@^7.25.9": - version "7.25.9" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.25.9.tgz#966ea2595c498224340883602d3cfd7a0c79cea1" - integrity sha512-WkCGb/3ZxXepmMiX101nnGiU+1CAdut8oHyEOHxkKuS1qKpU2SMXE2uSvfz8PBuLd49V6LEsbtyPhWC7fnkgvQ== +"@babel/plugin-transform-destructuring@^7.0.0", "@babel/plugin-transform-destructuring@^7.28.0": + version "7.28.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.28.0.tgz#0f156588f69c596089b7d5b06f5af83d9aa7f97a" + integrity sha512-v1nrSMBiKcodhsyJ4Gf+Z0U/yawmJDBOTpEB3mcQY52r9RIyPneGyAS/yM6seP/8I+mWI3elOMtT5dB8GJVs+A== dependencies: - "@babel/helper-plugin-utils" "^7.25.9" + "@babel/helper-plugin-utils" "^7.27.1" + "@babel/traverse" "^7.28.0" -"@babel/plugin-transform-dotall-regex@^7.25.9": - version "7.25.9" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.25.9.tgz#bad7945dd07734ca52fe3ad4e872b40ed09bb09a" - integrity sha512-t7ZQ7g5trIgSRYhI9pIJtRl64KHotutUJsh4Eze5l7olJv+mRSg4/MmbZ0tv1eeqRbdvo/+trvJD/Oc5DmW2cA== +"@babel/plugin-transform-dotall-regex@^7.27.1": + version "7.27.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.27.1.tgz#aa6821de864c528b1fecf286f0a174e38e826f4d" + integrity sha512-gEbkDVGRvjj7+T1ivxrfgygpT7GUd4vmODtYpbs0gZATdkX8/iSnOtZSxiZnsgm1YjTgjI6VKBGSJJevkrclzw== dependencies: - "@babel/helper-create-regexp-features-plugin" "^7.25.9" - "@babel/helper-plugin-utils" "^7.25.9" + "@babel/helper-create-regexp-features-plugin" "^7.27.1" + "@babel/helper-plugin-utils" "^7.27.1" -"@babel/plugin-transform-duplicate-keys@^7.25.9": - version "7.25.9" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.25.9.tgz#8850ddf57dce2aebb4394bb434a7598031059e6d" - integrity sha512-LZxhJ6dvBb/f3x8xwWIuyiAHy56nrRG3PeYTpBkkzkYRRQ6tJLu68lEF5VIqMUZiAV7a8+Tb78nEoMCMcqjXBw== +"@babel/plugin-transform-duplicate-keys@^7.27.1": + version "7.27.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.27.1.tgz#f1fbf628ece18e12e7b32b175940e68358f546d1" + integrity sha512-MTyJk98sHvSs+cvZ4nOauwTTG1JeonDjSGvGGUNHreGQns+Mpt6WX/dVzWBHgg+dYZhkC4X+zTDfkTU+Vy9y7Q== dependencies: - "@babel/helper-plugin-utils" "^7.25.9" + "@babel/helper-plugin-utils" "^7.27.1" -"@babel/plugin-transform-duplicate-named-capturing-groups-regex@^7.25.9": - version "7.25.9" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-duplicate-named-capturing-groups-regex/-/plugin-transform-duplicate-named-capturing-groups-regex-7.25.9.tgz#6f7259b4de127721a08f1e5165b852fcaa696d31" - integrity sha512-0UfuJS0EsXbRvKnwcLjFtJy/Sxc5J5jhLHnFhy7u4zih97Hz6tJkLU+O+FMMrNZrosUPxDi6sYxJ/EA8jDiAog== +"@babel/plugin-transform-duplicate-named-capturing-groups-regex@^7.27.1": + version "7.27.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-duplicate-named-capturing-groups-regex/-/plugin-transform-duplicate-named-capturing-groups-regex-7.27.1.tgz#5043854ca620a94149372e69030ff8cb6a9eb0ec" + integrity sha512-hkGcueTEzuhB30B3eJCbCYeCaaEQOmQR0AdvzpD4LoN0GXMWzzGSuRrxR2xTnCrvNbVwK9N6/jQ92GSLfiZWoQ== dependencies: - "@babel/helper-create-regexp-features-plugin" "^7.25.9" - "@babel/helper-plugin-utils" "^7.25.9" + "@babel/helper-create-regexp-features-plugin" "^7.27.1" + "@babel/helper-plugin-utils" "^7.27.1" -"@babel/plugin-transform-dynamic-import@^7.25.9": - version "7.25.9" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-dynamic-import/-/plugin-transform-dynamic-import-7.25.9.tgz#23e917de63ed23c6600c5dd06d94669dce79f7b8" - integrity sha512-GCggjexbmSLaFhqsojeugBpeaRIgWNTcgKVq/0qIteFEqY2A+b9QidYadrWlnbWQUrW5fn+mCvf3tr7OeBFTyg== +"@babel/plugin-transform-dynamic-import@^7.27.1": + version "7.27.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-dynamic-import/-/plugin-transform-dynamic-import-7.27.1.tgz#4c78f35552ac0e06aa1f6e3c573d67695e8af5a4" + integrity sha512-MHzkWQcEmjzzVW9j2q8LGjwGWpG2mjwaaB0BNQwst3FIjqsg8Ct/mIZlvSPJvfi9y2AC8mi/ktxbFVL9pZ1I4A== dependencies: - "@babel/helper-plugin-utils" "^7.25.9" + "@babel/helper-plugin-utils" "^7.27.1" -"@babel/plugin-transform-exponentiation-operator@^7.25.9": - version "7.26.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.26.3.tgz#e29f01b6de302c7c2c794277a48f04a9ca7f03bc" - integrity sha512-7CAHcQ58z2chuXPWblnn1K6rLDnDWieghSOEmqQsrBenH0P9InCUtOJYD89pvngljmZlJcz3fcmgYsXFNGa1ZQ== +"@babel/plugin-transform-explicit-resource-management@^7.28.0": + version "7.28.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-explicit-resource-management/-/plugin-transform-explicit-resource-management-7.28.0.tgz#45be6211b778dbf4b9d54c4e8a2b42fa72e09a1a" + integrity sha512-K8nhUcn3f6iB+P3gwCv/no7OdzOZQcKchW6N389V6PD8NUWKZHzndOd9sPDVbMoBsbmjMqlB4L9fm+fEFNVlwQ== dependencies: - "@babel/helper-plugin-utils" "^7.25.9" + "@babel/helper-plugin-utils" "^7.27.1" + "@babel/plugin-transform-destructuring" "^7.28.0" -"@babel/plugin-transform-export-namespace-from@^7.25.9": - version "7.25.9" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-export-namespace-from/-/plugin-transform-export-namespace-from-7.25.9.tgz#90745fe55053394f554e40584cda81f2c8a402a2" - integrity sha512-2NsEz+CxzJIVOPx2o9UsW1rXLqtChtLoVnwYHHiB04wS5sgn7mrV45fWMBX0Kk+ub9uXytVYfNP2HjbVbCB3Ww== +"@babel/plugin-transform-exponentiation-operator@^7.27.1": + version "7.27.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.27.1.tgz#fc497b12d8277e559747f5a3ed868dd8064f83e1" + integrity sha512-uspvXnhHvGKf2r4VVtBpeFnuDWsJLQ6MF6lGJLC89jBR1uoVeqM416AZtTuhTezOfgHicpJQmoD5YUakO/YmXQ== dependencies: - "@babel/helper-plugin-utils" "^7.25.9" + "@babel/helper-plugin-utils" "^7.27.1" + +"@babel/plugin-transform-export-namespace-from@^7.27.1": + version "7.27.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-export-namespace-from/-/plugin-transform-export-namespace-from-7.27.1.tgz#71ca69d3471edd6daa711cf4dfc3400415df9c23" + integrity sha512-tQvHWSZ3/jH2xuq/vZDy0jNn+ZdXJeM8gHvX4lnJmsc3+50yPlWdZXIc5ay+umX+2/tJIqHqiEqcJvxlmIvRvQ== + dependencies: + "@babel/helper-plugin-utils" "^7.27.1" "@babel/plugin-transform-flow-strip-types@^7.0.0": - version "7.25.9" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-flow-strip-types/-/plugin-transform-flow-strip-types-7.25.9.tgz#85879b42a8f5948fd6317069978e98f23ef8aec1" - integrity sha512-/VVukELzPDdci7UUsWQaSkhgnjIWXnIyRpM02ldxaVoFK96c41So8JcKT3m0gYjyv7j5FNPGS5vfELrWalkbDA== + version "7.27.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-flow-strip-types/-/plugin-transform-flow-strip-types-7.27.1.tgz#5def3e1e7730f008d683144fb79b724f92c5cdf9" + integrity sha512-G5eDKsu50udECw7DL2AcsysXiQyB7Nfg521t2OAJ4tbfTJ27doHLeF/vlI1NZGlLdbb/v+ibvtL1YBQqYOwJGg== dependencies: - "@babel/helper-plugin-utils" "^7.25.9" - "@babel/plugin-syntax-flow" "^7.25.9" + "@babel/helper-plugin-utils" "^7.27.1" + "@babel/plugin-syntax-flow" "^7.27.1" -"@babel/plugin-transform-for-of@^7.0.0", "@babel/plugin-transform-for-of@^7.25.9": - version "7.25.9" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.25.9.tgz#4bdc7d42a213397905d89f02350c5267866d5755" - integrity sha512-LqHxduHoaGELJl2uhImHwRQudhCM50pT46rIBNvtT/Oql3nqiS3wOwP+5ten7NpYSXrrVLgtZU3DZmPtWZo16A== +"@babel/plugin-transform-for-of@^7.0.0", "@babel/plugin-transform-for-of@^7.27.1": + version "7.27.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.27.1.tgz#bc24f7080e9ff721b63a70ac7b2564ca15b6c40a" + integrity sha512-BfbWFFEJFQzLCQ5N8VocnCtA8J1CLkNTe2Ms2wocj75dd6VpiqS5Z5quTYcUoo4Yq+DN0rtikODccuv7RU81sw== dependencies: - "@babel/helper-plugin-utils" "^7.25.9" - "@babel/helper-skip-transparent-expression-wrappers" "^7.25.9" + "@babel/helper-plugin-utils" "^7.27.1" + "@babel/helper-skip-transparent-expression-wrappers" "^7.27.1" -"@babel/plugin-transform-function-name@^7.0.0", "@babel/plugin-transform-function-name@^7.25.9": - version "7.25.9" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.25.9.tgz#939d956e68a606661005bfd550c4fc2ef95f7b97" - integrity sha512-8lP+Yxjv14Vc5MuWBpJsoUCd3hD6V9DgBon2FVYL4jJgbnVQ9fTgYmonchzZJOVNgzEgbxp4OwAf6xz6M/14XA== +"@babel/plugin-transform-function-name@^7.0.0", "@babel/plugin-transform-function-name@^7.27.1": + version "7.27.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.27.1.tgz#4d0bf307720e4dce6d7c30fcb1fd6ca77bdeb3a7" + integrity sha512-1bQeydJF9Nr1eBCMMbC+hdwmRlsv5XYOMu03YSWFwNs0HsAmtSxxF1fyuYPqemVldVyFmlCU7w8UE14LupUSZQ== dependencies: - "@babel/helper-compilation-targets" "^7.25.9" - "@babel/helper-plugin-utils" "^7.25.9" - "@babel/traverse" "^7.25.9" + "@babel/helper-compilation-targets" "^7.27.1" + "@babel/helper-plugin-utils" "^7.27.1" + "@babel/traverse" "^7.27.1" -"@babel/plugin-transform-json-strings@^7.25.9": - version "7.25.9" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-json-strings/-/plugin-transform-json-strings-7.25.9.tgz#c86db407cb827cded902a90c707d2781aaa89660" - integrity sha512-xoTMk0WXceiiIvsaquQQUaLLXSW1KJ159KP87VilruQm0LNNGxWzahxSS6T6i4Zg3ezp4vA4zuwiNUR53qmQAw== +"@babel/plugin-transform-json-strings@^7.27.1": + version "7.27.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-json-strings/-/plugin-transform-json-strings-7.27.1.tgz#a2e0ce6ef256376bd527f290da023983527a4f4c" + integrity sha512-6WVLVJiTjqcQauBhn1LkICsR2H+zm62I3h9faTDKt1qP4jn2o72tSvqMwtGFKGTpojce0gJs+76eZ2uCHRZh0Q== dependencies: - "@babel/helper-plugin-utils" "^7.25.9" + "@babel/helper-plugin-utils" "^7.27.1" -"@babel/plugin-transform-literals@^7.0.0", "@babel/plugin-transform-literals@^7.25.9": - version "7.25.9" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-literals/-/plugin-transform-literals-7.25.9.tgz#1a1c6b4d4aa59bc4cad5b6b3a223a0abd685c9de" - integrity sha512-9N7+2lFziW8W9pBl2TzaNht3+pgMIRP74zizeCSrtnSKVdUl8mAjjOP2OOVQAfZ881P2cNjDj1uAMEdeD50nuQ== +"@babel/plugin-transform-literals@^7.0.0", "@babel/plugin-transform-literals@^7.27.1": + version "7.27.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-literals/-/plugin-transform-literals-7.27.1.tgz#baaefa4d10a1d4206f9dcdda50d7d5827bb70b24" + integrity sha512-0HCFSepIpLTkLcsi86GG3mTUzxV5jpmbv97hTETW3yzrAij8aqlD36toB1D0daVFJM8NK6GvKO0gslVQmm+zZA== dependencies: - "@babel/helper-plugin-utils" "^7.25.9" + "@babel/helper-plugin-utils" "^7.27.1" -"@babel/plugin-transform-logical-assignment-operators@^7.25.9": - version "7.25.9" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-logical-assignment-operators/-/plugin-transform-logical-assignment-operators-7.25.9.tgz#b19441a8c39a2fda0902900b306ea05ae1055db7" - integrity sha512-wI4wRAzGko551Y8eVf6iOY9EouIDTtPb0ByZx+ktDGHwv6bHFimrgJM/2T021txPZ2s4c7bqvHbd+vXG6K948Q== +"@babel/plugin-transform-logical-assignment-operators@^7.27.1": + version "7.27.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-logical-assignment-operators/-/plugin-transform-logical-assignment-operators-7.27.1.tgz#890cb20e0270e0e5bebe3f025b434841c32d5baa" + integrity sha512-SJvDs5dXxiae4FbSL1aBJlG4wvl594N6YEVVn9e3JGulwioy6z3oPjx/sQBO3Y4NwUu5HNix6KJ3wBZoewcdbw== dependencies: - "@babel/helper-plugin-utils" "^7.25.9" + "@babel/helper-plugin-utils" "^7.27.1" -"@babel/plugin-transform-member-expression-literals@^7.0.0", "@babel/plugin-transform-member-expression-literals@^7.25.9": - version "7.25.9" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.25.9.tgz#63dff19763ea64a31f5e6c20957e6a25e41ed5de" - integrity sha512-PYazBVfofCQkkMzh2P6IdIUaCEWni3iYEerAsRWuVd8+jlM1S9S9cz1dF9hIzyoZ8IA3+OwVYIp9v9e+GbgZhA== +"@babel/plugin-transform-member-expression-literals@^7.0.0", "@babel/plugin-transform-member-expression-literals@^7.27.1": + version "7.27.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.27.1.tgz#37b88ba594d852418e99536f5612f795f23aeaf9" + integrity sha512-hqoBX4dcZ1I33jCSWcXrP+1Ku7kdqXf1oeah7ooKOIiAdKQ+uqftgCFNOSzA5AMS2XIHEYeGFg4cKRCdpxzVOQ== dependencies: - "@babel/helper-plugin-utils" "^7.25.9" + "@babel/helper-plugin-utils" "^7.27.1" -"@babel/plugin-transform-modules-amd@^7.25.9": - version "7.25.9" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.25.9.tgz#49ba478f2295101544abd794486cd3088dddb6c5" - integrity sha512-g5T11tnI36jVClQlMlt4qKDLlWnG5pP9CSM4GhdRciTNMRgkfpo5cR6b4rGIOYPgRRuFAvwjPQ/Yk+ql4dyhbw== +"@babel/plugin-transform-modules-amd@^7.27.1": + version "7.27.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.27.1.tgz#a4145f9d87c2291fe2d05f994b65dba4e3e7196f" + integrity sha512-iCsytMg/N9/oFq6n+gFTvUYDZQOMK5kEdeYxmxt91fcJGycfxVP9CnrxoliM0oumFERba2i8ZtwRUCMhvP1LnA== dependencies: - "@babel/helper-module-transforms" "^7.25.9" - "@babel/helper-plugin-utils" "^7.25.9" + "@babel/helper-module-transforms" "^7.27.1" + "@babel/helper-plugin-utils" "^7.27.1" -"@babel/plugin-transform-modules-commonjs@^7.0.0", "@babel/plugin-transform-modules-commonjs@^7.25.9": - version "7.26.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.26.3.tgz#8f011d44b20d02c3de44d8850d971d8497f981fb" - integrity sha512-MgR55l4q9KddUDITEzEFYn5ZsGDXMSsU9E+kh7fjRXTIC3RHqfCo8RPRbyReYJh44HQ/yomFkqbOFohXvDCiIQ== +"@babel/plugin-transform-modules-commonjs@^7.0.0", "@babel/plugin-transform-modules-commonjs@^7.27.1": + version "7.27.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.27.1.tgz#8e44ed37c2787ecc23bdc367f49977476614e832" + integrity sha512-OJguuwlTYlN0gBZFRPqwOGNWssZjfIUdS7HMYtN8c1KmwpwHFBwTeFZrg9XZa+DFTitWOW5iTAG7tyCUPsCCyw== dependencies: - "@babel/helper-module-transforms" "^7.26.0" - "@babel/helper-plugin-utils" "^7.25.9" + "@babel/helper-module-transforms" "^7.27.1" + "@babel/helper-plugin-utils" "^7.27.1" -"@babel/plugin-transform-modules-systemjs@^7.25.9": - version "7.25.9" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.25.9.tgz#8bd1b43836269e3d33307151a114bcf3ba6793f8" - integrity sha512-hyss7iIlH/zLHaehT+xwiymtPOpsiwIIRlCAOwBB04ta5Tt+lNItADdlXw3jAWZ96VJ2jlhl/c+PNIQPKNfvcA== +"@babel/plugin-transform-modules-systemjs@^7.27.1": + version "7.27.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.27.1.tgz#00e05b61863070d0f3292a00126c16c0e024c4ed" + integrity sha512-w5N1XzsRbc0PQStASMksmUeqECuzKuTJer7kFagK8AXgpCMkeDMO5S+aaFb7A51ZYDF7XI34qsTX+fkHiIm5yA== dependencies: - "@babel/helper-module-transforms" "^7.25.9" - "@babel/helper-plugin-utils" "^7.25.9" - "@babel/helper-validator-identifier" "^7.25.9" - "@babel/traverse" "^7.25.9" + "@babel/helper-module-transforms" "^7.27.1" + "@babel/helper-plugin-utils" "^7.27.1" + "@babel/helper-validator-identifier" "^7.27.1" + "@babel/traverse" "^7.27.1" -"@babel/plugin-transform-modules-umd@^7.25.9": - version "7.25.9" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.25.9.tgz#6710079cdd7c694db36529a1e8411e49fcbf14c9" - integrity sha512-bS9MVObUgE7ww36HEfwe6g9WakQ0KF07mQF74uuXdkoziUPfKyu/nIm663kz//e5O1nPInPFx36z7WJmJ4yNEw== +"@babel/plugin-transform-modules-umd@^7.27.1": + version "7.27.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.27.1.tgz#63f2cf4f6dc15debc12f694e44714863d34cd334" + integrity sha512-iQBE/xC5BV1OxJbp6WG7jq9IWiD+xxlZhLrdwpPkTX3ydmXdvoCpyfJN7acaIBZaOqTfr76pgzqBJflNbeRK+w== dependencies: - "@babel/helper-module-transforms" "^7.25.9" - "@babel/helper-plugin-utils" "^7.25.9" + "@babel/helper-module-transforms" "^7.27.1" + "@babel/helper-plugin-utils" "^7.27.1" -"@babel/plugin-transform-named-capturing-groups-regex@^7.25.9": - version "7.25.9" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.25.9.tgz#454990ae6cc22fd2a0fa60b3a2c6f63a38064e6a" - integrity sha512-oqB6WHdKTGl3q/ItQhpLSnWWOpjUJLsOCLVyeFgeTktkBSCiurvPOsyt93gibI9CmuKvTUEtWmG5VhZD+5T/KA== +"@babel/plugin-transform-named-capturing-groups-regex@^7.27.1": + version "7.27.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.27.1.tgz#f32b8f7818d8fc0cc46ee20a8ef75f071af976e1" + integrity sha512-SstR5JYy8ddZvD6MhV0tM/j16Qds4mIpJTOd1Yu9J9pJjH93bxHECF7pgtc28XvkzTD6Pxcm/0Z73Hvk7kb3Ng== dependencies: - "@babel/helper-create-regexp-features-plugin" "^7.25.9" - "@babel/helper-plugin-utils" "^7.25.9" + "@babel/helper-create-regexp-features-plugin" "^7.27.1" + "@babel/helper-plugin-utils" "^7.27.1" -"@babel/plugin-transform-new-target@^7.25.9": - version "7.25.9" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.25.9.tgz#42e61711294b105c248336dcb04b77054ea8becd" - integrity sha512-U/3p8X1yCSoKyUj2eOBIx3FOn6pElFOKvAAGf8HTtItuPyB+ZeOqfn+mvTtg9ZlOAjsPdK3ayQEjqHjU/yLeVQ== +"@babel/plugin-transform-new-target@^7.27.1": + version "7.27.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.27.1.tgz#259c43939728cad1706ac17351b7e6a7bea1abeb" + integrity sha512-f6PiYeqXQ05lYq3TIfIDu/MtliKUbNwkGApPUvyo6+tc7uaR4cPjPe7DFPr15Uyycg2lZU6btZ575CuQoYh7MQ== dependencies: - "@babel/helper-plugin-utils" "^7.25.9" + "@babel/helper-plugin-utils" "^7.27.1" -"@babel/plugin-transform-nullish-coalescing-operator@^7.25.9": - version "7.25.9" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-nullish-coalescing-operator/-/plugin-transform-nullish-coalescing-operator-7.25.9.tgz#bcb1b0d9e948168102d5f7104375ca21c3266949" - integrity sha512-ENfftpLZw5EItALAD4WsY/KUWvhUlZndm5GC7G3evUsVeSJB6p0pBeLQUnRnBCBx7zV0RKQjR9kCuwrsIrjWog== +"@babel/plugin-transform-nullish-coalescing-operator@^7.27.1": + version "7.27.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-nullish-coalescing-operator/-/plugin-transform-nullish-coalescing-operator-7.27.1.tgz#4f9d3153bf6782d73dd42785a9d22d03197bc91d" + integrity sha512-aGZh6xMo6q9vq1JGcw58lZ1Z0+i0xB2x0XaauNIUXd6O1xXc3RwoWEBlsTQrY4KQ9Jf0s5rgD6SiNkaUdJegTA== dependencies: - "@babel/helper-plugin-utils" "^7.25.9" + "@babel/helper-plugin-utils" "^7.27.1" -"@babel/plugin-transform-numeric-separator@^7.25.9": - version "7.25.9" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-numeric-separator/-/plugin-transform-numeric-separator-7.25.9.tgz#bfed75866261a8b643468b0ccfd275f2033214a1" - integrity sha512-TlprrJ1GBZ3r6s96Yq8gEQv82s8/5HnCVHtEJScUj90thHQbwe+E5MLhi2bbNHBEJuzrvltXSru+BUxHDoog7Q== +"@babel/plugin-transform-numeric-separator@^7.27.1": + version "7.27.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-numeric-separator/-/plugin-transform-numeric-separator-7.27.1.tgz#614e0b15cc800e5997dadd9bd6ea524ed6c819c6" + integrity sha512-fdPKAcujuvEChxDBJ5c+0BTaS6revLV7CJL08e4m3de8qJfNIuCc2nc7XJYOjBoTMJeqSmwXJ0ypE14RCjLwaw== dependencies: - "@babel/helper-plugin-utils" "^7.25.9" + "@babel/helper-plugin-utils" "^7.27.1" -"@babel/plugin-transform-object-rest-spread@^7.25.9": - version "7.25.9" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-object-rest-spread/-/plugin-transform-object-rest-spread-7.25.9.tgz#0203725025074164808bcf1a2cfa90c652c99f18" - integrity sha512-fSaXafEE9CVHPweLYw4J0emp1t8zYTXyzN3UuG+lylqkvYd7RMrsOQ8TYx5RF231be0vqtFC6jnx3UmpJmKBYg== +"@babel/plugin-transform-object-rest-spread@^7.28.0": + version "7.28.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-object-rest-spread/-/plugin-transform-object-rest-spread-7.28.0.tgz#d23021857ffd7cd809f54d624299b8086402ed8d" + integrity sha512-9VNGikXxzu5eCiQjdE4IZn8sb9q7Xsk5EXLDBKUYg1e/Tve8/05+KJEtcxGxAgCY5t/BpKQM+JEL/yT4tvgiUA== dependencies: - "@babel/helper-compilation-targets" "^7.25.9" - "@babel/helper-plugin-utils" "^7.25.9" - "@babel/plugin-transform-parameters" "^7.25.9" + "@babel/helper-compilation-targets" "^7.27.2" + "@babel/helper-plugin-utils" "^7.27.1" + "@babel/plugin-transform-destructuring" "^7.28.0" + "@babel/plugin-transform-parameters" "^7.27.7" + "@babel/traverse" "^7.28.0" -"@babel/plugin-transform-object-super@^7.0.0", "@babel/plugin-transform-object-super@^7.25.9": - version "7.25.9" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.25.9.tgz#385d5de135162933beb4a3d227a2b7e52bb4cf03" - integrity sha512-Kj/Gh+Rw2RNLbCK1VAWj2U48yxxqL2x0k10nPtSdRa0O2xnHXalD0s+o1A6a0W43gJ00ANo38jxkQreckOzv5A== +"@babel/plugin-transform-object-super@^7.0.0", "@babel/plugin-transform-object-super@^7.27.1": + version "7.27.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.27.1.tgz#1c932cd27bf3874c43a5cac4f43ebf970c9871b5" + integrity sha512-SFy8S9plRPbIcxlJ8A6mT/CxFdJx/c04JEctz4jf8YZaVS2px34j7NXRrlGlHkN/M2gnpL37ZpGRGVFLd3l8Ng== dependencies: - "@babel/helper-plugin-utils" "^7.25.9" - "@babel/helper-replace-supers" "^7.25.9" + "@babel/helper-plugin-utils" "^7.27.1" + "@babel/helper-replace-supers" "^7.27.1" -"@babel/plugin-transform-optional-catch-binding@^7.25.9": - version "7.25.9" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-optional-catch-binding/-/plugin-transform-optional-catch-binding-7.25.9.tgz#10e70d96d52bb1f10c5caaac59ac545ea2ba7ff3" - integrity sha512-qM/6m6hQZzDcZF3onzIhZeDHDO43bkNNlOX0i8n3lR6zLbu0GN2d8qfM/IERJZYauhAHSLHy39NF0Ctdvcid7g== +"@babel/plugin-transform-optional-catch-binding@^7.27.1": + version "7.27.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-optional-catch-binding/-/plugin-transform-optional-catch-binding-7.27.1.tgz#84c7341ebde35ccd36b137e9e45866825072a30c" + integrity sha512-txEAEKzYrHEX4xSZN4kJ+OfKXFVSWKB2ZxM9dpcE3wT7smwkNmXo5ORRlVzMVdJbD+Q8ILTgSD7959uj+3Dm3Q== dependencies: - "@babel/helper-plugin-utils" "^7.25.9" + "@babel/helper-plugin-utils" "^7.27.1" -"@babel/plugin-transform-optional-chaining@^7.25.9": - version "7.25.9" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-optional-chaining/-/plugin-transform-optional-chaining-7.25.9.tgz#e142eb899d26ef715435f201ab6e139541eee7dd" - integrity sha512-6AvV0FsLULbpnXeBjrY4dmWF8F7gf8QnvTEoO/wX/5xm/xE1Xo8oPuD3MPS+KS9f9XBEAWN7X1aWr4z9HdOr7A== +"@babel/plugin-transform-optional-chaining@^7.27.1": + version "7.27.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-optional-chaining/-/plugin-transform-optional-chaining-7.27.1.tgz#874ce3c4f06b7780592e946026eb76a32830454f" + integrity sha512-BQmKPPIuc8EkZgNKsv0X4bPmOoayeu4F1YCwx2/CfmDSXDbp7GnzlUH+/ul5VGfRg1AoFPsrIThlEBj2xb4CAg== dependencies: - "@babel/helper-plugin-utils" "^7.25.9" - "@babel/helper-skip-transparent-expression-wrappers" "^7.25.9" + "@babel/helper-plugin-utils" "^7.27.1" + "@babel/helper-skip-transparent-expression-wrappers" "^7.27.1" -"@babel/plugin-transform-parameters@^7.0.0", "@babel/plugin-transform-parameters@^7.20.7", "@babel/plugin-transform-parameters@^7.25.9": - version "7.25.9" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.25.9.tgz#b856842205b3e77e18b7a7a1b94958069c7ba257" - integrity sha512-wzz6MKwpnshBAiRmn4jR8LYz/g8Ksg0o80XmwZDlordjwEk9SxBzTWC7F5ef1jhbrbOW2DJ5J6ayRukrJmnr0g== +"@babel/plugin-transform-parameters@^7.0.0", "@babel/plugin-transform-parameters@^7.20.7", "@babel/plugin-transform-parameters@^7.27.7": + version "7.27.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.27.7.tgz#1fd2febb7c74e7d21cf3b05f7aebc907940af53a" + integrity sha512-qBkYTYCb76RRxUM6CcZA5KRu8K4SM8ajzVeUgVdMVO9NN9uI/GaVmBg/WKJJGnNokV9SY8FxNOVWGXzqzUidBg== dependencies: - "@babel/helper-plugin-utils" "^7.25.9" + "@babel/helper-plugin-utils" "^7.27.1" -"@babel/plugin-transform-private-methods@^7.25.9": - version "7.25.9" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-private-methods/-/plugin-transform-private-methods-7.25.9.tgz#847f4139263577526455d7d3223cd8bda51e3b57" - integrity sha512-D/JUozNpQLAPUVusvqMxyvjzllRaF8/nSrP1s2YGQT/W4LHK4xxsMcHjhOGTS01mp9Hda8nswb+FblLdJornQw== +"@babel/plugin-transform-private-methods@^7.27.1": + version "7.27.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-private-methods/-/plugin-transform-private-methods-7.27.1.tgz#fdacbab1c5ed81ec70dfdbb8b213d65da148b6af" + integrity sha512-10FVt+X55AjRAYI9BrdISN9/AQWHqldOeZDUoLyif1Kn05a56xVBXb8ZouL8pZ9jem8QpXaOt8TS7RHUIS+GPA== dependencies: - "@babel/helper-create-class-features-plugin" "^7.25.9" - "@babel/helper-plugin-utils" "^7.25.9" + "@babel/helper-create-class-features-plugin" "^7.27.1" + "@babel/helper-plugin-utils" "^7.27.1" -"@babel/plugin-transform-private-property-in-object@^7.25.9": - version "7.25.9" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-private-property-in-object/-/plugin-transform-private-property-in-object-7.25.9.tgz#9c8b73e64e6cc3cbb2743633885a7dd2c385fe33" - integrity sha512-Evf3kcMqzXA3xfYJmZ9Pg1OvKdtqsDMSWBDzZOPLvHiTt36E75jLDQo5w1gtRU95Q4E5PDttrTf25Fw8d/uWLw== +"@babel/plugin-transform-private-property-in-object@^7.27.1": + version "7.27.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-private-property-in-object/-/plugin-transform-private-property-in-object-7.27.1.tgz#4dbbef283b5b2f01a21e81e299f76e35f900fb11" + integrity sha512-5J+IhqTi1XPa0DXF83jYOaARrX+41gOewWbkPyjMNRDqgOCqdffGh8L3f/Ek5utaEBZExjSAzcyjmV9SSAWObQ== dependencies: - "@babel/helper-annotate-as-pure" "^7.25.9" - "@babel/helper-create-class-features-plugin" "^7.25.9" - "@babel/helper-plugin-utils" "^7.25.9" + "@babel/helper-annotate-as-pure" "^7.27.1" + "@babel/helper-create-class-features-plugin" "^7.27.1" + "@babel/helper-plugin-utils" "^7.27.1" -"@babel/plugin-transform-property-literals@^7.0.0", "@babel/plugin-transform-property-literals@^7.25.9": - version "7.25.9" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.25.9.tgz#d72d588bd88b0dec8b62e36f6fda91cedfe28e3f" - integrity sha512-IvIUeV5KrS/VPavfSM/Iu+RE6llrHrYIKY1yfCzyO/lMXHQ+p7uGhonmGVisv6tSBSVgWzMBohTcvkC9vQcQFA== +"@babel/plugin-transform-property-literals@^7.0.0", "@babel/plugin-transform-property-literals@^7.27.1": + version "7.27.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.27.1.tgz#07eafd618800591e88073a0af1b940d9a42c6424" + integrity sha512-oThy3BCuCha8kDZ8ZkgOg2exvPYUlprMukKQXI1r1pJ47NCvxfkEy8vK+r/hT9nF0Aa4H1WUPZZjHTFtAhGfmQ== dependencies: - "@babel/helper-plugin-utils" "^7.25.9" + "@babel/helper-plugin-utils" "^7.27.1" -"@babel/plugin-transform-react-display-name@^7.0.0", "@babel/plugin-transform-react-display-name@^7.25.9": - version "7.25.9" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-display-name/-/plugin-transform-react-display-name-7.25.9.tgz#4b79746b59efa1f38c8695065a92a9f5afb24f7d" - integrity sha512-KJfMlYIUxQB1CJfO3e0+h0ZHWOTLCPP115Awhaz8U0Zpq36Gl/cXlpoyMRnUWlhNUBAzldnCiAZNvCDj7CrKxQ== +"@babel/plugin-transform-react-display-name@^7.0.0", "@babel/plugin-transform-react-display-name@^7.27.1": + version "7.28.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-display-name/-/plugin-transform-react-display-name-7.28.0.tgz#6f20a7295fea7df42eb42fed8f896813f5b934de" + integrity sha512-D6Eujc2zMxKjfa4Zxl4GHMsmhKKZ9VpcqIchJLvwTxad9zWIYulwYItBovpDOoNLISpcZSXoDJ5gaGbQUDqViA== dependencies: - "@babel/helper-plugin-utils" "^7.25.9" + "@babel/helper-plugin-utils" "^7.27.1" -"@babel/plugin-transform-react-jsx-development@^7.25.9": - version "7.25.9" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx-development/-/plugin-transform-react-jsx-development-7.25.9.tgz#8fd220a77dd139c07e25225a903b8be8c829e0d7" - integrity sha512-9mj6rm7XVYs4mdLIpbZnHOYdpW42uoiBCTVowg7sP1thUOiANgMb4UtpRivR0pp5iL+ocvUv7X4mZgFRpJEzGw== +"@babel/plugin-transform-react-jsx-development@^7.27.1": + version "7.27.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx-development/-/plugin-transform-react-jsx-development-7.27.1.tgz#47ff95940e20a3a70e68ad3d4fcb657b647f6c98" + integrity sha512-ykDdF5yI4f1WrAolLqeF3hmYU12j9ntLQl/AOG1HAS21jxyg1Q0/J/tpREuYLfatGdGmXp/3yS0ZA76kOlVq9Q== dependencies: - "@babel/plugin-transform-react-jsx" "^7.25.9" + "@babel/plugin-transform-react-jsx" "^7.27.1" -"@babel/plugin-transform-react-jsx@^7.0.0", "@babel/plugin-transform-react-jsx@^7.25.9": - version "7.25.9" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.25.9.tgz#06367940d8325b36edff5e2b9cbe782947ca4166" - integrity sha512-s5XwpQYCqGerXl+Pu6VDL3x0j2d82eiV77UJ8a2mDHAW7j9SWRqQ2y1fNo1Z74CdcYipl5Z41zvjj4Nfzq36rw== +"@babel/plugin-transform-react-jsx@^7.0.0", "@babel/plugin-transform-react-jsx@^7.27.1": + version "7.27.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.27.1.tgz#1023bc94b78b0a2d68c82b5e96aed573bcfb9db0" + integrity sha512-2KH4LWGSrJIkVf5tSiBFYuXDAoWRq2MMwgivCf+93dd0GQi8RXLjKA/0EvRnVV5G0hrHczsquXuD01L8s6dmBw== dependencies: - "@babel/helper-annotate-as-pure" "^7.25.9" - "@babel/helper-module-imports" "^7.25.9" - "@babel/helper-plugin-utils" "^7.25.9" - "@babel/plugin-syntax-jsx" "^7.25.9" - "@babel/types" "^7.25.9" + "@babel/helper-annotate-as-pure" "^7.27.1" + "@babel/helper-module-imports" "^7.27.1" + "@babel/helper-plugin-utils" "^7.27.1" + "@babel/plugin-syntax-jsx" "^7.27.1" + "@babel/types" "^7.27.1" -"@babel/plugin-transform-react-pure-annotations@^7.25.9": - version "7.25.9" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-pure-annotations/-/plugin-transform-react-pure-annotations-7.25.9.tgz#ea1c11b2f9dbb8e2d97025f43a3b5bc47e18ae62" - integrity sha512-KQ/Takk3T8Qzj5TppkS1be588lkbTp5uj7w6a0LeQaTMSckU/wK0oJ/pih+T690tkgI5jfmg2TqDJvd41Sj1Cg== +"@babel/plugin-transform-react-pure-annotations@^7.27.1": + version "7.27.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-pure-annotations/-/plugin-transform-react-pure-annotations-7.27.1.tgz#339f1ce355eae242e0649f232b1c68907c02e879" + integrity sha512-JfuinvDOsD9FVMTHpzA/pBLisxpv1aSf+OIV8lgH3MuWrks19R27e6a6DipIg4aX1Zm9Wpb04p8wljfKrVSnPA== dependencies: - "@babel/helper-annotate-as-pure" "^7.25.9" - "@babel/helper-plugin-utils" "^7.25.9" + "@babel/helper-annotate-as-pure" "^7.27.1" + "@babel/helper-plugin-utils" "^7.27.1" -"@babel/plugin-transform-regenerator@^7.25.9": - version "7.25.9" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.25.9.tgz#03a8a4670d6cebae95305ac6defac81ece77740b" - integrity sha512-vwDcDNsgMPDGP0nMqzahDWE5/MLcX8sv96+wfX7as7LoF/kr97Bo/7fI00lXY4wUXYfVmwIIyG80fGZ1uvt2qg== +"@babel/plugin-transform-regenerator@^7.28.0": + version "7.28.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.28.1.tgz#bde80603442ff4bb4e910bc8b35485295d556ab1" + integrity sha512-P0QiV/taaa3kXpLY+sXla5zec4E+4t4Aqc9ggHlfZ7a2cp8/x/Gv08jfwEtn9gnnYIMvHx6aoOZ8XJL8eU71Dg== dependencies: - "@babel/helper-plugin-utils" "^7.25.9" - regenerator-transform "^0.15.2" + "@babel/helper-plugin-utils" "^7.27.1" -"@babel/plugin-transform-regexp-modifiers@^7.26.0": - version "7.26.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-regexp-modifiers/-/plugin-transform-regexp-modifiers-7.26.0.tgz#2f5837a5b5cd3842a919d8147e9903cc7455b850" - integrity sha512-vN6saax7lrA2yA/Pak3sCxuD6F5InBjn9IcrIKQPjpsLvuHYLVroTxjdlVRHjjBWxKOqIwpTXDkOssYT4BFdRw== +"@babel/plugin-transform-regexp-modifiers@^7.27.1": + version "7.27.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-regexp-modifiers/-/plugin-transform-regexp-modifiers-7.27.1.tgz#df9ba5577c974e3f1449888b70b76169998a6d09" + integrity sha512-TtEciroaiODtXvLZv4rmfMhkCv8jx3wgKpL68PuiPh2M4fvz5jhsA7697N1gMvkvr/JTF13DrFYyEbY9U7cVPA== dependencies: - "@babel/helper-create-regexp-features-plugin" "^7.25.9" - "@babel/helper-plugin-utils" "^7.25.9" + "@babel/helper-create-regexp-features-plugin" "^7.27.1" + "@babel/helper-plugin-utils" "^7.27.1" -"@babel/plugin-transform-reserved-words@^7.25.9": - version "7.25.9" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.25.9.tgz#0398aed2f1f10ba3f78a93db219b27ef417fb9ce" - integrity sha512-7DL7DKYjn5Su++4RXu8puKZm2XBPHyjWLUidaPEkCUBbE7IPcsrkRHggAOOKydH1dASWdcUBxrkOGNxUv5P3Jg== +"@babel/plugin-transform-reserved-words@^7.27.1": + version "7.27.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.27.1.tgz#40fba4878ccbd1c56605a4479a3a891ac0274bb4" + integrity sha512-V2ABPHIJX4kC7HegLkYoDpfg9PVmuWy/i6vUM5eGK22bx4YVFD3M5F0QQnWQoDs6AGsUWTVOopBiMFQgHaSkVw== dependencies: - "@babel/helper-plugin-utils" "^7.25.9" + "@babel/helper-plugin-utils" "^7.27.1" "@babel/plugin-transform-runtime@^7.19.6": - version "7.25.9" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.25.9.tgz#62723ea3f5b31ffbe676da9d6dae17138ae580ea" - integrity sha512-nZp7GlEl+yULJrClz0SwHPqir3lc0zsPrDHQUcxGspSL7AKrexNSEfTbfqnDNJUO13bgKyfuOLMF8Xqtu8j3YQ== - dependencies: - "@babel/helper-module-imports" "^7.25.9" - "@babel/helper-plugin-utils" "^7.25.9" - babel-plugin-polyfill-corejs2 "^0.4.10" - babel-plugin-polyfill-corejs3 "^0.10.6" - babel-plugin-polyfill-regenerator "^0.6.1" + version "7.28.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.28.0.tgz#462e79008cc7bdac03e4c5e1765b9de2bcd31c21" + integrity sha512-dGopk9nZrtCs2+nfIem25UuHyt5moSJamArzIoh9/vezUQPmYDOzjaHDCkAzuGJibCIkPup8rMT2+wYB6S73cA== + dependencies: + "@babel/helper-module-imports" "^7.27.1" + "@babel/helper-plugin-utils" "^7.27.1" + babel-plugin-polyfill-corejs2 "^0.4.14" + babel-plugin-polyfill-corejs3 "^0.13.0" + babel-plugin-polyfill-regenerator "^0.6.5" semver "^6.3.1" -"@babel/plugin-transform-shorthand-properties@^7.0.0", "@babel/plugin-transform-shorthand-properties@^7.25.9": - version "7.25.9" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.25.9.tgz#bb785e6091f99f826a95f9894fc16fde61c163f2" - integrity sha512-MUv6t0FhO5qHnS/W8XCbHmiRWOphNufpE1IVxhK5kuN3Td9FT1x4rx4K42s3RYdMXCXpfWkGSbCSd0Z64xA7Ng== +"@babel/plugin-transform-shorthand-properties@^7.0.0", "@babel/plugin-transform-shorthand-properties@^7.27.1": + version "7.27.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.27.1.tgz#532abdacdec87bfee1e0ef8e2fcdee543fe32b90" + integrity sha512-N/wH1vcn4oYawbJ13Y/FxcQrWk63jhfNa7jef0ih7PHSIHX2LB7GWE1rkPrOnka9kwMxb6hMl19p7lidA+EHmQ== dependencies: - "@babel/helper-plugin-utils" "^7.25.9" + "@babel/helper-plugin-utils" "^7.27.1" -"@babel/plugin-transform-spread@^7.0.0", "@babel/plugin-transform-spread@^7.20.7", "@babel/plugin-transform-spread@^7.25.9": - version "7.25.9" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-spread/-/plugin-transform-spread-7.25.9.tgz#24a35153931b4ba3d13cec4a7748c21ab5514ef9" - integrity sha512-oNknIB0TbURU5pqJFVbOOFspVlrpVwo2H1+HUIsVDvp5VauGGDP1ZEvO8Nn5xyMEs3dakajOxlmkNW7kNgSm6A== +"@babel/plugin-transform-spread@^7.0.0", "@babel/plugin-transform-spread@^7.20.7", "@babel/plugin-transform-spread@^7.27.1": + version "7.27.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-spread/-/plugin-transform-spread-7.27.1.tgz#1a264d5fc12750918f50e3fe3e24e437178abb08" + integrity sha512-kpb3HUqaILBJcRFVhFUs6Trdd4mkrzcGXss+6/mxUd273PfbWqSDHRzMT2234gIg2QYfAjvXLSquP1xECSg09Q== dependencies: - "@babel/helper-plugin-utils" "^7.25.9" - "@babel/helper-skip-transparent-expression-wrappers" "^7.25.9" + "@babel/helper-plugin-utils" "^7.27.1" + "@babel/helper-skip-transparent-expression-wrappers" "^7.27.1" -"@babel/plugin-transform-sticky-regex@^7.25.9": - version "7.25.9" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.25.9.tgz#c7f02b944e986a417817b20ba2c504dfc1453d32" - integrity sha512-WqBUSgeVwucYDP9U/xNRQam7xV8W5Zf+6Eo7T2SRVUFlhRiMNFdFz58u0KZmCVVqs2i7SHgpRnAhzRNmKfi2uA== +"@babel/plugin-transform-sticky-regex@^7.27.1": + version "7.27.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.27.1.tgz#18984935d9d2296843a491d78a014939f7dcd280" + integrity sha512-lhInBO5bi/Kowe2/aLdBAawijx+q1pQzicSgnkB6dUPc1+RC8QmJHKf2OjvU+NZWitguJHEaEmbV6VWEouT58g== dependencies: - "@babel/helper-plugin-utils" "^7.25.9" + "@babel/helper-plugin-utils" "^7.27.1" -"@babel/plugin-transform-template-literals@^7.0.0", "@babel/plugin-transform-template-literals@^7.25.9": - version "7.25.9" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.25.9.tgz#6dbd4a24e8fad024df76d1fac6a03cf413f60fe1" - integrity sha512-o97AE4syN71M/lxrCtQByzphAdlYluKPDBzDVzMmfCobUjjhAryZV0AIpRPrxN0eAkxXO6ZLEScmt+PNhj2OTw== +"@babel/plugin-transform-template-literals@^7.0.0", "@babel/plugin-transform-template-literals@^7.27.1": + version "7.27.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.27.1.tgz#1a0eb35d8bb3e6efc06c9fd40eb0bcef548328b8" + integrity sha512-fBJKiV7F2DxZUkg5EtHKXQdbsbURW3DZKQUWphDum0uRP6eHGGa/He9mc0mypL680pb+e/lDIthRohlv8NCHkg== dependencies: - "@babel/helper-plugin-utils" "^7.25.9" + "@babel/helper-plugin-utils" "^7.27.1" -"@babel/plugin-transform-typeof-symbol@^7.25.9": - version "7.25.9" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.25.9.tgz#224ba48a92869ddbf81f9b4a5f1204bbf5a2bc4b" - integrity sha512-v61XqUMiueJROUv66BVIOi0Fv/CUuZuZMl5NkRoCVxLAnMexZ0A3kMe7vvZ0nulxMuMp0Mk6S5hNh48yki08ZA== +"@babel/plugin-transform-typeof-symbol@^7.27.1": + version "7.27.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.27.1.tgz#70e966bb492e03509cf37eafa6dcc3051f844369" + integrity sha512-RiSILC+nRJM7FY5srIyc4/fGIwUhyDuuBSdWn4y6yT6gm652DpCHZjIipgn6B7MQ1ITOUnAKWixEUjQRIBIcLw== dependencies: - "@babel/helper-plugin-utils" "^7.25.9" + "@babel/helper-plugin-utils" "^7.27.1" -"@babel/plugin-transform-typescript@^7.25.9": - version "7.26.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.26.3.tgz#3d6add9c78735623317387ee26d5ada540eee3fd" - integrity sha512-6+5hpdr6mETwSKjmJUdYw0EIkATiQhnELWlE3kJFBwSg/BGIVwVaVbX+gOXBCdc7Ln1RXZxyWGecIXhUfnl7oA== +"@babel/plugin-transform-typescript@^7.27.1": + version "7.28.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.28.0.tgz#796cbd249ab56c18168b49e3e1d341b72af04a6b" + integrity sha512-4AEiDEBPIZvLQaWlc9liCavE0xRM0dNca41WtBeM3jgFptfUOSG9z0uteLhq6+3rq+WB6jIvUwKDTpXEHPJ2Vg== dependencies: - "@babel/helper-annotate-as-pure" "^7.25.9" - "@babel/helper-create-class-features-plugin" "^7.25.9" - "@babel/helper-plugin-utils" "^7.25.9" - "@babel/helper-skip-transparent-expression-wrappers" "^7.25.9" - "@babel/plugin-syntax-typescript" "^7.25.9" + "@babel/helper-annotate-as-pure" "^7.27.3" + "@babel/helper-create-class-features-plugin" "^7.27.1" + "@babel/helper-plugin-utils" "^7.27.1" + "@babel/helper-skip-transparent-expression-wrappers" "^7.27.1" + "@babel/plugin-syntax-typescript" "^7.27.1" -"@babel/plugin-transform-unicode-escapes@^7.25.9": - version "7.25.9" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.25.9.tgz#a75ef3947ce15363fccaa38e2dd9bc70b2788b82" - integrity sha512-s5EDrE6bW97LtxOcGj1Khcx5AaXwiMmi4toFWRDP9/y0Woo6pXC+iyPu/KuhKtfSrNFd7jJB+/fkOtZy6aIC6Q== +"@babel/plugin-transform-unicode-escapes@^7.27.1": + version "7.27.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.27.1.tgz#3e3143f8438aef842de28816ece58780190cf806" + integrity sha512-Ysg4v6AmF26k9vpfFuTZg8HRfVWzsh1kVfowA23y9j/Gu6dOuahdUVhkLqpObp3JIv27MLSii6noRnuKN8H0Mg== dependencies: - "@babel/helper-plugin-utils" "^7.25.9" + "@babel/helper-plugin-utils" "^7.27.1" -"@babel/plugin-transform-unicode-property-regex@^7.25.9": - version "7.25.9" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-property-regex/-/plugin-transform-unicode-property-regex-7.25.9.tgz#a901e96f2c1d071b0d1bb5dc0d3c880ce8f53dd3" - integrity sha512-Jt2d8Ga+QwRluxRQ307Vlxa6dMrYEMZCgGxoPR8V52rxPyldHu3hdlHspxaqYmE7oID5+kB+UKUB/eWS+DkkWg== +"@babel/plugin-transform-unicode-property-regex@^7.27.1": + version "7.27.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-property-regex/-/plugin-transform-unicode-property-regex-7.27.1.tgz#bdfe2d3170c78c5691a3c3be934c8c0087525956" + integrity sha512-uW20S39PnaTImxp39O5qFlHLS9LJEmANjMG7SxIhap8rCHqu0Ik+tLEPX5DKmHn6CsWQ7j3lix2tFOa5YtL12Q== dependencies: - "@babel/helper-create-regexp-features-plugin" "^7.25.9" - "@babel/helper-plugin-utils" "^7.25.9" + "@babel/helper-create-regexp-features-plugin" "^7.27.1" + "@babel/helper-plugin-utils" "^7.27.1" -"@babel/plugin-transform-unicode-regex@^7.25.9": - version "7.25.9" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.25.9.tgz#5eae747fe39eacf13a8bd006a4fb0b5d1fa5e9b1" - integrity sha512-yoxstj7Rg9dlNn9UQxzk4fcNivwv4nUYz7fYXBaKxvw/lnmPuOm/ikoELygbYq68Bls3D/D+NBPHiLwZdZZ4HA== +"@babel/plugin-transform-unicode-regex@^7.27.1": + version "7.27.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.27.1.tgz#25948f5c395db15f609028e370667ed8bae9af97" + integrity sha512-xvINq24TRojDuyt6JGtHmkVkrfVV3FPT16uytxImLeBZqW3/H52yN+kM1MGuyPkIQxrzKwPHs5U/MP3qKyzkGw== dependencies: - "@babel/helper-create-regexp-features-plugin" "^7.25.9" - "@babel/helper-plugin-utils" "^7.25.9" + "@babel/helper-create-regexp-features-plugin" "^7.27.1" + "@babel/helper-plugin-utils" "^7.27.1" -"@babel/plugin-transform-unicode-sets-regex@^7.25.9": - version "7.25.9" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-sets-regex/-/plugin-transform-unicode-sets-regex-7.25.9.tgz#65114c17b4ffc20fa5b163c63c70c0d25621fabe" - integrity sha512-8BYqO3GeVNHtx69fdPshN3fnzUNLrWdHhk/icSwigksJGczKSizZ+Z6SBCxTs723Fr5VSNorTIK7a+R2tISvwQ== +"@babel/plugin-transform-unicode-sets-regex@^7.27.1": + version "7.27.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-sets-regex/-/plugin-transform-unicode-sets-regex-7.27.1.tgz#6ab706d10f801b5c72da8bb2548561fa04193cd1" + integrity sha512-EtkOujbc4cgvb0mlpQefi4NTPBzhSIevblFevACNLUspmrALgmEBdL/XfnyyITfd8fKBZrZys92zOWcik7j9Tw== dependencies: - "@babel/helper-create-regexp-features-plugin" "^7.25.9" - "@babel/helper-plugin-utils" "^7.25.9" + "@babel/helper-create-regexp-features-plugin" "^7.27.1" + "@babel/helper-plugin-utils" "^7.27.1" "@babel/preset-env@^7.20.2": - version "7.26.0" - resolved "https://registry.yarnpkg.com/@babel/preset-env/-/preset-env-7.26.0.tgz#30e5c6bc1bcc54865bff0c5a30f6d4ccdc7fa8b1" - integrity sha512-H84Fxq0CQJNdPFT2DrfnylZ3cf5K43rGfWK4LJGPpjKHiZlk0/RzwEus3PDDZZg+/Er7lCA03MVacueUuXdzfw== - dependencies: - "@babel/compat-data" "^7.26.0" - "@babel/helper-compilation-targets" "^7.25.9" - "@babel/helper-plugin-utils" "^7.25.9" - "@babel/helper-validator-option" "^7.25.9" - "@babel/plugin-bugfix-firefox-class-in-computed-class-key" "^7.25.9" - "@babel/plugin-bugfix-safari-class-field-initializer-scope" "^7.25.9" - "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression" "^7.25.9" - "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining" "^7.25.9" - "@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly" "^7.25.9" + version "7.28.0" + resolved "https://registry.yarnpkg.com/@babel/preset-env/-/preset-env-7.28.0.tgz#d23a6bc17b43227d11db77081a0779c706b5569c" + integrity sha512-VmaxeGOwuDqzLl5JUkIRM1X2Qu2uKGxHEQWh+cvvbl7JuJRgKGJSfsEF/bUaxFhJl/XAyxBe7q7qSuTbKFuCyg== + dependencies: + "@babel/compat-data" "^7.28.0" + "@babel/helper-compilation-targets" "^7.27.2" + "@babel/helper-plugin-utils" "^7.27.1" + "@babel/helper-validator-option" "^7.27.1" + "@babel/plugin-bugfix-firefox-class-in-computed-class-key" "^7.27.1" + "@babel/plugin-bugfix-safari-class-field-initializer-scope" "^7.27.1" + "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression" "^7.27.1" + "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining" "^7.27.1" + "@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly" "^7.27.1" "@babel/plugin-proposal-private-property-in-object" "7.21.0-placeholder-for-preset-env.2" - "@babel/plugin-syntax-import-assertions" "^7.26.0" - "@babel/plugin-syntax-import-attributes" "^7.26.0" + "@babel/plugin-syntax-import-assertions" "^7.27.1" + "@babel/plugin-syntax-import-attributes" "^7.27.1" "@babel/plugin-syntax-unicode-sets-regex" "^7.18.6" - "@babel/plugin-transform-arrow-functions" "^7.25.9" - "@babel/plugin-transform-async-generator-functions" "^7.25.9" - "@babel/plugin-transform-async-to-generator" "^7.25.9" - "@babel/plugin-transform-block-scoped-functions" "^7.25.9" - "@babel/plugin-transform-block-scoping" "^7.25.9" - "@babel/plugin-transform-class-properties" "^7.25.9" - "@babel/plugin-transform-class-static-block" "^7.26.0" - "@babel/plugin-transform-classes" "^7.25.9" - "@babel/plugin-transform-computed-properties" "^7.25.9" - "@babel/plugin-transform-destructuring" "^7.25.9" - "@babel/plugin-transform-dotall-regex" "^7.25.9" - "@babel/plugin-transform-duplicate-keys" "^7.25.9" - "@babel/plugin-transform-duplicate-named-capturing-groups-regex" "^7.25.9" - "@babel/plugin-transform-dynamic-import" "^7.25.9" - "@babel/plugin-transform-exponentiation-operator" "^7.25.9" - "@babel/plugin-transform-export-namespace-from" "^7.25.9" - "@babel/plugin-transform-for-of" "^7.25.9" - "@babel/plugin-transform-function-name" "^7.25.9" - "@babel/plugin-transform-json-strings" "^7.25.9" - "@babel/plugin-transform-literals" "^7.25.9" - "@babel/plugin-transform-logical-assignment-operators" "^7.25.9" - "@babel/plugin-transform-member-expression-literals" "^7.25.9" - "@babel/plugin-transform-modules-amd" "^7.25.9" - "@babel/plugin-transform-modules-commonjs" "^7.25.9" - "@babel/plugin-transform-modules-systemjs" "^7.25.9" - "@babel/plugin-transform-modules-umd" "^7.25.9" - "@babel/plugin-transform-named-capturing-groups-regex" "^7.25.9" - "@babel/plugin-transform-new-target" "^7.25.9" - "@babel/plugin-transform-nullish-coalescing-operator" "^7.25.9" - "@babel/plugin-transform-numeric-separator" "^7.25.9" - "@babel/plugin-transform-object-rest-spread" "^7.25.9" - "@babel/plugin-transform-object-super" "^7.25.9" - "@babel/plugin-transform-optional-catch-binding" "^7.25.9" - "@babel/plugin-transform-optional-chaining" "^7.25.9" - "@babel/plugin-transform-parameters" "^7.25.9" - "@babel/plugin-transform-private-methods" "^7.25.9" - "@babel/plugin-transform-private-property-in-object" "^7.25.9" - "@babel/plugin-transform-property-literals" "^7.25.9" - "@babel/plugin-transform-regenerator" "^7.25.9" - "@babel/plugin-transform-regexp-modifiers" "^7.26.0" - "@babel/plugin-transform-reserved-words" "^7.25.9" - "@babel/plugin-transform-shorthand-properties" "^7.25.9" - "@babel/plugin-transform-spread" "^7.25.9" - "@babel/plugin-transform-sticky-regex" "^7.25.9" - "@babel/plugin-transform-template-literals" "^7.25.9" - "@babel/plugin-transform-typeof-symbol" "^7.25.9" - "@babel/plugin-transform-unicode-escapes" "^7.25.9" - "@babel/plugin-transform-unicode-property-regex" "^7.25.9" - "@babel/plugin-transform-unicode-regex" "^7.25.9" - "@babel/plugin-transform-unicode-sets-regex" "^7.25.9" + "@babel/plugin-transform-arrow-functions" "^7.27.1" + "@babel/plugin-transform-async-generator-functions" "^7.28.0" + "@babel/plugin-transform-async-to-generator" "^7.27.1" + "@babel/plugin-transform-block-scoped-functions" "^7.27.1" + "@babel/plugin-transform-block-scoping" "^7.28.0" + "@babel/plugin-transform-class-properties" "^7.27.1" + "@babel/plugin-transform-class-static-block" "^7.27.1" + "@babel/plugin-transform-classes" "^7.28.0" + "@babel/plugin-transform-computed-properties" "^7.27.1" + "@babel/plugin-transform-destructuring" "^7.28.0" + "@babel/plugin-transform-dotall-regex" "^7.27.1" + "@babel/plugin-transform-duplicate-keys" "^7.27.1" + "@babel/plugin-transform-duplicate-named-capturing-groups-regex" "^7.27.1" + "@babel/plugin-transform-dynamic-import" "^7.27.1" + "@babel/plugin-transform-explicit-resource-management" "^7.28.0" + "@babel/plugin-transform-exponentiation-operator" "^7.27.1" + "@babel/plugin-transform-export-namespace-from" "^7.27.1" + "@babel/plugin-transform-for-of" "^7.27.1" + "@babel/plugin-transform-function-name" "^7.27.1" + "@babel/plugin-transform-json-strings" "^7.27.1" + "@babel/plugin-transform-literals" "^7.27.1" + "@babel/plugin-transform-logical-assignment-operators" "^7.27.1" + "@babel/plugin-transform-member-expression-literals" "^7.27.1" + "@babel/plugin-transform-modules-amd" "^7.27.1" + "@babel/plugin-transform-modules-commonjs" "^7.27.1" + "@babel/plugin-transform-modules-systemjs" "^7.27.1" + "@babel/plugin-transform-modules-umd" "^7.27.1" + "@babel/plugin-transform-named-capturing-groups-regex" "^7.27.1" + "@babel/plugin-transform-new-target" "^7.27.1" + "@babel/plugin-transform-nullish-coalescing-operator" "^7.27.1" + "@babel/plugin-transform-numeric-separator" "^7.27.1" + "@babel/plugin-transform-object-rest-spread" "^7.28.0" + "@babel/plugin-transform-object-super" "^7.27.1" + "@babel/plugin-transform-optional-catch-binding" "^7.27.1" + "@babel/plugin-transform-optional-chaining" "^7.27.1" + "@babel/plugin-transform-parameters" "^7.27.7" + "@babel/plugin-transform-private-methods" "^7.27.1" + "@babel/plugin-transform-private-property-in-object" "^7.27.1" + "@babel/plugin-transform-property-literals" "^7.27.1" + "@babel/plugin-transform-regenerator" "^7.28.0" + "@babel/plugin-transform-regexp-modifiers" "^7.27.1" + "@babel/plugin-transform-reserved-words" "^7.27.1" + "@babel/plugin-transform-shorthand-properties" "^7.27.1" + "@babel/plugin-transform-spread" "^7.27.1" + "@babel/plugin-transform-sticky-regex" "^7.27.1" + "@babel/plugin-transform-template-literals" "^7.27.1" + "@babel/plugin-transform-typeof-symbol" "^7.27.1" + "@babel/plugin-transform-unicode-escapes" "^7.27.1" + "@babel/plugin-transform-unicode-property-regex" "^7.27.1" + "@babel/plugin-transform-unicode-regex" "^7.27.1" + "@babel/plugin-transform-unicode-sets-regex" "^7.27.1" "@babel/preset-modules" "0.1.6-no-external-plugins" - babel-plugin-polyfill-corejs2 "^0.4.10" - babel-plugin-polyfill-corejs3 "^0.10.6" - babel-plugin-polyfill-regenerator "^0.6.1" - core-js-compat "^3.38.1" + babel-plugin-polyfill-corejs2 "^0.4.14" + babel-plugin-polyfill-corejs3 "^0.13.0" + babel-plugin-polyfill-regenerator "^0.6.5" + core-js-compat "^3.43.0" semver "^6.3.1" "@babel/preset-modules@0.1.6-no-external-plugins": @@ -1042,86 +1051,62 @@ esutils "^2.0.2" "@babel/preset-react@^7.18.6": - version "7.26.3" - resolved "https://registry.yarnpkg.com/@babel/preset-react/-/preset-react-7.26.3.tgz#7c5e028d623b4683c1f83a0bd4713b9100560caa" - integrity sha512-Nl03d6T9ky516DGK2YMxrTqvnpUW63TnJMOMonj+Zae0JiPC5BC9xPMSL6L8fiSpA5vP88qfygavVQvnLp+6Cw== + version "7.27.1" + resolved "https://registry.yarnpkg.com/@babel/preset-react/-/preset-react-7.27.1.tgz#86ea0a5ca3984663f744be2fd26cb6747c3fd0ec" + integrity sha512-oJHWh2gLhU9dW9HHr42q0cI0/iHHXTLGe39qvpAZZzagHy0MzYLCnCVV0symeRvzmjHyVU7mw2K06E6u/JwbhA== dependencies: - "@babel/helper-plugin-utils" "^7.25.9" - "@babel/helper-validator-option" "^7.25.9" - "@babel/plugin-transform-react-display-name" "^7.25.9" - "@babel/plugin-transform-react-jsx" "^7.25.9" - "@babel/plugin-transform-react-jsx-development" "^7.25.9" - "@babel/plugin-transform-react-pure-annotations" "^7.25.9" + "@babel/helper-plugin-utils" "^7.27.1" + "@babel/helper-validator-option" "^7.27.1" + "@babel/plugin-transform-react-display-name" "^7.27.1" + "@babel/plugin-transform-react-jsx" "^7.27.1" + "@babel/plugin-transform-react-jsx-development" "^7.27.1" + "@babel/plugin-transform-react-pure-annotations" "^7.27.1" "@babel/preset-typescript@^7.18.6": - version "7.26.0" - resolved "https://registry.yarnpkg.com/@babel/preset-typescript/-/preset-typescript-7.26.0.tgz#4a570f1b8d104a242d923957ffa1eaff142a106d" - integrity sha512-NMk1IGZ5I/oHhoXEElcm+xUnL/szL6xflkFZmoEU9xj1qSJXpiS7rsspYo92B4DRCDvZn2erT5LdsCeXAKNCkg== - dependencies: - "@babel/helper-plugin-utils" "^7.25.9" - "@babel/helper-validator-option" "^7.25.9" - "@babel/plugin-syntax-jsx" "^7.25.9" - "@babel/plugin-transform-modules-commonjs" "^7.25.9" - "@babel/plugin-transform-typescript" "^7.25.9" - -"@babel/runtime@^7.0.0", "@babel/runtime@^7.12.5", "@babel/runtime@^7.20.13", "@babel/runtime@^7.25.6", "@babel/runtime@^7.3.1", "@babel/runtime@^7.8.4", "@babel/runtime@^7.9.2": - version "7.26.10" - resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.26.10.tgz#a07b4d8fa27af131a633d7b3524db803eb4764c2" - integrity sha512-2WJMeRQPHKSPemqk/awGrAiuFfzBmOIPXKizAsVhWH9YJqLZ0H+HS4c8loHGgW6utJ3E/ejXQUsiGaQy2NZ9Fw== - dependencies: - regenerator-runtime "^0.14.0" - -"@babel/runtime@^7.10.1", "@babel/runtime@^7.10.4", "@babel/runtime@^7.11.1", "@babel/runtime@^7.11.2", "@babel/runtime@^7.16.7", "@babel/runtime@^7.18.0", "@babel/runtime@^7.18.3", "@babel/runtime@^7.20.0", "@babel/runtime@^7.20.7", "@babel/runtime@^7.21.0", "@babel/runtime@^7.22.5", "@babel/runtime@^7.23.2", "@babel/runtime@^7.23.6", "@babel/runtime@^7.23.9", "@babel/runtime@^7.24.4", "@babel/runtime@^7.24.7", "@babel/runtime@^7.24.8", "@babel/runtime@^7.25.7", "@babel/runtime@^7.26.0": - version "7.27.6" - resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.27.6.tgz#ec4070a04d76bae8ddbb10770ba55714a417b7c6" - integrity sha512-vbavdySgbTTrmFE+EsiqUTzlOr5bzlnJtUv9PynGCAKvfQqjIXbvFdumPM/GxMDfyuGMJaJAU6TO4zc1Jf1i8Q== - -"@babel/template@^7.20.7", "@babel/template@^7.25.9": - version "7.25.9" - resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.25.9.tgz#ecb62d81a8a6f5dc5fe8abfc3901fc52ddf15016" - integrity sha512-9DGttpmPvIxBb/2uwpVo3dqJ+O6RooAFOS+lB+xDqoE2PVCE8nfoHMdZLpfCQRLwvohzXISPZcgxt80xLfsuwg== - dependencies: - "@babel/code-frame" "^7.25.9" - "@babel/parser" "^7.25.9" - "@babel/types" "^7.25.9" - -"@babel/template@^7.26.9": - version "7.26.9" - resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.26.9.tgz#4577ad3ddf43d194528cff4e1fa6b232fa609bb2" - integrity sha512-qyRplbeIpNZhmzOysF/wFMuP9sctmh2cFzRAZOn1YapxBsE1i9bJIY586R/WBLfLcmcBlM8ROBiQURnnNy+zfA== - dependencies: - "@babel/code-frame" "^7.26.2" - "@babel/parser" "^7.26.9" - "@babel/types" "^7.26.9" - -"@babel/traverse@^7.14.0", "@babel/traverse@^7.16.8", "@babel/traverse@^7.20.13", "@babel/traverse@^7.25.9": - version "7.26.4" - resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.26.4.tgz#ac3a2a84b908dde6d463c3bfa2c5fdc1653574bd" - integrity sha512-fH+b7Y4p3yqvApJALCPJcwb0/XaOSgtK4pzV6WVjPR5GLFQBRI7pfoX2V2iM48NXvX07NUxxm1Vw98YjqTcU5w== - dependencies: - "@babel/code-frame" "^7.26.2" - "@babel/generator" "^7.26.3" - "@babel/parser" "^7.26.3" - "@babel/template" "^7.25.9" - "@babel/types" "^7.26.3" + version "7.27.1" + resolved "https://registry.yarnpkg.com/@babel/preset-typescript/-/preset-typescript-7.27.1.tgz#190742a6428d282306648a55b0529b561484f912" + integrity sha512-l7WfQfX0WK4M0v2RudjuQK4u99BS6yLHYEmdtVPP7lKV013zr9DygFuWNlnbvQ9LR+LS0Egz/XAvGx5U9MX0fQ== + dependencies: + "@babel/helper-plugin-utils" "^7.27.1" + "@babel/helper-validator-option" "^7.27.1" + "@babel/plugin-syntax-jsx" "^7.27.1" + "@babel/plugin-transform-modules-commonjs" "^7.27.1" + "@babel/plugin-transform-typescript" "^7.27.1" + +"@babel/runtime@^7.0.0", "@babel/runtime@^7.10.1", "@babel/runtime@^7.10.4", "@babel/runtime@^7.11.1", "@babel/runtime@^7.11.2", "@babel/runtime@^7.12.5", "@babel/runtime@^7.16.7", "@babel/runtime@^7.18.0", "@babel/runtime@^7.18.3", "@babel/runtime@^7.20.0", "@babel/runtime@^7.20.13", "@babel/runtime@^7.20.7", "@babel/runtime@^7.21.0", "@babel/runtime@^7.22.5", "@babel/runtime@^7.23.2", "@babel/runtime@^7.23.6", "@babel/runtime@^7.23.9", "@babel/runtime@^7.24.4", "@babel/runtime@^7.24.7", "@babel/runtime@^7.24.8", "@babel/runtime@^7.25.6", "@babel/runtime@^7.25.7", "@babel/runtime@^7.26.0", "@babel/runtime@^7.27.6", "@babel/runtime@^7.3.1", "@babel/runtime@^7.9.2": + version "7.28.2" + resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.28.2.tgz#2ae5a9d51cc583bd1f5673b3bb70d6d819682473" + integrity sha512-KHp2IflsnGywDjBWDkR9iEqiWSpc8GIi0lgTT3mOElT0PP1tG26P4tmFI2YvAdzgq9RGyoHZQEIEdZy6Ec5xCA== + +"@babel/template@^7.20.7", "@babel/template@^7.27.1", "@babel/template@^7.27.2": + version "7.27.2" + resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.27.2.tgz#fa78ceed3c4e7b63ebf6cb39e5852fca45f6809d" + integrity sha512-LPDZ85aEJyYSd18/DkjNh4/y1ntkE5KwUHWTiqgRxruuZL2F1yuHligVHLvcHY2vMHXttKFpJn6LwfI7cw7ODw== + dependencies: + "@babel/code-frame" "^7.27.1" + "@babel/parser" "^7.27.2" + "@babel/types" "^7.27.1" + +"@babel/traverse@^7.14.0", "@babel/traverse@^7.16.8", "@babel/traverse@^7.20.13", "@babel/traverse@^7.27.1", "@babel/traverse@^7.27.3", "@babel/traverse@^7.28.0": + version "7.28.0" + resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.28.0.tgz#518aa113359b062042379e333db18380b537e34b" + integrity sha512-mGe7UK5wWyh0bKRfupsUchrQGqvDbZDbKJw+kcRGSmdHVYrv+ltd0pnpDTVpiTqnaBru9iEvA8pz8W46v0Amwg== + dependencies: + "@babel/code-frame" "^7.27.1" + "@babel/generator" "^7.28.0" + "@babel/helper-globals" "^7.28.0" + "@babel/parser" "^7.28.0" + "@babel/template" "^7.27.2" + "@babel/types" "^7.28.0" debug "^4.3.1" - globals "^11.1.0" -"@babel/types@^7.0.0", "@babel/types@^7.16.8", "@babel/types@^7.20.7", "@babel/types@^7.25.9", "@babel/types@^7.26.0", "@babel/types@^7.26.3", "@babel/types@^7.4.4": - version "7.26.3" - resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.26.3.tgz#37e79830f04c2b5687acc77db97fbc75fb81f3c0" - integrity sha512-vN5p+1kl59GVKMvTHt55NzzmYVxprfJD+ql7U9NFIfKCBkYE55LYtS+WtPlaYOyzydrKI8Nezd+aZextrd+FMA== +"@babel/types@^7.0.0", "@babel/types@^7.16.8", "@babel/types@^7.20.7", "@babel/types@^7.27.1", "@babel/types@^7.27.3", "@babel/types@^7.28.0", "@babel/types@^7.28.2", "@babel/types@^7.4.4": + version "7.28.2" + resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.28.2.tgz#da9db0856a9a88e0a13b019881d7513588cf712b" + integrity sha512-ruv7Ae4J5dUYULmeXw1gmb7rYRz57OWCPM57pHojnLq/3Z1CK2lNSLTCVjxVk1F/TZHwOZZrOWi0ur95BbLxNQ== dependencies: - "@babel/helper-string-parser" "^7.25.9" - "@babel/helper-validator-identifier" "^7.25.9" - -"@babel/types@^7.26.10", "@babel/types@^7.26.9": - version "7.26.10" - resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.26.10.tgz#396382f6335bd4feb65741eacfc808218f859259" - integrity sha512-emqcG3vHrpxUKTrxcblR36dcrcoRDvKmnL/dCL6ZsHaShW80qxCAcNhzQZrpeM765VzEos+xOi4s+r4IXzTwdQ== - dependencies: - "@babel/helper-string-parser" "^7.25.9" - "@babel/helper-validator-identifier" "^7.25.9" + "@babel/helper-string-parser" "^7.27.1" + "@babel/helper-validator-identifier" "^7.27.1" "@builder.io/partytown@^0.7.5": version "0.7.6" @@ -1129,9 +1114,9 @@ integrity sha512-snXIGNiZpqjno3XYQN2lbBB+05hsQR/LSttbtIW1c0gmZ7Kh/DIo0YrxlDxCDulAMFPFM8J+4voLwvYepSj3sw== "@dagrejs/dagre@^1.1.4": - version "1.1.4" - resolved "https://registry.yarnpkg.com/@dagrejs/dagre/-/dagre-1.1.4.tgz#66f9c0e2b558308f2c268f60e2c28f22ee17e339" - integrity sha512-QUTc54Cg/wvmlEUxB+uvoPVKFazM1H18kVHBQNmK2NbrDR5ihOCR6CXLnDSZzMcSQKJtabPUWridBOlJM3WkDg== + version "1.1.5" + resolved "https://registry.yarnpkg.com/@dagrejs/dagre/-/dagre-1.1.5.tgz#af392e24723c479f00661af3f4e8ede5c6acce51" + integrity sha512-Ghgrh08s12DCL5SeiR6AoyE80mQELTWhJBRmXfFoqDiFkR458vPEdgTbbjA0T+9ETNxUblnD0QW55tfdvi5pjQ== dependencies: "@dagrejs/graphlib" "2.2.4" @@ -1174,9 +1159,9 @@ integrity sha512-OWORNpfjMsSSUBVrRBVGECkhWcULOAJz9ZW8uK9qgxD+87M7jHRcvh/A96XXNhXTLmKcoYSQtBEX7lHMO7YRwg== "@eslint-community/eslint-utils@^4.2.0": - version "4.4.1" - resolved "https://registry.yarnpkg.com/@eslint-community/eslint-utils/-/eslint-utils-4.4.1.tgz#d1145bf2c20132d6400495d6df4bf59362fd9d56" - integrity sha512-s3O3waFUrMV8P/XaF/+ZTp1X9XBZW1a4B97ZnjQF2KYWaFD2A8KyFBsrsfSjEmjn3RGWAIuvlneuZm3CUK3jbA== + version "4.7.0" + resolved "https://registry.yarnpkg.com/@eslint-community/eslint-utils/-/eslint-utils-4.7.0.tgz#607084630c6c033992a082de6e6fbc1a8b52175a" + integrity sha512-dyybb3AcajC7uha6CvhdVRJqaKyn7w2YKqKyAN37NKYgZT36w+iRb0Dymmc5qEJ549c/S31cMMSFd75bteCpCw== dependencies: eslint-visitor-keys "^3.4.3" @@ -1200,27 +1185,27 @@ minimatch "^3.0.4" strip-json-comments "^3.1.1" -"@floating-ui/core@^1.6.0": - version "1.6.8" - resolved "https://registry.yarnpkg.com/@floating-ui/core/-/core-1.6.8.tgz#aa43561be075815879305965020f492cdb43da12" - integrity sha512-7XJ9cPU+yI2QeLS+FCSlqNFZJq8arvswefkZrYI1yQBbftw6FyrZOxYSh+9S7z7TpeWlRt9zJ5IhM1WIL334jA== +"@floating-ui/core@^1.7.3": + version "1.7.3" + resolved "https://registry.yarnpkg.com/@floating-ui/core/-/core-1.7.3.tgz#462d722f001e23e46d86fd2bd0d21b7693ccb8b7" + integrity sha512-sGnvb5dmrJaKEZ+LDIpguvdX3bDlEllmv4/ClQ9awcmCZrlx5jQyyMWFM5kBI+EyNOCDDiKk8il0zeuX3Zlg/w== dependencies: - "@floating-ui/utils" "^0.2.8" + "@floating-ui/utils" "^0.2.10" -"@floating-ui/dom@^1.0.0": - version "1.6.12" - resolved "https://registry.yarnpkg.com/@floating-ui/dom/-/dom-1.6.12.tgz#6333dcb5a8ead3b2bf82f33d6bc410e95f54e556" - integrity sha512-NP83c0HjokcGVEMeoStg317VD9W7eDlGK7457dMBANbKA6GJZdc7rjujdgqzTaz93jkGgc5P/jeWbaCHnMNc+w== +"@floating-ui/dom@^1.7.3": + version "1.7.3" + resolved "https://registry.yarnpkg.com/@floating-ui/dom/-/dom-1.7.3.tgz#6174ac3409e6a064bbdf1f4bb07188ee9461f8cf" + integrity sha512-uZA413QEpNuhtb3/iIKoYMSK07keHPYeXF02Zhd6e213j+d1NamLix/mCLxBUDW/Gx52sPH2m+chlUsyaBs/Ag== dependencies: - "@floating-ui/core" "^1.6.0" - "@floating-ui/utils" "^0.2.8" + "@floating-ui/core" "^1.7.3" + "@floating-ui/utils" "^0.2.10" "@floating-ui/react-dom@^2.1.2": - version "2.1.2" - resolved "https://registry.yarnpkg.com/@floating-ui/react-dom/-/react-dom-2.1.2.tgz#a1349bbf6a0e5cb5ded55d023766f20a4d439a31" - integrity sha512-06okr5cgPzMNBy+Ycse2A6udMi4bqwW/zgBF/rwjcNqWkyr82Mcg8b0vjX8OJpZFy/FKjJmw6wV7t44kK6kW7A== + version "2.1.5" + resolved "https://registry.yarnpkg.com/@floating-ui/react-dom/-/react-dom-2.1.5.tgz#d11e3726d2eb385d8cf3216348742907c1d49fcf" + integrity sha512-HDO/1/1oH9fjj4eLgegrlH3dklZpHtUYYFiVwMUwfGvk9jWDRWqkklA2/NFScknrcNSspbV868WjXORvreDX+Q== dependencies: - "@floating-ui/dom" "^1.0.0" + "@floating-ui/dom" "^1.7.3" "@floating-ui/react@^0.26.16": version "0.26.28" @@ -1231,10 +1216,10 @@ "@floating-ui/utils" "^0.2.8" tabbable "^6.0.0" -"@floating-ui/utils@^0.2.8": - version "0.2.8" - resolved "https://registry.yarnpkg.com/@floating-ui/utils/-/utils-0.2.8.tgz#21a907684723bbbaa5f0974cf7730bd797eb8e62" - integrity sha512-kym7SodPp8/wloecOpcmSnWJsK7M0E5Wg8UcFA+uO4B9s5d0ywXOEro/8HM9x0rW+TljRzul/14UYz3TleT3ig== +"@floating-ui/utils@^0.2.10", "@floating-ui/utils@^0.2.8": + version "0.2.10" + resolved "https://registry.yarnpkg.com/@floating-ui/utils/-/utils-0.2.10.tgz#a2a1e3812d14525f725d011a73eceb41fef5bc1c" + integrity sha512-aGTxbpbg8/b5JfU1HXSrbH3wXZuLPJcNEcZQFMxLs3oSzgtVu6nFPkbbGGUvBcUjKV2YyB9Wxxabo+HEH9tcRQ== "@gatsbyjs/parcel-namer-relative-to-cwd@2.14.0": version "2.14.0" @@ -1452,14 +1437,15 @@ "@hapi/hoek" "^9.0.0" "@headlessui/react@^2.2.0": - version "2.2.0" - resolved "https://registry.yarnpkg.com/@headlessui/react/-/react-2.2.0.tgz#a8e32f0899862849a1ce1615fa280e7891431ab7" - integrity sha512-RzCEg+LXsuI7mHiSomsu/gBJSjpupm6A1qIZ5sWjd7JhARNlMiSA4kKfJpCKwU9tE+zMRterhhrP74PvfJrpXQ== + version "2.2.7" + resolved "https://registry.yarnpkg.com/@headlessui/react/-/react-2.2.7.tgz#689443e19756f51ecc869866b3cdda19aebc38c3" + integrity sha512-WKdTymY8Y49H8/gUc/lIyYK1M+/6dq0Iywh4zTZVAaiTDprRfioxSgD0wnXTQTBpjpGJuTL1NO/mqEvc//5SSg== dependencies: "@floating-ui/react" "^0.26.16" - "@react-aria/focus" "^3.17.1" - "@react-aria/interactions" "^3.21.3" - "@tanstack/react-virtual" "^3.8.1" + "@react-aria/focus" "^3.20.2" + "@react-aria/interactions" "^3.25.0" + "@tanstack/react-virtual" "^3.13.9" + use-sync-external-store "^1.5.0" "@hello-pangea/dnd@^17.0.0": version "17.0.0" @@ -1493,6 +1479,18 @@ resolved "https://registry.yarnpkg.com/@humanwhocodes/object-schema/-/object-schema-1.2.1.tgz#b520529ec21d8e5945a1851dfd1c32e94e39ff45" integrity sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA== +"@isaacs/balanced-match@^4.0.1": + version "4.0.1" + resolved "https://registry.yarnpkg.com/@isaacs/balanced-match/-/balanced-match-4.0.1.tgz#3081dadbc3460661b751e7591d7faea5df39dd29" + integrity sha512-yzMTt9lEb8Gv7zRioUilSglI0c0smZ9k5D65677DLWLtWJaXIS3CqcGyUFByYKlnUj6TkjLVs54fBl6+TiGQDQ== + +"@isaacs/brace-expansion@^5.0.0": + version "5.0.0" + resolved "https://registry.yarnpkg.com/@isaacs/brace-expansion/-/brace-expansion-5.0.0.tgz#4b3dabab7d8e75a429414a96bd67bf4c1d13e0f3" + integrity sha512-ZT55BDLV0yv0RBm2czMiZ+SqCGO7AvmOM3G/w2xhVPH+te0aKgFjmBvGlL1dH+ql2tgGO3MVrbb3jCKyvpgnxA== + dependencies: + "@isaacs/balanced-match" "^4.0.1" + "@isaacs/cliui@^8.0.2": version "8.0.2" resolved "https://registry.yarnpkg.com/@isaacs/cliui/-/cliui-8.0.2.tgz#b37667b7bc181c168782259bab42474fbf52b550" @@ -1505,13 +1503,12 @@ wrap-ansi "^8.1.0" wrap-ansi-cjs "npm:wrap-ansi@^7.0.0" -"@jridgewell/gen-mapping@^0.3.2", "@jridgewell/gen-mapping@^0.3.5": - version "0.3.8" - resolved "https://registry.yarnpkg.com/@jridgewell/gen-mapping/-/gen-mapping-0.3.8.tgz#4f0e06362e01362f823d348f1872b08f666d8142" - integrity sha512-imAbBGkb+ebQyxKgzv5Hu2nmROxoDOXHh80evxdoXNOrvAnVx7zimzc1Oo5h9RlfV4vPXaE2iM5pOFbvOCClWA== +"@jridgewell/gen-mapping@^0.3.12", "@jridgewell/gen-mapping@^0.3.2", "@jridgewell/gen-mapping@^0.3.5": + version "0.3.12" + resolved "https://registry.yarnpkg.com/@jridgewell/gen-mapping/-/gen-mapping-0.3.12.tgz#2234ce26c62889f03db3d7fea43c1932ab3e927b" + integrity sha512-OuLGC46TjB5BbN1dH8JULVVZY4WTdkF7tV9Ys6wLL1rubZnCMstOhNHueU5bLCrnRuDhKPDM4g6sw4Bel5Gzqg== dependencies: - "@jridgewell/set-array" "^1.2.1" - "@jridgewell/sourcemap-codec" "^1.4.10" + "@jridgewell/sourcemap-codec" "^1.5.0" "@jridgewell/trace-mapping" "^0.3.24" "@jridgewell/resolve-uri@^3.1.0": @@ -1519,28 +1516,23 @@ resolved "https://registry.yarnpkg.com/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz#7a0ee601f60f99a20c7c7c5ff0c80388c1189bd6" integrity sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw== -"@jridgewell/set-array@^1.2.1": - version "1.2.1" - resolved "https://registry.yarnpkg.com/@jridgewell/set-array/-/set-array-1.2.1.tgz#558fb6472ed16a4c850b889530e6b36438c49280" - integrity sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A== - "@jridgewell/source-map@^0.3.3": - version "0.3.6" - resolved "https://registry.yarnpkg.com/@jridgewell/source-map/-/source-map-0.3.6.tgz#9d71ca886e32502eb9362c9a74a46787c36df81a" - integrity sha512-1ZJTZebgqllO79ue2bm3rIGud/bOe0pP5BjSRCRxxYkEZS8STV7zN84UBbiYu7jy+eCKSnVIUgoWWE/tt+shMQ== + version "0.3.10" + resolved "https://registry.yarnpkg.com/@jridgewell/source-map/-/source-map-0.3.10.tgz#a35714446a2e84503ff9bfe66f1d1d4846f2075b" + integrity sha512-0pPkgz9dY+bijgistcTTJ5mR+ocqRXLuhXHYdzoMmmoJ2C9S46RCm2GMUbatPEUK9Yjy26IrAy8D/M00lLkv+Q== dependencies: "@jridgewell/gen-mapping" "^0.3.5" "@jridgewell/trace-mapping" "^0.3.25" -"@jridgewell/sourcemap-codec@^1.4.10", "@jridgewell/sourcemap-codec@^1.4.14": - version "1.5.0" - resolved "https://registry.yarnpkg.com/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.0.tgz#3188bcb273a414b0d215fd22a58540b989b9409a" - integrity sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ== +"@jridgewell/sourcemap-codec@^1.4.14", "@jridgewell/sourcemap-codec@^1.5.0": + version "1.5.4" + resolved "https://registry.yarnpkg.com/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.4.tgz#7358043433b2e5da569aa02cbc4c121da3af27d7" + integrity sha512-VT2+G1VQs/9oz078bLrYbecdZKs912zQlkelYpuf+SXF+QvZDYJlbx/LSx+meSAwdDFnF8FVXW92AVjjkVmgFw== -"@jridgewell/trace-mapping@^0.3.18", "@jridgewell/trace-mapping@^0.3.24", "@jridgewell/trace-mapping@^0.3.25": - version "0.3.25" - resolved "https://registry.yarnpkg.com/@jridgewell/trace-mapping/-/trace-mapping-0.3.25.tgz#15f190e98895f3fc23276ee14bc76b675c2e50f0" - integrity sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ== +"@jridgewell/trace-mapping@^0.3.18", "@jridgewell/trace-mapping@^0.3.24", "@jridgewell/trace-mapping@^0.3.25", "@jridgewell/trace-mapping@^0.3.28": + version "0.3.29" + resolved "https://registry.yarnpkg.com/@jridgewell/trace-mapping/-/trace-mapping-0.3.29.tgz#a58d31eaadaf92c6695680b2e1d464a9b8fbf7fc" + integrity sha512-uw6guiW/gcAGPDhLmd77/6lW8QLeiV5RUTsAX46Db6oLhGaVj4lhnPwb184s1bkc8kdVg/+h988dro8GRDpmYQ== dependencies: "@jridgewell/resolve-uri" "^3.1.0" "@jridgewell/sourcemap-codec" "^1.4.14" @@ -1656,19 +1648,19 @@ "@lezer/lr" "^1.0.0" json5 "^2.2.1" -"@monaco-editor/loader@^1.4.0": - version "1.4.0" - resolved "https://registry.yarnpkg.com/@monaco-editor/loader/-/loader-1.4.0.tgz#f08227057331ec890fa1e903912a5b711a2ad558" - integrity sha512-00ioBig0x642hytVspPl7DbQyaSWRaolYie/UFNjoTdvoKPzo6xrXLhTk9ixgIKcLH5b5vDOjVNiGyY+uDCUlg== +"@monaco-editor/loader@^1.5.0": + version "1.5.0" + resolved "https://registry.yarnpkg.com/@monaco-editor/loader/-/loader-1.5.0.tgz#dcdbc7fe7e905690fb449bed1c251769f325c55d" + integrity sha512-hKoGSM+7aAc7eRTRjpqAZucPmoNOC4UUbknb/VNoTkEIkCPhqV8LfbsgM1webRM7S/z21eHEx9Fkwx8Z/C/+Xw== dependencies: state-local "^1.0.6" "@monaco-editor/react@^4.6.0": - version "4.6.0" - resolved "https://registry.yarnpkg.com/@monaco-editor/react/-/react-4.6.0.tgz#bcc68671e358a21c3814566b865a54b191e24119" - integrity sha512-RFkU9/i7cN2bsq/iTkurMWOEErmYcY6JiQI3Jn+WeR/FGISH8JbHERjpS9oRuSOPvDMJI0Z8nJeKkbOs9sBYQw== + version "4.7.0" + resolved "https://registry.yarnpkg.com/@monaco-editor/react/-/react-4.7.0.tgz#35a1ec01bfe729f38bfc025df7b7bac145602a60" + integrity sha512-cyzXQCtO47ydzxpQtCGSQGOC8Gk3ZUeBXFAxD+CWXYFo5OqZyZUonFl0DwUlTyAfRHntBfw2p3w4s9R6oe1eCA== dependencies: - "@monaco-editor/loader" "^1.4.0" + "@monaco-editor/loader" "^1.5.0" "@msgpackr-extract/msgpackr-extract-darwin-arm64@3.0.3": version "3.0.3" @@ -2014,94 +2006,94 @@ "@parcel/source-map" "^2.1.1" chalk "^4.1.0" -"@parcel/watcher-android-arm64@2.5.0": - version "2.5.0" - resolved "https://registry.yarnpkg.com/@parcel/watcher-android-arm64/-/watcher-android-arm64-2.5.0.tgz#e32d3dda6647791ee930556aee206fcd5ea0fb7a" - integrity sha512-qlX4eS28bUcQCdribHkg/herLe+0A9RyYC+mm2PXpncit8z5b3nSqGVzMNR3CmtAOgRutiZ02eIJJgP/b1iEFQ== - -"@parcel/watcher-darwin-arm64@2.5.0": - version "2.5.0" - resolved "https://registry.yarnpkg.com/@parcel/watcher-darwin-arm64/-/watcher-darwin-arm64-2.5.0.tgz#0d9e680b7e9ec1c8f54944f1b945aa8755afb12f" - integrity sha512-hyZ3TANnzGfLpRA2s/4U1kbw2ZI4qGxaRJbBH2DCSREFfubMswheh8TeiC1sGZ3z2jUf3s37P0BBlrD3sjVTUw== - -"@parcel/watcher-darwin-x64@2.5.0": - version "2.5.0" - resolved "https://registry.yarnpkg.com/@parcel/watcher-darwin-x64/-/watcher-darwin-x64-2.5.0.tgz#f9f1d5ce9d5878d344f14ef1856b7a830c59d1bb" - integrity sha512-9rhlwd78saKf18fT869/poydQK8YqlU26TMiNg7AIu7eBp9adqbJZqmdFOsbZ5cnLp5XvRo9wcFmNHgHdWaGYA== - -"@parcel/watcher-freebsd-x64@2.5.0": - version "2.5.0" - resolved "https://registry.yarnpkg.com/@parcel/watcher-freebsd-x64/-/watcher-freebsd-x64-2.5.0.tgz#2b77f0c82d19e84ff4c21de6da7f7d096b1a7e82" - integrity sha512-syvfhZzyM8kErg3VF0xpV8dixJ+RzbUaaGaeb7uDuz0D3FK97/mZ5AJQ3XNnDsXX7KkFNtyQyFrXZzQIcN49Tw== - -"@parcel/watcher-linux-arm-glibc@2.5.0": - version "2.5.0" - resolved "https://registry.yarnpkg.com/@parcel/watcher-linux-arm-glibc/-/watcher-linux-arm-glibc-2.5.0.tgz#92ed322c56dbafa3d2545dcf2803334aee131e42" - integrity sha512-0VQY1K35DQET3dVYWpOaPFecqOT9dbuCfzjxoQyif1Wc574t3kOSkKevULddcR9znz1TcklCE7Ht6NIxjvTqLA== - -"@parcel/watcher-linux-arm-musl@2.5.0": - version "2.5.0" - resolved "https://registry.yarnpkg.com/@parcel/watcher-linux-arm-musl/-/watcher-linux-arm-musl-2.5.0.tgz#cd48e9bfde0cdbbd2ecd9accfc52967e22f849a4" - integrity sha512-6uHywSIzz8+vi2lAzFeltnYbdHsDm3iIB57d4g5oaB9vKwjb6N6dRIgZMujw4nm5r6v9/BQH0noq6DzHrqr2pA== - -"@parcel/watcher-linux-arm64-glibc@2.5.0": - version "2.5.0" - resolved "https://registry.yarnpkg.com/@parcel/watcher-linux-arm64-glibc/-/watcher-linux-arm64-glibc-2.5.0.tgz#7b81f6d5a442bb89fbabaf6c13573e94a46feb03" - integrity sha512-BfNjXwZKxBy4WibDb/LDCriWSKLz+jJRL3cM/DllnHH5QUyoiUNEp3GmL80ZqxeumoADfCCP19+qiYiC8gUBjA== - -"@parcel/watcher-linux-arm64-musl@2.5.0": - version "2.5.0" - resolved "https://registry.yarnpkg.com/@parcel/watcher-linux-arm64-musl/-/watcher-linux-arm64-musl-2.5.0.tgz#dcb8ff01077cdf59a18d9e0a4dff7a0cfe5fd732" - integrity sha512-S1qARKOphxfiBEkwLUbHjCY9BWPdWnW9j7f7Hb2jPplu8UZ3nes7zpPOW9bkLbHRvWM0WDTsjdOTUgW0xLBN1Q== - -"@parcel/watcher-linux-x64-glibc@2.5.0": - version "2.5.0" - resolved "https://registry.yarnpkg.com/@parcel/watcher-linux-x64-glibc/-/watcher-linux-x64-glibc-2.5.0.tgz#2e254600fda4e32d83942384d1106e1eed84494d" - integrity sha512-d9AOkusyXARkFD66S6zlGXyzx5RvY+chTP9Jp0ypSTC9d4lzyRs9ovGf/80VCxjKddcUvnsGwCHWuF2EoPgWjw== - -"@parcel/watcher-linux-x64-musl@2.5.0": - version "2.5.0" - resolved "https://registry.yarnpkg.com/@parcel/watcher-linux-x64-musl/-/watcher-linux-x64-musl-2.5.0.tgz#01fcea60fedbb3225af808d3f0a7b11229792eef" - integrity sha512-iqOC+GoTDoFyk/VYSFHwjHhYrk8bljW6zOhPuhi5t9ulqiYq1togGJB5e3PwYVFFfeVgc6pbz3JdQyDoBszVaA== - -"@parcel/watcher-win32-arm64@2.5.0": - version "2.5.0" - resolved "https://registry.yarnpkg.com/@parcel/watcher-win32-arm64/-/watcher-win32-arm64-2.5.0.tgz#87cdb16e0783e770197e52fb1dc027bb0c847154" - integrity sha512-twtft1d+JRNkM5YbmexfcH/N4znDtjgysFaV9zvZmmJezQsKpkfLYJ+JFV3uygugK6AtIM2oADPkB2AdhBrNig== - -"@parcel/watcher-win32-ia32@2.5.0": - version "2.5.0" - resolved "https://registry.yarnpkg.com/@parcel/watcher-win32-ia32/-/watcher-win32-ia32-2.5.0.tgz#778c39b56da33e045ba21c678c31a9f9d7c6b220" - integrity sha512-+rgpsNRKwo8A53elqbbHXdOMtY/tAtTzManTWShB5Kk54N8Q9mzNWV7tV+IbGueCbcj826MfWGU3mprWtuf1TA== - -"@parcel/watcher-win32-x64@2.5.0": - version "2.5.0" - resolved "https://registry.yarnpkg.com/@parcel/watcher-win32-x64/-/watcher-win32-x64-2.5.0.tgz#33873876d0bbc588aacce38e90d1d7480ce81cb7" - integrity sha512-lPrxve92zEHdgeff3aiu4gDOIt4u7sJYha6wbdEZDCDUhtjTsOMiaJzG5lMY4GkWH8p0fMmO2Ppq5G5XXG+DQw== +"@parcel/watcher-android-arm64@2.5.1": + version "2.5.1" + resolved "https://registry.yarnpkg.com/@parcel/watcher-android-arm64/-/watcher-android-arm64-2.5.1.tgz#507f836d7e2042f798c7d07ad19c3546f9848ac1" + integrity sha512-KF8+j9nNbUN8vzOFDpRMsaKBHZ/mcjEjMToVMJOhTozkDonQFFrRcfdLWn6yWKCmJKmdVxSgHiYvTCef4/qcBA== + +"@parcel/watcher-darwin-arm64@2.5.1": + version "2.5.1" + resolved "https://registry.yarnpkg.com/@parcel/watcher-darwin-arm64/-/watcher-darwin-arm64-2.5.1.tgz#3d26dce38de6590ef79c47ec2c55793c06ad4f67" + integrity sha512-eAzPv5osDmZyBhou8PoF4i6RQXAfeKL9tjb3QzYuccXFMQU0ruIc/POh30ePnaOyD1UXdlKguHBmsTs53tVoPw== + +"@parcel/watcher-darwin-x64@2.5.1": + version "2.5.1" + resolved "https://registry.yarnpkg.com/@parcel/watcher-darwin-x64/-/watcher-darwin-x64-2.5.1.tgz#99f3af3869069ccf774e4ddfccf7e64fd2311ef8" + integrity sha512-1ZXDthrnNmwv10A0/3AJNZ9JGlzrF82i3gNQcWOzd7nJ8aj+ILyW1MTxVk35Db0u91oD5Nlk9MBiujMlwmeXZg== + +"@parcel/watcher-freebsd-x64@2.5.1": + version "2.5.1" + resolved "https://registry.yarnpkg.com/@parcel/watcher-freebsd-x64/-/watcher-freebsd-x64-2.5.1.tgz#14d6857741a9f51dfe51d5b08b7c8afdbc73ad9b" + integrity sha512-SI4eljM7Flp9yPuKi8W0ird8TI/JK6CSxju3NojVI6BjHsTyK7zxA9urjVjEKJ5MBYC+bLmMcbAWlZ+rFkLpJQ== + +"@parcel/watcher-linux-arm-glibc@2.5.1": + version "2.5.1" + resolved "https://registry.yarnpkg.com/@parcel/watcher-linux-arm-glibc/-/watcher-linux-arm-glibc-2.5.1.tgz#43c3246d6892381db473bb4f663229ad20b609a1" + integrity sha512-RCdZlEyTs8geyBkkcnPWvtXLY44BCeZKmGYRtSgtwwnHR4dxfHRG3gR99XdMEdQ7KeiDdasJwwvNSF5jKtDwdA== + +"@parcel/watcher-linux-arm-musl@2.5.1": + version "2.5.1" + resolved "https://registry.yarnpkg.com/@parcel/watcher-linux-arm-musl/-/watcher-linux-arm-musl-2.5.1.tgz#663750f7090bb6278d2210de643eb8a3f780d08e" + integrity sha512-6E+m/Mm1t1yhB8X412stiKFG3XykmgdIOqhjWj+VL8oHkKABfu/gjFj8DvLrYVHSBNC+/u5PeNrujiSQ1zwd1Q== + +"@parcel/watcher-linux-arm64-glibc@2.5.1": + version "2.5.1" + resolved "https://registry.yarnpkg.com/@parcel/watcher-linux-arm64-glibc/-/watcher-linux-arm64-glibc-2.5.1.tgz#ba60e1f56977f7e47cd7e31ad65d15fdcbd07e30" + integrity sha512-LrGp+f02yU3BN9A+DGuY3v3bmnFUggAITBGriZHUREfNEzZh/GO06FF5u2kx8x+GBEUYfyTGamol4j3m9ANe8w== + +"@parcel/watcher-linux-arm64-musl@2.5.1": + version "2.5.1" + resolved "https://registry.yarnpkg.com/@parcel/watcher-linux-arm64-musl/-/watcher-linux-arm64-musl-2.5.1.tgz#f7fbcdff2f04c526f96eac01f97419a6a99855d2" + integrity sha512-cFOjABi92pMYRXS7AcQv9/M1YuKRw8SZniCDw0ssQb/noPkRzA+HBDkwmyOJYp5wXcsTrhxO0zq1U11cK9jsFg== + +"@parcel/watcher-linux-x64-glibc@2.5.1": + version "2.5.1" + resolved "https://registry.yarnpkg.com/@parcel/watcher-linux-x64-glibc/-/watcher-linux-x64-glibc-2.5.1.tgz#4d2ea0f633eb1917d83d483392ce6181b6a92e4e" + integrity sha512-GcESn8NZySmfwlTsIur+49yDqSny2IhPeZfXunQi48DMugKeZ7uy1FX83pO0X22sHntJ4Ub+9k34XQCX+oHt2A== + +"@parcel/watcher-linux-x64-musl@2.5.1": + version "2.5.1" + resolved "https://registry.yarnpkg.com/@parcel/watcher-linux-x64-musl/-/watcher-linux-x64-musl-2.5.1.tgz#277b346b05db54f55657301dd77bdf99d63606ee" + integrity sha512-n0E2EQbatQ3bXhcH2D1XIAANAcTZkQICBPVaxMeaCVBtOpBZpWJuf7LwyWPSBDITb7In8mqQgJ7gH8CILCURXg== + +"@parcel/watcher-win32-arm64@2.5.1": + version "2.5.1" + resolved "https://registry.yarnpkg.com/@parcel/watcher-win32-arm64/-/watcher-win32-arm64-2.5.1.tgz#7e9e02a26784d47503de1d10e8eab6cceb524243" + integrity sha512-RFzklRvmc3PkjKjry3hLF9wD7ppR4AKcWNzH7kXR7GUe0Igb3Nz8fyPwtZCSquGrhU5HhUNDr/mKBqj7tqA2Vw== + +"@parcel/watcher-win32-ia32@2.5.1": + version "2.5.1" + resolved "https://registry.yarnpkg.com/@parcel/watcher-win32-ia32/-/watcher-win32-ia32-2.5.1.tgz#2d0f94fa59a873cdc584bf7f6b1dc628ddf976e6" + integrity sha512-c2KkcVN+NJmuA7CGlaGD1qJh1cLfDnQsHjE89E60vUEMlqduHGCdCLJCID5geFVM0dOtA3ZiIO8BoEQmzQVfpQ== + +"@parcel/watcher-win32-x64@2.5.1": + version "2.5.1" + resolved "https://registry.yarnpkg.com/@parcel/watcher-win32-x64/-/watcher-win32-x64-2.5.1.tgz#ae52693259664ba6f2228fa61d7ee44b64ea0947" + integrity sha512-9lHBdJITeNR++EvSQVUcaZoWupyHfXe1jZvGZ06O/5MflPcuPLtEphScIBL+AiCWBO46tDSHzWyD0uDmmZqsgA== "@parcel/watcher@^2.0.7": - version "2.5.0" - resolved "https://registry.yarnpkg.com/@parcel/watcher/-/watcher-2.5.0.tgz#5c88818b12b8de4307a9d3e6dc3e28eba0dfbd10" - integrity sha512-i0GV1yJnm2n3Yq1qw6QrUrd/LI9bE8WEBOTtOkpCXHHdyN3TAGgqAK/DAT05z4fq2x04cARXt2pDmjWjL92iTQ== + version "2.5.1" + resolved "https://registry.yarnpkg.com/@parcel/watcher/-/watcher-2.5.1.tgz#342507a9cfaaf172479a882309def1e991fb1200" + integrity sha512-dfUnCxiN9H4ap84DvD2ubjw+3vUNpstxa0TneY/Paat8a3R4uQZDLSvWjmznAY/DoahqTHl9V46HF/Zs3F29pg== 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.0" - "@parcel/watcher-darwin-arm64" "2.5.0" - "@parcel/watcher-darwin-x64" "2.5.0" - "@parcel/watcher-freebsd-x64" "2.5.0" - "@parcel/watcher-linux-arm-glibc" "2.5.0" - "@parcel/watcher-linux-arm-musl" "2.5.0" - "@parcel/watcher-linux-arm64-glibc" "2.5.0" - "@parcel/watcher-linux-arm64-musl" "2.5.0" - "@parcel/watcher-linux-x64-glibc" "2.5.0" - "@parcel/watcher-linux-x64-musl" "2.5.0" - "@parcel/watcher-win32-arm64" "2.5.0" - "@parcel/watcher-win32-ia32" "2.5.0" - "@parcel/watcher-win32-x64" "2.5.0" + "@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" "@parcel/workers@2.8.3": version "2.8.3" @@ -2121,9 +2113,9 @@ integrity sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg== "@pmmmwh/react-refresh-webpack-plugin@^0.5.10": - version "0.5.15" - resolved "https://registry.yarnpkg.com/@pmmmwh/react-refresh-webpack-plugin/-/react-refresh-webpack-plugin-0.5.15.tgz#f126be97c30b83ed777e2aeabd518bc592e6e7c4" - integrity sha512-LFWllMA55pzB9D34w/wXUCf8+c+IYKuJDgxiZ3qMhl64KRMBHYM1I3VdGaD2BV5FNPV2/S2596bppxHbv2ZydQ== + version "0.5.17" + resolved "https://registry.yarnpkg.com/@pmmmwh/react-refresh-webpack-plugin/-/react-refresh-webpack-plugin-0.5.17.tgz#8c2f34ca8651df74895422046e11ce5a120e7930" + integrity sha512-tXDyE1/jzFsHXjhRZQ3hMl0IVhYe5qula43LDWIhVfjp9G/nT5OQY5AORVOrkEGAUltBJOfOWeETbmhm6kHhuQ== dependencies: ansi-html "^0.0.9" core-js-pure "^3.23.3" @@ -2224,10 +2216,10 @@ classnames "^2.3.2" rc-util "^5.24.4" -"@rc-component/trigger@^2.0.0", "@rc-component/trigger@^2.1.1", "@rc-component/trigger@^2.2.6": - version "2.2.6" - resolved "https://registry.yarnpkg.com/@rc-component/trigger/-/trigger-2.2.6.tgz#bfe6602313b3fadd659687746511f813299d5ea4" - integrity sha512-/9zuTnWwhQ3S3WT1T8BubuFTT46kvnXgaERR9f4BTKyn61/wpf/BvbImzYBubzJibU707FxwbKszLlHjcLiv1Q== +"@rc-component/trigger@^2.0.0", "@rc-component/trigger@^2.1.1", "@rc-component/trigger@^2.3.0": + version "2.3.0" + resolved "https://registry.yarnpkg.com/@rc-component/trigger/-/trigger-2.3.0.tgz#9499ada078daca9dd99d01f0f0743ee1ab9e398b" + integrity sha512-iwaxZyzOuK0D7lS+0AQEtW52zUWxoGqTGkke3dRyb8pYiShmRpCjB/8TzPI4R6YySCH7Vm9BZj/31VPiiQTLBg== dependencies: "@babel/runtime" "^7.23.2" "@rc-component/portal" "^1.1.0" @@ -2236,56 +2228,65 @@ rc-resize-observer "^1.3.1" rc-util "^5.44.0" -"@react-aria/focus@^3.17.1": - version "3.19.0" - resolved "https://registry.yarnpkg.com/@react-aria/focus/-/focus-3.19.0.tgz#82b9a5b83f023b943a7970df3d059f49d61df05d" - integrity sha512-hPF9EXoUQeQl1Y21/rbV2H4FdUR2v+4/I0/vB+8U3bT1CJ+1AFj1hc/rqx2DqEwDlEwOHN+E4+mRahQmlybq0A== +"@react-aria/focus@^3.20.2": + version "3.21.0" + resolved "https://registry.yarnpkg.com/@react-aria/focus/-/focus-3.21.0.tgz#d5bc327bee25e981934ea0ddb1defbe020a84f6a" + integrity sha512-7NEGtTPsBy52EZ/ToVKCu0HSelE3kq9qeis+2eEq90XSuJOMaDHUQrA7RC2Y89tlEwQB31bud/kKRi9Qme1dkA== dependencies: - "@react-aria/interactions" "^3.22.5" - "@react-aria/utils" "^3.26.0" - "@react-types/shared" "^3.26.0" + "@react-aria/interactions" "^3.25.4" + "@react-aria/utils" "^3.30.0" + "@react-types/shared" "^3.31.0" "@swc/helpers" "^0.5.0" clsx "^2.0.0" -"@react-aria/interactions@^3.21.3", "@react-aria/interactions@^3.22.5": - version "3.22.5" - resolved "https://registry.yarnpkg.com/@react-aria/interactions/-/interactions-3.22.5.tgz#9cd8c93b8b6988f1d315d3efb450119d1432bbb8" - integrity sha512-kMwiAD9E0TQp+XNnOs13yVJghiy8ET8L0cbkeuTgNI96sOAp/63EJ1FSrDf17iD8sdjt41LafwX/dKXW9nCcLQ== +"@react-aria/interactions@^3.25.0", "@react-aria/interactions@^3.25.4": + version "3.25.4" + resolved "https://registry.yarnpkg.com/@react-aria/interactions/-/interactions-3.25.4.tgz#2f0e21e8187b7f0944b323f55696cae9accb39e0" + integrity sha512-HBQMxgUPHrW8V63u9uGgBymkMfj6vdWbB0GgUJY49K9mBKMsypcHeWkWM6+bF7kxRO728/IK8bWDV6whDbqjHg== dependencies: - "@react-aria/ssr" "^3.9.7" - "@react-aria/utils" "^3.26.0" - "@react-types/shared" "^3.26.0" + "@react-aria/ssr" "^3.9.10" + "@react-aria/utils" "^3.30.0" + "@react-stately/flags" "^3.1.2" + "@react-types/shared" "^3.31.0" "@swc/helpers" "^0.5.0" -"@react-aria/ssr@^3.9.7": - version "3.9.7" - resolved "https://registry.yarnpkg.com/@react-aria/ssr/-/ssr-3.9.7.tgz#d89d129f7bbc5148657e6c952ac31c9353183770" - integrity sha512-GQygZaGlmYjmYM+tiNBA5C6acmiDWF52Nqd40bBp0Znk4M4hP+LTmI0lpI1BuKMw45T8RIhrAsICIfKwZvi2Gg== +"@react-aria/ssr@^3.9.10": + version "3.9.10" + resolved "https://registry.yarnpkg.com/@react-aria/ssr/-/ssr-3.9.10.tgz#7fdc09e811944ce0df1d7e713de1449abd7435e6" + integrity sha512-hvTm77Pf+pMBhuBm760Li0BVIO38jv1IBws1xFm1NoL26PU+fe+FMW5+VZWyANR6nYL65joaJKZqOdTQMkO9IQ== dependencies: "@swc/helpers" "^0.5.0" -"@react-aria/utils@^3.26.0": - version "3.26.0" - resolved "https://registry.yarnpkg.com/@react-aria/utils/-/utils-3.26.0.tgz#833cbfa33e75d15835b757791b3f754432d2f948" - integrity sha512-LkZouGSjjQ0rEqo4XJosS4L3YC/zzQkfRM3KoqK6fUOmUJ9t0jQ09WjiF+uOoG9u+p30AVg3TrZRUWmoTS+koQ== +"@react-aria/utils@^3.30.0": + version "3.30.0" + resolved "https://registry.yarnpkg.com/@react-aria/utils/-/utils-3.30.0.tgz#68aa1d703c9e0468350bd1e3b583d99e9e69795a" + integrity sha512-ydA6y5G1+gbem3Va2nczj/0G0W7/jUVo/cbN10WA5IizzWIwMP5qhFr7macgbKfHMkZ+YZC3oXnt2NNre5odKw== dependencies: - "@react-aria/ssr" "^3.9.7" - "@react-stately/utils" "^3.10.5" - "@react-types/shared" "^3.26.0" + "@react-aria/ssr" "^3.9.10" + "@react-stately/flags" "^3.1.2" + "@react-stately/utils" "^3.10.8" + "@react-types/shared" "^3.31.0" "@swc/helpers" "^0.5.0" clsx "^2.0.0" -"@react-stately/utils@^3.10.5": - version "3.10.5" - resolved "https://registry.yarnpkg.com/@react-stately/utils/-/utils-3.10.5.tgz#47bb91cd5afd1bafe39353614e5e281b818ebccc" - integrity sha512-iMQSGcpaecghDIh3mZEpZfoFH3ExBwTtuBEcvZ2XnGzCgQjeYXcMdIUwAfVQLXFTdHUHGF6Gu6/dFrYsCzySBQ== +"@react-stately/flags@^3.1.2": + version "3.1.2" + resolved "https://registry.yarnpkg.com/@react-stately/flags/-/flags-3.1.2.tgz#5c8e5ae416d37d37e2e583d2fcb3a046293504f2" + integrity sha512-2HjFcZx1MyQXoPqcBGALwWWmgFVUk2TuKVIQxCbRq7fPyWXIl6VHcakCLurdtYC2Iks7zizvz0Idv48MQ38DWg== dependencies: "@swc/helpers" "^0.5.0" -"@react-types/shared@^3.26.0": - version "3.26.0" - resolved "https://registry.yarnpkg.com/@react-types/shared/-/shared-3.26.0.tgz#21a8b579f0097ee78de18e3e580421ced89e4c8c" - integrity sha512-6FuPqvhmjjlpEDLTiYx29IJCbCNWPlsyO+ZUmCUXzhUv2ttShOXfw8CmeHWHftT/b2KweAWuzqSlfeXPR76jpw== +"@react-stately/utils@^3.10.8": + version "3.10.8" + resolved "https://registry.yarnpkg.com/@react-stately/utils/-/utils-3.10.8.tgz#fdb9d172f7bbc2d083e69190f5ef0edfa4b4392f" + integrity sha512-SN3/h7SzRsusVQjQ4v10LaVsDc81jyyR0DD5HnsQitm/I5WDpaSr2nRHtyloPFU48jlql1XX/S04T2DLQM7Y3g== + dependencies: + "@swc/helpers" "^0.5.0" + +"@react-types/shared@^3.31.0": + version "3.31.0" + resolved "https://registry.yarnpkg.com/@react-types/shared/-/shared-3.31.0.tgz#014be53096c3728f0684550430807e9962365c15" + integrity sha512-ua5U6V66gDcbLZe4P2QeyNgPp4YWD1ymGA6j3n+s8CGExtrCPe64v+g4mvpT8Bnb985R96e4zFT61+m0YCwqMg== "@rtsao/scc@^1.1.0": version "1.1.0" @@ -2360,9 +2361,9 @@ tslib "^2.4.0" "@swc/helpers@^0.5.0": - version "0.5.15" - resolved "https://registry.yarnpkg.com/@swc/helpers/-/helpers-0.5.15.tgz#79efab344c5819ecf83a43f3f9f811fc84b516d7" - integrity sha512-JQ5TuMi45Owi4/BIMAJBoSQoOJu12oOk/gADqlcUL9JEdHB8vyjUSsxqeNXnmXHjYKMi2WcYtezGEEhqUI/E2g== + version "0.5.17" + resolved "https://registry.yarnpkg.com/@swc/helpers/-/helpers-0.5.17.tgz#5a7be95ac0f0bf186e7e6e890e7a6f6cda6ce971" + integrity sha512-5IKx/Y13RsYd+sauPb2x+U/xZikHjolzfuDgTAl/Tdf3Q8rslRvC19NKDLgAJQ6wsqADk10ntlv08nPFw/gO/A== dependencies: tslib "^2.8.0" @@ -2388,26 +2389,26 @@ defer-to-connect "^2.0.1" "@tailwindcss/typography@^0.5.9": - version "0.5.15" - resolved "https://registry.yarnpkg.com/@tailwindcss/typography/-/typography-0.5.15.tgz#007ab9870c86082a1c76e5b3feda9392c7c8d648" - integrity sha512-AqhlCXl+8grUz8uqExv5OTtgpjuVIwFTSXTrh8y9/pw6q2ek7fJ+Y8ZEVw7EB2DCcuCOtEjf9w3+J3rzts01uA== + version "0.5.16" + resolved "https://registry.yarnpkg.com/@tailwindcss/typography/-/typography-0.5.16.tgz#a926c8f44d5c439b2915e231cad80058850047c6" + integrity sha512-0wDLwCVF5V3x3b1SGXPCDcdsbDHMBe+lkFzBRaHeLvNi+nrrnZ1lA18u+OTWO8iSWU2GxUOCvlXtDuqftc1oiA== dependencies: lodash.castarray "^4.4.0" lodash.isplainobject "^4.0.6" lodash.merge "^4.6.2" postcss-selector-parser "6.0.10" -"@tanstack/react-virtual@^3.8.1": - version "3.11.2" - resolved "https://registry.yarnpkg.com/@tanstack/react-virtual/-/react-virtual-3.11.2.tgz#d6b9bd999c181f0a2edce270c87a2febead04322" - integrity sha512-OuFzMXPF4+xZgx8UzJha0AieuMihhhaWG0tCqpp6tDzlFwOmNBPYMuLOtMJ1Tr4pXLHmgjcWhG6RlknY2oNTdQ== +"@tanstack/react-virtual@^3.13.9": + version "3.13.12" + resolved "https://registry.yarnpkg.com/@tanstack/react-virtual/-/react-virtual-3.13.12.tgz#d372dc2783739cc04ec1a728ca8203937687a819" + integrity sha512-Gd13QdxPSukP8ZrkbgS2RwoZseTTbQPLnQEn7HY/rqtM+8Zt95f7xKC7N0EsKs7aoz0WzZ+fditZux+F8EzYxA== dependencies: - "@tanstack/virtual-core" "3.11.2" + "@tanstack/virtual-core" "3.13.12" -"@tanstack/virtual-core@3.11.2": - version "3.11.2" - resolved "https://registry.yarnpkg.com/@tanstack/virtual-core/-/virtual-core-3.11.2.tgz#00409e743ac4eea9afe5b7708594d5fcebb00212" - integrity sha512-vTtpNt7mKCiZ1pwU9hfKPhpdVO2sVzFQsxoVBGtOSHxlrRRzYr8iQ2TlwbAcRYCcEiZ9ECAM8kBzH0v2+VzfKw== +"@tanstack/virtual-core@3.13.12": + version "3.13.12" + resolved "https://registry.yarnpkg.com/@tanstack/virtual-core/-/virtual-core-3.13.12.tgz#1dff176df9cc8f93c78c5e46bcea11079b397578" + integrity sha512-1YBOJfRHV4sXUmWsFSf5rQor4Ss82G8dQWLRbnk3GA4jeP8hQt1hxXh0tmflpC0dz3VgEv/1+qwPyLeWkQuPFA== "@tokenizer/token@^0.3.0": version "0.3.0" @@ -2452,9 +2453,9 @@ integrity sha512-XW/Aa8APYr6jSVVA1y/DEIZX0/GMKLEVekNG727R8cs56ahETkRAy/3DR7+fJyh7oUgGwNQaRfXCun0+KbWY7Q== "@types/cors@^2.8.12": - version "2.8.17" - resolved "https://registry.yarnpkg.com/@types/cors/-/cors-2.8.17.tgz#5d718a5e494a8166f569d986794e49c48b216b2b" - integrity sha512-8CGDvrBj1zgo2qE+oS3pOCyYNqCPryMWY2bGfwA0dcfopWGgxs+78df0Rs3rc9THP4JkOhLsAa+15VdpAqkcUA== + version "2.8.19" + resolved "https://registry.yarnpkg.com/@types/cors/-/cors-2.8.19.tgz#d93ea2673fd8c9f697367f5eeefc2bbfa94f0342" + integrity sha512-mFNylyeyqN93lfe/9CSxOGREz8cpzAhH+E93xJ4xWQf62V8sQ/24reV2nyzUWM6H6Xji+GGHpkbLe7pVoUEskg== dependencies: "@types/node" "*" @@ -2470,7 +2471,7 @@ dependencies: "@types/d3-selection" "*" -"@types/d3-interpolate@*": +"@types/d3-interpolate@*", "@types/d3-interpolate@^3.0.4": version "3.0.4" resolved "https://registry.yarnpkg.com/@types/d3-interpolate/-/d3-interpolate-3.0.4.tgz#412b90e84870285f2ff8a846c6eb60344f12a41c" integrity sha512-mgLPETlrpVV1YRJIglr4Ez47g7Yxjl1lj7YKsiMCb27VJH9W8NVM6Bb9d8kkpG/uAQS5AmbA48q2IAolKKo1MA== @@ -2541,9 +2542,9 @@ "@types/estree" "*" "@types/estree@*", "@types/estree@^1.0.0", "@types/estree@^1.0.6": - version "1.0.6" - resolved "https://registry.yarnpkg.com/@types/estree/-/estree-1.0.6.tgz#628effeeae2064a1b4e79f78e81d87b7e5fc7b50" - integrity sha512-AYnb1nQyY49te+VRAVgmzfcgjYS91mY5P0TKUDCLEM+gNnA+3T6rWITXRLYCpahpqSQbN5cE+gHpnPyXjHWxcw== + version "1.0.8" + resolved "https://registry.yarnpkg.com/@types/estree/-/estree-1.0.8.tgz#958b91c991b1867ced318bedea0e215ee050726e" + integrity sha512-dWHzHa2WqEXI/O1E9OjrocMTKJl2mSrEolh1Iomrv6U+JuNwaHXsXx9bLu5gG7BUWFIN0skIQJQ/L1rIex4X6w== "@types/extend@^3.0.0": version "3.0.4" @@ -2556,12 +2557,11 @@ integrity sha512-TiNg8R1kjDde5Pub9F9vCwZA/BNW9HeXP5b9j7Qucqncy/McfPZ6xze/EyBdXS5FhMIGN6Fx3vg75l5KHy3V1Q== "@types/glob@*": - version "8.1.0" - resolved "https://registry.yarnpkg.com/@types/glob/-/glob-8.1.0.tgz#b63e70155391b0584dce44e7ea25190bbc38f2fc" - integrity sha512-IO+MJPVhoqz+28h1qLAcBEH2+xHMK6MTyHJc7MTnnYb6wsoLR29POVGJ7LycmVXIqyy/4/2ShP5sUwTXuOwb/w== + version "9.0.0" + resolved "https://registry.yarnpkg.com/@types/glob/-/glob-9.0.0.tgz#7b942fafe09c55671912b34f04e8e4676faf32b1" + integrity sha512-00UxlRaIUvYm4R4W9WYkN8/J+kV8fmOQ7okeH6YFtGWFMt3odD45tpG5yA5wnL7HE6lLgjaTW5n14ju2hl2NNA== dependencies: - "@types/minimatch" "^5.1.2" - "@types/node" "*" + glob "*" "@types/glob@^5.0.34": version "5.0.38" @@ -2591,12 +2591,17 @@ integrity sha512-1m0bIFVc7eJWyve9S0RnuRgcQqF/Xd5QsUZAZeQFr1Q3/p9JWoQQEqmVy+DPTNpGXwhgIetAoYF8JSc33q29QA== "@types/http-proxy@^1.17.11": - version "1.17.15" - resolved "https://registry.yarnpkg.com/@types/http-proxy/-/http-proxy-1.17.15.tgz#12118141ce9775a6499ecb4c01d02f90fc839d36" - integrity sha512-25g5atgiVNTIv0LBDTg1H74Hvayx0ajtJPLLcYE3whFv75J0pWNtOBzaXJQgDTmrX1bx5U9YC2w/n65BN1HwRQ== + version "1.17.16" + resolved "https://registry.yarnpkg.com/@types/http-proxy/-/http-proxy-1.17.16.tgz#dee360707b35b3cc85afcde89ffeebff7d7f9240" + integrity sha512-sdWoUajOB1cd0A8cRRQ1cfyWNbmFKLAqBB89Y8x5iYyG/mkJHc0YUH8pdWBy2omi9qtCpiIgGjuwO0dQST2l5w== dependencies: "@types/node" "*" +"@types/js-yaml@^4.0.9": + version "4.0.9" + resolved "https://registry.yarnpkg.com/@types/js-yaml/-/js-yaml-4.0.9.tgz#cd82382c4f902fed9691a2ed79ec68c5898af4c2" + integrity sha512-k4MGaQl5TGo/iipqb2UDG2UwjXziSWkh0uysQelTlJpX1qGlpUZYm8PnO4DxG1qBomtJUdYJ6qR6xdIah10JLg== + "@types/json-schema@*", "@types/json-schema@^7.0.4", "@types/json-schema@^7.0.5", "@types/json-schema@^7.0.8", "@types/json-schema@^7.0.9": version "7.0.15" resolved "https://registry.yarnpkg.com/@types/json-schema/-/json-schema-7.0.15.tgz#596a1747233694d50f6ad8a7869fcb6f56cf5841" @@ -2622,9 +2627,9 @@ "@types/lodash" "*" "@types/lodash@*", "@types/lodash@^4.14.92": - version "4.17.13" - resolved "https://registry.yarnpkg.com/@types/lodash/-/lodash-4.17.13.tgz#786e2d67cfd95e32862143abe7463a7f90c300eb" - integrity sha512-lfx+dftrEZcdBPczf9d0Qv0x+j/rfNCMuC6OcfXmO8gkfeNAY88PgKUbvG56whcN23gc27yenwF6oJZXGFpYxg== + version "4.17.20" + resolved "https://registry.yarnpkg.com/@types/lodash/-/lodash-4.17.20.tgz#1ca77361d7363432d29f5e55950d9ec1e1c6ea93" + integrity sha512-H3MHACvFUEiujabxhaI/ImO6gUrd8oOurg7LQtS7mbwIXA/cUqWrvBsaeJ23aZEPk1TAYkurjfMbSELfoCXlGA== "@types/mdast@^3.0.0": version "3.0.15" @@ -2645,10 +2650,12 @@ resolved "https://registry.yarnpkg.com/@types/mdx/-/mdx-2.0.13.tgz#68f6877043d377092890ff5b298152b0a21671bd" integrity sha512-+OWZQfAYyio6YkJb3HLxDrvnx6SWWDbC0zVPfBRzUk0/nqoDyf6dNxQi3eArPe8rJ473nobTMQ/8Zk+LxJ+Yuw== -"@types/minimatch@*", "@types/minimatch@^5.1.2": - version "5.1.2" - resolved "https://registry.yarnpkg.com/@types/minimatch/-/minimatch-5.1.2.tgz#07508b45797cb81ec3f273011b054cd0755eddca" - integrity sha512-K0VQKziLUWkVKiRVrx4a40iPaxTUefQmjtkQofBkYRcoaaL/8rhwDWww9qWbrgicNOgnpIsMxyNIUM4+n6dUIA== +"@types/minimatch@*": + version "6.0.0" + resolved "https://registry.yarnpkg.com/@types/minimatch/-/minimatch-6.0.0.tgz#4d207b1cc941367bdcd195a3a781a7e4fc3b1e03" + integrity sha512-zmPitbQ8+6zNutpwgcQuLcsEpn/Cj54Kbn7L5pX0Os5kdWplB7xPgEh/g+SWOB/qmows2gpuCaPyduq8ZZRnxA== + dependencies: + minimatch "*" "@types/mkdirp@^0.5.2": version "0.5.2" @@ -2658,31 +2665,38 @@ "@types/node" "*" "@types/ms@*": - version "0.7.34" - resolved "https://registry.yarnpkg.com/@types/ms/-/ms-0.7.34.tgz#10964ba0dee6ac4cd462e2795b6bebd407303433" - integrity sha512-nG96G3Wp6acyAgJqGasjODb+acrI7KltPiRxzHPXnP3NgI28bpQDRv53olbqGXbfcgF5aiiHmO3xpwEpS5Ld9g== + version "2.1.0" + resolved "https://registry.yarnpkg.com/@types/ms/-/ms-2.1.0.tgz#052aa67a48eccc4309d7f0191b7e41434b90bb78" + integrity sha512-GsCCIZDE/p3i96vtEqx+7dBUGXrc7zeSK3wwPHIaRThS+9OhWIXRqzs4d6k1SVU8g91DrNRWxWUGhp5KXQb2VA== -"@types/node@*", "@types/node@>=10.0.0", "@types/node@^22.9.0": - version "22.10.2" - resolved "https://registry.yarnpkg.com/@types/node/-/node-22.10.2.tgz#a485426e6d1fdafc7b0d4c7b24e2c78182ddabb9" - integrity sha512-Xxr6BBRCAOQixvonOye19wnzyDiUtTeqldOOmj3CkeblonbccA12PFwlufvRdrpjXxqnmUaeiU5EOA+7s5diUQ== +"@types/node@*", "@types/node@>=10.0.0": + version "24.2.0" + resolved "https://registry.yarnpkg.com/@types/node/-/node-24.2.0.tgz#cde712f88c5190006d6b069232582ecd1f94a760" + integrity sha512-3xyG3pMCq3oYCNg7/ZP+E1ooTaGB4cG8JWRsqqOYQdbWNY4zbaV0Ennrd7stjiJEFZCaybcIgpTjJWHRfBSIDw== dependencies: - undici-types "~6.20.0" + undici-types "~7.10.0" "@types/node@^17.0.5": version "17.0.45" resolved "https://registry.yarnpkg.com/@types/node/-/node-17.0.45.tgz#2c0fafd78705e7a18b7906b5201a522719dc5190" integrity sha512-w+tIMs3rq2afQdsPJlODhoUEKzFP1ayaoyl1CcnwtIlsVe7K7bA1NGm4s3PraqTLlXnbIN84zuBlxBWo1u9BLw== +"@types/node@^22.9.0": + version "22.17.0" + resolved "https://registry.yarnpkg.com/@types/node/-/node-22.17.0.tgz#e8c9090e957bd4d9860efb323eb92d297347eac7" + integrity sha512-bbAKTCqX5aNVryi7qXVMi+OkB3w/OyblodicMbvE38blyAz7GxXf6XYhklokijuPwwVg9sDLKRxt0ZHXQwZVfQ== + dependencies: + undici-types "~6.21.0" + "@types/node@^8.5.7": version "8.10.66" resolved "https://registry.yarnpkg.com/@types/node/-/node-8.10.66.tgz#dd035d409df322acc83dff62a602f12a5783bbb3" integrity sha512-tktOkFUA4kXx2hhhrB8bIFb5TbwzS4uOhKEmwiD+NoiL0qtP2OQ9mFldbgD4dV1djrlBYP6eBuQZiWjuHUpqFw== -"@types/novnc__novnc@^1.5.0": - version "1.5.0" - resolved "https://registry.yarnpkg.com/@types/novnc__novnc/-/novnc__novnc-1.5.0.tgz#5f58687f0fa6591b75e91eb75237520da440dbb4" - integrity sha512-9DrDJK1hUT6Cbp4t03IsU/DsR6ndnIrDgZVrzITvspldHQ7n81F3wUDfq89zmPM3wg4GErH11IQa0QuTgLMf+w== +"@types/novnc__novnc@^1.6.0": + version "1.6.0" + resolved "https://registry.yarnpkg.com/@types/novnc__novnc/-/novnc__novnc-1.6.0.tgz#92bcc7a3a4915adaa80d4eb4d0c1b65d12d90b4f" + integrity sha512-kIH/PQACbf9qj6whiSXRKECpyzgs6IFNVsW4wohyqQUZfQHdLhuGRMLi9XEhBiISSh0lKCSbBa7kScuPu9Gk+Q== "@types/parse-json@^4.0.0": version "4.0.2" @@ -2690,9 +2704,9 @@ integrity sha512-dISoDXWWQwUquiKsyZ4Ng+HX2KsPL7LyHKHQwgGFEA3IaKac4Obd+h2a/a6waisAoepJlBcx9paWqjA8/HVjCw== "@types/prop-types@*": - version "15.7.14" - resolved "https://registry.yarnpkg.com/@types/prop-types/-/prop-types-15.7.14.tgz#1433419d73b2a7ebfc6918dcefd2ec0d5cd698f2" - integrity sha512-gNMvNH49DJ7OJYv+KAKn0Xp45p8PLl6zo2YnvDIbTd4J6MER2BmWN49TG7n9LvkyihINxeKW8+3bfS2yDC9dzQ== + version "15.7.15" + resolved "https://registry.yarnpkg.com/@types/prop-types/-/prop-types-15.7.15.tgz#e6e5a86d602beaca71ce5163fadf5f95d70931c7" + integrity sha512-F6bEyamV9jKGAFBEmlQnesRPGOQqS2+Uwi0Em15xenOxHaf2hv6L8YCVn3rPdPJOiJfPiCnLIRyvwVaqMY3MIw== "@types/reach__router@^1.3.10": version "1.3.15" @@ -2702,9 +2716,9 @@ "@types/react" "*" "@types/react-dom@^18.2.19": - version "18.3.5" - resolved "https://registry.yarnpkg.com/@types/react-dom/-/react-dom-18.3.5.tgz#45f9f87398c5dcea085b715c58ddcf1faf65f716" - integrity sha512-P4t6saawp+b/dFrUr2cvkVsfvPguwsxtH6dNIYRllMsefqFzkZk5UIjzyDOv5g1dXIPdG4Sp1yCR4Z6RCUsG/Q== + version "18.3.7" + resolved "https://registry.yarnpkg.com/@types/react-dom/-/react-dom-18.3.7.tgz#b89ddf2cd83b4feafcc4e2ea41afdfb95a0d194f" + integrity sha512-MEe3UeoENYVFXzoXEWsvcpg6ZvlrFNlOQ7EOsvhI3CfAXwzPfO8Qwuxd40nepsYKqyyVQnTdEfv68q91yLcKrQ== "@types/react-syntax-highlighter@^15.5.13": version "15.5.13" @@ -2714,16 +2728,16 @@ "@types/react" "*" "@types/react@*": - version "19.0.2" - resolved "https://registry.yarnpkg.com/@types/react/-/react-19.0.2.tgz#9363e6b3ef898c471cb182dd269decc4afc1b4f6" - integrity sha512-USU8ZI/xyKJwFTpjSVIrSeHBVAGagkHQKPNbxeWwql/vDmnTIBgx+TJnhFnj1NXgz8XfprU0egV2dROLGpsBEg== + version "19.1.9" + resolved "https://registry.yarnpkg.com/@types/react/-/react-19.1.9.tgz#f42b24f35474566a39b5c3a98e4d0c425b79a849" + integrity sha512-WmdoynAX8Stew/36uTSVMcLJJ1KRh6L3IZRx1PZ7qJtBqT3dYTgyDTx8H1qoRghErydW7xw9mSJ3wS//tCRpFA== dependencies: csstype "^3.0.2" "@types/react@^18.2.55": - version "18.3.17" - resolved "https://registry.yarnpkg.com/@types/react/-/react-18.3.17.tgz#d86ca0e081c7a5e979b7db175f9515a41038cea7" - integrity sha512-opAQ5no6LqJNo9TqnxBKsgnkIYHozW9KSTlFVoSUJYh1Fl/sswkEoqIugRSm7tbh6pABtYjGAjW+GOS23j8qbw== + version "18.3.23" + resolved "https://registry.yarnpkg.com/@types/react/-/react-18.3.23.tgz#86ae6f6b95a48c418fecdaccc8069e0fbb63696a" + integrity sha512-/LDXMQh55EzZQ0uVAZmKKhfENivEvWz6E+EYzh+/MCjMhNsotd+ZHhBGIjFDTi6+fz0OhQQQLbTgdQIxxCsC0w== dependencies: "@types/prop-types" "*" csstype "^3.0.2" @@ -2751,9 +2765,9 @@ "@types/node" "*" "@types/semver@^7.3.12": - version "7.5.8" - resolved "https://registry.yarnpkg.com/@types/semver/-/semver-7.5.8.tgz#8268a8c57a3e4abd25c165ecd36237db7948a55e" - integrity sha512-I8EUhyrgfLrcTkzV3TSsGyl1tSuPrEDzr0yd5m90UgNxQkyDXULk3b6MlQqTCpZpNtWe1K0hzclnZkTcLBe2UQ== + version "7.7.0" + resolved "https://registry.yarnpkg.com/@types/semver/-/semver-7.7.0.tgz#64c441bdae033b378b6eef7d0c3d77c329b9378e" + integrity sha512-k107IF4+Xr7UHjwDc7Cfd6PRQfbdkiRabXGRjo07b4WyPahFBZCZ1sE+BNxYIJPPg73UkfOsVOLwqVc/6ETrIA== "@types/tmp@^0.0.33": version "0.0.33" @@ -2870,9 +2884,9 @@ eslint-visitor-keys "^3.3.0" "@ungap/structured-clone@^1.0.0": - version "1.2.1" - resolved "https://registry.yarnpkg.com/@ungap/structured-clone/-/structured-clone-1.2.1.tgz#28fa185f67daaf7b7a1a8c1d445132c5d979f8bd" - integrity sha512-fEzPV3hSkSMltkw152tJKNARhOupqbH96MZWyRjNaYZOMIzbrTeQDG+MTc6Mr2pgzFQzFxAfmhGDNP5QK++2ZA== + version "1.3.0" + resolved "https://registry.yarnpkg.com/@ungap/structured-clone/-/structured-clone-1.3.0.tgz#d06bbb384ebcf6c505fde1c3d0ed4ddffe0aaff8" + integrity sha512-WmoN8qaIAo7WTYWbAZuG8PYEhn5fkz7dZrqTBZ7dtt//lL2Gwms1IcnQ5yHqjDfX8Ft5j4YzDM23f87zBfDe9g== "@vercel/webpack-asset-relocator-loader@1.7.3": version "1.7.3" @@ -3013,27 +3027,36 @@ integrity sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ== "@xyflow/react@^12.3.5": - version "12.3.6" - resolved "https://registry.yarnpkg.com/@xyflow/react/-/react-12.3.6.tgz#b122af1be35fcaaf78da79a3538f67fdd12b694e" - integrity sha512-9GS+cz8hDZahpvTrVCmySAEgKUL8oN4b2q1DluHrKtkqhAMWfH2s7kblhbM4Y4Y4SUnH2lt4drXKZ/4/Lot/2Q== + version "12.8.2" + resolved "https://registry.yarnpkg.com/@xyflow/react/-/react-12.8.2.tgz#3e0818699c8d29407bd6f77d88570d38ef513b46" + integrity sha512-VifLpxOy74ck283NQOtBn1e8igmB7xo7ADDKxyBHkKd8IKpyr16TgaYOhzqVwNMdB4NT+m++zfkic530L+gEXw== dependencies: - "@xyflow/system" "0.0.47" + "@xyflow/system" "0.0.66" classcat "^5.0.3" zustand "^4.4.0" -"@xyflow/system@0.0.47": - version "0.0.47" - resolved "https://registry.yarnpkg.com/@xyflow/system/-/system-0.0.47.tgz#c2443e6778ffae9af05b2dc61cb2145be5803405" - integrity sha512-aUXJPIvsCFxGX70ccRG8LPsR+A8ExYXfh/noYNpqn8udKerrLdSHxMG2VsvUrQ1PGex10fOpbJwFU4A+I/Xv8w== +"@xyflow/system@0.0.66": + version "0.0.66" + resolved "https://registry.yarnpkg.com/@xyflow/system/-/system-0.0.66.tgz#94eec3962e65b8686b314629911b51a7db057059" + integrity sha512-TTxESDwPsATnuDMUeYYtKe4wt9v8bRO29dgYBhR8HyhSCzipnAdIL/1CDfFd+WqS1srVreo24u6zZeVIDk4r3Q== dependencies: "@types/d3-drag" "^3.0.7" + "@types/d3-interpolate" "^3.0.4" "@types/d3-selection" "^3.0.10" "@types/d3-transition" "^3.0.8" "@types/d3-zoom" "^3.0.8" d3-drag "^3.0.0" + d3-interpolate "^3.0.1" d3-selection "^3.0.0" d3-zoom "^3.0.0" +abort-controller@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/abort-controller/-/abort-controller-3.0.0.tgz#eaf54d53b62bae4138e809ca225c8439a6efb392" + integrity sha512-h8lQ8tacZYnR3vNQTgibj+tODHI5/+l06Au2Pcriv/Gmet0eaj4TwWH41sO9wnHDiQsEj19q0drzdWdeAHtweg== + dependencies: + event-target-shim "^5.0.0" + abortcontroller-polyfill@^1.1.9: version "1.7.8" resolved "https://registry.yarnpkg.com/abortcontroller-polyfill/-/abortcontroller-polyfill-1.7.8.tgz#fe8d4370403f02e2aa37e3d2b0b178bae9d83f49" @@ -3053,11 +3076,11 @@ acorn-jsx@^5.0.0, acorn-jsx@^5.3.1, acorn-jsx@^5.3.2: integrity sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ== acorn-loose@^8.3.0: - version "8.4.0" - resolved "https://registry.yarnpkg.com/acorn-loose/-/acorn-loose-8.4.0.tgz#26d3e219756d1e180d006f5bcc8d261a28530f55" - integrity sha512-M0EUka6rb+QC4l9Z3T0nJEzNOO7JcoJlYMrBlyBCiFSXRyxjLKayd4TbQs2FDRWQU1h9FR7QVNHt+PEaoNL5rQ== + version "8.5.2" + resolved "https://registry.yarnpkg.com/acorn-loose/-/acorn-loose-8.5.2.tgz#a7cc7dfbb7c8f3c2e55b055db640dc657e278d26" + integrity sha512-PPvV6g8UGMGgjrMu+n/f9E/tCSkNQ2Y97eFvuVdJfG11+xdIeDcLyNdC8SHcrHbRqkfwLASdplyR6B6sKM1U4A== dependencies: - acorn "^8.11.0" + acorn "^8.15.0" acorn-walk@^8.2.0: version "8.3.4" @@ -3076,10 +3099,10 @@ acorn@^7.4.0: resolved "https://registry.yarnpkg.com/acorn/-/acorn-7.4.1.tgz#feaed255973d2e77555b83dbc08851a6c63520fa" integrity sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A== -acorn@^8.0.0, acorn@^8.11.0, acorn@^8.14.0, acorn@^8.8.2: - version "8.14.0" - resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.14.0.tgz#063e2c70cac5fb4f6467f0b11152e04c682795b0" - integrity sha512-cl669nCJTZBsL97OF4kUQm5g5hC2uihk0NxY3WENAC0TYdILVkAyHymAntgxGkl7K+t0cXIrH5siy5S4XkFycA== +acorn@^8.0.0, acorn@^8.11.0, acorn@^8.14.0, acorn@^8.15.0, acorn@^8.8.2: + version "8.15.0" + resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.15.0.tgz#a360898bc415edaac46c8241f6383975b930b816" + integrity sha512-NZyJarBfL7nWwIq+FDL6Zp/yHEhePMNnnJ0y3qfieCrmNvYct8uvtiV41UvlSe6apAfk0fY1FbWx+NwfmpvtTg== address@1.2.2, address@^1.0.1, address@^1.1.2: version "1.2.2" @@ -3126,9 +3149,9 @@ ajv@^8.0.0, ajv@^8.0.1, ajv@^8.9.0: require-from-string "^2.0.2" anser@^2.1.1: - version "2.3.0" - resolved "https://registry.yarnpkg.com/anser/-/anser-2.3.0.tgz#9b30c8cffe864e646eebd6cd578ba67f2dfe8b2e" - integrity sha512-pGGR7Nq1K/i9KGs29PvHDXA8AsfZ3OiYRMDClT3FIC085Kbns9CJ7ogq9MEiGnrjd9THOGoh7B+kWzePHzZyJQ== + version "2.3.2" + resolved "https://registry.yarnpkg.com/anser/-/anser-2.3.2.tgz#e2da9d10759a4243a5819595f4f46ec369970c5b" + integrity sha512-PMqBCBvrOVDRqLGooQb+z+t1Q0PiPyurUQeZRR5uHBOVZcW8B04KMmnT12USnhpNX2wCPagWzLVppQMUG3u0Dw== ansi-align@^3.0.0: version "3.0.1" @@ -3199,9 +3222,9 @@ ansi-styles@^6.1.0: integrity sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug== antd@^5.22.1: - version "5.26.0" - resolved "https://registry.yarnpkg.com/antd/-/antd-5.26.0.tgz#8b9721cb95febc19c583697bef1d2076096062e8" - integrity sha512-iMPYKFTo2HvIRGutUOuN5AG+Uf+B2QaqcGQbdPp/100fqV3FAil6vFZLVuV3C4XEUOlDNkkUlJKhLR9V5rzIEg== + version "5.26.7" + resolved "https://registry.yarnpkg.com/antd/-/antd-5.26.7.tgz#e2f7e37330b27eec0de7a7789767975373f61602" + integrity sha512-iCyXN6+i2CUVEOSzzJKfbKeg115qoJhGvSkCh5uzAf9hANwHUOJQhsMn+KtN+Lx/2NQ6wfM7nGZ+7NPNO5Pn1w== dependencies: "@ant-design/colors" "^7.2.1" "@ant-design/cssinjs" "^1.23.0" @@ -3214,7 +3237,7 @@ antd@^5.22.1: "@rc-component/mutate-observer" "^1.1.0" "@rc-component/qrcode" "~1.0.0" "@rc-component/tour" "~1.15.1" - "@rc-component/trigger" "^2.2.6" + "@rc-component/trigger" "^2.3.0" classnames "^2.5.1" copy-to-clipboard "^3.3.3" dayjs "^1.11.11" @@ -3242,9 +3265,9 @@ antd@^5.22.1: rc-slider "~11.1.8" rc-steps "~6.0.1" rc-switch "~4.1.0" - rc-table "~7.51.0" + rc-table "~7.51.1" rc-tabs "~15.6.1" - rc-textarea "~1.10.0" + rc-textarea "~1.10.1" rc-tooltip "~6.4.0" rc-tree "~5.13.1" rc-tree-select "~5.27.0" @@ -3298,30 +3321,32 @@ aria-query@^5.3.2: resolved "https://registry.yarnpkg.com/aria-query/-/aria-query-5.3.2.tgz#93f81a43480e33a338f19163a3d10a50c01dcd59" integrity sha512-COROpnaoap1E2F000S62r6A60uHZnmlvomhfyT2DlTcrY1OrBKn2UhH7qn5wTC9zMvD0AY7csdPSNwKP+7WiQw== -array-buffer-byte-length@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/array-buffer-byte-length/-/array-buffer-byte-length-1.0.1.tgz#1e5583ec16763540a27ae52eed99ff899223568f" - integrity sha512-ahC5W1xgou+KTXix4sAO8Ki12Q+jf4i0+tmk3sC+zgcynshkHxzpXdImBehiUYKKKDwvfFiJl1tZt6ewscS1Mg== +array-buffer-byte-length@^1.0.1, array-buffer-byte-length@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/array-buffer-byte-length/-/array-buffer-byte-length-1.0.2.tgz#384d12a37295aec3769ab022ad323a18a51ccf8b" + integrity sha512-LHE+8BuR7RYGDKvnrmcuSq3tDcKv9OFEXQt/HpbZhY7V6h0zlUXutnAD82GiFx9rdieCMjkvtcsPqBwgUl1Iiw== dependencies: - call-bind "^1.0.5" - is-array-buffer "^3.0.4" + call-bound "^1.0.3" + is-array-buffer "^3.0.5" array-flatten@1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/array-flatten/-/array-flatten-1.1.1.tgz#9a5f699051b1e7073328f2a008968b64ea2955d2" integrity sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg== -array-includes@^3.1.6, array-includes@^3.1.8: - version "3.1.8" - resolved "https://registry.yarnpkg.com/array-includes/-/array-includes-3.1.8.tgz#5e370cbe172fdd5dd6530c1d4aadda25281ba97d" - integrity sha512-itaWrbYbqpGXkGhZPGUulwnhVf5Hpy1xiCFsGqyIGglbBxmG5vSjxQen3/WGOjPpNEv1RtBLKxbmVXm8HpJStQ== +array-includes@^3.1.6, array-includes@^3.1.8, array-includes@^3.1.9: + version "3.1.9" + resolved "https://registry.yarnpkg.com/array-includes/-/array-includes-3.1.9.tgz#1f0ccaa08e90cdbc3eb433210f903ad0f17c3f3a" + integrity sha512-FmeCCAenzH0KH381SPT5FZmiA/TmpndpcaShhfgEN9eCVjnFBqq3l1xrI42y8+PPLI6hypzou4GXw00WHmPBLQ== dependencies: - call-bind "^1.0.7" + call-bind "^1.0.8" + call-bound "^1.0.4" define-properties "^1.2.1" - es-abstract "^1.23.2" - es-object-atoms "^1.0.0" - get-intrinsic "^1.2.4" - is-string "^1.0.7" + es-abstract "^1.24.0" + es-object-atoms "^1.1.1" + get-intrinsic "^1.3.0" + is-string "^1.1.1" + math-intrinsics "^1.1.0" array-union@^2.1.0: version "2.1.0" @@ -3340,19 +3365,20 @@ array.prototype.findlast@^1.2.5: es-object-atoms "^1.0.0" es-shim-unscopables "^1.0.2" -array.prototype.findlastindex@^1.2.5: - version "1.2.5" - resolved "https://registry.yarnpkg.com/array.prototype.findlastindex/-/array.prototype.findlastindex-1.2.5.tgz#8c35a755c72908719453f87145ca011e39334d0d" - integrity sha512-zfETvRFA8o7EiNn++N5f/kaCw221hrpGsDmcpndVupkPzEc1Wuf3VgC0qby1BbHs7f5DVYjgtEU2LLh5bqeGfQ== +array.prototype.findlastindex@^1.2.6: + version "1.2.6" + resolved "https://registry.yarnpkg.com/array.prototype.findlastindex/-/array.prototype.findlastindex-1.2.6.tgz#cfa1065c81dcb64e34557c9b81d012f6a421c564" + integrity sha512-F/TKATkzseUExPlfvmwQKGITM3DGTK+vkAsCZoDc5daVygbJBnjEUCbgkAvVFsgfXfX4YIqZ/27G3k3tdXrTxQ== dependencies: - call-bind "^1.0.7" + call-bind "^1.0.8" + call-bound "^1.0.4" define-properties "^1.2.1" - es-abstract "^1.23.2" + es-abstract "^1.23.9" es-errors "^1.3.0" - es-object-atoms "^1.0.0" - es-shim-unscopables "^1.0.2" + es-object-atoms "^1.1.1" + es-shim-unscopables "^1.1.0" -array.prototype.flat@^1.3.1, array.prototype.flat@^1.3.2: +array.prototype.flat@^1.3.1, array.prototype.flat@^1.3.3: version "1.3.3" resolved "https://registry.yarnpkg.com/array.prototype.flat/-/array.prototype.flat-1.3.3.tgz#534aaf9e6e8dd79fb6b9a9917f839ef1ec63afe5" integrity sha512-rwG/ja1neyLqCuGZ5YYrznA62D4mZXg0i1cIskIUKSiqF3Cje9/wXAls9B9s1Wa2fomMsIv8czB8jZcPmxCXFg== @@ -3362,7 +3388,7 @@ array.prototype.flat@^1.3.1, array.prototype.flat@^1.3.2: es-abstract "^1.23.5" es-shim-unscopables "^1.0.2" -array.prototype.flatmap@^1.3.2: +array.prototype.flatmap@^1.3.2, array.prototype.flatmap@^1.3.3: version "1.3.3" resolved "https://registry.yarnpkg.com/array.prototype.flatmap/-/array.prototype.flatmap-1.3.3.tgz#712cc792ae70370ae40586264629e33aab5dd38b" integrity sha512-Y7Wt51eKJSyi80hFrJCePGGNo5ktJCslFuboqJsbf57CCPcm5zztluPlc4/aD8sWsKvlwatezpV4U1efk8kpjg== @@ -3421,6 +3447,11 @@ astring@^1.8.0, astring@^1.8.5: resolved "https://registry.yarnpkg.com/astring/-/astring-1.9.0.tgz#cc73e6062a7eb03e7d19c22d8b0b3451fd9bfeef" integrity sha512-LElXdjswlqjWrPpJFg1Fx4wpkOCxj1TDHlSV4PlaRxHGWko024xICaa97ZkMfs6DRKlCguiAI+rbXv5GWwXIkg== +async-function@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/async-function/-/async-function-1.0.0.tgz#509c9fca60eaf85034c6829838188e4e4c8ffb2b" + integrity sha512-hsU18Ae8CDTR6Kgu9DYf0EbCr/a5iGL0rytQDobUcdpYOKokk8LEjVphnXkDkgpi0wYVsqrXuP0bZxJaTqdgoA== + async@1.5.2: version "1.5.2" resolved "https://registry.yarnpkg.com/async/-/async-1.5.2.tgz#ec6a61ae56480c0c3cb241c95618e20892f9672a" @@ -3447,15 +3478,15 @@ auto-bind@~4.0.0: integrity sha512-Hdw8qdNiqdJ8LqT0iK0sVzkFbzg6fhnQqqfWhBDxcHZvU75+B+ayzTy8x+k5Ix0Y92XOhOUlx74ps+bA6BeYMQ== autoprefixer@^10.4.14, autoprefixer@^10.4.20: - version "10.4.20" - resolved "https://registry.yarnpkg.com/autoprefixer/-/autoprefixer-10.4.20.tgz#5caec14d43976ef42e32dcb4bd62878e96be5b3b" - integrity sha512-XY25y5xSv/wEoqzDyXXME4AFfkZI0P23z6Fs3YgymDnKJkCGOnkL0iTxCa85UTqaSgfcqyf3UA6+c7wUvx/16g== + version "10.4.21" + resolved "https://registry.yarnpkg.com/autoprefixer/-/autoprefixer-10.4.21.tgz#77189468e7a8ad1d9a37fbc08efc9f480cf0a95d" + integrity sha512-O+A6LWV5LDHSJD3LjHYoNi4VLsj/Whi7k6zG12xTYaU4cQ8oxQGckXNX8cRHK5yOZ/ppVHe0ZBXGzSV9jXdVbQ== dependencies: - browserslist "^4.23.3" - caniuse-lite "^1.0.30001646" + browserslist "^4.24.4" + caniuse-lite "^1.0.30001702" fraction.js "^4.3.7" normalize-range "^0.1.2" - picocolors "^1.0.1" + picocolors "^1.1.1" postcss-value-parser "^4.2.0" available-typed-arrays@^1.0.7: @@ -3466,17 +3497,17 @@ available-typed-arrays@^1.0.7: possible-typed-array-names "^1.0.0" axe-core@^4.10.0: - version "4.10.2" - resolved "https://registry.yarnpkg.com/axe-core/-/axe-core-4.10.2.tgz#85228e3e1d8b8532a27659b332e39b7fa0e022df" - integrity sha512-RE3mdQ7P3FRSe7eqCWoeQ/Z9QXrtniSjp1wUjt5nRC3WIpz5rSCve6o3fsZ2aCpJtrZjSZgjwXAoTO5k4tEI0w== + version "4.10.3" + resolved "https://registry.yarnpkg.com/axe-core/-/axe-core-4.10.3.tgz#04145965ac7894faddbac30861e5d8f11bfd14fc" + integrity sha512-Xm7bpRXnDSX2YE2YFfBk2FnF0ep6tmG7xPh8iHee8MIcrgq762Nkce856dYtJYLkuIoYZvGfTs/PbZhideTcEg== axios@^1.6.4: - version "1.8.2" - resolved "https://registry.yarnpkg.com/axios/-/axios-1.8.2.tgz#fabe06e241dfe83071d4edfbcaa7b1c3a40f7979" - integrity sha512-ls4GYBm5aig9vWx8AWDSGLpnpDQRtWAfrjU+EuytuODrFBkqesN2RkOQCBzrA1RQNHw1SmRMSDDDSwzNAYQ6Rg== + version "1.11.0" + resolved "https://registry.yarnpkg.com/axios/-/axios-1.11.0.tgz#c2ec219e35e414c025b2095e8b8280278478fdb6" + integrity sha512-1Lx3WLFQWm3ooKDYZD1eXmoGO9fxYQjrycfHFC8P0sCfQVXyROp0p9PFWBehewBOdCwHc+f/b8I0fMto5eSfwA== dependencies: follow-redirects "^1.15.6" - form-data "^4.0.0" + form-data "^4.0.4" proxy-from-env "^1.1.0" axobject-query@^4.1.0: @@ -3520,29 +3551,29 @@ babel-plugin-macros@^3.1.0: cosmiconfig "^7.0.0" resolve "^1.19.0" -babel-plugin-polyfill-corejs2@^0.4.10: - version "0.4.12" - resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.4.12.tgz#ca55bbec8ab0edeeef3d7b8ffd75322e210879a9" - integrity sha512-CPWT6BwvhrTO2d8QVorhTCQw9Y43zOu7G9HigcfxvepOU6b8o3tcWad6oVgZIsZCTt42FFv97aA7ZJsbM4+8og== +babel-plugin-polyfill-corejs2@^0.4.14: + version "0.4.14" + resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.4.14.tgz#8101b82b769c568835611542488d463395c2ef8f" + integrity sha512-Co2Y9wX854ts6U8gAAPXfn0GmAyctHuK8n0Yhfjd6t30g7yvKjspvvOo9yG+z52PZRgFErt7Ka2pYnXCjLKEpg== dependencies: - "@babel/compat-data" "^7.22.6" - "@babel/helper-define-polyfill-provider" "^0.6.3" + "@babel/compat-data" "^7.27.7" + "@babel/helper-define-polyfill-provider" "^0.6.5" semver "^6.3.1" -babel-plugin-polyfill-corejs3@^0.10.6: - version "0.10.6" - resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.10.6.tgz#2deda57caef50f59c525aeb4964d3b2f867710c7" - integrity sha512-b37+KR2i/khY5sKmWNVQAnitvquQbNdWy6lJdsr0kmquCKEEUgMKK4SboVM3HtfnZilfjr4MMQ7vY58FVWDtIA== +babel-plugin-polyfill-corejs3@^0.13.0: + version "0.13.0" + resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.13.0.tgz#bb7f6aeef7addff17f7602a08a6d19a128c30164" + integrity sha512-U+GNwMdSFgzVmfhNm8GJUX88AadB3uo9KpJqS3FaqNIPKgySuvMb+bHPsOmmuWyIcuqZj/pzt1RUIUZns4y2+A== dependencies: - "@babel/helper-define-polyfill-provider" "^0.6.2" - core-js-compat "^3.38.0" + "@babel/helper-define-polyfill-provider" "^0.6.5" + core-js-compat "^3.43.0" -babel-plugin-polyfill-regenerator@^0.6.1: - version "0.6.3" - resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.6.3.tgz#abeb1f3f1c762eace37587f42548b08b57789bc8" - integrity sha512-LiWSbl4CRSIa5x/JAU6jZiG9eit9w6mz+yVMFwDE83LAWvt0AfGBoZ7HS/mkhrKuh2ZlzfVZYKoLjXdqw6Yt7Q== +babel-plugin-polyfill-regenerator@^0.6.5: + version "0.6.5" + resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.6.5.tgz#32752e38ab6f6767b92650347bf26a31b16ae8c5" + integrity sha512-ISqQ2frbiNU9vIJkzg7dlPpznPZ4jOiUQ1uSmB0fEHeowtN3COYRsXr/xexn64NpU13P06jc/L5TgiJXOgrbEg== dependencies: - "@babel/helper-define-polyfill-provider" "^0.6.3" + "@babel/helper-define-polyfill-provider" "^0.6.5" babel-plugin-remove-graphql-queries@^5.14.0: version "5.14.0" @@ -3718,17 +3749,17 @@ boxen@^5.1.2: wrap-ansi "^7.0.0" brace-expansion@^1.1.7: - version "1.1.11" - resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd" - integrity sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA== + version "1.1.12" + resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.12.tgz#ab9b454466e5a8cc3a187beaad580412a9c5b843" + integrity sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg== dependencies: balanced-match "^1.0.0" concat-map "0.0.1" brace-expansion@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-2.0.1.tgz#1edc459e0f0c548486ecf9fc99f2221364b9a0ae" - integrity sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA== + version "2.0.2" + resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-2.0.2.tgz#54fc53237a613d854c7bd37463aad17df87214e7" + integrity sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ== dependencies: balanced-match "^1.0.0" @@ -3739,15 +3770,15 @@ braces@^3.0.3, braces@~3.0.2: dependencies: fill-range "^7.1.1" -browserslist@^4.0.0, browserslist@^4.18.1, browserslist@^4.21.4, browserslist@^4.21.5, browserslist@^4.21.9, browserslist@^4.23.3, browserslist@^4.24.0, browserslist@^4.24.2, browserslist@^4.6.6: - version "4.24.3" - resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.24.3.tgz#5fc2725ca8fb3c1432e13dac278c7cc103e026d2" - integrity sha512-1CPmv8iobE2fyRMV97dAcMVegvvWKxmq94hkLiAkUGwKVTyDLw33K+ZxiFrREKmmps4rIw6grcCFCnTMSZ/YiA== +browserslist@^4.0.0, browserslist@^4.18.1, browserslist@^4.21.4, browserslist@^4.21.5, browserslist@^4.21.9, browserslist@^4.24.0, browserslist@^4.24.4, browserslist@^4.25.1, browserslist@^4.6.6: + version "4.25.1" + resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.25.1.tgz#ba9e8e6f298a1d86f829c9b975e07948967bb111" + integrity sha512-KGj0KoOMXLpSNkkEI6Z6mShmQy0bc1I+T7K9N81k4WWMrfz+6fQ6es80B/YLAeRoKvjYE1YSHHOW1qe9xIVzHw== dependencies: - caniuse-lite "^1.0.30001688" - electron-to-chromium "^1.5.73" + caniuse-lite "^1.0.30001726" + electron-to-chromium "^1.5.173" node-releases "^2.0.19" - update-browserslist-db "^1.1.1" + update-browserslist-db "^1.1.3" bser@2.1.1: version "2.1.1" @@ -3769,7 +3800,15 @@ buffer@^5.5.0: base64-js "^1.3.1" ieee754 "^1.1.13" -busboy@^1.0.0: +buffer@^6.0.3: + version "6.0.3" + resolved "https://registry.yarnpkg.com/buffer/-/buffer-6.0.3.tgz#2ace578459cc8fbe2a70aaa8f52ee63b6a74c6c6" + integrity sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA== + dependencies: + base64-js "^1.3.1" + ieee754 "^1.2.1" + +busboy@^1.6.0: version "1.6.0" resolved "https://registry.yarnpkg.com/busboy/-/busboy-1.6.0.tgz#966ea36a9502e43cdb9146962523b92f531f6893" integrity sha512-8SFQbg/0hQ9xy3UNTB0YEnsNBbWfhf7RtnzpL7TkBiTBRfrQ9Fxcnz7VJsleJpyp6rVLvXiuORqjlHi5q+PYuA== @@ -3826,15 +3865,15 @@ cacheable-request@^7.0.2: normalize-url "^6.0.1" responselike "^2.0.0" -call-bind-apply-helpers@^1.0.0, call-bind-apply-helpers@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/call-bind-apply-helpers/-/call-bind-apply-helpers-1.0.1.tgz#32e5892e6361b29b0b545ba6f7763378daca2840" - integrity sha512-BhYE+WDaywFg2TBWYNXAE+8B1ATnThNBqXHP5nQu0jWJdVvY2hvkpyB3qOmtmDePiS5/BDQ8wASEWGMWRG148g== +call-bind-apply-helpers@^1.0.0, call-bind-apply-helpers@^1.0.1, call-bind-apply-helpers@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/call-bind-apply-helpers/-/call-bind-apply-helpers-1.0.2.tgz#4b5428c222be985d79c3d82657479dbe0b59b2d6" + integrity sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ== dependencies: es-errors "^1.3.0" function-bind "^1.1.2" -call-bind@^1.0.5, call-bind@^1.0.6, call-bind@^1.0.7, call-bind@^1.0.8: +call-bind@^1.0.7, call-bind@^1.0.8: version "1.0.8" resolved "https://registry.yarnpkg.com/call-bind/-/call-bind-1.0.8.tgz#0736a9660f537e3388826f440d5ec45f744eaa4c" integrity sha512-oKlSFMcMwpUg2ednkhQ454wfWiU/ul3CkJe/PEHcTKuiX6RpbehUiFMXu13HalGZxfUwCQzZG747YXBn1im9ww== @@ -3844,13 +3883,13 @@ call-bind@^1.0.5, call-bind@^1.0.6, call-bind@^1.0.7, call-bind@^1.0.8: get-intrinsic "^1.2.4" set-function-length "^1.2.2" -call-bound@^1.0.2, call-bound@^1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/call-bound/-/call-bound-1.0.3.tgz#41cfd032b593e39176a71533ab4f384aa04fd681" - integrity sha512-YTd+6wGlNlPxSuri7Y6X8tY2dmm12UMH66RpKMhiX6rsk5wXXnYgbUcOt8kiS31/AjfoTOvCsE+w8nZQLQnzHA== +call-bound@^1.0.2, call-bound@^1.0.3, call-bound@^1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/call-bound/-/call-bound-1.0.4.tgz#238de935d2a2a692928c538c7ccfa91067fd062a" + integrity sha512-+ys997U96po4Kx/ABpBCqhA9EuxJaQWDQg7295H4hBphv3IZg0boBKuwYpt4YXp6MZ5AmZQnU/tyMTlRpaSejg== dependencies: - call-bind-apply-helpers "^1.0.1" - get-intrinsic "^1.2.6" + call-bind-apply-helpers "^1.0.2" + get-intrinsic "^1.3.0" callsites@^3.0.0: version "3.1.0" @@ -3890,10 +3929,10 @@ caniuse-api@^3.0.0: lodash.memoize "^4.1.2" lodash.uniq "^4.5.0" -caniuse-lite@^1.0.0, caniuse-lite@^1.0.30001646, caniuse-lite@^1.0.30001688: - version "1.0.30001689" - resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001689.tgz#67ca960dd5f443903e19949aeacc9d28f6e10910" - integrity sha512-CmeR2VBycfa+5/jOfnp/NpWPGd06nf1XYiefUvhXFfZE4GkRc9jv+eGPS4nT558WS/8lYCzV8SlANCIPvbWP1g== +caniuse-lite@^1.0.0, caniuse-lite@^1.0.30001702, caniuse-lite@^1.0.30001726: + version "1.0.30001731" + resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001731.tgz#277c07416ea4613ec564e5b0ffb47e7b60f32e2f" + integrity sha512-lDdp2/wrOmTRWuoB5DpfNkC0rJDU8DqRa6nYL6HK6sytw70QMopt/NIc/9SM7ylItlBWfACXk0tEn37UWM/+mg== capital-case@^1.0.4: version "1.0.4" @@ -4222,15 +4261,15 @@ compressible@~2.0.18: mime-db ">= 1.43.0 < 2" compression@^1.7.4: - version "1.7.5" - resolved "https://registry.yarnpkg.com/compression/-/compression-1.7.5.tgz#fdd256c0a642e39e314c478f6c2cd654edd74c93" - integrity sha512-bQJ0YRck5ak3LgtnpKkiabX5pNF7tMUh1BSy2ZBOTh0Dim0BUu6aPPwByIns6/A5Prh8PufSPerMDUklpzes2Q== + version "1.8.1" + resolved "https://registry.yarnpkg.com/compression/-/compression-1.8.1.tgz#4a45d909ac16509195a9a28bd91094889c180d79" + integrity sha512-9mAqGPHLakhCLeNyxPkK4xVo746zQ/czLH1Ky+vkitMnWfWZps8r0qXuwhwizagCRttsL4lfG4pIOvaWLpAP0w== dependencies: bytes "3.1.2" compressible "~2.0.18" debug "2.6.9" negotiator "~0.6.4" - on-headers "~1.0.2" + on-headers "~1.1.0" safe-buffer "5.2.1" vary "~1.1.2" @@ -4244,14 +4283,14 @@ concat-map@0.0.1: resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" integrity sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg== -concat-stream@^1.5.2: - version "1.6.2" - resolved "https://registry.yarnpkg.com/concat-stream/-/concat-stream-1.6.2.tgz#904bdf194cd3122fc675c77fc4ac3d4ff0fd1a34" - integrity sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw== +concat-stream@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/concat-stream/-/concat-stream-2.0.0.tgz#414cf5af790a48c60ab9be4527d56d5e41133cb1" + integrity sha512-MWufYdFw53ccGjCA+Ol7XJYpAlW6/prSMzuPOTRnJGcGzuhLn4Scrz7qf6o8bROZ514ltazcIFJZevcfbo0x7A== dependencies: buffer-from "^1.0.0" inherits "^2.0.3" - readable-stream "^2.2.2" + readable-stream "^3.0.2" typedarray "^0.0.6" config-chain@^1.1.11: @@ -4334,27 +4373,22 @@ core-js-compat@3.31.0: dependencies: browserslist "^4.21.5" -core-js-compat@^3.38.0, core-js-compat@^3.38.1: - version "3.39.0" - resolved "https://registry.yarnpkg.com/core-js-compat/-/core-js-compat-3.39.0.tgz#b12dccb495f2601dc860bdbe7b4e3ffa8ba63f61" - integrity sha512-VgEUx3VwlExr5no0tXlBt+silBvhTryPwCXRI2Id1PN8WTKu7MreethvddqOubrYxkFdv/RnYrqlv1sFNAUelw== +core-js-compat@^3.43.0: + version "3.45.0" + resolved "https://registry.yarnpkg.com/core-js-compat/-/core-js-compat-3.45.0.tgz#bc0017525dcb7a42ba3241d02f6fce9bae8e5c33" + integrity sha512-gRoVMBawZg0OnxaVv3zpqLLxaHmsubEGyTnqdpI/CEBvX4JadI1dMSHxagThprYRtSVbuQxvi6iUatdPxohHpA== dependencies: - browserslist "^4.24.2" + browserslist "^4.25.1" core-js-pure@^3.23.3: - version "3.39.0" - resolved "https://registry.yarnpkg.com/core-js-pure/-/core-js-pure-3.39.0.tgz#aa0d54d70a15bdc13e7c853db87c10abc30d68f3" - integrity sha512-7fEcWwKI4rJinnK+wLTezeg2smbFFdSBP6E2kQZNbnzM2s1rpKQ6aaRteZSSg7FLU3P0HGGVo/gbpfanU36urg== + version "3.45.0" + resolved "https://registry.yarnpkg.com/core-js-pure/-/core-js-pure-3.45.0.tgz#c753b80daf1bf732e56bf0b8cbd62797c0c1f235" + integrity sha512-OtwjqcDpY2X/eIIg1ol/n0y/X8A9foliaNt1dSK0gV3J2/zw+89FcNG3mPK+N8YWts4ZFUPxnrAzsxs/lf8yDA== core-js@^3.31.0: - version "3.39.0" - resolved "https://registry.yarnpkg.com/core-js/-/core-js-3.39.0.tgz#57f7647f4d2d030c32a72ea23a0555b2eaa30f83" - integrity sha512-raM0ew0/jJUqkJ0E6e8UDtl+y/7ktFivgWvqw8dNSQeNWoSDLvQ1H/RN3aPXB9tBd4/FhyR4RDPGhsNIMsAn7g== - -core-util-is@~1.0.0: - version "1.0.3" - resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.3.tgz#a6042d3634c2b27e9328f837b965fac83808db85" - integrity sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ== + version "3.45.0" + resolved "https://registry.yarnpkg.com/core-js/-/core-js-3.45.0.tgz#556c2af44a2d9c73ea7b49504392474a9f7c947e" + integrity sha512-c2KZL9lP4DjkN3hk/an4pWn5b5ZefhRJnAc42n6LJ19kSnbeRbdQZE5dSeE2LBol1OwJD3X1BQvFTAsa8ReeDA== cors@^2.8.5, cors@~2.8.5: version "2.8.5" @@ -4404,13 +4438,13 @@ create-gatsby@^3.14.0: "@babel/runtime" "^7.20.13" cross-fetch@^3.1.5: - version "3.1.8" - resolved "https://registry.yarnpkg.com/cross-fetch/-/cross-fetch-3.1.8.tgz#0327eba65fd68a7d119f8fb2bf9334a1a7956f82" - integrity sha512-cvA+JwZoU0Xq+h6WkMvAUqPEYy92Obet6UdKLfW60qn99ftItKjB5T+BkyWOFWe2pUyfQ+IJHmpOTznqk1M6Kg== + version "3.2.0" + resolved "https://registry.yarnpkg.com/cross-fetch/-/cross-fetch-3.2.0.tgz#34e9192f53bc757d6614304d9e5e6fb4edb782e3" + integrity sha512-Q+xVJLoGOeIMXZmbUK4HYk+69cQH6LudR0Vu/pRm2YlU/hDV9CiS0gKUMaWY5f2NeUH9C1nV3bsTlCo0FsTV1Q== dependencies: - node-fetch "^2.6.12" + node-fetch "^2.7.0" -cross-spawn@^7.0.0, cross-spawn@^7.0.2, cross-spawn@^7.0.3: +cross-spawn@^7.0.2, cross-spawn@^7.0.3, cross-spawn@^7.0.6: version "7.0.6" resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-7.0.6.tgz#8a58fe78f00dcd70c370451759dfbfaf03e8ee9f" integrity sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA== @@ -4490,9 +4524,9 @@ css-tree@^1.1.2, css-tree@^1.1.3: source-map "^0.6.1" css-what@^6.0.1: - version "6.1.0" - resolved "https://registry.yarnpkg.com/css-what/-/css-what-6.1.0.tgz#fb5effcf76f1ddea2c81bdfaa4de44e79bac70f4" - integrity sha512-HTUrgRJ7r4dsZKU6GjmpfRK1O76h97Z8MfS1G0FozR+oF2kG6Vfe8JE6zwrkbxigziPHinCJ+gCPjA9EaBDtRw== + version "6.2.2" + resolved "https://registry.yarnpkg.com/css-what/-/css-what-6.2.2.tgz#cdcc8f9b6977719fdfbd1de7aec24abf756b9dea" + integrity sha512-u/O3vwbptzhMs3L1fQE82ZSLHQQfto5gyZzwteVIEyeaY5Fc7R4dapF/BvRoSYFeqfBk4m0V1Vafq5Pjv25wvA== css.escape@^1.5.1: version "1.5.1" @@ -4588,7 +4622,7 @@ csstype@^3.0.2, csstype@^3.1.3: resolved "https://registry.yarnpkg.com/d3-ease/-/d3-ease-3.0.1.tgz#9658ac38a2140d59d346160f1f6c30fda0bd12f4" integrity sha512-wR/XK3D3XcLIZwpbvQwQ5fK+8Ykds1ip7A2Txe0yxncXSdq1L9skcG7blcedkOX+ZcgxGAmLX1FrRGbADwzi0w== -"d3-interpolate@1 - 3": +"d3-interpolate@1 - 3", d3-interpolate@^3.0.1: version "3.0.1" resolved "https://registry.yarnpkg.com/d3-interpolate/-/d3-interpolate-3.0.1.tgz#3c47aa5b32c5b3dfb56ef3fd4342078a632b400d" integrity sha512-3bYs1rOD33uo8aqJfKP3JWPAibgw8Zm2+L9vBKEHJ2Rg+viTR7o5Mmv5mZcieN+FRYaAOWX5SJATX6k1PWz72g== @@ -4640,30 +4674,30 @@ damerau-levenshtein@^1.0.8: resolved "https://registry.yarnpkg.com/damerau-levenshtein/-/damerau-levenshtein-1.0.8.tgz#b43d286ccbd36bc5b2f7ed41caf2d0aba1f8a6e7" integrity sha512-sdQSFB7+llfUcQHUQO3+B8ERRj0Oa4w9POWMI/puGtuf7gFywGmkaLCElnudfTiKZV+NvHqL0ifzdrI8Ro7ESA== -data-view-buffer@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/data-view-buffer/-/data-view-buffer-1.0.1.tgz#8ea6326efec17a2e42620696e671d7d5a8bc66b2" - integrity sha512-0lht7OugA5x3iJLOWFhWK/5ehONdprk0ISXqVFn/NFrDu+cuc8iADFrGQz5BnRK7LLU3JmkbXSxaqX+/mXYtUA== +data-view-buffer@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/data-view-buffer/-/data-view-buffer-1.0.2.tgz#211a03ba95ecaf7798a8c7198d79536211f88570" + integrity sha512-EmKO5V3OLXh1rtK2wgXRansaK1/mtVdTUEiEI0W8RkvgT05kfxaH29PliLnpLP73yYO6142Q72QNa8Wx/A5CqQ== dependencies: - call-bind "^1.0.6" + call-bound "^1.0.3" es-errors "^1.3.0" - is-data-view "^1.0.1" + is-data-view "^1.0.2" -data-view-byte-length@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/data-view-byte-length/-/data-view-byte-length-1.0.1.tgz#90721ca95ff280677eb793749fce1011347669e2" - integrity sha512-4J7wRJD3ABAzr8wP+OcIcqq2dlUKp4DVflx++hs5h5ZKydWMI6/D/fAot+yh6g2tHh8fLFTvNOaVN357NvSrOQ== +data-view-byte-length@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/data-view-byte-length/-/data-view-byte-length-1.0.2.tgz#9e80f7ca52453ce3e93d25a35318767ea7704735" + integrity sha512-tuhGbE6CfTM9+5ANGf+oQb72Ky/0+s3xKUpHvShfiz2RxMFgFPjsXuRLBVMtvMs15awe45SRb83D6wH4ew6wlQ== dependencies: - call-bind "^1.0.7" + call-bound "^1.0.3" es-errors "^1.3.0" - is-data-view "^1.0.1" + is-data-view "^1.0.2" -data-view-byte-offset@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/data-view-byte-offset/-/data-view-byte-offset-1.0.0.tgz#5e0bbfb4828ed2d1b9b400cd8a7d119bca0ff18a" - integrity sha512-t/Ygsytq+R995EJ5PZlD4Cu56sWa8InXySaViRzw9apusqsOO2bQP+SbYzAhR0pFKoB+43lYy8rWban9JSuXnA== +data-view-byte-offset@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/data-view-byte-offset/-/data-view-byte-offset-1.0.1.tgz#068307f9b71ab76dbbe10291389e020856606191" + integrity sha512-BS8PfmtDGnrgYdOonGZQdLZslWIeCGFP9tpan0hi1Co2Zr2NKADsvGYA8XxuG/4UWgJ6Cjtv+YJnB6MM69QGlQ== dependencies: - call-bind "^1.0.6" + call-bound "^1.0.2" es-errors "^1.3.0" is-data-view "^1.0.1" @@ -4686,10 +4720,10 @@ debug@2, debug@2.6.9, debug@^2.6.0: dependencies: ms "2.0.0" -debug@4, debug@^4.0.0, debug@^4.0.1, debug@^4.1.0, debug@^4.1.1, debug@^4.3.1, debug@^4.3.4: - version "4.4.0" - resolved "https://registry.yarnpkg.com/debug/-/debug-4.4.0.tgz#2b3f2aea2ffeb776477460267377dc8710faba8a" - integrity sha512-6WTZ/IxCY/T6BALoZHaE4ctp9xm+Z5kY/pzYaCHRFeyVhojxlrm+46y68HA6hr0TcwEssoxNiDEUJQjfPZ/RYA== +debug@4, debug@^4.0.0, debug@^4.0.1, debug@^4.1.0, debug@^4.1.1, debug@^4.3.1, debug@^4.3.4, debug@^4.4.1: + version "4.4.1" + resolved "https://registry.yarnpkg.com/debug/-/debug-4.4.1.tgz#e5a8bc6cbc4c6cd3e64308b0693a3d4fa550189b" + integrity sha512-KcKCqiftBJcZr++7ykoDIEwSa3XWowTfNPo92BYxjXiyYEVrUQh2aLyhxBCwww+heortUFxEJYcRzosstTEBYQ== dependencies: ms "^2.1.3" @@ -4713,9 +4747,9 @@ decamelize@^1.2.0: integrity sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA== decode-named-character-reference@^1.0.0: - version "1.0.2" - resolved "https://registry.yarnpkg.com/decode-named-character-reference/-/decode-named-character-reference-1.0.2.tgz#daabac9690874c394c81e4162a0304b35d824f0e" - integrity sha512-O8x12RzrUF8xyVcY0KJowWsmaJxQbmy0/EtnNtHRpsOcT7dFk5W598coHqBVpmWo1oQQfsCqfCmkZN5DJrZVdg== + version "1.2.0" + resolved "https://registry.yarnpkg.com/decode-named-character-reference/-/decode-named-character-reference-1.2.0.tgz#25c32ae6dd5e21889549d40f676030e9514cc0ed" + integrity sha512-c6fcElNV6ShtZXmsgNgFFV5tVX2PaV4g+MOAkb8eXHvn6sryJBrZa9r0zV6+dtTyoCKxtDy5tyQ5ZwQuidtd+Q== dependencies: character-entities "^2.0.0" @@ -4805,9 +4839,9 @@ detect-libc@^1.0.3: integrity sha512-pGjwhsmsp4kL2RTz08wcOlGN83otlqHeD/Z5T8GXZB+/YcpQ/dgo+lbU8ZsGxV0HIvqqxo9l7mqYwyYMD9bKDg== detect-libc@^2.0.0, detect-libc@^2.0.1, detect-libc@^2.0.2: - version "2.0.3" - resolved "https://registry.yarnpkg.com/detect-libc/-/detect-libc-2.0.3.tgz#f0cd503b40f9939b894697d19ad50895e30cf700" - integrity sha512-bwy0MGW55bG41VqxxypOsdSdGqLwXPI/focwgTYCFMbdUiBAxLg9CFzG08sz2aqzknwiX7Hkl0bQENjg8iLByw== + version "2.0.4" + resolved "https://registry.yarnpkg.com/detect-libc/-/detect-libc-2.0.4.tgz#f04715b8ba815e53b4d8109655b6508a6865a7e8" + integrity sha512-3UDv+G9CsCKO1WKMGw9fwq/SWJYbI0c5Y7LU1AXYoDdbhE2AHQ6N6Nb34sG8Fj7T5APy8qXDCKuuIHd1BR0tVA== detect-port-alt@^1.1.6: version "1.1.6" @@ -4993,10 +5027,10 @@ ee-first@1.1.1: resolved "https://registry.yarnpkg.com/ee-first/-/ee-first-1.1.1.tgz#590c61156b0ae2f4f0255732a158b266bc56b21d" integrity sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow== -electron-to-chromium@^1.5.73: - version "1.5.74" - resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.5.74.tgz#cb886b504a6467e4c00bea3317edb38393c53413" - integrity sha512-ck3//9RC+6oss/1Bh9tiAVFy5vfSKbRHAFh7Z3/eTRkEqJeWgymloShB17Vg3Z4nmDNp35vAd1BZ6CMW4Wt6Iw== +electron-to-chromium@^1.5.173: + version "1.5.195" + resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.5.195.tgz#2fe0d9b644726292189f227be73740868617b6d5" + integrity sha512-URclP0iIaDUzqcAyV1v2PgduJ9N0IdXmWsnPzPfelvBmjmZzEy6xJcjb1cXj+TbYqXgtLrjHEoaSIdTYhw4ezg== emoji-regex@^8.0.0: version "8.0.0" @@ -5024,9 +5058,9 @@ encodeurl@~2.0.0: integrity sha512-Q0n9HRi4m6JuGIV1eFlmvJB7ZEVxu93IrMyiMsGC0lrMJMWzRgx6WGquyfQgZVb31vhGgXnfmPNNXmxnOkRBrg== end-of-stream@^1.1.0, end-of-stream@^1.4.1: - version "1.4.4" - resolved "https://registry.yarnpkg.com/end-of-stream/-/end-of-stream-1.4.4.tgz#5ae64a5f45057baf3626ec14da0ca5e4b2431eb0" - integrity sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q== + version "1.4.5" + resolved "https://registry.yarnpkg.com/end-of-stream/-/end-of-stream-1.4.5.tgz#7344d711dea40e0b74abc2ed49778743ccedb08c" + integrity sha512-ooEGc6HP26xXq/N+GCGOT0JKCLDGrq2bQUZrQ7gyrJiZANJ/8YDTxTpQBXGMn+WbIQXNVpyWymm7KYVICQnyOg== dependencies: once "^1.4.0" @@ -5063,9 +5097,9 @@ engine.io@~6.5.0: ws "~8.17.1" enhanced-resolve@^5.15.0, enhanced-resolve@^5.17.1: - version "5.17.1" - resolved "https://registry.yarnpkg.com/enhanced-resolve/-/enhanced-resolve-5.17.1.tgz#67bfbbcc2f81d511be77d686a90267ef7f898a15" - integrity sha512-LMHl3dXhTcfv8gM4kEzIUeTQ+7fpdA0l2tUf34BddXPkz2A5xJ5L/Pchd5BL6rdccM9QGvu0sWZzK1Z1t4wwyg== + version "5.18.2" + resolved "https://registry.yarnpkg.com/enhanced-resolve/-/enhanced-resolve-5.18.2.tgz#7903c5b32ffd4b2143eeb4b92472bd68effd5464" + integrity sha512-6Jw4sE1maoRJo3q8MsSIn2onJFbLTOjY9hlx4DZXmOKvLRd1Ok2kXmAGXaafL2+ijsJZ1ClYbl/pmqr9+k4iUQ== dependencies: graceful-fs "^4.2.4" tapable "^2.2.0" @@ -5107,27 +5141,28 @@ error-stack-parser@^2.0.6, error-stack-parser@^2.1.4: dependencies: stackframe "^1.3.4" -es-abstract@^1.17.5, es-abstract@^1.23.2, es-abstract@^1.23.3, es-abstract@^1.23.5, es-abstract@^1.23.6: - version "1.23.6" - resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.23.6.tgz#55f0e1ce7128995cc04ace0a57d7dca348345108" - integrity sha512-Ifco6n3yj2tMZDWNLyloZrytt9lqqlwvS83P3HtaETR0NUOYnIULGGHpktqYGObGy+8wc1okO25p8TjemhImvA== +es-abstract@^1.17.5, es-abstract@^1.23.2, es-abstract@^1.23.3, es-abstract@^1.23.5, es-abstract@^1.23.6, es-abstract@^1.23.9, es-abstract@^1.24.0: + version "1.24.0" + resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.24.0.tgz#c44732d2beb0acc1ed60df840869e3106e7af328" + integrity sha512-WSzPgsdLtTcQwm4CROfS5ju2Wa1QQcVeT37jFjYzdFz1r9ahadC8B8/a4qxJxM+09F18iumCdRmlr96ZYkQvEg== dependencies: - array-buffer-byte-length "^1.0.1" + array-buffer-byte-length "^1.0.2" arraybuffer.prototype.slice "^1.0.4" available-typed-arrays "^1.0.7" call-bind "^1.0.8" - call-bound "^1.0.3" - data-view-buffer "^1.0.1" - data-view-byte-length "^1.0.1" - data-view-byte-offset "^1.0.0" + call-bound "^1.0.4" + data-view-buffer "^1.0.2" + data-view-byte-length "^1.0.2" + data-view-byte-offset "^1.0.1" es-define-property "^1.0.1" es-errors "^1.3.0" - es-object-atoms "^1.0.0" - es-set-tostringtag "^2.0.3" + es-object-atoms "^1.1.1" + es-set-tostringtag "^2.1.0" es-to-primitive "^1.3.0" - function.prototype.name "^1.1.7" - get-intrinsic "^1.2.6" - get-symbol-description "^1.0.2" + function.prototype.name "^1.1.8" + get-intrinsic "^1.3.0" + get-proto "^1.0.1" + get-symbol-description "^1.1.0" globalthis "^1.0.4" gopd "^1.2.0" has-property-descriptors "^1.0.2" @@ -5135,31 +5170,36 @@ es-abstract@^1.17.5, es-abstract@^1.23.2, es-abstract@^1.23.3, es-abstract@^1.23 has-symbols "^1.1.0" hasown "^2.0.2" internal-slot "^1.1.0" - is-array-buffer "^3.0.4" + is-array-buffer "^3.0.5" is-callable "^1.2.7" is-data-view "^1.0.2" is-negative-zero "^2.0.3" is-regex "^1.2.1" - is-shared-array-buffer "^1.0.3" + is-set "^2.0.3" + is-shared-array-buffer "^1.0.4" is-string "^1.1.1" - is-typed-array "^1.1.13" - is-weakref "^1.1.0" - math-intrinsics "^1.0.0" - object-inspect "^1.13.3" + is-typed-array "^1.1.15" + is-weakref "^1.1.1" + math-intrinsics "^1.1.0" + object-inspect "^1.13.4" object-keys "^1.1.1" - object.assign "^4.1.5" - regexp.prototype.flags "^1.5.3" + object.assign "^4.1.7" + own-keys "^1.0.1" + regexp.prototype.flags "^1.5.4" safe-array-concat "^1.1.3" + safe-push-apply "^1.0.0" safe-regex-test "^1.1.0" + set-proto "^1.0.0" + stop-iteration-iterator "^1.1.0" string.prototype.trim "^1.2.10" string.prototype.trimend "^1.0.9" string.prototype.trimstart "^1.0.8" - typed-array-buffer "^1.0.2" - typed-array-byte-length "^1.0.1" - typed-array-byte-offset "^1.0.3" + typed-array-buffer "^1.0.3" + typed-array-byte-length "^1.0.3" + typed-array-byte-offset "^1.0.4" typed-array-length "^1.0.7" - unbox-primitive "^1.0.2" - which-typed-array "^1.1.16" + unbox-primitive "^1.1.0" + which-typed-array "^1.1.19" es-define-property@^1.0.0, es-define-property@^1.0.1: version "1.0.1" @@ -5171,54 +5211,56 @@ es-errors@^1.3.0: resolved "https://registry.yarnpkg.com/es-errors/-/es-errors-1.3.0.tgz#05f75a25dab98e4fb1dcd5e1472c0546d5057c8f" integrity sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw== -es-iterator-helpers@^1.1.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/es-iterator-helpers/-/es-iterator-helpers-1.2.0.tgz#2f1a3ab998b30cb2d10b195b587c6d9ebdebf152" - integrity sha512-tpxqxncxnpw3c93u8n3VOzACmRFoVmWJqbWXvX/JfKbkhBw1oslgPrUfeSt2psuqyEJFD6N/9lg5i7bsKpoq+Q== +es-iterator-helpers@^1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/es-iterator-helpers/-/es-iterator-helpers-1.2.1.tgz#d1dd0f58129054c0ad922e6a9a1e65eef435fe75" + integrity sha512-uDn+FE1yrDzyC0pCo961B2IHbdM8y/ACZsKD4dG6WqrjV53BADjwa7D+1aom2rsNVfLyDgU/eigvlJGJ08OQ4w== dependencies: - call-bind "^1.0.7" + call-bind "^1.0.8" + call-bound "^1.0.3" define-properties "^1.2.1" - es-abstract "^1.23.3" + es-abstract "^1.23.6" es-errors "^1.3.0" es-set-tostringtag "^2.0.3" function-bind "^1.1.2" - get-intrinsic "^1.2.4" + get-intrinsic "^1.2.6" globalthis "^1.0.4" - gopd "^1.0.1" + gopd "^1.2.0" has-property-descriptors "^1.0.2" - has-proto "^1.0.3" - has-symbols "^1.0.3" - internal-slot "^1.0.7" - iterator.prototype "^1.1.3" - safe-array-concat "^1.1.2" + has-proto "^1.2.0" + has-symbols "^1.1.0" + internal-slot "^1.1.0" + iterator.prototype "^1.1.4" + safe-array-concat "^1.1.3" es-module-lexer@^1.2.1: - version "1.5.4" - resolved "https://registry.yarnpkg.com/es-module-lexer/-/es-module-lexer-1.5.4.tgz#a8efec3a3da991e60efa6b633a7cad6ab8d26b78" - integrity sha512-MVNK56NiMrOwitFB7cqDwq0CQutbw+0BvLshJSse0MUNU+y1FC3bUS/AQg7oUng+/wKrrki7JfmwtVHkVfPLlw== + version "1.7.0" + resolved "https://registry.yarnpkg.com/es-module-lexer/-/es-module-lexer-1.7.0.tgz#9159601561880a85f2734560a9099b2c31e5372a" + integrity sha512-jEQoCwk8hyb2AZziIOLhDqpm5+2ww5uIE6lkO/6jcOCusfk6LhMHpXXfBLXTZ7Ydyt0j4VoUQv6uGNYbdW+kBA== -es-object-atoms@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/es-object-atoms/-/es-object-atoms-1.0.0.tgz#ddb55cd47ac2e240701260bc2a8e31ecb643d941" - integrity sha512-MZ4iQ6JwHOBQjahnjwaC1ZtIBH+2ohjamzAO3oaHcXYup7qxjF2fixyH+Q71voWHeOkI2q/TnJao/KfXYIZWbw== +es-object-atoms@^1.0.0, es-object-atoms@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/es-object-atoms/-/es-object-atoms-1.1.1.tgz#1c4f2c4837327597ce69d2ca190a7fdd172338c1" + integrity sha512-FGgH2h8zKNim9ljj7dankFPcICIK9Cp5bm+c2gQSYePhpaG5+esrLODihIorn+Pe6FGJzWhXQotPv73jTaldXA== dependencies: es-errors "^1.3.0" -es-set-tostringtag@^2.0.3: - version "2.0.3" - resolved "https://registry.yarnpkg.com/es-set-tostringtag/-/es-set-tostringtag-2.0.3.tgz#8bb60f0a440c2e4281962428438d58545af39777" - integrity sha512-3T8uNMC3OQTHkFUsFq8r/BwAXLHvU/9O9mE0fBc/MY5iq/8H7ncvO947LmYA6ldWw9Uh8Yhf25zu6n7nML5QWQ== +es-set-tostringtag@^2.0.3, es-set-tostringtag@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/es-set-tostringtag/-/es-set-tostringtag-2.1.0.tgz#f31dbbe0c183b00a6d26eb6325c810c0fd18bd4d" + integrity sha512-j6vWzfrGVfyXxge+O0x5sh6cvxAog0a/4Rdd2K36zCMV5eJ+/+tOAngRO8cODMNWbVRdVlmGZQL2YS3yR8bIUA== dependencies: - get-intrinsic "^1.2.4" + es-errors "^1.3.0" + get-intrinsic "^1.2.6" has-tostringtag "^1.0.2" - hasown "^2.0.1" + hasown "^2.0.2" -es-shim-unscopables@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/es-shim-unscopables/-/es-shim-unscopables-1.0.2.tgz#1f6942e71ecc7835ed1c8a83006d8771a63a3763" - integrity sha512-J3yBRXCzDu4ULnQwxyToo/OjdMx6akgVC7K6few0a7F/0wLtmKKN7I73AH5T2836UuXRqN7Qg+IIUw/+YJksRw== +es-shim-unscopables@^1.0.2, es-shim-unscopables@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/es-shim-unscopables/-/es-shim-unscopables-1.1.0.tgz#438df35520dac5d105f3943d927549ea3b00f4b5" + integrity sha512-d9T8ucsEhh8Bi1woXCf+TIKDIROLG5WCkxg8geBCbvk22kzwC5G2OnXVMO6FUsvQlgUUXQ2itephWDLqDzbeCw== dependencies: - hasown "^2.0.0" + hasown "^2.0.2" es-to-primitive@^1.3.0: version "1.3.0" @@ -5317,10 +5359,10 @@ eslint-import-resolver-node@^0.3.9: is-core-module "^2.13.0" resolve "^1.22.4" -eslint-module-utils@^2.12.0: - version "2.12.0" - resolved "https://registry.yarnpkg.com/eslint-module-utils/-/eslint-module-utils-2.12.0.tgz#fe4cfb948d61f49203d7b08871982b65b9af0b0b" - integrity sha512-wALZ0HFoytlyh/1+4wuZ9FJCD/leWHQzzrxJ8+rebyReSLk7LApMyd3WJaLVoN+D5+WIdJyDK1c6JnE65V4Zyg== +eslint-module-utils@^2.12.1: + version "2.12.1" + resolved "https://registry.yarnpkg.com/eslint-module-utils/-/eslint-module-utils-2.12.1.tgz#f76d3220bfb83c057651359295ab5854eaad75ff" + integrity sha512-L8jSWTze7K2mTg0vos/RuLRS5soomksDPoJLXIslC7c8Wmut3bx7CPpJijDcBZtxQ5lrbUdM+s0OlNbz0DCDNw== dependencies: debug "^3.2.7" @@ -5333,28 +5375,28 @@ eslint-plugin-flowtype@^5.10.0: string-natural-compare "^3.0.1" eslint-plugin-import@^2.27.5: - version "2.31.0" - resolved "https://registry.yarnpkg.com/eslint-plugin-import/-/eslint-plugin-import-2.31.0.tgz#310ce7e720ca1d9c0bb3f69adfd1c6bdd7d9e0e7" - integrity sha512-ixmkI62Rbc2/w8Vfxyh1jQRTdRTF52VxwRVHl/ykPAmqG+Nb7/kNn+byLP0LxPgI7zWA16Jt82SybJInmMia3A== + version "2.32.0" + resolved "https://registry.yarnpkg.com/eslint-plugin-import/-/eslint-plugin-import-2.32.0.tgz#602b55faa6e4caeaa5e970c198b5c00a37708980" + integrity sha512-whOE1HFo/qJDyX4SnXzP4N6zOWn79WhnCUY/iDR0mPfQZO8wcYE4JClzI2oZrhBnnMUCBCHZhO6VQyoBU95mZA== dependencies: "@rtsao/scc" "^1.1.0" - array-includes "^3.1.8" - array.prototype.findlastindex "^1.2.5" - array.prototype.flat "^1.3.2" - array.prototype.flatmap "^1.3.2" + array-includes "^3.1.9" + array.prototype.findlastindex "^1.2.6" + array.prototype.flat "^1.3.3" + array.prototype.flatmap "^1.3.3" debug "^3.2.7" doctrine "^2.1.0" eslint-import-resolver-node "^0.3.9" - eslint-module-utils "^2.12.0" + eslint-module-utils "^2.12.1" hasown "^2.0.2" - is-core-module "^2.15.1" + is-core-module "^2.16.1" is-glob "^4.0.3" minimatch "^3.1.2" object.fromentries "^2.0.8" object.groupby "^1.0.3" - object.values "^1.2.0" + object.values "^1.2.1" semver "^6.3.1" - string.prototype.trimend "^1.0.8" + string.prototype.trimend "^1.0.9" tsconfig-paths "^3.15.0" eslint-plugin-jsx-a11y@^6.8.0: @@ -5384,27 +5426,27 @@ eslint-plugin-react-hooks@^4.6.0: integrity sha512-QzliNJq4GinDBcD8gPB5v0wh6g8q3SUi6EFF0x8N/BL9PoVs0atuGc47ozMRyOWAKdwaZ5OnbOEa3WR+dSGKuQ== eslint-plugin-react@^7.32.2: - version "7.37.2" - resolved "https://registry.yarnpkg.com/eslint-plugin-react/-/eslint-plugin-react-7.37.2.tgz#cd0935987876ba2900df2f58339f6d92305acc7a" - integrity sha512-EsTAnj9fLVr/GZleBLFbj/sSuXeWmp1eXIN60ceYnZveqEaUCyW4X+Vh4WTdUhCkW4xutXYqTXCUSyqD4rB75w== + version "7.37.5" + resolved "https://registry.yarnpkg.com/eslint-plugin-react/-/eslint-plugin-react-7.37.5.tgz#2975511472bdda1b272b34d779335c9b0e877065" + integrity sha512-Qteup0SqU15kdocexFNAJMvCJEfa2xUKNV4CC1xsVMrIIqEy3SQ/rqyxCWNzfrd3/ldy6HMlD2e0JDVpDg2qIA== dependencies: array-includes "^3.1.8" array.prototype.findlast "^1.2.5" - array.prototype.flatmap "^1.3.2" + array.prototype.flatmap "^1.3.3" array.prototype.tosorted "^1.1.4" doctrine "^2.1.0" - es-iterator-helpers "^1.1.0" + es-iterator-helpers "^1.2.1" estraverse "^5.3.0" hasown "^2.0.2" jsx-ast-utils "^2.4.1 || ^3.0.0" minimatch "^3.1.2" - object.entries "^1.1.8" + object.entries "^1.1.9" object.fromentries "^2.0.8" - object.values "^1.2.0" + object.values "^1.2.1" prop-types "^15.8.1" resolve "^2.0.0-next.5" semver "^6.3.1" - string.prototype.matchall "^4.0.11" + string.prototype.matchall "^4.0.12" string.prototype.repeat "^1.0.0" eslint-scope@5.1.1, eslint-scope@^5.1.1: @@ -5616,7 +5658,12 @@ event-source-polyfill@1.0.31: resolved "https://registry.yarnpkg.com/event-source-polyfill/-/event-source-polyfill-1.0.31.tgz#45fb0a6fc1375b2ba597361ba4287ffec5bf2e0c" integrity sha512-4IJSItgS/41IxN5UVAVuAyczwZF7ZIEsM1XAoUzIHA6A+xzusEZUutdXz2Nr+MQPLxfTiCvqE79/C8HT8fKFvA== -events@^3.2.0: +event-target-shim@^5.0.0: + version "5.0.1" + resolved "https://registry.yarnpkg.com/event-target-shim/-/event-target-shim-5.0.1.tgz#5d4d3ebdf9583d63a5333ce2deb7480ab2b05789" + integrity sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ== + +events@^3.2.0, events@^3.3.0: version "3.3.0" resolved "https://registry.yarnpkg.com/events/-/events-3.3.0.tgz#31a95ad0a924e2d2c419a813aeb2c4e878ea7400" integrity sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q== @@ -5736,15 +5783,15 @@ fast-deep-equal@^3.1.1, fast-deep-equal@^3.1.3: integrity sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q== fast-glob@^3.2.9, fast-glob@^3.3.2: - version "3.3.2" - resolved "https://registry.yarnpkg.com/fast-glob/-/fast-glob-3.3.2.tgz#a904501e57cfdd2ffcded45e99a54fef55e46129" - integrity sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow== + version "3.3.3" + resolved "https://registry.yarnpkg.com/fast-glob/-/fast-glob-3.3.3.tgz#d06d585ce8dba90a16b0505c543c3ccfb3aeb818" + integrity sha512-7MptL8U0cqcFdzIzwOTHoilX9x5BrNqye7Z/LuC7kCMRio1EMSyqRK3BEAUD7sXRq4iT4AzTVuZdhgQ2TCvYLg== dependencies: "@nodelib/fs.stat" "^2.0.2" "@nodelib/fs.walk" "^1.2.3" glob-parent "^5.1.2" merge2 "^1.3.0" - micromatch "^4.0.4" + micromatch "^4.0.8" fast-json-stable-stringify@^2.0.0: version "2.1.0" @@ -5757,9 +5804,9 @@ fast-levenshtein@^2.0.6: integrity sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw== fast-uri@^3.0.1: - version "3.0.3" - resolved "https://registry.yarnpkg.com/fast-uri/-/fast-uri-3.0.3.tgz#892a1c91802d5d7860de728f18608a0573142241" - integrity sha512-aLrHthzCjH5He4Z2H9YZ+v6Ujb9ocRuW6ZzkJQOrTxleEijANq4v1TsaPaVG1PZcuurEzrLcWRyYBYXD5cEiaw== + version "3.0.6" + resolved "https://registry.yarnpkg.com/fast-uri/-/fast-uri-3.0.6.tgz#88f130b77cfaea2378d56bf970dea21257a68748" + integrity sha512-Atfo14OibSv5wAp4VWNsFYE1AchQRTv9cBGWET4pZWHzYshFSS9NQI6I57rdKn9croWVMbYFbLhJ+yJvmZIIHw== fastest-levenshtein@^1.0.16: version "1.0.16" @@ -5767,9 +5814,9 @@ fastest-levenshtein@^1.0.16: integrity sha512-eRnCtTTtGZFpQCwhJiUOuxPQWRXVKYDn0b2PeHfXL6/Zi53SLAzAHfVhVWK2AryC/WH05kGfxhFIPvTF0SXQzg== fastq@^1.15.0, fastq@^1.16.0, fastq@^1.6.0: - version "1.17.1" - resolved "https://registry.yarnpkg.com/fastq/-/fastq-1.17.1.tgz#2a523f07a4e7b1e81a42b91b8bf2254107753b47" - integrity sha512-sRVD3lWVIXWg6By68ZN7vho9a1pQcN/WBFaAAsDDFzlJjvoGx0P8z7V1t72grFJfJhu3YPZBuu25f7Kaw2jN1w== + version "1.19.1" + resolved "https://registry.yarnpkg.com/fastq/-/fastq-1.19.1.tgz#d50eaba803c8846a883c16492821ebcd2cda55f5" + integrity sha512-GwLTyxkCXjXbxqIhTsMI2Nui8huMPtnxg7krajPJAjnEG/iiOS7i+zCtWGZR9G0NBKbXKh6X9m9UIsYX/N6vvQ== dependencies: reusify "^1.0.4" @@ -5927,28 +5974,28 @@ flat@^5.0.2: integrity sha512-b6suED+5/3rTpUBdG1gupIl8MPFCAMA0QXwmljLhvCUKcUvdE4gWky9zpuGCcXHOsz4J9wPGNWq6OKpmIzz3hQ== flatted@^3.2.9: - version "3.3.2" - resolved "https://registry.yarnpkg.com/flatted/-/flatted-3.3.2.tgz#adba1448a9841bec72b42c532ea23dbbedef1a27" - integrity sha512-AiwGJM8YcNOaobumgtng+6NHuOqC3A7MixFeDafM3X9cIUM+xUXoS5Vfgf+OihAYe20fxqNM9yPBXJzRtZ/4eA== + version "3.3.3" + resolved "https://registry.yarnpkg.com/flatted/-/flatted-3.3.3.tgz#67c8fad95454a7c7abebf74bb78ee74a44023358" + integrity sha512-GX+ysw4PBCz0PzosHDepZGANEuFCMLrnRTiEy9McGjmkCQYwRq4A/X786G/fjM/+OjsWSU1ZrY5qyARZmO/uwg== follow-redirects@^1.15.6: - version "1.15.9" - resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.15.9.tgz#a604fa10e443bf98ca94228d9eebcc2e8a2c8ee1" - integrity sha512-gew4GsXizNgdoRyqmyfMHyAmXsZDk6mHkSxZFCzW9gwlbtOW44CDtYavM+y+72qD/Vq2l550kMF52DT8fOLJqQ== + version "1.15.11" + resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.15.11.tgz#777d73d72a92f8ec4d2e410eb47352a56b8e8340" + integrity sha512-deG2P0JfjrTxl50XGCDyfI97ZGVCxIpfKYmfyrQ54n5FO/0gfIES8C/Psl6kWVDolizcaaxZJnTS0QSMxvnsBQ== -for-each@^0.3.3: - version "0.3.3" - resolved "https://registry.yarnpkg.com/for-each/-/for-each-0.3.3.tgz#69b447e88a0a5d32c3e7084f3f1710034b21376e" - integrity sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw== +for-each@^0.3.3, for-each@^0.3.5: + version "0.3.5" + resolved "https://registry.yarnpkg.com/for-each/-/for-each-0.3.5.tgz#d650688027826920feeb0af747ee7b9421a41d47" + integrity sha512-dKx12eRCVIzqCxFGplyFKJMPvLEWgmNtUrpTiJIR5u97zEhRG8ySrtboPHZXx7daLxQVrl643cTzbab2tkQjxg== dependencies: - is-callable "^1.1.3" + is-callable "^1.2.7" -foreground-child@^3.1.0: - version "3.3.0" - resolved "https://registry.yarnpkg.com/foreground-child/-/foreground-child-3.3.0.tgz#0ac8644c06e431439f8561db8ecf29a7b5519c77" - integrity sha512-Ld2g8rrAyMYFXBhEqMz8ZAHBi4J4uS1i/CxGMDnjyFWddMXLVcDp051DZfu+t7+ab7Wv6SMqpWmyFIj5UbfFvg== +foreground-child@^3.1.0, foreground-child@^3.3.1: + version "3.3.1" + resolved "https://registry.yarnpkg.com/foreground-child/-/foreground-child-3.3.1.tgz#32e8e9ed1b68a3497befb9ac2b6adf92a638576f" + integrity sha512-gIXjKqtFuWEgzFRJA9WCQeSJLZDjgJUOMCMzxtvFq/37KojM1BFGufqsCy0r4qSQmYLsZYMeyRqzIWOMup03sw== dependencies: - cross-spawn "^7.0.0" + cross-spawn "^7.0.6" signal-exit "^4.0.1" fork-ts-checker-webpack-plugin@^6.5.0: @@ -5975,13 +6022,15 @@ form-data-encoder@^2.1.2: resolved "https://registry.yarnpkg.com/form-data-encoder/-/form-data-encoder-2.1.4.tgz#261ea35d2a70d48d30ec7a9603130fa5515e9cd5" integrity sha512-yDYSgNMraqvnxiEXO4hi88+YZxaHC6QKzb5N84iRCTDeRO7ZALpir/lVmf/uXUhnwUr2O4HU8s/n6x+yNjQkHw== -form-data@^4.0.0: - version "4.0.1" - resolved "https://registry.yarnpkg.com/form-data/-/form-data-4.0.1.tgz#ba1076daaaa5bfd7e99c1a6cb02aa0a5cff90d48" - integrity sha512-tzN8e4TX8+kkxGPK8D5u0FNmjPUjw3lwC9lSLxxoB/+GtsJG91CO8bSWy73APlgAZzZbXEYZJuxjkHH2w+Ezhw== +form-data@^4.0.4: + version "4.0.4" + resolved "https://registry.yarnpkg.com/form-data/-/form-data-4.0.4.tgz#784cdcce0669a9d68e94d11ac4eea98088edd2c4" + integrity sha512-KrGhL9Q4zjj0kiUt5OO4Mr/A/jlI2jDYs5eHBpYHPcBEVSiipAvn2Ko2HnPe20rmcuuvMHNdZFp+4IlGTMF0Ow== dependencies: asynckit "^0.4.0" combined-stream "^1.0.8" + es-set-tostringtag "^2.1.0" + hasown "^2.0.2" mime-types "^2.1.12" format@^0.2.0: @@ -6015,9 +6064,9 @@ fs-exists-cached@1.0.0, fs-exists-cached@^1.0.0: integrity sha512-kSxoARUDn4F2RPXX48UXnaFKwVU7Ivd/6qpzZL29MCDmr9sTvybv4gFCp+qaI4fM9m0z9fgz/yJvi56GAz+BZg== fs-extra@^11.2.0: - version "11.2.0" - resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-11.2.0.tgz#e70e17dfad64232287d01929399e0ea7c86b0e5b" - integrity sha512-PmDi3uwK5nFuXh7XDTlVnS17xJS7vW36is2+w3xcv8SVxiB4NyATf4ctkVY5bkSjX0Y4nbvZCq1/EjtEyr9ktw== + version "11.3.0" + resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-11.3.0.tgz#0daced136bbaf65a555a326719af931adc7a314d" + integrity sha512-Z4XaCL6dUDHfP/jT25jJKMmtxvuwbkrD1vNSMFlo9lNLY2c5FHYSQgHPRZUjAB26TpDEoW9HCOgplrdbaPV/ew== dependencies: graceful-fs "^4.2.0" jsonfile "^6.0.1" @@ -6034,9 +6083,9 @@ fs-extra@^9.0.0: universalify "^2.0.0" fs-monkey@^1.0.4: - version "1.0.6" - resolved "https://registry.yarnpkg.com/fs-monkey/-/fs-monkey-1.0.6.tgz#8ead082953e88d992cf3ff844faa907b26756da2" - integrity sha512-b1FMfwetIKymC0eioW7mTywihSQE4oLzQn1dB6rZB5fx/3NpNEdAWeCSMB+60/AeT0TCXsxzAlcYVEFCTAksWg== + version "1.1.0" + resolved "https://registry.yarnpkg.com/fs-monkey/-/fs-monkey-1.1.0.tgz#632aa15a20e71828ed56b24303363fb1414e5997" + integrity sha512-QMUezzXWII9EV5aTFXW1UBVUO77wYPpjqIF8/AviUCThNeSYZykpoTixUeaNNBwmCev0AMDWMAni+f8Hxb1IFw== fs.realpath@^1.0.0: version "1.0.0" @@ -6053,12 +6102,13 @@ function-bind@^1.1.2: resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.2.tgz#2c02d864d97f3ea6c8830c464cbd11ab6eab7a1c" integrity sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA== -function.prototype.name@^1.1.6, function.prototype.name@^1.1.7: - version "1.1.7" - resolved "https://registry.yarnpkg.com/function.prototype.name/-/function.prototype.name-1.1.7.tgz#9df48ea5f746bf577d7e15b5da89df8952a98e7b" - integrity sha512-2g4x+HqTJKM9zcJqBSpjoRmdcPFtJM60J3xJisTQSXBWka5XqyBN/2tNUgma1mztTXyDuUsEtYe5qcs7xYzYQA== +function.prototype.name@^1.1.6, function.prototype.name@^1.1.8: + version "1.1.8" + resolved "https://registry.yarnpkg.com/function.prototype.name/-/function.prototype.name-1.1.8.tgz#e68e1df7b259a5c949eeef95cdbde53edffabb78" + integrity sha512-e5iwyodOHhbMr/yNrc7fDYG4qlbIvI5gajyzPnb5TCwyhjApznQh1BMFou9b30SevY43gCJKXycoCBjMbsuW0Q== dependencies: call-bind "^1.0.8" + call-bound "^1.0.3" define-properties "^1.2.1" functions-have-names "^1.2.3" hasown "^2.0.2" @@ -6142,10 +6192,10 @@ gatsby-core-utils@^4.14.0: tmp "^0.2.1" xdg-basedir "^4.0.0" -gatsby-graphiql-explorer@^3.14.0: - version "3.14.0" - resolved "https://registry.yarnpkg.com/gatsby-graphiql-explorer/-/gatsby-graphiql-explorer-3.14.0.tgz#9a10f040ede72c104cf5af23561ba4fc01d43161" - integrity sha512-t+PpMu+6GkCdyGDw8S4pd1FBZVwFdpn6Jb2BLZtNJ2z1hOSxHKGoZO1sW2mwZ8/H1VuiSPb2XtXwHYo5CcYgAg== +gatsby-graphiql-explorer@^3.14.1: + version "3.14.1" + resolved "https://registry.yarnpkg.com/gatsby-graphiql-explorer/-/gatsby-graphiql-explorer-3.14.1.tgz#592d81f64a17d429386b3dd21e026e22e7800d39" + integrity sha512-QC6XSIIrg4wp5Tb4qE7dkMpC+XDQDDIkQ3dkxajLn8P02tHHAUDLYlJGVHKILp5QQRlTXCPqk4AFZwh21NtJBw== gatsby-legacy-polyfills@^3.14.0: version "3.14.0" @@ -6155,10 +6205,10 @@ gatsby-legacy-polyfills@^3.14.0: "@babel/runtime" "^7.20.13" core-js-compat "3.31.0" -gatsby-link@^5.14.0: - version "5.14.0" - resolved "https://registry.yarnpkg.com/gatsby-link/-/gatsby-link-5.14.0.tgz#15b731c6e1050c51f1ff443959d82b523cb61b0a" - integrity sha512-BJYTdZ23pObzan1BG/XlqsnlQgiQS54Ztm1CuYj9OPtORT4i9kBrNSaRrQZdsLHM9s2Ox+oBullzZSi6CU/CbQ== +gatsby-link@^5.14.1: + version "5.14.1" + resolved "https://registry.yarnpkg.com/gatsby-link/-/gatsby-link-5.14.1.tgz#d2c852638fb8d12386440bea6b1cdd1b8cf0e829" + integrity sha512-yhQOu6qv5tIZrzyOyKGI14xO0u6p9hBJCd1mOOaGqoWzUKeFqVK1CwHBBdfiSOiGtkB6mwVixA/8XXkZU9Iaqw== dependencies: "@types/reach__router" "^1.3.10" gatsby-page-utils "^3.14.0" @@ -6228,9 +6278,9 @@ gatsby-plugin-manifest@^5.14.0: sharp "^0.32.6" gatsby-plugin-mdx@^5.14.0: - version "5.14.0" - resolved "https://registry.yarnpkg.com/gatsby-plugin-mdx/-/gatsby-plugin-mdx-5.14.0.tgz#5f95124cae148bd5e91559198d983c562a88b0a4" - integrity sha512-tJJmR+sRrWFRuUKUq5bJLWcLXo6FTP06tfE+7yN2foKcW6+SphY3EVvqiTnCzNAkpvUCP3EASLMg2WGWIVzi4A== + version "5.14.1" + resolved "https://registry.yarnpkg.com/gatsby-plugin-mdx/-/gatsby-plugin-mdx-5.14.1.tgz#08ee4149278386c66205cffa5fa5669ccdbb2494" + integrity sha512-BkrK10XqWkvYJNraSnPt/Ih/TmSjEzSWOEyWMSOJhHC+xpdqGakKKbkHButGQLMwC4W+v7jjQ3ZCbDQLXxZ5ZQ== dependencies: "@mdx-js/mdx" "^2.3.0" acorn "^8.8.2" @@ -6393,9 +6443,9 @@ gatsby-worker@^2.14.0: signal-exit "^3.0.7" gatsby@^5.14.0: - version "5.14.0" - resolved "https://registry.yarnpkg.com/gatsby/-/gatsby-5.14.0.tgz#b3a9e0eef67adbcbbb594f5e5dc26e308fa7d404" - integrity sha512-VZZAN80FrcGLz0uOPK7Eww/tfGUQ26UuZOxiXFhcJgeO29lt8IPwSdNhAimyhbRDkvMNZu7Dz1+tO9PyvPZN4Q== + version "5.14.5" + resolved "https://registry.yarnpkg.com/gatsby/-/gatsby-5.14.5.tgz#5066afb81b167b9d45368ba78b75cfdec7b9e212" + integrity sha512-j3OO6O1IrUl6jliXCZdLaT3TWgzFO6CvZE8rS0Eh/3f3S6tmv11/jfSeqXCCgKyCNOKhM2aW02rj0ffA7c0ttQ== dependencies: "@babel/code-frame" "^7.18.6" "@babel/core" "^7.20.12" @@ -6480,9 +6530,9 @@ gatsby@^5.14.0: fs-extra "^11.2.0" gatsby-cli "^5.14.0" gatsby-core-utils "^4.14.0" - gatsby-graphiql-explorer "^3.14.0" + gatsby-graphiql-explorer "^3.14.1" gatsby-legacy-polyfills "^3.14.0" - gatsby-link "^5.14.0" + gatsby-link "^5.14.1" gatsby-page-utils "^3.14.0" gatsby-parcel-config "1.14.0" gatsby-plugin-page-creator "^5.14.0" @@ -6515,7 +6565,7 @@ gatsby@^5.14.0: mini-css-extract-plugin "1.6.2" mitt "^1.2.0" moment "^2.29.4" - multer "^1.4.5-lts.1" + multer "^2.0.1" node-fetch "^2.6.11" node-html-parser "^5.4.2" normalize-path "^3.0.0" @@ -6556,7 +6606,7 @@ gatsby@^5.14.0: type-of "^2.0.1" url-loader "^4.1.1" uuid "^8.3.2" - webpack "^5.88.1" + webpack "~5.98.0" webpack-dev-middleware "^5.3.4" webpack-merge "^5.9.0" webpack-stats-plugin "^1.1.3" @@ -6576,27 +6626,35 @@ get-caller-file@^2.0.1: resolved "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-2.0.5.tgz#4f94412a82db32f36e3b0b9741f8a97feb031f7e" integrity sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg== -get-intrinsic@^1.2.4, get-intrinsic@^1.2.5, get-intrinsic@^1.2.6: - version "1.2.6" - resolved "https://registry.yarnpkg.com/get-intrinsic/-/get-intrinsic-1.2.6.tgz#43dd3dd0e7b49b82b2dfcad10dc824bf7fc265d5" - integrity sha512-qxsEs+9A+u85HhllWJJFicJfPDhRmjzoYdl64aMWW9yRIJmSyxdn8IEkuIM530/7T+lv0TIHd8L6Q/ra0tEoeA== +get-intrinsic@^1.2.4, get-intrinsic@^1.2.5, get-intrinsic@^1.2.6, get-intrinsic@^1.2.7, get-intrinsic@^1.3.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/get-intrinsic/-/get-intrinsic-1.3.0.tgz#743f0e3b6964a93a5491ed1bffaae054d7f98d01" + integrity sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ== dependencies: - call-bind-apply-helpers "^1.0.1" - dunder-proto "^1.0.0" + call-bind-apply-helpers "^1.0.2" es-define-property "^1.0.1" es-errors "^1.3.0" - es-object-atoms "^1.0.0" + es-object-atoms "^1.1.1" function-bind "^1.1.2" + get-proto "^1.0.1" gopd "^1.2.0" has-symbols "^1.1.0" hasown "^2.0.2" - math-intrinsics "^1.0.0" + math-intrinsics "^1.1.0" get-port@^3.2.0: version "3.2.0" resolved "https://registry.yarnpkg.com/get-port/-/get-port-3.2.0.tgz#dd7ce7de187c06c8bf353796ac71e099f0980ebc" integrity sha512-x5UJKlgeUiNT8nyo/AcnwLnZuZNcSjSw0kogRB+Whd1fjjFq4B1hySFxSFWWSn4mIBzg3sRNUDFYc4g5gjPoLg== +get-proto@^1.0.0, get-proto@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/get-proto/-/get-proto-1.0.1.tgz#150b3f2743869ef3e851ec0c49d15b1d14d00ee1" + integrity sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g== + dependencies: + dunder-proto "^1.0.1" + es-object-atoms "^1.0.0" + get-stream@^5.1.0: version "5.2.0" resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-5.2.0.tgz#4966a1795ee5ace65e706c4b7beb71257d6e22d3" @@ -6614,7 +6672,7 @@ get-stream@^8.0.1: resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-8.0.1.tgz#def9dfd71742cd7754a7761ed43749a27d02eca2" integrity sha512-VaUJspBffn/LMCJVoMvSAdmscJyS1auj5Zulnn5UoYcY531UWmdwhRWkcGKnGU93m5HSXP9LP2usOryrBtQowA== -get-symbol-description@^1.0.2: +get-symbol-description@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/get-symbol-description/-/get-symbol-description-1.1.0.tgz#7bdd54e0befe8ffc9f3b4e203220d9f1e881b6ee" integrity sha512-w9UMqWwJxHNOvoNzSJ2oPF5wvYcvP7jUvYzhp67yEhTi17ZDBBC1z9pTdGuzjD+EFIqLSYRweZjqfiPzQ06Ebg== @@ -6652,6 +6710,18 @@ glob-to-regexp@^0.4.1: resolved "https://registry.yarnpkg.com/glob-to-regexp/-/glob-to-regexp-0.4.1.tgz#c75297087c851b9a578bd217dd59a92f59fe546e" integrity sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw== +glob@*: + version "11.0.3" + resolved "https://registry.yarnpkg.com/glob/-/glob-11.0.3.tgz#9d8087e6d72ddb3c4707b1d2778f80ea3eaefcd6" + integrity sha512-2Nim7dha1KVkaiF4q6Dj+ngPPMdfvLJEOpZk/jKiUAkqKebpGAWQXAq9z1xu9HKu5lWfqw/FASuccEjyznjPaA== + dependencies: + foreground-child "^3.3.1" + jackspeak "^4.1.1" + minimatch "^10.0.3" + minipass "^7.1.2" + package-json-from-dist "^1.0.0" + path-scurry "^2.0.0" + glob@^10.3.10: version "10.4.5" resolved "https://registry.yarnpkg.com/glob/-/glob-10.4.5.tgz#f4d9f0b90ffdbab09c9d77f5f29b4262517b0956" @@ -6692,11 +6762,6 @@ global-prefix@^3.0.0: kind-of "^6.0.2" which "^1.3.1" -globals@^11.1.0: - version "11.12.0" - resolved "https://registry.yarnpkg.com/globals/-/globals-11.12.0.tgz#ab8795338868a0babd8525758018c2a7eb95c42e" - integrity sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA== - globals@^13.2.0, globals@^13.6.0, globals@^13.9.0: version "13.24.0" resolved "https://registry.yarnpkg.com/globals/-/globals-13.24.0.tgz#8432a19d78ce0c1e833949c36adb345400bb1171" @@ -6779,16 +6844,16 @@ graphemer@^1.4.0: integrity sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag== graphql-compose@^9.0.10: - version "9.0.11" - resolved "https://registry.yarnpkg.com/graphql-compose/-/graphql-compose-9.0.11.tgz#c3b5a3378b62be0deb9ea43d147b756010f6d611" - integrity sha512-p3+8p2lo7wel24IQwGIhwVGOnCJ3hfBno+x8CE7G4ZLaC4u5G2g6h1Mm8O5iJPTD0C+Q/WxxDqSL2qs8VOf5mg== + version "9.1.0" + resolved "https://registry.yarnpkg.com/graphql-compose/-/graphql-compose-9.1.0.tgz#6e12a5f193125f179441b8410bcf1aca0296946d" + integrity sha512-nFL2+oeF8IlKjXPzmFL9rlBhrHlJMKGC0JeuBfOkWLLNqAtlFV+M1YGuuORyx0+mbLsBl9XToKWBPPfCHL8HHA== dependencies: graphql-type-json "0.3.2" graphql-http@^1.19.0: - version "1.22.3" - resolved "https://registry.yarnpkg.com/graphql-http/-/graphql-http-1.22.3.tgz#5da03ee564b847e585fa08e326a50dbd4c8fbc0a" - integrity sha512-sgUz/2DZt+QvY6WrpAsAXUvhnIkp2eX9jN78V8DAtFcpZi/nfDrzDt2byYjyoJzRcWuqhE0K63g1QMewt73U6A== + version "1.22.4" + resolved "https://registry.yarnpkg.com/graphql-http/-/graphql-http-1.22.4.tgz#47b52ef0ab1f412943aca33ecfcdf22de525d59b" + integrity sha512-OC3ucK988teMf+Ak/O+ZJ0N2ukcgrEurypp8ePyJFWq83VzwRAmHxxr+XxrMpxO/FIwI4a7m/Fzv3tWGJv0wPA== graphql-tag@^2.11.0, graphql-tag@^2.12.6: version "2.12.6" @@ -6803,9 +6868,9 @@ graphql-type-json@0.3.2: integrity sha512-J+vjof74oMlCWXSvt0DOf2APEdZOCdubEvGDUAlqH//VBYcOYsGgRW7Xzorr44LvkjiuvecWc8fChxuZZbChtg== graphql@^16.7.1: - version "16.10.0" - resolved "https://registry.yarnpkg.com/graphql/-/graphql-16.10.0.tgz#24c01ae0af6b11ea87bf55694429198aaa8e220c" - integrity sha512-AjqGKbDGUFRKIRCP9tCKiIGHyriz2oHEbPIbEtcSLSs4YjReZOIPQQWek4+6hjw62H9QShXHyaGivGiYVLeYFQ== + version "16.11.0" + resolved "https://registry.yarnpkg.com/graphql/-/graphql-16.11.0.tgz#96d17f66370678027fdf59b2d4c20b4efaa8a633" + integrity sha512-mS1lbMsxgQj6hge1XZ6p7GPhbrtFwUFYi3wRzXAC/FmYnyXMTvvI3td3rjmQ2u8ewXueaSvRPWaEcgVVOT9Jnw== gray-matter@^4.0.3: version "4.0.3" @@ -6846,7 +6911,7 @@ has-property-descriptors@^1.0.0, has-property-descriptors@^1.0.2: dependencies: es-define-property "^1.0.0" -has-proto@^1.0.3, has-proto@^1.2.0: +has-proto@^1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/has-proto/-/has-proto-1.2.0.tgz#5de5a6eabd95fdffd9818b43055e8065e39fe9d5" integrity sha512-KIL7eQPfHQRC8+XluaIw7BHUwwqL19bQn4hzNgdr+1wXoU0KKj6rufu47lhY7KbJR2C6T6+PfyN0Ea7wkSS+qQ== @@ -6858,7 +6923,7 @@ has-symbols@^1.0.3, has-symbols@^1.1.0: resolved "https://registry.yarnpkg.com/has-symbols/-/has-symbols-1.1.0.tgz#fc9c6a783a084951d0b971fe1018de813707a338" integrity sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ== -has-tostringtag@^1.0.0, has-tostringtag@^1.0.2: +has-tostringtag@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/has-tostringtag/-/has-tostringtag-1.0.2.tgz#2cdc42d40bef2e5b4eeab7c01a73c54ce7ab5abc" integrity sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw== @@ -6878,7 +6943,7 @@ hasha@^5.2.2: is-stream "^2.0.0" type-fest "^0.8.0" -hasown@^2.0.0, hasown@^2.0.1, hasown@^2.0.2: +hasown@^2.0.2: version "2.0.2" resolved "https://registry.yarnpkg.com/hasown/-/hasown-2.0.2.tgz#003eaf91be7adc372e84ec59dc37252cedb80003" integrity sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ== @@ -6954,9 +7019,9 @@ hast-util-to-estree@^2.0.0: zwitch "^2.0.0" hast-util-to-jsx-runtime@^2.0.0: - version "2.3.2" - resolved "https://registry.yarnpkg.com/hast-util-to-jsx-runtime/-/hast-util-to-jsx-runtime-2.3.2.tgz#6d11b027473e69adeaa00ca4cfb5bb68e3d282fa" - integrity sha512-1ngXYb+V9UT5h+PxNRa1O1FYguZK/XL+gkeqvp7EdHlB9oHUG0eYRo/vY5inBdcqo3RkPMC58/H94HvkbfGdyg== + version "2.3.6" + resolved "https://registry.yarnpkg.com/hast-util-to-jsx-runtime/-/hast-util-to-jsx-runtime-2.3.6.tgz#ff31897aae59f62232e21594eac7ef6b63333e98" + integrity sha512-zl6s8LwNyo1P9uw+XJGvZtdFF1GdAkOg8ujOw+4Pyb76874fLps4ueHXDhXWdk6YHQ6OgUtinliG7RsYvCbbBg== dependencies: "@types/estree" "^1.0.0" "@types/hast" "^3.0.0" @@ -6968,9 +7033,9 @@ hast-util-to-jsx-runtime@^2.0.0: mdast-util-mdx-expression "^2.0.0" mdast-util-mdx-jsx "^3.0.0" mdast-util-mdxjs-esm "^2.0.0" - property-information "^6.0.0" + property-information "^7.0.0" space-separated-tokens "^2.0.0" - style-to-object "^1.0.0" + style-to-js "^1.0.0" unist-util-position "^5.0.0" vfile-message "^4.0.0" @@ -7053,9 +7118,16 @@ hosted-git-info@^3.0.8: lru-cache "^6.0.0" html-entities@^2.1.0, html-entities@^2.3.3: - version "2.5.2" - resolved "https://registry.yarnpkg.com/html-entities/-/html-entities-2.5.2.tgz#201a3cf95d3a15be7099521620d19dfb4f65359f" - integrity sha512-K//PSRMQk4FZ78Kyau+mZurHn3FH0Vwr+H36eE0rPbeYkRRi9YxceYPhuN60UwWorxyKHhqoAJl2OFKa4BVtaA== + version "2.6.0" + resolved "https://registry.yarnpkg.com/html-entities/-/html-entities-2.6.0.tgz#7c64f1ea3b36818ccae3d3fb48b6974208e984f8" + integrity sha512-kig+rMn/QOVRvr7c86gQ8lWXq+Hkv6CbAH1hLu+RG338StTpE8Z0b44SDVaqVu7HGKf27frdmUYEs9hTUX/cLQ== + +html-parse-stringify@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/html-parse-stringify/-/html-parse-stringify-3.0.1.tgz#dfc1017347ce9f77c8141a507f233040c59c55d2" + integrity sha512-KknJ50kTInJ7qIScF3jeaFRpMpE8/lfiTdzf/twXyPBLAGrLRTmkz3AdTnKeh40X8k9L2fdYwEp/42WGXIRGcg== + dependencies: + void-elements "3.1.0" html-url-attributes@^3.0.0: version "3.0.1" @@ -7073,9 +7145,9 @@ htmlparser2@^6.1.0: entities "^2.0.0" http-cache-semantics@^4.0.0, http-cache-semantics@^4.1.1: - version "4.1.1" - resolved "https://registry.yarnpkg.com/http-cache-semantics/-/http-cache-semantics-4.1.1.tgz#abe02fcb2985460bf0323be664436ec3476a6d5a" - integrity sha512-er295DKPVsV82j5kw1Gjt+ADA/XYHsajl82cGNQG2eyoPkvgUhX+nDIyelzhIWbbsXP39EHcI6l5tYs2FYqYXQ== + version "4.2.0" + resolved "https://registry.yarnpkg.com/http-cache-semantics/-/http-cache-semantics-4.2.0.tgz#205f4db64f8562b76a4ff9235aa5279839a09dd5" + integrity sha512-dTxcvPXqPvXBQpq5dUr6mEMJX4oIEFv6bwom3FDwKRDsuIjjJGANqhBuoAn9c1RQJIdAKav33ED65E2ys+87QQ== http-errors@2.0.0: version "2.0.0" @@ -7114,6 +7186,20 @@ human-signals@^5.0.0: resolved "https://registry.yarnpkg.com/human-signals/-/human-signals-5.0.0.tgz#42665a284f9ae0dade3ba41ebc37eb4b852f3a28" integrity sha512-AXcZb6vzzrFAUE61HnN4mpLqd/cSIwNQjtNWR0euPm6y0iqx3G4gOXaIDdtdDwZmhwe82LA6+zinmW4UBWVePQ== +i18next-browser-languagedetector@^8.2.0: + version "8.2.0" + resolved "https://registry.yarnpkg.com/i18next-browser-languagedetector/-/i18next-browser-languagedetector-8.2.0.tgz#c3ca311e249d2f7d8bb9b3b13ac9af380a3b15b0" + integrity sha512-P+3zEKLnOF0qmiesW383vsLdtQVyKtCNA9cjSoKCppTKPQVfKd2W8hbVo5ZhNJKDqeM7BOcvNoKJOjpHh4Js9g== + dependencies: + "@babel/runtime" "^7.23.2" + +i18next@^25.3.2: + version "25.3.2" + resolved "https://registry.yarnpkg.com/i18next/-/i18next-25.3.2.tgz#3d6a7d1dc058caa1b9bdca47fd585483e2e7a637" + integrity sha512-JSnbZDxRVbphc5jiptxr3o2zocy5dEqpVm9qCGdJwRNO+9saUJS0/u4LnM/13C23fUEWxAylPqKU/NpMV/IjqA== + dependencies: + "@babel/runtime" "^7.27.6" + iconv-lite@0.4.24, iconv-lite@^0.4.24, iconv-lite@^0.4.4: version "0.4.24" resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.24.tgz#2022b4b25fbddc21d2f524974a474aafe733908b" @@ -7152,9 +7238,9 @@ immutable@~3.7.6: integrity sha512-AizQPcaofEtO11RZhPPHBOJRdo/20MKQF9mBLnVkBoyHi1/zXK8fzVdnEpSV9gxqtnh6Qomfp3F0xT5qP/vThw== import-fresh@^3.0.0, import-fresh@^3.1.0, import-fresh@^3.2.1, import-fresh@^3.3.0: - version "3.3.0" - resolved "https://registry.yarnpkg.com/import-fresh/-/import-fresh-3.3.0.tgz#37162c25fcb9ebaa2e6e53d5b4d88ce17d9e0c2b" - integrity sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw== + version "3.3.1" + resolved "https://registry.yarnpkg.com/import-fresh/-/import-fresh-3.3.1.tgz#9cecb56503c0ada1f2741dbbd6546e4b13b57ccf" + integrity sha512-TR3KfrTZTYLPB6jUjfx6MF9WcWrHL9su5TObK4ZkYgBdWKPOFoSoQIdEuTuR82pmtxH2spWG9h6etwfr1pLBqQ== dependencies: parent-module "^1.0.0" resolve-from "^4.0.0" @@ -7177,7 +7263,7 @@ inflight@^1.0.4: once "^1.3.0" wrappy "1" -inherits@2, inherits@2.0.4, inherits@^2.0.3, inherits@^2.0.4, inherits@~2.0.3: +inherits@2, inherits@2.0.4, inherits@^2.0.3, inherits@^2.0.4: version "2.0.4" resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c" integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ== @@ -7221,7 +7307,7 @@ install@^0.13.0: resolved "https://registry.yarnpkg.com/install/-/install-0.13.0.tgz#6af6e9da9dd0987de2ab420f78e60d9c17260776" integrity sha512-zDml/jzr2PKU9I8J/xyZBQn8rPCAY//UOYNmR01XwNwyfhEWObo2SWfSl1+0tm1u6PhxLwDnfsT/6jB7OUxqFA== -internal-slot@^1.0.7, internal-slot@^1.1.0: +internal-slot@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/internal-slot/-/internal-slot-1.1.0.tgz#1eac91762947d2f7056bc838d93e13b2e9604961" integrity sha512-4gd7VpWNQNB4UKKCFFVcp1AVv+FMOgs9NKzjHKusc8jTMhd5eL1NqQqOpE0KzMds804/yHlglp3uxgluOqAPLw== @@ -7281,7 +7367,7 @@ is-alphanumerical@^2.0.0: is-alphabetical "^2.0.0" is-decimal "^2.0.0" -is-array-buffer@^3.0.4: +is-array-buffer@^3.0.4, is-array-buffer@^3.0.5: version "3.0.5" resolved "https://registry.yarnpkg.com/is-array-buffer/-/is-array-buffer-3.0.5.tgz#65742e1e687bd2cc666253068fd8707fe4d44280" integrity sha512-DDfANUiiG2wC1qawP66qlTugJeL5HyzMpfr8lLK+jMQirGzNod0B12cFB/9q838Ru27sBwfw78/rdoU7RERz6A== @@ -7301,11 +7387,15 @@ is-arrayish@^0.3.1: integrity sha512-eVRqCvVlZbuw3GrM63ovNSNAeA1K16kaR/LRY/92w0zxQ5/1YzwblUX652i4Xs9RwAGjW9d9y6X88t8OaAJfWQ== is-async-function@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/is-async-function/-/is-async-function-2.0.0.tgz#8e4418efd3e5d3a6ebb0164c05ef5afb69aa9646" - integrity sha512-Y1JXKrfykRJGdlDwdKlLpLyMIiWqWvuSd17TvZk68PLAOGOoF4Xyav1z0Xhoi+gCYjZVeC5SI+hYFOfvXmGRCA== + version "2.1.1" + resolved "https://registry.yarnpkg.com/is-async-function/-/is-async-function-2.1.1.tgz#3e69018c8e04e73b738793d020bfe884b9fd3523" + integrity sha512-9dgM/cZBnNvjzaMYHVoxxfPj2QXt22Ev7SuuPrs+xav0ukGB0S6d4ydZdEiM48kLx5kDV+QBPrpVnFyefL8kkQ== dependencies: - has-tostringtag "^1.0.0" + async-function "^1.0.0" + call-bound "^1.0.3" + get-proto "^1.0.1" + has-tostringtag "^1.0.2" + safe-regex-test "^1.1.0" is-bigint@^1.1.0: version "1.1.0" @@ -7322,11 +7412,11 @@ is-binary-path@~2.1.0: binary-extensions "^2.0.0" is-boolean-object@^1.2.1: - version "1.2.1" - resolved "https://registry.yarnpkg.com/is-boolean-object/-/is-boolean-object-1.2.1.tgz#c20d0c654be05da4fbc23c562635c019e93daf89" - integrity sha512-l9qO6eFlUETHtuihLcYOaLKByJ1f+N4kthcU9YjHy3N+B3hWv0y/2Nd0mu/7lTFnRQHTrSdXF50HQ3bl5fEnng== + version "1.2.2" + resolved "https://registry.yarnpkg.com/is-boolean-object/-/is-boolean-object-1.2.2.tgz#7067f47709809a393c71ff5bb3e135d8a9215d9e" + integrity sha512-wa56o2/ElJMYqjCjGkXri7it5FbebW5usLw/nPmCMs5DeZ7eziSYZhSmPRn0txqeW4LnAmQQU7FgqLpsEFKM4A== dependencies: - call-bound "^1.0.2" + call-bound "^1.0.3" has-tostringtag "^1.0.2" is-buffer@^2.0.0: @@ -7334,7 +7424,7 @@ is-buffer@^2.0.0: resolved "https://registry.yarnpkg.com/is-buffer/-/is-buffer-2.0.5.tgz#ebc252e400d22ff8d77fa09888821a24a658c191" integrity sha512-i2R6zNFDwgEHJyQUtJEk0XFi1i0dPFn/oqjK3/vPCcDeJvW5NQ83V8QbicfF1SupOaB0h8ntgBC2YiE7dfyctQ== -is-callable@^1.1.3, is-callable@^1.2.7: +is-callable@^1.2.7: version "1.2.7" resolved "https://registry.yarnpkg.com/is-callable/-/is-callable-1.2.7.tgz#3bc2a85ea742d9e36205dcacdd72ca1fdc51b055" integrity sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA== @@ -7346,10 +7436,10 @@ is-ci@^2.0.0: dependencies: ci-info "^2.0.0" -is-core-module@^2.13.0, is-core-module@^2.15.1, is-core-module@^2.16.0: - version "2.16.0" - resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.16.0.tgz#6c01ffdd5e33c49c1d2abfa93334a85cb56bd81c" - integrity sha512-urTSINYfAYgcbLb0yDQ6egFm6h3Mo1DcF9EkyXSRjjzdHbsulg01qhwWuXdOoUBuTkbQ80KDboXa0vFJ+BDH+g== +is-core-module@^2.13.0, is-core-module@^2.16.0, is-core-module@^2.16.1: + version "2.16.1" + resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.16.1.tgz#2a98801a849f43e2add644fbb6bc6229b19a4ef4" + integrity sha512-UfoeMA6fIJ8wTYFEUjelnaGI67v6+N7qXJEvQuIGa99l4xsCruSYOVSQ0uPANn4dAzm8lkYPaKLrrijLq7x23w== dependencies: hasown "^2.0.2" @@ -7418,11 +7508,14 @@ is-fullwidth-code-point@^3.0.0: integrity sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg== is-generator-function@^1.0.10: - version "1.0.10" - resolved "https://registry.yarnpkg.com/is-generator-function/-/is-generator-function-1.0.10.tgz#f1558baf1ac17e0deea7c0415c438351ff2b3c72" - integrity sha512-jsEjy9l3yiXEQ+PsXdmBwEPcOxaXWLspKdplFUVI9vq1iZgIekeC0L167qeu86czQaxed3q/Uzuw0swL0irL8A== + version "1.1.0" + resolved "https://registry.yarnpkg.com/is-generator-function/-/is-generator-function-1.1.0.tgz#bf3eeda931201394f57b5dba2800f91a238309ca" + integrity sha512-nPUB5km40q9e8UfN/Zc24eLlzdSf9OfKByBw9CIdw4H1giPMeA0OIJvbchsCu4npfI2QcMVBsGEBHKZ7wLTWmQ== dependencies: - has-tostringtag "^1.0.0" + call-bound "^1.0.3" + get-proto "^1.0.0" + has-tostringtag "^1.0.2" + safe-regex-test "^1.1.0" is-glob@^2.0.0: version "2.0.1" @@ -7555,7 +7648,7 @@ is-set@^2.0.3: resolved "https://registry.yarnpkg.com/is-set/-/is-set-2.0.3.tgz#8ab209ea424608141372ded6e0cb200ef1d9d01d" integrity sha512-iPAjerrse27/ygGLxw+EBR9agv9Y6uLeYVJMu+QNCoouJ1/1ri0mGrcWpfCqFZuzzx3WjtwxG098X+n4OuRkPg== -is-shared-array-buffer@^1.0.3: +is-shared-array-buffer@^1.0.4: version "1.0.4" resolved "https://registry.yarnpkg.com/is-shared-array-buffer/-/is-shared-array-buffer-1.0.4.tgz#9b67844bd9b7f246ba0708c3a93e34269c774f6f" integrity sha512-ISWac8drv4ZGfwKl5slpHG9OwPNty4jOWPRIhBpxOoD+hqITiwuipOQ2bNthAzwA3B4fIjO4Nln74N0S9byq8A== @@ -7572,7 +7665,7 @@ is-stream@^3.0.0: resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-3.0.0.tgz#e6bfd7aa6bef69f4f472ce9bb681e3e57b4319ac" integrity sha512-LnQR4bZ9IADDRSkvpqMGvt/tEJWclzklNgSw48V5EAaAeDd6qGvN8ei6k5p0tvxSR171VmGyHuTiAOfxAbr8kA== -is-string@^1.0.7, is-string@^1.1.1: +is-string@^1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/is-string/-/is-string-1.1.1.tgz#92ea3f3d5c5b6e039ca8677e5ac8d07ea773cbb9" integrity sha512-BtEeSsoaQjlSPBemMQIrY1MY0uM6vnS1g5fmufYOtnxLGUZM2178PKbhsk7Ffv58IX+ZtcvoGwccYsh0PglkAA== @@ -7589,7 +7682,7 @@ is-symbol@^1.0.4, is-symbol@^1.1.1: has-symbols "^1.1.0" safe-regex-test "^1.1.0" -is-typed-array@^1.1.13, is-typed-array@^1.1.14: +is-typed-array@^1.1.13, is-typed-array@^1.1.14, is-typed-array@^1.1.15: version "1.1.15" resolved "https://registry.yarnpkg.com/is-typed-array/-/is-typed-array-1.1.15.tgz#4bfb4a45b61cee83a5a46fba778e4e8d59c0ce0b" integrity sha512-p3EcsicXjit7SaskXHs1hA91QxgTw46Fv6EFKKGS5DRFLD8yKnohjF3hxoju94b/OcMZoQukzpPpBE9uLVKzgQ== @@ -7634,12 +7727,12 @@ is-weakmap@^2.0.2: resolved "https://registry.yarnpkg.com/is-weakmap/-/is-weakmap-2.0.2.tgz#bf72615d649dfe5f699079c54b83e47d1ae19cfd" integrity sha512-K5pXYOm9wqY1RgjpL3YTkF39tni1XajUIkawTLUo9EZEVUFga5gSQJF8nNS7ZwJQ02y+1YCNYcMh+HIf1ZqE+w== -is-weakref@^1.0.2, is-weakref@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/is-weakref/-/is-weakref-1.1.0.tgz#47e3472ae95a63fa9cf25660bcf0c181c39770ef" - integrity sha512-SXM8Nwyys6nT5WP6pltOwKytLV7FqQ4UiibxVmW+EIosHcmCqkkjViTb5SNssDlkCiEYRP1/pdWUKVvZBmsR2Q== +is-weakref@^1.0.2, is-weakref@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/is-weakref/-/is-weakref-1.1.1.tgz#eea430182be8d64174bd96bffbc46f21bf3f9293" + integrity sha512-6i9mGWSlqzNMEqpCp93KwRS1uUOodk2OJ6b+sq7ZPDSy2WuI5NFIxp/254TytR8ftefexkWn5xNiHUNpPOfSew== dependencies: - call-bound "^1.0.2" + call-bound "^1.0.3" is-weakset@^2.0.3: version "2.0.4" @@ -7680,11 +7773,6 @@ isarray@^2.0.5: resolved "https://registry.yarnpkg.com/isarray/-/isarray-2.0.5.tgz#8af1e4c1221244cc62459faf38940d4e644a5723" integrity sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw== -isarray@~1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/isarray/-/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11" - integrity sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ== - isexe@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10" @@ -7695,16 +7783,16 @@ isobject@^3.0.1: resolved "https://registry.yarnpkg.com/isobject/-/isobject-3.0.1.tgz#4e431e92b11a9731636aa1f9c8d1ccbcfdab78df" integrity sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg== -iterator.prototype@^1.1.3: - version "1.1.4" - resolved "https://registry.yarnpkg.com/iterator.prototype/-/iterator.prototype-1.1.4.tgz#4ae6cf98b97fdc717b7e159d79dc25f8fc9482f1" - integrity sha512-x4WH0BWmrMmg4oHHl+duwubhrvczGlyuGAZu3nvrf0UXOfPu8IhZObFEr7DE/iv01YgVZrsOiRcqw2srkKEDIA== +iterator.prototype@^1.1.4: + version "1.1.5" + resolved "https://registry.yarnpkg.com/iterator.prototype/-/iterator.prototype-1.1.5.tgz#12c959a29de32de0aa3bbbb801f4d777066dae39" + integrity sha512-H0dkQoCa3b2VEeKQBOxFph+JAbcrQdE7KC0UkqwpLmv2EC4P41QXP+rqo9wYodACiG5/WM5s9oDApTU8utwj9g== dependencies: define-data-property "^1.1.4" es-object-atoms "^1.0.0" get-intrinsic "^1.2.6" + get-proto "^1.0.0" has-symbols "^1.1.0" - reflect.getprototypeof "^1.0.8" set-function-name "^2.0.2" jackspeak@^3.1.2: @@ -7716,6 +7804,13 @@ jackspeak@^3.1.2: optionalDependencies: "@pkgjs/parseargs" "^0.11.0" +jackspeak@^4.1.1: + version "4.1.1" + resolved "https://registry.yarnpkg.com/jackspeak/-/jackspeak-4.1.1.tgz#96876030f450502047fc7e8c7fcf8ce8124e43ae" + integrity sha512-zptv57P3GpL+O0I7VdMJNBZCu+BPHVQUk55Ft8/QCJjTVxrnJHuVuX/0Bl2A6/+2oyR/ZMEuFKwmzqqZ/U5nPQ== + dependencies: + "@isaacs/cliui" "^8.0.2" + javascript-stringify@^2.0.1: version "2.1.0" resolved "https://registry.yarnpkg.com/javascript-stringify/-/javascript-stringify-2.1.0.tgz#27c76539be14d8bd128219a2d731b09337904e79" @@ -8141,6 +8236,11 @@ lru-cache@^10.2.0: resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-10.4.3.tgz#410fc8a17b70e598013df257c2446b7f3383f119" integrity sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ== +lru-cache@^11.0.0: + version "11.1.0" + resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-11.1.0.tgz#afafb060607108132dbc1cf8ae661afb69486117" + integrity sha512-QIXZUBJUx+2zHUdQujWejBkcD9+cs94tLn0+YL8UrCh+D5sCXZ4c7LaEH48pNwRY3MLDgqUFyhlCyjJPf1WP0A== + lru-cache@^5.1.1: version "5.1.1" resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-5.1.1.tgz#1da27e6710271947695daf6848e847f01d84b920" @@ -8189,10 +8289,10 @@ markdown-table@^3.0.0: resolved "https://registry.yarnpkg.com/markdown-table/-/markdown-table-3.0.4.tgz#fe44d6d410ff9d6f2ea1797a3f60aa4d2b631c2a" integrity sha512-wiYz4+JrLyb/DqW2hkFJxP7Vd7JuTDm77fvbM8VfEQdmSMqcImWeeRbHwZjBjIFki/VaMK2BhFi7oUUZeM5bqw== -math-intrinsics@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/math-intrinsics/-/math-intrinsics-1.0.0.tgz#4e04bf87c85aa51e90d078dac2252b4eb5260817" - integrity sha512-4MqMiKP90ybymYvsut0CH2g4XWbfLtmlCkXmtmdcDCxNB+mQcu1w/1+L/VD7vi/PSv7X2JYV7SCcR+jiPXnQtA== +math-intrinsics@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/math-intrinsics/-/math-intrinsics-1.1.0.tgz#a0dd74be81e2aa5c2f27e65ce283605ee4e2b7f9" + integrity sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g== mdast-util-definitions@^4.0.0: version "4.0.0" @@ -8268,9 +8368,9 @@ mdast-util-gfm-autolink-literal@^2.0.0: micromark-util-character "^2.0.0" mdast-util-gfm-footnote@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/mdast-util-gfm-footnote/-/mdast-util-gfm-footnote-2.0.0.tgz#25a1753c7d16db8bfd53cd84fe50562bd1e6d6a9" - integrity sha512-5jOT2boTSVkMnQ7LTrd6n/18kqwjmuYqo7JUPe+tRCY6O7dAuTFMtTPauYYrMPpox9hlN0uOx/FL8XvEfG9/mQ== + version "2.1.0" + resolved "https://registry.yarnpkg.com/mdast-util-gfm-footnote/-/mdast-util-gfm-footnote-2.1.0.tgz#7778e9d9ca3df7238cc2bd3fa2b1bf6a65b19403" + integrity sha512-sqpDWlsHn7Ac9GNZQMeUzPQSMzR6Wv0WKRNvQRg0KqHh02fpTz69Qc1QSseNX29bhz1ROIyNyxExfawVKTm1GQ== dependencies: "@types/mdast" "^4.0.0" devlop "^1.1.0" @@ -8309,9 +8409,9 @@ mdast-util-gfm-task-list-item@^2.0.0: mdast-util-to-markdown "^2.0.0" mdast-util-gfm@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/mdast-util-gfm/-/mdast-util-gfm-3.0.0.tgz#3f2aecc879785c3cb6a81ff3a243dc11eca61095" - integrity sha512-dgQEX5Amaq+DuUqf26jJqSK9qgixgd6rYDHAv4aTBuA92cTknZlKpPfa86Z/s8Dj8xsAQpFfBmPUHWJBWqS4Bw== + version "3.1.0" + resolved "https://registry.yarnpkg.com/mdast-util-gfm/-/mdast-util-gfm-3.1.0.tgz#2cdf63b92c2a331406b0fb0db4c077c1b0331751" + integrity sha512-0ulfdQOM3ysHhCJ1p06l0b0VKlhU0wuQs3thxZQagjcjPrlFRqY215uZGHHJan9GEAXd9MbfPjFJz+qMkVR6zQ== dependencies: mdast-util-from-markdown "^2.0.0" mdast-util-gfm-autolink-literal "^2.0.0" @@ -8363,9 +8463,9 @@ mdast-util-mdx-jsx@^2.0.0: vfile-message "^3.0.0" mdast-util-mdx-jsx@^3.0.0: - version "3.1.3" - resolved "https://registry.yarnpkg.com/mdast-util-mdx-jsx/-/mdast-util-mdx-jsx-3.1.3.tgz#76b957b3da18ebcfd0de3a9b4451dcd6fdec2320" - integrity sha512-bfOjvNt+1AcbPLTFMFWY149nJz0OjmewJs3LQQ5pIyVGxP4CdOqNVJL6kTaM5c68p8q82Xv3nCyFfUnuEcH3UQ== + version "3.2.0" + resolved "https://registry.yarnpkg.com/mdast-util-mdx-jsx/-/mdast-util-mdx-jsx-3.2.0.tgz#fd04c67a2a7499efb905a8a5c578dddc9fdada0d" + integrity sha512-lj/z8v0r6ZtsN/cGNNtemmmfoLAFZnjMbNyLzBafjzikOM+glrjNHPlf6lQDOTccj9n5b0PPihEBbhneMyGs1Q== dependencies: "@types/estree-jsx" "^1.0.0" "@types/hast" "^3.0.0" @@ -8623,9 +8723,9 @@ micromark-core-commonmark@^1.0.0, micromark-core-commonmark@^1.0.1: uvu "^0.5.0" micromark-core-commonmark@^2.0.0: - version "2.0.2" - resolved "https://registry.yarnpkg.com/micromark-core-commonmark/-/micromark-core-commonmark-2.0.2.tgz#6a45bbb139e126b3f8b361a10711ccc7c6e15e93" - integrity sha512-FKjQKbxd1cibWMM1P9N+H8TwlgGgSkWZMmfuVucLCHaYqeSvJ0hFeHsIa65pA2nYbes0f8LDHPMrd9X7Ujxg9w== + version "2.0.3" + resolved "https://registry.yarnpkg.com/micromark-core-commonmark/-/micromark-core-commonmark-2.0.3.tgz#c691630e485021a68cf28dbc2b2ca27ebf678cd4" + integrity sha512-RDBrHEMSxVFLg6xvnXmb1Ayr2WzLAWjeSATAoxwKYJV94TeNavgoIdA0a9ytzDSVzBy2YKFK+emCPOEibLeCrg== dependencies: decode-named-character-reference "^1.0.0" devlop "^1.0.0" @@ -9086,9 +9186,9 @@ micromark-util-subtokenize@^1.0.0: uvu "^0.5.0" micromark-util-subtokenize@^2.0.0: - version "2.0.3" - resolved "https://registry.yarnpkg.com/micromark-util-subtokenize/-/micromark-util-subtokenize-2.0.3.tgz#70ffb99a454bd8c913c8b709c3dc97baefb65f96" - integrity sha512-VXJJuNxYWSoYL6AJ6OQECCFGhIU2GGHMw8tahogePBrjkG8aCCas3ibkp7RnVOSTClg2is05/R7maAhF1XyQMg== + version "2.1.0" + resolved "https://registry.yarnpkg.com/micromark-util-subtokenize/-/micromark-util-subtokenize-2.1.0.tgz#d8ade5ba0f3197a1cf6a2999fbbfe6357a1a19ee" + integrity sha512-XQLu552iSctvnEcgXw6+Sx75GflAPNED1qx7eBJ+wydBb2KCbRZe+NwvIEEMM83uml1+2WSXpBAcp9IUCgCYWA== dependencies: devlop "^1.0.0" micromark-util-chunked "^2.0.0" @@ -9111,9 +9211,9 @@ micromark-util-types@^1.0.0, micromark-util-types@^1.0.1: integrity sha512-ukRBgie8TIAcacscVHSiddHjO4k/q3pnedmzMQ4iwDcK0FtFCohKOlFbaOL/mPgfnPsL3C1ZyxJa4sbWrBl3jg== micromark-util-types@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/micromark-util-types/-/micromark-util-types-2.0.1.tgz#a3edfda3022c6c6b55bfb049ef5b75d70af50709" - integrity sha512-534m2WhVTddrcKVepwmVEVnUAmtrx9bfIjNoQHRqfnvdaHQiFytEhJoTgpWJvDEXCO5gLTQh3wYC1PgOJA4NSQ== + version "2.0.2" + resolved "https://registry.yarnpkg.com/micromark-util-types/-/micromark-util-types-2.0.2.tgz#f00225f5f5a0ebc3254f96c36b6605c4b393908e" + integrity sha512-Yw0ECSpJoViF1qTU4DC6NwtC4aWGt1EkzaQB8KPPyCRR8z9TWeV0HbEFGTO+ZY1wB22zmxnJqhPyTpOVCpeHTA== micromark@^3.0.0: version "3.2.0" @@ -9139,9 +9239,9 @@ micromark@^3.0.0: uvu "^0.5.0" micromark@^4.0.0: - version "4.0.1" - resolved "https://registry.yarnpkg.com/micromark/-/micromark-4.0.1.tgz#294c2f12364759e5f9e925a767ae3dfde72223ff" - integrity sha512-eBPdkcoCNvYcxQOAKAlceo5SNdzZWfF+FcSupREAzdAh9rRmE239CEQAiTwIgblwnoM8zzj35sZ5ZwvSEOF6Kw== + version "4.0.2" + resolved "https://registry.yarnpkg.com/micromark/-/micromark-4.0.2.tgz#91395a3e1884a198e62116e33c9c568e39936fdb" + integrity sha512-zpe98Q6kvavpCr1NPVSCMebCKfD7CA2NqZ+rykeNhONIJBpc1tFKt9hucLGwha3jNTNI8lHpctWJWoimVF4PfA== dependencies: "@types/debug" "^4.0.0" debug "^4.0.0" @@ -9161,7 +9261,7 @@ micromark@^4.0.0: micromark-util-symbol "^2.0.0" micromark-util-types "^2.0.0" -micromatch@^4.0.4, micromatch@^4.0.5, micromatch@^4.0.8: +micromatch@^4.0.5, micromatch@^4.0.8: version "4.0.8" resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-4.0.8.tgz#d66fa18f3a47076789320b9b1af32bd86d9fa202" integrity sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA== @@ -9175,9 +9275,9 @@ mime-db@1.52.0: integrity sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg== "mime-db@>= 1.43.0 < 2": - version "1.53.0" - resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.53.0.tgz#3cb63cd820fc29896d9d4e8c32ab4fcd74ccb447" - integrity sha512-oHlN/w+3MQ3rba9rqFr6V/ypF10LSkdwUysQL7GkXoTgIWeV+tcXGA852TBxH+gsh8UWoyhR1hKcoMJTuWflpg== + version "1.54.0" + resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.54.0.tgz#cddb3ee4f9c64530dff640236661d42cb6a314f5" + integrity sha512-aU5EJuIN2WDemCcAp2vFBfp/m4EAhWJnUNSSw0ixs7/kXbd6Pg64EmwJkNdFhB8aWt1sH2CTXrLxo/iAGV3oPQ== mime-types@^2.1.12, mime-types@^2.1.27, mime-types@^2.1.31, mime-types@~2.1.24, mime-types@~2.1.34: version "2.1.35" @@ -9230,6 +9330,13 @@ mini-css-extract-plugin@1.6.2: schema-utils "^3.0.0" webpack-sources "^1.1.0" +minimatch@*, minimatch@^10.0.3: + version "10.0.3" + resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-10.0.3.tgz#cf7a0314a16c4d9ab73a7730a0e8e3c3502d47aa" + integrity sha512-IPZ167aShDZZUMdRk66cyQAW3qr0WzbHkPdMYa8bzZhlHhO3jALbKdxcaak7W9FfT2rZNpQuUu4Od7ILEpXSaw== + dependencies: + "@isaacs/brace-expansion" "^5.0.0" + minimatch@^3.0.4, minimatch@^3.0.5, minimatch@^3.1.1, minimatch@^3.1.2: version "3.1.2" resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.1.2.tgz#19cd194bfd3e428f049a70817c038d89ab4be35b" @@ -9264,7 +9371,7 @@ mkdirp-classic@^0.5.2, mkdirp-classic@^0.5.3: resolved "https://registry.yarnpkg.com/mkdirp-classic/-/mkdirp-classic-0.5.3.tgz#fa10c9115cc6d8865be221ba47ee9bed78601113" integrity sha512-gKLcREMhtuZRwRAfqP3RFW+TK4JqApVBtOIftVgjuABpAtpxhPGaDcfvbhNvD0B8iD1oUr/txX35NjcaY6Ns/A== -mkdirp@^0.5.1, mkdirp@^0.5.4: +mkdirp@^0.5.1, mkdirp@^0.5.6: version "0.5.6" resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.6.tgz#7def03d2432dcae4ba1d611445c48396062255f6" integrity sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw== @@ -9306,24 +9413,24 @@ msgpackr-extract@^3.0.2: "@msgpackr-extract/msgpackr-extract-win32-x64" "3.0.3" msgpackr@^1.5.4: - version "1.11.2" - resolved "https://registry.yarnpkg.com/msgpackr/-/msgpackr-1.11.2.tgz#4463b7f7d68f2e24865c395664973562ad24473d" - integrity sha512-F9UngXRlPyWCDEASDpTf6c9uNhGPTqnTeLVt7bN+bU1eajoR/8V9ys2BRaV5C/e5ihE6sJ9uPIKaYt6bFuO32g== + version "1.11.5" + resolved "https://registry.yarnpkg.com/msgpackr/-/msgpackr-1.11.5.tgz#edf0b9d9cb7d8ed6897dd0e42cfb865a2f4b602e" + integrity sha512-UjkUHN0yqp9RWKy0Lplhh+wlpdt9oQBYgULZOiFhV3VclSF1JnSQWZ5r9gORQlNYaUKQoR8itv7g7z1xDDuACA== optionalDependencies: msgpackr-extract "^3.0.2" -multer@^1.4.5-lts.1: - version "1.4.5-lts.1" - resolved "https://registry.yarnpkg.com/multer/-/multer-1.4.5-lts.1.tgz#803e24ad1984f58edffbc79f56e305aec5cfd1ac" - integrity sha512-ywPWvcDMeH+z9gQq5qYHCCy+ethsk4goepZ45GLD63fOu0YcNecQxi64nDs3qluZB+murG3/D4dJ7+dGctcCQQ== +multer@^2.0.1: + version "2.0.2" + resolved "https://registry.yarnpkg.com/multer/-/multer-2.0.2.tgz#08a8aa8255865388c387aaf041426b0c87bf58dd" + integrity sha512-u7f2xaZ/UG8oLXHvtF/oWTRvT44p9ecwBBqTwgJVq0+4BW1g8OW01TyMEGWBHbyMOYVHXslaut7qEQ1meATXgw== dependencies: append-field "^1.0.0" - busboy "^1.0.0" - concat-stream "^1.5.2" - mkdirp "^0.5.4" + busboy "^1.6.0" + concat-stream "^2.0.0" + mkdirp "^0.5.6" object-assign "^4.1.1" - type-is "^1.6.4" - xtend "^4.0.0" + type-is "^1.6.18" + xtend "^4.0.2" mute-stream@0.0.8, mute-stream@~0.0.4: version "0.0.8" @@ -9339,15 +9446,15 @@ mz@^2.7.0: object-assign "^4.0.1" thenify-all "^1.0.0" -nanoid@^3.3.7: - version "3.3.8" - resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-3.3.8.tgz#b1be3030bee36aaff18bacb375e5cce521684baf" - integrity sha512-WNLf5Sd8oZxOm+TzppcYk8gVOgP+l58xNy58D0nbUnOxOWRWvlcCV4kUF7ltmI6PsrLl/BgKEyS4mqsGChFN0w== +nanoid@^3.3.11: + version "3.3.11" + resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-3.3.11.tgz#4f4f112cefbe303202f2199838128936266d185b" + integrity sha512-N8SpfPUnUp1bK+PMYW8qSWdl9U+wwNWI4QKxOYDy9JAro3WMX7p2OeVRF9v+347pnakNevPmiHhNmZ2HbFA76w== -napi-build-utils@^1.0.1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/napi-build-utils/-/napi-build-utils-1.0.2.tgz#b1fddc0b2c46e380a0b7a76f984dd47c41a13806" - integrity sha512-ONmRUqK7zj7DWX0D9ADe03wbwOBZxNAfF20PlGfCWQcD3+/MakShIHrMqx9YwPTfxDdF1zLeL+RGZiR9kGMLdg== +napi-build-utils@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/napi-build-utils/-/napi-build-utils-2.0.0.tgz#13c22c0187fcfccce1461844136372a47ddc027e" + integrity sha512-GEbrYkbfF7MoNaoh2iGG84Mnf/WZfB0GdGEsM8wz7Expx/LlWf5U8t9nvJKXSp3qr5IsEbK04cBGhol/KwOsWA== natural-compare-lite@^1.4.0: version "1.4.0" @@ -9397,9 +9504,9 @@ no-case@^3.0.4: tslib "^2.0.3" node-abi@^3.3.0: - version "3.71.0" - resolved "https://registry.yarnpkg.com/node-abi/-/node-abi-3.71.0.tgz#52d84bbcd8575efb71468fbaa1f9a49b2c242038" - integrity sha512-SZ40vRiy/+wRTf21hxkkEjPJZpARzUMVcJoQse2EF8qkUWbbO2z7vd5oA/H6bVH6SZQ5STGcu0KRDS7biNRfxw== + version "3.75.0" + resolved "https://registry.yarnpkg.com/node-abi/-/node-abi-3.75.0.tgz#2f929a91a90a0d02b325c43731314802357ed764" + integrity sha512-OhYaY5sDsIka7H7AtijtI9jwGYLyl29eQn/W623DiN/MIv5sUqc4g7BIDThX+gb7di9f6xK02nkp8sdfFWZLTg== dependencies: semver "^7.3.5" @@ -9418,7 +9525,7 @@ node-addon-api@^7.0.0: resolved "https://registry.yarnpkg.com/node-addon-api/-/node-addon-api-7.1.1.tgz#1aba6693b0f255258a049d621329329322aad558" integrity sha512-5m3bsyrjFWE1xf7nz7YXdN4udnVtXK6/Yfgn5qnahL6bCkf2yKt4k3nuTKAtT4r3IG8JNR2ncsIMdZuAzJjHQQ== -node-fetch@^2.6.11, node-fetch@^2.6.12: +node-fetch@^2.6.11, node-fetch@^2.7.0: version "2.7.0" resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-2.7.0.tgz#d0f0fa6e3e2dc1d27efcd8ad99d550bda94d187d" integrity sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A== @@ -9483,9 +9590,9 @@ normalize-url@^6.0.1: integrity sha512-DlL+XwOy3NxAQ8xuC0okPgK46iuVNAK01YN7RueYBqqFeGsBjV9XmCAzAdgt+667bCl5kPh9EqKKDwnaPG1I7A== normalize-url@^8.0.0: - version "8.0.1" - resolved "https://registry.yarnpkg.com/normalize-url/-/normalize-url-8.0.1.tgz#9b7d96af9836577c58f5883e939365fa15623a4a" - integrity sha512-IO9QvjUMWxPQQhs60oOu10CRkWCiZzSUkzbXGGV9pviYl1fXYcvkzQ5jV9z8Y6un8ARoVRl4EtC6v6jNqbaJ/w== + version "8.0.2" + resolved "https://registry.yarnpkg.com/normalize-url/-/normalize-url-8.0.2.tgz#3b343a42f837e4dae2b01917c04e8de3782e9170" + integrity sha512-Ee/R3SyN4BuynXcnTaekmaVdbDAEiNrHqjQIA37mHU8G9pf7aaAD4ZX3XjBLo6rsdcxA/gtkcNYZLt30ACgynw== not@^0.1.0: version "0.1.0" @@ -9536,17 +9643,17 @@ object-hash@^3.0.0: resolved "https://registry.yarnpkg.com/object-hash/-/object-hash-3.0.0.tgz#73f97f753e7baffc0e2cc9d6e079079744ac82e9" integrity sha512-RSn9F68PjH9HqtltsSnqYC1XXoWe9Bju5+213R98cNGttag9q9yAOTzdbsqvIa7aNm5WffBZFpWYr2aWrklWAw== -object-inspect@^1.13.3: - version "1.13.3" - resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.13.3.tgz#f14c183de51130243d6d18ae149375ff50ea488a" - integrity sha512-kDCGIbxkDSXE3euJZZXzc6to7fCrKHNI/hSRQnRuQ+BWjFNzZwiFF8fj/6o2t2G9/jTj8PSIYTfCLelLZEeRpA== +object-inspect@^1.13.3, object-inspect@^1.13.4: + version "1.13.4" + resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.13.4.tgz#8375265e21bc20d0fa582c22e1b13485d6e00213" + integrity sha512-W67iLl4J2EXEGTbfeHCffrjDfitvLANg0UlX3wFUUSTx92KXRFegMHUVgSqE+wvhAbi4WqjGg9czysTV2Epbew== object-keys@^1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/object-keys/-/object-keys-1.1.1.tgz#1c47f272df277f3b1daf061677d9c82e2322c60e" integrity sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA== -object.assign@^4.1.0, object.assign@^4.1.4, object.assign@^4.1.5: +object.assign@^4.1.0, object.assign@^4.1.4, object.assign@^4.1.7: version "4.1.7" resolved "https://registry.yarnpkg.com/object.assign/-/object.assign-4.1.7.tgz#8c14ca1a424c6a561b0bb2a22f66f5049a945d3d" integrity sha512-nK28WOo+QIjBkDduTINE4JkF/UJJKyf2EJxvJKfblDpyg0Q+pkOHNTL0Qwy6NP6FhE/EnzV73BxxqcJaXY9anw== @@ -9558,14 +9665,15 @@ object.assign@^4.1.0, object.assign@^4.1.4, object.assign@^4.1.5: has-symbols "^1.1.0" object-keys "^1.1.1" -object.entries@^1.1.8: - version "1.1.8" - resolved "https://registry.yarnpkg.com/object.entries/-/object.entries-1.1.8.tgz#bffe6f282e01f4d17807204a24f8edd823599c41" - integrity sha512-cmopxi8VwRIAw/fkijJohSfpef5PdN0pMQJN6VC/ZKvn0LIknWD8KtgY6KlQdEc4tIjcQ3HxSMmnvtzIscdaYQ== +object.entries@^1.1.9: + version "1.1.9" + resolved "https://registry.yarnpkg.com/object.entries/-/object.entries-1.1.9.tgz#e4770a6a1444afb61bd39f984018b5bede25f8b3" + integrity sha512-8u/hfXFRBD1O0hPUjioLhoWFHRmt6tKA4/vZPyckBr18l1KE9uHrFaFaUi8MDRTpi4uak2goyPTSNJLXX2k2Hw== dependencies: - call-bind "^1.0.7" + call-bind "^1.0.8" + call-bound "^1.0.4" define-properties "^1.2.1" - es-object-atoms "^1.0.0" + es-object-atoms "^1.1.1" object.fromentries@^2.0.8: version "2.0.8" @@ -9586,12 +9694,13 @@ object.groupby@^1.0.3: define-properties "^1.2.1" es-abstract "^1.23.2" -object.values@^1.1.6, object.values@^1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/object.values/-/object.values-1.2.0.tgz#65405a9d92cee68ac2d303002e0b8470a4d9ab1b" - integrity sha512-yBYjY9QX2hnRmZHAjG/f13MzmBzxzYgQhFrke06TTyKY5zSTEqkOeukBzIdVA3j3ulu8Qa3MbVFShV7T2RmGtQ== +object.values@^1.1.6, object.values@^1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/object.values/-/object.values-1.2.1.tgz#deed520a50809ff7f75a7cfd4bc64c7a038c6216" + integrity sha512-gXah6aZrcUxjWg2zR2MwouP2eHlCBzdV4pygudehaKXSGW4v2AsRQUK+lwwXhii6KFZcunEnmSUoYp5CXibxtA== dependencies: - call-bind "^1.0.7" + call-bind "^1.0.8" + call-bound "^1.0.3" define-properties "^1.2.1" es-object-atoms "^1.0.0" @@ -9607,10 +9716,10 @@ on-finished@2.4.1: dependencies: ee-first "1.1.1" -on-headers@~1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/on-headers/-/on-headers-1.0.2.tgz#772b0ae6aaa525c399e489adfad90c403eb3c28f" - integrity sha512-pZAE+FJLoyITytdqK0U5s+FIpjN0JP3OzFi/u8Rx+EV5/W+JTWGXG8xFzevE7AjBfDqHv/8vL8qQsIhHnqRkrA== +on-headers@~1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/on-headers/-/on-headers-1.1.0.tgz#59da4f91c45f5f989c6e4bcedc5a3b0aed70ff65" + integrity sha512-737ZY3yNnXy37FHkQxPzt4UZ2UWPWiCZWLvFZ4fu5cueciegX0zGPnrlY6bwRg4FdQOe9YU8MkmJwGhoMybl8A== once@^1.3.0, once@^1.3.1, once@^1.4.0: version "1.4.0" @@ -9668,15 +9777,24 @@ optionator@^0.9.1: word-wrap "^1.2.5" ordered-binary@^1.2.4: - version "1.5.3" - resolved "https://registry.yarnpkg.com/ordered-binary/-/ordered-binary-1.5.3.tgz#8bee2aa7a82c3439caeb1e80c272fd4cf51170fb" - integrity sha512-oGFr3T+pYdTGJ+YFEILMpS3es+GiIbs9h/XQrclBXUtd44ey7XwfsMzM31f64I1SQOawDoDr/D823kNCADI8TA== + version "1.6.0" + resolved "https://registry.yarnpkg.com/ordered-binary/-/ordered-binary-1.6.0.tgz#9c490dadc0b1336ca6917d8d41dd474b8c0bff32" + integrity sha512-IQh2aMfMIDbPjI/8a3Edr+PiOpcsB7yo8NdW7aHWVaoR/pcDldunMvnnwbk/auPGqmKeAdxtZl7MHX/QmPwhvQ== os-tmpdir@~1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/os-tmpdir/-/os-tmpdir-1.0.2.tgz#bbe67406c79aa85c5cfec766fe5734555dfa1274" integrity sha512-D2FR03Vir7FIu45XBY20mTb+/ZSWB00sjU9jdQXt83gDrI4Ztz5Fs7/yy74g2N5SVQY4xY1qDr4rNddwYRVX0g== +own-keys@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/own-keys/-/own-keys-1.0.1.tgz#e4006910a2bf913585289676eebd6f390cf51358" + integrity sha512-qFOyK5PjiWZd+QQIh+1jhdb9LpxTF0qs7Pm8o5QHYZ0M3vKqSqzsZaEB6oWlxZ+q2sJBMI/Ktgd2N5ZwQoRHfg== + dependencies: + get-intrinsic "^1.2.6" + object-keys "^1.1.1" + safe-push-apply "^1.0.0" + p-cancelable@^2.0.0: version "2.1.1" resolved "https://registry.yarnpkg.com/p-cancelable/-/p-cancelable-2.1.1.tgz#aab7fbd416582fa32a3db49859c122487c5ed2cf" @@ -9885,6 +10003,14 @@ path-scurry@^1.11.1: lru-cache "^10.2.0" minipass "^5.0.0 || ^6.0.2 || ^7.0.0" +path-scurry@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/path-scurry/-/path-scurry-2.0.0.tgz#9f052289f23ad8bf9397a2a0425e7b8615c58580" + integrity sha512-ypGJsmGtdXUOeM5u93TyeIEfEhM6s+ljAhrk5vAvSx8uyY/02OvrZnA0YNGUrPXfpJMgI1ODd3nwz8Npx4O4cg== + dependencies: + lru-cache "^11.0.0" + minipass "^7.1.2" + path-to-regexp@0.1.10, path-to-regexp@0.1.12: version "0.1.12" resolved "https://registry.yarnpkg.com/path-to-regexp/-/path-to-regexp-0.1.12.tgz#d5e1a12e478a976d432ef3c58d534b9923164bb7" @@ -9914,7 +10040,7 @@ physical-cpu-count@^2.0.0: resolved "https://registry.yarnpkg.com/physical-cpu-count/-/physical-cpu-count-2.0.0.tgz#18de2f97e4bf7a9551ad7511942b5496f7aba660" integrity sha512-rxJOljMuWtYlvREBmd6TZYanfcPhNUKtGDZBjBBS8WG1dpN2iwPsRJZgQqN/OtJuiQckdRFOfzogqJClTrsi7g== -picocolors@^1.0.0, picocolors@^1.0.1, picocolors@^1.1.0, picocolors@^1.1.1: +picocolors@^1.0.0, picocolors@^1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/picocolors/-/picocolors-1.1.1.tgz#3d321af3eab939b083c8f929a1d12cda81c26b6b" integrity sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA== @@ -9930,9 +10056,9 @@ pify@^2.3.0: integrity sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog== pirates@^4.0.1: - version "4.0.6" - resolved "https://registry.yarnpkg.com/pirates/-/pirates-4.0.6.tgz#3018ae32ecfcff6c29ba2267cbf21166ac1f36b9" - integrity sha512-saLsH7WeYYPiD25LDuLRRY/i+6HaPYr6G1OUlN39otzkSTxKnubR9RTxS3/Kk50s1g2JTgFwWQDQyplC5/SHZg== + version "4.0.7" + resolved "https://registry.yarnpkg.com/pirates/-/pirates-4.0.7.tgz#643b4a18c4257c8a65104b73f3049ce9a0a15e22" + integrity sha512-TfySrs/5nm8fQJDcBDuUng3VOUKsd7S+zqvbOTiGXHfxX4wK31ard+hoNuvkicM/2YFzlpDgABOevKSsB4G/FA== pkg-dir@^4.1.0: version "4.2.0" @@ -9954,9 +10080,9 @@ platform@^1.3.6: integrity sha512-fnWVljUchTro6RiCFvCXBbNhJc2NijN7oIQxbwsyL0buWJPG85v81ehlHI9fXrJsMNgTofEoWIQeClKpgxFLrg== possible-typed-array-names@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/possible-typed-array-names/-/possible-typed-array-names-1.0.0.tgz#89bb63c6fada2c3e90adc4a647beeeb39cc7bf8f" - integrity sha512-d7Uw+eZoloe0EHDIYoe+bQ5WXnGMOpmiZFTuMWCwpjzzkL2nTjcKiAk4hh8TjnGye2TwWOk3UXucZ+3rbmBa8Q== + version "1.1.0" + resolved "https://registry.yarnpkg.com/possible-typed-array-names/-/possible-typed-array-names-1.1.0.tgz#93e3582bc0e5426586d9d07b79ee40fc841de4ae" + integrity sha512-/+5VFTchJDoVj3bhoqi6UeymcD00DAwb1nJwamzPvHEszJ4FpF6SNNbUbOS8yI56qHzdV8eK0qEfOSiodkTdxg== postcss-calc@^8.2.3: version "8.2.4" @@ -10239,9 +10365,9 @@ postcss-selector-parser@^6.0.4, postcss-selector-parser@^6.0.5, postcss-selector util-deprecate "^1.0.2" postcss-selector-parser@^7.0.0: - version "7.0.0" - resolved "https://registry.yarnpkg.com/postcss-selector-parser/-/postcss-selector-parser-7.0.0.tgz#41bd8b56f177c093ca49435f65731befe25d6b9c" - integrity sha512-9RbEr1Y7FFfptd/1eEdntyjMwLeghW1bHX9GWjXo19vx4ytPQhANltvVxDggzJl7mnWM+dX28kb6cyS/4iQjlQ== + version "7.1.0" + resolved "https://registry.yarnpkg.com/postcss-selector-parser/-/postcss-selector-parser-7.1.0.tgz#4d6af97eba65d73bc4d84bcb343e865d7dd16262" + integrity sha512-8sLjZwK0R+JlxlYcTuVnyT2v+htpdrjDOKuMcOVdYjt52Lh8hWRYpxBPoKx/Zg+bcjc3wx6fmQevMmUztS/ccA== dependencies: cssesc "^3.0.0" util-deprecate "^1.0.2" @@ -10267,25 +10393,25 @@ postcss-value-parser@^4.0.0, postcss-value-parser@^4.1.0, postcss-value-parser@^ integrity sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ== postcss@^8.2.15, postcss@^8.2.9, postcss@^8.4.24, postcss@^8.4.47, postcss@^8.4.49: - version "8.4.49" - resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.4.49.tgz#4ea479048ab059ab3ae61d082190fabfd994fe19" - integrity sha512-OCVPnIObs4N29kxTjzLfUryOkvZEq+pf8jTF0lg8E7uETuWHA+v7j3c/xJmiqpX450191LlmZfUKkXxkTry7nA== + version "8.5.6" + resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.5.6.tgz#2825006615a619b4f62a9e7426cc120b349a8f3c" + integrity sha512-3Ybi1tAuwAP9s0r1UQ2J4n5Y0G05bJkpUIO0/bI9MhwmD70S5aTWbXGBwxHrelT+XM1k6dM0pk+SwNkpTRN7Pg== dependencies: - nanoid "^3.3.7" + nanoid "^3.3.11" picocolors "^1.1.1" source-map-js "^1.2.1" prebuild-install@^7.1.1: - version "7.1.2" - resolved "https://registry.yarnpkg.com/prebuild-install/-/prebuild-install-7.1.2.tgz#a5fd9986f5a6251fbc47e1e5c65de71e68c0a056" - integrity sha512-UnNke3IQb6sgarcZIDU3gbMeTp/9SSU1DAIkil7PrqG1vZlBtY5msYccSKSHDqa3hNg436IXK+SNImReuA1wEQ== + version "7.1.3" + resolved "https://registry.yarnpkg.com/prebuild-install/-/prebuild-install-7.1.3.tgz#d630abad2b147443f20a212917beae68b8092eec" + integrity sha512-8Mf2cbV7x1cXPUILADGI3wuhfqWvtiLA1iclTDbFRZkgRQS0NqsPZphna9V+HyTEadheuPmjaJMsbzKQFOzLug== dependencies: detect-libc "^2.0.0" expand-template "^2.0.3" github-from-package "0.0.0" minimist "^1.2.3" mkdirp-classic "^0.5.3" - napi-build-utils "^1.0.1" + napi-build-utils "^2.0.0" node-abi "^3.3.0" pump "^3.0.0" rc "^1.2.7" @@ -10325,10 +10451,10 @@ probe-image-size@^7.2.3: needle "^2.5.2" stream-parser "~0.3.1" -process-nextick-args@~2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-2.0.1.tgz#7820d9b16120cc55ca9ae7792680ae7dba6d7fe2" - integrity sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag== +process@^0.11.10: + version "0.11.10" + resolved "https://registry.yarnpkg.com/process/-/process-0.11.10.tgz#7332300e840161bda3e69a1d1d91a7d4bc16f182" + integrity sha512-cdGef/drWFoydD1JsMzuFf8100nZl+GT+yacc2bEced5f9Rjk4z+WtFUTBu9PhOi9j/jfmBPu0mMEY4wIdAF8A== progress@^2.0.0, progress@^2.0.3: version "2.0.3" @@ -10380,6 +10506,11 @@ property-information@^6.0.0: resolved "https://registry.yarnpkg.com/property-information/-/property-information-6.5.0.tgz#6212fbb52ba757e92ef4fb9d657563b933b7ffec" integrity sha512-PgTgs/BlvHxOu8QuEN7wi5A0OmXaBcHpmCSTehcs6Uuu9IkDIEo13Hy7n898RHfrQ49vKCoGeWZSaAK01nwVig== +property-information@^7.0.0: + version "7.1.0" + resolved "https://registry.yarnpkg.com/property-information/-/property-information-7.1.0.tgz#b622e8646e02b580205415586b40804d3e8bfd5d" + integrity sha512-TwEZ+X+yCJmYfL7TPUOcvBZ4QfoT5YenQiJuX//0th53DE6w0xxLEtfK3iyryQFddXuvkIk51EEgrJQ0WJkOmQ== + proto-list@~1.2.1: version "1.2.4" resolved "https://registry.yarnpkg.com/proto-list/-/proto-list-1.2.4.tgz#212d5bfe1318306a420f6402b8e26ff39647a849" @@ -10404,9 +10535,9 @@ pseudomap@^1.0.1: integrity sha512-b/YwNhb8lk1Zz2+bXXpS/LK9OisiZZ1SNsSLxN1x2OXVEhW2Ckr/7mWE5vrC1ZTiJlD9g19jWszTmJsB+oEpFQ== pump@^3.0.0: - version "3.0.2" - resolved "https://registry.yarnpkg.com/pump/-/pump-3.0.2.tgz#836f3edd6bc2ee599256c924ffe0d88573ddcbf8" - integrity sha512-tUPXtzlGM8FE3P0ZL6DVs/3P58k9nk8/jZeQCurTJylQA8qFYzHFfhBJkuqyE0FifOsQ0uKWekiZ5g8wtr28cw== + version "3.0.3" + resolved "https://registry.yarnpkg.com/pump/-/pump-3.0.3.tgz#151d979f1a29668dc0025ec589a455b53282268d" + integrity sha512-todwxLMY7/heScKmntwQG8CXVkWUOdYxIvY2s0VWAAMh/nd8SoYiRaKjlr7+iCs984f2P8zvrfWcDDYVb73NfA== dependencies: end-of-stream "^1.1.0" once "^1.3.1" @@ -10734,10 +10865,10 @@ rc-switch@~4.1.0: classnames "^2.2.1" rc-util "^5.30.0" -rc-table@~7.51.0: - version "7.51.0" - resolved "https://registry.yarnpkg.com/rc-table/-/rc-table-7.51.0.tgz#9b729056e34dc1e0c9a2ecd6d8a17f2640896187" - integrity sha512-7ZlvW6lB0IDKaSFInD6OfJsCepSJJtfsQv2PZLtzEeZd/PLzQnKliXPaoZqkqDdLdJ3jxE2x4sane4DjxcAg+g== +rc-table@~7.51.1: + version "7.51.1" + resolved "https://registry.yarnpkg.com/rc-table/-/rc-table-7.51.1.tgz#cd69ae3262d3b61e4c93c979c12786906e944691" + integrity sha512-5iq15mTHhvC42TlBLRCoCBLoCmGlbRZAlyF21FonFnS/DIC8DeRqnmdyVREwt2CFbPceM0zSNdEeVfiGaqYsKw== dependencies: "@babel/runtime" "^7.10.1" "@rc-component/context" "^1.4.0" @@ -10759,10 +10890,10 @@ rc-tabs@~15.6.1: rc-resize-observer "^1.0.0" rc-util "^5.34.1" -rc-textarea@~1.10.0: - version "1.10.0" - resolved "https://registry.yarnpkg.com/rc-textarea/-/rc-textarea-1.10.0.tgz#f8f962ef83be0b8e35db97cf03dbfb86ddd9c46c" - integrity sha512-ai9IkanNuyBS4x6sOL8qu/Ld40e6cEs6pgk93R+XLYg0mDSjNBGey6/ZpDs5+gNLD7urQ14po3V6Ck2dJLt9SA== +rc-textarea@~1.10.0, rc-textarea@~1.10.1: + version "1.10.2" + resolved "https://registry.yarnpkg.com/rc-textarea/-/rc-textarea-1.10.2.tgz#459e3574a95c32939c6793045a1e4db04cb514cc" + integrity sha512-HfaeXiaSlpiSp0I/pvWpecFEHpVysZ9tpDLNkxQbMvMz6gsr7aVZ7FpWP9kt4t7DB+jJXesYS0us1uPZnlRnwQ== dependencies: "@babel/runtime" "^7.10.1" classnames "^2.2.1" @@ -10820,9 +10951,9 @@ rc-util@^5.0.1, rc-util@^5.16.1, rc-util@^5.17.0, rc-util@^5.18.1, rc-util@^5.2. react-is "^18.2.0" rc-virtual-list@^3.14.2, rc-virtual-list@^3.5.1, rc-virtual-list@^3.5.2: - version "3.18.6" - resolved "https://registry.yarnpkg.com/rc-virtual-list/-/rc-virtual-list-3.18.6.tgz#87898dbb22563b3c58ca7fffcc1c77e32044a824" - integrity sha512-TQ5SsutL3McvWmmxqQtMIbfeoE3dGjJrRSfKekgby7WQMpPIFvv4ghytp5Z0s3D8Nik9i9YNOCqHBfk86AwgAA== + version "3.19.1" + resolved "https://registry.yarnpkg.com/rc-virtual-list/-/rc-virtual-list-3.19.1.tgz#785b5f409b0bbbfa1eaadcc811971359c83dd9fb" + integrity sha512-DCapO2oyPqmooGhxBuXHM4lFuX+sshQwWqqkuyFA+4rShLe//+GEPVwiDgO+jKtKHtbeYwZoNvetwfHdOf+iUQ== dependencies: "@babel/runtime" "^7.20.0" classnames "^2.2.6" @@ -10878,9 +11009,17 @@ react-dom@^18.2.0: scheduler "^0.23.2" react-error-overlay@^6.0.11: - version "6.0.11" - resolved "https://registry.yarnpkg.com/react-error-overlay/-/react-error-overlay-6.0.11.tgz#92835de5841c5cf08ba00ddd2d677b6d17ff9adb" - integrity sha512-/6UZ2qgEyH2aqzYZgQPxEnz33NJ2gNsnHA2o5+o4wW9bLM/JYQitNP9xPhsXwC08hMMovfGe/8retsdDsczPRg== + version "6.1.0" + resolved "https://registry.yarnpkg.com/react-error-overlay/-/react-error-overlay-6.1.0.tgz#22b86256beb1c5856f08a9a228adb8121dd985f2" + integrity sha512-SN/U6Ytxf1QGkw/9ve5Y+NxBbZM6Ht95tuXNMKs8EJyFa/Vy/+Co3stop3KBHARfn/giv+Lj1uUnTfOJ3moFEQ== + +react-i18next@^15.6.0: + version "15.6.1" + resolved "https://registry.yarnpkg.com/react-i18next/-/react-i18next-15.6.1.tgz#a2747bed7768faef28fa28de32ff3811b2459c20" + integrity sha512-uGrzSsOUUe2sDBG/+FJq2J1MM+Y4368/QW8OLEKSFvnDflHBbZhSd1u3UkW0Z06rMhZmnB/AQrhCpYfE5/5XNg== + dependencies: + "@babel/runtime" "^7.27.6" + html-parse-stringify "^3.0.1" react-is@^16.13.1: version "16.13.1" @@ -10893,11 +11032,12 @@ react-is@^18.2.0: integrity sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg== react-markdown@^9.0.1: - version "9.0.1" - resolved "https://registry.yarnpkg.com/react-markdown/-/react-markdown-9.0.1.tgz#c05ddbff67fd3b3f839f8c648e6fb35d022397d1" - integrity sha512-186Gw/vF1uRkydbsOIkcGXw7aHq0sZOCRFFjGrr7b9+nVZg4UfA4enXCaxm4fUzecU38sWfrNDitGhshuU7rdg== + version "9.1.0" + resolved "https://registry.yarnpkg.com/react-markdown/-/react-markdown-9.1.0.tgz#606bd74c6af131ba382a7c1282ff506708ed2e26" + integrity sha512-xaijuJB0kzGiUdG7nc2MOMDUDBWPyGAjZtUrow9XxUeua8IqeP+VlIfAZ3bphpcLTnSZXz6z9jcVC/TCwbfgdw== dependencies: "@types/hast" "^3.0.0" + "@types/mdast" "^4.0.0" devlop "^1.0.0" hast-util-to-jsx-runtime "^2.0.0" html-url-attributes "^3.0.0" @@ -10943,12 +11083,12 @@ react-syntax-highlighter@^15.6.1: refractor "^3.6.0" react-vnc@^3.0.8: - version "3.0.8" - resolved "https://registry.yarnpkg.com/react-vnc/-/react-vnc-3.0.8.tgz#e9e657daa1e15f670a48b61065aed28f85410fac" - integrity sha512-8Yv3I3KCglgSMLSFsS7hNYSPj5VbYLI6I4wXp3ctwztZR/p6nh9OxavBvMmqR39kaBiliNR1FPNv48BS0BvrHw== + version "3.1.0" + resolved "https://registry.yarnpkg.com/react-vnc/-/react-vnc-3.1.0.tgz#6ccfc7696e303c6f8bbfecbd50e4a68ae4918a7d" + integrity sha512-yUihinDNYn6djq7x/ft1c+VWEIhgKKgMzUyCLrdYbmpyABEVBRTQEThGhF0+r8YAz6BJge8wRBC7CZC+pioG+w== dependencies: "@novnc/novnc" "^1.5.0" - "@types/novnc__novnc" "^1.5.0" + "@types/novnc__novnc" "^1.6.0" react-window@^1.8.11: version "1.8.11" @@ -10979,20 +11119,7 @@ read@^1.0.7: dependencies: mute-stream "~0.0.4" -readable-stream@^2.2.2: - version "2.3.8" - resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.3.8.tgz#91125e8042bba1b9887f49345f6277027ce8be9b" - integrity sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA== - 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" - -readable-stream@^3.1.1, readable-stream@^3.4.0, readable-stream@^3.6.0: +readable-stream@^3.0.2, readable-stream@^3.1.1, readable-stream@^3.4.0: version "3.6.2" resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-3.6.2.tgz#56a9b36ea965c00c5a93ef31eb111a0f11056967" integrity sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA== @@ -11001,12 +11128,23 @@ readable-stream@^3.1.1, readable-stream@^3.4.0, readable-stream@^3.6.0: string_decoder "^1.1.1" util-deprecate "^1.0.1" +readable-stream@^4.7.0: + version "4.7.0" + resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-4.7.0.tgz#cedbd8a1146c13dfff8dab14068028d58c15ac91" + integrity sha512-oIGGmcpTLwPga8Bn6/Z75SVaH1z5dUut2ibSyAMVhmUggWpmDn2dapB0n7f8nwaSiRtepAsfJyfXIO5DCVAODg== + dependencies: + abort-controller "^3.0.0" + buffer "^6.0.3" + events "^3.3.0" + process "^0.11.10" + string_decoder "^1.3.0" + readable-web-to-node-stream@^3.0.0: - version "3.0.2" - resolved "https://registry.yarnpkg.com/readable-web-to-node-stream/-/readable-web-to-node-stream-3.0.2.tgz#5d52bb5df7b54861fd48d015e93a2cb87b3ee0bb" - integrity sha512-ePeK6cc1EcKLEhJFt/AebMCLL+GgSKhuygrZ/GLaKZYEecIgIECf4UaUuaByiGtzckwR4ain9VzUh95T1exYGw== + version "3.0.4" + resolved "https://registry.yarnpkg.com/readable-web-to-node-stream/-/readable-web-to-node-stream-3.0.4.tgz#392ba37707af5bf62d725c36c1b5d6ef4119eefc" + integrity sha512-9nX56alTf5bwXQ3ZDipHJhusu9NTQJ/CVPtb/XHAJCXihZeitfJvIRS4GqQ/mfIoOE3IelHMrpayVrosdHBuLw== dependencies: - readable-stream "^3.6.0" + readable-stream "^4.7.0" readdirp@~3.6.0: version "3.6.0" @@ -11039,18 +11177,18 @@ redux@^5.0.1: resolved "https://registry.yarnpkg.com/redux/-/redux-5.0.1.tgz#97fa26881ce5746500125585d5642c77b6e9447b" integrity sha512-M9/ELqF6fy8FwmkpnF0S3YKOqMyoWJ4+CS5Efg2ct3oY9daQvd/Pc71FpGZsVsbl3Cpb+IIcjBDUnnyBdQbq4w== -reflect.getprototypeof@^1.0.6, reflect.getprototypeof@^1.0.8: - version "1.0.9" - resolved "https://registry.yarnpkg.com/reflect.getprototypeof/-/reflect.getprototypeof-1.0.9.tgz#c905f3386008de95a62315f3ea8630404be19e2f" - integrity sha512-r0Ay04Snci87djAsI4U+WNRcSw5S4pOH7qFjd/veA5gC7TbqESR3tcj28ia95L/fYUDw11JKP7uqUKUAfVvV5Q== +reflect.getprototypeof@^1.0.6, reflect.getprototypeof@^1.0.9: + version "1.0.10" + resolved "https://registry.yarnpkg.com/reflect.getprototypeof/-/reflect.getprototypeof-1.0.10.tgz#c629219e78a3316d8b604c765ef68996964e7bf9" + integrity sha512-00o4I+DVrefhv+nX0ulyi3biSHCPDe+yLv5o/p6d/UVlirijB8E16FtfwSAi4g3tcqrQ4lRAqQSoFEZJehYEcw== dependencies: call-bind "^1.0.8" define-properties "^1.2.1" - dunder-proto "^1.0.1" - es-abstract "^1.23.6" + es-abstract "^1.23.9" es-errors "^1.3.0" - get-intrinsic "^1.2.6" - gopd "^1.2.0" + es-object-atoms "^1.0.0" + get-intrinsic "^1.2.7" + get-proto "^1.0.1" which-builtin-type "^1.2.1" refractor@^3.6.0: @@ -11079,26 +11217,16 @@ regenerator-runtime@^0.13.7: resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.13.11.tgz#f6dca3e7ceec20590d07ada785636a90cdca17f9" integrity sha512-kY1AZVr2Ra+t+piVaJ4gxaFaReZVH40AKNo7UCX6W+dEwBo/2oZJzqfuN1qLq1oL45o56cPaTXELwrTh8Fpggg== -regenerator-runtime@^0.14.0: - version "0.14.1" - resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.14.1.tgz#356ade10263f685dda125100cd862c1db895327f" - integrity sha512-dYnhHh0nJoMfnkZs6GmmhFknAGRrLznOu5nc9ML+EJxGvrx6H7teuevqVqCuPcPK//3eDrrjQhehXVx9cnkGdw== - -regenerator-transform@^0.15.2: - version "0.15.2" - resolved "https://registry.yarnpkg.com/regenerator-transform/-/regenerator-transform-0.15.2.tgz#5bbae58b522098ebdf09bca2f83838929001c7a4" - integrity sha512-hfMp2BoF0qOk3uc5V20ALGDS2ddjQaLrdl7xrGXvAIow7qeWRM2VA2HuCHkUKk9slq3VwEwLNK3DFBqDfPGYtg== - dependencies: - "@babel/runtime" "^7.8.4" - -regexp.prototype.flags@^1.5.2, regexp.prototype.flags@^1.5.3: - version "1.5.3" - resolved "https://registry.yarnpkg.com/regexp.prototype.flags/-/regexp.prototype.flags-1.5.3.tgz#b3ae40b1d2499b8350ab2c3fe6ef3845d3a96f42" - integrity sha512-vqlC04+RQoFalODCbCumG2xIOvapzVMHwsyIGM/SIE8fRhFFsXeH8/QQ+s0T0kDAhKc4k30s73/0ydkHQz6HlQ== +regexp.prototype.flags@^1.5.3, regexp.prototype.flags@^1.5.4: + version "1.5.4" + resolved "https://registry.yarnpkg.com/regexp.prototype.flags/-/regexp.prototype.flags-1.5.4.tgz#1ad6c62d44a259007e55b3970e00f746efbcaa19" + integrity sha512-dYqgNSZbDwkaJ2ceRd9ojCGjBq+mOm9LmtXnAnEGyHhN/5R7iDW2TRw3h+o/jCFxus3P2LfWIIiwowAjANm7IA== dependencies: - call-bind "^1.0.7" + call-bind "^1.0.8" define-properties "^1.2.1" es-errors "^1.3.0" + get-proto "^1.0.1" + gopd "^1.2.0" set-function-name "^2.0.2" regexpp@^3.1.0: @@ -11119,9 +11247,9 @@ regexpu-core@^6.2.0: unicode-match-property-value-ecmascript "^2.1.0" registry-auth-token@^5.0.1: - version "5.0.3" - resolved "https://registry.yarnpkg.com/registry-auth-token/-/registry-auth-token-5.0.3.tgz#417d758c8164569de8cf5cabff16cc937902dcc6" - integrity sha512-1bpc9IyC+e+CNFRaWyn77tk4xGG4PPUyfakSmA6F6cvUDjrm58dfyJ3II+9yb10EDkHoy1LaPSmHaWLOH3m6HA== + version "5.1.0" + resolved "https://registry.yarnpkg.com/registry-auth-token/-/registry-auth-token-5.1.0.tgz#3c659047ecd4caebd25bc1570a3aa979ae490eca" + integrity sha512-GdekYuwLXLxMuFTwAPg5UKGLW/UXzQrZvH/Zj791BQif5T05T0RsaLfHc9q3ZOKi7n+BoprPD9mJ0O0k4xzUlw== dependencies: "@pnpm/npm-conf" "^2.1.0" @@ -11167,9 +11295,9 @@ relay-runtime@12.0.0: invariant "^2.2.4" remark-gfm@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/remark-gfm/-/remark-gfm-4.0.0.tgz#aea777f0744701aa288b67d28c43565c7e8c35de" - integrity sha512-U92vJgBPkbw4Zfu/IiW2oTZLSL3Zpv+uI7My2eq8JxKgqraFdU8YUGicEJCEgSbeaG+QDFqIcwwfMTOEelPxuA== + version "4.0.1" + resolved "https://registry.yarnpkg.com/remark-gfm/-/remark-gfm-4.0.1.tgz#33227b2a74397670d357bf05c098eaf8513f0d6b" + integrity sha512-1quofZ2RQ9EWdeN34S79+KExV1764+wCUGop5CPL1WGdD0ocPpu91lzPGbwWMECpEpd42kJGQwzRfyov9j4yNg== dependencies: "@types/mdast" "^4.0.0" mdast-util-gfm "^3.0.0" @@ -11216,9 +11344,9 @@ remark-rehype@^10.0.0: unified "^10.0.0" remark-rehype@^11.0.0: - version "11.1.1" - resolved "https://registry.yarnpkg.com/remark-rehype/-/remark-rehype-11.1.1.tgz#f864dd2947889a11997c0a2667cd6b38f685bca7" - integrity sha512-g/osARvjkBXb6Wo0XvAeXQohVta8i84ACbenPpoSsxTOQH/Ae0/RGP4WZgnMH5pMLpsj4FG7OHmcIcXxpza8eQ== + version "11.1.2" + resolved "https://registry.yarnpkg.com/remark-rehype/-/remark-rehype-11.1.2.tgz#2addaadda80ca9bd9aa0da763e74d16327683b37" + integrity sha512-Dh7l57ianaEoIpzbp0PC9UKAdCSVklD8E5Rpw7ETfbTl3FqcOOgq5q2LVDhgGCkaBv7p24JXikPdvhhmHvKMsw== dependencies: "@types/hast" "^3.0.0" "@types/mdast" "^4.0.0" @@ -11308,10 +11436,10 @@ resolve-from@^5.0.0: resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-5.0.0.tgz#c35225843df8f776df21c57557bc087e9dfdfc69" integrity sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw== -resolve@^1.1.7, resolve@^1.10.0, resolve@^1.14.2, resolve@^1.19.0, resolve@^1.22.4, resolve@^1.22.8: - version "1.22.9" - resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.22.9.tgz#6da76e4cdc57181fa4471231400e8851d0a924f3" - integrity sha512-QxrmX1DzraFIi9PxdG5VkRfRwIgjwyud+z/iBwfRRrVmHc+P9Q7u2lSSpQ6bjr2gy5lrqIiU9vb6iAeGf2400A== +resolve@^1.1.7, resolve@^1.10.0, resolve@^1.19.0, resolve@^1.22.10, resolve@^1.22.4, resolve@^1.22.8: + version "1.22.10" + resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.22.10.tgz#b663e83ffb09bbf2386944736baae803029b8b39" + integrity sha512-NPRy+/ncIMeDlTAsuqwKIiferiawhefFJtkNSW0qZJEqMEb+qBt/77B/jGeeek+F0uOeN05CDa6HXbbIgtVX4w== dependencies: is-core-module "^2.16.0" path-parse "^1.0.7" @@ -11354,9 +11482,9 @@ retry@^0.12.0: integrity sha512-9LkiTwjUh6rT555DtE9rTX+BKByPfrMzEAtnlEtdEwr3Nkffwiihqe2bWADg+OQRjt9gl6ICdmB/ZFDCGAtSow== reusify@^1.0.4: - version "1.0.4" - resolved "https://registry.yarnpkg.com/reusify/-/reusify-1.0.4.tgz#90da382b1e126efc02146e90845a88db12925d76" - integrity sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw== + version "1.1.0" + resolved "https://registry.yarnpkg.com/reusify/-/reusify-1.1.0.tgz#0fe13b9522e1473f51b558ee796e08f11f9b489f" + integrity sha512-g6QUff04oZpHs0eG5p83rFLhHeV00ug/Yf9nZM6fLeUrPguBTkTQOdpAWWspMh55TZfVQDPaN3NQJfbVRAxdIw== rimraf@^2.6.2: version "2.7.1" @@ -11398,7 +11526,7 @@ sade@^1.7.3: dependencies: mri "^1.1.0" -safe-array-concat@^1.1.2, safe-array-concat@^1.1.3: +safe-array-concat@^1.1.3: version "1.1.3" resolved "https://registry.yarnpkg.com/safe-array-concat/-/safe-array-concat-1.1.3.tgz#c9e54ec4f603b0bbb8e7e5007a5ee7aecd1538c3" integrity sha512-AURm5f0jYEOydBj7VQlVvDrjeFgthDdEF5H1dP+6mNpoXOMo1quQqJ4wvJDyRZ9+pO3kGWoOdmV08cSv2aJV6Q== @@ -11414,10 +11542,13 @@ safe-buffer@5.2.1, safe-buffer@^5.0.1, safe-buffer@^5.1.0, safe-buffer@~5.2.0: resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.2.1.tgz#1eaf9fa9bdb1fdd4ec75f58f9cdb4e6b7827eec6" integrity sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ== -safe-buffer@~5.1.0, safe-buffer@~5.1.1: - version "5.1.2" - resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.2.tgz#991ec69d296e0313747d59bdfd2b745c35f8828d" - integrity sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g== +safe-push-apply@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/safe-push-apply/-/safe-push-apply-1.0.0.tgz#01850e981c1602d398c85081f360e4e6d03d27f5" + integrity sha512-iKE9w/Z7xCzUMIZqdBsp6pEQvwuEebH4vdpjcDWnyzaI6yl6O9FHvVpmGelvEHNsoY6wGblkxR6Zty/h00WiSA== + dependencies: + es-errors "^1.3.0" + isarray "^2.0.5" safe-regex-test@^1.0.3, safe-regex-test@^1.1.0: version "1.1.0" @@ -11463,7 +11594,7 @@ schema-utils@^2.6.5: ajv "^6.12.4" ajv-keywords "^3.5.2" -schema-utils@^3.0.0, schema-utils@^3.1.1, schema-utils@^3.2.0: +schema-utils@^3.0.0, schema-utils@^3.1.1: version "3.3.0" resolved "https://registry.yarnpkg.com/schema-utils/-/schema-utils-3.3.0.tgz#f50a88877c3c01652a15b622ae9e9795df7a60fe" integrity sha512-pN/yOAvcC+5rQ5nERGuwrjLlYvLTbCibnZ1I7B1LaiAz9BRBlE9GMgE/eqV30P7aJQUf7Ddimy/RsbYO/GrVGg== @@ -11473,9 +11604,9 @@ schema-utils@^3.0.0, schema-utils@^3.1.1, schema-utils@^3.2.0: ajv-keywords "^3.5.2" schema-utils@^4.0.0, schema-utils@^4.2.0, schema-utils@^4.3.0: - version "4.3.0" - resolved "https://registry.yarnpkg.com/schema-utils/-/schema-utils-4.3.0.tgz#3b669f04f71ff2dfb5aba7ce2d5a9d79b35622c0" - integrity sha512-Gf9qqc58SpCA/xdziiHz35F4GNIWYWZrEshUc/G/r5BnLph6xpKuLeoJoQuj5WfBIx/eQLf+hmVPYHaxJu7V2g== + version "4.3.2" + resolved "https://registry.yarnpkg.com/schema-utils/-/schema-utils-4.3.2.tgz#0c10878bf4a73fd2b1dfd14b9462b26788c806ae" + integrity sha512-Gn/JaSk/Mt9gYubxTtSn/QCV4em9mpAPiR1rqy/Ocu19u/G9J5WWdNoUT4SiV6mFC3y6cxyFcFwdzPM3FgxGAQ== dependencies: "@types/json-schema" "^7.0.9" ajv "^8.9.0" @@ -11508,9 +11639,9 @@ semver@^6.0.0, semver@^6.3.1: integrity sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA== semver@^7.2.1, semver@^7.3.2, semver@^7.3.4, semver@^7.3.5, semver@^7.3.7, semver@^7.5.3, semver@^7.5.4: - version "7.6.3" - resolved "https://registry.yarnpkg.com/semver/-/semver-7.6.3.tgz#980f7b5550bc175fb4dc09403085627f9eb33143" - integrity sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A== + version "7.7.2" + resolved "https://registry.yarnpkg.com/semver/-/semver-7.7.2.tgz#67d99fdcd35cec21e6f8b87a7fd515a33f982b58" + integrity sha512-RF0Fw+rO5AMf9MAyaRXI4AV0Ulj5lMHqVxxdSgiVbixSCXoEmmX/jk0CuJw4+3SqroYO9VoUh+HcuJivvtJemA== send@0.19.0: version "0.19.0" @@ -11591,6 +11722,15 @@ set-function-name@^2.0.2: functions-have-names "^1.2.3" has-property-descriptors "^1.0.2" +set-proto@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/set-proto/-/set-proto-1.0.0.tgz#0760dbcff30b2d7e801fd6e19983e56da337565e" + integrity sha512-RJRdvCo6IAnPdsvP/7m6bsQqNnn1FCBX5ZNtFL98MmFF/4xAIJTIg1YbHW5DC2W5SKZanrC6i4HsJqlajw/dZw== + dependencies: + dunder-proto "^1.0.1" + es-errors "^1.3.0" + es-object-atoms "^1.0.0" + setimmediate@^1.0.5: version "1.0.5" resolved "https://registry.yarnpkg.com/setimmediate/-/setimmediate-1.0.5.tgz#290cbb232e306942d7d7ea9b83732ab7856f8285" @@ -11640,9 +11780,9 @@ shebang-regex@^3.0.0: integrity sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A== shell-quote@^1.7.3: - version "1.8.2" - resolved "https://registry.yarnpkg.com/shell-quote/-/shell-quote-1.8.2.tgz#d2d83e057959d53ec261311e9e9b8f51dcb2934a" - integrity sha512-AzqKpGKjrj7EM6rKVQEPpB288oCfnrEIuyoT9cyF4nmGa7V8Zk6f7RRqYisX8X9m+Q7bd632aZW4ky7EhbQztA== + version "1.8.3" + resolved "https://registry.yarnpkg.com/shell-quote/-/shell-quote-1.8.3.tgz#55e40ef33cf5c689902353a3d8cd1a6725f08b4b" + integrity sha512-ObmnIF4hXNg1BqhnHmgbDETF8dLPCggZWBjkQfhZpbszZnYur5DUljTcCHii5LC3J5E0yeO/1LIMyH+UvHQgyw== side-channel-list@^1.0.0: version "1.0.0" @@ -11825,9 +11965,9 @@ source-map@^0.6.0, source-map@^0.6.1, source-map@~0.6.1: integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g== source-map@^0.7.0, source-map@^0.7.3: - version "0.7.4" - resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.7.4.tgz#a9bbe705c9d8846f4e08ff6765acf0f1b0898656" - integrity sha512-l3BikUxvPOcn5E74dZiq5BGsTb5yEwhaTSzccU6t4sDOH8NWJCstKO5QT2CvtFoK6F0saL7p9xHAqHOlCPJygA== + version "0.7.6" + resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.7.6.tgz#a3658ab87e5b6429c8a1f3ba0083d4c61ca3ef02" + integrity sha512-i5uvt8C3ikiWeNZSVZNWcfZPItFQOsYTUAOkcUPGd8DqDy1uOUikjt5dG+uRlwyvR108Fb9DOd4GvXfT0N2/uQ== space-separated-tokens@^1.0.0: version "1.1.5" @@ -11881,6 +12021,14 @@ statuses@2.0.1: resolved "https://registry.yarnpkg.com/statuses/-/statuses-2.0.1.tgz#55cb000ccf1d48728bd23c685a063998cf1a1b63" integrity sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ== +stop-iteration-iterator@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/stop-iteration-iterator/-/stop-iteration-iterator-1.1.0.tgz#f481ff70a548f6124d0312c3aa14cbfa7aa542ad" + integrity sha512-eLoXW/DHyl62zxY4SCaIgnRhuMr6ri4juEYARS8E6sCEqzKpOiE521Ucofdx+KnDZl5xmvGYaaKCk5FEOxJCoQ== + dependencies: + es-errors "^1.3.0" + internal-slot "^1.1.0" + stream-parser@~0.3.1: version "0.3.1" resolved "https://registry.yarnpkg.com/stream-parser/-/stream-parser-0.3.1.tgz#1618548694420021a1182ff0af1911c129761773" @@ -11955,23 +12103,24 @@ string.prototype.includes@^2.0.1: define-properties "^1.2.1" es-abstract "^1.23.3" -string.prototype.matchall@^4.0.11: - version "4.0.11" - resolved "https://registry.yarnpkg.com/string.prototype.matchall/-/string.prototype.matchall-4.0.11.tgz#1092a72c59268d2abaad76582dccc687c0297e0a" - integrity sha512-NUdh0aDavY2og7IbBPenWqR9exH+E26Sv8e0/eTe1tltDGZL+GtBkDAnnyBtmekfK6/Dq3MkcGtzXFEd1LQrtg== +string.prototype.matchall@^4.0.12: + version "4.0.12" + resolved "https://registry.yarnpkg.com/string.prototype.matchall/-/string.prototype.matchall-4.0.12.tgz#6c88740e49ad4956b1332a911e949583a275d4c0" + integrity sha512-6CC9uyBL+/48dYizRf7H7VAYCMCNTBeM78x/VTUe9bFEaxBepPJDa1Ow99LqI/1yF7kuy7Q3cQsYMrcjGUcskA== dependencies: - call-bind "^1.0.7" + call-bind "^1.0.8" + call-bound "^1.0.3" define-properties "^1.2.1" - es-abstract "^1.23.2" + es-abstract "^1.23.6" es-errors "^1.3.0" es-object-atoms "^1.0.0" - get-intrinsic "^1.2.4" - gopd "^1.0.1" - has-symbols "^1.0.3" - internal-slot "^1.0.7" - regexp.prototype.flags "^1.5.2" + get-intrinsic "^1.2.6" + gopd "^1.2.0" + has-symbols "^1.1.0" + internal-slot "^1.1.0" + regexp.prototype.flags "^1.5.3" set-function-name "^2.0.2" - side-channel "^1.0.6" + side-channel "^1.1.0" string.prototype.repeat@^1.0.0: version "1.0.0" @@ -11994,7 +12143,7 @@ string.prototype.trim@^1.2.10: es-object-atoms "^1.0.0" has-property-descriptors "^1.0.2" -string.prototype.trimend@^1.0.8, string.prototype.trimend@^1.0.9: +string.prototype.trimend@^1.0.9: version "1.0.9" resolved "https://registry.yarnpkg.com/string.prototype.trimend/-/string.prototype.trimend-1.0.9.tgz#62e2731272cd285041b36596054e9f66569b6942" integrity sha512-G7Ok5C6E/j4SGfyLCloXTrngQIQU3PWtXGst3yM7Bea9FRURf1S42ZHlZZtsNque2FN2PoUhfZXYLNWwEr4dLQ== @@ -12013,20 +12162,13 @@ string.prototype.trimstart@^1.0.8: define-properties "^1.2.1" es-object-atoms "^1.0.0" -string_decoder@^1.1.1: +string_decoder@^1.1.1, string_decoder@^1.3.0: version "1.3.0" resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.3.0.tgz#42f114594a46cf1a8e30b0a84f56c78c3edac21e" integrity sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA== dependencies: safe-buffer "~5.2.0" -string_decoder@~1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.1.1.tgz#9cf1611ba62685d7030ae9e4ba34149c3af03fc8" - integrity sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg== - dependencies: - safe-buffer "~5.1.0" - stringify-entities@^4.0.0: version "4.0.4" resolved "https://registry.yarnpkg.com/stringify-entities/-/stringify-entities-4.0.4.tgz#b3b79ef5f277cc4ac73caeb0236c5ba939b3a4f3" @@ -12123,6 +12265,20 @@ style-loader@^2.0.0: loader-utils "^2.0.0" schema-utils "^3.0.0" +style-to-js@^1.0.0: + version "1.1.17" + resolved "https://registry.yarnpkg.com/style-to-js/-/style-to-js-1.1.17.tgz#488b1558a8c1fd05352943f088cc3ce376813d83" + integrity sha512-xQcBGDxJb6jjFCTzvQtfiPn6YvvP2O8U1MDIPNfJQlWMYfktPy+iGsHE7cssjs7y84d9fQaK4UF3RIJaAHSoYA== + dependencies: + style-to-object "1.0.9" + +style-to-object@1.0.9: + version "1.0.9" + resolved "https://registry.yarnpkg.com/style-to-object/-/style-to-object-1.0.9.tgz#35c65b713f4a6dba22d3d0c61435f965423653f0" + integrity sha512-G4qppLgKu/k6FwRpHiGiKPaPTFcG3g4wNVX/Qsfu+RqQM30E7Tyu/TEgxcL9PNLF5pdRLwQdE3YKKf+KF2Dzlw== + dependencies: + inline-style-parser "0.2.4" + style-to-object@^0.4.1: version "0.4.4" resolved "https://registry.yarnpkg.com/style-to-object/-/style-to-object-0.4.4.tgz#266e3dfd56391a7eefb7770423612d043c3f33ec" @@ -12130,13 +12286,6 @@ style-to-object@^0.4.1: dependencies: inline-style-parser "0.1.1" -style-to-object@^1.0.0: - version "1.0.8" - resolved "https://registry.yarnpkg.com/style-to-object/-/style-to-object-1.0.8.tgz#67a29bca47eaa587db18118d68f9d95955e81292" - integrity sha512-xT47I/Eo0rwJmaXC4oilDGDWLohVhR6o/xAQcPQN8q6QBuZVL8qMYL85kLmST5cPjAorwvqIA4qXTRQoYHaL6g== - dependencies: - inline-style-parser "0.2.4" - stylehacks@^5.1.1: version "5.1.1" resolved "https://registry.yarnpkg.com/stylehacks/-/stylehacks-5.1.1.tgz#7934a34eb59d7152149fa69d6e9e56f2fc34bcc9" @@ -12269,9 +12418,9 @@ tapable@^1.0.0: integrity sha512-4WK/bYZmj8xLr+HUCODHGF1ZFzsYffasLUgEiMBY4fgtltdO6B4WJtlSbPaDTLpYTcGVwM2qLnFTICEcNxs3kA== tapable@^2.1.1, tapable@^2.2.0: - version "2.2.1" - resolved "https://registry.yarnpkg.com/tapable/-/tapable-2.2.1.tgz#1967a73ef4060a82f12ab96af86d52fdb76eeca0" - integrity sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ== + version "2.2.2" + resolved "https://registry.yarnpkg.com/tapable/-/tapable-2.2.2.tgz#ab4984340d30cb9989a490032f086dbb8b56d872" + integrity sha512-Re10+NauLTMCudc7T5WLFLAwDhQ0JWdrMK+9B2M8zR5hRExKmsRDCBA7/aV/pNJFltmBFO5BAMlQFi/vq3nKOg== tar-fs@2.1.2, tar-fs@^2.0.0, tar-fs@^3.0.4: version "2.1.2" @@ -12294,10 +12443,10 @@ tar-stream@^2.1.4: inherits "^2.0.3" readable-stream "^3.1.1" -terser-webpack-plugin@^5.3.10, terser-webpack-plugin@^5.3.9: - version "5.3.11" - resolved "https://registry.yarnpkg.com/terser-webpack-plugin/-/terser-webpack-plugin-5.3.11.tgz#93c21f44ca86634257cac176f884f942b7ba3832" - integrity sha512-RVCsMfuD0+cTt3EwX8hSl2Ks56EbFHWmhluwcqoPKtBnfjiT6olaq7PRIRfhyU8nnC2MrnDrBLfrD/RGE+cVXQ== +terser-webpack-plugin@^5.3.11, terser-webpack-plugin@^5.3.9: + version "5.3.14" + resolved "https://registry.yarnpkg.com/terser-webpack-plugin/-/terser-webpack-plugin-5.3.14.tgz#9031d48e57ab27567f02ace85c7d690db66c3e06" + integrity sha512-vkZjpUjb6OMS7dhV+tILUW6BhpDR7P2L/aQSAv+Uwk+m8KATX9EccViHTJR2qDtACKPIYndLGCyl3FMo+r2LMw== dependencies: "@jridgewell/trace-mapping" "^0.3.25" jest-worker "^27.4.5" @@ -12306,12 +12455,12 @@ terser-webpack-plugin@^5.3.10, terser-webpack-plugin@^5.3.9: terser "^5.31.1" terser@^5.2.0, terser@^5.31.1: - version "5.37.0" - resolved "https://registry.yarnpkg.com/terser/-/terser-5.37.0.tgz#38aa66d1cfc43d0638fab54e43ff8a4f72a21ba3" - integrity sha512-B8wRRkmre4ERucLM/uXx4MOV5cbnOlVAqUst+1+iLKPI0dOgFO28f84ptoQt9HEI537PMzfYa/d+GEPKTRXmYA== + version "5.43.1" + resolved "https://registry.yarnpkg.com/terser/-/terser-5.43.1.tgz#88387f4f9794ff1a29e7ad61fb2932e25b4fdb6d" + integrity sha512-+6erLbBm0+LROX2sPXlUYx/ux5PyE9K/a92Wrt6oA+WDAoFTdpHE5tCYCI5PNzq2y8df4rA+QgHLJuR4jNymsg== dependencies: "@jridgewell/source-map" "^0.3.3" - acorn "^8.8.2" + acorn "^8.14.0" commander "^2.20.0" source-map-support "~0.5.20" @@ -12494,7 +12643,7 @@ type-fest@^0.8.0: resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.8.1.tgz#09e249ebde851d3b1e48d27c105444667f17b83d" integrity sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA== -type-is@^1.6.4, type-is@~1.6.18: +type-is@^1.6.18, type-is@~1.6.18: version "1.6.18" resolved "https://registry.yarnpkg.com/type-is/-/type-is-1.6.18.tgz#4e552cd05df09467dcbc4ef739de89f2cf37c131" integrity sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g== @@ -12512,7 +12661,7 @@ type@^2.7.2: resolved "https://registry.yarnpkg.com/type/-/type-2.7.3.tgz#436981652129285cc3ba94f392886c2637ea0486" integrity sha512-8j+1QmAbPvLZow5Qpi6NCaN8FB60p/6x8/vfNqOk/hC+HuvFZhL4+WfekuhQLiqFZXOgQdrs3B+XxEmCc6b3FQ== -typed-array-buffer@^1.0.2: +typed-array-buffer@^1.0.3: version "1.0.3" resolved "https://registry.yarnpkg.com/typed-array-buffer/-/typed-array-buffer-1.0.3.tgz#a72395450a4869ec033fd549371b47af3a2ee536" integrity sha512-nAYYwfY3qnzX30IkA6AQZjVbtK6duGontcQm1WSG1MD94YLqK0515GNApXkoxKOWMusVssAHWLh9SeaoefYFGw== @@ -12521,7 +12670,7 @@ typed-array-buffer@^1.0.2: es-errors "^1.3.0" is-typed-array "^1.1.14" -typed-array-byte-length@^1.0.1: +typed-array-byte-length@^1.0.3: version "1.0.3" resolved "https://registry.yarnpkg.com/typed-array-byte-length/-/typed-array-byte-length-1.0.3.tgz#8407a04f7d78684f3d252aa1a143d2b77b4160ce" integrity sha512-BaXgOuIxz8n8pIq3e7Atg/7s+DpiYrxn4vdot3w9KbnBhcRQq6o3xemQdIfynqSeXeDrF32x+WvfzmOjPiY9lg== @@ -12532,18 +12681,18 @@ typed-array-byte-length@^1.0.1: has-proto "^1.2.0" is-typed-array "^1.1.14" -typed-array-byte-offset@^1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/typed-array-byte-offset/-/typed-array-byte-offset-1.0.3.tgz#3fa9f22567700cc86aaf86a1e7176f74b59600f2" - integrity sha512-GsvTyUHTriq6o/bHcTd0vM7OQ9JEdlvluu9YISaA7+KzDzPaIzEeDFNkTfhdE3MYcNhNi0vq/LlegYgIs5yPAw== +typed-array-byte-offset@^1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/typed-array-byte-offset/-/typed-array-byte-offset-1.0.4.tgz#ae3698b8ec91a8ab945016108aef00d5bff12355" + integrity sha512-bTlAFB/FBYMcuX81gbL4OcpH5PmlFHqlCCpAl8AlEzMz5k53oNDvN8p1PNOWLEmI2x4orp3raOFB51tv9X+MFQ== dependencies: available-typed-arrays "^1.0.7" - call-bind "^1.0.7" + call-bind "^1.0.8" for-each "^0.3.3" - gopd "^1.0.1" - has-proto "^1.0.3" - is-typed-array "^1.1.13" - reflect.getprototypeof "^1.0.6" + gopd "^1.2.0" + has-proto "^1.2.0" + is-typed-array "^1.1.15" + reflect.getprototypeof "^1.0.9" typed-array-length@^1.0.7: version "1.0.7" @@ -12570,16 +12719,16 @@ typedarray@^0.0.6: integrity sha512-/aCDEGatGvZ2BIk+HmLf4ifCJFwvKFNb9/JeZPMulfgFracn9QFcAf5GO8B/mweUjSoblS5In0cWhqpfs/5PQA== typescript@^5.3.3: - version "5.7.2" - resolved "https://registry.yarnpkg.com/typescript/-/typescript-5.7.2.tgz#3169cf8c4c8a828cde53ba9ecb3d2b1d5dd67be6" - integrity sha512-i5t66RHxDvVN40HfDd1PsEThGNnlMCMT3jMUuoh9/0TaqWevNontacunWyN02LA9/fIbEWlcHZcgTKb9QoaLfg== + version "5.9.2" + resolved "https://registry.yarnpkg.com/typescript/-/typescript-5.9.2.tgz#d93450cddec5154a2d5cabe3b8102b83316fb2a6" + integrity sha512-CWBzXQrc/qOkhidw1OzBTQuYRbfyxDXJMVJ1XNwUHGROVmuaeiEm3OslpZ1RV96d7SKKjZKrSJu3+t/xlw3R9A== ua-parser-js@^1.0.35: - version "1.0.39" - resolved "https://registry.yarnpkg.com/ua-parser-js/-/ua-parser-js-1.0.39.tgz#bfc07f361549bf249bd8f4589a4cccec18fd2018" - integrity sha512-k24RCVWlEcjkdOxYmVJgeD/0a1TiSpqLg+ZalVGV9lsnr4yqu0w7tX/x2xX6G4zpkgQnRf89lxuZ1wsbjXM8lw== + version "1.0.40" + resolved "https://registry.yarnpkg.com/ua-parser-js/-/ua-parser-js-1.0.40.tgz#ac6aff4fd8ea3e794a6aa743ec9c2fc29e75b675" + integrity sha512-z6PJ8Lml+v3ichVojCiB8toQJBuwR42ySM4ezjXIqXK3M0HczmKQ3LF4rhU55PfD99KEEXQG6yb7iOMyvYuHew== -unbox-primitive@^1.0.2: +unbox-primitive@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/unbox-primitive/-/unbox-primitive-1.1.0.tgz#8d9d2c9edeea8460c7f35033a88867944934d1e2" integrity sha512-nWJ91DjeOkej/TA8pXQ3myruKpKEYgqvpw9lz4OPHj/NWFNluYrjbz9j01CJ8yKQd2g4jFoOkINCTW2I5LEEyw== @@ -12594,10 +12743,15 @@ unc-path-regex@^0.1.2: resolved "https://registry.yarnpkg.com/unc-path-regex/-/unc-path-regex-0.1.2.tgz#e73dd3d7b0d7c5ed86fbac6b0ae7d8c6a69d50fa" integrity sha512-eXL4nmJT7oCpkZsHZUOJo8hcX3GbsiDOa0Qu9F646fi8dT3XuSVopVqAcEiVzSKKH7UoDti23wNX3qGFxcW5Qg== -undici-types@~6.20.0: - version "6.20.0" - resolved "https://registry.yarnpkg.com/undici-types/-/undici-types-6.20.0.tgz#8171bf22c1f588d1554d55bf204bc624af388433" - integrity sha512-Ny6QZ2Nju20vw1SRHe3d9jVu6gJ+4e3+MMpqu7pqE5HT6WsTSlce++GQmK5UXS8mzV8DSYHrQH+Xrf2jVcuKNg== +undici-types@~6.21.0: + version "6.21.0" + resolved "https://registry.yarnpkg.com/undici-types/-/undici-types-6.21.0.tgz#691d00af3909be93a7faa13be61b3a5b50ef12cb" + integrity sha512-iwDZqg0QAGrg9Rav5H4n0M64c3mkR59cJ6wQp+7C4nI0gsmExaedaYLNO44eT4AtBBwjbTiGPMlt2Md0T9H9JQ== + +undici-types@~7.10.0: + version "7.10.0" + resolved "https://registry.yarnpkg.com/undici-types/-/undici-types-7.10.0.tgz#4ac2e058ce56b462b056e629cc6a02393d3ff350" + integrity sha512-t5Fy/nfn+14LuOc2KNYg75vZqClpAiqscVvMygNnlsHBFpSXdJaYtXMcdNLpl/Qvc3P2cB3s6lOV51nqsFq4ag== unicode-canonical-property-names-ecmascript@^2.0.0: version "2.0.1" @@ -12813,13 +12967,13 @@ unpipe@1.0.0, unpipe@~1.0.0: resolved "https://registry.yarnpkg.com/unpipe/-/unpipe-1.0.0.tgz#b2bf4ee8514aae6165b4817829d21b2ef49904ec" integrity sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ== -update-browserslist-db@^1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/update-browserslist-db/-/update-browserslist-db-1.1.1.tgz#80846fba1d79e82547fb661f8d141e0945755fe5" - integrity sha512-R8UzCaa9Az+38REPiJ1tXlImTJXlVfgHZsglwBD/k6nj76ctsH1E3q4doGrukiLQd3sGQYu56r5+lo5r94l29A== +update-browserslist-db@^1.1.3: + version "1.1.3" + resolved "https://registry.yarnpkg.com/update-browserslist-db/-/update-browserslist-db-1.1.3.tgz#348377dd245216f9e7060ff50b15a1b740b75420" + integrity sha512-UxhIZQ+QInVdunkDAaiazvvT/+fXL5Osr0JZlJulepYu6Jd7qJtDZjlur0emRlT71EN3ScPoE7gvsuIKKNavKw== dependencies: escalade "^3.2.0" - picocolors "^1.1.0" + picocolors "^1.1.1" upper-case-first@^2.0.2: version "2.0.2" @@ -12856,17 +13010,12 @@ use-memo-one@^1.1.3: resolved "https://registry.yarnpkg.com/use-memo-one/-/use-memo-one-1.1.3.tgz#2fd2e43a2169eabc7496960ace8c79efef975e99" integrity sha512-g66/K7ZQGYrI6dy8GLpVcMsBp4s17xNkYJVSMvTEevGy3nDxHOfE6z8BVE22+5G5x7t3+bhzrlTDB7ObrEE0cQ== -use-sync-external-store@1.2.2: - version "1.2.2" - resolved "https://registry.yarnpkg.com/use-sync-external-store/-/use-sync-external-store-1.2.2.tgz#c3b6390f3a30eba13200d2302dcdf1e7b57b2ef9" - integrity sha512-PElTlVMwpblvbNqQ82d2n6RjStvdSoNe9FG28kNfz3WiXilJm4DdNkEzRhCZuIDwY8U08WVihhGR5iRqAwfDiw== - -use-sync-external-store@^1.4.0: - version "1.4.0" - resolved "https://registry.yarnpkg.com/use-sync-external-store/-/use-sync-external-store-1.4.0.tgz#adbc795d8eeb47029963016cefdf89dc799fcebc" - integrity sha512-9WXSPC5fMv61vaupRkCKCxsPxBocVnwakBEkMIHHpkTTg6icbJtg6jzgtLDm4bl3cSHAca52rYWih0k4K3PfHw== +use-sync-external-store@^1.2.2, use-sync-external-store@^1.4.0, use-sync-external-store@^1.5.0: + version "1.5.0" + resolved "https://registry.yarnpkg.com/use-sync-external-store/-/use-sync-external-store-1.5.0.tgz#55122e2a3edd2a6c106174c27485e0fd59bcfca0" + integrity sha512-Rb46I4cGGVBmjamjphe8L/UnvJD+uPPtTkNvX5mZgqdbavhI4EbgIWJiIHXJ8bc/i9EQGPRh4DwEURJ552Do0A== -util-deprecate@^1.0.1, util-deprecate@^1.0.2, util-deprecate@~1.0.1: +util-deprecate@^1.0.1, util-deprecate@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf" integrity sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw== @@ -12930,9 +13079,9 @@ vfile-message@^3.0.0: unist-util-stringify-position "^3.0.0" vfile-message@^4.0.0: - version "4.0.2" - resolved "https://registry.yarnpkg.com/vfile-message/-/vfile-message-4.0.2.tgz#c883c9f677c72c166362fd635f21fc165a7d1181" - integrity sha512-jRDZ1IMLttGj41KcZvlrYAaI3CfqpLpfpf+Mfig13viT6NKvRzWZ+lXz0Y5D60w6uJIBAOGq9mSHf0gktF0duw== + version "4.0.3" + resolved "https://registry.yarnpkg.com/vfile-message/-/vfile-message-4.0.3.tgz#87b44dddd7b70f0641c2e3ed0864ba73e2ea8df4" + integrity sha512-QTHzsGd1EhbZs4AsQ20JX1rC3cOlt/IWJruk893DfLRr57lcnOeMaWG4K0JrRta4mIJZKth2Au3mM3u03/JWKw== dependencies: "@types/unist" "^3.0.0" unist-util-stringify-position "^4.0.0" @@ -12955,10 +13104,15 @@ vfile@^6.0.0: "@types/unist" "^3.0.0" vfile-message "^4.0.0" +void-elements@3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/void-elements/-/void-elements-3.1.0.tgz#614f7fbf8d801f0bb5f0661f5b2f5785750e4f09" + integrity sha512-Dhxzh5HZuiHQhbvTW9AMetFfBHDMYpo23Uo9btPXgdYP+3T5S+p+jgNy7spra+veYhBP2dCSgxR/i2Y02h5/6w== + watchpack@^2.4.1: - version "2.4.2" - resolved "https://registry.yarnpkg.com/watchpack/-/watchpack-2.4.2.tgz#2feeaed67412e7c33184e5a79ca738fbd38564da" - integrity sha512-TnbFSbcOCcDgjZ4piURLCbJ3nJhznVh9kw6F6iokjiFPl8ONxe9A6nMDVXDiNbrSfLILs6vB07F7wLBrwPYzJw== + version "2.4.4" + resolved "https://registry.yarnpkg.com/watchpack/-/watchpack-2.4.4.tgz#473bda72f0850453da6425081ea46fc0d7602947" + integrity sha512-c5EGNOiyxxV5qmTtAB7rbiXxi1ooX1pQKMLX/MIabJjRA0SJBQOjKF+KSVfHkr9U1cADPon0mRiVe/riyaiDUA== dependencies: glob-to-regexp "^0.4.1" graceful-fs "^4.1.2" @@ -13002,9 +13156,9 @@ webpack-sources@^1.1.0: source-map "~0.6.1" webpack-sources@^3.2.3: - version "3.2.3" - resolved "https://registry.yarnpkg.com/webpack-sources/-/webpack-sources-3.2.3.tgz#2d4daab8451fd4b240cc27055ff6a0c2ccea0cde" - integrity sha512-/DyMEOrDgLKKIG0fmvtz+4dUX/3Ghozwgm6iPp8KRhvn+eQf9+Q7GWxVNMk3+uCPWfdXYC4ExGBckIXdFEfH1w== + version "3.3.3" + resolved "https://registry.yarnpkg.com/webpack-sources/-/webpack-sources-3.3.3.tgz#d4bf7f9909675d7a070ff14d0ef2a4f3c982c723" + integrity sha512-yd1RBzSGanHkitROoPFd6qsrxt+oFhg/129YzheDGqeustzX0vTZJZsSsQjVQC4yzBQ56K55XU8gaNCtIzOnTg== webpack-stats-plugin@^1.1.3: version "1.1.3" @@ -13016,10 +13170,10 @@ webpack-virtual-modules@^0.5.0: resolved "https://registry.yarnpkg.com/webpack-virtual-modules/-/webpack-virtual-modules-0.5.0.tgz#362f14738a56dae107937ab98ea7062e8bdd3b6c" integrity sha512-kyDivFZ7ZM0BVOUteVbDFhlRt7Ah/CSPwJdi8hBpkK7QLumUqdLtVfm/PX/hkcnrvr0i77fO5+TjZ94Pe+C9iw== -webpack@^5.88.1: - version "5.97.1" - resolved "https://registry.yarnpkg.com/webpack/-/webpack-5.97.1.tgz#972a8320a438b56ff0f1d94ade9e82eac155fa58" - integrity sha512-EksG6gFY3L1eFMROS/7Wzgrii5mBAFe4rIr3r2BTfo7bcc+DWwFZ4OJ/miOuHJO/A85HwyI4eQ0F6IKXesO7Fg== +webpack@~5.98.0: + version "5.98.0" + resolved "https://registry.yarnpkg.com/webpack/-/webpack-5.98.0.tgz#44ae19a8f2ba97537978246072fb89d10d1fbd17" + integrity sha512-UFynvx+gM44Gv9qFgj0acCQK2VE1CtdfwFdimkapco3hlPCJ/zeq73n2yVKimVbtm+TnApIugGhLJnkU6gjYXA== dependencies: "@types/eslint-scope" "^3.7.7" "@types/estree" "^1.0.6" @@ -13039,9 +13193,9 @@ webpack@^5.88.1: loader-runner "^4.2.0" mime-types "^2.1.27" neo-async "^2.6.2" - schema-utils "^3.2.0" + schema-utils "^4.3.0" tapable "^2.1.1" - terser-webpack-plugin "^5.3.10" + terser-webpack-plugin "^5.3.11" watchpack "^2.4.1" webpack-sources "^3.2.3" @@ -13098,15 +13252,16 @@ which-module@^2.0.0: resolved "https://registry.yarnpkg.com/which-module/-/which-module-2.0.1.tgz#776b1fe35d90aebe99e8ac15eb24093389a4a409" integrity sha512-iBdZ57RDvnOR9AGBhML2vFZf7h8vmBjhoaZqODJBFWHVtKkDmKuHai3cx5PgVMrX5YDNp27AofYbAwctSS+vhQ== -which-typed-array@^1.1.16: - version "1.1.18" - resolved "https://registry.yarnpkg.com/which-typed-array/-/which-typed-array-1.1.18.tgz#df2389ebf3fbb246a71390e90730a9edb6ce17ad" - integrity sha512-qEcY+KJYlWyLH9vNbsr6/5j59AXk5ni5aakf8ldzBvGde6Iz4sxZGkJyWSAueTG7QhOvNRYb1lDdFmL5Td0QKA== +which-typed-array@^1.1.16, which-typed-array@^1.1.19: + version "1.1.19" + resolved "https://registry.yarnpkg.com/which-typed-array/-/which-typed-array-1.1.19.tgz#df03842e870b6b88e117524a4b364b6fc689f956" + integrity sha512-rEvr90Bck4WZt9HHFC4DJMsjvu7x+r6bImz0/BrbWb7A2djJ8hnZMrWnHo9F8ssv0OMErasDhftrfROTyqSDrw== dependencies: available-typed-arrays "^1.0.7" call-bind "^1.0.8" - call-bound "^1.0.3" - for-each "^0.3.3" + call-bound "^1.0.4" + for-each "^0.3.5" + get-proto "^1.0.1" gopd "^1.2.0" has-tostringtag "^1.0.2" @@ -13212,7 +13367,7 @@ xstate@^4.38.0: resolved "https://registry.yarnpkg.com/xstate/-/xstate-4.38.3.tgz#4e15e7ad3aa0ca1eea2010548a5379966d8f1075" integrity sha512-SH7nAaaPQx57dx6qvfcIgqKRXIh4L0A1iYEqim4s1u7c9VoCgzZc+63FY90AKU4ZzOC2cfJzTnpO4zK7fCUzzw== -xtend@^4.0.0: +xtend@^4.0.0, xtend@^4.0.2: version "4.0.2" resolved "https://registry.yarnpkg.com/xtend/-/xtend-4.0.2.tgz#bb72779f5fa465186b1f438f674fa347fdb5db54" integrity sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ== @@ -13257,9 +13412,9 @@ yaml@^1.10.0, yaml@^1.10.2, yaml@^1.7.2: integrity sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg== yaml@^2.0.0, yaml@^2.3.4: - version "2.6.1" - resolved "https://registry.yarnpkg.com/yaml/-/yaml-2.6.1.tgz#42f2b1ba89203f374609572d5349fb8686500773" - integrity sha512-7r0XPzioN/Q9kXBro/XPnA6kznR73DHq+GXh5ON7ZozRO6aMjbmiBuKste2wslTFkC5d1dw0GooOCepZXJ2SAg== + version "2.8.0" + resolved "https://registry.yarnpkg.com/yaml/-/yaml-2.8.0.tgz#15f8c9866211bdc2d3781a0890e44d4fa1a5fff6" + integrity sha512-4lLa/EcQCB0cJkyts+FpIRx5G/llPxfP6VQU5KByHEhLxY3IJCH0f0Hy1MHI8sClTvsIb8qwRJ6R/ZdlDJ/leQ== yargs-parser@^18.1.2: version "18.1.3" @@ -13315,21 +13470,21 @@ yurnalist@^2.1.0: strip-ansi "^5.2.0" zod@^3.25.63: - version "3.25.63" - resolved "https://registry.yarnpkg.com/zod/-/zod-3.25.63.tgz#5eac66b56aa9f5e1cd3604dd541b819110474efa" - integrity sha512-3ttCkqhtpncYXfP0f6dsyabbYV/nEUW+Xlu89jiXbTBifUfjaSqXOG6JnQPLtqt87n7KAmnMqcjay6c0Wq0Vbw== + version "3.25.76" + resolved "https://registry.yarnpkg.com/zod/-/zod-3.25.76.tgz#26841c3f6fd22a6a2760e7ccb719179768471e34" + integrity sha512-gzUt/qt81nXsFGKIFcC3YnfEAx5NkunCfnDlvuBSSFS02bcXu4Lmea0AFIUwbLWxWPx3d9p8S5QoaujKcNQxcQ== zustand@^4.4.0: - version "4.5.5" - resolved "https://registry.yarnpkg.com/zustand/-/zustand-4.5.5.tgz#f8c713041543715ec81a2adda0610e1dc82d4ad1" - integrity sha512-+0PALYNJNgK6hldkgDq2vLrw5f6g/jCInz52n9RTpropGgeAf/ioFUCdtsjCqu4gNhW9D01rUQBROoRjdzyn2Q== + version "4.5.7" + resolved "https://registry.yarnpkg.com/zustand/-/zustand-4.5.7.tgz#7d6bb2026a142415dd8be8891d7870e6dbe65f55" + integrity sha512-CHOUy7mu3lbD6o6LJLfllpjkzhHXSBlX8B9+qPddUsIfeF5S/UZ5q0kmCsnRqT1UHFQZchNFDDzMbQsuesHWlw== dependencies: - use-sync-external-store "1.2.2" + use-sync-external-store "^1.2.2" zustand@^5.0.1: - version "5.0.2" - resolved "https://registry.yarnpkg.com/zustand/-/zustand-5.0.2.tgz#f7595ada55a565f1fd6464f002a91e701ee0cfca" - integrity sha512-8qNdnJVJlHlrKXi50LDqqUNmUbuBjoKLrYQBnoChIbVph7vni+sY+YpvdjXG9YLd/Bxr6scMcR+rm5H3aSqPaw== + version "5.0.7" + resolved "https://registry.yarnpkg.com/zustand/-/zustand-5.0.7.tgz#e325364e82c992a84bf386d8445aa7f180c450dc" + integrity sha512-Ot6uqHDW/O2VdYsKLLU8GQu8sCOM1LcoE8RwvLv9uuRT9s6SOHCKs0ZEOhxg+I1Ld+A1Q5lwx+UlKXXUoCZITg== zwitch@^2.0.0: version "2.0.4" diff --git a/src/magentic_ui/backend/i18n/__init__.py b/src/magentic_ui/backend/i18n/__init__.py new file mode 100644 index 00000000..b9e81f07 --- /dev/null +++ b/src/magentic_ui/backend/i18n/__init__.py @@ -0,0 +1,10 @@ +""" +后端国际化支持模块 + +提供多语言支持,根据用户设置返回对应的提示信息 +""" + +from .translations import get_text, get_language_from_settings +from .messages import BackendMessages + +__all__ = ["get_text", "get_language_from_settings", "BackendMessages"] \ No newline at end of file diff --git a/src/magentic_ui/backend/i18n/messages.py b/src/magentic_ui/backend/i18n/messages.py new file mode 100644 index 00000000..6f53f935 --- /dev/null +++ b/src/magentic_ui/backend/i18n/messages.py @@ -0,0 +1,285 @@ +""" +后端消息类 + +提供便捷的多语言消息获取方法 +""" + +from typing import Optional +from ..datamodel import Settings +from .translations import get_text, get_language_from_settings + + +class BackendMessages: + """ + 后端消息类,提供便捷的多语言消息获取方法 + """ + + def __init__(self, settings: Optional[Settings] = None): + """ + 初始化消息类 + + Args: + settings: 用户设置对象,用于获取语言偏好 + """ + self.settings = settings + self._language = get_language_from_settings(settings) + + def update_settings(self, settings: Settings) -> None: + """ + 更新用户设置 + + Args: + settings: 新的用户设置 + """ + self.settings = settings + self._language = get_language_from_settings(settings) + + def get(self, key: str, **kwargs: str) -> str: + """ + 获取消息文本 + + Args: + key: 消息键 + **kwargs: 格式化参数 + + Returns: + str: 翻译后的消息文本 + """ + return get_text(key, self._language, **kwargs) + + # WebSocket相关消息 + def run_cancelled_by_user(self) -> str: + """运行被用户取消""" + return self.get("backend.run_cancelled_by_user") + + def connection_closed(self) -> str: + """连接已关闭""" + return self.get("backend.connection_closed") + + def server_shutdown(self) -> str: + """服务器关闭""" + return self.get("backend.server_shutdown") + + def run_interrupted_by_server_shutdown(self) -> str: + """运行因服务器关闭而中断""" + return self.get("backend.run_interrupted_by_server_shutdown") + + def error_occurred_while_processing(self) -> str: + """处理此运行时发生错误""" + return self.get("backend.error_occurred_while_processing") + + def magentic_ui_timed_out_waiting_for_input(self) -> str: + """Magentic-UI在等待您的输入时超时""" + return self.get("backend.magentic_ui_timed_out_waiting_for_input") + + def no_active_connection_for_run(self, run_id: int) -> str: + """运行没有活动连接""" + return self.get("backend.no_active_connection_for_run", run_id=run_id) + + def run_not_found_in_database(self, run_id: int) -> str: + """在数据库中未找到运行""" + return self.get("backend.run_not_found_in_database", run_id=run_id) + + def run_has_no_user_id(self, run_id: int) -> str: + """运行没有用户ID""" + return self.get("backend.run_has_no_user_id", run_id=run_id) + + def no_final_result_captured(self, run_id: int) -> str: + """未捕获到运行的最终结果""" + return self.get("backend.no_final_result_captured", run_id=run_id) + + def stream_cancelled_or_connection_closed(self, run_id: int) -> str: + """流被取消或连接已关闭""" + return self.get("backend.stream_cancelled_or_connection_closed", run_id=run_id) + + def stream_error_for_run(self, run_id: int) -> str: + """运行的流错误""" + return self.get("backend.stream_error_for_run", run_id=run_id) + + def connection_error_for_run(self, run_id: int) -> str: + """运行的连接错误""" + return self.get("backend.connection_error_for_run", run_id=run_id) + + def websocket_disconnected_while_sending(self, run_id: int) -> str: + """发送消息时WebSocket断开连接""" + return self.get("backend.websocket_disconnected_while_sending", run_id=run_id) + + def error_sending_message_for_run(self, run_id: int) -> str: + """发送消息时出错""" + return self.get("backend.error_sending_message_for_run", run_id=run_id) + + def attempted_to_send_message_to_closed_connection(self, run_id: int) -> str: + """尝试向已关闭的连接发送消息""" + return self.get("backend.attempted_to_send_message_to_closed_connection", run_id=run_id) + + def received_input_response_for_inactive_run(self, run_id: int) -> str: + """收到非活动运行的输入响应""" + return self.get("backend.received_input_response_for_inactive_run", run_id=run_id) + + def stopping_run(self, run_id: int) -> str: + """正在停止运行""" + return self.get("backend.stopping_run", run_id=run_id) + + def error_stopping_run(self, run_id: int) -> str: + """停止运行时出错""" + return self.get("backend.error_stopping_run", run_id=run_id) + + def disconnecting_run(self, run_id: int) -> str: + """正在断开运行的连接""" + return self.get("backend.disconnecting_run", run_id=run_id) + + def cleaning_up_active_connections(self, count: int) -> str: + """正在清理活动连接""" + return self.get("backend.cleaning_up_active_connections", count=count) + + def websocket_manager_cleanup_timed_out(self) -> str: + """WebSocketManager清理超时""" + return self.get("backend.websocket_manager_cleanup_timed_out") + + def error_during_websocket_manager_cleanup(self) -> str: + """WebSocketManager清理期间出错""" + return self.get("backend.error_during_websocket_manager_cleanup") + + def timeout_disconnecting_run(self, run_id: int) -> str: + """断开运行连接超时""" + return self.get("backend.timeout_disconnecting_run", run_id=run_id) + + def error_disconnecting_run(self, run_id: int) -> str: + """断开运行连接时出错""" + return self.get("backend.error_disconnecting_run", run_id=run_id) + + def input_response_timeout_for_run(self, run_id: int) -> str: + """运行的输入响应超时""" + return self.get("backend.input_response_timeout_for_run", run_id=run_id) + + def error_handling_input_for_run(self, run_id: int) -> str: + """处理运行的输入时出错""" + return self.get("backend.error_handling_input_for_run", run_id=run_id) + + def run_was_closed(self) -> str: + """运行已关闭""" + return self.get("backend.run_was_closed") + + def no_input_queue_for_run(self, run_id: int) -> str: + """运行没有输入队列""" + return self.get("backend.no_input_queue_for_run", run_id=run_id) + + def sending_input_request_for_run(self, run_id: int) -> str: + """正在发送运行的输入请求""" + return self.get("backend.sending_input_request_for_run", run_id=run_id) + + # 文件相关消息 + def file_not_found(self) -> str: + """文件未找到""" + return self.get("backend.file_not_found") + + def path_is_not_a_file(self) -> str: + """路径不是文件""" + return self.get("backend.path_is_not_a_file") + + def access_denied_file_path_outside_workspace(self) -> str: + """访问被拒绝:文件路径在workspace目录外""" + return self.get("backend.access_denied_file_path_outside_workspace") + + def invalid_file_path(self) -> str: + """无效的文件路径""" + return self.get("backend.invalid_file_path") + + def unsupported_file_type(self) -> str: + """不支持的文件类型""" + return self.get("backend.unsupported_file_type") + + def failed_to_parse_uploaded_file(self) -> str: + """解析上传文件失败""" + return self.get("backend.failed_to_parse_uploaded_file") + + # 会话相关消息 + def error_loading_teams(self) -> str: + """加载团队时出错""" + return self.get("backend.error_loading_teams") + + def session_updated_successfully(self) -> str: + """会话更新成功""" + return self.get("backend.session_updated_successfully") + + def session_created_successfully(self) -> str: + """会话创建成功""" + return self.get("backend.session_created_successfully") + + def please_check_form_for_errors(self) -> str: + """请检查表单是否有错误""" + return self.get("backend.please_check_form_for_errors") + + def edit_session(self) -> str: + """编辑会话""" + return self.get("backend.edit_session") + + def create_session(self) -> str: + """创建会话""" + return self.get("backend.create_session") + + # 计划相关消息 + def missing_session_or_user_information(self) -> str: + """缺少会话或用户信息""" + return self.get("backend.missing_session_or_user_information") + + def creating_plan_from_conversation(self) -> str: + """正在从对话创建计划...""" + return self.get("backend.creating_plan_from_conversation") + + def plan_created_successfully(self) -> str: + """计划创建成功!""" + return self.get("backend.plan_created_successfully") + + def failed_to_create_plan(self) -> str: + """创建计划失败""" + return self.get("backend.failed_to_create_plan") + + def unknown_error(self) -> str: + """未知错误""" + return self.get("backend.unknown_error") + + def this_plan_has_been_saved_to_your_library(self) -> str: + """此计划已保存到您的库中""" + return self.get("backend.this_plan_has_been_saved_to_your_library") + + def plan_learned(self) -> str: + """计划已学习""" + return self.get("backend.plan_learned") + + def creating_a_plan_from_this_conversation(self) -> str: + """正在从对话创建计划""" + return self.get("backend.creating_a_plan_from_this_conversation") + + def learning_plan(self) -> str: + """学习计划中...""" + return self.get("backend.learning_plan") + + def learn_a_reusable_plan_from_this_conversation(self) -> str: + """从对话中学习可重用计划并保存到您的库中""" + return self.get("backend.learn_a_reusable_plan_from_this_conversation") + + def learn_plan(self) -> str: + """学习计划""" + return self.get("backend.learn_plan") + + # 错误相关消息 + def failed_to_parse_plan(self) -> str: + """解析计划失败""" + return self.get("backend.failed_to_parse_plan") + + def failed_to_update_plan(self) -> str: + """更新计划失败""" + return self.get("backend.failed_to_update_plan") + + def failed_to_parse_attached_files(self) -> str: + """解析附加文件失败""" + return self.get("backend.failed_to_parse_attached_files") + + def cannot_format_unrecognized_message_type(self) -> str: + """无法格式化无法识别的消息类型""" + return self.get("backend.cannot_format_unrecognized_message_type") + + def message_formatting_error(self) -> str: + """消息格式化错误""" + return self.get("backend.message_formatting_error") \ No newline at end of file diff --git a/src/magentic_ui/backend/i18n/translations.py b/src/magentic_ui/backend/i18n/translations.py new file mode 100644 index 00000000..6084f697 --- /dev/null +++ b/src/magentic_ui/backend/i18n/translations.py @@ -0,0 +1,213 @@ +""" +后端翻译工具 + +提供多语言文本获取功能 +""" + +from typing import Optional +from ..datamodel import Settings + + +# 翻译文本字典 +TRANSLATIONS = { + "zh-CN": { + "backend": { + "user_requested_stop_cancellation": "用户请求停止/取消", + "run_cancelled_by_user": "运行被用户取消", + "connection_closed": "连接已关闭", + "server_shutdown": "服务器关闭", + "run_interrupted_by_server_shutdown": "运行因服务器关闭而中断", + "error_occurred_while_processing": "处理此运行时发生错误", + "magentic_ui_timed_out_waiting_for_input": "Magentic-UI 在等待您的输入时超时。要恢复,请在输入框中输入后续消息,或者您可以简单地输入 'continue'。", + "no_active_connection_for_run": "运行 {run_id} 没有活动连接", + "run_not_found_in_database": "在数据库中未找到运行 {run_id}", + "run_has_no_user_id": "运行 {run_id} 没有用户ID", + "no_final_result_captured": "未捕获到运行 {run_id} 的最终结果", + "stream_cancelled_or_connection_closed": "运行 {run_id} 的流被取消或连接已关闭", + "stream_error_for_run": "运行 {run_id} 的流错误", + "connection_error_for_run": "运行 {run_id} 的连接错误", + "websocket_disconnected_while_sending": "发送消息时WebSocket断开连接,运行 {run_id}", + "error_sending_message_for_run": "发送消息时出错,运行 {run_id}", + "attempted_to_send_message_to_closed_connection": "尝试向已关闭的连接发送消息,运行 {run_id}", + "received_input_response_for_inactive_run": "收到非活动运行的输入响应 {run_id}", + "stopping_run": "正在停止运行 {run_id}", + "error_stopping_run": "停止运行 {run_id} 时出错", + "disconnecting_run": "正在断开运行 {run_id} 的连接", + "cleaning_up_active_connections": "正在清理 {count} 个活动连接", + "websocket_manager_cleanup_timed_out": "WebSocketManager清理超时", + "error_during_websocket_manager_cleanup": "WebSocketManager清理期间出错", + "timeout_disconnecting_run": "断开运行 {run_id} 连接超时", + "error_disconnecting_run": "断开运行 {run_id} 连接时出错", + "input_response_timeout_for_run": "运行 {run_id} 的输入响应超时", + "error_handling_input_for_run": "处理运行 {run_id} 的输入时出错", + "run_was_closed": "运行已关闭", + "no_input_queue_for_run": "运行 {run_id} 没有输入队列", + "sending_input_request_for_run": "正在发送运行 {run_id} 的输入请求", + "failed_to_parse_plan": "解析计划失败", + "failed_to_update_plan": "更新计划失败", + "failed_to_parse_attached_files": "解析附加文件失败", + "cannot_format_unrecognized_message_type": "无法格式化无法识别的消息类型", + "message_formatting_error": "消息格式化错误", + "file_not_found": "文件未找到", + "path_is_not_a_file": "路径不是文件", + "access_denied_file_path_outside_workspace": "访问被拒绝:文件路径在workspace目录外", + "invalid_file_path": "无效的文件路径", + "unsupported_file_type": "不支持的文件类型", + "failed_to_parse_uploaded_file": "解析上传文件失败", + "error_loading_teams": "加载团队时出错", + "session_updated_successfully": "会话更新成功", + "session_created_successfully": "会话创建成功", + "please_check_form_for_errors": "请检查表单是否有错误", + "edit_session": "编辑会话", + "create_session": "创建会话", + "missing_session_or_user_information": "缺少会话或用户信息", + "creating_plan_from_conversation": "正在从对话创建计划...", + "plan_created_successfully": "计划创建成功!", + "failed_to_create_plan": "创建计划失败", + "unknown_error": "未知错误", + "this_plan_has_been_saved_to_your_library": "此计划已保存到您的库中", + "plan_learned": "计划已学习", + "creating_a_plan_from_this_conversation": "正在从对话创建计划", + "learning_plan": "学习计划中...", + "learn_a_reusable_plan_from_this_conversation": "从对话中学习可重用计划并保存到您的库中", + "learn_plan": "学习计划" + } + }, + "en-US": { + "backend": { + "user_requested_stop_cancellation": "User requested stop/cancellation", + "run_cancelled_by_user": "Run cancelled by user", + "connection_closed": "Connection closed", + "server_shutdown": "server_shutdown", + "run_interrupted_by_server_shutdown": "Run interrupted by server shutdown", + "error_occurred_while_processing": "An error occurred while processing this run", + "magentic_ui_timed_out_waiting_for_input": "Magentic-UI timed out while waiting for your input. To resume, please enter a follow-up message in the input box or you can simply type 'continue'.", + "no_active_connection_for_run": "No active connection for run {run_id}", + "run_not_found_in_database": "Run {run_id} not found in database", + "run_has_no_user_id": "Run {run_id} has no user ID", + "no_final_result_captured": "No final result captured for completed run {run_id}", + "stream_cancelled_or_connection_closed": "Stream cancelled or connection closed for run {run_id}", + "stream_error_for_run": "Stream error for run {run_id}", + "connection_error_for_run": "Connection error for run {run_id}", + "websocket_disconnected_while_sending": "WebSocket disconnected while sending message for run {run_id}", + "error_sending_message_for_run": "Error sending message for run {run_id}", + "attempted_to_send_message_to_closed_connection": "Attempted to send message to closed connection for run {run_id}", + "received_input_response_for_inactive_run": "Received input response for inactive run {run_id}", + "stopping_run": "Stopping run {run_id}", + "error_stopping_run": "Error stopping run {run_id}", + "disconnecting_run": "Disconnecting run {run_id}", + "cleaning_up_active_connections": "Cleaning up {count} active connections", + "websocket_manager_cleanup_timed_out": "WebSocketManager cleanup timed out", + "error_during_websocket_manager_cleanup": "Error during WebSocketManager cleanup", + "timeout_disconnecting_run": "Timeout disconnecting run {run_id}", + "error_disconnecting_run": "Error disconnecting run {run_id}", + "input_response_timeout_for_run": "Input response timeout for run {run_id}", + "error_handling_input_for_run": "Error handling input for run {run_id}", + "run_was_closed": "Run was closed", + "no_input_queue_for_run": "No input queue for run {run_id}", + "sending_input_request_for_run": "Sending input request for run {run_id}", + "failed_to_parse_plan": "Failed to parse plan", + "failed_to_update_plan": "Failed to update plan", + "failed_to_parse_attached_files": "Failed to parse attached_files", + "cannot_format_unrecognized_message_type": "Cannot format unrecognized message type", + "message_formatting_error": "Message formatting error", + "file_not_found": "File not found", + "path_is_not_a_file": "Path is not a file", + "access_denied_file_path_outside_workspace": "Access denied: File path outside workspace", + "invalid_file_path": "Invalid file path", + "unsupported_file_type": "Unsupported file type", + "failed_to_parse_uploaded_file": "Failed to parse uploaded file", + "error_loading_teams": "Error loading teams", + "session_updated_successfully": "Session updated successfully", + "session_created_successfully": "Session created successfully", + "please_check_form_for_errors": "Please check the form for errors", + "edit_session": "Edit Session", + "create_session": "Create Session", + "missing_session_or_user_information": "Missing session or user information", + "creating_plan_from_conversation": "Creating plan from conversation...", + "plan_created_successfully": "Plan created successfully!", + "failed_to_create_plan": "Failed to create plan", + "unknown_error": "Unknown error", + "this_plan_has_been_saved_to_your_library": "This plan has been saved to your library", + "plan_learned": "Plan Learned", + "creating_a_plan_from_this_conversation": "Creating a plan from this conversation", + "learning_plan": "Learning Plan...", + "learn_a_reusable_plan_from_this_conversation": "Learn a reusable plan from this conversation and save it to your library", + "learn_plan": "Learn Plan" + } + } +} + +# 默认语言 +DEFAULT_LANGUAGE = "zh-CN" + + +def get_language_from_settings(settings: Optional[Settings]) -> str: + """ + 从用户设置中获取语言设置 + + Args: + settings: 用户设置对象 + + Returns: + str: 语言代码 (zh-CN 或 en-US) + """ + if not settings or not settings.config: + return DEFAULT_LANGUAGE + + # 从设置中获取语言配置 + config = settings.config + if isinstance(config, dict): + # 如果是字典格式,查找language字段 + language = config.get("language", DEFAULT_LANGUAGE) + else: + # 如果是SettingsConfig对象,查找language字段 + language = getattr(config, "language", DEFAULT_LANGUAGE) + + # 验证语言代码 + if language not in ["zh-CN", "en-US"]: + return DEFAULT_LANGUAGE + + return language + + +def get_text(key: str, language: str = DEFAULT_LANGUAGE, **kwargs: str) -> str: + """ + 获取指定语言的文本 + + Args: + key: 翻译键 + language: 语言代码 + **kwargs: 格式化参数 + + Returns: + str: 翻译后的文本 + """ + # 确保语言代码有效 + if language not in TRANSLATIONS: + language = DEFAULT_LANGUAGE + + # 按点分割键 + keys = key.split(".") + current_dict = TRANSLATIONS[language] + + # 遍历键路径 + for k in keys: + if isinstance(current_dict, dict) and k in current_dict: + current_dict = current_dict[k] + else: + # 如果找不到翻译,返回键本身 + return key + + # 如果找到了翻译文本 + if isinstance(current_dict, str): + # 格式化文本(如果有参数) + if kwargs: + try: + return current_dict.format(**kwargs) + except (KeyError, ValueError): + return current_dict + return current_dict + + # 如果最终结果不是字符串,返回键本身 + return key \ No newline at end of file diff --git a/src/magentic_ui/backend/web/managers/connection.py b/src/magentic_ui/backend/web/managers/connection.py index 2b91c11a..43f28b16 100644 --- a/src/magentic_ui/backend/web/managers/connection.py +++ b/src/magentic_ui/backend/web/managers/connection.py @@ -33,6 +33,7 @@ TeamResult, ) from ...teammanager import TeamManager +from ...i18n.translations import get_text, get_language_from_settings logger = logging.getLogger(__name__) @@ -90,6 +91,17 @@ def _get_stop_message(self, reason: str) -> dict[str, Any]: duration=0, ).model_dump() + async def _get_user_language(self, run_id: int) -> str: + """get user language from settings""" + try: + run = await self._get_run(run_id) + if run and run.user_id: + user_settings = await self._get_settings(run.user_id) + return get_language_from_settings(user_settings) + except Exception as e: + logger.warning(f"Failed to get user language for run {run_id}: {e}") + return "en-US" + async def connect(self, websocket: WebSocket, run_id: int) -> bool: try: await websocket.accept() @@ -269,6 +281,18 @@ async def start_stream( ) await self._update_run_status(run_id, RunStatus.COMPLETE) else: + # get user language and generate cancel message + language = await self._get_user_language(run_id) + cancel_message = get_text("backend.run_cancelled_by_user", language) + self._cancel_message = TeamResult( + task_result=TaskResult( + messages=[TextMessage(source="user", content=cancel_message)], + stop_reason=cancel_message, + ), + usage="", + duration=0, + ).model_dump() + await self._send_message( run_id, { @@ -412,10 +436,10 @@ async def poll_for_response(): except asyncio.TimeoutError: # Stop the run if timeout occurs logger.warning(f"Input response timeout for run {run_id}") - await self.stop_run( - run_id, - "Magentic-UI timed out while waiting for your input. To resume, please enter a follow-up message in the input box or you can simply type 'continue'.", - ) + # get user language + language = await self._get_user_language(run_id) + timeout_message = get_text("backend.magentic_ui_timed_out_waiting_for_input", language) + await self.stop_run(run_id, timeout_message) raise else: raise ValueError(f"No input queue for run {run_id}") @@ -514,6 +538,10 @@ async def _send_message(self, run_id: int, message: Dict[str, Any]) -> None: ) await self.disconnect(run_id) except Exception as e: + # 检查是否是 GroupChatError 相关的错误 + if "GroupChatError" in str(e) or "Unhandled message in agent container" in str(e): + logger.warning(f"Ignoring GroupChatError in _send_message for run {run_id}: {e}") + logger.error(f"Error sending message for run {run_id}: {e}, {message}") # Don't try to send error message here to avoid potential recursive loop await self._update_run_status(run_id, RunStatus.ERROR, str(e)) @@ -528,10 +556,14 @@ async def _handle_stream_error(self, run_id: int, error: Exception) -> None: error (Exception): Exception that occurred """ if run_id not in self._closed_connections: + # get user language + language = await self._get_user_language(run_id) + error_message = get_text("backend.error_occurred_while_processing", language) + error_result = TeamResult( task_result=TaskResult( - messages=[TextMessage(source="system", content=str(error))], - stop_reason="An error occurred while processing this run", + messages=[TextMessage(source="system", content=error_message)], + stop_reason=error_message, ), usage="", duration=0, @@ -674,15 +706,18 @@ async def cleanup(self) -> None: self._cancellation_tokens[run_id].cancel() run = await self._get_run(run_id) if run and run.status == RunStatus.ACTIVE: + # get user language + language = await self._get_user_language(run_id) + shutdown_message = get_text("backend.run_interrupted_by_server_shutdown", language) interrupted_result = TeamResult( task_result=TaskResult( messages=[ TextMessage( source="system", - content="Run interrupted by server shutdown", + content=shutdown_message, ) ], - stop_reason="server_shutdown", + stop_reason=shutdown_message, ), usage="", duration=0, From 584c77094a81acfba39419164249c6a1b73f10fc Mon Sep 17 00:00:00 2001 From: zhangjiaqun Date: Wed, 6 Aug 2025 10:15:12 +0800 Subject: [PATCH 2/3] update UI --- .../settings/tabs/GeneralSettings/GeneralSettings.tsx | 3 +++ 1 file changed, 3 insertions(+) diff --git a/frontend/src/components/settings/tabs/GeneralSettings/GeneralSettings.tsx b/frontend/src/components/settings/tabs/GeneralSettings/GeneralSettings.tsx index 5117bc21..b9909bea 100644 --- a/frontend/src/components/settings/tabs/GeneralSettings/GeneralSettings.tsx +++ b/frontend/src/components/settings/tabs/GeneralSettings/GeneralSettings.tsx @@ -41,6 +41,9 @@ const GeneralSettings: React.FC = ({ )} + + + {t('language.language')}