diff --git a/src/Serilog.Ui.Web/.prettierrc.yml b/src/Serilog.Ui.Web/.prettierrc.yml index 04c1b775..0a477d60 100644 --- a/src/Serilog.Ui.Web/.prettierrc.yml +++ b/src/Serilog.Ui.Web/.prettierrc.yml @@ -6,4 +6,4 @@ trailingComma: all printWidth: 90 plugins: - - "prettier-plugin-organize-imports" \ No newline at end of file + - 'prettier-plugin-organize-imports' diff --git a/src/Serilog.Ui.Web/package.json b/src/Serilog.Ui.Web/package.json index a30766f0..c732dd2c 100644 --- a/src/Serilog.Ui.Web/package.json +++ b/src/Serilog.Ui.Web/package.json @@ -1,5 +1,5 @@ { - "version": "3.1.0", + "version": "3.2.0", "name": "serilog-ui", "private": true, "type": "module", @@ -15,41 +15,41 @@ }, "dependencies": { "@fontsource/mononoki": "^5.2.5", - "@mantine/core": "^7.17.2", - "@mantine/dates": "^7.17.2", - "@mantine/hooks": "^7.17.2", - "@mantine/notifications": "^7.17.2", + "@mantine/core": "^7.17.3", + "@mantine/dates": "^7.17.3", + "@mantine/hooks": "^7.17.3", + "@mantine/notifications": "^7.17.3", "@tabler/icons-react": "^3.31.0", - "@tanstack/react-query": "^5.68.0", + "@tanstack/react-query": "^5.71.10", "dayjs": "^1.11.13", "jose": "^6.0.10", "react": "^18.3.1", "react-dom": "^18.3.1", - "react-hook-form": "^7.54.2", - "react-router": "^7.3.0", - "xml-formatter": "^3.6.4" + "react-hook-form": "^7.55.0", + "react-router": "^7.5.0", + "xml-formatter": "^3.6.5" }, "devDependencies": { "@faker-js/faker": "^9.6.0", "@testing-library/dom": "^10.4.0", "@testing-library/jest-dom": "^6.6.3", - "@testing-library/react": "^16.2.0", + "@testing-library/react": "^16.3.0", "@testing-library/user-event": "^14.6.1", - "@types/node": "^22.13.10", + "@types/node": "^22.14.0", "@types/react": "^18.3.11", "@types/react-dom": "^18.3.0", - "@vitejs/plugin-react-swc": "^3.8.0", - "@vitest/coverage-istanbul": "^3.0.8", - "@vitest/ui": "^3.0.8", + "@vitejs/plugin-react-swc": "^3.8.1", + "@vitest/coverage-istanbul": "^3.1.1", + "@vitest/ui": "^3.1.1", "@welldone-software/why-did-you-render": "^10.0.1", "eslint": "^8.57.0", "eslint-config-prettier": "^10.1.1", "eslint-plugin-html": "^8.1.2", "eslint-plugin-import": "^2.31.0", "eslint-plugin-jsx-a11y": "^6.10.2", - "eslint-plugin-prettier": "^5.2.3", + "eslint-plugin-prettier": "^5.2.6", "eslint-plugin-promise": "^7.2.1", - "eslint-plugin-react": "^7.37.4", + "eslint-plugin-react": "^7.37.5", "eslint-plugin-react-hooks": "^5.2.0", "eslint-plugin-testing-library": "^7.1.1", "eslint-plugin-vitest": "^0.5.4", @@ -63,13 +63,13 @@ "prettier-plugin-organize-imports": "^4.1.0", "shiki": "^3.2.1", "testing-library-selector": "^0.3.1", - "typescript": "^5.8.2", - "typescript-eslint": "^8.26.1", + "typescript": "^5.8.3", + "typescript-eslint": "^8.29.0", "vite": "^6.2.5", - "vite-plugin-checker": "^0.9.0", + "vite-plugin-checker": "^0.9.1", "vite-plugin-mkcert": "^1.17.8", "vite-tsconfig-paths": "^5.1.4", - "vitest": "^3.0.8", + "vitest": "^3.1.1", "vitest-sonar-reporter": "^2.0.0" }, "engines": { diff --git a/src/Serilog.Ui.Web/src/__tests__/_setup/mocks/fetch.ts b/src/Serilog.Ui.Web/src/__tests__/_setup/mocks/fetch.ts index 27d0cd9e..36c8c87a 100644 --- a/src/Serilog.Ui.Web/src/__tests__/_setup/mocks/fetch.ts +++ b/src/Serilog.Ui.Web/src/__tests__/_setup/mocks/fetch.ts @@ -1,5 +1,6 @@ import dayjs from 'dayjs'; import { http, HttpResponse } from 'msw'; +import { defaultAuthType } from '../../../app/hooks/useSerilogUiProps.tsx'; import { AuthType, EncodedSeriLogObject, @@ -9,7 +10,6 @@ import { SortPropertyOptions, } from '../../../types/types'; import { dbKeysMock, fakeLogs, fakeLogs2ndTable, fakeLogs3rdTable } from './samples'; -import { defaultAuthType } from '../../../app/hooks/useSerilogUiProps.tsx'; export const developmentListenersHost = ['https://localhost:3001']; @@ -51,7 +51,9 @@ export const handlers = developmentListenersHost.flatMap((dlh) => [ http.get(`${dlh}/api/keys`, ({ request }) => { const auth = request.headers.get('authorization'); - return defaultAuthType !== AuthType.Custom && !auth ? HttpResponse.error() : HttpResponse.json(dbKeysMock); + return defaultAuthType !== AuthType.Custom && !auth + ? HttpResponse.error() + : HttpResponse.json(dbKeysMock); }), ]); diff --git a/src/Serilog.Ui.Web/src/__tests__/components/Refresh/RefreshButton.spec.tsx b/src/Serilog.Ui.Web/src/__tests__/components/Refresh/RefreshButton.spec.tsx new file mode 100644 index 00000000..10c41b76 --- /dev/null +++ b/src/Serilog.Ui.Web/src/__tests__/components/Refresh/RefreshButton.spec.tsx @@ -0,0 +1,81 @@ +import { act, render, screen, userEvent } from '__tests__/_setup/testing-utils'; +import { RefreshButton } from 'app/components/Refresh/RefreshButton'; +import { liveRefreshOptions } from 'app/hooks/useLiveRefresh'; +import { afterEach, beforeEach, describe, expect, it, vi } from 'vitest'; + +vi.mock('react-hook-form', async () => { + const actual = + await vi.importActual('react-hook-form'); + + return { ...actual, useWatch: () => 'page' }; +}); + +const headers = () => { + const head = new Headers(); + head.append('authorization', 'test'); + return head; +}; +vi.mock('../../../app/hooks/useAuthProperties', () => ({ + useAuthProperties: () => ({ + fetchInfo: { + headers: { headers: headers() }, + routePrefix: '', + }, + isHeaderReady: true, + }), +})); + +describe('RefreshButton', () => { + beforeEach(() => { + vi.useFakeTimers({ shouldAdvanceTime: true }); + }); + afterEach(vi.useRealTimers); + + it('renders', async () => { + render(); + + const durationSelector = screen.getByLabelText('refresh-duration-selector'); + expect(durationSelector).toBeInTheDocument(); + + await userEvent.click(durationSelector); + await act(vi.advanceTimersToNextTimerAsync); + + const times = liveRefreshOptions.map((lro) => lro.value); + times.forEach((time) => { + expect(screen.getByLabelText('refresh-duration-' + time)).toBeInTheDocument(); + }); + }); + + it('runs live feed activies with refetch sample', async () => { + const spy = vi.spyOn(global, 'fetch'); + render(); + + const durationSelector = screen.getByLabelText('refresh-duration-selector'); + await userEvent.click(durationSelector); + await act(vi.advanceTimersToNextTimerAsync); + + const sampleOpt = liveRefreshOptions[5]; + const timeSelector = screen.getByLabelText('refresh-duration-' + sampleOpt.value); + await userEvent.click(timeSelector); + await act(vi.advanceTimersToNextTimerAsync); + + expect(spy).toHaveBeenCalledOnce(); + + await act(async () => { + await vi.advanceTimersByTimeAsync(1000 * 300 + 1); + }); + expect(spy).toHaveBeenCalledTimes(2); + + const durationStopper = screen.getByLabelText('refresh-duration-cancel-button'); + expect(screen.queryByLabelText('refresh-duration-selector')).not.toBeInTheDocument(); + expect(durationStopper).toBeInTheDocument(); + + await userEvent.click(durationStopper); + await act(vi.advanceTimersToNextTimerAsync); + + expect( + screen.queryByLabelText('refresh-duration-cancel-button'), + ).not.toBeInTheDocument(); + expect(screen.getByLabelText('refresh-duration-selector')).toBeInTheDocument(); + }); +}); diff --git a/src/Serilog.Ui.Web/src/__tests__/components/ShellStructure/Header.spec.tsx b/src/Serilog.Ui.Web/src/__tests__/components/ShellStructure/Header.spec.tsx index adcdf6b5..5030eed1 100644 --- a/src/Serilog.Ui.Web/src/__tests__/components/ShellStructure/Header.spec.tsx +++ b/src/Serilog.Ui.Web/src/__tests__/components/ShellStructure/Header.spec.tsx @@ -23,8 +23,8 @@ describe('Header', () => { await waitFor(() => { expect(screen.getByRole('button', { name: 'Filter' })).toBeInTheDocument(); }); - await waitFor(() => { - expect(screen.getByText('Serilog UI')).toBeInTheDocument(); - }); + + expect(screen.getByText('Serilog UI')).toBeInTheDocument(); + expect(screen.getByLabelText('refresh-duration-selector')).toBeInTheDocument(); }); }); diff --git a/src/Serilog.Ui.Web/src/__tests__/hooks/useLiveRefresh.spec.ts b/src/Serilog.Ui.Web/src/__tests__/hooks/useLiveRefresh.spec.ts new file mode 100644 index 00000000..719ae1aa --- /dev/null +++ b/src/Serilog.Ui.Web/src/__tests__/hooks/useLiveRefresh.spec.ts @@ -0,0 +1,76 @@ +import { act, renderHook } from '__tests__/_setup/testing-utils'; +import { describe, expect, it } from 'vitest'; +import { useLiveRefresh } from '../../app/hooks/useLiveRefresh'; + +describe('useLiveRefresh', () => { + it('returns base properties', () => { + const { result } = renderHook(() => useLiveRefresh()); + + expect(result.current.isLiveRefreshRunning).toBeFalsy(); + expect(result.current.liveRefreshLabel).toBe(''); + expect(result.current.refetchInterval).toBe(0); + }); + + it.each([ + { refetch: 5000, label: '5s', time: 'five' }, + { refetch: 15000, label: '15s', time: 'fifteen' }, + { refetch: 30000, label: '30s', time: 'thirty' }, + { refetch: 60000, label: '1m', time: 'sixty' }, + { refetch: 120000, label: '2m', time: 'onehundredtwenty' }, + { refetch: 300000, label: '5m', time: 'threehundred' }, + { refetch: 900000, label: '15m', time: 'ninehundred' }, + ])('starts fetch interval', ({ label, refetch, time }) => { + const { result } = renderHook(() => useLiveRefresh()); + + act(() => { + result.current.startLiveRefresh(time); + }); + + expect(result.current.isLiveRefreshRunning).toBeTruthy(); + expect(result.current.liveRefreshLabel).toBe(label); + expect(result.current.refetchInterval).toBe(refetch); + }); + + it('stops fetch interval', () => { + const { result } = renderHook(() => useLiveRefresh()); + + act(() => { + result.current.startLiveRefresh('five'); + }); + expect(result.current.refetchInterval).toBe(5000); + + act(() => { + result.current.stopLiveRefresh(); + }); + + expect(result.current.isLiveRefreshRunning).toBeFalsy(); + expect(result.current.refetchInterval).toBe(0); + }); + + it('does not activate on invalid time', () => { + const { result } = renderHook(() => useLiveRefresh()); + + act(() => { + result.current.startLiveRefresh('five'); + }); + expect(result.current.refetchInterval).toBe(5000); + + act(() => { + result.current.startLiveRefresh(null); + }); + + expect(result.current.isLiveRefreshRunning).toBeFalsy(); + expect(result.current.refetchInterval).toBe(0); + }); + + it('set activation time to 0 on unexpected time', () => { + const { result } = renderHook(() => useLiveRefresh()); + + act(() => { + result.current.startLiveRefresh('uhm'); + }); + + expect(result.current.isLiveRefreshRunning).toBeFalsy(); + expect(result.current.refetchInterval).toBe(0); + }); +}); diff --git a/src/Serilog.Ui.Web/src/app/components/Authorization/AuthorizeButton.tsx b/src/Serilog.Ui.Web/src/app/components/Authorization/AuthorizeButton.tsx index 9495b22b..f22a2723 100644 --- a/src/Serilog.Ui.Web/src/app/components/Authorization/AuthorizeButton.tsx +++ b/src/Serilog.Ui.Web/src/app/components/Authorization/AuthorizeButton.tsx @@ -3,6 +3,7 @@ import { useDisclosure } from '@mantine/hooks'; import { IconLockCheck, IconLockOpen } from '@tabler/icons-react'; import { useSerilogUiProps } from 'app/hooks/useSerilogUiProps'; import { lazy, memo, Suspense } from 'react'; +import { theme } from 'style/theme'; import { AuthType } from 'types/types'; import { useAuthProperties } from '../../hooks/useAuthProperties'; @@ -18,7 +19,7 @@ const AuthorizeButton = () => { return ( <> - diff --git a/src/Serilog.Ui.Web/src/app/components/Refresh/RefreshButton.tsx b/src/Serilog.Ui.Web/src/app/components/Refresh/RefreshButton.tsx new file mode 100644 index 00000000..6b1fb809 --- /dev/null +++ b/src/Serilog.Ui.Web/src/app/components/Refresh/RefreshButton.tsx @@ -0,0 +1,61 @@ +import { Button, Popover, Tooltip } from '@mantine/core'; +import { IconRefresh } from '@tabler/icons-react'; +import { liveRefreshOptions } from 'app/hooks/useLiveRefresh'; +import useQueryLogs from 'app/hooks/useQueryLogs'; +import classes from 'style/search.module.css'; +import { theme } from 'style/theme'; + +export const RefreshButton = () => { + const { isLiveRefreshRunning, liveRefreshLabel, startLiveRefresh, stopLiveRefresh } = + useQueryLogs(); + + if (isLiveRefreshRunning) + return ( + + + + ); + + return ( + + + + + + + + + {liveRefreshOptions.map((p) => ( + + ))} + + + + ); +}; diff --git a/src/Serilog.Ui.Web/src/app/components/ShellStructure/Header.tsx b/src/Serilog.Ui.Web/src/app/components/ShellStructure/Header.tsx index 0820e954..dd224620 100644 --- a/src/Serilog.Ui.Web/src/app/components/ShellStructure/Header.tsx +++ b/src/Serilog.Ui.Web/src/app/components/ShellStructure/Header.tsx @@ -11,6 +11,7 @@ import { useSerilogUiProps } from 'app/hooks/useSerilogUiProps'; import { isStringGuard } from 'app/util/guards'; import { Suspense, lazy } from 'react'; import classes from 'style/header.module.css'; +import { RefreshButton } from '../Refresh/RefreshButton'; import BrandBadge from './BrandBadge'; const HeaderActivity = lazy(() => import('./HeaderActivity')); @@ -69,6 +70,8 @@ const Head = ({ isMobileOpen, toggleMobile }: IProps) => { )} + + diff --git a/src/Serilog.Ui.Web/src/app/hooks/useLiveRefresh.ts b/src/Serilog.Ui.Web/src/app/hooks/useLiveRefresh.ts new file mode 100644 index 00000000..0e742932 --- /dev/null +++ b/src/Serilog.Ui.Web/src/app/hooks/useLiveRefresh.ts @@ -0,0 +1,54 @@ +import { useState } from 'react'; + +enum options { + 'zero' = 0, + 'five' = 5, + 'fifteen' = 15, + 'thirty' = 30, + 'sixty' = 60, + 'onehundredtwenty' = 120, + 'threehundred' = 300, + 'ninehundred' = 900, +} + +export const liveRefreshOptions = [ + { label: '5s', value: 'five' }, + { label: '15s', value: 'fifteen' }, + { label: '30s', value: 'thirty' }, + { label: '1m', value: 'sixty' }, + { label: '2m', value: 'onehundredtwenty' }, + { label: '5m', value: 'threehundred' }, + { label: '15m', value: 'ninehundred' }, +]; + +export const useLiveRefresh = () => { + const [refetchInterval, setRefetchInterval] = useState(0); + + const isLiveRefreshRunning = refetchInterval > 0; + const liveRefreshLabel = !isLiveRefreshRunning + ? '' + : liveRefreshOptions.find((lr) => lr.value === options[refetchInterval / 1000]) + ?.label; + + const startLiveRefresh = (v: string | null) => { + if (v === null) { + return setRefetchInterval(0); + } + + const eachSecond = options[v]; + const isNan = Number.isNaN(Number.parseInt(eachSecond, 10)); + setRefetchInterval(isNan ? 0 : eachSecond * 1000); + }; + + const stopLiveRefresh = () => { + setRefetchInterval(0); + }; + + return { + isLiveRefreshRunning, + liveRefreshLabel, + refetchInterval, + startLiveRefresh, + stopLiveRefresh, + }; +}; diff --git a/src/Serilog.Ui.Web/src/app/hooks/useQueryLogs.ts b/src/Serilog.Ui.Web/src/app/hooks/useQueryLogs.ts index 7356a975..5329391e 100644 --- a/src/Serilog.Ui.Web/src/app/hooks/useQueryLogs.ts +++ b/src/Serilog.Ui.Web/src/app/hooks/useQueryLogs.ts @@ -1,34 +1,50 @@ import { keepPreviousData, useQuery } from '@tanstack/react-query'; +import { useWatch } from 'react-hook-form'; import { fetchLogs } from '../queries/logs'; import { useAuthProperties } from './useAuthProperties'; +import { useLiveRefresh } from './useLiveRefresh'; import { useSearchForm } from './useSearchForm'; -import { useWatch } from 'react-hook-form'; const useQueryLogs = () => { const { fetchInfo, isHeaderReady } = useAuthProperties(); const { getValues } = useSearchForm(); + const { + isLiveRefreshRunning, + liveRefreshLabel, + refetchInterval, + startLiveRefresh, + stopLiveRefresh, + } = useLiveRefresh(); - const currentDbKey = useWatch({ name: 'table' }) - const entriesPerPage = useWatch({ name: 'entriesPerPage' }) - const page = useWatch({ name: 'page' }) - const sortBy = useWatch({ name: 'sortBy' }) - const sortOn = useWatch({ name: 'sortOn' }) + const currentDbKey = useWatch({ name: 'table' }); + const entriesPerPage = useWatch({ name: 'entriesPerPage' }); + const page = useWatch({ name: 'page' }); + const sortBy = useWatch({ name: 'sortBy' }); + const sortOn = useWatch({ name: 'sortOn' }); - return useQuery({ - enabled: true, - queryKey: ['get-logs', entriesPerPage, page, sortBy, sortOn, currentDbKey], - queryFn: async () => { - if (!isHeaderReady) return null; + return { + ...useQuery({ + enabled: true, + queryKey: ['get-logs', entriesPerPage, page, sortBy, sortOn, currentDbKey], + queryFn: async () => { + if (!isHeaderReady) return null; + const values = getValues(); - return currentDbKey - ? await fetchLogs(getValues(), fetchInfo.headers, fetchInfo.routePrefix) - : null; - }, - placeholderData: keepPreviousData, - refetchOnMount: false, - refetchOnWindowFocus: false, - retry: false, - }); + return currentDbKey + ? await fetchLogs(values, fetchInfo.headers, fetchInfo.routePrefix) + : null; + }, + placeholderData: keepPreviousData, + refetchOnMount: false, + refetchOnWindowFocus: false, + retry: false, + refetchInterval, + }), + isLiveRefreshRunning, + liveRefreshLabel, + startLiveRefresh, + stopLiveRefresh, + }; }; export default useQueryLogs; diff --git a/src/Serilog.Ui.Web/src/style/search.module.css b/src/Serilog.Ui.Web/src/style/search.module.css index 80f57371..9190340a 100644 --- a/src/Serilog.Ui.Web/src/style/search.module.css +++ b/src/Serilog.Ui.Web/src/style/search.module.css @@ -30,3 +30,32 @@ justify-self: end; } } + +.refreshButton { + @keyframes blink { + 0% { + box-shadow: 'transparent'; + } + 50% { + box-shadow: 0 0 0.7em #efeff0; + } + 100% { + box-shadow: 'transparent'; + } + } + + border: 4px solid transparent; + animation: blink 2.5s ease-in infinite; + border-radius: 50%; + height: 30px; + padding: 2px; + width: 30px; +} + +.activateRefreshButton { + border: 4px solid transparent; + border-radius: 50%; + height: 30px; + padding: 2px; + width: 30px; +} diff --git a/src/Serilog.Ui.Web/yarn.lock b/src/Serilog.Ui.Web/yarn.lock index 2f412b02..770f5f92 100644 --- a/src/Serilog.Ui.Web/yarn.lock +++ b/src/Serilog.Ui.Web/yarn.lock @@ -481,10 +481,10 @@ "@jridgewell/resolve-uri" "^3.1.0" "@jridgewell/sourcemap-codec" "^1.4.14" -"@mantine/core@^7.17.2": - version "7.17.2" - resolved "https://registry.yarnpkg.com/@mantine/core/-/core-7.17.2.tgz#027fe3c8d43abefc318b7b9229a8e5146635c7b8" - integrity sha512-R6MYhitJ0JEgrhadd31Nw9FhRaQwDHjXUs5YIlitKH/fTOz9gKSxKjzmNng3bEBQCcbEDOkZj3FRcBgTUh/F0Q== +"@mantine/core@^7.17.3": + version "7.17.3" + resolved "https://registry.yarnpkg.com/@mantine/core/-/core-7.17.3.tgz#78ee30bb4493c6117d6d381fbfc374d773eedf8b" + integrity sha512-N/AfV5eMnfEMx9WzI7AU5pNFBEzAfT/KtE2XDKS+0ht6RifUmolIxyIvoGMYz2yUEsCBMJZqmBq33Rabf5W7Ug== dependencies: "@floating-ui/react" "^0.26.28" clsx "^2.1.1" @@ -493,30 +493,30 @@ react-textarea-autosize "8.5.6" type-fest "^4.27.0" -"@mantine/dates@^7.17.2": - version "7.17.2" - resolved "https://registry.yarnpkg.com/@mantine/dates/-/dates-7.17.2.tgz#4cd7834fcb6e338c359796bf23eb60ba78ab8737" - integrity sha512-7bB992j8f+uEi280jab0/8i5yfsN/3oSrMDFwatZ+7XSDUwiP0YFib/FVX0pNSSqdFpbXhUmsZEECX71QtHw+Q== +"@mantine/dates@^7.17.3": + version "7.17.3" + resolved "https://registry.yarnpkg.com/@mantine/dates/-/dates-7.17.3.tgz#b1f4308df560d6980c4104108a9e30b8958b6c1e" + integrity sha512-gegLSlK7mi3jAaL/JMLdy6oK9CmY08nXoLvbeO03i+751bmbbbzpoFAaxMzbR6vkP9tPuoapOxJqgDzn2Jm+Dw== dependencies: clsx "^2.1.1" -"@mantine/hooks@^7.17.2": - version "7.17.2" - resolved "https://registry.yarnpkg.com/@mantine/hooks/-/hooks-7.17.2.tgz#bfd10e65cb5a83326ecfdd339e56558ea6045c44" - integrity sha512-tbErVcGZu0E4dSmE6N0k6Tv1y9R3SQmmQgwqorcc+guEgKMdamc36lucZGlJnSGUmGj+WLUgELkEQ0asdfYBDA== +"@mantine/hooks@^7.17.3": + version "7.17.3" + resolved "https://registry.yarnpkg.com/@mantine/hooks/-/hooks-7.17.3.tgz#fe8c32edaeffb43f0fa5d984f6373fcef47f1ff8" + integrity sha512-6o65Rbfl8jd1C1nF9icvungqL0qZViEOmrZgkyKXxBYkC3x91fz4zftwQgNjt1tZHWDNO6Bo4GpRjJyAdwl48g== -"@mantine/notifications@^7.17.2": - version "7.17.2" - resolved "https://registry.yarnpkg.com/@mantine/notifications/-/notifications-7.17.2.tgz#f534a1387d187b605c2840d85c56da03282bdba2" - integrity sha512-vg0L8cmihz0ODg4WJ9MAyK06WPt/6g67ksIUFxd4F8RfdJbIMLTsNG9yWoSfuhtXenUg717KaA917IWLjDSaqw== +"@mantine/notifications@^7.17.3": + version "7.17.3" + resolved "https://registry.yarnpkg.com/@mantine/notifications/-/notifications-7.17.3.tgz#156d74b5b5acd6d14028a5e77c3ec622413ab1ae" + integrity sha512-MqakDqu/CZzO4arZGpXs3TmGTajqL4xm28vtqW4qWFSU5HZWQ4EosqipqvIJ+swC6YbxNiWvFcfnxxPlHdYk9g== dependencies: - "@mantine/store" "7.17.2" + "@mantine/store" "7.17.3" react-transition-group "4.4.5" -"@mantine/store@7.17.2": - version "7.17.2" - resolved "https://registry.yarnpkg.com/@mantine/store/-/store-7.17.2.tgz#c954d23aab2c208a39c129131f2d7d109578753f" - integrity sha512-UoMUYQK/z58hMueCkpDIXc49gPgrVO/zcpb0k+B7MFU51EIUiFzHLxLFBmWrgCAM6rzJORqN8JjyCd/PB9j4aw== +"@mantine/store@7.17.3": + version "7.17.3" + resolved "https://registry.yarnpkg.com/@mantine/store/-/store-7.17.3.tgz#6f2b623d28bd8f4b74c8f2e013544c858fc999d9" + integrity sha512-wXQXe/Ljv2N6TDRsoVwOHmTGZey7Nt/SS6VeeMujKeNnAybPPXaP1jIbN50MKJoDS4qVPCHJNaHwVKIgMur2aQ== "@mswjs/interceptors@^0.37.0": version "0.37.6" @@ -574,10 +574,10 @@ resolved "https://registry.yarnpkg.com/@pkgjs/parseargs/-/parseargs-0.11.0.tgz#a77ea742fab25775145434eb1d2328cf5013ac33" integrity sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg== -"@pkgr/core@^0.1.0": - version "0.1.1" - resolved "https://registry.yarnpkg.com/@pkgr/core/-/core-0.1.1.tgz#1ec17e2edbec25c8306d424ecfbf13c7de1aaa31" - integrity sha512-cq8o4cWH0ibXh9VGi5P20Tu9XF/0fFXl9EUinr9QfTM7a7p0oTA4iJRCQWppXR1Pg8dSM0UCItCkPwsk9qWWYA== +"@pkgr/core@^0.2.0": + version "0.2.0" + resolved "https://registry.yarnpkg.com/@pkgr/core/-/core-0.2.0.tgz#8dff61038cb5884789d8b323d9869e5363b976f7" + integrity sha512-vsJDAkYR6qCPu+ioGScGiMYR7LvZYIXh/dlQeviqoTWNCVfKTLYD/LkNWH4Mxsv2a5vpIRc77FN5DnmK1eBggQ== "@polka/url@^1.0.0-next.24": version "1.0.0-next.28" @@ -738,84 +738,84 @@ resolved "https://registry.yarnpkg.com/@shikijs/vscode-textmate/-/vscode-textmate-10.0.2.tgz#a90ab31d0cc1dfb54c66a69e515bf624fa7b2224" integrity sha512-83yeghZ2xxin3Nj8z1NMd/NCuca+gsYXswywDy5bHvwlWL8tpTQmzGeUuHd9FC3E/SBEMvzJRwWEOz5gGes9Qg== -"@swc/core-darwin-arm64@1.11.8": - version "1.11.8" - resolved "https://registry.yarnpkg.com/@swc/core-darwin-arm64/-/core-darwin-arm64-1.11.8.tgz#46e49bae73f0a11b62518184b715a3ab0230006b" - integrity sha512-rrSsunyJWpHN+5V1zumndwSSifmIeFQBK9i2RMQQp15PgbgUNxHK5qoET1n20pcUrmZeT6jmJaEWlQchkV//Og== - -"@swc/core-darwin-x64@1.11.8": - version "1.11.8" - resolved "https://registry.yarnpkg.com/@swc/core-darwin-x64/-/core-darwin-x64-1.11.8.tgz#90c98dbee1b02526d54a6a7200e612577dbfc203" - integrity sha512-44goLqQuuo0HgWnG8qC+ZFw/qnjCVVeqffhzFr9WAXXotogVaxM8ze6egE58VWrfEc8me8yCcxOYL9RbtjhS/Q== - -"@swc/core-linux-arm-gnueabihf@1.11.8": - version "1.11.8" - resolved "https://registry.yarnpkg.com/@swc/core-linux-arm-gnueabihf/-/core-linux-arm-gnueabihf-1.11.8.tgz#22a2ac29fb2aa7f42d8b0d7ddff915878b237be8" - integrity sha512-Mzo8umKlhTWwF1v8SLuTM1z2A+P43UVhf4R8RZDhzIRBuB2NkeyE+c0gexIOJBuGSIATryuAF4O4luDu727D1w== - -"@swc/core-linux-arm64-gnu@1.11.8": - version "1.11.8" - resolved "https://registry.yarnpkg.com/@swc/core-linux-arm64-gnu/-/core-linux-arm64-gnu-1.11.8.tgz#4244951dc7b720ada906418684b0aecf2a508864" - integrity sha512-EyhO6U+QdoGYC1MeHOR0pyaaSaKYyNuT4FQNZ1eZIbnuueXpuICC7iNmLIOfr3LE5bVWcZ7NKGVPlM2StJEcgA== - -"@swc/core-linux-arm64-musl@1.11.8": - version "1.11.8" - resolved "https://registry.yarnpkg.com/@swc/core-linux-arm64-musl/-/core-linux-arm64-musl-1.11.8.tgz#9b27cd4dd2964128a02cc0ed93cf33cec3ff210d" - integrity sha512-QU6wOkZnS6/QuBN1MHD6G2BgFxB0AclvTVGbqYkRA7MsVkcC29PffESqzTXnypzB252/XkhQjoB2JIt9rPYf6A== - -"@swc/core-linux-x64-gnu@1.11.8": - version "1.11.8" - resolved "https://registry.yarnpkg.com/@swc/core-linux-x64-gnu/-/core-linux-x64-gnu-1.11.8.tgz#da381f4ec26b5d24555622a5baa94bd953e19b1e" - integrity sha512-r72onUEIU1iJi9EUws3R28pztQ/eM3EshNpsPRBfuLwKy+qn3et55vXOyDhIjGCUph5Eg2Yn8H3h6MTxDdLd+w== - -"@swc/core-linux-x64-musl@1.11.8": - version "1.11.8" - resolved "https://registry.yarnpkg.com/@swc/core-linux-x64-musl/-/core-linux-x64-musl-1.11.8.tgz#29155eaf4805835f45ac7294fc2e57e4b050677a" - integrity sha512-294k8cLpO103++f4ZUEDr3vnBeUfPitW6G0a3qeVZuoXFhFgaW7ANZIWknUc14WiLOMfMecphJAEiy9C8OeYSw== - -"@swc/core-win32-arm64-msvc@1.11.8": - version "1.11.8" - resolved "https://registry.yarnpkg.com/@swc/core-win32-arm64-msvc/-/core-win32-arm64-msvc-1.11.8.tgz#022c3876c91e201c17944339830d21f141c25c47" - integrity sha512-EbjOzQ+B85rumHyeesBYxZ+hq3ZQn+YAAT1ZNE9xW1/8SuLoBmHy/K9YniRGVDq/2NRmp5kI5+5h5TX0asIS9A== - -"@swc/core-win32-ia32-msvc@1.11.8": - version "1.11.8" - resolved "https://registry.yarnpkg.com/@swc/core-win32-ia32-msvc/-/core-win32-ia32-msvc-1.11.8.tgz#dbd2efd9c33a269c6eb2a513ad03b4a554a1ac94" - integrity sha512-Z+FF5kgLHfQWIZ1KPdeInToXLzbY0sMAashjd/igKeP1Lz0qKXVAK+rpn6ASJi85Fn8wTftCGCyQUkRVn0bTDg== - -"@swc/core-win32-x64-msvc@1.11.8": - version "1.11.8" - resolved "https://registry.yarnpkg.com/@swc/core-win32-x64-msvc/-/core-win32-x64-msvc-1.11.8.tgz#65ee7cf1eda2cf236e0f5481e0ffde3b1801cf0d" - integrity sha512-j6B6N0hChCeAISS6xp/hh6zR5CSCr037BAjCxNLsT8TGe5D+gYZ57heswUWXRH8eMKiRDGiLCYpPB2pkTqxCSw== - -"@swc/core@^1.10.15": - version "1.11.8" - resolved "https://registry.yarnpkg.com/@swc/core/-/core-1.11.8.tgz#63d2b0171285c0d8b641473fa16a9299b5087066" - integrity sha512-UAL+EULxrc0J73flwYHfu29mO8CONpDJiQv1QPDXsyCvDUcEhqAqUROVTgC+wtJCFFqMQdyr4stAA5/s0KSOmA== +"@swc/core-darwin-arm64@1.11.16": + version "1.11.16" + resolved "https://registry.yarnpkg.com/@swc/core-darwin-arm64/-/core-darwin-arm64-1.11.16.tgz#3001aaed6ec20e97a75064f09a391f1f2d811614" + integrity sha512-l6uWMU+MUdfLHCl3dJgtVEdsUHPskoA4BSu0L1hh9SGBwPZ8xeOz8iLIqZM27lTuXxL4KsYH6GQR/OdQ/vhLtg== + +"@swc/core-darwin-x64@1.11.16": + version "1.11.16" + resolved "https://registry.yarnpkg.com/@swc/core-darwin-x64/-/core-darwin-x64-1.11.16.tgz#2b06c2efbceda4577a82dae9692a2c140069aa1e" + integrity sha512-TH0IW8Ao1WZ4ARFHIh29dAQHYBEl4YnP74n++rjppmlCjY+8v3s5nXMA7IqxO3b5LVHyggWtU4+46DXTyMJM7g== + +"@swc/core-linux-arm-gnueabihf@1.11.16": + version "1.11.16" + resolved "https://registry.yarnpkg.com/@swc/core-linux-arm-gnueabihf/-/core-linux-arm-gnueabihf-1.11.16.tgz#d5ca1d3564c01a1d830baf2b0e8d47301030aae4" + integrity sha512-2IxD9t09oNZrbv37p4cJ9cTHMUAK6qNiShi9s2FJ9LcqSnZSN4iS4hvaaX6KZuG54d58vWnMU7yycjkdOTQcMg== + +"@swc/core-linux-arm64-gnu@1.11.16": + version "1.11.16" + resolved "https://registry.yarnpkg.com/@swc/core-linux-arm64-gnu/-/core-linux-arm64-gnu-1.11.16.tgz#18b60f2ab274fcf3b5df404c77e24cdd64d12bd1" + integrity sha512-AYkN23DOiPh1bf3XBf/xzZQDKSsgZTxlbyTyUIhprLJpAAAT0ZCGAUcS5mHqydk0nWQ13ABUymodvHoroutNzw== + +"@swc/core-linux-arm64-musl@1.11.16": + version "1.11.16" + resolved "https://registry.yarnpkg.com/@swc/core-linux-arm64-musl/-/core-linux-arm64-musl-1.11.16.tgz#66ca2d8689ececffe174b37f40e516efa9df0374" + integrity sha512-n/nWXDRCIhM51dDGELfBcTMNnCiFatE7LDvsbYxb7DJt1HGjaCNvHHCKURb/apJTh/YNtWfgFap9dbsTgw8yPA== + +"@swc/core-linux-x64-gnu@1.11.16": + version "1.11.16" + resolved "https://registry.yarnpkg.com/@swc/core-linux-x64-gnu/-/core-linux-x64-gnu-1.11.16.tgz#bd13bafd45ab847af9980cda3251bdd3c7f52187" + integrity sha512-xr182YQrF47n7Awxj+/ruI21bYw+xO/B26KFVnb+i3ezF9NOhqoqTX+33RL1ZLA/uFTq8ksPZO/y+ZVS/odtQA== + +"@swc/core-linux-x64-musl@1.11.16": + version "1.11.16" + resolved "https://registry.yarnpkg.com/@swc/core-linux-x64-musl/-/core-linux-x64-musl-1.11.16.tgz#c691175c0dd46ad4ff97ff5ed0b968d99832fbc7" + integrity sha512-k2JBfiwWfXCIKrBRjFO9/vEdLSYq0QLJ+iNSLdfrejZ/aENNkbEg8O7O2GKUSb30RBacn6k8HMfJrcPLFiEyCQ== + +"@swc/core-win32-arm64-msvc@1.11.16": + version "1.11.16" + resolved "https://registry.yarnpkg.com/@swc/core-win32-arm64-msvc/-/core-win32-arm64-msvc-1.11.16.tgz#944fbe37dc347634cb0d3f52ef5547b4a98616eb" + integrity sha512-taOb5U+abyEhQgex+hr6cI48BoqSvSdfmdirWcxprIEUBHCxa1dSriVwnJRAJOFI9T+5BEz88by6rgbB9MjbHA== + +"@swc/core-win32-ia32-msvc@1.11.16": + version "1.11.16" + resolved "https://registry.yarnpkg.com/@swc/core-win32-ia32-msvc/-/core-win32-ia32-msvc-1.11.16.tgz#4e0539c82bde71d8f2acf61f6cc732d39d944c67" + integrity sha512-b7yYggM9LBDiMY+XUt5kYWvs5sn0U3PXSOGvF3CbLufD/N/YQiDcYON2N3lrWHYL8aYnwbuZl45ojmQHSQPcdA== + +"@swc/core-win32-x64-msvc@1.11.16": + version "1.11.16" + resolved "https://registry.yarnpkg.com/@swc/core-win32-x64-msvc/-/core-win32-x64-msvc-1.11.16.tgz#98418776be552a5d1fcdccf3e73f16cd7c4d8a4a" + integrity sha512-/ibq/YDc3B5AROkpOKPGxVkSyCKOg+ml8k11RxrW7FAPy6a9y5y9KPcWIqV74Ahq4RuaMNslTQqHWAGSm0xJsQ== + +"@swc/core@^1.11.11": + version "1.11.16" + resolved "https://registry.yarnpkg.com/@swc/core/-/core-1.11.16.tgz#c1ceba4ab2904576672eab0b650cea986e97bb2e" + integrity sha512-wgjrJqVUss8Lxqilg0vkiE0tkEKU3mZkoybQM1Ehy+PKWwwB6lFAwKi20cAEFlSSWo8jFR8hRo19ZELAoLDowg== dependencies: "@swc/counter" "^0.1.3" - "@swc/types" "^0.1.19" + "@swc/types" "^0.1.21" optionalDependencies: - "@swc/core-darwin-arm64" "1.11.8" - "@swc/core-darwin-x64" "1.11.8" - "@swc/core-linux-arm-gnueabihf" "1.11.8" - "@swc/core-linux-arm64-gnu" "1.11.8" - "@swc/core-linux-arm64-musl" "1.11.8" - "@swc/core-linux-x64-gnu" "1.11.8" - "@swc/core-linux-x64-musl" "1.11.8" - "@swc/core-win32-arm64-msvc" "1.11.8" - "@swc/core-win32-ia32-msvc" "1.11.8" - "@swc/core-win32-x64-msvc" "1.11.8" + "@swc/core-darwin-arm64" "1.11.16" + "@swc/core-darwin-x64" "1.11.16" + "@swc/core-linux-arm-gnueabihf" "1.11.16" + "@swc/core-linux-arm64-gnu" "1.11.16" + "@swc/core-linux-arm64-musl" "1.11.16" + "@swc/core-linux-x64-gnu" "1.11.16" + "@swc/core-linux-x64-musl" "1.11.16" + "@swc/core-win32-arm64-msvc" "1.11.16" + "@swc/core-win32-ia32-msvc" "1.11.16" + "@swc/core-win32-x64-msvc" "1.11.16" "@swc/counter@^0.1.3": version "0.1.3" resolved "https://registry.yarnpkg.com/@swc/counter/-/counter-0.1.3.tgz#cc7463bd02949611c6329596fccd2b0ec782b0e9" integrity sha512-e2BR4lsJkkRlKZ/qCHPw9ZaSxc0MVUd7gtbtaB7aMvHeJVYe8sOB8DBZkP2DtISHGSku9sCK6T6cnY0CtXrOCQ== -"@swc/types@^0.1.19": - version "0.1.19" - resolved "https://registry.yarnpkg.com/@swc/types/-/types-0.1.19.tgz#65d9fe81e0a1dc7e861ad698dd581abe3703a2d2" - integrity sha512-WkAZaAfj44kh/UFdAQcrMP1I0nwRqpt27u+08LMBYMqmQfwwMofYoMh/48NGkMMRfC4ynpfwRbJuu8ErfNloeA== +"@swc/types@^0.1.21": + version "0.1.21" + resolved "https://registry.yarnpkg.com/@swc/types/-/types-0.1.21.tgz#6fcadbeca1d8bc89e1ab3de4948cef12344a38c0" + integrity sha512-2YEtj5HJVbKivud9N4bpPBAyZhj4S2Ipe5LkUG94alTpr7in/GU/EARgPAd3BwU+YOmFVJC2+kjqhGRi3r0ZpQ== dependencies: "@swc/counter" "^0.1.3" @@ -831,17 +831,17 @@ resolved "https://registry.yarnpkg.com/@tabler/icons/-/icons-3.31.0.tgz#92d39dc336f2e3e312170420b00ffe9ca474925e" integrity sha512-dblAdeKY3+GA1U+Q9eziZ0ooVlZMHsE8dqP0RkwvRtEsAULoKOYaCUOcJ4oW1DjWegdxk++UAt2SlQVnmeHv+g== -"@tanstack/query-core@5.68.0": - version "5.68.0" - resolved "https://registry.yarnpkg.com/@tanstack/query-core/-/query-core-5.68.0.tgz#3765573de58741c68fb80b128d3e3ffb4d80cb68" - integrity sha512-r8rFYYo8/sY/LNaOqX84h12w7EQev4abFXDWy4UoDVUJzJ5d9Fbmb8ayTi7ScG+V0ap44SF3vNs/45mkzDGyGw== +"@tanstack/query-core@5.71.10": + version "5.71.10" + resolved "https://registry.yarnpkg.com/@tanstack/query-core/-/query-core-5.71.10.tgz#1f2dc5abf595156e7d9c5d6e4f47e805a7083c30" + integrity sha512-/fKEY8fO1nbszfrBatzmhJa1nEwIKn0c6Tv2A1ocSA5OiD2GukOIV8nnBbvJRgZb/VIoBy9/N4PVbABI8YQLow== -"@tanstack/react-query@^5.68.0": - version "5.68.0" - resolved "https://registry.yarnpkg.com/@tanstack/react-query/-/react-query-5.68.0.tgz#f7b242eb800ce7c36b4edbe26c9ba8478eb18826" - integrity sha512-mMOdGDKlwTP/WV72QqSNf4PAMeoBp/DqBHQ222wBfb51Looi8QUqnCnb9O98ZgvNISmy6fzxRGBJdZ+9IBvX2Q== +"@tanstack/react-query@^5.71.10": + version "5.71.10" + resolved "https://registry.yarnpkg.com/@tanstack/react-query/-/react-query-5.71.10.tgz#940d485a499b86aaa37764e26709ed79b393fe29" + integrity sha512-mQYM/ObpL8YMDz8vCoUuHkbe8Yu7NnVRH8aBaBa/3zlufjp1f1VuWjeO3TcumNHfuVMDwEAGinsgwrB7OKADiQ== dependencies: - "@tanstack/query-core" "5.68.0" + "@tanstack/query-core" "5.71.10" "@testing-library/dom@^10.4.0": version "10.4.0" @@ -870,10 +870,10 @@ lodash "^4.17.21" redent "^3.0.0" -"@testing-library/react@^16.2.0": - version "16.2.0" - resolved "https://registry.yarnpkg.com/@testing-library/react/-/react-16.2.0.tgz#c96126ee01a49cdb47175721911b4a9432afc601" - integrity sha512-2cSskAvA1QNtKc8Y9VJQRv0tm3hLVgxRGDB+KYhIaPQJ1I+RHbhIXcM+zClKXzMes/wshsMVzf4B9vS4IZpqDQ== +"@testing-library/react@^16.3.0": + version "16.3.0" + resolved "https://registry.yarnpkg.com/@testing-library/react/-/react-16.3.0.tgz#3a85bb9bdebf180cd76dba16454e242564d598a6" + integrity sha512-kFSyxiEDwv1WLl2fgsq6pPBbw5aWKrsY2/noi1Id0TK0UParSF62oFQFGHXIyaG4pp2tEub/Zlel+fjjZILDsw== dependencies: "@babel/runtime" "^7.12.5" @@ -916,12 +916,12 @@ dependencies: "@types/unist" "*" -"@types/node@^22.13.10": - version "22.13.10" - resolved "https://registry.yarnpkg.com/@types/node/-/node-22.13.10.tgz#df9ea358c5ed991266becc3109dc2dc9125d77e4" - integrity sha512-I6LPUvlRH+O6VRUqYOcMudhaIdUVWfsjnZavnsraHvpBwaEyMN29ry+0UVJhImYL16xsscu0aske3yA+uPOWfw== +"@types/node@^22.14.0": + version "22.14.0" + resolved "https://registry.yarnpkg.com/@types/node/-/node-22.14.0.tgz#d3bfa3936fef0dbacd79ea3eb17d521c628bb47e" + integrity sha512-Kmpl+z84ILoG+3T/zQFyAJsU6EPTmOCj8/2+83fSN6djd6I4o7uOuGIH6vq3PrjY5BGitSbFuMN18j3iknubbA== dependencies: - undici-types "~6.20.0" + undici-types "~6.21.0" "@types/prop-types@*": version "15.7.14" @@ -956,30 +956,30 @@ resolved "https://registry.yarnpkg.com/@types/unist/-/unist-3.0.3.tgz#acaab0f919ce69cce629c2d4ed2eb4adc1b6c20c" integrity sha512-ko/gIFJRv177XgZsZcBwnqJN5x/Gien8qNOn0D5bQU/zAzVf9Zt3BlcUiLqhV9y4ARk0GbT3tnUiPNgnTXzc/Q== -"@typescript-eslint/eslint-plugin@8.26.1": - version "8.26.1" - resolved "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.26.1.tgz#3e48eb847924161843b092c87a9b65176b53782f" - integrity sha512-2X3mwqsj9Bd3Ciz508ZUtoQQYpOhU/kWoUqIf49H8Z0+Vbh6UF/y0OEYp0Q0axOGzaBGs7QxRwq0knSQ8khQNA== +"@typescript-eslint/eslint-plugin@8.29.0": + version "8.29.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.29.0.tgz#151c4878700a5ad229ce6713d2674d58b626b3d9" + integrity sha512-PAIpk/U7NIS6H7TEtN45SPGLQaHNgB7wSjsQV/8+KYokAb2T/gloOA/Bee2yd4/yKVhPKe5LlaUGhAZk5zmSaQ== dependencies: "@eslint-community/regexpp" "^4.10.0" - "@typescript-eslint/scope-manager" "8.26.1" - "@typescript-eslint/type-utils" "8.26.1" - "@typescript-eslint/utils" "8.26.1" - "@typescript-eslint/visitor-keys" "8.26.1" + "@typescript-eslint/scope-manager" "8.29.0" + "@typescript-eslint/type-utils" "8.29.0" + "@typescript-eslint/utils" "8.29.0" + "@typescript-eslint/visitor-keys" "8.29.0" graphemer "^1.4.0" ignore "^5.3.1" natural-compare "^1.4.0" ts-api-utils "^2.0.1" -"@typescript-eslint/parser@8.26.1": - version "8.26.1" - resolved "https://registry.yarnpkg.com/@typescript-eslint/parser/-/parser-8.26.1.tgz#0e2f915a497519fc43f52cf2ecbfa607ff56f72e" - integrity sha512-w6HZUV4NWxqd8BdeFf81t07d7/YV9s7TCWrQQbG5uhuvGUAW+fq1usZ1Hmz9UPNLniFnD8GLSsDpjP0hm1S4lQ== +"@typescript-eslint/parser@8.29.0": + version "8.29.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/parser/-/parser-8.29.0.tgz#b98841e0a8099728cb8583da92326fcb7f5be1d2" + integrity sha512-8C0+jlNJOwQso2GapCVWWfW/rzaq7Lbme+vGUFKE31djwNncIpgXD7Cd4weEsDdkoZDjH0lwwr3QDQFuyrMg9g== dependencies: - "@typescript-eslint/scope-manager" "8.26.1" - "@typescript-eslint/types" "8.26.1" - "@typescript-eslint/typescript-estree" "8.26.1" - "@typescript-eslint/visitor-keys" "8.26.1" + "@typescript-eslint/scope-manager" "8.29.0" + "@typescript-eslint/types" "8.29.0" + "@typescript-eslint/typescript-estree" "8.29.0" + "@typescript-eslint/visitor-keys" "8.29.0" debug "^4.3.4" "@typescript-eslint/scope-manager@7.18.0": @@ -998,21 +998,21 @@ "@typescript-eslint/types" "8.26.0" "@typescript-eslint/visitor-keys" "8.26.0" -"@typescript-eslint/scope-manager@8.26.1": - version "8.26.1" - resolved "https://registry.yarnpkg.com/@typescript-eslint/scope-manager/-/scope-manager-8.26.1.tgz#5e6ad0ac258ccf79462e91c3f43a3f1f7f31a6cc" - integrity sha512-6EIvbE5cNER8sqBu6V7+KeMZIC1664d2Yjt+B9EWUXrsyWpxx4lEZrmvxgSKRC6gX+efDL/UY9OpPZ267io3mg== +"@typescript-eslint/scope-manager@8.29.0": + version "8.29.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/scope-manager/-/scope-manager-8.29.0.tgz#8fd9872823aef65ff71d3f6d1ec9316ace0b6bf3" + integrity sha512-aO1PVsq7Gm+tcghabUpzEnVSFMCU4/nYIgC2GOatJcllvWfnhrgW0ZEbnTxm36QsikmCN1K/6ZgM7fok2I7xNw== dependencies: - "@typescript-eslint/types" "8.26.1" - "@typescript-eslint/visitor-keys" "8.26.1" + "@typescript-eslint/types" "8.29.0" + "@typescript-eslint/visitor-keys" "8.29.0" -"@typescript-eslint/type-utils@8.26.1": - version "8.26.1" - resolved "https://registry.yarnpkg.com/@typescript-eslint/type-utils/-/type-utils-8.26.1.tgz#462f0bae09de72ac6e8e1af2ebe588c23224d7f8" - integrity sha512-Kcj/TagJLwoY/5w9JGEFV0dclQdyqw9+VMndxOJKtoFSjfZhLXhYjzsQEeyza03rwHx2vFEGvrJWJBXKleRvZg== +"@typescript-eslint/type-utils@8.29.0": + version "8.29.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/type-utils/-/type-utils-8.29.0.tgz#98dcfd1193cb4e2b2d0294a8656ce5eb58c443a9" + integrity sha512-ahaWQ42JAOx+NKEf5++WC/ua17q5l+j1GFrbbpVKzFL/tKVc0aYY8rVSYUpUvt2hUP1YBr7mwXzx+E/DfUWI9Q== dependencies: - "@typescript-eslint/typescript-estree" "8.26.1" - "@typescript-eslint/utils" "8.26.1" + "@typescript-eslint/typescript-estree" "8.29.0" + "@typescript-eslint/utils" "8.29.0" debug "^4.3.4" ts-api-utils "^2.0.1" @@ -1026,10 +1026,10 @@ resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-8.26.0.tgz#c4e93a8faf3a38a8d8adb007dc7834f1c89ee7bf" integrity sha512-89B1eP3tnpr9A8L6PZlSjBvnJhWXtYfZhECqlBl1D9Lme9mHO6iWlsprBtVenQvY1HMhax1mWOjhtL3fh/u+pA== -"@typescript-eslint/types@8.26.1": - version "8.26.1" - resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-8.26.1.tgz#d5978721670cff263348d5062773389231a64132" - integrity sha512-n4THUQW27VmQMx+3P+B0Yptl7ydfceUj4ON/AQILAASwgYdZ/2dhfymRMh5egRUrvK5lSmaOm77Ry+lmXPOgBQ== +"@typescript-eslint/types@8.29.0": + version "8.29.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-8.29.0.tgz#65add70ab4ef66beaa42a5addf87dab2b05b1f33" + integrity sha512-wcJL/+cOXV+RE3gjCyl/V2G877+2faqvlgtso/ZRbTCnZazh0gXhe+7gbAnfubzN2bNsBtZjDvlh7ero8uIbzg== "@typescript-eslint/typescript-estree@7.18.0": version "7.18.0" @@ -1059,13 +1059,13 @@ semver "^7.6.0" ts-api-utils "^2.0.1" -"@typescript-eslint/typescript-estree@8.26.1": - version "8.26.1" - resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-8.26.1.tgz#eb0e4ce31753683d83be53441a409fd5f0b34afd" - integrity sha512-yUwPpUHDgdrv1QJ7YQal3cMVBGWfnuCdKbXw1yyjArax3353rEJP1ZA+4F8nOlQ3RfS2hUN/wze3nlY+ZOhvoA== +"@typescript-eslint/typescript-estree@8.29.0": + version "8.29.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-8.29.0.tgz#d201a4f115327ec90496307c9958262285065b00" + integrity sha512-yOfen3jE9ISZR/hHpU/bmNvTtBW1NjRbkSFdZOksL1N+ybPEE7UVGMwqvS6CP022Rp00Sb0tdiIkhSCe6NI8ow== dependencies: - "@typescript-eslint/types" "8.26.1" - "@typescript-eslint/visitor-keys" "8.26.1" + "@typescript-eslint/types" "8.29.0" + "@typescript-eslint/visitor-keys" "8.29.0" debug "^4.3.4" fast-glob "^3.3.2" is-glob "^4.0.3" @@ -1073,15 +1073,15 @@ semver "^7.6.0" ts-api-utils "^2.0.1" -"@typescript-eslint/utils@8.26.1": - version "8.26.1" - resolved "https://registry.yarnpkg.com/@typescript-eslint/utils/-/utils-8.26.1.tgz#54cc58469955f25577f659753b71a0e117a0539f" - integrity sha512-V4Urxa/XtSUroUrnI7q6yUTD3hDtfJ2jzVfeT3VK0ciizfK2q/zGC0iDh1lFMUZR8cImRrep6/q0xd/1ZGPQpg== +"@typescript-eslint/utils@8.29.0": + version "8.29.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/utils/-/utils-8.29.0.tgz#d6d22b19c8c4812a874f00341f686b45b9fe895f" + integrity sha512-gX/A0Mz9Bskm8avSWFcK0gP7cZpbY4AIo6B0hWYFCaIsz750oaiWR4Jr2CI+PQhfW1CpcQr9OlfPS+kMFegjXA== dependencies: "@eslint-community/eslint-utils" "^4.4.0" - "@typescript-eslint/scope-manager" "8.26.1" - "@typescript-eslint/types" "8.26.1" - "@typescript-eslint/typescript-estree" "8.26.1" + "@typescript-eslint/scope-manager" "8.29.0" + "@typescript-eslint/types" "8.29.0" + "@typescript-eslint/typescript-estree" "8.29.0" "@typescript-eslint/utils@^7.7.1": version "7.18.0" @@ -1119,12 +1119,12 @@ "@typescript-eslint/types" "8.26.0" eslint-visitor-keys "^4.2.0" -"@typescript-eslint/visitor-keys@8.26.1": - version "8.26.1" - resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-8.26.1.tgz#c5267fcc82795cf10280363023837deacad2647c" - integrity sha512-AjOC3zfnxd6S4Eiy3jwktJPclqhFHNyd8L6Gycf9WUPoKZpgM5PjkxY1X7uSy61xVpiJDhhk7XT2NVsN3ALTWg== +"@typescript-eslint/visitor-keys@8.29.0": + version "8.29.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-8.29.0.tgz#2356336c9efdc3597ffcd2aa1ce95432852b743d" + integrity sha512-Sne/pVz8ryR03NFK21VpN88dZ2FdQXOlq3VIklbrTYEt8yXtRFr9tvUhqvCeKjqYk5FSim37sHbooT6vzBTZcg== dependencies: - "@typescript-eslint/types" "8.26.1" + "@typescript-eslint/types" "8.29.0" eslint-visitor-keys "^4.2.0" "@ungap/structured-clone@^1.0.0", "@ungap/structured-clone@^1.2.0": @@ -1132,17 +1132,17 @@ resolved "https://registry.yarnpkg.com/@ungap/structured-clone/-/structured-clone-1.3.0.tgz#d06bbb384ebcf6c505fde1c3d0ed4ddffe0aaff8" integrity sha512-WmoN8qaIAo7WTYWbAZuG8PYEhn5fkz7dZrqTBZ7dtt//lL2Gwms1IcnQ5yHqjDfX8Ft5j4YzDM23f87zBfDe9g== -"@vitejs/plugin-react-swc@^3.8.0": - version "3.8.0" - resolved "https://registry.yarnpkg.com/@vitejs/plugin-react-swc/-/plugin-react-swc-3.8.0.tgz#3af56d6dbfe3734e2970d8b9345f261353e2d676" - integrity sha512-T4sHPvS+DIqDP51ifPqa9XIRAz/kIvIi8oXcnOZZgHmMotgmmdxe/DD5tMFlt5nuIRzT0/QuiwmKlH0503Aapw== +"@vitejs/plugin-react-swc@^3.8.1": + version "3.8.1" + resolved "https://registry.yarnpkg.com/@vitejs/plugin-react-swc/-/plugin-react-swc-3.8.1.tgz#663f14b72b1f42f6e61f412ea320e287b3065c41" + integrity sha512-aEUPCckHDcFyxpwFm0AIkbtv6PpUp3xTb9wYGFjtABynXjCYKkWoxX0AOK9NT9XCrdk6mBBUOeHQS+RKdcNO1A== dependencies: - "@swc/core" "^1.10.15" + "@swc/core" "^1.11.11" -"@vitest/coverage-istanbul@^3.0.8": - version "3.0.8" - resolved "https://registry.yarnpkg.com/@vitest/coverage-istanbul/-/coverage-istanbul-3.0.8.tgz#bc7459e3c7bfa962193f35658c323220982f09d9" - integrity sha512-v/frNs3RF//gQP/+AkXG2Bk51qiK1bGRubq/vgM7CxEw40Jl3N9rMpgAOAz8ELL9HAWvAZ9fswR8YyHhO1HxSQ== +"@vitest/coverage-istanbul@^3.1.1": + version "3.1.1" + resolved "https://registry.yarnpkg.com/@vitest/coverage-istanbul/-/coverage-istanbul-3.1.1.tgz#950edf782bbff0f7d6113d62728717eed338b00a" + integrity sha512-uSoMeVcF5fMGcjWJOeG28nBPO2OuCNMRr+BcpF71gc1r/+EQnU7EeRM1hihs3EsSAOcjgw9w+TCMv/2lVvB4RA== dependencies: "@istanbuljs/schema" "^0.1.3" debug "^4.4.0" @@ -1155,62 +1155,62 @@ test-exclude "^7.0.1" tinyrainbow "^2.0.0" -"@vitest/expect@3.0.8": - version "3.0.8" - resolved "https://registry.yarnpkg.com/@vitest/expect/-/expect-3.0.8.tgz#53c408180d6476c7363eb976dcaae8e7b1f1a078" - integrity sha512-Xu6TTIavTvSSS6LZaA3EebWFr6tsoXPetOWNMOlc7LO88QVVBwq2oQWBoDiLCN6YTvNYsGSjqOO8CAdjom5DCQ== +"@vitest/expect@3.1.1": + version "3.1.1" + resolved "https://registry.yarnpkg.com/@vitest/expect/-/expect-3.1.1.tgz#d64ddfdcf9e877d805e1eee67bd845bf0708c6c2" + integrity sha512-q/zjrW9lgynctNbwvFtQkGK9+vvHA5UzVi2V8APrp1C6fG6/MuYYkmlx4FubuqLycCeSdHD5aadWfua/Vr0EUA== dependencies: - "@vitest/spy" "3.0.8" - "@vitest/utils" "3.0.8" + "@vitest/spy" "3.1.1" + "@vitest/utils" "3.1.1" chai "^5.2.0" tinyrainbow "^2.0.0" -"@vitest/mocker@3.0.8": - version "3.0.8" - resolved "https://registry.yarnpkg.com/@vitest/mocker/-/mocker-3.0.8.tgz#01638859e7dd422a8aaf04ef63dca9e1bbb9838d" - integrity sha512-n3LjS7fcW1BCoF+zWZxG7/5XvuYH+lsFg+BDwwAz0arIwHQJFUEsKBQ0BLU49fCxuM/2HSeBPHQD8WjgrxMfow== +"@vitest/mocker@3.1.1": + version "3.1.1" + resolved "https://registry.yarnpkg.com/@vitest/mocker/-/mocker-3.1.1.tgz#7689d99f87498684c71e9fe9defdbd13ffb7f1ac" + integrity sha512-bmpJJm7Y7i9BBELlLuuM1J1Q6EQ6K5Ye4wcyOpOMXMcePYKSIYlpcrCm4l/O6ja4VJA5G2aMJiuZkZdnxlC3SA== dependencies: - "@vitest/spy" "3.0.8" + "@vitest/spy" "3.1.1" estree-walker "^3.0.3" magic-string "^0.30.17" -"@vitest/pretty-format@3.0.8", "@vitest/pretty-format@^3.0.8": - version "3.0.8" - resolved "https://registry.yarnpkg.com/@vitest/pretty-format/-/pretty-format-3.0.8.tgz#89f6111d141142689871f5a4e62ad679bb6b6357" - integrity sha512-BNqwbEyitFhzYMYHUVbIvepOyeQOSFA/NeJMIP9enMntkkxLgOcgABH6fjyXG85ipTgvero6noreavGIqfJcIg== +"@vitest/pretty-format@3.1.1", "@vitest/pretty-format@^3.1.1": + version "3.1.1" + resolved "https://registry.yarnpkg.com/@vitest/pretty-format/-/pretty-format-3.1.1.tgz#5b4d577771daccfced47baf3bf026ad59b52c283" + integrity sha512-dg0CIzNx+hMMYfNmSqJlLSXEmnNhMswcn3sXO7Tpldr0LiGmg3eXdLLhwkv2ZqgHb/d5xg5F7ezNFRA1fA13yA== dependencies: tinyrainbow "^2.0.0" -"@vitest/runner@3.0.8": - version "3.0.8" - resolved "https://registry.yarnpkg.com/@vitest/runner/-/runner-3.0.8.tgz#dda7223c25a89a829a29c3f0c037a99e028a9c64" - integrity sha512-c7UUw6gEcOzI8fih+uaAXS5DwjlBaCJUo7KJ4VvJcjL95+DSR1kova2hFuRt3w41KZEFcOEiq098KkyrjXeM5w== +"@vitest/runner@3.1.1": + version "3.1.1" + resolved "https://registry.yarnpkg.com/@vitest/runner/-/runner-3.1.1.tgz#76b598700737089d66c74272b2e1c94ca2891a49" + integrity sha512-X/d46qzJuEDO8ueyjtKfxffiXraPRfmYasoC4i5+mlLEJ10UvPb0XH5M9C3gWuxd7BAQhpK42cJgJtq53YnWVA== dependencies: - "@vitest/utils" "3.0.8" + "@vitest/utils" "3.1.1" pathe "^2.0.3" -"@vitest/snapshot@3.0.8": - version "3.0.8" - resolved "https://registry.yarnpkg.com/@vitest/snapshot/-/snapshot-3.0.8.tgz#b65d738c00ff052a323125ad7dfb001927049c78" - integrity sha512-x8IlMGSEMugakInj44nUrLSILh/zy1f2/BgH0UeHpNyOocG18M9CWVIFBaXPt8TrqVZWmcPjwfG/ht5tnpba8A== +"@vitest/snapshot@3.1.1": + version "3.1.1" + resolved "https://registry.yarnpkg.com/@vitest/snapshot/-/snapshot-3.1.1.tgz#42b6aa0d0e2b3b48b95a5c76efdcc66a44cb11f3" + integrity sha512-bByMwaVWe/+1WDf9exFxWWgAixelSdiwo2p33tpqIlM14vW7PRV5ppayVXtfycqze4Qhtwag5sVhX400MLBOOw== dependencies: - "@vitest/pretty-format" "3.0.8" + "@vitest/pretty-format" "3.1.1" magic-string "^0.30.17" pathe "^2.0.3" -"@vitest/spy@3.0.8": - version "3.0.8" - resolved "https://registry.yarnpkg.com/@vitest/spy/-/spy-3.0.8.tgz#2a31ce28858aae50286644d64f886c72d55ae2ce" - integrity sha512-MR+PzJa+22vFKYb934CejhR4BeRpMSoxkvNoDit68GQxRLSf11aT6CTj3XaqUU9rxgWJFnqicN/wxw6yBRkI1Q== +"@vitest/spy@3.1.1": + version "3.1.1" + resolved "https://registry.yarnpkg.com/@vitest/spy/-/spy-3.1.1.tgz#deca0b025e151302ab514f38390fd7777e294837" + integrity sha512-+EmrUOOXbKzLkTDwlsc/xrwOlPDXyVk3Z6P6K4oiCndxz7YLpp/0R0UsWVOKT0IXWjjBJuSMk6D27qipaupcvQ== dependencies: tinyspy "^3.0.2" -"@vitest/ui@^3.0.8": - version "3.0.8" - resolved "https://registry.yarnpkg.com/@vitest/ui/-/ui-3.0.8.tgz#7eb38960a8cf9cc10c1de407575e316562b99680" - integrity sha512-MfTjaLU+Gw/lYorgwFZ06Cym+Mj9hPfZh/Q91d4JxyAHiicAakPTvS7zYCSHF+5cErwu2PVBe1alSjuh6L/UiA== +"@vitest/ui@^3.1.1": + version "3.1.1" + resolved "https://registry.yarnpkg.com/@vitest/ui/-/ui-3.1.1.tgz#c832d9e07ee728b9464042458ba9b2638d8bd8bf" + integrity sha512-2HpiRIYg3dlvAJBV9RtsVswFgUSJK4Sv7QhpxoP0eBGkYwzGIKP34PjaV00AULQi9Ovl6LGyZfsetxDWY5BQdQ== dependencies: - "@vitest/utils" "3.0.8" + "@vitest/utils" "3.1.1" fflate "^0.8.2" flatted "^3.3.3" pathe "^2.0.3" @@ -1218,12 +1218,12 @@ tinyglobby "^0.2.12" tinyrainbow "^2.0.0" -"@vitest/utils@3.0.8": - version "3.0.8" - resolved "https://registry.yarnpkg.com/@vitest/utils/-/utils-3.0.8.tgz#289277fbd8e733dff69cfa993c34665415c9b66b" - integrity sha512-nkBC3aEhfX2PdtQI/QwAWp8qZWwzASsU4Npbcd5RdMPBSSLCpkZp52P3xku3s3uA0HIEhGvEcF8rNkBsz9dQ4Q== +"@vitest/utils@3.1.1": + version "3.1.1" + resolved "https://registry.yarnpkg.com/@vitest/utils/-/utils-3.1.1.tgz#2893c30219ab6bdf109f07ce5cd287fe8058438d" + integrity sha512-1XIjflyaU2k3HMArJ50bwSh3wKWPD6Q47wz/NUSmRV0zNywPc4w79ARjg/i/aNINHwA+mIALhUVqD9/aUvZNgg== dependencies: - "@vitest/pretty-format" "3.0.8" + "@vitest/pretty-format" "3.1.1" loupe "^3.1.3" tinyrainbow "^2.0.0" @@ -2119,13 +2119,13 @@ eslint-plugin-jsx-a11y@^6.10.2: safe-regex-test "^1.0.3" string.prototype.includes "^2.0.1" -eslint-plugin-prettier@^5.2.3: - version "5.2.3" - resolved "https://registry.yarnpkg.com/eslint-plugin-prettier/-/eslint-plugin-prettier-5.2.3.tgz#c4af01691a6fa9905207f0fbba0d7bea0902cce5" - integrity sha512-qJ+y0FfCp/mQYQ/vWQ3s7eUlFEL4PyKfAJxsnYTJ4YT73nsJBWqmEpFryxV9OeUiqmsTsYJ5Y+KDNaeP31wrRw== +eslint-plugin-prettier@^5.2.6: + version "5.2.6" + resolved "https://registry.yarnpkg.com/eslint-plugin-prettier/-/eslint-plugin-prettier-5.2.6.tgz#be39e3bb23bb3eeb7e7df0927cdb46e4d7945096" + integrity sha512-mUcf7QG2Tjk7H055Jk0lGBjbgDnfrvqjhXh9t2xLMSCjZVcw9Rb1V6sVNXO0th3jgeO7zllWPTNRil3JW94TnQ== dependencies: prettier-linter-helpers "^1.0.0" - synckit "^0.9.1" + synckit "^0.11.0" eslint-plugin-promise@^7.2.1: version "7.2.1" @@ -2139,10 +2139,10 @@ eslint-plugin-react-hooks@^5.2.0: resolved "https://registry.yarnpkg.com/eslint-plugin-react-hooks/-/eslint-plugin-react-hooks-5.2.0.tgz#1be0080901e6ac31ce7971beed3d3ec0a423d9e3" integrity sha512-+f15FfK64YQwZdJNELETdn5ibXEUQmW1DZL6KXhNnc2heoy/sg9VJJeT7n8TlMWouzWqSWavFkIhHyIbIAEapg== -eslint-plugin-react@^7.37.4: - version "7.37.4" - resolved "https://registry.yarnpkg.com/eslint-plugin-react/-/eslint-plugin-react-7.37.4.tgz#1b6c80b6175b6ae4b26055ae4d55d04c414c7181" - integrity sha512-BGP0jRmfYyvOyvMoRX/uoUeW+GqNj9y16bPQzqAHf3AYII/tDs+jMN0dBVkl88/OZwNGwrVFxE7riHsXVfy/LQ== +eslint-plugin-react@^7.37.5: + 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" @@ -2154,7 +2154,7 @@ eslint-plugin-react@^7.37.4: 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.1" prop-types "^15.8.1" @@ -2285,10 +2285,10 @@ esutils@^2.0.2: resolved "https://registry.yarnpkg.com/esutils/-/esutils-2.0.3.tgz#74d2eb4de0b8da1293711910d50775b9b710ef64" integrity sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g== -expect-type@^1.1.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/expect-type/-/expect-type-1.2.0.tgz#b52a0a1117260f5a8dcf33aef66365be18c13415" - integrity sha512-80F22aiJ3GLyVnS/B3HzgR6RelZVumzj9jkL0Rhz4h0xYbNW9PjlQz5h3J/SShErbXBc295vseR4/MIbVmUbeA== +expect-type@^1.2.0: + version "1.2.1" + resolved "https://registry.yarnpkg.com/expect-type/-/expect-type-1.2.1.tgz#af76d8b357cf5fa76c41c09dafb79c549e75f71f" + integrity sha512-/kP8CAwxzLVEeFrMm4kMmy4CCDlpipyA7MYLVrdJIkV0fYF0UaigQHRsxHiuY/GEea+bh4KSv3TIlgr+2UL6bw== fast-deep-equal@^3.1.1, fast-deep-equal@^3.1.3: version "3.1.3" @@ -3334,14 +3334,15 @@ object.assign@^4.1.4, object.assign@^4.1.7: 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" @@ -3653,10 +3654,10 @@ react-dom@^18.3.1: loose-envify "^1.1.0" scheduler "^0.23.2" -react-hook-form@^7.54.2: - version "7.54.2" - resolved "https://registry.yarnpkg.com/react-hook-form/-/react-hook-form-7.54.2.tgz#8c26ed54c71628dff57ccd3c074b1dd377cfb211" - integrity sha512-eHpAUgUjWbZocoQYUHposymRb4ZP6d0uwUnooL2uOybA9/3tPUvoAKqEWK1WaSiTxxOfTpffNZP7QwlnM3/gEg== +react-hook-form@^7.55.0: + version "7.55.0" + resolved "https://registry.yarnpkg.com/react-hook-form/-/react-hook-form-7.55.0.tgz#df3c80a20a68f6811f49bec3406defaefb6dce80" + integrity sha512-XRnjsH3GVMQz1moZTW53MxfoWN7aDpUg/GpVNc4A3eXRVNdGXfbzJ4vM4aLQ8g6XCUh1nIbx70aaNCl7kxnjog== react-is@^16.13.1: version "16.13.1" @@ -3692,10 +3693,10 @@ react-remove-scroll@^2.6.2: use-callback-ref "^1.3.3" use-sidecar "^1.1.3" -react-router@^7.3.0: - version "7.3.0" - resolved "https://registry.yarnpkg.com/react-router/-/react-router-7.3.0.tgz#14fb630f088d919386e97f91199a2bc4abcdd85d" - integrity sha512-466f2W7HIWaNXTKM5nHTqNxLrHTyXybm7R0eBlVSt0k/u55tTCDO194OIx/NrYD4TS5SXKTNekXfT37kMKUjgw== +react-router@^7.5.0: + version "7.5.0" + resolved "https://registry.yarnpkg.com/react-router/-/react-router-7.5.0.tgz#649568e7e3b4133dee1dcf333d8a3a37b1967f58" + integrity sha512-estOHrRlDMKdlQa6Mj32gIks4J+AxNsYoE0DbTTxiMy2mPzZuWSDU+N85/r1IlNR7kGfznF3VCUlvc5IUO+B9g== dependencies: "@types/cookie" "^0.6.0" cookie "^1.0.1" @@ -4070,10 +4071,10 @@ statuses@^2.0.1: resolved "https://registry.yarnpkg.com/statuses/-/statuses-2.0.1.tgz#55cb000ccf1d48728bd23c685a063998cf1a1b63" integrity sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ== -std-env@^3.8.0: - version "3.8.1" - resolved "https://registry.yarnpkg.com/std-env/-/std-env-3.8.1.tgz#2b81c631c62e3d0b964b87f099b8dcab6c9a5346" - integrity sha512-vj5lIj3Mwf9D79hBkltk5qmkFI+biIKWS2IBxEyEU3AX1tUf7AoL8nSazCOiiqQsGKIq01SClsKEzweu34uwvA== +std-env@^3.8.1: + version "3.9.0" + resolved "https://registry.yarnpkg.com/std-env/-/std-env-3.9.0.tgz#1a6f7243b339dca4c9fd55e1c7504c77ef23e8f1" + integrity sha512-UGvjygr6F6tpH7o2qyqR6QYpwraIjKSdtzyBdyytFOHmPZY917kwdwLG0RbOjWOnKmnm3PeHjaoLLMie7kPLQw== strict-event-emitter@^0.5.1: version "0.5.1" @@ -4238,13 +4239,13 @@ supports-preserve-symlinks-flag@^1.0.0: resolved "https://registry.yarnpkg.com/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz#6eda4bd344a3c94aea376d4cc31bc77311039e09" integrity sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w== -synckit@^0.9.1: - version "0.9.2" - resolved "https://registry.yarnpkg.com/synckit/-/synckit-0.9.2.tgz#a3a935eca7922d48b9e7d6c61822ee6c3ae4ec62" - integrity sha512-vrozgXDQwYO72vHjUb/HnFbQx1exDjoKzqx23aXEg2a9VIg2TSFZ8FmeZpTjUCFMYw7mpX4BE2SFu8wI7asYsw== +synckit@^0.11.0: + version "0.11.2" + resolved "https://registry.yarnpkg.com/synckit/-/synckit-0.11.2.tgz#2a8015ce5df8d5eb0cc47ee55924ad8f8756c24b" + integrity sha512-1IUffI8zZ8qUMB3NUJIjk0RpLroG/8NkQDAWH1NbB2iJ0/5pn3M8rxfNzMz4GH9OnYaGYn31LEDSXJp/qIlxgA== dependencies: - "@pkgr/core" "^0.1.0" - tslib "^2.6.2" + "@pkgr/core" "^0.2.0" + tslib "^2.8.1" tabbable@^6.0.0: version "6.2.0" @@ -4360,7 +4361,7 @@ tsconfig-paths@^3.15.0: minimist "^1.2.6" strip-bom "^3.0.0" -tslib@^2.0.0, tslib@^2.1.0, tslib@^2.6.2: +tslib@^2.0.0, tslib@^2.1.0, tslib@^2.8.1: version "2.8.1" resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.8.1.tgz#612efe4ed235d567e8aba5f2a5fab70280ade83f" integrity sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w== @@ -4437,19 +4438,19 @@ typed-array-length@^1.0.7: possible-typed-array-names "^1.0.0" reflect.getprototypeof "^1.0.6" -typescript-eslint@^8.26.1: - version "8.26.1" - resolved "https://registry.yarnpkg.com/typescript-eslint/-/typescript-eslint-8.26.1.tgz#d17a638a7543bc535157b83cdf5876513c71493b" - integrity sha512-t/oIs9mYyrwZGRpDv3g+3K6nZ5uhKEMt2oNmAPwaY4/ye0+EH4nXIPYNtkYFS6QHm+1DFg34DbglYBz5P9Xysg== +typescript-eslint@^8.29.0: + version "8.29.0" + resolved "https://registry.yarnpkg.com/typescript-eslint/-/typescript-eslint-8.29.0.tgz#fc059b4c840889e5180dd822594eb46fa4619093" + integrity sha512-ep9rVd9B4kQsZ7ZnWCVxUE/xDLUUUsRzE0poAeNu+4CkFErLfuvPt/qtm2EpnSyfvsR0S6QzDFSrPCFBwf64fg== dependencies: - "@typescript-eslint/eslint-plugin" "8.26.1" - "@typescript-eslint/parser" "8.26.1" - "@typescript-eslint/utils" "8.26.1" + "@typescript-eslint/eslint-plugin" "8.29.0" + "@typescript-eslint/parser" "8.29.0" + "@typescript-eslint/utils" "8.29.0" -typescript@^5.8.2: - version "5.8.2" - resolved "https://registry.yarnpkg.com/typescript/-/typescript-5.8.2.tgz#8170b3702f74b79db2e5a96207c15e65807999e4" - integrity sha512-aJn6wq13/afZp/jT9QZmwEjDqqvSGp1VT5GVg+f/t6/oVyrgXM6BY1h9BRh/O5p3PlUPAe+WuiEZOmb/49RqoQ== +typescript@^5.8.3: + version "5.8.3" + resolved "https://registry.yarnpkg.com/typescript/-/typescript-5.8.3.tgz#92f8a3e5e3cf497356f4178c34cd65a7f5e8440e" + integrity sha512-p1diW6TqL9L07nNxvRMM7hMMw4c5XOo/1ibL4aAIGmSAt9slTE1Xgw5KWuof2uTOvCg9BY7ZRi+GaF+7sfgPeQ== unbox-primitive@^1.1.0: version "1.1.0" @@ -4461,10 +4462,10 @@ unbox-primitive@^1.1.0: has-symbols "^1.1.0" which-boxed-primitive "^1.1.1" -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== unicorn-magic@^0.3.0: version "0.3.0" @@ -4590,10 +4591,10 @@ vfile@^6.0.0: "@types/unist" "^3.0.0" vfile-message "^4.0.0" -vite-node@3.0.8: - version "3.0.8" - resolved "https://registry.yarnpkg.com/vite-node/-/vite-node-3.0.8.tgz#69cd1e0b9c7c37a8e7ab3b87ce259cbbf9a7bd72" - integrity sha512-6PhR4H9VGlcwXZ+KWCdMqbtG649xCPZqfI9j2PsK1FcXgEzro5bGHcVKFCTqPLaNKZES8Evqv4LwvZARsq5qlg== +vite-node@3.1.1: + version "3.1.1" + resolved "https://registry.yarnpkg.com/vite-node/-/vite-node-3.1.1.tgz#ad186c07859a6e5fca7c7f563e55fb11b16557bc" + integrity sha512-V+IxPAE2FvXpTCHXyNem0M+gWm6J7eRyWPR6vYoG/Gl+IscNOjXzztUhimQgTxaAoUoj40Qqimaa0NLIOOAH4w== dependencies: cac "^6.7.14" debug "^4.4.0" @@ -4601,10 +4602,10 @@ vite-node@3.0.8: pathe "^2.0.3" vite "^5.0.0 || ^6.0.0" -vite-plugin-checker@^0.9.0: - version "0.9.0" - resolved "https://registry.yarnpkg.com/vite-plugin-checker/-/vite-plugin-checker-0.9.0.tgz#9af2d6e28a8fda9278bad376e79edca81f0e6d42" - integrity sha512-gf/zc0KWX8ATEOgnpgAM1I+IbvWkkO80RB+FxlLtC5cabXSesbJmAUw6E+mMDDMGIT+VHAktmxJZpMTt3lSubQ== +vite-plugin-checker@^0.9.1: + version "0.9.1" + resolved "https://registry.yarnpkg.com/vite-plugin-checker/-/vite-plugin-checker-0.9.1.tgz#9f2166047848cc9199ff05e61d12d0480b680604" + integrity sha512-neH3CSNWdkZ+zi+WPt/0y5+IO2I0UAI0NX6MaXqU/KxN1Lz6np/7IooRB6VVAMBa4nigqm1GRF6qNa4+EL5jDQ== dependencies: "@babel/code-frame" "^7.26.2" chokidar "^4.0.3" @@ -4650,30 +4651,30 @@ vitest-sonar-reporter@^2.0.0: resolved "https://registry.yarnpkg.com/vitest-sonar-reporter/-/vitest-sonar-reporter-2.0.0.tgz#6372e5faba2b2834eac0b2cd1283263d38d0e718" integrity sha512-LorC3NnmrBrryx4+l3BEsNQjD0Y7wfmrD1y/+tHDuZUuVj7w8nOxRXCBSppDfmgfpToOhwchh0JcL4IGMKUKDA== -vitest@^3.0.8: - version "3.0.8" - resolved "https://registry.yarnpkg.com/vitest/-/vitest-3.0.8.tgz#2b85e689d3067cf3b8e174626ecfcb8b24be0785" - integrity sha512-dfqAsNqRGUc8hB9OVR2P0w8PZPEckti2+5rdZip0WIz9WW0MnImJ8XiR61QhqLa92EQzKP2uPkzenKOAHyEIbA== - dependencies: - "@vitest/expect" "3.0.8" - "@vitest/mocker" "3.0.8" - "@vitest/pretty-format" "^3.0.8" - "@vitest/runner" "3.0.8" - "@vitest/snapshot" "3.0.8" - "@vitest/spy" "3.0.8" - "@vitest/utils" "3.0.8" +vitest@^3.1.1: + version "3.1.1" + resolved "https://registry.yarnpkg.com/vitest/-/vitest-3.1.1.tgz#39fa2356e510513fccdc5d16465a9fc066ef1fc6" + integrity sha512-kiZc/IYmKICeBAZr9DQ5rT7/6bD9G7uqQEki4fxazi1jdVl2mWGzedtBs5s6llz59yQhVb7FFY2MbHzHCnT79Q== + dependencies: + "@vitest/expect" "3.1.1" + "@vitest/mocker" "3.1.1" + "@vitest/pretty-format" "^3.1.1" + "@vitest/runner" "3.1.1" + "@vitest/snapshot" "3.1.1" + "@vitest/spy" "3.1.1" + "@vitest/utils" "3.1.1" chai "^5.2.0" debug "^4.4.0" - expect-type "^1.1.0" + expect-type "^1.2.0" magic-string "^0.30.17" pathe "^2.0.3" - std-env "^3.8.0" + std-env "^3.8.1" tinybench "^2.9.0" tinyexec "^0.3.2" tinypool "^1.0.2" tinyrainbow "^2.0.0" vite "^5.0.0 || ^6.0.0" - vite-node "3.0.8" + vite-node "3.1.1" why-is-node-running "^2.3.0" vscode-uri@^3.1.0: @@ -4805,10 +4806,10 @@ wrappy@1: resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" integrity sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ== -xml-formatter@^3.6.4: - version "3.6.4" - resolved "https://registry.yarnpkg.com/xml-formatter/-/xml-formatter-3.6.4.tgz#c9e70b9e4fc02f1ec9b9e561ef148418bfdbeeb0" - integrity sha512-vkvTNw4u9mp72lMmJHw771NE9EJLX0kfwIcP+ZEo9eJ6HmotX23vmykyROyIQ9Y3a+ckdUdhxIE2ZO66rYuPrg== +xml-formatter@^3.6.5: + version "3.6.5" + resolved "https://registry.yarnpkg.com/xml-formatter/-/xml-formatter-3.6.5.tgz#ef541394aa56de432ce5ead3f175640d8cd8a92e" + integrity sha512-5Dvux87y+abquO3Om8zRyOUdYkc22BnSS3zMhL2UgeCC+3lz9FbSBpAhzxmk+/qfTO3ypLRwTxJvByoG+FjTMA== dependencies: xml-parser-xo "^4.1.2"