From 2c417d27c20fe22e163edb0970c1d023df211952 Mon Sep 17 00:00:00 2001 From: Aviv Keller Date: Sat, 28 Feb 2026 11:56:54 -0500 Subject: [PATCH] chore(eslint): update to v10 --- apps/site/components/Common/FormattedTime.tsx | 2 + .../components/Common/Supporters/index.tsx | 4 +- .../Downloads/Release/BlogPostLink.tsx | 4 +- .../Downloads/Release/ChangelogLink.tsx | 4 +- .../Downloads/Release/DownloadLink.tsx | 4 +- .../Release/InstallationMethodDropdown.tsx | 12 +- .../Release/OperatingSystemDropdown.tsx | 12 +- .../Release/PackageManagerDropdown.tsx | 8 +- .../Downloads/Release/PlatformDropdown.tsx | 12 +- .../Release/PrebuiltDownloadButtons.tsx | 4 +- .../Downloads/Release/ReleaseCodeBox.tsx | 7 +- .../Downloads/Release/VersionDropdown.tsx | 6 +- apps/site/components/EOL/EOLModal.tsx | 11 +- .../components/EOL/VulnerabilitiesTable.tsx | 4 +- apps/site/components/withBreadcrumbs.tsx | 5 +- apps/site/components/withMetaBar.tsx | 7 +- apps/site/components/withNavBar.tsx | 2 +- apps/site/components/withSidebar.tsx | 5 +- .../site/components/withSidebarCrossLinks.tsx | 6 +- apps/site/eslint.config.js | 22 +- .../__tests__/useClientContext.test.jsx | 2 +- .../__tests__/useDetectOS.test.mjs | 2 +- .../__tests__/useMediaQuery.test.mjs | 2 +- .../__tests__/useScrollToElement.test.jsx | 30 +- apps/site/hooks/client/index.ts | 5 - apps/site/hooks/generic/index.ts | 1 - apps/site/hooks/server/index.ts | 3 - apps/site/hooks/server/useClientContext.ts | 5 - apps/site/hooks/server/useScroll.ts | 5 - apps/site/hooks/server/useScrollToElement.ts | 5 - .../hooks/{client => }/useClientContext.ts | 4 +- apps/site/hooks/{client => }/useDetectOS.ts | 1 + apps/site/hooks/{client => }/useMediaQuery.ts | 16 +- apps/site/hooks/{client => }/useScroll.ts | 0 .../hooks/{client => }/useScrollToElement.ts | 6 +- .../hooks/{generic => }/useSiteNavigation.ts | 0 apps/site/layouts/Post.tsx | 4 +- apps/site/package.json | 15 +- apps/site/providers/matterProvider.tsx | 6 +- .../providers/navigationStateProvider.tsx | 7 +- apps/site/providers/releaseProvider.tsx | 24 +- apps/site/types/server.ts | 2 +- package.json | 10 +- .../__design__/platform-logos.stories.tsx | 8 +- .../__design__/social-logos.stories.tsx | 11 +- .../__design__/table.stories.tsx | 18 +- packages/ui-components/eslint.config.js | 16 +- packages/ui-components/package.json | 9 +- .../src/Common/AvatarGroup/Avatar/index.tsx | 88 +- .../src/Common/BaseCodeBox/index.tsx | 2 + ...etPageElements.tsx => getPageElements.tsx} | 2 +- .../src/Common/BasePagination/index.tsx | 4 +- .../src/Common/ChangeHistory/index.tsx | 4 +- .../Common/Search/Results/Skeleton/index.tsx | 4 +- .../src/Common/Search/Suggestions/index.tsx | 4 +- .../ui-components/src/Common/Select/index.tsx | 6 +- .../src/Containers/Sidebar/index.tsx | 86 +- .../src/Icons/InstallationMethod/N.tsx | 1 - pnpm-lock.yaml | 1478 ++++++++--------- 59 files changed, 946 insertions(+), 1091 deletions(-) rename apps/site/hooks/{client => }/__tests__/useClientContext.test.jsx (92%) rename apps/site/hooks/{client => }/__tests__/useDetectOS.test.mjs (97%) rename apps/site/hooks/{client => }/__tests__/useMediaQuery.test.mjs (96%) rename apps/site/hooks/{client => }/__tests__/useScrollToElement.test.jsx (84%) delete mode 100644 apps/site/hooks/client/index.ts delete mode 100644 apps/site/hooks/generic/index.ts delete mode 100644 apps/site/hooks/server/index.ts delete mode 100644 apps/site/hooks/server/useClientContext.ts delete mode 100644 apps/site/hooks/server/useScroll.ts delete mode 100644 apps/site/hooks/server/useScrollToElement.ts rename apps/site/hooks/{client => }/useClientContext.ts (56%) rename apps/site/hooks/{client => }/useDetectOS.ts (96%) rename apps/site/hooks/{client => }/useMediaQuery.ts (60%) rename apps/site/hooks/{client => }/useScroll.ts (100%) rename apps/site/hooks/{client => }/useScrollToElement.ts (88%) rename apps/site/hooks/{generic => }/useSiteNavigation.ts (100%) rename packages/ui-components/src/Common/BasePagination/{useGetPageElements.tsx => getPageElements.tsx} (99%) diff --git a/apps/site/components/Common/FormattedTime.tsx b/apps/site/components/Common/FormattedTime.tsx index 738b48a9a7b95..3b8aea40770d0 100644 --- a/apps/site/components/Common/FormattedTime.tsx +++ b/apps/site/components/Common/FormattedTime.tsx @@ -13,6 +13,8 @@ type FormattedTimeProps = { const FormattedTime: FC = ({ date, format }) => { const formatter = useFormatter(); + // "date" is deterministic + // eslint-disable-next-line @eslint-react/purity const dateObject = new Date(date); return ( diff --git a/apps/site/components/Common/Supporters/index.tsx b/apps/site/components/Common/Supporters/index.tsx index d06abd357840b..e9cbfa387ed99 100644 --- a/apps/site/components/Common/Supporters/index.tsx +++ b/apps/site/components/Common/Supporters/index.tsx @@ -11,12 +11,12 @@ type SupportersListProps = { const SupportersList: FC = ({ supporters }) => (
- {supporters.map(({ name, image, profile }, i) => ( + {supporters.map(({ name, image, profile }) => ( ))} diff --git a/apps/site/components/Downloads/Release/BlogPostLink.tsx b/apps/site/components/Downloads/Release/BlogPostLink.tsx index 1c83aec0cf02a..804201925cc49 100644 --- a/apps/site/components/Downloads/Release/BlogPostLink.tsx +++ b/apps/site/components/Downloads/Release/BlogPostLink.tsx @@ -1,6 +1,6 @@ 'use client'; -import { useContext } from 'react'; +import { use } from 'react'; import Link from '#site/components/Link'; import { ReleaseContext } from '#site/providers/releaseProvider'; @@ -8,7 +8,7 @@ import { ReleaseContext } from '#site/providers/releaseProvider'; import type { FC, PropsWithChildren } from 'react'; const BlogPostLink: FC = ({ children }) => { - const { release } = useContext(ReleaseContext); + const { release } = use(ReleaseContext); const version = release.versionWithPrefix; return {children}; diff --git a/apps/site/components/Downloads/Release/ChangelogLink.tsx b/apps/site/components/Downloads/Release/ChangelogLink.tsx index c1db31d0d275b..146fa94f65bc7 100644 --- a/apps/site/components/Downloads/Release/ChangelogLink.tsx +++ b/apps/site/components/Downloads/Release/ChangelogLink.tsx @@ -1,6 +1,6 @@ 'use client'; -import { useContext } from 'react'; +import { use } from 'react'; import LinkWithArrow from '#site/components/Common/LinkWithArrow'; import { BASE_CHANGELOG_URL } from '#site/next.constants.mjs'; @@ -9,7 +9,7 @@ import { ReleaseContext } from '#site/providers/releaseProvider'; import type { FC, PropsWithChildren } from 'react'; const ChangelogLink: FC = ({ children }) => { - const { release } = useContext(ReleaseContext); + const { release } = use(ReleaseContext); return ( diff --git a/apps/site/components/Downloads/Release/DownloadLink.tsx b/apps/site/components/Downloads/Release/DownloadLink.tsx index 210749800afd2..ad915a68a7eac 100644 --- a/apps/site/components/Downloads/Release/DownloadLink.tsx +++ b/apps/site/components/Downloads/Release/DownloadLink.tsx @@ -1,6 +1,6 @@ 'use client'; -import { useContext } from 'react'; +import { use } from 'react'; import DownloadLinkBase from '#site/components/Downloads/DownloadLink'; import { ReleaseContext } from '#site/providers/releaseProvider'; @@ -14,7 +14,7 @@ const DownloadLink: FC> = ({ kind = 'installer', children, }) => { - const { release } = useContext(ReleaseContext); + const { release } = use(ReleaseContext); return ( diff --git a/apps/site/components/Downloads/Release/InstallationMethodDropdown.tsx b/apps/site/components/Downloads/Release/InstallationMethodDropdown.tsx index ceae59189c825..cb181ba20448a 100644 --- a/apps/site/components/Downloads/Release/InstallationMethodDropdown.tsx +++ b/apps/site/components/Downloads/Release/InstallationMethodDropdown.tsx @@ -2,7 +2,7 @@ import Select from '@node-core/ui-components/Common/Select'; import { useTranslations } from 'next-intl'; -import { useContext, useEffect, useMemo } from 'react'; +import { use, useEffect, useMemo } from 'react'; import { ReleaseContext } from '#site/providers/releaseProvider'; import { nextItem, INSTALL_METHODS, parseCompat } from '#site/util/download'; @@ -11,14 +11,14 @@ import type { InstallationMethod } from '#site/types/release'; import type { FC } from 'react'; const InstallationMethodDropdown: FC = () => { - const release = useContext(ReleaseContext); + const release = use(ReleaseContext); const t = useTranslations(); // We parse the compatibility of the dropdown items const parsedInstallMethods = useMemo( () => parseCompat(INSTALL_METHODS, release), // We only want to react on the change of the OS and Version - // eslint-disable-next-line react-hooks/exhaustive-deps + // eslint-disable-next-line @eslint-react/exhaustive-deps [release.os, release.version] ); @@ -36,7 +36,7 @@ const InstallationMethodDropdown: FC = () => { }, ], // We only want to react on the change of the parsedPlatforms - // eslint-disable-next-line react-hooks/exhaustive-deps + // eslint-disable-next-line @eslint-react/exhaustive-deps [parsedInstallMethods] ); @@ -55,7 +55,7 @@ const InstallationMethodDropdown: FC = () => { // when the OS has finished loading for a given installation method release.setInstallMethod(installationMethod as InstallationMethod); } - // eslint-disable-next-line react-hooks/exhaustive-deps + // eslint-disable-next-line @eslint-react/exhaustive-deps }, [parsedInstallMethods, release.installMethod, release.os]); // We set the Platform to the next available platform when the current @@ -69,7 +69,7 @@ const InstallationMethodDropdown: FC = () => { } }, // We only want to react on the change of the OS and Version - // eslint-disable-next-line react-hooks/exhaustive-deps + // eslint-disable-next-line @eslint-react/exhaustive-deps [release.os, release.version] ); diff --git a/apps/site/components/Downloads/Release/OperatingSystemDropdown.tsx b/apps/site/components/Downloads/Release/OperatingSystemDropdown.tsx index ea3f9024243e8..c3630cc719e5d 100644 --- a/apps/site/components/Downloads/Release/OperatingSystemDropdown.tsx +++ b/apps/site/components/Downloads/Release/OperatingSystemDropdown.tsx @@ -2,9 +2,9 @@ import Select from '@node-core/ui-components/Common/Select'; import { useTranslations } from 'next-intl'; -import { useContext, useEffect, useMemo } from 'react'; +import { use, useEffect, useMemo } from 'react'; -import { useClientContext } from '#site/hooks/client'; +import useClientContext from '#site/hooks/useClientContext'; import { ReleaseContext } from '#site/providers/releaseProvider'; import { nextItem, OPERATING_SYSTEMS, parseCompat } from '#site/util/download'; @@ -15,7 +15,7 @@ type OperatingSystemDropdownProps = { exclude?: Array }; const OperatingSystemDropdown: FC = () => { const { os } = useClientContext(); - const release = useContext(ReleaseContext); + const release = use(ReleaseContext); const t = useTranslations(); useEffect(() => { @@ -25,14 +25,14 @@ const OperatingSystemDropdown: FC = () => { // Reacts on Client Context change of OS // Only this Hook is allowed to bypass the `setOS` from above // As this Hook is what defined the initial OS state - // eslint-disable-next-line react-hooks/exhaustive-deps + // eslint-disable-next-line @eslint-react/exhaustive-deps }, [os]); // We parse the compatibility of the dropdown items const parsedOperatingSystems = useMemo( () => parseCompat(OPERATING_SYSTEMS, release), // We only want to react on the change of the Install Method and Version - // eslint-disable-next-line react-hooks/exhaustive-deps + // eslint-disable-next-line @eslint-react/exhaustive-deps [release.installMethod, release.version] ); @@ -45,7 +45,7 @@ const OperatingSystemDropdown: FC = () => { } }, // We only want to react on the change of the Version, Install Method and OS - // eslint-disable-next-line react-hooks/exhaustive-deps + // eslint-disable-next-line @eslint-react/exhaustive-deps [release.installMethod, release.version, release.os] ); diff --git a/apps/site/components/Downloads/Release/PackageManagerDropdown.tsx b/apps/site/components/Downloads/Release/PackageManagerDropdown.tsx index 6991d35fec07c..ec1bcb4a82417 100644 --- a/apps/site/components/Downloads/Release/PackageManagerDropdown.tsx +++ b/apps/site/components/Downloads/Release/PackageManagerDropdown.tsx @@ -2,7 +2,7 @@ import Select from '@node-core/ui-components/Common/Select'; import { useTranslations } from 'next-intl'; -import { useContext, useEffect, useMemo } from 'react'; +import { use, useEffect, useMemo } from 'react'; import { ReleaseContext } from '#site/providers/releaseProvider'; import { nextItem, PACKAGE_MANAGERS, parseCompat } from '#site/util/download'; @@ -11,14 +11,14 @@ import type { PackageManager } from '#site/types/release'; import type { FC } from 'react'; const PackageManagerDropdown: FC = () => { - const release = useContext(ReleaseContext); + const release = use(ReleaseContext); const t = useTranslations(); // We parse the compatibility of the dropdown items const parsedPackageManagers = useMemo( () => parseCompat(PACKAGE_MANAGERS, release), // We only want to react on the change of the Version - // eslint-disable-next-line react-hooks/exhaustive-deps + // eslint-disable-next-line @eslint-react/exhaustive-deps [release.version] ); @@ -30,7 +30,7 @@ const PackageManagerDropdown: FC = () => { nextItem(release.packageManager, parsedPackageManagers) ), // We only want to react on the change of the Version - // eslint-disable-next-line react-hooks/exhaustive-deps + // eslint-disable-next-line @eslint-react/exhaustive-deps [release.version, release.packageManager] ); diff --git a/apps/site/components/Downloads/Release/PlatformDropdown.tsx b/apps/site/components/Downloads/Release/PlatformDropdown.tsx index adc6f5a564d99..3d5b4e65eb72d 100644 --- a/apps/site/components/Downloads/Release/PlatformDropdown.tsx +++ b/apps/site/components/Downloads/Release/PlatformDropdown.tsx @@ -2,9 +2,9 @@ import Select from '@node-core/ui-components/Common/Select'; import { useTranslations } from 'next-intl'; -import { useEffect, useContext, useMemo } from 'react'; +import { useEffect, use, useMemo } from 'react'; -import { useClientContext } from '#site/hooks/client'; +import useClientContext from '#site/hooks/useClientContext'; import { ReleaseContext } from '#site/providers/releaseProvider'; import { PLATFORMS, nextItem, parseCompat } from '#site/util/download'; import { getUserPlatform } from '#site/util/userAgent'; @@ -15,7 +15,7 @@ import type { FC } from 'react'; const PlatformDropdown: FC = () => { const { architecture, bitness } = useClientContext(); - const release = useContext(ReleaseContext); + const release = use(ReleaseContext); const t = useTranslations(); useEffect( @@ -27,7 +27,7 @@ const PlatformDropdown: FC = () => { } }, // Only react on the change of the Client Context Architecture and Bitness - // eslint-disable-next-line react-hooks/exhaustive-deps + // eslint-disable-next-line @eslint-react/exhaustive-deps [architecture, bitness] ); @@ -40,7 +40,7 @@ const PlatformDropdown: FC = () => { ? parseCompat(PLATFORMS[release.os], release) : [], // We only want to react on the change of the OS, Platform, and Version - // eslint-disable-next-line react-hooks/exhaustive-deps + // eslint-disable-next-line @eslint-react/exhaustive-deps [release.os, release.version] ); @@ -53,7 +53,7 @@ const PlatformDropdown: FC = () => { } }, // We only want to react on the change of the OS and Version - // eslint-disable-next-line react-hooks/exhaustive-deps + // eslint-disable-next-line @eslint-react/exhaustive-deps [release.os, release.version, release.platform] ); diff --git a/apps/site/components/Downloads/Release/PrebuiltDownloadButtons.tsx b/apps/site/components/Downloads/Release/PrebuiltDownloadButtons.tsx index d009baba9e858..ff3849bbd8b9f 100644 --- a/apps/site/components/Downloads/Release/PrebuiltDownloadButtons.tsx +++ b/apps/site/components/Downloads/Release/PrebuiltDownloadButtons.tsx @@ -3,7 +3,7 @@ import { CloudArrowDownIcon } from '@heroicons/react/24/outline'; import Skeleton from '@node-core/ui-components/Common/Skeleton'; import { useTranslations } from 'next-intl'; -import { useContext } from 'react'; +import { use } from 'react'; import Button from '#site/components/Common/Button'; import { ReleaseContext } from '#site/providers/releaseProvider'; @@ -20,7 +20,7 @@ const getExtension = (input: string) => String(input.split('.').slice(-1)); const PrebuiltDownloadButtons: FC = () => { const t = useTranslations(); - const { release, os, platform } = useContext(ReleaseContext); + const { release, os, platform } = use(ReleaseContext); const installerUrl = platform ? getNodeDownloadUrl({ diff --git a/apps/site/components/Downloads/Release/ReleaseCodeBox.tsx b/apps/site/components/Downloads/Release/ReleaseCodeBox.tsx index c0d567ecb5ac3..11694415fd116 100644 --- a/apps/site/components/Downloads/Release/ReleaseCodeBox.tsx +++ b/apps/site/components/Downloads/Release/ReleaseCodeBox.tsx @@ -4,7 +4,7 @@ import { highlightToHtml } from '@node-core/rehype-shiki/minimal'; import AlertBox from '@node-core/ui-components/Common/AlertBox'; import Skeleton from '@node-core/ui-components/Common/Skeleton'; import { useTranslations } from 'next-intl'; -import { useContext, useMemo } from 'react'; +import { use, useMemo } from 'react'; import CodeBox from '#site/components/Common/CodeBox'; import LinkWithArrow from '#site/components/Common/LinkWithArrow'; @@ -114,8 +114,8 @@ const usePlatformInfo = (installMethod: string) => { * ReleaseCodeBox component displays installation instructions based on platform and context */ const ReleaseCodeBox: FC = () => { - const { snippets } = useContext(ReleasesContext); - const context = useContext(ReleaseContext); + const { snippets } = use(ReleasesContext); + const context = use(ReleaseContext); const t = useTranslations(); // Process platform information @@ -164,6 +164,7 @@ const ReleaseCodeBox: FC = () => { {/* Code display with skeleton loading */} + {/* eslint-disable-next-line @eslint-react/dom/no-dangerously-set-innerhtml */} diff --git a/apps/site/components/Downloads/Release/VersionDropdown.tsx b/apps/site/components/Downloads/Release/VersionDropdown.tsx index fcffe896ba307..3ca72e9b9b8ce 100644 --- a/apps/site/components/Downloads/Release/VersionDropdown.tsx +++ b/apps/site/components/Downloads/Release/VersionDropdown.tsx @@ -2,7 +2,7 @@ import WithNoScriptSelect from '@node-core/ui-components/Common/Select/NoScriptSelect'; import { useLocale, useTranslations } from 'next-intl'; -import { useContext } from 'react'; +import { use } from 'react'; import { redirect, usePathname } from '#site/navigation'; import { @@ -25,8 +25,8 @@ const getDropDownStatus = (version: string, status: string) => { }; const VersionDropdown: FC = () => { - const { releases } = useContext(ReleasesContext); - const { release, setVersion } = useContext(ReleaseContext); + const { releases } = use(ReleasesContext); + const { release, setVersion } = use(ReleaseContext); const t = useTranslations(); const locale = useLocale(); const pathname = usePathname(); diff --git a/apps/site/components/EOL/EOLModal.tsx b/apps/site/components/EOL/EOLModal.tsx index 1a8998025c9d3..dbcb5ea517dc4 100644 --- a/apps/site/components/EOL/EOLModal.tsx +++ b/apps/site/components/EOL/EOLModal.tsx @@ -1,6 +1,6 @@ import { Modal, Title, Content } from '@node-core/ui-components/Common/Modal'; import { useTranslations } from 'next-intl'; -import { useMemo } from 'react'; +import { useEffect } from 'react'; import KnownSeveritySection from '#site/components/EOL/KnownSeveritySection'; import UnknownSeveritySection from '#site/components/EOL/UnknownSeveritySection'; @@ -26,15 +26,16 @@ const EOLModal: FC = ({ ? t('components.eolModal.title', { version, codename }) : t('components.eolModal.titleWithoutCodename', { version }); - useMemo( - () => + useEffect( + () => { vulnerabilities.sort( (a, b) => SEVERITY_ORDER.indexOf(a.severity) - SEVERITY_ORDER.indexOf(b.severity) - ), + ); + }, // Only change when the vulnerabilities change - // eslint-disable-next-line react-hooks/exhaustive-deps + // eslint-disable-next-line @eslint-react/exhaustive-deps [vulnerabilities.length] ); diff --git a/apps/site/components/EOL/VulnerabilitiesTable.tsx b/apps/site/components/EOL/VulnerabilitiesTable.tsx index 8c2524ba2e57c..818c9364ecf63 100644 --- a/apps/site/components/EOL/VulnerabilitiesTable.tsx +++ b/apps/site/components/EOL/VulnerabilitiesTable.tsx @@ -27,8 +27,8 @@ const VulnerabilitiesTable: FC<{ - {vulnerabilities.map((vulnerability, i) => ( - + {vulnerabilities.map(vulnerability => ( + {vulnerability.cve.map(cveId => (
diff --git a/apps/site/components/withBreadcrumbs.tsx b/apps/site/components/withBreadcrumbs.tsx index 3091cd90cd277..753387ad35abd 100644 --- a/apps/site/components/withBreadcrumbs.tsx +++ b/apps/site/components/withBreadcrumbs.tsx @@ -4,8 +4,9 @@ import Breadcrumbs from '@node-core/ui-components/Common/Breadcrumbs'; import { useTranslations } from 'next-intl'; import Link from '#site/components/Link'; -import { useClientContext, useMediaQuery } from '#site/hooks/client'; -import { useSiteNavigation } from '#site/hooks/generic'; +import useClientContext from '#site/hooks/useClientContext'; +import useMediaQuery from '#site/hooks/useMediaQuery'; +import useSiteNavigation from '#site/hooks/useSiteNavigation'; import { dashToCamelCase } from '#site/util/string'; import type { NavigationKeys } from '#site/types'; diff --git a/apps/site/components/withMetaBar.tsx b/apps/site/components/withMetaBar.tsx index 22d52a9db83c3..4c1eb322cdb97 100644 --- a/apps/site/components/withMetaBar.tsx +++ b/apps/site/components/withMetaBar.tsx @@ -7,7 +7,8 @@ import { useFormatter, useLocale, useTranslations } from 'next-intl'; import Link from '#site/components/Link'; import WithAvatarGroup from '#site/components/withAvatarGroup'; -import { useClientContext, useMediaQuery } from '#site/hooks/client'; +import useClientContext from '#site/hooks/useClientContext'; +import useMediaQuery from '#site/hooks/useMediaQuery'; import { DEFAULT_DATE_FORMAT } from '#site/next.calendar.constants.mjs'; import { TRANSLATION_URL } from '#site/next.constants.mjs'; import { getGitHubBlobUrl } from '#site/util/github'; @@ -18,7 +19,9 @@ const WithMetaBar: FC = () => { const { headings, readingTime, frontmatter, filename } = useClientContext(); const formatter = useFormatter(); const lastUpdated = frontmatter.date - ? formatter.dateTime(new Date(frontmatter.date), DEFAULT_DATE_FORMAT) + ? // "frontmatter.date" is deterministic + // eslint-disable-next-line @eslint-react/purity + formatter.dateTime(new Date(frontmatter.date), DEFAULT_DATE_FORMAT) : undefined; const readingTimeText = formatter.number(readingTime.minutes, { style: 'unit', diff --git a/apps/site/components/withNavBar.tsx b/apps/site/components/withNavBar.tsx index 4b370fe48fd9b..445fecd4d704d 100644 --- a/apps/site/components/withNavBar.tsx +++ b/apps/site/components/withNavBar.tsx @@ -16,7 +16,7 @@ import SearchButton from '#site/components/Common/Searchbox'; import Link from '#site/components/Link'; import WithBanner from '#site/components/withBanner'; import WithNodejsLogo from '#site/components/withNodejsLogo'; -import { useSiteNavigation } from '#site/hooks/generic'; +import useSiteNavigation from '#site/hooks/useSiteNavigation'; import { useRouter, usePathname } from '#site/navigation.mjs'; import type { Theme } from '@node-core/ui-components/Common/ThemeToggle'; diff --git a/apps/site/components/withSidebar.tsx b/apps/site/components/withSidebar.tsx index 91866828ac934..0fb26fb1f5a46 100644 --- a/apps/site/components/withSidebar.tsx +++ b/apps/site/components/withSidebar.tsx @@ -5,8 +5,9 @@ import { useTranslations } from 'next-intl'; import { useRef } from 'react'; import Link from '#site/components/Link'; -import { useClientContext, useScrollToElement } from '#site/hooks/client'; -import { useSiteNavigation } from '#site/hooks/generic'; +import useClientContext from '#site/hooks/useClientContext'; +import useScrollToElement from '#site/hooks/useScrollToElement'; +import useSiteNavigation from '#site/hooks/useSiteNavigation'; import { useRouter, usePathname } from '#site/navigation.mjs'; import type { NavigationKeys } from '#site/types'; diff --git a/apps/site/components/withSidebarCrossLinks.tsx b/apps/site/components/withSidebarCrossLinks.tsx index 8b9d4c73f6514..565b459524859 100644 --- a/apps/site/components/withSidebarCrossLinks.tsx +++ b/apps/site/components/withSidebarCrossLinks.tsx @@ -1,6 +1,6 @@ +import { getClientContext } from '#site/client-context'; import CrossLink from '#site/components/Common/CrossLink'; -import { useSiteNavigation } from '#site/hooks/generic'; -import { useClientContext } from '#site/hooks/server'; +import useSiteNavigation from '#site/hooks/useSiteNavigation'; import type { NavigationKeys } from '#site/types'; import type { FC } from 'react'; @@ -9,7 +9,7 @@ type WithCrossLinksProps = { navKey: NavigationKeys }; const WithSidebarCrossLinks: FC = ({ navKey }) => { const { getSideNavigation } = useSiteNavigation(); - const { pathname } = useClientContext(); + const { pathname } = getClientContext(); const [[, sidebarNavigation]] = getSideNavigation([navKey]); diff --git a/apps/site/eslint.config.js b/apps/site/eslint.config.js index 6b40fcaa52dc5..986a3bf1bd172 100644 --- a/apps/site/eslint.config.js +++ b/apps/site/eslint.config.js @@ -1,7 +1,6 @@ +import eslintReact from '@eslint-react/eslint-plugin'; import next from '@next/eslint-plugin-next'; import * as mdx from 'eslint-plugin-mdx'; -import react from 'eslint-plugin-react'; -import reactHooks from 'eslint-plugin-react-hooks'; import baseConfig from '../../eslint.config.js'; @@ -10,9 +9,8 @@ export default baseConfig.concat([ ignores: ['pages/en/blog/**/*.{md,mdx}/**', 'public', 'next-env.d.ts'], }, - react.configs.flat['jsx-runtime'], - reactHooks.configs.flat['recommended-latest'], - next.configs['core-web-vitals'], + eslintReact.configs['recommended-typescript'], + next.configs.recommended, mdx.flatCodeBlocks, // Type-checking @@ -29,20 +27,6 @@ export default baseConfig.concat([ }, }, - { - rules: { - 'react/no-unescaped-entities': 'off', - 'react/function-component-definition': [ - 'error', - { - namedComponents: 'arrow-function', - unnamedComponents: 'arrow-function', - }, - ], - }, - settings: { react: { version: 'detect' } }, - }, - { files: ['**/*.{md,mdx}/**'], rules: { diff --git a/apps/site/hooks/client/__tests__/useClientContext.test.jsx b/apps/site/hooks/__tests__/useClientContext.test.jsx similarity index 92% rename from apps/site/hooks/client/__tests__/useClientContext.test.jsx rename to apps/site/hooks/__tests__/useClientContext.test.jsx index 2843d4ed3c63c..d291180a99167 100644 --- a/apps/site/hooks/client/__tests__/useClientContext.test.jsx +++ b/apps/site/hooks/__tests__/useClientContext.test.jsx @@ -3,7 +3,7 @@ import { renderHook } from '@testing-library/react'; import { describe, it } from 'node:test'; import assert from 'node:assert/strict'; -import useClientContext from '#site/hooks/client/useClientContext'; +import useClientContext from '#site/hooks/useClientContext'; import { MatterContext } from '#site/providers/matterProvider'; describe('useClientContext', () => { diff --git a/apps/site/hooks/client/__tests__/useDetectOS.test.mjs b/apps/site/hooks/__tests__/useDetectOS.test.mjs similarity index 97% rename from apps/site/hooks/client/__tests__/useDetectOS.test.mjs rename to apps/site/hooks/__tests__/useDetectOS.test.mjs index 9a904ca30b46c..78c8b6e7954ef 100644 --- a/apps/site/hooks/client/__tests__/useDetectOS.test.mjs +++ b/apps/site/hooks/__tests__/useDetectOS.test.mjs @@ -3,7 +3,7 @@ import { describe, it, afterEach } from 'node:test'; import { renderHook, waitFor } from '@testing-library/react'; -import useDetectOS from '#site/hooks/client/useDetectOS'; +import useDetectOS from '#site/hooks/useDetectOS'; const windowsUserAgent = 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.36'; diff --git a/apps/site/hooks/client/__tests__/useMediaQuery.test.mjs b/apps/site/hooks/__tests__/useMediaQuery.test.mjs similarity index 96% rename from apps/site/hooks/client/__tests__/useMediaQuery.test.mjs rename to apps/site/hooks/__tests__/useMediaQuery.test.mjs index 468c8dc8b3116..71b51f0aed46e 100644 --- a/apps/site/hooks/client/__tests__/useMediaQuery.test.mjs +++ b/apps/site/hooks/__tests__/useMediaQuery.test.mjs @@ -3,7 +3,7 @@ import { describe, it } from 'node:test'; import { renderHook } from '@testing-library/react'; -import useMediaQuery from '#site/hooks/client/useMediaQuery'; +import useMediaQuery from '#site/hooks/useMediaQuery'; const noop = () => {}; diff --git a/apps/site/hooks/client/__tests__/useScrollToElement.test.jsx b/apps/site/hooks/__tests__/useScrollToElement.test.jsx similarity index 84% rename from apps/site/hooks/client/__tests__/useScrollToElement.test.jsx rename to apps/site/hooks/__tests__/useScrollToElement.test.jsx index bc434f55097f8..a26dfe75545f2 100644 --- a/apps/site/hooks/client/__tests__/useScrollToElement.test.jsx +++ b/apps/site/hooks/__tests__/useScrollToElement.test.jsx @@ -2,7 +2,7 @@ import { renderHook } from '@testing-library/react'; import { afterEach, beforeEach, describe, it, mock } from 'node:test'; import assert from 'node:assert/strict'; -import useScrollToElement from '#site/hooks/client/useScrollToElement.js'; +import useScrollToElement from '#site/hooks/useScrollToElement'; import { NavigationStateContext } from '#site/providers/navigationStateProvider'; describe('useScrollToElement', () => { @@ -12,7 +12,7 @@ describe('useScrollToElement', () => { beforeEach(() => { navigationState = {}; - + mockElement = { scrollTop: 0, scrollLeft: 0, @@ -37,7 +37,10 @@ describe('useScrollToElement', () => { // Should restore scroll position on mount if saved state exists navigationState.sidebar = { x: 100, y: 200 }; - const { unmount: unmount1 } = renderHook(() => useScrollToElement('sidebar', mockRef), { wrapper }); + const { unmount: unmount1 } = renderHook( + () => useScrollToElement('sidebar', mockRef), + { wrapper } + ); assert.equal(mockElement.scroll.mock.callCount(), 1); assert.deepEqual(mockElement.scroll.mock.calls[0].arguments, [ @@ -50,7 +53,10 @@ describe('useScrollToElement', () => { // Should not restore if no saved state exists navigationState = {}; - const { unmount: unmount2 } = renderHook(() => useScrollToElement('sidebar', mockRef), { wrapper }); + const { unmount: unmount2 } = renderHook( + () => useScrollToElement('sidebar', mockRef), + { wrapper } + ); assert.equal(mockElement.scroll.mock.callCount(), 0); unmount2(); @@ -60,7 +66,10 @@ describe('useScrollToElement', () => { // Should not restore if current position matches saved state navigationState.sidebar = { x: 0, y: 0 }; mockElement.scrollTop = 0; - const { unmount: unmount3 } = renderHook(() => useScrollToElement('sidebar', mockRef), { wrapper }); + const { unmount: unmount3 } = renderHook( + () => useScrollToElement('sidebar', mockRef), + { wrapper } + ); assert.equal(mockElement.scroll.mock.callCount(), 0); unmount3(); @@ -86,9 +95,13 @@ describe('useScrollToElement', () => { ); // First render: user scrolls to position 800 - const { unmount } = renderHook(() => useScrollToElement('sidebar', mockRef), { wrapper }); + const { unmount } = renderHook( + () => useScrollToElement('sidebar', mockRef), + { wrapper } + ); - const scrollHandler = mockElement.addEventListener.mock.calls[0].arguments[1]; + const scrollHandler = + mockElement.addEventListener.mock.calls[0].arguments[1]; mockElement.scrollTop = 800; mockElement.scrollLeft = 0; scrollHandler(); @@ -127,7 +140,8 @@ describe('useScrollToElement', () => { renderHook(() => useScrollToElement('sidebar', mockRef), { wrapper }); // Get the scroll handler that was registered - const scrollHandler2 = mockElement.addEventListener.mock.calls[0].arguments[1]; + const scrollHandler2 = + mockElement.addEventListener.mock.calls[0].arguments[1]; // Simulate scroll mockElement.scrollTop = 150; diff --git a/apps/site/hooks/client/index.ts b/apps/site/hooks/client/index.ts deleted file mode 100644 index bd399cf4e8b4a..0000000000000 --- a/apps/site/hooks/client/index.ts +++ /dev/null @@ -1,5 +0,0 @@ -export { default as useDetectOS } from './useDetectOS'; -export { default as useMediaQuery } from './useMediaQuery'; -export { default as useClientContext } from './useClientContext'; -export { default as useScrollToElement } from './useScrollToElement'; -export { default as useScroll } from './useScroll'; diff --git a/apps/site/hooks/generic/index.ts b/apps/site/hooks/generic/index.ts deleted file mode 100644 index da2c195af02fb..0000000000000 --- a/apps/site/hooks/generic/index.ts +++ /dev/null @@ -1 +0,0 @@ -export { default as useSiteNavigation } from './useSiteNavigation'; diff --git a/apps/site/hooks/server/index.ts b/apps/site/hooks/server/index.ts deleted file mode 100644 index 4493382a557e3..0000000000000 --- a/apps/site/hooks/server/index.ts +++ /dev/null @@ -1,3 +0,0 @@ -export { default as useClientContext } from './useClientContext'; -export { default as useScrollToElement } from './useScrollToElement'; -export { default as useScroll } from './useScroll'; diff --git a/apps/site/hooks/server/useClientContext.ts b/apps/site/hooks/server/useClientContext.ts deleted file mode 100644 index 981ceb5070773..0000000000000 --- a/apps/site/hooks/server/useClientContext.ts +++ /dev/null @@ -1,5 +0,0 @@ -import { getClientContext } from '#site/client-context'; - -const useClientContext = () => getClientContext(); - -export default useClientContext; diff --git a/apps/site/hooks/server/useScroll.ts b/apps/site/hooks/server/useScroll.ts deleted file mode 100644 index 89485a459dfe6..0000000000000 --- a/apps/site/hooks/server/useScroll.ts +++ /dev/null @@ -1,5 +0,0 @@ -const useScroll = () => { - throw new Error('Attempted to call useScroll from RSC'); -}; - -export default useScroll; diff --git a/apps/site/hooks/server/useScrollToElement.ts b/apps/site/hooks/server/useScrollToElement.ts deleted file mode 100644 index 30ec4d6505439..0000000000000 --- a/apps/site/hooks/server/useScrollToElement.ts +++ /dev/null @@ -1,5 +0,0 @@ -const useScrollToElement = () => { - throw new Error('Attempted to call useScrollToElement from RSC'); -}; - -export default useScrollToElement; diff --git a/apps/site/hooks/client/useClientContext.ts b/apps/site/hooks/useClientContext.ts similarity index 56% rename from apps/site/hooks/client/useClientContext.ts rename to apps/site/hooks/useClientContext.ts index 5145fa7af08fb..c4eda51f3a781 100644 --- a/apps/site/hooks/client/useClientContext.ts +++ b/apps/site/hooks/useClientContext.ts @@ -1,9 +1,9 @@ 'use client'; -import { useContext } from 'react'; +import { use } from 'react'; import { MatterContext } from '#site/providers/matterProvider'; import type { ClientSharedServerContext } from '#site/types'; -export default () => useContext(MatterContext) as ClientSharedServerContext; +export default () => use(MatterContext) as ClientSharedServerContext; diff --git a/apps/site/hooks/client/useDetectOS.ts b/apps/site/hooks/useDetectOS.ts similarity index 96% rename from apps/site/hooks/client/useDetectOS.ts rename to apps/site/hooks/useDetectOS.ts index f1e4f797ecdce..acb034eaadd19 100644 --- a/apps/site/hooks/client/useDetectOS.ts +++ b/apps/site/hooks/useDetectOS.ts @@ -34,6 +34,7 @@ const useDetectOS = () => { // We immediately set the OS to LOADING, and then we update it with the detected OS. // This is due to that initial render set within the state will indicate a mismatch from // the server-side rendering versus what the initial state is from the client-side + // eslint-disable-next-line @eslint-react/set-state-in-effect setUserOSState(current => ({ ...current, os })); // We attempt to get the high entropy values from the Browser and set the User OS State diff --git a/apps/site/hooks/client/useMediaQuery.ts b/apps/site/hooks/useMediaQuery.ts similarity index 60% rename from apps/site/hooks/client/useMediaQuery.ts rename to apps/site/hooks/useMediaQuery.ts index 7e1e557b5bfa3..f8b03f924b77d 100644 --- a/apps/site/hooks/client/useMediaQuery.ts +++ b/apps/site/hooks/useMediaQuery.ts @@ -12,19 +12,17 @@ const useMediaQuery = (query: string) => { }); useEffect(() => { - const { addEventListener, removeEventListener } = window.matchMedia?.( - query - ) ?? { - matches: false, - addEventListener: () => {}, - removeEventListener: () => {}, - }; + const mediaQueryList = window.matchMedia?.(query); + + if (!mediaQueryList) { + return; + } const handler = (event: MediaQueryListEvent) => setMatches(event.matches); - addEventListener('change', handler); + mediaQueryList.addEventListener('change', handler); - return () => removeEventListener('change', handler); + return () => mediaQueryList.removeEventListener('change', handler); }, [query]); return matches; diff --git a/apps/site/hooks/client/useScroll.ts b/apps/site/hooks/useScroll.ts similarity index 100% rename from apps/site/hooks/client/useScroll.ts rename to apps/site/hooks/useScroll.ts diff --git a/apps/site/hooks/client/useScrollToElement.ts b/apps/site/hooks/useScrollToElement.ts similarity index 88% rename from apps/site/hooks/client/useScrollToElement.ts rename to apps/site/hooks/useScrollToElement.ts index cdbfc2ab61886..c634eb8756c7f 100644 --- a/apps/site/hooks/client/useScrollToElement.ts +++ b/apps/site/hooks/useScrollToElement.ts @@ -1,6 +1,6 @@ 'use client'; -import { useContext, useEffect } from 'react'; +import { use, useEffect } from 'react'; import { NavigationStateContext } from '#site/providers/navigationStateProvider'; @@ -13,7 +13,7 @@ const useScrollToElement = ( ref: RefObject, debounceTime = 300 ) => { - const navigationState = useContext(NavigationStateContext); + const navigationState = use(NavigationStateContext); // Restore scroll position on mount useEffect(() => { @@ -30,7 +30,7 @@ const useScrollToElement = ( } // navigationState is intentionally excluded // it's a stable object reference that doesn't need to trigger re-runs - // eslint-disable-next-line react-hooks/exhaustive-deps + // eslint-disable-next-line @eslint-react/exhaustive-deps }, [id, ref]); // Save scroll position on scroll diff --git a/apps/site/hooks/generic/useSiteNavigation.ts b/apps/site/hooks/useSiteNavigation.ts similarity index 100% rename from apps/site/hooks/generic/useSiteNavigation.ts rename to apps/site/hooks/useSiteNavigation.ts diff --git a/apps/site/layouts/Post.tsx b/apps/site/layouts/Post.tsx index 46d1727d080d1..123bafe87ccdc 100644 --- a/apps/site/layouts/Post.tsx +++ b/apps/site/layouts/Post.tsx @@ -1,12 +1,12 @@ import Preview from '@node-core/ui-components/Common/Preview'; +import { getClientContext } from '#site/client-context'; import EOLAlert from '#site/components/EOL/EOLAlert'; import WithAvatarGroup from '#site/components/withAvatarGroup'; import WithBlogCrossLinks from '#site/components/withBlogCrossLinks'; import WithFooter from '#site/components/withFooter'; import WithMetaBar from '#site/components/withMetaBar'; import WithNavBar from '#site/components/withNavBar'; -import { useClientContext } from '#site/hooks/server'; import { mapAuthorToCardAuthors } from '#site/util/author'; import { mapBlogCategoryToPreviewType } from '#site/util/blog'; @@ -15,7 +15,7 @@ import type { FC, PropsWithChildren } from 'react'; import styles from './layouts.module.css'; const PostLayout: FC = ({ children }) => { - const { frontmatter } = useClientContext(); + const { frontmatter } = getClientContext(); const authors = mapAuthorToCardAuthors(frontmatter.author!); diff --git a/apps/site/package.json b/apps/site/package.json index 856ca0b111cba..52380a3889aa4 100644 --- a/apps/site/package.json +++ b/apps/site/package.json @@ -80,8 +80,9 @@ "vfile-matter": "~5.0.1" }, "devDependencies": { + "@eslint-react/eslint-plugin": "~3.0.0", "@flarelabs-net/wrangler-build-time-fs-assets-polyfilling": "^0.0.1", - "@next/eslint-plugin-next": "16.1.7", + "@next/eslint-plugin-next": "16.2.1", "@node-core/remark-lint": "workspace:*", "@opennextjs/cloudflare": "^1.17.1", "@playwright/test": "^1.58.2", @@ -91,22 +92,20 @@ "@types/semver": "~7.7.1", "babel-plugin-react-compiler": "^1.0.0", "dedent": "^1.7.2", - "eslint-config-next": "16.1.6", - "eslint-plugin-mdx": "~3.6.2", - "eslint-plugin-react": "~7.37.5", - "eslint-plugin-react-hooks": "^7.0.1", + "eslint-plugin-mdx": "~3.7.0", "global-jsdom": "^29.0.0", "handlebars": "4.7.9", "jsdom": "^29.0.0", "mdast-util-from-markdown": "^2.0.3", "nock": "^14.0.11", "remark-frontmatter": "^5.0.0", - "stylelint": "17.1.1", + "stylelint": "17.6.0", "stylelint-config-standard": "40.0.0", - "stylelint-order": "7.0.1", + "stylelint-order": "8.1.1", "stylelint-selector-bem-pattern": "4.0.1", "tsx": "^4.21.0", - "typescript-eslint": "~8.54.0", + "typescript": "catalog:", + "typescript-eslint": "~8.57.2", "user-agent-data-types": "0.4.2", "wrangler": "^4.74.0" }, diff --git a/apps/site/providers/matterProvider.tsx b/apps/site/providers/matterProvider.tsx index 28376bd55d097..8419c3add96ce 100644 --- a/apps/site/providers/matterProvider.tsx +++ b/apps/site/providers/matterProvider.tsx @@ -2,7 +2,7 @@ import { createContext } from 'react'; -import { useDetectOS } from '#site/hooks/client'; +import useDetectOS from '#site/hooks/useDetectOS'; import { assignClientContext } from '#site/util/context'; import type { ClientSharedServerContext } from '#site/types'; @@ -23,8 +23,8 @@ export const MatterProvider: FC = ({ const os = useDetectOS(); return ( - + {children} - + ); }; diff --git a/apps/site/providers/navigationStateProvider.tsx b/apps/site/providers/navigationStateProvider.tsx index 427b9ab8073ab..63f89de0a26c3 100644 --- a/apps/site/providers/navigationStateProvider.tsx +++ b/apps/site/providers/navigationStateProvider.tsx @@ -13,12 +13,11 @@ export const NavigationStateContext = createContext( export const NavigationStateProvider: FC = ({ children, }) => { - const navigationState = useRef({}); + const navigationStateRef = useRef({}); return ( - // eslint-disable-next-line react-hooks/refs - + {children} - + ); }; diff --git a/apps/site/providers/releaseProvider.tsx b/apps/site/providers/releaseProvider.tsx index 5de2a77aaf118..edae64dd97b01 100644 --- a/apps/site/providers/releaseProvider.tsx +++ b/apps/site/providers/releaseProvider.tsx @@ -1,12 +1,6 @@ 'use client'; -import { - createContext, - useContext, - useEffect, - useMemo, - useReducer, -} from 'react'; +import { createContext, use, useEffect, useMemo, useReducer } from 'react'; import reducer, { getActions, @@ -31,16 +25,14 @@ export const ReleaseContext = createContext({ export const ReleasesProvider: FC< PropsWithChildren > = ({ children, releases, snippets }) => ( - - {children} - + {children} ); export const ReleaseProvider: FC< PropsWithChildren > = ({ children, initialRelease }) => { - const { releases } = useContext(ReleasesContext); - const parentProvider = useContext(ReleaseContext); + const { releases } = use(ReleasesContext); + const parentProvider = use(ReleaseContext); const [state, dispatch] = useReducer(reducer, { ...releaseState, @@ -60,19 +52,19 @@ export const ReleaseProvider: FC< actions.setVersion(parentProvider.version); } // We should only react if the parentProvider changes - // eslint-disable-next-line react-hooks/exhaustive-deps + // eslint-disable-next-line @eslint-react/exhaustive-deps }, [actions, parentProvider]); const release = useMemo( () => releases.find(r => r.versionWithPrefix === state.version)!, // Memoizes the release based on the version - // eslint-disable-next-line react-hooks/exhaustive-deps + // eslint-disable-next-line @eslint-react/exhaustive-deps [state.version] ); return ( - + {children} - + ); }; diff --git a/apps/site/types/server.ts b/apps/site/types/server.ts index 4af58c6cf1969..8935d255054d7 100644 --- a/apps/site/types/server.ts +++ b/apps/site/types/server.ts @@ -1,4 +1,4 @@ -import type { useDetectOS } from '#site/hooks/client'; +import type useDetectOS from '#site/hooks/useDetectOS'; import type { Frontmatter } from '#site/types/frontmatter'; import type { Heading } from '@vcarl/remark-headings'; import type { ReadTimeResults } from 'reading-time'; diff --git a/package.json b/package.json index 8c9a8686db0e1..ff33c8fd0847f 100644 --- a/package.json +++ b/package.json @@ -36,22 +36,22 @@ }, "dependencies": { "husky": "9.1.7", - "lint-staged": "16.2.7", + "lint-staged": "16.4.0", "turbo": "2.8.17" }, "devDependencies": { - "@eslint/js": "~9.39.2", + "@eslint/js": "~10.0.1", "@reporters/github": "^1.12.0", "@testing-library/react": "~16.3.2", "cross-env": "^10.1.0", - "eslint": "~9.39.2", + "eslint": "~10.1.0", "eslint-import-resolver-typescript": "~4.4.4", - "eslint-plugin-import-x": "~4.16.1", + "eslint-plugin-import-x": "~4.16.2", "globals": "^17.4.0", "prettier": "3.8.1", "prettier-plugin-tailwindcss": "0.7.2", "typescript": "catalog:", - "typescript-eslint": "~8.54.0" + "typescript-eslint": "~8.57.2" }, "packageManager": "pnpm@10.28.2", "devEngines": { diff --git a/packages/ui-components/__design__/platform-logos.stories.tsx b/packages/ui-components/__design__/platform-logos.stories.tsx index 11a2f7046fcf3..650a9a9b21b5e 100644 --- a/packages/ui-components/__design__/platform-logos.stories.tsx +++ b/packages/ui-components/__design__/platform-logos.stories.tsx @@ -16,10 +16,10 @@ const installMethodIcons = [Docker, Homebrew, NVM, Choco, N, Volta]; export const PlatformLogos: StoryObj = { render: () => (
- {[osIcons, installMethodIcons].map((icons, idx) => ( -
- {icons.map((Icon, index) => ( - + {[osIcons, installMethodIcons].map(icons => ( +
+ {icons.map(Icon => ( + ))}
))} diff --git a/packages/ui-components/__design__/social-logos.stories.tsx b/packages/ui-components/__design__/social-logos.stories.tsx index e07f97cb83f53..32cf4c7f36079 100644 --- a/packages/ui-components/__design__/social-logos.stories.tsx +++ b/packages/ui-components/__design__/social-logos.stories.tsx @@ -19,10 +19,13 @@ const socialIcons = [ export const SocialMediaLogos: StoryObj = { render: () => (
- {socialIcons.map((group, idx) => ( -
- {group.map((Icon, index) => ( - + {socialIcons.map(group => ( +
i.name || i.displayName).join()} + className="flex flex-col items-center gap-4" + > + {group.map(Icon => ( + ))}
))} diff --git a/packages/ui-components/__design__/table.stories.tsx b/packages/ui-components/__design__/table.stories.tsx index a6b07b3d26e6c..931ed5793cf0c 100644 --- a/packages/ui-components/__design__/table.stories.tsx +++ b/packages/ui-components/__design__/table.stories.tsx @@ -1,9 +1,9 @@ import type { Meta as MetaObj, StoryObj } from '@storybook/react-webpack5'; const tableData = [ - ['Data 1', 'Data 2', 'Data 3'], - ['Data 1', 'Data 2', 'Data 3'], - ['Data 1', 'Data 2', 'Data 3'], + { id: 'row-1', cells: ['Data 1', 'Data 2', 'Data 3'] }, + { id: 'row-2', cells: ['Data 1', 'Data 2', 'Data 3'] }, + { id: 'row-3', cells: ['Data 1', 'Data 2', 'Data 3'] }, ]; export const Table: StoryObj = { @@ -12,16 +12,16 @@ export const Table: StoryObj = { - {['Column 1', 'Column 2', 'Column 3'].map((col, idx) => ( - + {['Column 1', 'Column 2', 'Column 3'].map(col => ( + ))} - {tableData.map((row, rowIndex) => ( - - {row.map((cell, cellIndex) => ( - + {tableData.map(row => ( + + {row.cells.map(cell => ( + ))} ))} diff --git a/packages/ui-components/eslint.config.js b/packages/ui-components/eslint.config.js index 926668537fe9a..15f829b3e0f86 100644 --- a/packages/ui-components/eslint.config.js +++ b/packages/ui-components/eslint.config.js @@ -1,12 +1,10 @@ -import react from 'eslint-plugin-react'; -import reactHooks from 'eslint-plugin-react-hooks'; +import eslintReact from '@eslint-react/eslint-plugin'; import storybook from 'eslint-plugin-storybook'; import baseConfig from '../../eslint.config.js'; export default baseConfig.concat([ - react.configs.flat['jsx-runtime'], - reactHooks.configs.flat['recommended-latest'], + eslintReact.configs['recommended-typescript'], ...storybook.configs['flat/recommended'], // Type-checking @@ -27,16 +25,6 @@ export default baseConfig.concat([ { rules: { 'storybook/no-renderer-packages': 'off', - - 'react/no-unescaped-entities': 'off', - 'react/function-component-definition': [ - 'error', - { - namedComponents: 'arrow-function', - unnamedComponents: 'arrow-function', - }, - ], }, - settings: { react: { version: 'detect' } }, }, ]); diff --git a/packages/ui-components/package.json b/packages/ui-components/package.json index 4e2c0550a3119..eec15e599eebe 100644 --- a/packages/ui-components/package.json +++ b/packages/ui-components/package.json @@ -58,13 +58,14 @@ "@types/react": "catalog:", "@vcarl/remark-headings": "~0.1.0", "classnames": "catalog:", - "postcss-cli": "11.0.1", "postcss-calc": "10.1.1", + "postcss-cli": "11.0.1", "react": "catalog:", "tailwindcss": "catalog:", "typescript": "catalog:" }, "devDependencies": { + "@eslint-react/eslint-plugin": "~3.0.0", "@storybook/addon-styling-webpack": "~3.0.0", "@storybook/addon-themes": "~10.2.19", "@storybook/addon-webpack5-compiler-swc": "~4.0.2", @@ -76,14 +77,14 @@ "css-loader": "7.1.4", "eslint-plugin-react": "7.37.5", "eslint-plugin-react-hooks": "7.0.1", - "eslint-plugin-storybook": "10.0.7", + "eslint-plugin-storybook": "10.3.3", "global-jsdom": "29.0.0", "postcss-loader": "8.2.1", "storybook": "~10.2.19", "style-loader": "4.0.0", - "stylelint": "17.1.1", + "stylelint": "17.5.0", "stylelint-config-standard": "40.0.0", - "stylelint-order": "7.0.1", + "stylelint-order": "8.1.1", "stylelint-selector-bem-pattern": "4.0.1", "tsx": "4.21.0" }, diff --git a/packages/ui-components/src/Common/AvatarGroup/Avatar/index.tsx b/packages/ui-components/src/Common/AvatarGroup/Avatar/index.tsx index df19cfc4f0739..e3ae1a4dc7394 100644 --- a/packages/ui-components/src/Common/AvatarGroup/Avatar/index.tsx +++ b/packages/ui-components/src/Common/AvatarGroup/Avatar/index.tsx @@ -1,9 +1,8 @@ import * as RadixAvatar from '@radix-ui/react-avatar'; import classNames from 'classnames'; -import { forwardRef } from 'react'; import type { LinkLike } from '#ui/types'; -import type { HTMLAttributes } from 'react'; +import type { FC, HTMLAttributes } from 'react'; import styles from './index.module.css'; @@ -15,56 +14,45 @@ export type AvatarProps = { size?: 'small' | 'medium'; url?: string; as?: LinkLike | 'div'; -}; +} & HTMLAttributes; -const Avatar = forwardRef< - HTMLSpanElement, - HTMLAttributes & AvatarProps ->( - ( - { - image, - nickname, - name, - fallback, - url, - size = 'small', - as: Component = 'a', - ...props - }, - ref - ) => { - if (!url) { - Component = 'div'; - } +const Avatar: FC = ({ + image, + nickname, + name, + fallback, + url, + size = 'small', + as: Component = 'a', + ...props +}) => { + if (!url) { + Component = 'div'; + } - return ( - + - - - - {fallback} - - - - ); - } -); + + + {fallback} + + + + ); +}; export default Avatar; diff --git a/packages/ui-components/src/Common/BaseCodeBox/index.tsx b/packages/ui-components/src/Common/BaseCodeBox/index.tsx index 666127a156962..af31bcdf3c37f 100644 --- a/packages/ui-components/src/Common/BaseCodeBox/index.tsx +++ b/packages/ui-components/src/Common/BaseCodeBox/index.tsx @@ -47,8 +47,10 @@ const transformCode = >( const columns = line.split(' '); return [ + // eslint-disable-next-line @eslint-react/no-array-index-key -- lines from split string have no stable ID {columns.map((column, columnIndex) => ( + // eslint-disable-next-line @eslint-react/no-array-index-key -- columns from split string have no stable ID {column} {columnIndex < columns.length - 1 && } diff --git a/packages/ui-components/src/Common/BasePagination/useGetPageElements.tsx b/packages/ui-components/src/Common/BasePagination/getPageElements.tsx similarity index 99% rename from packages/ui-components/src/Common/BasePagination/useGetPageElements.tsx rename to packages/ui-components/src/Common/BasePagination/getPageElements.tsx index 23a54d300c14e..cb9b245f4c9bf 100644 --- a/packages/ui-components/src/Common/BasePagination/useGetPageElements.tsx +++ b/packages/ui-components/src/Common/BasePagination/getPageElements.tsx @@ -35,7 +35,7 @@ const MAXIMUM_AMOUNT_OF_ELLIPSES = 2; // The logic of this custom hook has taken the internal logic of // React MUI's Pagination component as reference. More info here: // https://github.com/mui/material-ui/blob/master/packages/mui-material/src/usePagination/usePagination.js -export const useGetPageElements = ( +export const getPageElements = ( currentPage: ComponentProps['currentPage'], pages: ComponentProps['pages'], currentPageSiblingsCount: number, diff --git a/packages/ui-components/src/Common/BasePagination/index.tsx b/packages/ui-components/src/Common/BasePagination/index.tsx index ab72d5bf7e901..c18dc880c3286 100644 --- a/packages/ui-components/src/Common/BasePagination/index.tsx +++ b/packages/ui-components/src/Common/BasePagination/index.tsx @@ -1,7 +1,7 @@ import { ArrowRightIcon, ArrowLeftIcon } from '@heroicons/react/20/solid'; import Button from '#ui/Common/BaseButton'; -import { useGetPageElements } from '#ui/Common/BasePagination/useGetPageElements'; +import { getPageElements } from '#ui/Common/BasePagination/getPageElements'; import type { LinkLike } from '#ui/types'; import type { FC } from 'react'; @@ -36,7 +36,7 @@ const BasePagination: FC = ({ labels, getPageLabel, }) => { - const parsedPages = useGetPageElements( + const parsedPages = getPageElements( currentPage, pages, currentPageSiblingsCount, diff --git a/packages/ui-components/src/Common/ChangeHistory/index.tsx b/packages/ui-components/src/Common/ChangeHistory/index.tsx index 15338bc1e130a..401e67bd62d71 100644 --- a/packages/ui-components/src/Common/ChangeHistory/index.tsx +++ b/packages/ui-components/src/Common/ChangeHistory/index.tsx @@ -39,12 +39,12 @@ const ChangeHistory: FC = ({ aria-label={ariaLabel} >
- {changes.map((change, index) => { + {changes.map(change => { const MenuItem = change.url ? As : 'div'; return ( (
- {[...Array(3)].map((_, index) => ( -
+ {['skeleton-1', 'skeleton-2', 'skeleton-3'].map(id => ( +
diff --git a/packages/ui-components/src/Common/Search/Suggestions/index.tsx b/packages/ui-components/src/Common/Search/Suggestions/index.tsx index f52fbcf6e39bd..915770908070d 100644 --- a/packages/ui-components/src/Common/Search/Suggestions/index.tsx +++ b/packages/ui-components/src/Common/Search/Suggestions/index.tsx @@ -20,8 +20,8 @@ const SearchSuggestions: FC = ({ }) => ( {label &&

{label}

} - {suggestions.map((suggestion, i) => ( - + {suggestions.map(suggestion => ( + {suggestion} diff --git a/packages/ui-components/src/Common/Select/index.tsx b/packages/ui-components/src/Common/Select/index.tsx index 760b54b2e9733..596d51704369a 100644 --- a/packages/ui-components/src/Common/Select/index.tsx +++ b/packages/ui-components/src/Common/Select/index.tsx @@ -3,7 +3,7 @@ import { ChevronDownIcon, ChevronUpIcon } from '@heroicons/react/24/outline'; import * as SelectPrimitive from '@radix-ui/react-select'; import classNames from 'classnames'; -import { useEffect, useId, useMemo, useState } from 'react'; +import { useId, useMemo, useState } from 'react'; import Skeleton from '#ui/Common/Skeleton'; @@ -64,8 +64,6 @@ const Select = ({ const id = useId(); const [value, setValue] = useState(defaultValue); - useEffect(() => setValue(defaultValue), [defaultValue]); - const mappedValues = useMemo(() => mapValues(values), [values]) as Array< SelectGroup >; @@ -108,7 +106,7 @@ const Select = ({ )); // We explicitly want to recalculate these values only when the values themselves changed // This is to prevent re-rendering and re-calcukating the values on every render - // eslint-disable-next-line react-hooks/exhaustive-deps + // eslint-disable-next-line @eslint-react/exhaustive-deps }, [JSON.stringify(values)]); // Both change the internal state and emit the change event diff --git a/packages/ui-components/src/Containers/Sidebar/index.tsx b/packages/ui-components/src/Containers/Sidebar/index.tsx index b41c83e1630da..afa70aca1a27f 100644 --- a/packages/ui-components/src/Containers/Sidebar/index.tsx +++ b/packages/ui-components/src/Containers/Sidebar/index.tsx @@ -1,10 +1,8 @@ -import { forwardRef } from 'react'; - import WithNoScriptSelect from '#ui/Common/Select/NoScriptSelect'; import SidebarGroup from '#ui/Containers/Sidebar/SidebarGroup'; import type { LinkLike } from '#ui/types'; -import type { ComponentProps, PropsWithChildren } from 'react'; +import type { ComponentProps, FC, PropsWithChildren, RefObject } from 'react'; import styles from './index.module.css'; @@ -17,48 +15,56 @@ type SidebarProps = { onSelect: (value: string) => void; as?: LinkLike; placeholder?: string; + ref: RefObject; }; -const SideBar = forwardRef>( - ({ groups, pathname, title, onSelect, as, children, placeholder }, ref) => { - const selectItems = groups.map(({ items, groupName }) => ({ - label: groupName, - items: items.map(({ label, link }) => ({ value: link, label })), - })); +const SideBar: FC> = ({ + groups, + pathname, + title, + onSelect, + as, + children, + placeholder, + ...props +}) => { + const selectItems = groups.map(({ items, groupName }) => ({ + label: groupName, + items: items.map(({ label, link }) => ({ value: link, label })), + })); - const currentItem = selectItems - .flatMap(item => item.items) - .find(item => pathname === item.value); + const currentItem = selectItems + .flatMap(item => item.items) + .find(item => pathname === item.value); - return ( - + ); +}; export default SideBar; diff --git a/packages/ui-components/src/Icons/InstallationMethod/N.tsx b/packages/ui-components/src/Icons/InstallationMethod/N.tsx index fc55c4d3af46b..748880c2348dd 100644 --- a/packages/ui-components/src/Icons/InstallationMethod/N.tsx +++ b/packages/ui-components/src/Icons/InstallationMethod/N.tsx @@ -22,7 +22,6 @@ const N: FC> = props => ( - // text with outline $n diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index c9a60f18e436e..482203e2bd0ff 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -36,15 +36,15 @@ importers: specifier: 9.1.7 version: 9.1.7 lint-staged: - specifier: 16.2.7 - version: 16.2.7 + specifier: 16.4.0 + version: 16.4.0 turbo: specifier: 2.8.17 version: 2.8.17 devDependencies: '@eslint/js': - specifier: ~9.39.2 - version: 9.39.2 + specifier: ~10.0.1 + version: 10.0.1(eslint@10.1.0(jiti@2.6.1)) '@reporters/github': specifier: ^1.12.0 version: 1.12.0 @@ -55,14 +55,14 @@ importers: specifier: ^10.1.0 version: 10.1.0 eslint: - specifier: ~9.39.2 - version: 9.39.2(jiti@2.6.1) + specifier: ~10.1.0 + version: 10.1.0(jiti@2.6.1) eslint-import-resolver-typescript: specifier: ~4.4.4 - version: 4.4.4(eslint-plugin-import-x@4.16.1(@typescript-eslint/utils@8.54.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3))(eslint-import-resolver-node@0.3.9)(eslint@9.39.2(jiti@2.6.1)))(eslint-plugin-import@2.32.0)(eslint@9.39.2(jiti@2.6.1)) + version: 4.4.4(eslint-plugin-import-x@4.16.2(@typescript-eslint/utils@8.57.2(eslint@10.1.0(jiti@2.6.1))(typescript@5.9.3))(eslint-import-resolver-node@0.3.9)(eslint@10.1.0(jiti@2.6.1)))(eslint-plugin-import@2.32.0)(eslint@10.1.0(jiti@2.6.1)) eslint-plugin-import-x: - specifier: ~4.16.1 - version: 4.16.1(@typescript-eslint/utils@8.54.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3))(eslint-import-resolver-node@0.3.9)(eslint@9.39.2(jiti@2.6.1)) + specifier: ~4.16.2 + version: 4.16.2(@typescript-eslint/utils@8.57.2(eslint@10.1.0(jiti@2.6.1))(typescript@5.9.3))(eslint-import-resolver-node@0.3.9)(eslint@10.1.0(jiti@2.6.1)) globals: specifier: ^17.4.0 version: 17.4.0 @@ -76,8 +76,8 @@ importers: specifier: 'catalog:' version: 5.9.3 typescript-eslint: - specifier: ~8.54.0 - version: 8.54.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3) + specifier: ~8.57.2 + version: 8.57.2(eslint@10.1.0(jiti@2.6.1))(typescript@5.9.3) apps/site: dependencies: @@ -137,13 +137,13 @@ importers: version: 0.1.0 '@vercel/analytics': specifier: ~2.0.1 - version: 2.0.1(next@16.1.7(@babel/core@7.28.5)(@opentelemetry/api@1.9.0)(@playwright/test@1.58.2)(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.4(react@19.2.4))(react@19.2.4))(react@19.2.4) + version: 2.0.1(next@16.1.7(@opentelemetry/api@1.9.0)(@playwright/test@1.58.2)(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.4(react@19.2.4))(react@19.2.4))(react@19.2.4) '@vercel/otel': specifier: ~2.1.1 version: 2.1.1(@opentelemetry/api-logs@0.213.0)(@opentelemetry/api@1.9.0)(@opentelemetry/instrumentation@0.213.0(@opentelemetry/api@1.9.0))(@opentelemetry/resources@1.30.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-logs@0.213.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-metrics@1.30.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@1.30.1(@opentelemetry/api@1.9.0)) '@vercel/speed-insights': specifier: ~2.0.0 - version: 2.0.0(next@16.1.7(@babel/core@7.28.5)(@opentelemetry/api@1.9.0)(@playwright/test@1.58.2)(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.4(react@19.2.4))(react@19.2.4))(react@19.2.4) + version: 2.0.0(next@16.1.7(@opentelemetry/api@1.9.0)(@playwright/test@1.58.2)(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.4(react@19.2.4))(react@19.2.4))(react@19.2.4) classnames: specifier: 'catalog:' version: 2.5.1 @@ -164,10 +164,10 @@ importers: version: 4.0.0 next: specifier: 16.1.7 - version: 16.1.7(@babel/core@7.28.5)(@opentelemetry/api@1.9.0)(@playwright/test@1.58.2)(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + version: 16.1.7(@opentelemetry/api@1.9.0)(@playwright/test@1.58.2)(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) next-intl: specifier: ~4.8.3 - version: 4.8.3(next@16.1.7(@babel/core@7.28.5)(@opentelemetry/api@1.9.0)(@playwright/test@1.58.2)(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.4(react@19.2.4))(react@19.2.4))(react@19.2.4)(typescript@5.9.3) + version: 4.8.3(next@16.1.7(@opentelemetry/api@1.9.0)(@playwright/test@1.58.2)(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.4(react@19.2.4))(react@19.2.4))(react@19.2.4)(typescript@5.9.3) next-themes: specifier: ~0.4.6 version: 0.4.6(react-dom@19.2.4(react@19.2.4))(react@19.2.4) @@ -220,18 +220,21 @@ importers: specifier: ~5.0.1 version: 5.0.1 devDependencies: + '@eslint-react/eslint-plugin': + specifier: ~3.0.0 + version: 3.0.0(eslint@10.1.0(jiti@2.6.1))(typescript@5.9.3) '@flarelabs-net/wrangler-build-time-fs-assets-polyfilling': specifier: ^0.0.1 version: 0.0.1 '@next/eslint-plugin-next': - specifier: 16.1.7 - version: 16.1.7 + specifier: 16.2.1 + version: 16.2.1 '@node-core/remark-lint': specifier: workspace:* version: link:../../packages/remark-lint '@opennextjs/cloudflare': specifier: ^1.17.1 - version: 1.17.1(next@16.1.7(@babel/core@7.28.5)(@opentelemetry/api@1.9.0)(@playwright/test@1.58.2)(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.4(react@19.2.4))(react@19.2.4))(wrangler@4.74.0) + version: 1.17.1(next@16.1.7(@opentelemetry/api@1.9.0)(@playwright/test@1.58.2)(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.4(react@19.2.4))(react@19.2.4))(wrangler@4.74.0) '@playwright/test': specifier: ^1.58.2 version: 1.58.2 @@ -253,18 +256,9 @@ importers: dedent: specifier: ^1.7.2 version: 1.7.2 - eslint-config-next: - specifier: 16.1.6 - version: 16.1.6(@typescript-eslint/parser@8.54.0(eslint@9.39.4(jiti@2.6.1))(typescript@5.9.3))(eslint-plugin-import-x@4.16.1(@typescript-eslint/utils@8.54.0(eslint@9.39.4(jiti@2.6.1))(typescript@5.9.3))(eslint-import-resolver-node@0.3.9)(eslint@9.39.4(jiti@2.6.1)))(eslint@9.39.4(jiti@2.6.1))(typescript@5.9.3) eslint-plugin-mdx: - specifier: ~3.6.2 - version: 3.6.2(eslint@9.39.4(jiti@2.6.1))(remark-lint-file-extension@3.0.1) - eslint-plugin-react: - specifier: ~7.37.5 - version: 7.37.5(eslint@9.39.4(jiti@2.6.1)) - eslint-plugin-react-hooks: - specifier: ^7.0.1 - version: 7.0.1(eslint@9.39.4(jiti@2.6.1)) + specifier: ~3.7.0 + version: 3.7.0(eslint@10.1.0(jiti@2.6.1))(remark-lint-file-extension@3.0.1) global-jsdom: specifier: ^29.0.0 version: 29.0.0(jsdom@29.0.0(@noble/hashes@1.8.0)) @@ -284,23 +278,23 @@ importers: specifier: ^5.0.0 version: 5.0.0 stylelint: - specifier: 17.1.1 - version: 17.1.1(typescript@5.9.3) + specifier: 17.6.0 + version: 17.6.0(typescript@5.9.3) stylelint-config-standard: specifier: 40.0.0 - version: 40.0.0(stylelint@17.1.1(typescript@5.9.3)) + version: 40.0.0(stylelint@17.6.0(typescript@5.9.3)) stylelint-order: - specifier: 7.0.1 - version: 7.0.1(stylelint@17.1.1(typescript@5.9.3)) + specifier: 8.1.1 + version: 8.1.1(stylelint@17.6.0(typescript@5.9.3)) stylelint-selector-bem-pattern: specifier: 4.0.1 - version: 4.0.1(stylelint@17.1.1(typescript@5.9.3)) + version: 4.0.1(stylelint@17.6.0(typescript@5.9.3)) tsx: specifier: ^4.21.0 version: 4.21.0 typescript-eslint: - specifier: ~8.54.0 - version: 8.54.0(eslint@9.39.4(jiti@2.6.1))(typescript@5.9.3) + specifier: ~8.57.2 + version: 8.57.2(eslint@10.1.0(jiti@2.6.1))(typescript@5.9.3) user-agent-data-types: specifier: 0.4.2 version: 0.4.2 @@ -529,6 +523,9 @@ importers: specifier: 'catalog:' version: 5.9.3 devDependencies: + '@eslint-react/eslint-plugin': + specifier: ~3.0.0 + version: 3.0.0(eslint@10.1.0(jiti@2.6.1))(typescript@5.9.3) '@storybook/addon-styling-webpack': specifier: ~3.0.0 version: 3.0.0(storybook@10.2.19(@testing-library/dom@10.4.0)(prettier@3.8.1)(react-dom@19.2.4(react@19.2.4))(react@19.2.4))(webpack@5.105.4(@swc/core@1.15.11)) @@ -558,13 +555,13 @@ importers: version: 7.1.4(webpack@5.105.4(@swc/core@1.15.11)) eslint-plugin-react: specifier: 7.37.5 - version: 7.37.5(eslint@9.39.4(jiti@2.6.1)) + version: 7.37.5(eslint@10.1.0(jiti@2.6.1)) eslint-plugin-react-hooks: specifier: 7.0.1 - version: 7.0.1(eslint@9.39.4(jiti@2.6.1)) + version: 7.0.1(eslint@10.1.0(jiti@2.6.1)) eslint-plugin-storybook: - specifier: 10.0.7 - version: 10.0.7(eslint@9.39.4(jiti@2.6.1))(storybook@10.2.19(@testing-library/dom@10.4.0)(prettier@3.8.1)(react-dom@19.2.4(react@19.2.4))(react@19.2.4))(typescript@5.9.3) + specifier: 10.3.3 + version: 10.3.3(eslint@10.1.0(jiti@2.6.1))(storybook@10.2.19(@testing-library/dom@10.4.0)(prettier@3.8.1)(react-dom@19.2.4(react@19.2.4))(react@19.2.4))(typescript@5.9.3) global-jsdom: specifier: 29.0.0 version: 29.0.0(jsdom@29.0.0(@noble/hashes@1.8.0)) @@ -578,17 +575,17 @@ importers: specifier: 4.0.0 version: 4.0.0(webpack@5.105.4(@swc/core@1.15.11)) stylelint: - specifier: 17.1.1 - version: 17.1.1(typescript@5.9.3) + specifier: 17.5.0 + version: 17.5.0(typescript@5.9.3) stylelint-config-standard: specifier: 40.0.0 - version: 40.0.0(stylelint@17.1.1(typescript@5.9.3)) + version: 40.0.0(stylelint@17.5.0(typescript@5.9.3)) stylelint-order: - specifier: 7.0.1 - version: 7.0.1(stylelint@17.1.1(typescript@5.9.3)) + specifier: 8.1.1 + version: 8.1.1(stylelint@17.5.0(typescript@5.9.3)) stylelint-selector-bem-pattern: specifier: 4.0.1 - version: 4.0.1(stylelint@17.1.1(typescript@5.9.3)) + version: 4.0.1(stylelint@17.5.0(typescript@5.9.3)) tsx: specifier: 4.21.0 version: 4.21.0 @@ -1101,9 +1098,6 @@ packages: peerDependencies: '@csstools/css-tokenizer': ^4.0.0 - '@csstools/css-syntax-patches-for-csstree@1.0.26': - resolution: {integrity: sha512-6boXK0KkzT5u5xOgF6TKB+CLq9SOpEGmkZw0g5n9/7yg85wab3UzSxB8TxhLJ31L4SGJ6BCFRw/iftTha1CJXA==} - '@csstools/css-syntax-patches-for-csstree@1.1.1': resolution: {integrity: sha512-BvqN0AMWNAnLk9G8jnUT77D+mUbY/H2b3uDTvg2isJkHaOufUE2R3AOwxWo7VBQKT1lOdwdvorddo2B/lk64+w==} peerDependencies: @@ -1632,45 +1626,69 @@ packages: resolution: {integrity: sha512-EriSTlt5OC9/7SXkRSCAhfSxxoSUgBm33OH+IkwbdpgoqsSsUg7y3uh+IICI/Qg4BBWr3U2i39RpmycbxMq4ew==} engines: {node: ^12.0.0 || ^14.0.0 || >=16.0.0} - '@eslint/config-array@0.21.1': - resolution: {integrity: sha512-aw1gNayWpdI/jSYVgzN5pL0cfzU02GT3NBpeT/DXbx1/1x7ZKxFPd9bwrzygx/qiwIQiJ1sw/zD8qY/kRvlGHA==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + '@eslint-react/ast@3.0.0': + resolution: {integrity: sha512-qBasEJqMhcof/pbxhKSgp52rW9TMUMVIYqv3SOgSzvDG3bed+saWFXOQ+YFMj/o5gr/e6Dsi3mAHqErPzJHelA==} + engines: {node: '>=22.0.0'} + peerDependencies: + eslint: ^10.0.0 + typescript: '*' - '@eslint/config-array@0.21.2': - resolution: {integrity: sha512-nJl2KGTlrf9GjLimgIru+V/mzgSK0ABCDQRvxw5BjURL7WfH5uoWmizbH7QB6MmnMBd8cIC9uceWnezL1VZWWw==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + '@eslint-react/core@3.0.0': + resolution: {integrity: sha512-PKa13GrqUAilcvcONJMN8BukuVg3dHuaTxjNBdKOHGxkMexCxDF9hjNHBILErJhFs1kGaJPBK9QUYQci8PV/TA==} + engines: {node: '>=22.0.0'} + peerDependencies: + eslint: ^10.0.0 + typescript: '*' - '@eslint/config-helpers@0.4.2': - resolution: {integrity: sha512-gBrxN88gOIf3R7ja5K9slwNayVcZgK6SOUORm2uBzTeIEfeVaIhOpCtTox3P6R7o2jLFwLFTLnC7kU/RGcYEgw==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + '@eslint-react/eslint-plugin@3.0.0': + resolution: {integrity: sha512-OK8rBrsM/bUr0L918hQ1tWAufz22+m0L6gpSrW3Z/7NSg/imy17IiZHO8UVT99sgcx9euKYAT+QIx45sZUYf1g==} + engines: {node: '>=22.0.0'} + peerDependencies: + eslint: ^10.0.0 + typescript: '*' - '@eslint/core@0.17.0': - resolution: {integrity: sha512-yL/sLrpmtDaFEiUj1osRP4TI2MDz1AddJL+jZ7KSqvBuliN4xqYY54IfdN8qD8Toa6g1iloph1fxQNkjOxrrpQ==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + '@eslint-react/shared@3.0.0': + resolution: {integrity: sha512-oHELwh3FghrMc5UX+4qVEdY7ZLZsO4bgKDVv5i6yk8+/997xe6LAY2wailbeljbIJxppcJSl6eXcRl2yv6ffig==} + engines: {node: '>=22.0.0'} + peerDependencies: + eslint: ^10.0.0 + typescript: '*' - '@eslint/eslintrc@3.3.3': - resolution: {integrity: sha512-Kr+LPIUVKz2qkx1HAMH8q1q6azbqBAsXJUxBl/ODDuVPX45Z9DfwB8tPjTi6nNZ8BuM3nbJxC5zCAg5elnBUTQ==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + '@eslint-react/var@3.0.0': + resolution: {integrity: sha512-Af/7GEZfXtc9jV1i/Uqfko40Gr256YXDZR9CG6mxROOUOMRYIaBPf3K7oLCnwiKVZXiFJ5qYGLEs6HoG8Ifrjw==} + engines: {node: '>=22.0.0'} + peerDependencies: + eslint: ^10.0.0 + typescript: '*' - '@eslint/eslintrc@3.3.5': - resolution: {integrity: sha512-4IlJx0X0qftVsN5E+/vGujTRIFtwuLbNsVUe7TO6zYPDR1O6nFwvwhIKEKSrl6dZchmYBITazxKoUYOjdtjlRg==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + '@eslint/config-array@0.23.3': + resolution: {integrity: sha512-j+eEWmB6YYLwcNOdlwQ6L2OsptI/LO6lNBuLIqe5R7RetD658HLoF+Mn7LzYmAWWNNzdC6cqP+L6r8ujeYXWLw==} + engines: {node: ^20.19.0 || ^22.13.0 || >=24} - '@eslint/js@9.39.2': - resolution: {integrity: sha512-q1mjIoW1VX4IvSocvM/vbTiveKC4k9eLrajNEuSsmjymSDEbpGddtpfOoN7YGAqBK3NG+uqo8ia4PDTt8buCYA==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + '@eslint/config-helpers@0.5.3': + resolution: {integrity: sha512-lzGN0onllOZCGroKJmRwY6QcEHxbjBw1gwB8SgRSqK8YbbtEXMvKynsXc3553ckIEBxsbMBU7oOZXKIPGZNeZw==} + engines: {node: ^20.19.0 || ^22.13.0 || >=24} - '@eslint/js@9.39.4': - resolution: {integrity: sha512-nE7DEIchvtiFTwBw4Lfbu59PG+kCofhjsKaCWzxTpt4lfRjRMqG6uMBzKXuEcyXhOHoUp9riAm7/aWYGhXZ9cw==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + '@eslint/core@1.1.1': + resolution: {integrity: sha512-QUPblTtE51/7/Zhfv8BDwO0qkkzQL7P/aWWbqcf4xWLEYn1oKjdO0gglQBB4GAsu7u6wjijbCmzsUTy6mnk6oQ==} + engines: {node: ^20.19.0 || ^22.13.0 || >=24} - '@eslint/object-schema@2.1.7': - resolution: {integrity: sha512-VtAOaymWVfZcmZbp6E2mympDIHvyjXs/12LqWYjVw6qjrfF+VK+fyG33kChz3nnK+SU5/NeHOqrTEHS8sXO3OA==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + '@eslint/js@10.0.1': + resolution: {integrity: sha512-zeR9k5pd4gxjZ0abRoIaxdc7I3nDktoXZk2qOv9gCNWx3mVwEn32VRhyLaRsDiJjTs0xq/T8mfPtyuXu7GWBcA==} + engines: {node: ^20.19.0 || ^22.13.0 || >=24} + peerDependencies: + eslint: ^10.0.0 + peerDependenciesMeta: + eslint: + optional: true - '@eslint/plugin-kit@0.4.1': - resolution: {integrity: sha512-43/qtrDUokr7LJqoF2c3+RInu/t4zfrpYdoSDfYyhg52rwLV6TnOvdG4fXm7IkSB3wErkcmJS9iEhjVtOSEjjA==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + '@eslint/object-schema@3.0.3': + resolution: {integrity: sha512-iM869Pugn9Nsxbh/YHRqYiqd23AmIbxJOcpUMOuWCVNdoQJ5ZtwL6h3t0bcZzJUlC3Dq9jCFCESBZnX0GTv7iQ==} + engines: {node: ^20.19.0 || ^22.13.0 || >=24} + + '@eslint/plugin-kit@0.6.1': + resolution: {integrity: sha512-iH1B076HoAshH1mLpHMgwdGeTs0CYwL0SPMkGuSebZrwBp16v415e9NZXg2jtrqPVQjf6IANe2Vtlr5KswtcZQ==} + engines: {node: ^20.19.0 || ^22.13.0 || >=24} '@exodus/bytes@1.15.0': resolution: {integrity: sha512-UY0nlA+feH81UGSHv92sLEPLCeZFjXOuHhrIo0HQydScuQc8s0A7kL/UdgwgDq8g8ilksmuoF35YVTNphV2aBQ==} @@ -1889,14 +1907,6 @@ packages: cpu: [x64] os: [win32] - '@isaacs/balanced-match@4.0.1': - resolution: {integrity: sha512-yzMTt9lEb8Gv7zRioUilSglI0c0smZ9k5D65677DLWLtWJaXIS3CqcGyUFByYKlnUj6TkjLVs54fBl6+TiGQDQ==} - engines: {node: 20 || >=22} - - '@isaacs/brace-expansion@5.0.0': - resolution: {integrity: sha512-ZT55BDLV0yv0RBm2czMiZ+SqCGO7AvmOM3G/w2xhVPH+te0aKgFjmBvGlL1dH+ql2tgGO3MVrbb3jCKyvpgnxA==} - engines: {node: 20 || >=22} - '@isaacs/cliui@8.0.2': resolution: {integrity: sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==} engines: {node: '>=12'} @@ -2068,11 +2078,8 @@ packages: '@next/env@16.1.7': resolution: {integrity: sha512-rJJbIdJB/RQr2F1nylZr/PJzamvNNhfr3brdKP6s/GW850jbtR70QlSfFselvIBbcPUOlQwBakexjFzqLzF6pg==} - '@next/eslint-plugin-next@16.1.6': - resolution: {integrity: sha512-/Qq3PTagA6+nYVfryAtQ7/9FEr/6YVyvOtl6rZnGsbReGLf0jZU6gkpr1FuChAQpvV46a78p4cmHOVP8mbfSMQ==} - - '@next/eslint-plugin-next@16.1.7': - resolution: {integrity: sha512-v/bRGOJlfRCO+NDKt0bZlIIWjhMKU8xbgEQBo+rV9C8S6czZvs96LZ/v24/GvpEnovZlL4QDpku/RzWHVbmPpA==} + '@next/eslint-plugin-next@16.2.1': + resolution: {integrity: sha512-r0epZGo24eT4g08jJlg2OEryBphXqO8aL18oajoTKLzHJ6jVr6P6FI58DLMug04MwD3j8Fj0YK0slyzneKVyzA==} '@next/swc-darwin-arm64@16.1.7': resolution: {integrity: sha512-b2wWIE8sABdyafc4IM8r5Y/dS6kD80JRtOGrUiKTsACFQfWWgUQ2NwoUX1yjFMXVsAwcQeNpnucF2ZrujsBBPg==} @@ -2180,10 +2187,6 @@ packages: '@nodevu/parsefiles@0.0.3': resolution: {integrity: sha512-IjwkVqA2SlH8XweoAw7EJkeyPGk7gW9imlvhpywrKiPCLP1H0meG/blNAF5X38pirsmvhxPe/BCyywT7Exwuow==} - '@nolyfill/is-core-module@1.0.39': - resolution: {integrity: sha512-nn5ozdjYQpUCZlWGuxcJY/KpxkWQs4DcbMCmKojjyrYDEAGy4Ce19NN4v5MduafTwJlbKc99UA8YhSVqq9yPZA==} - engines: {node: '>=12.4.0'} - '@npmcli/config@8.3.4': resolution: {integrity: sha512-01rtHedemDNhUXdicU7s+QYz/3JyV5Naj84cvdXGH4mgCdL+agmSYaLF4LUG4vMCLzhBO8YtS0gPpH1FGvbgAw==} engines: {node: ^16.14.0 || >=18.0.0} @@ -2319,6 +2322,9 @@ packages: '@oxc-project/types@0.115.0': resolution: {integrity: sha512-4n91DKnebUS4yjUHl2g3/b2T+IUdCfmoZGhmwsovZCDaJSs+QkVAM+0AqqTxHSsHfeiMuueT75cZaZcT/m0pSw==} + '@package-json/types@0.0.12': + resolution: {integrity: sha512-uu43FGU34B5VM9mCNjXCwLaGHYjXdNincqKLaraaCW+7S2+SmiBg1Nv8bPnmschrIfZmfKNY9f3fC376MRrObw==} + '@parcel/watcher-android-arm64@2.5.6': resolution: {integrity: sha512-YQxSS34tPF/6ZG7r/Ih9xy+kP/WwediEUsqmtf0cuCV5TPPKw/PQHRhueUo6JdeFJaqV3pyjm0GdYjZotbRt/A==} engines: {node: '>= 10.0.0'} @@ -3673,6 +3679,9 @@ packages: '@types/eslint@9.6.1': resolution: {integrity: sha512-FXx2pKgId/WyYo2jXw63kk7/+TY7u7AziEJxJAnSFzHlqTAS3Ync6SvgYAN/k4/PQpnnVuzoMuVnByKK2qp0ag==} + '@types/esrecurse@4.3.1': + resolution: {integrity: sha512-xJBAbDifo5hpffDBuHl0Y8ywswbiAp/Wi7Y/GtAgSlZyIABppyurxVueOPE8LUQOxdlgi6Zqce7uoEpqNTeiUw==} + '@types/estree-jsx@1.0.5': resolution: {integrity: sha512-52CcUVNFyfb1A2ALocQw/Dd1BQFNmSdkuC3BkZ6iqhdMfQz7JWOFRuJFloOzjk+6WijU56m9oKXFAXc7o3Towg==} @@ -3736,19 +3745,19 @@ packages: '@types/unist@3.0.3': resolution: {integrity: sha512-ko/gIFJRv177XgZsZcBwnqJN5x/Gien8qNOn0D5bQU/zAzVf9Zt3BlcUiLqhV9y4ARk0GbT3tnUiPNgnTXzc/Q==} - '@typescript-eslint/eslint-plugin@8.54.0': - resolution: {integrity: sha512-hAAP5io/7csFStuOmR782YmTthKBJ9ND3WVL60hcOjvtGFb+HJxH4O5huAcmcZ9v9G8P+JETiZ/G1B8MALnWZQ==} + '@typescript-eslint/eslint-plugin@8.57.2': + resolution: {integrity: sha512-NZZgp0Fm2IkD+La5PR81sd+g+8oS6JwJje+aRWsDocxHkjyRw0J5L5ZTlN3LI1LlOcGL7ph3eaIUmTXMIjLk0w==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: - '@typescript-eslint/parser': ^8.54.0 - eslint: ^8.57.0 || ^9.0.0 + '@typescript-eslint/parser': ^8.57.2 + eslint: ^8.57.0 || ^9.0.0 || ^10.0.0 typescript: '>=4.8.4 <6.0.0' - '@typescript-eslint/parser@8.54.0': - resolution: {integrity: sha512-BtE0k6cjwjLZoZixN0t5AKP0kSzlGu7FctRXYuPAm//aaiZhmfq1JwdYpYr1brzEspYyFeF+8XF5j2VK6oalrA==} + '@typescript-eslint/parser@8.57.2': + resolution: {integrity: sha512-30ScMRHIAD33JJQkgfGW1t8CURZtjc2JpTrq5n2HFhOefbAhb7ucc7xJwdWcrEtqUIYJ73Nybpsggii6GtAHjA==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: - eslint: ^8.57.0 || ^9.0.0 + eslint: ^8.57.0 || ^9.0.0 || ^10.0.0 typescript: '>=4.8.4 <6.0.0' '@typescript-eslint/project-service@8.54.0': @@ -3757,37 +3766,59 @@ packages: peerDependencies: typescript: '>=4.8.4 <6.0.0' + '@typescript-eslint/project-service@8.57.2': + resolution: {integrity: sha512-FuH0wipFywXRTHf+bTTjNyuNQQsQC3qh/dYzaM4I4W0jrCqjCVuUh99+xd9KamUfmCGPvbO8NDngo/vsnNVqgw==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + peerDependencies: + typescript: '>=4.8.4 <6.0.0' + '@typescript-eslint/scope-manager@8.54.0': resolution: {integrity: sha512-27rYVQku26j/PbHYcVfRPonmOlVI6gihHtXFbTdB5sb6qA0wdAQAbyXFVarQ5t4HRojIz64IV90YtsjQSSGlQg==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + '@typescript-eslint/scope-manager@8.57.2': + resolution: {integrity: sha512-snZKH+W4WbWkrBqj4gUNRIGb/jipDW3qMqVJ4C9rzdFc+wLwruxk+2a5D+uoFcKPAqyqEnSb4l2ULuZf95eSkw==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + '@typescript-eslint/tsconfig-utils@8.54.0': resolution: {integrity: sha512-dRgOyT2hPk/JwxNMZDsIXDgyl9axdJI3ogZ2XWhBPsnZUv+hPesa5iuhdYt2gzwA9t8RE5ytOJ6xB0moV0Ujvw==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: typescript: '>=4.8.4 <6.0.0' - '@typescript-eslint/type-utils@8.54.0': - resolution: {integrity: sha512-hiLguxJWHjjwL6xMBwD903ciAwd7DmK30Y9Axs/etOkftC3ZNN9K44IuRD/EB08amu+Zw6W37x9RecLkOo3pMA==} + '@typescript-eslint/tsconfig-utils@8.57.2': + resolution: {integrity: sha512-3Lm5DSM+DCowsUOJC+YqHHnKEfFh5CoGkj5Z31NQSNF4l5wdOwqGn99wmwN/LImhfY3KJnmordBq/4+VDe2eKw==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: - eslint: ^8.57.0 || ^9.0.0 typescript: '>=4.8.4 <6.0.0' - '@typescript-eslint/types@8.51.0': - resolution: {integrity: sha512-TizAvWYFM6sSscmEakjY3sPqGwxZRSywSsPEiuZF6d5GmGD9Gvlsv0f6N8FvAAA0CD06l3rIcWNbsN1e5F/9Ag==} + '@typescript-eslint/type-utils@8.57.2': + resolution: {integrity: sha512-Co6ZCShm6kIbAM/s+oYVpKFfW7LBc6FXoPXjTRQ449PPNBY8U0KZXuevz5IFuuUj2H9ss40atTaf9dlGLzbWZg==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + peerDependencies: + eslint: ^8.57.0 || ^9.0.0 || ^10.0.0 + typescript: '>=4.8.4 <6.0.0' '@typescript-eslint/types@8.54.0': resolution: {integrity: sha512-PDUI9R1BVjqu7AUDsRBbKMtwmjWcn4J3le+5LpcFgWULN3LvHC5rkc9gCVxbrsrGmO1jfPybN5s6h4Jy+OnkAA==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + '@typescript-eslint/types@8.57.2': + resolution: {integrity: sha512-/iZM6FnM4tnx9csuTxspMW4BOSegshwX5oBDznJ7S4WggL7Vczz5d2W11ecc4vRrQMQHXRSxzrCsyG5EsPPTbA==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + '@typescript-eslint/typescript-estree@8.54.0': resolution: {integrity: sha512-BUwcskRaPvTk6fzVWgDPdUndLjB87KYDrN5EYGetnktoeAvPtO4ONHlAZDnj5VFnUANg0Sjm7j4usBlnoVMHwA==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: typescript: '>=4.8.4 <6.0.0' + '@typescript-eslint/typescript-estree@8.57.2': + resolution: {integrity: sha512-2MKM+I6g8tJxfSmFKOnHv2t8Sk3T6rF20A1Puk0svLK+uVapDZB/4pfAeB7nE83uAZrU6OxW+HmOd5wHVdXwXA==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + peerDependencies: + typescript: '>=4.8.4 <6.0.0' + '@typescript-eslint/utils@8.54.0': resolution: {integrity: sha512-9Cnda8GS57AQakvRyG0PTejJNlA2xhvyNtEVIMlDWOOeEyBkYWhGPnfrIAnqxLMTSTo6q8g12XVjjev5l1NvMA==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} @@ -3795,10 +3826,21 @@ packages: eslint: ^8.57.0 || ^9.0.0 typescript: '>=4.8.4 <6.0.0' + '@typescript-eslint/utils@8.57.2': + resolution: {integrity: sha512-krRIbvPK1ju1WBKIefiX+bngPs+odIQUtR7kymzPfo1POVw3jlF+nLkmexdSSd4UCbDcQn+wMBATOOmpBbqgKg==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + peerDependencies: + eslint: ^8.57.0 || ^9.0.0 || ^10.0.0 + typescript: '>=4.8.4 <6.0.0' + '@typescript-eslint/visitor-keys@8.54.0': resolution: {integrity: sha512-VFlhGSl4opC0bprJiItPQ1RfUhGDIBokcPwaFH4yiBCaNPeld/9VeXbiPO1cLyorQi1G1vL+ecBk1x8o1axORA==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + '@typescript-eslint/visitor-keys@8.57.2': + resolution: {integrity: sha512-zhahknjobV2FiD6Ee9iLbS7OV9zi10rG26odsQdfBO/hjSzUQbkIYgda+iNKK1zNiW2ey+Lf8MU5btN17V3dUw==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + '@typescript/vfs@1.6.2': resolution: {integrity: sha512-hoBwJwcbKHmvd2QVebiytN1aELvpk9B74B4L1mFm/XT1Q/VOYAWl2vQ9AWRFtQq8zmz6enTpfTV8WRc4ATjW/g==} peerDependencies: @@ -4103,15 +4145,9 @@ packages: peerDependencies: ajv: ^8.8.2 - ajv@6.12.6: - resolution: {integrity: sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==} - ajv@6.14.0: resolution: {integrity: sha512-IWrosm/yrn43eiKqkfkHis7QioDleaXQHdDVPKg0FSwwd/DuvyX79TZnFOnYpB7dcsFAMmtFztZuXPDvSePkFw==} - ajv@8.17.1: - resolution: {integrity: sha512-B/gBuNg5SiMTrPkC+A2+cW0RszwxYmn6VYxB/inlBStS5nx6xHIt/ehKRhIMhqusl7a8LjQoZnjCs5vhwxOQ1g==} - ajv@8.18.0: resolution: {integrity: sha512-PlXPeEWMXMZ7sPYOHqmDyCJzcfNrUr3fGNKtezX14ykXOEIvyK81d+qydx89KY5O71FKMPaQ2vBfBFI5NHR63A==} @@ -4208,9 +4244,6 @@ packages: resolution: {integrity: sha512-Izi8RQcffqCeNVgFigKli1ssklIbpHnCYc6AknXGYoB6grJqyeby7jv12JUQgmTAnIDnbck1uxksT4dzN3PWBA==} engines: {node: '>=12'} - ast-types-flow@0.0.8: - resolution: {integrity: sha512-OH/2E5Fg20h2aPrbe+QL8JZQFko0YZaF+j4mnQ7BGhfavO7OpSLa8a0y9sBwomHdSbkhTS8TQNayBfnW5DwbvQ==} - ast-types@0.16.1: resolution: {integrity: sha512-6t10qk83GOG8p0vKmaCr8eiilZwO171AvbROMtvvNiwrTly62t+7XkA8RdIIVbpMhCASAsxgAzdRSwh6nw/5Dg==} engines: {node: '>=4'} @@ -4237,14 +4270,6 @@ packages: aws4fetch@1.0.20: resolution: {integrity: sha512-/djoAN709iY65ETD6LKCtyyEI04XIBP5xVvfmNxsEP0uJB5tyaGBztSryRr4HqMStr9R06PisQE7m9zDTXKu6g==} - axe-core@4.11.1: - resolution: {integrity: sha512-BASOg+YwO2C+346x3LZOeoovTIoTrRqEsqMa6fmfAV0P+U9mFr9NsyOEpiYvFjbc64NMrSswhV50WdXzdb/Z5A==} - engines: {node: '>=4'} - - axobject-query@4.1.0: - resolution: {integrity: sha512-qIj0G9wZbMGNLjLmg1PT6v2mE9AH2zlnADJD/2tC6E00hgmhUOfEB6greHPAfLRSufHqROIUTkw6E+M3lH0PTQ==} - engines: {node: '>= 0.4'} - babel-plugin-react-compiler@1.0.0: resolution: {integrity: sha512-Ixm8tFfoKKIPYdCCKYTsqv+Fd4IJ0DQqMyEimo+pxUOMUR9cVPlwTrFt9Avu+3cb6Zp3mAzl+t1MrG2fxxKsxw==} @@ -4254,10 +4279,6 @@ packages: balanced-match@1.0.2: resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==} - balanced-match@3.0.1: - resolution: {integrity: sha512-vjtV3hiLqYDNRoiAv0zC4QaGAMPomEoq83PRmYIofPswwZurCeWR5LByXm7SyoL0Zh5+2z0+HC7jG8gSZJUh0w==} - engines: {node: '>= 16'} - balanced-match@4.0.4: resolution: {integrity: sha512-BLrgEcRTwX2o6gGxGOCNyMvGSp35YofuYzw9h1IMTRmKqttAZZVU67bdb9Pr2vUHA8+j3i2tJfjO6C6+4myGTA==} engines: {node: 18 || 20 || >=22} @@ -4279,6 +4300,9 @@ packages: resolution: {integrity: sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==} engines: {node: '>=8'} + birecord@0.1.1: + resolution: {integrity: sha512-VUpsf/qykW0heRlC8LooCq28Kxn3mAqKohhDG/49rrsQ1dT1CXyj/pgXS+5BSRzFTR/3DyIBOqQOrGyZOh71Aw==} + blake3-wasm@2.1.5: resolution: {integrity: sha512-F1+K8EbfOZE49dtoPtmxUQrpXaBIl3ICvasLh+nJta0xkz+9kF/7uet9fLnwKqhDrmj6g+6K3Tw9yQPUg2ka5g==} @@ -4460,10 +4484,6 @@ packages: resolution: {integrity: sha512-yPVavfyCcRhmorC7rWlkHn15b4wDVgVmBA7kV4QVBsF7kv/9TKJAbAXVTxvTnwP8HHKjRCJDClKbciiYS7p0DQ==} engines: {node: '>=16'} - commander@14.0.2: - resolution: {integrity: sha512-TywoWNNRbhoD0BXs1P3ZEScW8W5iKrnbithIl0YH+uCmBd0QpPOA8yc82DS3BIE5Ma6FnBVUsJ7wVUDz4dvOWQ==} - engines: {node: '>=20'} - commander@14.0.3: resolution: {integrity: sha512-H+y0Jo/T1RZ9qPP4Eh1pkcQcLRglraJaSLoyOtHxu6AapkjWVCy2Sit1QQ4x3Dng8qDlSsZEet7g5Pq06MvTgw==} engines: {node: '>=20'} @@ -4486,6 +4506,9 @@ packages: commondir@1.0.1: resolution: {integrity: sha512-W9pAhw0ja1Edb5GVdIF1mjZw/ASI0AlShXM83UUGe2DVr5TdAPEA1OA8m/g8zWp9x6On7gqufY+FatDbC3MDQg==} + compare-versions@6.1.1: + resolution: {integrity: sha512-4hm4VPpIecmlg59CHXnRDnqGplJFrbLG4aFEl5vl6cK1u76ws3LLvX7ikFnTDl5vo39sjWD6AaDPYodJp/NNHg==} + concat-map@0.0.1: resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==} @@ -4530,15 +4553,6 @@ packages: typescript: optional: true - cosmiconfig@9.0.0: - resolution: {integrity: sha512-itvL5h8RETACmOTFc4UfIyB2RfEHi71Ax6E/PivVxq9NseKbOWpeyHEOIbmAw1rs8Ak0VursQNww7lf7YtUwzg==} - engines: {node: '>=14'} - peerDependencies: - typescript: '>=4.9.5' - peerDependenciesMeta: - typescript: - optional: true - cosmiconfig@9.0.1: resolution: {integrity: sha512-hr4ihw+DBqcvrsEDioRO31Z17x71pUYoNe/4h6Z0wB72p7MU7/9gH8Q3s12NFhHPfYBBOV3qyfUxmr/Yn3shnQ==} engines: {node: '>=14'} @@ -4557,9 +4571,9 @@ packages: resolution: {integrity: sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==} engines: {node: '>= 8'} - css-functions-list@3.2.3: - resolution: {integrity: sha512-IQOkD3hbR5KrN93MtcYuad6YPuTSUhntLHDuLEbFWE+ff2/XSZNdZG+LcbbIW5AXKg/WFIfYItIzVoHngHXZzA==} - engines: {node: '>=12 || >=16'} + css-functions-list@3.3.3: + resolution: {integrity: sha512-8HFEBPKhOpJPEPu70wJJetjKta86Gw9+CCyCnB3sui2qQfOvRyqBy4IKLKKAwdMpWb2lHXWk9Wb4Z6AmaUT1Pg==} + engines: {node: '>=12'} css-loader@7.1.4: resolution: {integrity: sha512-vv3J9tlOl04WjiMvHQI/9tmIrCxVrj6PFbHemBB1iihpeRbi/I4h033eoFIhwxBBqLhI0KYFS7yvynBFhIZfTw==} @@ -4579,10 +4593,6 @@ packages: css-selector-parser@3.1.3: resolution: {integrity: sha512-gJMigczVZqYAk0hPVzx/M4Hm1D9QOtqkdQk9005TNzDIUGzo5cnHEDiKUT7jGPximL/oYb+LIitcHFQ4aKupxg==} - css-tree@3.1.0: - resolution: {integrity: sha512-0eW44TGN5SQXU1mWSkKwFstI/22X2bG1nYzZTYMAWjylYURhse752YgbE4Cx46AC+bAvI+/dYTPRk1LqSUnu6w==} - engines: {node: ^10 || ^12.20.0 || ^14.13.0 || >=15.0.0} - css-tree@3.2.1: resolution: {integrity: sha512-X7sjQzceUhu1u7Y/ylrRZFU2FS6LRiFVp6rKLPg23y3x3c3DOKAwuXGDp+PAGjh6CSnCjYeAul8pcT8bAl+lSA==} engines: {node: ^10 || ^12.20.0 || ^14.13.0 || >=15.0.0} @@ -4602,9 +4612,6 @@ packages: csstype@3.2.3: resolution: {integrity: sha512-z1HGKcYy2xA8AGQfwrn0PAy+PB7X/GSj3UVJW9qKyn43xWa+gl5nXmU4qqLMRzWVLFC8KusUX8T/0kCiOYpAIQ==} - damerau-levenshtein@1.0.8: - resolution: {integrity: sha512-sdQSFB7+llfUcQHUQO3+B8ERRj0Oa4w9POWMI/puGtuf7gFywGmkaLCElnudfTiKZV+NvHqL0ifzdrI8Ro7ESA==} - data-urls@7.0.0: resolution: {integrity: sha512-23XHcCF+coGYevirZceTVD7NdJOqVn+49IHyxgszm+JIiHLoB2TkmPtsYkNWT1pvRSGkc35L6NHs0yHkN2SumA==} engines: {node: ^20.19.0 || ^22.12.0 || >=24.0.0} @@ -4712,10 +4719,6 @@ packages: devlop@1.1.0: resolution: {integrity: sha512-RWmIqhcFf1lRYBvNmr7qTNuyCt/7/ns2jbpp1+PalgE/rDQcBT0fioSMUpJ93irlUhC5hrg4cYqe6U+0ImW0rA==} - diff@5.2.0: - resolution: {integrity: sha512-uIFDxqpRZGZ6ThOk84hEfqWoHx2devRFvpTZcTHur85vImfaxUbTW9Ryh4CpCuDnToOP1CEtXKIgytHBPVff5A==} - engines: {node: '>=0.3.1'} - doctrine@2.1.0: resolution: {integrity: sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==} engines: {node: '>=0.10.0'} @@ -4903,15 +4906,6 @@ packages: resolution: {integrity: sha512-/veY75JbMK4j1yjvuUxuVsiS/hr/4iHs9FTT6cgTexxdE0Ly/glccBAkloH/DofkjRbZU3bnoj38mOmhkZ0lHw==} engines: {node: '>=12'} - eslint-config-next@16.1.6: - resolution: {integrity: sha512-vKq40io2B0XtkkNDYyleATwblNt8xuh3FWp8SpSz3pt7P01OkBFlKsJZ2mWt5WsCySlDQLckb1zMY9yE9Qy0LA==} - peerDependencies: - eslint: '>=9.0.0' - typescript: '>=3.3.1' - peerDependenciesMeta: - typescript: - optional: true - eslint-import-context@0.1.9: resolution: {integrity: sha512-K9Hb+yRaGAGUbwjhFNHvSmmkZs9+zbuoe3kFQ4V1wYjrepUFYM2dZAfNtjbbj3qsPfUfsA68Bx/ICWQMi+C8Eg==} engines: {node: ^12.20.0 || ^14.18.0 || >=16.0.0} @@ -4924,19 +4918,6 @@ packages: eslint-import-resolver-node@0.3.9: resolution: {integrity: sha512-WFj2isz22JahUv+B788TlO3N6zL3nNJGU8CcZbPZvVEkBPaJdCV4vy5wyghty5ROFbCRnm132v8BScu5/1BQ8g==} - eslint-import-resolver-typescript@3.10.1: - resolution: {integrity: sha512-A1rHYb06zjMGAxdLSkN2fXPBwuSaQ0iO5M/hdyS0Ajj1VBaRp0sPD3dn1FhME3c/JluGFbwSxyCfqdSbtQLAHQ==} - engines: {node: ^14.18.0 || >=16.0.0} - peerDependencies: - eslint: '*' - eslint-plugin-import: '*' - eslint-plugin-import-x: '*' - peerDependenciesMeta: - eslint-plugin-import: - optional: true - eslint-plugin-import-x: - optional: true - eslint-import-resolver-typescript@4.4.4: resolution: {integrity: sha512-1iM2zeBvrYmUNTj2vSC/90JTHDth+dfOfiNKkxApWRsTJYNrc8rOdxxIf5vazX+BiAXTeOT0UvWpGI/7qIWQOw==} engines: {node: ^16.17.0 || >=18.6.0} @@ -4950,8 +4931,8 @@ packages: eslint-plugin-import-x: optional: true - eslint-mdx@3.6.2: - resolution: {integrity: sha512-5hczn5iSSEcwtNtVXFwCKIk6iLEDaZpwc3vjYDl/B779OzaAAK/ou16J2xVdO6ecOLEO1WZqp7MRCQ/WsKDUig==} + eslint-mdx@3.7.0: + resolution: {integrity: sha512-QpPdJ6EeFthHuIrfgnWneZgwwFNOLFj/nf2jg/tOTBoiUnqNTxUUpTGAn0ZFHYEh5htVVoe5kjvD02oKtxZGeA==} engines: {node: '>=18.0.0'} peerDependencies: eslint: '>=8.0.0' @@ -4981,12 +4962,12 @@ packages: eslint-import-resolver-webpack: optional: true - eslint-plugin-import-x@4.16.1: - resolution: {integrity: sha512-vPZZsiOKaBAIATpFE2uMI4w5IRwdv/FpQ+qZZMR4E+PeOcM4OeoEbqxRMnywdxP19TyB/3h6QBB0EWon7letSQ==} + eslint-plugin-import-x@4.16.2: + resolution: {integrity: sha512-rM9K8UBHcWKpzQzStn1YRN2T5NvdeIfSVoKu/lKF41znQXHAUcBbYXe5wd6GNjZjTrP7viQ49n1D83x/2gYgIw==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: - '@typescript-eslint/utils': ^8.0.0 - eslint: ^8.57.0 || ^9.0.0 + '@typescript-eslint/utils': ^8.56.0 + eslint: ^8.57.0 || ^9.0.0 || ^10.0.0 eslint-import-resolver-node: '*' peerDependenciesMeta: '@typescript-eslint/utils': @@ -5004,43 +4985,72 @@ packages: '@typescript-eslint/parser': optional: true - eslint-plugin-jsx-a11y@6.10.2: - resolution: {integrity: sha512-scB3nz4WmG75pV8+3eRUQOHZlNSUhFNq37xnpgRkCCELU3XMvXAxLk1eqWWyE22Ki4Q01Fnsw9BA3cJHDPgn2Q==} - engines: {node: '>=4.0'} - peerDependencies: - eslint: ^3 || ^4 || ^5 || ^6 || ^7 || ^8 || ^9 - - eslint-plugin-mdx@3.6.2: - resolution: {integrity: sha512-RfMd5HYD/9+cqANhVWJbuBRg3huWUsAoGJNGmPsyiRD2X6BaG6bvt1omyk1ORlg81GK8ST7Ojt5fNAuwWhWU8A==} + eslint-plugin-mdx@3.7.0: + resolution: {integrity: sha512-JXaaQPnKqyti/QSOSQDThLV1EemHm/Fe2l/nMKH0vmhvmABtN/yV/9+GtKgh8UTZwrwuTfQq1HW5eR8HXneNLA==} engines: {node: '>=18.0.0'} peerDependencies: eslint: '>=8.0.0' + eslint-plugin-react-dom@3.0.0: + resolution: {integrity: sha512-NhxPJSGZzR/bW02wop2whWXYKE8ZLZ9JupC5MWRq1AdM+Z84jnUU8c+eobiRzIhy2OupEjKcB8TaqHuQ+3sVoQ==} + engines: {node: '>=22.0.0'} + peerDependencies: + eslint: ^10.0.0 + typescript: '*' + eslint-plugin-react-hooks@7.0.1: resolution: {integrity: sha512-O0d0m04evaNzEPoSW+59Mezf8Qt0InfgGIBJnpC0h3NH/WjUAR7BIKUfysC6todmtiZ/A0oUVS8Gce0WhBrHsA==} engines: {node: '>=18'} peerDependencies: eslint: ^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0-0 || ^9.0.0 + eslint-plugin-react-naming-convention@3.0.0: + resolution: {integrity: sha512-pAtOZST5/NhWIa/I5yz7H1HEZTtCY7LHMhzmN9zvaOdTWyZYtz2g9pxPRDBnkR9uSmHsNt44gj+2JSAD4xwgew==} + engines: {node: '>=22.0.0'} + peerDependencies: + eslint: ^10.0.0 + typescript: '*' + + eslint-plugin-react-rsc@3.0.0: + resolution: {integrity: sha512-HNP1hVO63WsV4wcXxPJJIcnYrvrN5UZyrXIbDOoCNA0axSXjJ6vA63tI2JHgyGcMTdbKxDJwaVd/dJlMudSZBQ==} + engines: {node: '>=20.19.0'} + peerDependencies: + eslint: ^10.0.0 + typescript: '*' + + eslint-plugin-react-web-api@3.0.0: + resolution: {integrity: sha512-DZZh9DkZp/BE5ibaDOXaV4p8rEuMNnoPkCvAlyifB/Gz6ZhHonFRTpg+PEK6et8sx6uroUfhy5QGducmZU8Oug==} + engines: {node: '>=22.0.0'} + peerDependencies: + eslint: ^10.0.0 + typescript: '*' + + eslint-plugin-react-x@3.0.0: + resolution: {integrity: sha512-W8QGWk03iqj6EiOhQk2SrrnaiTb2RZFREg1YXgYAh2/zyFztHHnNz4LTeSN+6gFwWDypMFzuFF6uoHO/1KY0Yw==} + engines: {node: '>=22.0.0'} + peerDependencies: + eslint: ^10.0.0 + typescript: '*' + eslint-plugin-react@7.37.5: resolution: {integrity: sha512-Qteup0SqU15kdocexFNAJMvCJEfa2xUKNV4CC1xsVMrIIqEy3SQ/rqyxCWNzfrd3/ldy6HMlD2e0JDVpDg2qIA==} engines: {node: '>=4'} peerDependencies: eslint: ^3 || ^4 || ^5 || ^6 || ^7 || ^8 || ^9.7 - eslint-plugin-storybook@10.0.7: - resolution: {integrity: sha512-qOQq9KdT1jsBgT3qsxUH2n67aj1WR8D1XCoER8Q6yuVlS5TimNwk1mZeWkXVf/o4RQQT6flT2y5cG2gPLZPvJA==} + eslint-plugin-storybook@10.3.3: + resolution: {integrity: sha512-jo8wZvKaJlxxrNvf4hCsROJP3CdlpaLiYewAs5Ww+PJxCrLelIi5XVHWOAgBvvr3H9WDKvUw8xuvqPYqAlpkFg==} peerDependencies: eslint: '>=8' - storybook: ^10.0.7 + storybook: ^10.3.3 eslint-scope@5.1.1: resolution: {integrity: sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==} engines: {node: '>=8.0.0'} - eslint-scope@8.4.0: - resolution: {integrity: sha512-sNXOfKCn74rt8RICKMvJS7XKV/Xk9kA7DyJr8mJik3S7Cwgy3qlkkmyS2uQB3jiJg6VNdZd/pDBJu0nvG2NlTg==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + eslint-scope@9.1.2: + resolution: {integrity: sha512-xS90H51cKw0jltxmvmHy2Iai1LIqrfbw57b79w/J7MfvDfkIkFZ+kj6zC3BjtUwh150HsSSdxXZcsuv72miDFQ==} + engines: {node: ^20.19.0 || ^22.13.0 || >=24} eslint-visitor-keys@3.4.3: resolution: {integrity: sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==} @@ -5050,19 +5060,13 @@ packages: resolution: {integrity: sha512-Uhdk5sfqcee/9H/rCOJikYz67o0a2Tw2hGRPOG2Y1R2dg7brRe1uG0yaNQDHu+TO/uQPF/5eCapvYSmHUjt7JQ==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - eslint@9.39.2: - resolution: {integrity: sha512-LEyamqS7W5HB3ujJyvi0HQK/dtVINZvd5mAAp9eT5S/ujByGjiZLCzPcHVzuXbpJDJF/cxwHlfceVUDZ2lnSTw==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - hasBin: true - peerDependencies: - jiti: '*' - peerDependenciesMeta: - jiti: - optional: true + eslint-visitor-keys@5.0.1: + resolution: {integrity: sha512-tD40eHxA35h0PEIZNeIjkHoDR4YjjJp34biM0mDvplBe//mB+IHCqHDGV7pxF+7MklTvighcCPPZC7ynWyjdTA==} + engines: {node: ^20.19.0 || ^22.13.0 || >=24} - eslint@9.39.4: - resolution: {integrity: sha512-XoMjdBOwe/esVgEvLmNsD3IRHkm7fbKIUGvrleloJXUZgDHig2IPWNniv+GwjyJXzuNqVjlr5+4yVUZjycJwfQ==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + eslint@10.1.0: + resolution: {integrity: sha512-S9jlY/ELKEUwwQnqWDO+f+m6sercqOPSqXM5Go94l7DOmxHVDgmSFGWEzeE/gwgTAr0W103BWt0QLe/7mabIvA==} + engines: {node: ^20.19.0 || ^22.13.0 || >=24} hasBin: true peerDependencies: jiti: '*' @@ -5074,6 +5078,10 @@ packages: resolution: {integrity: sha512-j6PAQ2uUr79PZhBjP5C5fhl8e39FmRnOjsD5lGnWrFU8i2G776tBK7+nP8KuQUTTyAZUwfQqXAgrVH5MbH9CYQ==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + espree@11.2.0: + resolution: {integrity: sha512-7p3DrVEIopW1B1avAGLuCSh1jubc01H2JHc8B4qqGblmg5gI9yumBgACjWo4JlIc04ufug4xJ3SQI8HkS/Rgzw==} + engines: {node: ^20.19.0 || ^22.13.0 || >=24} + esprima@4.0.1: resolution: {integrity: sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==} engines: {node: '>=4'} @@ -5244,9 +5252,6 @@ packages: flat-cache@6.1.20: resolution: {integrity: sha512-AhHYqwvN62NVLp4lObVXGVluiABTHapoB57EyegZVmazN+hhGhLTn3uZbOofoTw4DSDvVCadzzyChXhOAvy8uQ==} - flatted@3.3.3: - resolution: {integrity: sha512-GX+ysw4PBCz0PzosHDepZGANEuFCMLrnRTiEy9McGjmkCQYwRq4A/X786G/fjM/+OjsWSU1ZrY5qyARZmO/uwg==} - flatted@3.4.2: resolution: {integrity: sha512-PjDse7RzhcPkIJwy5t7KPWQSZ9cAbzQXcafsetQoD7sOJRQlGikNbx7yZp2OotDnJyrDcbyRq3Ttb18iYOqkxA==} @@ -5334,6 +5339,10 @@ packages: resolution: {integrity: sha512-QZjmEOC+IT1uk6Rx0sX22V6uHWVwbdbxf1faPqJ1QhLdGgsRGCZoyaQBm/piRdJy/D2um6hM1UP7ZEeQ4EkP+Q==} engines: {node: '>=18'} + get-east-asian-width@1.5.0: + resolution: {integrity: sha512-CQ+bEO+Tva/qlmw24dCejulK5pMzVnUOFOijVogd3KQs07HnRIgp8TGipvCCRT06xeYEbpbgwaCxglFyiuIcmA==} + engines: {node: '>=18'} + get-intrinsic@1.3.0: resolution: {integrity: sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ==} engines: {node: '>= 0.4'} @@ -5407,14 +5416,6 @@ packages: resolution: {integrity: sha512-awConJSVCHVGND6x3tmMaKcQvwXLhjdkmomy2W+Goaui8YPgYgXJZewhg3fWC+DlfqqQuWg8AwqjGTD2nAPVWg==} engines: {node: '>=6'} - globals@14.0.0: - resolution: {integrity: sha512-oahGvuMGQlPw/ivIYBjVSrWAfWLBeku5tpPE2fOPLi+WHffIWbuh2tCjhyQhTBPMf5E9jDEH4FOmTYgYwbKwtQ==} - engines: {node: '>=18'} - - globals@16.4.0: - resolution: {integrity: sha512-ob/2LcVVaVGCYN+r14cnwnoDPUufjiYgSqRhiFD0Q1iI4Odora5RE8Iv1D24hAz5oMophRGkGz+yuvQmmUMnMw==} - engines: {node: '>=18'} - globals@17.3.0: resolution: {integrity: sha512-yMqGUQVVCkD4tqjOJf3TnrvaaHDMYp4VlUSObbkIiuCPe/ofdMBFIAcBbCSRFWOnos6qRiTVStDwqPLUclaxIw==} engines: {node: '>=18'} @@ -5427,8 +5428,8 @@ packages: resolution: {integrity: sha512-DpLKbNU4WylpxJykQujfCcwYWiV/Jhm50Goo0wrVILAv5jOr9d+H+UR3PhSCD2rCCEIg0uc+G+muBTwD54JhDQ==} engines: {node: '>= 0.4'} - globby@16.1.0: - resolution: {integrity: sha512-+A4Hq7m7Ze592k9gZRy4gJ27DrXRNnC1vPjxTt1qQxEY8RxagBkBxivkCwg7FxSTG0iLLEMaUx13oOr0R2/qcQ==} + globby@16.2.0: + resolution: {integrity: sha512-QrJia2qDf5BB/V6HYlDTs0I0lBahyjLzpGQg3KT7FnCdTonAyPy2RtY802m2k4ALx6Dp752f82WsOczEVr3l6Q==} engines: {node: '>=20'} globjoin@0.1.4: @@ -5953,16 +5954,6 @@ packages: resolution: {integrity: sha512-o+NO+8WrRiQEE4/7nwRJhN1HWpVmJm511pBHUxPLtp0BUISzlBplORYSmTclCnJvQq2tKu/sgl3xVpkc7ZWuQQ==} engines: {node: '>=6'} - known-css-properties@0.37.0: - resolution: {integrity: sha512-JCDrsP4Z1Sb9JwG0aJ8Eo2r7k4Ou5MwmThS/6lcIe1ICyb7UBJKGRIUUdqc2ASdE/42lgz6zFUnzAIhtXnBVrQ==} - - language-subtag-registry@0.3.23: - resolution: {integrity: sha512-0K65Lea881pHotoGEa5gDlMxt3pctLi2RplBb7Ezh4rRdLEOtgi7n4EwK9lamnUCkKBqaeKRVebTq6BAxSkpXQ==} - - language-tags@1.0.9: - resolution: {integrity: sha512-MbjN408fEndfiQXbFQ1vnd+1NoLDsnQW41410oQBXiyXDMYH5z505juWa4KUE1LqxRC7DgOgZDbKLxHIwm27hA==} - engines: {node: '>=0.10'} - levn@0.4.1: resolution: {integrity: sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==} engines: {node: '>= 0.8.0'} @@ -6058,8 +6049,8 @@ packages: resolution: {integrity: sha512-wM1+Z03eypVAVUCE7QdSqpVIvelbOakn1M0bPDoA4SGWPx3sNDVUiMo3L6To6WWGClB7VyXnhQ4Sn7gxiJbE6A==} engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} - lint-staged@16.2.7: - resolution: {integrity: sha512-lDIj4RnYmK7/kXMya+qJsmkRFkGolciXjrsZ6PC25GdTfWOAWetR0ZbsNXRAj1EHHImRSalc+whZFg56F5DVow==} + lint-staged@16.4.0: + resolution: {integrity: sha512-lBWt8hujh/Cjysw5GYVmZpFHXDCgZzhrOm8vbcUdobADZNOK/bRshr2kM3DfgrrtR1DQhfupW9gnIXOfiFi+bw==} engines: {node: '>=20.17'} hasBin: true @@ -6082,9 +6073,6 @@ packages: resolution: {integrity: sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==} engines: {node: '>=10'} - lodash.merge@4.6.2: - resolution: {integrity: sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==} - lodash.truncate@4.4.2: resolution: {integrity: sha512-jttmRe7bRse52OsWIMDLaXxWqRAmtIUccAQ3garviCqJjafXOfNMO0yMfNpdD6zbGaTU0P5Nz7e7gAT6cKmJRw==} @@ -6216,9 +6204,6 @@ packages: mdast-util-to-string@4.0.0: resolution: {integrity: sha512-0H44vDimn51F0YwvxSJSm0eCDOJTRlmN0R1yBh4HLj9wiV1Dn0QoXGbvFAWj2hSItVTlCmBF1hqKlIyUBVFLPg==} - mdn-data@2.12.2: - resolution: {integrity: sha512-IEn+pegP1aManZuckezWCO+XZQDplx1366JoVhTpMpBB1sPey/SbveZQUosKiKiGYjg1wH4pMlNgXbCiYgihQA==} - mdn-data@2.27.1: resolution: {integrity: sha512-9Yubnt3e8A0OKwxYSXyhLymGW4sCufcLG6VdiDdUGVkPhpqLxlvP5vl1983gQjJl3tqbrM731mjaZaP68AgosQ==} @@ -6230,8 +6215,8 @@ packages: resolution: {integrity: sha512-UERzLsxzllchadvbPs5aolHh65ISpKpM+ccLbOJ8/vvpBKmAWf+la7dXFy7Mr0ySHbdHrFv5kGFCUHHe6GFEmw==} engines: {node: '>= 4.0.0'} - meow@14.0.0: - resolution: {integrity: sha512-JhC3R1f6dbspVtmF3vKjAWz1EVIvwFrGGPLSdU6rK79xBwHWTuHoLnRX/t1/zHS1Ch1Y2UtIrih7DAHuH9JFJA==} + meow@14.1.0: + resolution: {integrity: sha512-EDYo6VlmtnumlcBCbh1gLJ//9jvM/ndXHfVXIFrZVr6fGcwTUyCTFNTLCKuY3ffbK8L/+3Mzqnd58RojiZqHVw==} engines: {node: '>=20'} merge-descriptors@2.0.0: @@ -6390,10 +6375,6 @@ packages: engines: {node: '>=18.0.0'} hasBin: true - minimatch@10.1.1: - resolution: {integrity: sha512-enIvLvRAFZYXJzkCYG5RKmPfrFArdLv+R+lbQ53BmIMLIry74bjKzX6iHAm8WYamJkhSSEabrWN5D97XnKObjQ==} - engines: {node: 20 || >=22} - minimatch@10.2.4: resolution: {integrity: sha512-oRjTw/97aTBN0RHbYCdtF1MQfvusSIBQM0IZEgzl6426+8jSC0nF1a/GmnVLpfB9yyr6g6FTqWqiZVbxrtaCIg==} engines: {node: 18 || 20 || >=22} @@ -6408,10 +6389,6 @@ packages: resolution: {integrity: sha512-V+1uQNdzybxa14e/p00HZnQNNcTjnRJjDxg2V8wtkjFctq4M7hXFws4oekyTP0Jebeq7QYtpFyOeBAjc88zvYg==} engines: {node: '>=16 || 14 >=14.17'} - minimatch@9.0.5: - resolution: {integrity: sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==} - engines: {node: '>=16 || 14 >=14.17'} - minimatch@9.0.9: resolution: {integrity: sha512-OBwBN9AL4dqmETlpS2zasx+vTeWclWzkblfZk7KTA5j3jeOONz/tRCnZomUyvNg83wL5Zv9Ss6HMJXAgL8R2Yg==} engines: {node: '>=16 || 14 >=14.17'} @@ -6438,17 +6415,9 @@ packages: module-details-from-path@1.0.4: resolution: {integrity: sha512-EGWKgxALGMgzvxYF1UyGTy0HXX/2vHLkw6+NvDKW2jypWbHpjQuj4UMcqQWXHERJhVGKikolT06G3bcKe4fi7w==} - mri@1.2.0: - resolution: {integrity: sha512-tzzskb3bG8LvYGFF/mDTpq3jpI6Q9wc3LEmBaghu+DdCssd1FakN7Bc0hVNmEyGq1bq3RgfkCb3cmQLpNPOroA==} - engines: {node: '>=4'} - ms@2.1.3: resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==} - nano-spawn@2.0.0: - resolution: {integrity: sha512-tacvGzUY5o2D8CBh2rrwxyNojUsZNU2zjNTzKQrkgGJQTbGAfArVWXSKMBokBeeg6C7OLRGUEyoFlYbfeWQIqw==} - engines: {node: '>=20.17'} - nanoid@3.3.11: resolution: {integrity: sha512-N8SpfPUnUp1bK+PMYW8qSWdl9U+wwNWI4QKxOYDy9JAro3WMX7p2OeVRF9v+347pnakNevPmiHhNmZ2HbFA76w==} engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} @@ -6758,11 +6727,6 @@ packages: resolution: {integrity: sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==} engines: {node: '>=12'} - pidtree@0.6.0: - resolution: {integrity: sha512-eG2dWTVw5bzqGRztnHExczNxt5VGsE6OwTeCG3fdUf9KBsZzO3R5OIIIzWR+iZA0NtZ+RDVdaoE2dK1cn6jH4g==} - engines: {node: '>=0.10'} - hasBin: true - pify@2.3.0: resolution: {integrity: sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==} engines: {node: '>=0.10.0'} @@ -6885,8 +6849,8 @@ packages: resolution: {integrity: sha512-orRsuYpJVw8LdAwqqLykBj9ecS5/cRHlI5+nvTo8LcCKmzDmqVORXtOIYEEQuL9D4BxtA1lm5isAqzQZCoQ6Eg==} engines: {node: '>=4'} - postcss-sorting@9.1.0: - resolution: {integrity: sha512-Mn8KJ45HNNG6JBpBizXcyf6LqY/qyqetGcou/nprDnFwBFBLGj0j/sNKV2lj2KMOVOwdXu14aEzqJv8CIV6e8g==} + postcss-sorting@10.0.0: + resolution: {integrity: sha512-TXbU+h6vVRW+86c/+ewhWq9k7pr7ijASTnepVhCQiC87zAOTkvB1v2dHyWP+ggstSTX/PNvjzS+IOqzejndz9w==} peerDependencies: postcss: ^8.4.20 @@ -7413,10 +7377,6 @@ packages: rxjs@7.8.2: resolution: {integrity: sha512-dhKf903U/PQZY6boNNtAGdWbG85WAbjT/1xYoZIC7FAY0yWapOBQVsVrDl58W86//e1VpMNBtRV4MaXfdMySFA==} - sade@1.8.1: - resolution: {integrity: sha512-xal3CZX1Xlo/k4ApwCFrHVACi9fBqJ7V+mwhBsuf/1IOKbBy098Fex+Wa/5QMubw09pSZ/u8EY8PWgevJsXp1A==} - engines: {node: '>=6'} - safe-array-concat@1.1.3: resolution: {integrity: sha512-AURm5f0jYEOydBj7VQlVvDrjeFgthDdEF5H1dP+6mNpoXOMo1quQqJ4wvJDyRZ9+pO3kGWoOdmV08cSv2aJV6Q==} engines: {node: '>=0.4'} @@ -7585,9 +7545,6 @@ packages: resolution: {integrity: sha512-o3yWv49B/o4QZk5ZcsALc6t0+eCelPc44zZsLtCQnZPDwFpDYSWcDnrv2TtMmMbQ7uKo3J0HTURCqckw23czNQ==} engines: {node: '>=12.0.0'} - stable-hash@0.0.5: - resolution: {integrity: sha512-+L3ccpzibovGXFK+Ap/f8LOS0ahMrHTf3xu7mMLSpEGU0EO9ucaysSylKo9eRDFNhWve/y275iPmIZ4z39a9iA==} - stack-utils@2.0.6: resolution: {integrity: sha512-XlkWvfIm6RmsWtNJx+uqtKLS8eqFbxUg0ZzLXqY0caEy9l7hruX8IpiDnjsLavoBgqCCR71TqWO8MaXYheJ3RQ==} engines: {node: '>=10'} @@ -7616,6 +7573,9 @@ packages: resolution: {integrity: sha512-aqD2Q0144Z+/RqG52NeHEkZauTAUWJO8c6yTftGJKO3Tja5tUgIfmIl6kExvhtxSDP7fXB6DvzkfMpCd/F3G+Q==} engines: {node: '>=0.6.19'} + string-ts@2.3.1: + resolution: {integrity: sha512-xSJq+BS52SaFFAVxuStmx6n5aYZU571uYUnUrPXkPFCfdHyZMMlbP2v2Wx5sNBnAVzq/2+0+mcBLBa3Xa5ubYw==} + string-width@4.2.3: resolution: {integrity: sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==} engines: {node: '>=8'} @@ -7636,9 +7596,9 @@ packages: resolution: {integrity: sha512-KpqHIdDL9KwYk22wEOg/VIqYbrnLeSApsKT/bSj6Ez7pn3CftUiLAv2Lccpq1ALcpLV9UX1Ppn92npZWu2w/aw==} engines: {node: '>=20'} - string.prototype.includes@2.0.1: - resolution: {integrity: sha512-o7+c9bW6zpAdJHTtujeePODAhkuicdAryFsfVKwA+wGw89wJ4GTY484WTucM9hLtDEOpOvI+aHnzqnC5lHp4Rg==} - engines: {node: '>= 0.4'} + string-width@8.2.0: + resolution: {integrity: sha512-6hJPQ8N0V0P3SNmP6h2J99RLuzrWz2gvT7VnK5tKvrNqJoyS9W4/Fb8mo31UiPvy00z7DQXkP2hnKBVav76thw==} + engines: {node: '>=20'} string.prototype.matchall@4.0.12: resolution: {integrity: sha512-6CC9uyBL+/48dYizRf7H7VAYCMCNTBeM78x/VTUe9bFEaxBepPJDa1Ow99LqI/1yF7kuy7Q3cQsYMrcjGUcskA==} @@ -7669,10 +7629,6 @@ packages: resolution: {integrity: sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==} engines: {node: '>=8'} - strip-ansi@7.1.2: - resolution: {integrity: sha512-gmBGslpoQJtgnMAvOVqGZpEz9dyoKTCzy2nfz/n8aIFhN/jCE/rCmcxabB6jOOHV+0WNnylOxaxBQPSvcWklhA==} - engines: {node: '>=12'} - strip-ansi@7.2.0: resolution: {integrity: sha512-yDPMNjp4WyfYBkHnjIRLfca1i6KMyGCtsVgoKe/z1+6vukgaENdgGBZt+ZmKPc4gavvEZ5OgHfHdrazhgNyG7w==} engines: {node: '>=12'} @@ -7697,10 +7653,6 @@ packages: resolution: {integrity: sha512-SlyRoSkdh1dYP0PzclLE7r0M9sgbFKKMFXpFRUMNuKhQSbC6VQIGzq3E0qsfvGJaUFJPGv6Ws1NZ/haTAjfbMA==} engines: {node: '>=12'} - strip-json-comments@3.1.1: - resolution: {integrity: sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==} - engines: {node: '>=8'} - strnum@2.2.0: resolution: {integrity: sha512-Y7Bj8XyJxnPAORMZj/xltsfo55uOiyHcU2tnAVzHUnSJR/KsEX+9RoDeXEnsXtl/CX4fAcrt64gZ13aGaWPeBg==} @@ -7741,8 +7693,8 @@ packages: peerDependencies: stylelint: ^17.0.0 - stylelint-order@7.0.1: - resolution: {integrity: sha512-GWPei1zBVDDjxM+/BmcSCiOcHNd8rSqW6FUZtqQGlTRpD0Z5nSzspzWD8rtKif5KPdzUG68DApKEV/y/I9VbTw==} + stylelint-order@8.1.1: + resolution: {integrity: sha512-LqsEB6VggJuu5v10RtkrQsBObcdwBE7GuAOlwfc/LR3VL/w8UqKX2BOLIjhyGt0Gne/njo7gRNGiJAKhfmPMNw==} engines: {node: '>=20.19.0'} peerDependencies: stylelint: ^16.18.0 || ^17.0.0 @@ -7753,8 +7705,13 @@ packages: peerDependencies: stylelint: ^16.2.1 - stylelint@17.1.1: - resolution: {integrity: sha512-SBHVcLEcRF1M9OkD3oT0hT2PayDNLw2hd+aovmzfNQ2ys4Xd3oS9ZNizILWqhQvW802AqKN/vUTMwJqQYMBlWw==} + stylelint@17.5.0: + resolution: {integrity: sha512-o/NS6zhsPZFmgUm5tXX4pVNg1XDOZSlucLdf2qow/lVn4JIyzZIQ5b3kad1ugqUj3GSIgr2u5lQw7X8rjqw33g==} + engines: {node: '>=20.19.0'} + hasBin: true + + stylelint@17.6.0: + resolution: {integrity: sha512-tokrsMIVAR9vAQ/q3UVEr7S0dGXCi7zkCezPRnS2kqPUulvUh5Vgfwngrk4EoAoW7wnrThqTdnTFN5Ra7CaxIg==} engines: {node: '>=20.19.0'} hasBin: true @@ -7851,6 +7808,10 @@ packages: tiny-invariant@1.3.3: resolution: {integrity: sha512-+FbBPE1o9QAYvviau/qC5SE3caw21q3xkvWKBtja5vgqOWIHHJ3ioaq1VPfn/Szqctz2bU/oYeKd9/z5BL+PVg==} + tinyexec@1.0.4: + resolution: {integrity: sha512-u9r3uZC0bdpGOXtlxUIdwf9pkmvhqJdrVCH9fapQtgy/OeTTMZ1nqH7agtvEfmGui6e1XxjcdrlxvxJvc3sMqw==} + engines: {node: '>=18'} + tinyglobby@0.2.15: resolution: {integrity: sha512-j2Zq4NyQYG5XMST4cbs02Ak8iJUdxRM0XI5QyxXuZOzKOINmWurp3smXu3y5wDcJrptwpSjgXHzIQxR0omXljQ==} engines: {node: '>=12.0.0'} @@ -7909,6 +7870,9 @@ packages: resolution: {integrity: sha512-q5W7tVM71e2xjHZTlgfTDoPF/SmqKG5hddq9SzR49CH2hayqRKJtQ4mtRlSxKaJlR/+9rEM+mnBHf7I2/BQcpQ==} engines: {node: '>=6.10'} + ts-pattern@5.9.0: + resolution: {integrity: sha512-6s5V71mX8qBUmlgbrfL33xDUwO0fq48rxAu2LBE11WBeGdpCPOsXksQbZJHvHwhrd3QjUusd3mAOM5Gg0mFBLg==} + ts-tqdm@0.8.6: resolution: {integrity: sha512-3X3M1PZcHtgQbnwizL+xU8CAgbYbeLHrrDwL9xxcZZrV5J+e7loJm1XrXozHjSkl44J0Zg0SgA8rXbh83kCkcQ==} @@ -8004,11 +7968,11 @@ packages: typedarray@0.0.6: resolution: {integrity: sha512-/aCDEGatGvZ2BIk+HmLf4ifCJFwvKFNb9/JeZPMulfgFracn9QFcAf5GO8B/mweUjSoblS5In0cWhqpfs/5PQA==} - typescript-eslint@8.54.0: - resolution: {integrity: sha512-CKsJ+g53QpsNPqbzUsfKVgd3Lny4yKZ1pP4qN3jdMOg/sisIDLGyDMezycquXLE5JsEU0wp3dGNdzig0/fmSVQ==} + typescript-eslint@8.57.2: + resolution: {integrity: sha512-VEPQ0iPgWO/sBaZOU1xo4nuNdODVOajPnTIbog2GKYr31nIlZ0fWPoCQgGfF3ETyBl1vn63F/p50Um9Z4J8O8A==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: - eslint: ^8.57.0 || ^9.0.0 + eslint: ^8.57.0 || ^9.0.0 || ^10.0.0 typescript: '>=4.8.4 <6.0.0' typescript@5.9.3: @@ -8181,11 +8145,6 @@ packages: utila@0.4.0: resolution: {integrity: sha512-Z0DbgELS9/L/75wZbro8xAnT50pBVFQZ+hUEueGDU5FN51YSCYM+jdxsfCiHjwNP/4LCDD0i/graKpeBnOXKRA==} - uvu@0.5.6: - resolution: {integrity: sha512-+g8ENReyr8YsOc6fv/NVJs2vFdHBnBNdfE49rshrTzDWOlUx4Gq7KOS2GD8eqhy2j+Ejq29+SbKH8yjkAqXqoA==} - engines: {node: '>=8'} - hasBin: true - validate-npm-package-license@3.0.4: resolution: {integrity: sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==} @@ -8360,6 +8319,10 @@ packages: resolution: {integrity: sha512-YnlPC6JqnZl6aO4uRc+dx5PHguiR9S6WeoLtpxNT9wIG+BDya7ZNE1q7KOjVgaA73hKhKLpVPgJ5QA9THQ5BRg==} engines: {node: ^20.17.0 || >=22.9.0} + write-file-atomic@7.0.1: + resolution: {integrity: sha512-OTIk8iR8/aCRWBqvxrzxR0hgxWpnYBblY1S5hDWBQfk/VFmJwzmJgQFN3WsoUKHISv2eAwe+PpbUzyL1CKTLXg==} + engines: {node: ^20.17.0 || >=22.9.0} + ws@8.18.0: resolution: {integrity: sha512-8VbfWfHLbbwu3+N6OKsOMpBdT4kXPDDB9cJk2bJ6mh9ucxdlnNvH1e+roYkKmN9Nxw2yjz7VzeO9oOz2zJ04Pw==} engines: {node: '>=10.0.0'} @@ -8451,6 +8414,9 @@ packages: zod@4.3.4: resolution: {integrity: sha512-Zw/uYiiyF6pUT1qmKbZziChgNPRu+ZRneAsMUDU6IwmXdWt5JwcUfy2bvLOCUtz5UniaN/Zx5aFttZYbYc7O/A==} + zod@4.3.6: + resolution: {integrity: sha512-rftlrkhHZOcjDwkGlnUtZZkvaPHCsDATp4pGpuOOMDaTdDDXF91wuVDJoWoPsKX/3YPQ5fHuF3STjcYyKr+Qhg==} + zwitch@2.0.4: resolution: {integrity: sha512-bXE4cR/kVZhKZX/RjPEflHaKVhUVl85noU3v6b8apfQEc1x4A+zBxjZ4lN8LqGd6WZ3dl98pY4o717VFmoPp+A==} @@ -9476,8 +9442,6 @@ snapshots: dependencies: '@csstools/css-tokenizer': 4.0.0 - '@csstools/css-syntax-patches-for-csstree@1.0.26': {} - '@csstools/css-syntax-patches-for-csstree@1.1.1(css-tree@3.2.1)': optionalDependencies: css-tree: 3.2.1 @@ -9768,79 +9732,104 @@ snapshots: '@esbuild/win32-x64@0.27.4': optional: true - '@eslint-community/eslint-utils@4.9.1(eslint@9.39.2(jiti@2.6.1))': + '@eslint-community/eslint-utils@4.9.1(eslint@10.1.0(jiti@2.6.1))': dependencies: - eslint: 9.39.2(jiti@2.6.1) - eslint-visitor-keys: 3.4.3 - - '@eslint-community/eslint-utils@4.9.1(eslint@9.39.4(jiti@2.6.1))': - dependencies: - eslint: 9.39.4(jiti@2.6.1) + eslint: 10.1.0(jiti@2.6.1) eslint-visitor-keys: 3.4.3 '@eslint-community/regexpp@4.12.2': {} - '@eslint/config-array@0.21.1': + '@eslint-react/ast@3.0.0(eslint@10.1.0(jiti@2.6.1))(typescript@5.9.3)': dependencies: - '@eslint/object-schema': 2.1.7 - debug: 4.4.3 - minimatch: 3.1.2 + '@typescript-eslint/types': 8.57.2 + '@typescript-eslint/typescript-estree': 8.57.2(typescript@5.9.3) + '@typescript-eslint/utils': 8.57.2(eslint@10.1.0(jiti@2.6.1))(typescript@5.9.3) + eslint: 10.1.0(jiti@2.6.1) + string-ts: 2.3.1 + typescript: 5.9.3 transitivePeerDependencies: - supports-color - '@eslint/config-array@0.21.2': + '@eslint-react/core@3.0.0(eslint@10.1.0(jiti@2.6.1))(typescript@5.9.3)': dependencies: - '@eslint/object-schema': 2.1.7 - debug: 4.4.3 - minimatch: 3.1.5 + '@eslint-react/ast': 3.0.0(eslint@10.1.0(jiti@2.6.1))(typescript@5.9.3) + '@eslint-react/shared': 3.0.0(eslint@10.1.0(jiti@2.6.1))(typescript@5.9.3) + '@eslint-react/var': 3.0.0(eslint@10.1.0(jiti@2.6.1))(typescript@5.9.3) + '@typescript-eslint/scope-manager': 8.57.2 + '@typescript-eslint/types': 8.57.2 + '@typescript-eslint/utils': 8.57.2(eslint@10.1.0(jiti@2.6.1))(typescript@5.9.3) + eslint: 10.1.0(jiti@2.6.1) + ts-pattern: 5.9.0 + typescript: 5.9.3 transitivePeerDependencies: - supports-color - '@eslint/config-helpers@0.4.2': - dependencies: - '@eslint/core': 0.17.0 + '@eslint-react/eslint-plugin@3.0.0(eslint@10.1.0(jiti@2.6.1))(typescript@5.9.3)': + dependencies: + '@eslint-react/shared': 3.0.0(eslint@10.1.0(jiti@2.6.1))(typescript@5.9.3) + '@typescript-eslint/scope-manager': 8.57.2 + '@typescript-eslint/type-utils': 8.57.2(eslint@10.1.0(jiti@2.6.1))(typescript@5.9.3) + '@typescript-eslint/types': 8.57.2 + '@typescript-eslint/utils': 8.57.2(eslint@10.1.0(jiti@2.6.1))(typescript@5.9.3) + eslint: 10.1.0(jiti@2.6.1) + eslint-plugin-react-dom: 3.0.0(eslint@10.1.0(jiti@2.6.1))(typescript@5.9.3) + eslint-plugin-react-naming-convention: 3.0.0(eslint@10.1.0(jiti@2.6.1))(typescript@5.9.3) + eslint-plugin-react-rsc: 3.0.0(eslint@10.1.0(jiti@2.6.1))(typescript@5.9.3) + eslint-plugin-react-web-api: 3.0.0(eslint@10.1.0(jiti@2.6.1))(typescript@5.9.3) + eslint-plugin-react-x: 3.0.0(eslint@10.1.0(jiti@2.6.1))(typescript@5.9.3) + ts-api-utils: 2.4.0(typescript@5.9.3) + typescript: 5.9.3 + transitivePeerDependencies: + - supports-color - '@eslint/core@0.17.0': + '@eslint-react/shared@3.0.0(eslint@10.1.0(jiti@2.6.1))(typescript@5.9.3)': dependencies: - '@types/json-schema': 7.0.15 + '@typescript-eslint/utils': 8.57.2(eslint@10.1.0(jiti@2.6.1))(typescript@5.9.3) + eslint: 10.1.0(jiti@2.6.1) + ts-pattern: 5.9.0 + typescript: 5.9.3 + zod: 4.3.6 + transitivePeerDependencies: + - supports-color - '@eslint/eslintrc@3.3.3': + '@eslint-react/var@3.0.0(eslint@10.1.0(jiti@2.6.1))(typescript@5.9.3)': dependencies: - ajv: 6.12.6 - debug: 4.4.3 - espree: 10.4.0 - globals: 14.0.0 - ignore: 5.3.2 - import-fresh: 3.3.1 - js-yaml: 4.1.1 - minimatch: 3.1.2 - strip-json-comments: 3.1.1 + '@eslint-react/ast': 3.0.0(eslint@10.1.0(jiti@2.6.1))(typescript@5.9.3) + '@eslint-react/shared': 3.0.0(eslint@10.1.0(jiti@2.6.1))(typescript@5.9.3) + '@typescript-eslint/scope-manager': 8.57.2 + '@typescript-eslint/types': 8.57.2 + '@typescript-eslint/utils': 8.57.2(eslint@10.1.0(jiti@2.6.1))(typescript@5.9.3) + eslint: 10.1.0(jiti@2.6.1) + ts-pattern: 5.9.0 + typescript: 5.9.3 transitivePeerDependencies: - supports-color - '@eslint/eslintrc@3.3.5': + '@eslint/config-array@0.23.3': dependencies: - ajv: 6.14.0 + '@eslint/object-schema': 3.0.3 debug: 4.4.3 - espree: 10.4.0 - globals: 14.0.0 - ignore: 5.3.2 - import-fresh: 3.3.1 - js-yaml: 4.1.1 - minimatch: 3.1.5 - strip-json-comments: 3.1.1 + minimatch: 10.2.4 transitivePeerDependencies: - supports-color - '@eslint/js@9.39.2': {} + '@eslint/config-helpers@0.5.3': + dependencies: + '@eslint/core': 1.1.1 + + '@eslint/core@1.1.1': + dependencies: + '@types/json-schema': 7.0.15 - '@eslint/js@9.39.4': {} + '@eslint/js@10.0.1(eslint@10.1.0(jiti@2.6.1))': + optionalDependencies: + eslint: 10.1.0(jiti@2.6.1) - '@eslint/object-schema@2.1.7': {} + '@eslint/object-schema@3.0.3': {} - '@eslint/plugin-kit@0.4.1': + '@eslint/plugin-kit@0.6.1': dependencies: - '@eslint/core': 0.17.0 + '@eslint/core': 1.1.1 levn: 0.4.1 '@exodus/bytes@1.15.0(@noble/hashes@1.8.0)': @@ -10004,12 +9993,6 @@ snapshots: '@img/sharp-win32-x64@0.34.5': optional: true - '@isaacs/balanced-match@4.0.1': {} - - '@isaacs/brace-expansion@5.0.0': - dependencies: - '@isaacs/balanced-match': 4.0.1 - '@isaacs/cliui@8.0.2': dependencies: string-width: 5.1.2 @@ -10187,11 +10170,7 @@ snapshots: '@next/env@16.1.7': {} - '@next/eslint-plugin-next@16.1.6': - dependencies: - fast-glob: 3.3.1 - - '@next/eslint-plugin-next@16.1.7': + '@next/eslint-plugin-next@16.2.1': dependencies: fast-glob: 3.3.1 @@ -10366,8 +10345,6 @@ snapshots: '@nodevu/parsefiles@0.0.3': {} - '@nolyfill/is-core-module@1.0.39': {} - '@npmcli/config@8.3.4': dependencies: '@npmcli/map-workspaces': 3.0.6 @@ -10429,7 +10406,7 @@ snapshots: '@open-draft/until@2.1.0': {} - '@opennextjs/aws@3.9.16(next@16.1.7(@babel/core@7.28.5)(@opentelemetry/api@1.9.0)(@playwright/test@1.58.2)(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.4(react@19.2.4))(react@19.2.4))': + '@opennextjs/aws@3.9.16(next@16.1.7(@opentelemetry/api@1.9.0)(@playwright/test@1.58.2)(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.4(react@19.2.4))(react@19.2.4))': dependencies: '@ast-grep/napi': 0.40.5 '@aws-sdk/client-cloudfront': 3.984.0 @@ -10445,7 +10422,7 @@ snapshots: cookie: 1.1.1 esbuild: 0.25.4 express: 5.2.1 - next: 16.1.7(@babel/core@7.28.5)(@opentelemetry/api@1.9.0)(@playwright/test@1.58.2)(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + next: 16.1.7(@opentelemetry/api@1.9.0)(@playwright/test@1.58.2)(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) path-to-regexp: 6.3.0 urlpattern-polyfill: 10.1.0 yaml: 2.8.3 @@ -10453,16 +10430,16 @@ snapshots: - aws-crt - supports-color - '@opennextjs/cloudflare@1.17.1(next@16.1.7(@babel/core@7.28.5)(@opentelemetry/api@1.9.0)(@playwright/test@1.58.2)(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.4(react@19.2.4))(react@19.2.4))(wrangler@4.74.0)': + '@opennextjs/cloudflare@1.17.1(next@16.1.7(@opentelemetry/api@1.9.0)(@playwright/test@1.58.2)(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.4(react@19.2.4))(react@19.2.4))(wrangler@4.74.0)': dependencies: '@ast-grep/napi': 0.40.5 '@dotenvx/dotenvx': 1.31.0 - '@opennextjs/aws': 3.9.16(next@16.1.7(@babel/core@7.28.5)(@opentelemetry/api@1.9.0)(@playwright/test@1.58.2)(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)) + '@opennextjs/aws': 3.9.16(next@16.1.7(@opentelemetry/api@1.9.0)(@playwright/test@1.58.2)(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)) cloudflare: 4.5.0 comment-json: 4.6.2 enquirer: 2.4.1 glob: 12.0.0 - next: 16.1.7(@babel/core@7.28.5)(@opentelemetry/api@1.9.0)(@playwright/test@1.58.2)(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + next: 16.1.7(@opentelemetry/api@1.9.0)(@playwright/test@1.58.2)(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) ts-tqdm: 0.8.6 wrangler: 4.74.0 yargs: 18.0.0 @@ -10563,6 +10540,8 @@ snapshots: '@oxc-project/types@0.115.0': {} + '@package-json/types@0.0.12': {} + '@parcel/watcher-android-arm64@2.5.6': optional: true @@ -11084,7 +11063,8 @@ snapshots: '@rollup/plugin-virtual@3.0.2': {} - '@rtsao/scc@1.1.0': {} + '@rtsao/scc@1.1.0': + optional: true '@schummar/icu-type-parser@1.21.5': {} @@ -11939,6 +11919,8 @@ snapshots: '@types/estree': 1.0.8 '@types/json-schema': 7.0.15 + '@types/esrecurse@4.3.1': {} + '@types/estree-jsx@1.0.5': dependencies: '@types/estree': 1.0.8 @@ -11955,7 +11937,8 @@ snapshots: '@types/json-schema@7.0.15': {} - '@types/json5@0.0.29': {} + '@types/json5@0.0.29': + optional: true '@types/mdast@3.0.15': dependencies: @@ -12000,15 +11983,15 @@ snapshots: '@types/unist@3.0.3': {} - '@typescript-eslint/eslint-plugin@8.54.0(@typescript-eslint/parser@8.54.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3))(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3)': + '@typescript-eslint/eslint-plugin@8.57.2(@typescript-eslint/parser@8.57.2(eslint@10.1.0(jiti@2.6.1))(typescript@5.9.3))(eslint@10.1.0(jiti@2.6.1))(typescript@5.9.3)': dependencies: '@eslint-community/regexpp': 4.12.2 - '@typescript-eslint/parser': 8.54.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3) - '@typescript-eslint/scope-manager': 8.54.0 - '@typescript-eslint/type-utils': 8.54.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3) - '@typescript-eslint/utils': 8.54.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3) - '@typescript-eslint/visitor-keys': 8.54.0 - eslint: 9.39.2(jiti@2.6.1) + '@typescript-eslint/parser': 8.57.2(eslint@10.1.0(jiti@2.6.1))(typescript@5.9.3) + '@typescript-eslint/scope-manager': 8.57.2 + '@typescript-eslint/type-utils': 8.57.2(eslint@10.1.0(jiti@2.6.1))(typescript@5.9.3) + '@typescript-eslint/utils': 8.57.2(eslint@10.1.0(jiti@2.6.1))(typescript@5.9.3) + '@typescript-eslint/visitor-keys': 8.57.2 + eslint: 10.1.0(jiti@2.6.1) ignore: 7.0.5 natural-compare: 1.4.0 ts-api-utils: 2.4.0(typescript@5.9.3) @@ -12016,92 +11999,70 @@ snapshots: transitivePeerDependencies: - supports-color - '@typescript-eslint/eslint-plugin@8.54.0(@typescript-eslint/parser@8.54.0(eslint@9.39.4(jiti@2.6.1))(typescript@5.9.3))(eslint@9.39.4(jiti@2.6.1))(typescript@5.9.3)': + '@typescript-eslint/parser@8.57.2(eslint@10.1.0(jiti@2.6.1))(typescript@5.9.3)': dependencies: - '@eslint-community/regexpp': 4.12.2 - '@typescript-eslint/parser': 8.54.0(eslint@9.39.4(jiti@2.6.1))(typescript@5.9.3) - '@typescript-eslint/scope-manager': 8.54.0 - '@typescript-eslint/type-utils': 8.54.0(eslint@9.39.4(jiti@2.6.1))(typescript@5.9.3) - '@typescript-eslint/utils': 8.54.0(eslint@9.39.4(jiti@2.6.1))(typescript@5.9.3) - '@typescript-eslint/visitor-keys': 8.54.0 - eslint: 9.39.4(jiti@2.6.1) - ignore: 7.0.5 - natural-compare: 1.4.0 - ts-api-utils: 2.4.0(typescript@5.9.3) + '@typescript-eslint/scope-manager': 8.57.2 + '@typescript-eslint/types': 8.57.2 + '@typescript-eslint/typescript-estree': 8.57.2(typescript@5.9.3) + '@typescript-eslint/visitor-keys': 8.57.2 + debug: 4.4.3 + eslint: 10.1.0(jiti@2.6.1) typescript: 5.9.3 transitivePeerDependencies: - supports-color - '@typescript-eslint/parser@8.54.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3)': + '@typescript-eslint/project-service@8.54.0(typescript@5.9.3)': dependencies: - '@typescript-eslint/scope-manager': 8.54.0 + '@typescript-eslint/tsconfig-utils': 8.54.0(typescript@5.9.3) '@typescript-eslint/types': 8.54.0 - '@typescript-eslint/typescript-estree': 8.54.0(typescript@5.9.3) - '@typescript-eslint/visitor-keys': 8.54.0 debug: 4.4.3 - eslint: 9.39.2(jiti@2.6.1) typescript: 5.9.3 transitivePeerDependencies: - supports-color - '@typescript-eslint/parser@8.54.0(eslint@9.39.4(jiti@2.6.1))(typescript@5.9.3)': + '@typescript-eslint/project-service@8.57.2(typescript@5.9.3)': dependencies: - '@typescript-eslint/scope-manager': 8.54.0 - '@typescript-eslint/types': 8.54.0 - '@typescript-eslint/typescript-estree': 8.54.0(typescript@5.9.3) - '@typescript-eslint/visitor-keys': 8.54.0 + '@typescript-eslint/tsconfig-utils': 8.57.2(typescript@5.9.3) + '@typescript-eslint/types': 8.57.2 debug: 4.4.3 - eslint: 9.39.4(jiti@2.6.1) typescript: 5.9.3 transitivePeerDependencies: - supports-color - '@typescript-eslint/project-service@8.54.0(typescript@5.9.3)': + '@typescript-eslint/scope-manager@8.54.0': dependencies: - '@typescript-eslint/tsconfig-utils': 8.54.0(typescript@5.9.3) '@typescript-eslint/types': 8.54.0 - debug: 4.4.3 - typescript: 5.9.3 - transitivePeerDependencies: - - supports-color + '@typescript-eslint/visitor-keys': 8.54.0 - '@typescript-eslint/scope-manager@8.54.0': + '@typescript-eslint/scope-manager@8.57.2': dependencies: - '@typescript-eslint/types': 8.54.0 - '@typescript-eslint/visitor-keys': 8.54.0 + '@typescript-eslint/types': 8.57.2 + '@typescript-eslint/visitor-keys': 8.57.2 '@typescript-eslint/tsconfig-utils@8.54.0(typescript@5.9.3)': dependencies: typescript: 5.9.3 - '@typescript-eslint/type-utils@8.54.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3)': + '@typescript-eslint/tsconfig-utils@8.57.2(typescript@5.9.3)': dependencies: - '@typescript-eslint/types': 8.54.0 - '@typescript-eslint/typescript-estree': 8.54.0(typescript@5.9.3) - '@typescript-eslint/utils': 8.54.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3) - debug: 4.4.3 - eslint: 9.39.2(jiti@2.6.1) - ts-api-utils: 2.4.0(typescript@5.9.3) typescript: 5.9.3 - transitivePeerDependencies: - - supports-color - '@typescript-eslint/type-utils@8.54.0(eslint@9.39.4(jiti@2.6.1))(typescript@5.9.3)': + '@typescript-eslint/type-utils@8.57.2(eslint@10.1.0(jiti@2.6.1))(typescript@5.9.3)': dependencies: - '@typescript-eslint/types': 8.54.0 - '@typescript-eslint/typescript-estree': 8.54.0(typescript@5.9.3) - '@typescript-eslint/utils': 8.54.0(eslint@9.39.4(jiti@2.6.1))(typescript@5.9.3) + '@typescript-eslint/types': 8.57.2 + '@typescript-eslint/typescript-estree': 8.57.2(typescript@5.9.3) + '@typescript-eslint/utils': 8.57.2(eslint@10.1.0(jiti@2.6.1))(typescript@5.9.3) debug: 4.4.3 - eslint: 9.39.4(jiti@2.6.1) + eslint: 10.1.0(jiti@2.6.1) ts-api-utils: 2.4.0(typescript@5.9.3) typescript: 5.9.3 transitivePeerDependencies: - supports-color - '@typescript-eslint/types@8.51.0': {} - '@typescript-eslint/types@8.54.0': {} + '@typescript-eslint/types@8.57.2': {} + '@typescript-eslint/typescript-estree@8.54.0(typescript@5.9.3)': dependencies: '@typescript-eslint/project-service': 8.54.0(typescript@5.9.3) @@ -12109,7 +12070,7 @@ snapshots: '@typescript-eslint/types': 8.54.0 '@typescript-eslint/visitor-keys': 8.54.0 debug: 4.4.3 - minimatch: 9.0.5 + minimatch: 9.0.9 semver: 7.7.4 tinyglobby: 0.2.15 ts-api-utils: 2.4.0(typescript@5.9.3) @@ -12117,24 +12078,39 @@ snapshots: transitivePeerDependencies: - supports-color - '@typescript-eslint/utils@8.54.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3)': + '@typescript-eslint/typescript-estree@8.57.2(typescript@5.9.3)': dependencies: - '@eslint-community/eslint-utils': 4.9.1(eslint@9.39.2(jiti@2.6.1)) - '@typescript-eslint/scope-manager': 8.54.0 - '@typescript-eslint/types': 8.54.0 - '@typescript-eslint/typescript-estree': 8.54.0(typescript@5.9.3) - eslint: 9.39.2(jiti@2.6.1) + '@typescript-eslint/project-service': 8.57.2(typescript@5.9.3) + '@typescript-eslint/tsconfig-utils': 8.57.2(typescript@5.9.3) + '@typescript-eslint/types': 8.57.2 + '@typescript-eslint/visitor-keys': 8.57.2 + debug: 4.4.3 + minimatch: 10.2.4 + semver: 7.7.4 + tinyglobby: 0.2.15 + ts-api-utils: 2.4.0(typescript@5.9.3) typescript: 5.9.3 transitivePeerDependencies: - supports-color - '@typescript-eslint/utils@8.54.0(eslint@9.39.4(jiti@2.6.1))(typescript@5.9.3)': + '@typescript-eslint/utils@8.54.0(eslint@10.1.0(jiti@2.6.1))(typescript@5.9.3)': dependencies: - '@eslint-community/eslint-utils': 4.9.1(eslint@9.39.4(jiti@2.6.1)) + '@eslint-community/eslint-utils': 4.9.1(eslint@10.1.0(jiti@2.6.1)) '@typescript-eslint/scope-manager': 8.54.0 '@typescript-eslint/types': 8.54.0 '@typescript-eslint/typescript-estree': 8.54.0(typescript@5.9.3) - eslint: 9.39.4(jiti@2.6.1) + eslint: 10.1.0(jiti@2.6.1) + typescript: 5.9.3 + transitivePeerDependencies: + - supports-color + + '@typescript-eslint/utils@8.57.2(eslint@10.1.0(jiti@2.6.1))(typescript@5.9.3)': + dependencies: + '@eslint-community/eslint-utils': 4.9.1(eslint@10.1.0(jiti@2.6.1)) + '@typescript-eslint/scope-manager': 8.57.2 + '@typescript-eslint/types': 8.57.2 + '@typescript-eslint/typescript-estree': 8.57.2(typescript@5.9.3) + eslint: 10.1.0(jiti@2.6.1) typescript: 5.9.3 transitivePeerDependencies: - supports-color @@ -12144,6 +12120,11 @@ snapshots: '@typescript-eslint/types': 8.54.0 eslint-visitor-keys: 4.2.1 + '@typescript-eslint/visitor-keys@8.57.2': + dependencies: + '@typescript-eslint/types': 8.57.2 + eslint-visitor-keys: 5.0.1 + '@typescript/vfs@1.6.2(typescript@5.9.3)': dependencies: debug: 4.4.3 @@ -12217,9 +12198,9 @@ snapshots: mdast-util-to-string: 3.2.0 unist-util-visit: 4.1.2 - '@vercel/analytics@2.0.1(next@16.1.7(@babel/core@7.28.5)(@opentelemetry/api@1.9.0)(@playwright/test@1.58.2)(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.4(react@19.2.4))(react@19.2.4))(react@19.2.4)': + '@vercel/analytics@2.0.1(next@16.1.7(@opentelemetry/api@1.9.0)(@playwright/test@1.58.2)(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.4(react@19.2.4))(react@19.2.4))(react@19.2.4)': optionalDependencies: - next: 16.1.7(@babel/core@7.28.5)(@opentelemetry/api@1.9.0)(@playwright/test@1.58.2)(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + next: 16.1.7(@opentelemetry/api@1.9.0)(@playwright/test@1.58.2)(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) react: 19.2.4 '@vercel/otel@2.1.1(@opentelemetry/api-logs@0.213.0)(@opentelemetry/api@1.9.0)(@opentelemetry/instrumentation@0.213.0(@opentelemetry/api@1.9.0))(@opentelemetry/resources@1.30.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-logs@0.213.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-metrics@1.30.1(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@1.30.1(@opentelemetry/api@1.9.0))': @@ -12232,9 +12213,9 @@ snapshots: '@opentelemetry/sdk-metrics': 1.30.1(@opentelemetry/api@1.9.0) '@opentelemetry/sdk-trace-base': 1.30.1(@opentelemetry/api@1.9.0) - '@vercel/speed-insights@2.0.0(next@16.1.7(@babel/core@7.28.5)(@opentelemetry/api@1.9.0)(@playwright/test@1.58.2)(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.4(react@19.2.4))(react@19.2.4))(react@19.2.4)': + '@vercel/speed-insights@2.0.0(next@16.1.7(@opentelemetry/api@1.9.0)(@playwright/test@1.58.2)(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.4(react@19.2.4))(react@19.2.4))(react@19.2.4)': optionalDependencies: - next: 16.1.7(@babel/core@7.28.5)(@opentelemetry/api@1.9.0)(@playwright/test@1.58.2)(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + next: 16.1.7(@opentelemetry/api@1.9.0)(@playwright/test@1.58.2)(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) react: 19.2.4 '@vitest/expect@3.2.4': @@ -12387,13 +12368,6 @@ snapshots: ajv: 8.18.0 fast-deep-equal: 3.1.3 - ajv@6.12.6: - dependencies: - fast-deep-equal: 3.1.3 - fast-json-stable-stringify: 2.1.0 - json-schema-traverse: 0.4.1 - uri-js: 4.4.1 - ajv@6.14.0: dependencies: fast-deep-equal: 3.1.3 @@ -12401,13 +12375,6 @@ snapshots: json-schema-traverse: 0.4.1 uri-js: 4.4.1 - ajv@8.17.1: - dependencies: - fast-deep-equal: 3.1.3 - fast-uri: 3.1.0 - json-schema-traverse: 1.0.0 - require-from-string: 2.0.2 - ajv@8.18.0: dependencies: fast-deep-equal: 3.1.3 @@ -12492,6 +12459,7 @@ snapshots: es-errors: 1.3.0 es-object-atoms: 1.1.1 es-shim-unscopables: 1.1.0 + optional: true array.prototype.flat@1.3.3: dependencies: @@ -12527,8 +12495,6 @@ snapshots: assertion-error@2.0.1: {} - ast-types-flow@0.0.8: {} - ast-types@0.16.1: dependencies: tslib: 2.8.1 @@ -12547,10 +12513,6 @@ snapshots: aws4fetch@1.0.20: {} - axe-core@4.11.1: {} - - axobject-query@4.1.0: {} - babel-plugin-react-compiler@1.0.0: dependencies: '@babel/types': 7.28.5 @@ -12559,8 +12521,6 @@ snapshots: balanced-match@1.0.2: {} - balanced-match@3.0.1: {} - balanced-match@4.0.4: {} baseline-browser-mapping@2.10.8: {} @@ -12573,6 +12533,8 @@ snapshots: binary-extensions@2.3.0: {} + birecord@0.1.1: {} + blake3-wasm@2.1.5: {} body-parser@2.2.2: @@ -12774,8 +12736,6 @@ snapshots: commander@11.1.0: {} - commander@14.0.2: {} - commander@14.0.3: {} commander@2.20.3: {} @@ -12791,6 +12751,8 @@ snapshots: commondir@1.0.1: {} + compare-versions@6.1.1: {} + concat-map@0.0.1: {} concat-stream@2.0.0: @@ -12830,15 +12792,6 @@ snapshots: optionalDependencies: typescript: 5.9.3 - cosmiconfig@9.0.0(typescript@5.9.3): - dependencies: - env-paths: 2.2.1 - import-fresh: 3.3.1 - js-yaml: 4.1.1 - parse-json: 5.2.0 - optionalDependencies: - typescript: 5.9.3 - cosmiconfig@9.0.1(typescript@5.9.3): dependencies: env-paths: 2.2.1 @@ -12859,7 +12812,7 @@ snapshots: shebang-command: 2.0.0 which: 2.0.2 - css-functions-list@3.2.3: {} + css-functions-list@3.3.3: {} css-loader@7.1.4(webpack@5.105.4(@swc/core@1.15.11)): dependencies: @@ -12884,11 +12837,6 @@ snapshots: css-selector-parser@3.1.3: {} - css-tree@3.1.0: - dependencies: - mdn-data: 2.12.2 - source-map-js: 1.2.1 - css-tree@3.2.1: dependencies: mdn-data: 2.27.1 @@ -12902,8 +12850,6 @@ snapshots: csstype@3.2.3: {} - damerau-levenshtein@1.0.8: {} - data-urls@7.0.0(@noble/hashes@1.8.0): dependencies: whatwg-mimetype: 5.0.0 @@ -12932,6 +12878,7 @@ snapshots: debug@3.2.7: dependencies: ms: 2.1.3 + optional: true debug@4.4.3: dependencies: @@ -12990,8 +12937,6 @@ snapshots: dependencies: dequal: 2.0.3 - diff@5.2.0: {} - doctrine@2.1.0: dependencies: esutils: 2.0.3 @@ -13314,26 +13259,6 @@ snapshots: escape-string-regexp@5.0.0: {} - eslint-config-next@16.1.6(@typescript-eslint/parser@8.54.0(eslint@9.39.4(jiti@2.6.1))(typescript@5.9.3))(eslint-plugin-import-x@4.16.1(@typescript-eslint/utils@8.54.0(eslint@9.39.4(jiti@2.6.1))(typescript@5.9.3))(eslint-import-resolver-node@0.3.9)(eslint@9.39.4(jiti@2.6.1)))(eslint@9.39.4(jiti@2.6.1))(typescript@5.9.3): - dependencies: - '@next/eslint-plugin-next': 16.1.6 - eslint: 9.39.4(jiti@2.6.1) - eslint-import-resolver-node: 0.3.9 - eslint-import-resolver-typescript: 3.10.1(eslint-plugin-import-x@4.16.1(@typescript-eslint/utils@8.54.0(eslint@9.39.4(jiti@2.6.1))(typescript@5.9.3))(eslint-import-resolver-node@0.3.9)(eslint@9.39.4(jiti@2.6.1)))(eslint-plugin-import@2.32.0)(eslint@9.39.4(jiti@2.6.1)) - eslint-plugin-import: 2.32.0(@typescript-eslint/parser@8.54.0(eslint@9.39.4(jiti@2.6.1))(typescript@5.9.3))(eslint-import-resolver-typescript@4.4.4)(eslint@9.39.4(jiti@2.6.1)) - eslint-plugin-jsx-a11y: 6.10.2(eslint@9.39.4(jiti@2.6.1)) - eslint-plugin-react: 7.37.5(eslint@9.39.4(jiti@2.6.1)) - eslint-plugin-react-hooks: 7.0.1(eslint@9.39.4(jiti@2.6.1)) - globals: 16.4.0 - typescript-eslint: 8.54.0(eslint@9.39.4(jiti@2.6.1))(typescript@5.9.3) - optionalDependencies: - typescript: 5.9.3 - transitivePeerDependencies: - - '@typescript-eslint/parser' - - eslint-import-resolver-webpack - - eslint-plugin-import-x - - supports-color - eslint-import-context@0.1.9(unrs-resolver@1.11.1): dependencies: get-tsconfig: 4.13.0 @@ -13348,27 +13273,12 @@ snapshots: resolve: 1.22.11 transitivePeerDependencies: - supports-color + optional: true - eslint-import-resolver-typescript@3.10.1(eslint-plugin-import-x@4.16.1(@typescript-eslint/utils@8.54.0(eslint@9.39.4(jiti@2.6.1))(typescript@5.9.3))(eslint-import-resolver-node@0.3.9)(eslint@9.39.4(jiti@2.6.1)))(eslint-plugin-import@2.32.0)(eslint@9.39.4(jiti@2.6.1)): - dependencies: - '@nolyfill/is-core-module': 1.0.39 - debug: 4.4.3 - eslint: 9.39.4(jiti@2.6.1) - get-tsconfig: 4.13.6 - is-bun-module: 2.0.0 - stable-hash: 0.0.5 - tinyglobby: 0.2.15 - unrs-resolver: 1.11.1 - optionalDependencies: - eslint-plugin-import: 2.32.0(@typescript-eslint/parser@8.54.0(eslint@9.39.4(jiti@2.6.1))(typescript@5.9.3))(eslint-import-resolver-typescript@4.4.4)(eslint@9.39.4(jiti@2.6.1)) - eslint-plugin-import-x: 4.16.1(@typescript-eslint/utils@8.54.0(eslint@9.39.4(jiti@2.6.1))(typescript@5.9.3))(eslint-import-resolver-node@0.3.9)(eslint@9.39.4(jiti@2.6.1)) - transitivePeerDependencies: - - supports-color - - eslint-import-resolver-typescript@4.4.4(eslint-plugin-import-x@4.16.1(@typescript-eslint/utils@8.54.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3))(eslint-import-resolver-node@0.3.9)(eslint@9.39.2(jiti@2.6.1)))(eslint-plugin-import@2.32.0)(eslint@9.39.2(jiti@2.6.1)): + eslint-import-resolver-typescript@4.4.4(eslint-plugin-import-x@4.16.2(@typescript-eslint/utils@8.57.2(eslint@10.1.0(jiti@2.6.1))(typescript@5.9.3))(eslint-import-resolver-node@0.3.9)(eslint@10.1.0(jiti@2.6.1)))(eslint-plugin-import@2.32.0)(eslint@10.1.0(jiti@2.6.1)): dependencies: debug: 4.4.3 - eslint: 9.39.2(jiti@2.6.1) + eslint: 10.1.0(jiti@2.6.1) eslint-import-context: 0.1.9(unrs-resolver@1.11.1) get-tsconfig: 4.13.0 is-bun-module: 2.0.0 @@ -13376,16 +13286,16 @@ snapshots: tinyglobby: 0.2.15 unrs-resolver: 1.11.1 optionalDependencies: - eslint-plugin-import: 2.32.0(eslint-import-resolver-typescript@4.4.4)(eslint@9.39.2(jiti@2.6.1)) - eslint-plugin-import-x: 4.16.1(@typescript-eslint/utils@8.54.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3))(eslint-import-resolver-node@0.3.9)(eslint@9.39.2(jiti@2.6.1)) + eslint-plugin-import: 2.32.0(@typescript-eslint/parser@8.57.2(eslint@10.1.0(jiti@2.6.1))(typescript@5.9.3))(eslint-import-resolver-typescript@4.4.4)(eslint@10.1.0(jiti@2.6.1)) + eslint-plugin-import-x: 4.16.2(@typescript-eslint/utils@8.57.2(eslint@10.1.0(jiti@2.6.1))(typescript@5.9.3))(eslint-import-resolver-node@0.3.9)(eslint@10.1.0(jiti@2.6.1)) transitivePeerDependencies: - supports-color - eslint-mdx@3.6.2(eslint@9.39.4(jiti@2.6.1))(remark-lint-file-extension@3.0.1): + eslint-mdx@3.7.0(eslint@10.1.0(jiti@2.6.1))(remark-lint-file-extension@3.0.1): dependencies: acorn: 8.16.0 acorn-jsx: 5.3.2(acorn@8.16.0) - eslint: 9.39.4(jiti@2.6.1) + eslint: 10.1.0(jiti@2.6.1) espree: 10.4.0 estree-util-visit: 2.0.0 remark-mdx: 3.1.1 @@ -13395,7 +13305,6 @@ snapshots: unified: 11.0.5 unified-engine: 11.2.2 unist-util-visit: 5.1.0 - uvu: 0.5.6 vfile: 6.0.3 optionalDependencies: remark-lint-file-extension: 3.0.1 @@ -13403,66 +13312,38 @@ snapshots: - bluebird - supports-color - eslint-module-utils@2.12.1(@typescript-eslint/parser@8.54.0(eslint@9.39.4(jiti@2.6.1))(typescript@5.9.3))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@4.4.4)(eslint@9.39.4(jiti@2.6.1)): - dependencies: - debug: 3.2.7 - optionalDependencies: - '@typescript-eslint/parser': 8.54.0(eslint@9.39.4(jiti@2.6.1))(typescript@5.9.3) - eslint: 9.39.4(jiti@2.6.1) - eslint-import-resolver-node: 0.3.9 - eslint-import-resolver-typescript: 4.4.4(eslint-plugin-import-x@4.16.1(@typescript-eslint/utils@8.54.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3))(eslint-import-resolver-node@0.3.9)(eslint@9.39.2(jiti@2.6.1)))(eslint-plugin-import@2.32.0)(eslint@9.39.2(jiti@2.6.1)) - transitivePeerDependencies: - - supports-color - - eslint-module-utils@2.12.1(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@4.4.4)(eslint@9.39.2(jiti@2.6.1)): + eslint-module-utils@2.12.1(@typescript-eslint/parser@8.57.2(eslint@10.1.0(jiti@2.6.1))(typescript@5.9.3))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@4.4.4)(eslint@10.1.0(jiti@2.6.1)): dependencies: debug: 3.2.7 optionalDependencies: - eslint: 9.39.2(jiti@2.6.1) + '@typescript-eslint/parser': 8.57.2(eslint@10.1.0(jiti@2.6.1))(typescript@5.9.3) + eslint: 10.1.0(jiti@2.6.1) eslint-import-resolver-node: 0.3.9 - eslint-import-resolver-typescript: 4.4.4(eslint-plugin-import-x@4.16.1(@typescript-eslint/utils@8.54.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3))(eslint-import-resolver-node@0.3.9)(eslint@9.39.2(jiti@2.6.1)))(eslint-plugin-import@2.32.0)(eslint@9.39.2(jiti@2.6.1)) + eslint-import-resolver-typescript: 4.4.4(eslint-plugin-import-x@4.16.2(@typescript-eslint/utils@8.57.2(eslint@10.1.0(jiti@2.6.1))(typescript@5.9.3))(eslint-import-resolver-node@0.3.9)(eslint@10.1.0(jiti@2.6.1)))(eslint-plugin-import@2.32.0)(eslint@10.1.0(jiti@2.6.1)) transitivePeerDependencies: - supports-color optional: true - eslint-plugin-import-x@4.16.1(@typescript-eslint/utils@8.54.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3))(eslint-import-resolver-node@0.3.9)(eslint@9.39.2(jiti@2.6.1)): + eslint-plugin-import-x@4.16.2(@typescript-eslint/utils@8.57.2(eslint@10.1.0(jiti@2.6.1))(typescript@5.9.3))(eslint-import-resolver-node@0.3.9)(eslint@10.1.0(jiti@2.6.1)): dependencies: - '@typescript-eslint/types': 8.51.0 + '@package-json/types': 0.0.12 + '@typescript-eslint/types': 8.57.2 comment-parser: 1.4.1 debug: 4.4.3 - eslint: 9.39.2(jiti@2.6.1) + eslint: 10.1.0(jiti@2.6.1) eslint-import-context: 0.1.9(unrs-resolver@1.11.1) is-glob: 4.0.3 - minimatch: 10.1.1 - semver: 7.7.4 - stable-hash-x: 0.2.0 - unrs-resolver: 1.11.1 - optionalDependencies: - '@typescript-eslint/utils': 8.54.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3) - eslint-import-resolver-node: 0.3.9 - transitivePeerDependencies: - - supports-color - - eslint-plugin-import-x@4.16.1(@typescript-eslint/utils@8.54.0(eslint@9.39.4(jiti@2.6.1))(typescript@5.9.3))(eslint-import-resolver-node@0.3.9)(eslint@9.39.4(jiti@2.6.1)): - dependencies: - '@typescript-eslint/types': 8.51.0 - comment-parser: 1.4.1 - debug: 4.4.3 - eslint: 9.39.4(jiti@2.6.1) - eslint-import-context: 0.1.9(unrs-resolver@1.11.1) - is-glob: 4.0.3 - minimatch: 10.1.1 + minimatch: 10.2.4 semver: 7.7.4 stable-hash-x: 0.2.0 unrs-resolver: 1.11.1 optionalDependencies: - '@typescript-eslint/utils': 8.54.0(eslint@9.39.4(jiti@2.6.1))(typescript@5.9.3) + '@typescript-eslint/utils': 8.57.2(eslint@10.1.0(jiti@2.6.1))(typescript@5.9.3) eslint-import-resolver-node: 0.3.9 transitivePeerDependencies: - supports-color - optional: true - eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.54.0(eslint@9.39.4(jiti@2.6.1))(typescript@5.9.3))(eslint-import-resolver-typescript@4.4.4)(eslint@9.39.4(jiti@2.6.1)): + eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.57.2(eslint@10.1.0(jiti@2.6.1))(typescript@5.9.3))(eslint-import-resolver-typescript@4.4.4)(eslint@10.1.0(jiti@2.6.1)): dependencies: '@rtsao/scc': 1.1.0 array-includes: 3.1.9 @@ -13471,13 +13352,13 @@ snapshots: array.prototype.flatmap: 1.3.3 debug: 3.2.7 doctrine: 2.1.0 - eslint: 9.39.4(jiti@2.6.1) + eslint: 10.1.0(jiti@2.6.1) eslint-import-resolver-node: 0.3.9 - eslint-module-utils: 2.12.1(@typescript-eslint/parser@8.54.0(eslint@9.39.4(jiti@2.6.1))(typescript@5.9.3))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@4.4.4)(eslint@9.39.4(jiti@2.6.1)) + eslint-module-utils: 2.12.1(@typescript-eslint/parser@8.57.2(eslint@10.1.0(jiti@2.6.1))(typescript@5.9.3))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@4.4.4)(eslint@10.1.0(jiti@2.6.1)) hasown: 2.0.2 is-core-module: 2.16.1 is-glob: 4.0.3 - minimatch: 3.1.2 + minimatch: 3.1.5 object.fromentries: 2.0.8 object.groupby: 1.0.3 object.values: 1.2.1 @@ -13485,63 +13366,17 @@ snapshots: string.prototype.trimend: 1.0.9 tsconfig-paths: 3.15.0 optionalDependencies: - '@typescript-eslint/parser': 8.54.0(eslint@9.39.4(jiti@2.6.1))(typescript@5.9.3) - transitivePeerDependencies: - - eslint-import-resolver-typescript - - eslint-import-resolver-webpack - - supports-color - - eslint-plugin-import@2.32.0(eslint-import-resolver-typescript@4.4.4)(eslint@9.39.2(jiti@2.6.1)): - dependencies: - '@rtsao/scc': 1.1.0 - 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: 9.39.2(jiti@2.6.1) - eslint-import-resolver-node: 0.3.9 - eslint-module-utils: 2.12.1(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@4.4.4)(eslint@9.39.2(jiti@2.6.1)) - hasown: 2.0.2 - 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.1 - semver: 6.3.1 - string.prototype.trimend: 1.0.9 - tsconfig-paths: 3.15.0 + '@typescript-eslint/parser': 8.57.2(eslint@10.1.0(jiti@2.6.1))(typescript@5.9.3) transitivePeerDependencies: - eslint-import-resolver-typescript - eslint-import-resolver-webpack - supports-color optional: true - eslint-plugin-jsx-a11y@6.10.2(eslint@9.39.4(jiti@2.6.1)): - dependencies: - aria-query: 5.3.2 - array-includes: 3.1.9 - array.prototype.flatmap: 1.3.3 - ast-types-flow: 0.0.8 - axe-core: 4.11.1 - axobject-query: 4.1.0 - damerau-levenshtein: 1.0.8 - emoji-regex: 9.2.2 - eslint: 9.39.4(jiti@2.6.1) - hasown: 2.0.2 - jsx-ast-utils: 3.3.5 - language-tags: 1.0.9 - minimatch: 3.1.2 - object.fromentries: 2.0.8 - safe-regex-test: 1.1.0 - string.prototype.includes: 2.0.1 - - eslint-plugin-mdx@3.6.2(eslint@9.39.4(jiti@2.6.1))(remark-lint-file-extension@3.0.1): + eslint-plugin-mdx@3.7.0(eslint@10.1.0(jiti@2.6.1))(remark-lint-file-extension@3.0.1): dependencies: - eslint: 9.39.4(jiti@2.6.1) - eslint-mdx: 3.6.2(eslint@9.39.4(jiti@2.6.1))(remark-lint-file-extension@3.0.1) + eslint: 10.1.0(jiti@2.6.1) + eslint-mdx: 3.7.0(eslint@10.1.0(jiti@2.6.1))(remark-lint-file-extension@3.0.1) mdast-util-from-markdown: 2.0.3 mdast-util-mdx: 3.0.0 micromark-extension-mdxjs: 3.0.0 @@ -13556,18 +13391,102 @@ snapshots: - remark-lint-file-extension - supports-color - eslint-plugin-react-hooks@7.0.1(eslint@9.39.4(jiti@2.6.1)): + eslint-plugin-react-dom@3.0.0(eslint@10.1.0(jiti@2.6.1))(typescript@5.9.3): + dependencies: + '@eslint-react/ast': 3.0.0(eslint@10.1.0(jiti@2.6.1))(typescript@5.9.3) + '@eslint-react/core': 3.0.0(eslint@10.1.0(jiti@2.6.1))(typescript@5.9.3) + '@eslint-react/shared': 3.0.0(eslint@10.1.0(jiti@2.6.1))(typescript@5.9.3) + '@eslint-react/var': 3.0.0(eslint@10.1.0(jiti@2.6.1))(typescript@5.9.3) + '@typescript-eslint/scope-manager': 8.57.2 + '@typescript-eslint/types': 8.57.2 + '@typescript-eslint/utils': 8.57.2(eslint@10.1.0(jiti@2.6.1))(typescript@5.9.3) + compare-versions: 6.1.1 + eslint: 10.1.0(jiti@2.6.1) + ts-pattern: 5.9.0 + typescript: 5.9.3 + transitivePeerDependencies: + - supports-color + + eslint-plugin-react-hooks@7.0.1(eslint@10.1.0(jiti@2.6.1)): dependencies: '@babel/core': 7.28.5 '@babel/parser': 7.28.5 - eslint: 9.39.4(jiti@2.6.1) + eslint: 10.1.0(jiti@2.6.1) hermes-parser: 0.25.1 zod: 4.3.4 zod-validation-error: 4.0.2(zod@4.3.4) transitivePeerDependencies: - supports-color - eslint-plugin-react@7.37.5(eslint@9.39.4(jiti@2.6.1)): + eslint-plugin-react-naming-convention@3.0.0(eslint@10.1.0(jiti@2.6.1))(typescript@5.9.3): + dependencies: + '@eslint-react/ast': 3.0.0(eslint@10.1.0(jiti@2.6.1))(typescript@5.9.3) + '@eslint-react/core': 3.0.0(eslint@10.1.0(jiti@2.6.1))(typescript@5.9.3) + '@eslint-react/shared': 3.0.0(eslint@10.1.0(jiti@2.6.1))(typescript@5.9.3) + '@eslint-react/var': 3.0.0(eslint@10.1.0(jiti@2.6.1))(typescript@5.9.3) + '@typescript-eslint/scope-manager': 8.57.2 + '@typescript-eslint/type-utils': 8.57.2(eslint@10.1.0(jiti@2.6.1))(typescript@5.9.3) + '@typescript-eslint/types': 8.57.2 + '@typescript-eslint/utils': 8.57.2(eslint@10.1.0(jiti@2.6.1))(typescript@5.9.3) + compare-versions: 6.1.1 + eslint: 10.1.0(jiti@2.6.1) + string-ts: 2.3.1 + ts-pattern: 5.9.0 + typescript: 5.9.3 + transitivePeerDependencies: + - supports-color + + eslint-plugin-react-rsc@3.0.0(eslint@10.1.0(jiti@2.6.1))(typescript@5.9.3): + dependencies: + '@eslint-react/ast': 3.0.0(eslint@10.1.0(jiti@2.6.1))(typescript@5.9.3) + '@eslint-react/shared': 3.0.0(eslint@10.1.0(jiti@2.6.1))(typescript@5.9.3) + '@eslint-react/var': 3.0.0(eslint@10.1.0(jiti@2.6.1))(typescript@5.9.3) + '@typescript-eslint/scope-manager': 8.57.2 + '@typescript-eslint/type-utils': 8.57.2(eslint@10.1.0(jiti@2.6.1))(typescript@5.9.3) + '@typescript-eslint/types': 8.57.2 + '@typescript-eslint/utils': 8.57.2(eslint@10.1.0(jiti@2.6.1))(typescript@5.9.3) + eslint: 10.1.0(jiti@2.6.1) + ts-pattern: 5.9.0 + typescript: 5.9.3 + transitivePeerDependencies: + - supports-color + + eslint-plugin-react-web-api@3.0.0(eslint@10.1.0(jiti@2.6.1))(typescript@5.9.3): + dependencies: + '@eslint-react/ast': 3.0.0(eslint@10.1.0(jiti@2.6.1))(typescript@5.9.3) + '@eslint-react/core': 3.0.0(eslint@10.1.0(jiti@2.6.1))(typescript@5.9.3) + '@eslint-react/shared': 3.0.0(eslint@10.1.0(jiti@2.6.1))(typescript@5.9.3) + '@eslint-react/var': 3.0.0(eslint@10.1.0(jiti@2.6.1))(typescript@5.9.3) + '@typescript-eslint/scope-manager': 8.57.2 + '@typescript-eslint/types': 8.57.2 + '@typescript-eslint/utils': 8.57.2(eslint@10.1.0(jiti@2.6.1))(typescript@5.9.3) + birecord: 0.1.1 + eslint: 10.1.0(jiti@2.6.1) + ts-pattern: 5.9.0 + typescript: 5.9.3 + transitivePeerDependencies: + - supports-color + + eslint-plugin-react-x@3.0.0(eslint@10.1.0(jiti@2.6.1))(typescript@5.9.3): + dependencies: + '@eslint-react/ast': 3.0.0(eslint@10.1.0(jiti@2.6.1))(typescript@5.9.3) + '@eslint-react/core': 3.0.0(eslint@10.1.0(jiti@2.6.1))(typescript@5.9.3) + '@eslint-react/shared': 3.0.0(eslint@10.1.0(jiti@2.6.1))(typescript@5.9.3) + '@eslint-react/var': 3.0.0(eslint@10.1.0(jiti@2.6.1))(typescript@5.9.3) + '@typescript-eslint/scope-manager': 8.57.2 + '@typescript-eslint/type-utils': 8.57.2(eslint@10.1.0(jiti@2.6.1))(typescript@5.9.3) + '@typescript-eslint/types': 8.57.2 + '@typescript-eslint/utils': 8.57.2(eslint@10.1.0(jiti@2.6.1))(typescript@5.9.3) + compare-versions: 6.1.1 + eslint: 10.1.0(jiti@2.6.1) + string-ts: 2.3.1 + ts-api-utils: 2.4.0(typescript@5.9.3) + ts-pattern: 5.9.0 + typescript: 5.9.3 + transitivePeerDependencies: + - supports-color + + eslint-plugin-react@7.37.5(eslint@10.1.0(jiti@2.6.1)): dependencies: array-includes: 3.1.9 array.prototype.findlast: 1.2.5 @@ -13575,7 +13494,7 @@ snapshots: array.prototype.tosorted: 1.1.4 doctrine: 2.1.0 es-iterator-helpers: 1.2.1 - eslint: 9.39.4(jiti@2.6.1) + eslint: 10.1.0(jiti@2.6.1) estraverse: 5.3.0 hasown: 2.0.2 jsx-ast-utils: 3.3.5 @@ -13589,10 +13508,10 @@ snapshots: string.prototype.matchall: 4.0.12 string.prototype.repeat: 1.0.0 - eslint-plugin-storybook@10.0.7(eslint@9.39.4(jiti@2.6.1))(storybook@10.2.19(@testing-library/dom@10.4.0)(prettier@3.8.1)(react-dom@19.2.4(react@19.2.4))(react@19.2.4))(typescript@5.9.3): + eslint-plugin-storybook@10.3.3(eslint@10.1.0(jiti@2.6.1))(storybook@10.2.19(@testing-library/dom@10.4.0)(prettier@3.8.1)(react-dom@19.2.4(react@19.2.4))(react@19.2.4))(typescript@5.9.3): dependencies: - '@typescript-eslint/utils': 8.54.0(eslint@9.39.4(jiti@2.6.1))(typescript@5.9.3) - eslint: 9.39.4(jiti@2.6.1) + '@typescript-eslint/utils': 8.54.0(eslint@10.1.0(jiti@2.6.1))(typescript@5.9.3) + eslint: 10.1.0(jiti@2.6.1) storybook: 10.2.19(@testing-library/dom@10.4.0)(prettier@3.8.1)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) transitivePeerDependencies: - supports-color @@ -13603,8 +13522,10 @@ snapshots: esrecurse: 4.3.0 estraverse: 4.3.0 - eslint-scope@8.4.0: + eslint-scope@9.1.2: dependencies: + '@types/esrecurse': 4.3.1 + '@types/estree': 1.0.8 esrecurse: 4.3.0 estraverse: 5.3.0 @@ -13612,69 +13533,27 @@ snapshots: eslint-visitor-keys@4.2.1: {} - eslint@9.39.2(jiti@2.6.1): - dependencies: - '@eslint-community/eslint-utils': 4.9.1(eslint@9.39.2(jiti@2.6.1)) - '@eslint-community/regexpp': 4.12.2 - '@eslint/config-array': 0.21.1 - '@eslint/config-helpers': 0.4.2 - '@eslint/core': 0.17.0 - '@eslint/eslintrc': 3.3.3 - '@eslint/js': 9.39.2 - '@eslint/plugin-kit': 0.4.1 - '@humanfs/node': 0.16.7 - '@humanwhocodes/module-importer': 1.0.1 - '@humanwhocodes/retry': 0.4.3 - '@types/estree': 1.0.8 - ajv: 6.12.6 - chalk: 4.1.2 - cross-spawn: 7.0.6 - debug: 4.4.3 - escape-string-regexp: 4.0.0 - eslint-scope: 8.4.0 - eslint-visitor-keys: 4.2.1 - espree: 10.4.0 - esquery: 1.7.0 - esutils: 2.0.3 - fast-deep-equal: 3.1.3 - file-entry-cache: 8.0.0 - find-up: 5.0.0 - glob-parent: 6.0.2 - ignore: 5.3.2 - imurmurhash: 0.1.4 - is-glob: 4.0.3 - json-stable-stringify-without-jsonify: 1.0.1 - lodash.merge: 4.6.2 - minimatch: 3.1.2 - natural-compare: 1.4.0 - optionator: 0.9.4 - optionalDependencies: - jiti: 2.6.1 - transitivePeerDependencies: - - supports-color + eslint-visitor-keys@5.0.1: {} - eslint@9.39.4(jiti@2.6.1): + eslint@10.1.0(jiti@2.6.1): dependencies: - '@eslint-community/eslint-utils': 4.9.1(eslint@9.39.4(jiti@2.6.1)) + '@eslint-community/eslint-utils': 4.9.1(eslint@10.1.0(jiti@2.6.1)) '@eslint-community/regexpp': 4.12.2 - '@eslint/config-array': 0.21.2 - '@eslint/config-helpers': 0.4.2 - '@eslint/core': 0.17.0 - '@eslint/eslintrc': 3.3.5 - '@eslint/js': 9.39.4 - '@eslint/plugin-kit': 0.4.1 + '@eslint/config-array': 0.23.3 + '@eslint/config-helpers': 0.5.3 + '@eslint/core': 1.1.1 + '@eslint/plugin-kit': 0.6.1 '@humanfs/node': 0.16.7 '@humanwhocodes/module-importer': 1.0.1 '@humanwhocodes/retry': 0.4.3 '@types/estree': 1.0.8 ajv: 6.14.0 - chalk: 4.1.2 cross-spawn: 7.0.6 debug: 4.4.3 escape-string-regexp: 4.0.0 - eslint-scope: 8.4.0 - eslint-visitor-keys: 4.2.1 - espree: 10.4.0 + eslint-scope: 9.1.2 + eslint-visitor-keys: 5.0.1 + espree: 11.2.0 esquery: 1.7.0 esutils: 2.0.3 fast-deep-equal: 3.1.3 @@ -13685,8 +13564,7 @@ snapshots: imurmurhash: 0.1.4 is-glob: 4.0.3 json-stable-stringify-without-jsonify: 1.0.1 - lodash.merge: 4.6.2 - minimatch: 3.1.5 + minimatch: 10.2.4 natural-compare: 1.4.0 optionator: 0.9.4 optionalDependencies: @@ -13700,6 +13578,12 @@ snapshots: acorn-jsx: 5.3.2(acorn@8.16.0) eslint-visitor-keys: 4.2.1 + espree@11.2.0: + dependencies: + acorn: 8.16.0 + acorn-jsx: 5.3.2(acorn@8.16.0) + eslint-visitor-keys: 5.0.1 + esprima@4.0.1: {} esquery@1.7.0: @@ -13910,17 +13794,15 @@ snapshots: flat-cache@4.0.1: dependencies: - flatted: 3.3.3 + flatted: 3.4.2 keyv: 4.5.4 flat-cache@6.1.20: dependencies: cacheable: 2.3.2 - flatted: 3.3.3 + flatted: 3.4.2 hookified: 1.15.1 - flatted@3.3.3: {} - flatted@3.4.2: {} for-each@0.3.5: @@ -14011,6 +13893,8 @@ snapshots: get-east-asian-width@1.4.0: {} + get-east-asian-width@1.5.0: {} + get-intrinsic@1.3.0: dependencies: call-bind-apply-helpers: 1.0.2 @@ -14107,10 +13991,6 @@ snapshots: kind-of: 6.0.3 which: 1.3.1 - globals@14.0.0: {} - - globals@16.4.0: {} - globals@17.3.0: {} globals@17.4.0: {} @@ -14120,7 +14000,7 @@ snapshots: define-properties: 1.2.1 gopd: 1.2.0 - globby@16.1.0: + globby@16.2.0: dependencies: '@sindresorhus/merge-streams': 4.0.0 fast-glob: 3.3.3 @@ -14691,6 +14571,7 @@ snapshots: json5@1.0.2: dependencies: minimist: 1.2.8 + optional: true json5@2.2.3: {} @@ -14719,14 +14600,6 @@ snapshots: kleur@4.1.5: {} - known-css-properties@0.37.0: {} - - language-subtag-registry@0.3.23: {} - - language-tags@1.0.9: - dependencies: - language-subtag-registry: 0.3.23 - levn@0.4.1: dependencies: prelude-ls: 1.2.1 @@ -14789,14 +14662,13 @@ snapshots: lines-and-columns@2.0.4: {} - lint-staged@16.2.7: + lint-staged@16.4.0: dependencies: - commander: 14.0.2 + commander: 14.0.3 listr2: 9.0.5 - micromatch: 4.0.8 - nano-spawn: 2.0.0 - pidtree: 0.6.0 + picomatch: 4.0.3 string-argv: 0.3.2 + tinyexec: 1.0.4 yaml: 2.8.3 listr2@9.0.5: @@ -14825,8 +14697,6 @@ snapshots: dependencies: p-locate: 5.0.0 - lodash.merge@4.6.2: {} - lodash.truncate@4.4.2: {} lodash@4.17.21: {} @@ -14838,7 +14708,7 @@ snapshots: ansi-escapes: 7.2.0 cli-cursor: 5.0.0 slice-ansi: 7.1.2 - strip-ansi: 7.1.2 + strip-ansi: 7.2.0 wrap-ansi: 9.0.2 longest-streak@3.1.0: {} @@ -15086,8 +14956,6 @@ snapshots: dependencies: '@types/mdast': 4.0.4 - mdn-data@2.12.2: {} - mdn-data@2.27.1: {} media-typer@1.1.0: {} @@ -15096,7 +14964,7 @@ snapshots: dependencies: fs-monkey: 1.1.0 - meow@14.0.0: {} + meow@14.1.0: {} merge-descriptors@2.0.0: {} @@ -15410,10 +15278,6 @@ snapshots: - bufferutil - utf-8-validate - minimatch@10.1.1: - dependencies: - '@isaacs/brace-expansion': 5.0.0 - minimatch@10.2.4: dependencies: brace-expansion: 5.0.4 @@ -15430,10 +15294,6 @@ snapshots: dependencies: brace-expansion: 2.0.2 - minimatch@9.0.5: - dependencies: - brace-expansion: 2.0.2 - minimatch@9.0.9: dependencies: brace-expansion: 2.0.2 @@ -15452,12 +15312,8 @@ snapshots: module-details-from-path@1.0.4: {} - mri@1.2.0: {} - ms@2.1.3: {} - nano-spawn@2.0.0: {} - nanoid@3.3.11: {} napi-postinstall@0.3.2: {} @@ -15470,14 +15326,14 @@ snapshots: next-intl-swc-plugin-extractor@4.8.3: {} - next-intl@4.8.3(next@16.1.7(@babel/core@7.28.5)(@opentelemetry/api@1.9.0)(@playwright/test@1.58.2)(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.4(react@19.2.4))(react@19.2.4))(react@19.2.4)(typescript@5.9.3): + next-intl@4.8.3(next@16.1.7(@opentelemetry/api@1.9.0)(@playwright/test@1.58.2)(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.4(react@19.2.4))(react@19.2.4))(react@19.2.4)(typescript@5.9.3): dependencies: '@formatjs/intl-localematcher': 0.8.1 '@parcel/watcher': 2.5.6 '@swc/core': 1.15.18 icu-minify: 4.8.3 negotiator: 1.0.0 - next: 16.1.7(@babel/core@7.28.5)(@opentelemetry/api@1.9.0)(@playwright/test@1.58.2)(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + next: 16.1.7(@opentelemetry/api@1.9.0)(@playwright/test@1.58.2)(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) next-intl-swc-plugin-extractor: 4.8.3 po-parser: 2.1.1 react: 19.2.4 @@ -15492,7 +15348,7 @@ snapshots: react: 19.2.4 react-dom: 19.2.4(react@19.2.4) - next@16.1.7(@babel/core@7.28.5)(@opentelemetry/api@1.9.0)(@playwright/test@1.58.2)(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.4(react@19.2.4))(react@19.2.4): + next@16.1.7(@opentelemetry/api@1.9.0)(@playwright/test@1.58.2)(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.4(react@19.2.4))(react@19.2.4): dependencies: '@next/env': 16.1.7 '@swc/helpers': 0.5.15 @@ -15501,7 +15357,7 @@ snapshots: postcss: 8.4.31 react: 19.2.4 react-dom: 19.2.4(react@19.2.4) - styled-jsx: 5.1.6(@babel/core@7.28.5)(react@19.2.4) + styled-jsx: 5.1.6(react@19.2.4) optionalDependencies: '@next/swc-darwin-arm64': 16.1.7 '@next/swc-darwin-x64': 16.1.7 @@ -15618,6 +15474,7 @@ snapshots: call-bind: 1.0.8 define-properties: 1.2.1 es-abstract: 1.24.1 + optional: true object.values@1.2.1: dependencies: @@ -15781,8 +15638,6 @@ snapshots: picomatch@4.0.3: {} - pidtree@0.6.0: {} - pify@2.3.0: {} piscina@5.1.4: @@ -15886,18 +15741,18 @@ snapshots: postcss-resolve-nested-selector@0.1.6: {} - postcss-safe-parser@7.0.1(postcss@8.5.6): + postcss-safe-parser@7.0.1(postcss@8.5.8): dependencies: - postcss: 8.5.6 + postcss: 8.5.8 postcss-selector-parser@7.1.1: dependencies: cssesc: 3.0.0 util-deprecate: 1.0.2 - postcss-sorting@9.1.0(postcss@8.5.6): + postcss-sorting@10.0.0(postcss@8.5.8): dependencies: - postcss: 8.5.6 + postcss: 8.5.8 postcss-value-parser@4.2.0: {} @@ -16760,10 +16615,6 @@ snapshots: dependencies: tslib: 2.8.1 - sade@1.8.1: - dependencies: - mri: 1.2.0 - safe-array-concat@1.1.3: dependencies: call-bind: 1.0.8 @@ -17003,8 +16854,6 @@ snapshots: stable-hash-x@0.2.0: {} - stable-hash@0.0.5: {} - stack-utils@2.0.6: dependencies: escape-string-regexp: 2.0.0 @@ -17043,6 +16892,8 @@ snapshots: string-argv@0.3.2: {} + string-ts@2.3.1: {} + string-width@4.2.3: dependencies: emoji-regex: 8.0.0 @@ -17065,18 +16916,17 @@ snapshots: dependencies: emoji-regex: 10.6.0 get-east-asian-width: 1.4.0 - strip-ansi: 7.1.2 + strip-ansi: 7.2.0 string-width@8.1.1: dependencies: get-east-asian-width: 1.4.0 - strip-ansi: 7.1.2 + strip-ansi: 7.2.0 - string.prototype.includes@2.0.1: + string-width@8.2.0: dependencies: - call-bind: 1.0.8 - define-properties: 1.2.1 - es-abstract: 1.24.1 + get-east-asian-width: 1.5.0 + strip-ansi: 7.2.0 string.prototype.matchall@4.0.12: dependencies: @@ -17135,10 +16985,6 @@ snapshots: dependencies: ansi-regex: 5.0.1 - strip-ansi@7.1.2: - dependencies: - ansi-regex: 6.2.2 - strip-ansi@7.2.0: dependencies: ansi-regex: 6.2.2 @@ -17155,8 +17001,6 @@ snapshots: strip-indent@4.1.1: {} - strip-json-comments@3.1.1: {} - strnum@2.2.0: {} style-loader@4.0.0(webpack@5.105.4(@swc/core@1.15.11)): @@ -17171,71 +17015,90 @@ snapshots: dependencies: inline-style-parser: 0.2.4 - styled-jsx@5.1.6(@babel/core@7.28.5)(react@19.2.4): + styled-jsx@5.1.6(react@19.2.4): dependencies: client-only: 0.0.1 react: 19.2.4 - optionalDependencies: - '@babel/core': 7.28.5 - stylelint-config-recommended@18.0.0(stylelint@17.1.1(typescript@5.9.3)): + stylelint-config-recommended@18.0.0(stylelint@17.5.0(typescript@5.9.3)): + dependencies: + stylelint: 17.5.0(typescript@5.9.3) + + stylelint-config-recommended@18.0.0(stylelint@17.6.0(typescript@5.9.3)): + dependencies: + stylelint: 17.6.0(typescript@5.9.3) + + stylelint-config-standard@40.0.0(stylelint@17.5.0(typescript@5.9.3)): dependencies: - stylelint: 17.1.1(typescript@5.9.3) + stylelint: 17.5.0(typescript@5.9.3) + stylelint-config-recommended: 18.0.0(stylelint@17.5.0(typescript@5.9.3)) - stylelint-config-standard@40.0.0(stylelint@17.1.1(typescript@5.9.3)): + stylelint-config-standard@40.0.0(stylelint@17.6.0(typescript@5.9.3)): dependencies: - stylelint: 17.1.1(typescript@5.9.3) - stylelint-config-recommended: 18.0.0(stylelint@17.1.1(typescript@5.9.3)) + stylelint: 17.6.0(typescript@5.9.3) + stylelint-config-recommended: 18.0.0(stylelint@17.6.0(typescript@5.9.3)) - stylelint-order@7.0.1(stylelint@17.1.1(typescript@5.9.3)): + stylelint-order@8.1.1(stylelint@17.5.0(typescript@5.9.3)): dependencies: + postcss: 8.5.8 + postcss-sorting: 10.0.0(postcss@8.5.8) + stylelint: 17.5.0(typescript@5.9.3) + + stylelint-order@8.1.1(stylelint@17.6.0(typescript@5.9.3)): + dependencies: + postcss: 8.5.8 + postcss-sorting: 10.0.0(postcss@8.5.8) + stylelint: 17.6.0(typescript@5.9.3) + + stylelint-selector-bem-pattern@4.0.1(stylelint@17.5.0(typescript@5.9.3)): + dependencies: + lodash: 4.17.21 postcss: 8.5.6 - postcss-sorting: 9.1.0(postcss@8.5.6) - stylelint: 17.1.1(typescript@5.9.3) + postcss-bem-linter: 4.0.1(postcss@8.5.6) + stylelint: 17.5.0(typescript@5.9.3) - stylelint-selector-bem-pattern@4.0.1(stylelint@17.1.1(typescript@5.9.3)): + stylelint-selector-bem-pattern@4.0.1(stylelint@17.6.0(typescript@5.9.3)): dependencies: lodash: 4.17.21 postcss: 8.5.6 postcss-bem-linter: 4.0.1(postcss@8.5.6) - stylelint: 17.1.1(typescript@5.9.3) + stylelint: 17.6.0(typescript@5.9.3) - stylelint@17.1.1(typescript@5.9.3): + stylelint@17.5.0(typescript@5.9.3): dependencies: + '@csstools/css-calc': 3.1.1(@csstools/css-parser-algorithms@4.0.0(@csstools/css-tokenizer@4.0.0))(@csstools/css-tokenizer@4.0.0) '@csstools/css-parser-algorithms': 4.0.0(@csstools/css-tokenizer@4.0.0) - '@csstools/css-syntax-patches-for-csstree': 1.0.26 + '@csstools/css-syntax-patches-for-csstree': 1.1.1(css-tree@3.2.1) '@csstools/css-tokenizer': 4.0.0 '@csstools/media-query-list-parser': 5.0.0(@csstools/css-parser-algorithms@4.0.0(@csstools/css-tokenizer@4.0.0))(@csstools/css-tokenizer@4.0.0) '@csstools/selector-resolve-nested': 4.0.0(postcss-selector-parser@7.1.1) '@csstools/selector-specificity': 6.0.0(postcss-selector-parser@7.1.1) - balanced-match: 3.0.1 colord: 2.9.3 - cosmiconfig: 9.0.0(typescript@5.9.3) - css-functions-list: 3.2.3 - css-tree: 3.1.0 + cosmiconfig: 9.0.1(typescript@5.9.3) + css-functions-list: 3.3.3 + css-tree: 3.2.1 debug: 4.4.3 fast-glob: 3.3.3 fastest-levenshtein: 1.0.16 file-entry-cache: 11.1.2 global-modules: 2.0.0 - globby: 16.1.0 + globby: 16.2.0 globjoin: 0.1.4 html-tags: 5.1.0 ignore: 7.0.5 import-meta-resolve: 4.2.0 imurmurhash: 0.1.4 is-plain-object: 5.0.0 - known-css-properties: 0.37.0 mathml-tag-names: 4.0.0 - meow: 14.0.0 + meow: 14.1.0 micromatch: 4.0.8 normalize-path: 3.0.0 picocolors: 1.1.1 - postcss: 8.5.6 - postcss-safe-parser: 7.0.1(postcss@8.5.6) + postcss: 8.5.8 + postcss-safe-parser: 7.0.1(postcss@8.5.8) postcss-selector-parser: 7.1.1 postcss-value-parser: 4.2.0 - string-width: 8.1.1 + string-width: 8.2.0 supports-hyperlinks: 4.4.0 svg-tags: 1.0.0 table: 6.9.0 @@ -17244,6 +17107,48 @@ snapshots: - supports-color - typescript + stylelint@17.6.0(typescript@5.9.3): + dependencies: + '@csstools/css-calc': 3.1.1(@csstools/css-parser-algorithms@4.0.0(@csstools/css-tokenizer@4.0.0))(@csstools/css-tokenizer@4.0.0) + '@csstools/css-parser-algorithms': 4.0.0(@csstools/css-tokenizer@4.0.0) + '@csstools/css-syntax-patches-for-csstree': 1.1.1(css-tree@3.2.1) + '@csstools/css-tokenizer': 4.0.0 + '@csstools/media-query-list-parser': 5.0.0(@csstools/css-parser-algorithms@4.0.0(@csstools/css-tokenizer@4.0.0))(@csstools/css-tokenizer@4.0.0) + '@csstools/selector-resolve-nested': 4.0.0(postcss-selector-parser@7.1.1) + '@csstools/selector-specificity': 6.0.0(postcss-selector-parser@7.1.1) + colord: 2.9.3 + cosmiconfig: 9.0.1(typescript@5.9.3) + css-functions-list: 3.3.3 + css-tree: 3.2.1 + debug: 4.4.3 + fast-glob: 3.3.3 + fastest-levenshtein: 1.0.16 + file-entry-cache: 11.1.2 + global-modules: 2.0.0 + globby: 16.2.0 + globjoin: 0.1.4 + html-tags: 5.1.0 + ignore: 7.0.5 + import-meta-resolve: 4.2.0 + is-plain-object: 5.0.0 + mathml-tag-names: 4.0.0 + meow: 14.1.0 + micromatch: 4.0.8 + normalize-path: 3.0.0 + picocolors: 1.1.1 + postcss: 8.5.8 + postcss-safe-parser: 7.0.1(postcss@8.5.8) + postcss-selector-parser: 7.1.1 + postcss-value-parser: 4.2.0 + string-width: 8.2.0 + supports-hyperlinks: 4.4.0 + svg-tags: 1.0.0 + table: 6.9.0 + write-file-atomic: 7.0.1 + transitivePeerDependencies: + - supports-color + - typescript + supports-color@10.2.2: {} supports-color@7.2.0: @@ -17283,7 +17188,7 @@ snapshots: table@6.9.0: dependencies: - ajv: 8.17.1 + ajv: 8.18.0 lodash.truncate: 4.4.2 slice-ansi: 4.0.0 string-width: 4.2.3 @@ -17325,6 +17230,8 @@ snapshots: tiny-invariant@1.3.3: {} + tinyexec@1.0.4: {} + tinyglobby@0.2.15: dependencies: fdir: 6.5.0(picomatch@4.0.3) @@ -17368,6 +17275,8 @@ snapshots: ts-dedent@2.2.0: {} + ts-pattern@5.9.0: {} + ts-tqdm@0.8.6: {} tsconfig-paths@3.15.0: @@ -17376,6 +17285,7 @@ snapshots: json5: 1.0.2 minimist: 1.2.8 strip-bom: 3.0.0 + optional: true tsconfig-paths@4.2.0: dependencies: @@ -17478,24 +17388,13 @@ snapshots: typedarray@0.0.6: {} - typescript-eslint@8.54.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3): - dependencies: - '@typescript-eslint/eslint-plugin': 8.54.0(@typescript-eslint/parser@8.54.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3))(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3) - '@typescript-eslint/parser': 8.54.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3) - '@typescript-eslint/typescript-estree': 8.54.0(typescript@5.9.3) - '@typescript-eslint/utils': 8.54.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3) - eslint: 9.39.2(jiti@2.6.1) - typescript: 5.9.3 - transitivePeerDependencies: - - supports-color - - typescript-eslint@8.54.0(eslint@9.39.4(jiti@2.6.1))(typescript@5.9.3): + typescript-eslint@8.57.2(eslint@10.1.0(jiti@2.6.1))(typescript@5.9.3): dependencies: - '@typescript-eslint/eslint-plugin': 8.54.0(@typescript-eslint/parser@8.54.0(eslint@9.39.4(jiti@2.6.1))(typescript@5.9.3))(eslint@9.39.4(jiti@2.6.1))(typescript@5.9.3) - '@typescript-eslint/parser': 8.54.0(eslint@9.39.4(jiti@2.6.1))(typescript@5.9.3) - '@typescript-eslint/typescript-estree': 8.54.0(typescript@5.9.3) - '@typescript-eslint/utils': 8.54.0(eslint@9.39.4(jiti@2.6.1))(typescript@5.9.3) - eslint: 9.39.4(jiti@2.6.1) + '@typescript-eslint/eslint-plugin': 8.57.2(@typescript-eslint/parser@8.57.2(eslint@10.1.0(jiti@2.6.1))(typescript@5.9.3))(eslint@10.1.0(jiti@2.6.1))(typescript@5.9.3) + '@typescript-eslint/parser': 8.57.2(eslint@10.1.0(jiti@2.6.1))(typescript@5.9.3) + '@typescript-eslint/typescript-estree': 8.57.2(typescript@5.9.3) + '@typescript-eslint/utils': 8.57.2(eslint@10.1.0(jiti@2.6.1))(typescript@5.9.3) + eslint: 10.1.0(jiti@2.6.1) typescript: 5.9.3 transitivePeerDependencies: - supports-color @@ -17753,13 +17652,6 @@ snapshots: utila@0.4.0: {} - uvu@0.5.6: - dependencies: - dequal: 2.0.3 - diff: 5.2.0 - kleur: 4.1.5 - sade: 1.8.1 - validate-npm-package-license@3.0.4: dependencies: spdx-correct: 3.2.0 @@ -18005,7 +17897,7 @@ snapshots: dependencies: ansi-styles: 6.2.3 string-width: 7.2.0 - strip-ansi: 7.1.2 + strip-ansi: 7.2.0 wrappy@1.0.2: {} @@ -18014,6 +17906,10 @@ snapshots: imurmurhash: 0.1.4 signal-exit: 4.1.0 + write-file-atomic@7.0.1: + dependencies: + signal-exit: 4.1.0 + ws@8.18.0: {} ws@8.19.0: {} @@ -18082,4 +17978,6 @@ snapshots: zod@4.3.4: {} + zod@4.3.6: {} + zwitch@2.0.4: {}
{col}{col}
{cell}
{cell}