diff --git a/.gitignore b/.gitignore index 51a72bd9d..9a2c9a2a5 100644 --- a/.gitignore +++ b/.gitignore @@ -6,4 +6,5 @@ npm-debug.log .idea/ __pycache__ .turbo -.next \ No newline at end of file +.next +.vercel diff --git a/packages/nameguard-sdk/examples/with-nextjs/.eslintrc.json b/apps/examples.nameguard.io/.eslintrc.json similarity index 100% rename from packages/nameguard-sdk/examples/with-nextjs/.eslintrc.json rename to apps/examples.nameguard.io/.eslintrc.json diff --git a/packages/nameguard-sdk/examples/with-nextjs/.gitignore b/apps/examples.nameguard.io/.gitignore similarity index 96% rename from packages/nameguard-sdk/examples/with-nextjs/.gitignore rename to apps/examples.nameguard.io/.gitignore index fd3dbb571..bad92b658 100644 --- a/packages/nameguard-sdk/examples/with-nextjs/.gitignore +++ b/apps/examples.nameguard.io/.gitignore @@ -33,4 +33,3 @@ yarn-error.log* # typescript *.tsbuildinfo -next-env.d.ts diff --git a/packages/nameguard-sdk/examples/with-nextjs/README.md b/apps/examples.nameguard.io/README.md similarity index 100% rename from packages/nameguard-sdk/examples/with-nextjs/README.md rename to apps/examples.nameguard.io/README.md diff --git a/apps/examples.nameguard.io/next-env.d.ts b/apps/examples.nameguard.io/next-env.d.ts new file mode 100644 index 000000000..4f11a03dc --- /dev/null +++ b/apps/examples.nameguard.io/next-env.d.ts @@ -0,0 +1,5 @@ +/// +/// + +// NOTE: This file should not be edited +// see https://nextjs.org/docs/basic-features/typescript for more information. diff --git a/packages/nameguard-sdk/examples/with-nextjs/next.config.js b/apps/examples.nameguard.io/next.config.js similarity index 100% rename from packages/nameguard-sdk/examples/with-nextjs/next.config.js rename to apps/examples.nameguard.io/next.config.js diff --git a/packages/nameguard-sdk/examples/with-nextjs/package.json b/apps/examples.nameguard.io/package.json similarity index 72% rename from packages/nameguard-sdk/examples/with-nextjs/package.json rename to apps/examples.nameguard.io/package.json index 62916b158..262d05f9e 100644 --- a/packages/nameguard-sdk/examples/with-nextjs/package.json +++ b/apps/examples.nameguard.io/package.json @@ -1,6 +1,5 @@ { - "name": "nextjs-sdk", - "version": "0.1.2", + "name": "nameguard-examples", "private": true, "scripts": { "dev": "next dev", @@ -11,9 +10,10 @@ "dependencies": { "@headlessui-float/react": "0.11.4", "@headlessui/react": "1.7.17", - "@namehash/nameguard": "0.0.17", + "@namehash/nameguard": "workspace:*", + "@namehash/nameguard-react": "workspace:*", "classcat": "5.0.4", - "next": "14.0.2", + "next": "14.1.0", "react": "^18", "react-dom": "^18" }, @@ -22,8 +22,8 @@ "@types/react": "^18", "@types/react-dom": "^18", "autoprefixer": "^10.0.1", - "eslint": "^8", - "eslint-config-next": "14.0.2", + "eslint": "^8.56.0", + "eslint-config-next": "14.2.3", "postcss": "^8", "tailwindcss": "^3.3.0", "typescript": "^5" diff --git a/packages/nameguard-sdk/examples/with-nextjs/postcss.config.js b/apps/examples.nameguard.io/postcss.config.cjs similarity index 67% rename from packages/nameguard-sdk/examples/with-nextjs/postcss.config.js rename to apps/examples.nameguard.io/postcss.config.cjs index 33ad091d2..85f717cc0 100644 --- a/packages/nameguard-sdk/examples/with-nextjs/postcss.config.js +++ b/apps/examples.nameguard.io/postcss.config.cjs @@ -1,6 +1,6 @@ module.exports = { plugins: { tailwindcss: {}, - autoprefixer: {}, - }, + autoprefixer: {} + } } diff --git a/packages/nameguard-sdk/examples/with-nextjs/src/app/address/[address]/loading.tsx b/apps/examples.nameguard.io/src/app/address/[address]/loading.tsx similarity index 100% rename from packages/nameguard-sdk/examples/with-nextjs/src/app/address/[address]/loading.tsx rename to apps/examples.nameguard.io/src/app/address/[address]/loading.tsx diff --git a/packages/nameguard-sdk/examples/with-nextjs/src/app/address/[address]/page.tsx b/apps/examples.nameguard.io/src/app/address/[address]/page.tsx similarity index 92% rename from packages/nameguard-sdk/examples/with-nextjs/src/app/address/[address]/page.tsx rename to apps/examples.nameguard.io/src/app/address/[address]/page.tsx index 230b437af..d2a883e51 100644 --- a/packages/nameguard-sdk/examples/with-nextjs/src/app/address/[address]/page.tsx +++ b/apps/examples.nameguard.io/src/app/address/[address]/page.tsx @@ -1,6 +1,6 @@ /* eslint-disable @next/next/no-img-element */ import { nameguard } from "@namehash/nameguard"; -import { ImpersonationShield } from "../../components/ImpersonationShield"; +import { ImpersonationReport } from "../../components/ImpersonationReport"; import { Avatar } from "@/app/components/Avatar"; export default async function Page({ @@ -22,7 +22,7 @@ export default async function Page({
{data.display_name} - +
{address} diff --git a/packages/nameguard-sdk/examples/with-nextjs/src/app/components/Avatar.tsx b/apps/examples.nameguard.io/src/app/components/Avatar.tsx similarity index 100% rename from packages/nameguard-sdk/examples/with-nextjs/src/app/components/Avatar.tsx rename to apps/examples.nameguard.io/src/app/components/Avatar.tsx diff --git a/packages/nameguard-sdk/examples/with-nextjs/src/app/components/ImpersonationShield.tsx b/apps/examples.nameguard.io/src/app/components/ImpersonationReport.tsx similarity index 52% rename from packages/nameguard-sdk/examples/with-nextjs/src/app/components/ImpersonationShield.tsx rename to apps/examples.nameguard.io/src/app/components/ImpersonationReport.tsx index 0df6f669a..c109de319 100644 --- a/packages/nameguard-sdk/examples/with-nextjs/src/app/components/ImpersonationShield.tsx +++ b/apps/examples.nameguard.io/src/app/components/ImpersonationReport.tsx @@ -1,34 +1,21 @@ "use client"; import { Rating, type SecurePrimaryNameResult } from "@namehash/nameguard"; +import { + RatingIcon, + RatingIconSize, + RatingLoadingIcon, + ratingTextColor, +} from "@namehash/nameguard-react"; import cc from "classcat"; import { Tooltip } from "./Tooltip"; -import { AlertIcon } from "./icons/Alert"; -import { WarnIcon } from "./icons/Warn"; -function textColor(rating?: Rating) { - switch (rating) { - case Rating.alert: { - return "text-red-700"; - } - case Rating.pass: { - return "text-emerald-600"; - } - case Rating.warn: { - return "text-yellow-600"; - } - default: { - return "text-gray-500"; - } - } -} - -type ImpersonationShieldProps = { +type ImpersonationReportProps = { data?: SecurePrimaryNameResult; }; -export function ImpersonationShield({ data }: ImpersonationShieldProps) { +export function ImpersonationReport({ data }: ImpersonationReportProps) { if ( !data || data?.impersonation_status === null || @@ -36,36 +23,51 @@ export function ImpersonationShield({ data }: ImpersonationShieldProps) { ) return null; - const { display_name, nameguard_result } = data; + const { nameguard_result } = data; - const textClass = cc(["font-semibold", textColor(nameguard_result?.rating)]); + if (!nameguard_result) return ; - const Icon = nameguard_result?.rating === Rating.warn ? WarnIcon : AlertIcon; + const textClass = cc([ + "font-semibold", + ratingTextColor(nameguard_result.rating), + ]); return ( - }> + + } + >
- +
- {nameguard_result?.highest_risk?.check_name} + {nameguard_result.highest_risk?.check_name} - {nameguard_result?.risk_count} risk - {(nameguard_result?.risk_count || 0) >= 0 && "s"} detected + {nameguard_result.risk_count} risk + {(nameguard_result.risk_count || 0) >= 0 && "s"} detected
- {nameguard_result?.highest_risk?.message} + {nameguard_result.highest_risk?.message}
+/// + +// NOTE: This file should not be edited +// see https://nextjs.org/docs/basic-features/typescript for more information. diff --git a/apps/website/package.json b/apps/website/package.json index d2362cacc..a6ed47169 100644 --- a/apps/website/package.json +++ b/apps/website/package.json @@ -23,6 +23,7 @@ "next": "14.1.4", "react": "18.2.0", "react-dom": "18.2.0", + "sharp": "^0.33.3", "sugar-high": "0.5.5" }, "devDependencies": { @@ -30,8 +31,8 @@ "@types/react": "latest", "@types/react-dom": "latest", "autoprefixer": "latest", - "eslint": "latest", - "eslint-config-next": "latest", + "eslint": "^8.56.0", + "eslint-config-next": "14.2.3", "postcss": "latest", "tailwind-scrollbar-hide": "1.1.7", "tailwindcss": "latest", diff --git a/apps/website/src/app/atoms/icons/MagnifyingGlassIcon.tsx b/apps/website/src/app/atoms/icons/MagnifyingGlassIcon.tsx index 25e2d3433..be951c51c 100644 --- a/apps/website/src/app/atoms/icons/MagnifyingGlassIcon.tsx +++ b/apps/website/src/app/atoms/icons/MagnifyingGlassIcon.tsx @@ -1,4 +1,4 @@ -export const MagnifyingGlassIcon = (props: any) => ( +export const MagnifyingGlassIcon = (props: React.SVGProps) => ( {props.text}; +} + +export function DevelopersSection() { + const iconWrapperStyle = + "w-11 h-11 p-[10px] flex justify-center items-center flex-shrink-0 bg-black rounded-lg"; + const cellStyle = + "group w-full md:w-[602px] h-full sm:min-w-[602px] max-w-[602px] box-border flex flex-row items-start justify-start bg-white p-5 gap-4 rounded-xl border border-gray-200"; + const cellTextStyle = + "self-stretch not-italic z-10 text-gray-500 text-left text-sm leading-6 font-normal"; + const headerStyle = + "self-stretch not-italic z-10 text-black text-left text-sm leading-6 font-semibold whitespace-nowrap"; + const headerWrapperStyle = + "flex flex-row items-center justify-start gap-x-2 gap-y-1 flex-wrap"; + const redirectStyle = + "hidden gt_mobile:group-hover:block absolute z-10 top-[18px] right-[18px]"; + const hoverCellStyle = cc([ + cellStyle, + "gt_mobile:hover:cursor-pointer gt_mobile:hover:border-gray-300 gt_mobile:hover:shadow-sm transition relative", + ]); + + const devElements: ListSectionElement[] = [ + { + header: ( +
+

NameGuard library

+
+ ), + text: Security "x-ray" for ENS names., + icon: ( +
+ +
+ ), + link: "https://github.com/namehash/nameguard/tree/main/api", + }, + { + header: ( +
+

NameGuard Client SDK

+
+ ), + text: ( + Thin client SDK for making API calls to NameGuard. + ), + icon: ( +
+ +
+ ), + link: "https://github.com/namehash/nameguard/tree/main/packages/sdk", + }, + { + header: ( +
+

NameGuard React UI Kit

+ +
+ ), + text: ( + + React components for building nice interfaces with NameGuard data. + + ), + icon: ( +
+ +
+ ), + link: "https://github.com/namehash/nameguard/tree/main/packages/nameguard-react", + }, + { + header: ( +
+

Figma UI kit

+
+ ), + text: ( + + Customize NameKit user interfaces to match your unique app. + + ), + icon: ( +
+ +
+ ), + link: "https://www.figma.com/file/aVlWccl7J2MyP8IE56lDMb/NameGuard-UI-Kit---23-11-2023", + }, + { + header: ( +
+

ENS Label Inspector

+
+ ), + text: Detailed inspection of labels in ENS names., + icon: ( +
+ +
+ ), + link: "https://github.com/namehash/ens-label-inspector", + }, + { + header: ( +
+

ENS Font Data

+
+ ), + text: ( + + Metadata for graphemes that may appear in ENS names. + + ), + icon: ( +
+ +
+ ), + link: "https://github.com/namehash/ens-font-data", + }, + { + header: ( +
+

ENS Normalize Python

+
+ ), + text: ( + + Python implementation of the ENS name normalization standard. + + ), + icon: ( +
+ +
+ ), + link: "https://github.com/namehash/ens-normalize-python", + }, + { + header: ( +
+

ENS Name Parser

+ +
+ ), + text: ( + Utilities for parsing ENS names from user input. + ), + icon: ( +
+ +
+ ), + link: "https://github.com/namehash/ens-utils/blob/main/README.md", + }, + { + header: ( +
+

Open public API

+
+ ), + text: ( + + Connect to the NameGuard instance running in AWS for community use. + + ), + icon: ( +
+ +
+ ), + link: "https://api.nameguard.io/docs", + }, + { + header: ( +
+

NameGuard DevOps Scripts

+
+ ), + text: ( + + Easily deploy your own instance of NameGuard into your own AWS cloud. + + ), + icon: ( +
+ +
+ ), + link: "https://github.com/namehash/nameguard/blob/main/api/serverless.yml", + }, + { + header: ( +
+

Detailed documentation

+ +
+ ), + text: ( + + Step-by-step guides to help developers make the most of NameGuard. + + ), + icon: ( +
+ +
+ ), + }, + { + header: ( +
+

ENS Webfont

+ +
+ ), + text: ( + + Increase rendering support for emojis and other special graphemes. + + ), + icon: ( +
+ +
+ ), + link: "https://github.com/namehash/nameguard/tree/main/packages/ens-webfont", + }, + ]; + + return ( +
+
+
+ + + Developer resources + +
+

+ NameGuard 🤝 Developers +

+

+ All resources are open sourced and freely licensed for the community. +

+
+
+
+ ); +} + +export function ChecksSection() { + const checkCircle = ( +
+ +
+ ); + const questionmarkCircle = ( +
+ +
+ ); + + const headerStyle = + "self-stretch not-italic z-10 text-black text-left text-sm leading-6 font-semibold"; + + const headerWrapperStyle = "flex flex-row items-center justify-start gap-2"; + + const checkElements: ListSectionElement[] = [ + { + header:

Potential Impersonation

, + text: ( + + Protect from inbound messages that may appear to be from someone you + trust. + + ), + icon: checkCircle, + }, + { + header:

Confusable Characters

, + text: ( + + Identify characters with a higher risk for visual confusion with other + characters. + + ), + icon: checkCircle, + }, + { + header:

Cross-Device Font Support

, + text: ( + + Detect if characters have limited support to be viewed on popular + operating systems. + + ), + icon: checkCircle, + }, + { + header:

Invisible Characters

, + text: ( + + Reveal any invisible characters that might otherwise be hiding in a + name. + + ), + icon: checkCircle, + }, + { + header:

Typing Difficulty

, + text: ( + + Offer usability suggestions for users picking a name to register. + + ), + icon: checkCircle, + }, + { + header:

Mixed Scripts

, + text: ( + + Detect higher risk combinations of multiple scripts in a name. + + ), + icon: checkCircle, + }, + { + header:

NameWrapper Compatibility

, + text: ( + + Warn if the name being registered cannot be supported by the ENS Name + Wrapper. + + ), + icon: checkCircle, + }, + { + header:

ENSIP-15 Name Normalization

, + text: ( + + Check if the name is normalized according to ENSIP-15. + + ), + icon: checkCircle, + }, + { + header:

DNS Punycode Compatibility

, + text: ( + + Warn during registration if a name will have DNS compatibility + limitations. + + ), + icon: checkCircle, + }, + { + header:

Unknown Labels

, + text: ( + + Identify if the name contains unknown labels (e.g. [0123abcd...].eth). + + ), + icon: checkCircle, + }, + { + header: ( +
+

Name Ruggability

+ +
+ ), + text: ( + + Warn buyers on secondary markets if a name can potentially be taken + away. + + ), + icon: checkCircle, + }, + { + header: ( +
+

NameWrapper Fuses

+ +
+ ), + text: ( + + Protect buyers on secondary markets from NameWrapper fuse + configurations. + + ), + icon: checkCircle, + }, + { + header:

Have a check suggestion?

, + text: ( + + + Reach out to us + {" "} + with your suggestions about which checks you want us to add + + ), + icon: questionmarkCircle, + }, + ]; + + const cellStyle = + "z-20 sm:w-[394px] box-border flex flex-row items-center justify-start bg-white p-5 gap-4 rounded-md border border-gray-200"; + const cellTextStyle = + "self-stretch not-italic z-10 text-gray-500 text-left text-sm leading-6 font-normal"; + + return ( +
+
+
+ + + Advanced inspections + +
+

+ Checks NameGuard Performs +

+

+ Elevate your security standards. Get next-level protection with a + rigorous 12-Point inspection on ENS names, meticulously scrutinizing + each label and grapheme for enhanced safety. +

+
+
+
+
+ {checkElements.map((elem, idx) => { + return ( + idx < checkElements.length - 1 && ( +
+ {elem.icon} +
+ {elem.header} +

{elem.text}

+
+
+ ) + ); + })} +
+
+ {checkElements[checkElements.length - 1].icon} +
+ {checkElements[checkElements.length - 1].header} +

+ {checkElements[checkElements.length - 1].text} +

+
+
+
+
+ ); +} diff --git a/apps/website/src/app/components/Header.tsx b/apps/website/src/app/components/Header.tsx index b10dc88bc..c151aa744 100644 --- a/apps/website/src/app/components/Header.tsx +++ b/apps/website/src/app/components/Header.tsx @@ -25,7 +25,7 @@ export const Header = () => {
-
+
diff --git a/apps/website/src/app/components/Hero.tsx b/apps/website/src/app/components/Hero.tsx index d1c07ca86..e0640a26c 100644 --- a/apps/website/src/app/components/Hero.tsx +++ b/apps/website/src/app/components/Hero.tsx @@ -54,17 +54,17 @@ export function Hero() { - + - + - + - + @@ -84,7 +84,7 @@ export function Hero() { ); } -const WarningShieldOrangeOutline = (props: any) => ( +const WarningShieldOrangeOutline = (props: React.SVGProps) => ( ( ); -const WarningShieldRedOutline = (props: any) => ( +const WarningShieldRedOutline = (props: React.SVGProps) => ( ( ); -const CheckShieldOutline = (props: any) => ( +const CheckShieldOutline = (props: React.SVGProps) => ( ( ); -const CheckShieldLarge = (props: any) => ( +const CheckShieldLarge = (props: React.SVGProps) => ( ( ); -const WarningShieldLarge = (props: any) => ( +const WarningShieldLarge = (props: React.SVGProps) => ( ( ); -const ErrorShieldLarge = (props: any) => ( +const UnknownShieldLargeIcon = (props: React.SVGProps) => ( ( ); -const WarningShieldSmall = (props: any) => ( +const WarningShieldSmall = (props: React.SVGProps) => ( ( ); -const ErrorShieldSmall = (props: any) => ( +const UnknownShieldSmallIcon = (props: React.SVGProps) => ( parseName(n)); - const data = await nameguard.bulkInspectNames( - parsedNames.map((n) => n.outputName.name), - ); + const ensNames = examples.map((n) => buildENSName(n)); + const data = await nameguard.bulkInspectNames(examples); return (
+ {/* + This carousel component needs lots of badges in order + to look good in the Ui, we are, then, duplicating the + badges displayed to enhance badges number. + */} {data?.results?.map((report, index) => ( - + ))} + {/* + This carousel component needs lots of badges in order + to look good in the Ui, we are, then, duplicating the + badges displayed to enhance badges number. + */} {data?.results?.map((report, index) => ( - + ))}
); diff --git a/apps/website/src/app/components/HeroNameBadge.tsx b/apps/website/src/app/components/HeroNameBadge.tsx deleted file mode 100644 index cb4e81e52..000000000 --- a/apps/website/src/app/components/HeroNameBadge.tsx +++ /dev/null @@ -1,9 +0,0 @@ -"use client"; - -import { NameBadge, useSearchStore } from "@namehash/nameguard-react"; - -export function HeroNameBadge(props: any) { - const { openModal } = useSearchStore(); - - return openModal(props.data.name)} />; -} diff --git a/apps/website/src/app/docs/check-result-code-icon/page.tsx b/apps/website/src/app/docs/check-result-code-icon/page.tsx new file mode 100644 index 000000000..bd4545744 --- /dev/null +++ b/apps/website/src/app/docs/check-result-code-icon/page.tsx @@ -0,0 +1,172 @@ +"use client"; + +import { CheckResultCode } from "@namehash/nameguard"; +import { CheckResultCodeIcon } from "@namehash/nameguard-react"; + +export default function CheckResultCodeIconsDocsPage() { + return ( +
+
+

+ {"<"}CheckResultCodeIcon {"/>"} documentation +

+ +
+
+
Pass
+
Warn
+
Alert
+
Info
+
Skip
+
+ +
+
+
+
{""}
+
+ +
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+
+
+
{""}
+
+ +
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+
+
+
{``}
+
+ +
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+
+
+
{` alert('click')} />`}
+
+ +
+ alert("click")} + code={CheckResultCode.pass} + className="cursor-pointer" + isInteractive={true} + /> +
+
+ alert("click")} + code={CheckResultCode.warn} + className="cursor-pointer" + isInteractive={true} + /> +
+
+ alert("click")} + code={CheckResultCode.alert} + className="cursor-pointer" + isInteractive={true} + /> +
+
+ alert("click")} + code={CheckResultCode.info} + className="cursor-pointer" + isInteractive={true} + /> +
+
+ alert("click")} + code={CheckResultCode.skip} + className="cursor-pointer" + isInteractive={true} + /> +
+
+
+
+
+ ); +} diff --git a/apps/website/src/app/docs/page.tsx b/apps/website/src/app/docs/page.tsx new file mode 100644 index 000000000..d98df21ef --- /dev/null +++ b/apps/website/src/app/docs/page.tsx @@ -0,0 +1,25 @@ +"use client"; + +import Link from "next/link"; + +export default function DocsPage() { + return ( +
+

+ @namehash/nameguard-react 's components documentation +

+ + +
+ ); +} diff --git a/apps/website/src/app/docs/rating-icon/page.tsx b/apps/website/src/app/docs/rating-icon/page.tsx new file mode 100644 index 000000000..d36ab0d7f --- /dev/null +++ b/apps/website/src/app/docs/rating-icon/page.tsx @@ -0,0 +1,116 @@ +"use client"; + +import { Rating } from "@namehash/nameguard"; +import { RatingIcon, RatingIconSize } from "@namehash/nameguard-react"; + +export default function RatingIconsDocsPage() { + return ( +
+
+

+ {"<"}RatingIcon {"/>"} documentation +

+ +
+
+
Rating.pass
+
Rating.warn
+
Rating.alert
+
+ +
+
+
+
{``}
+
+ +
+ +
+
+ +
+
+ +
+
+ +
+
+
{``}
+
+ +
+ +
+
+ +
+
+ +
+
+ +
+
+
{``}
+
+ +
+ +
+
+ +
+
+ +
+
+ +
+
+
{``}
+
+ +
+ +
+
+ +
+
+ +
+
+
+
+
{``}
+
+ +
+ +
+
+ +
+
+ +
+
+
+
+
+ ); +} diff --git a/apps/website/src/app/docs/report/page.tsx b/apps/website/src/app/docs/report/page.tsx new file mode 100644 index 000000000..ff4f3b826 --- /dev/null +++ b/apps/website/src/app/docs/report/page.tsx @@ -0,0 +1,436 @@ +"use client"; + +import { ENSName, buildENSName } from "@namehash/ens-utils"; +import { + CheckResultCode, + ConsolidatedNameGuardReport, + Normalization, + Rating, +} from "@namehash/nameguard"; +import { RatingIconSize } from "@namehash/nameguard-react"; +import { ReportBadge, ReportIcon } from "@namehash/nameguard-react"; + +export default function ReportDocsPage() { + return ( +
+
+

+ {"<"}ReportIcon {"/>"} documentation +

+ +
+
+
+
Success
+
Warn
+
Alert
+
hadLoadingError
+
no data
+
+
+ +
+
+
+
{""}
+
+ +
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+
+
+
{""}
+
+ +
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+
+
+
{""}
+
+ +
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+
+
+
{""}
+
+ +
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+
+
+
{""}
+
+ +
+ alert(ensName.name)} + /> +
+
+ alert(ensName.name)} + /> +
+
+ alert(ensName.name)} + /> +
+
+ alert(ensName.name)} + /> +
+
+ alert(ensName.name)} + /> +
+
+
+ +

+ {"<"}ReportBadge {"/>"} documentation +

+ +
+
+
+
Success
+
Warn
+
Alert
+
hadLoadingError
+
no data
+
+
+ +
+
+
+
{""}
+
+
+ +
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+
+
{""}
+
+
+ +
+ alert(ensName.name)} + /> +
+
+ alert(ensName.name)} + /> +
+
+ alert(ensName.name)} + /> +
+
+ alert(ensName.name)} + /> +
+
+ alert(ensName.name)} + /> +
+
+
+
+
+
{""}
+
+
+ +
+ alert(ensName.name)} + /> +
+
+ alert(ensName.name)} + /> +
+
+ alert(ensName.name)} + /> +
+
+ alert(ensName.name)} + /> +
+
+ alert(ensName.name)} + /> +
+
+
+
+ ); +} + +const getExampleReportName = (rating?: Rating): ENSName => { + if (!rating) { + return buildENSName(getExampleReportData(Rating.pass).name); + } + + return buildENSName(getExampleReportData(rating).name); +}; + +const getExampleReportData = (rating: Rating): ConsolidatedNameGuardReport => { + switch (rating) { + case Rating.pass: + return { + rating: Rating.pass, + risk_count: 0, + highest_risk: null, + name: "lightwalker.eth", + namehash: + "0x5c1f4e4189d173a562af8d27771e2a1394ccbfa466f0e72b429dd317afce4c06", + normalization: Normalization.normalized, + title: "Looks Good", + subtitle: "All security checks passed!", + beautiful_name: "lightwalker.eth", + }; + case Rating.warn: + return { + rating: Rating.warn, + risk_count: 3, + highest_risk: { + check: "confusables", + status: CheckResultCode.warn, + message: "May be confusable", + check_name: "Character Recognition", + }, + name: "thisìsaveryveryveryveryveryverylongname.eth", + namehash: + "0x368edb7de4b5ad933a67148a18a7e65e1310a160ff4dce43c68ff563b8439a14", + normalization: Normalization.normalized, + title: "Some Risk", + subtitle: "Review risks before proceeding", + beautiful_name: "thisìsaveryveryveryveryveryverylongname.eth", + }; + case Rating.alert: + return { + rating: Rating.alert, + risk_count: 3, + highest_risk: { + check: "invisible", + status: CheckResultCode.alert, + message: "Contains invisible characters", + check_name: "Character Visibility", + }, + name: "‍420.eth", + namehash: + "0x61ce4b1e75e224233d08821593eaa0615e29bd984bbd39fc2830257ceecfcb40", + normalization: Normalization.unnormalized, + title: "High Risk", + subtitle: "Better not to use this name", + beautiful_name: "", + }; + } +}; diff --git a/apps/website/src/app/page.tsx b/apps/website/src/app/page.tsx index 5c8d38e21..024889409 100644 --- a/apps/website/src/app/page.tsx +++ b/apps/website/src/app/page.tsx @@ -1,9 +1,5 @@ import { Fragment } from "react"; import Image from "next/image"; -import { - CheckCircleIcon, - QuestionMarkCircleIcon, -} from "@heroicons/react/24/solid"; import cc from "classcat"; import impersonation_attack_img from "../../public/assets/impersonation_attack.svg"; @@ -20,7 +16,6 @@ import { CalButton } from "@/app/atoms/CalButton"; import { PushIcon } from "@/app/atoms/icons/PushIcon"; import { WalletConnectIcon } from "@/app/atoms/icons/WalletConnectIcon"; import { IntegrationIcon } from "@/app/atoms/icons/IntegrationIcon"; -import { CheckShieldGrayOutline } from "@/app/atoms/icons/CheckShieldGrayOutline"; import { RoadmapPositiveShield } from "@/app/atoms/icons/RoadmapPositiveShield"; import { RoadmapWarningShield } from "@/app/atoms/icons/RoadmapWarningShield"; import { RoadmapNegativeShield } from "@/app/atoms/icons/RoadmapNegativeShield"; @@ -33,17 +28,11 @@ import { OpenSeaIcon } from "@/app/atoms/icons/OpenSeaIcon"; import { RaribleIcon } from "@/app/atoms/icons/RaribleIcon"; import { CoinbaseIcon } from "@/app/atoms/icons/CoinbaseIcon"; import { WalletIcon } from "@/app/atoms/icons/WalletIcon"; -import { GithubIconSmall } from "@/app/atoms/icons/GithubIconSmall"; -import { GithubIconDevelopers } from "@/app/atoms/icons/GithubIconDevelopers"; -import { RedirectIcon } from "@/app/atoms/icons/RedirectIcon"; -import { FigmaIcon } from "@/app/atoms/icons/FigmaIcon"; -import { CloudOutlineIcon } from "@/app/atoms/icons/CloudOutlineIcon"; -import { GearWheelIcon } from "@/app/atoms/icons/GearWheelIcon"; -import { FileIcon } from "@/app/atoms/icons/FileIcon"; -import { FontIcon } from "@/app/atoms/icons/FontIcon"; import { Hero } from "./components/Hero"; import { NGSearch } from "./components/NGSearch"; import { Metadata } from "next"; +import { ChecksSection, DevelopersSection } from "./components/ContentSections"; +import { CheckCircleIcon } from "@heroicons/react/24/solid"; const getSecurePrimaryName = `import { nameguard } from "@namehash/nameguard"; @@ -1197,528 +1186,6 @@ function RoadMap() { ); } -type ListSectionElement = { - header: React.ReactNode; - text: React.ReactNode; - icon: React.ReactNode; - link?: string; -}; - -type ListBadgeProps = { - text: string; - width: number; - height: number; -}; - -function ListSectionBadge(props: ListBadgeProps) { - const badgeStyle = cc([ - `w-[${props.width}px]`, - `h-[${props.height}px]`, - "flex justify-center items-center flex-shrink-0 py-[2px] px-[10px] bg-green-100 rounded-[10px] text-center text-green-800 text-xs leading-4 font-medium", - ]); - return {props.text}; -} - -function ChecksSection() { - const checkCircle = ( -
- -
- ); - const questionmarkCircle = ( -
- -
- ); - - const headerStyle = - "self-stretch not-italic z-10 text-black text-left text-sm leading-6 font-semibold"; - - const headerWrapperStyle = "flex flex-row items-center justify-start gap-2"; - - const checkElements: ListSectionElement[] = [ - { - header:

Potential Impersonation

, - text: ( - - Protect from inbound messages that may appear to be from someone you - trust. - - ), - icon: checkCircle, - }, - { - header:

Confusable Characters

, - text: ( - - Identify characters with a higher risk for visual confusion with other - characters. - - ), - icon: checkCircle, - }, - { - header:

Cross-Device Font Support

, - text: ( - - Detect if characters have limited support to be viewed on popular - operating systems. - - ), - icon: checkCircle, - }, - { - header:

Invisible Characters

, - text: ( - - Reveal any invisible characters that might otherwise be hiding in a - name. - - ), - icon: checkCircle, - }, - { - header:

Typing Difficulty

, - text: ( - - Offer usability suggestions for users picking a name to register. - - ), - icon: checkCircle, - }, - { - header:

Mixed Scripts

, - text: ( - - Detect higher risk combinations of multiple scripts in a name. - - ), - icon: checkCircle, - }, - { - header:

NameWrapper Compatibility

, - text: ( - - Warn if the name being registered cannot be supported by the ENS Name - Wrapper. - - ), - icon: checkCircle, - }, - { - header:

ENSIP-15 Name Normalization

, - text: ( - - Check if the name is normalized according to ENSIP-15. - - ), - icon: checkCircle, - }, - { - header:

DNS Punycode Compatibility

, - text: ( - - Warn during registration if a name will have DNS compatibility - limitations. - - ), - icon: checkCircle, - }, - { - header:

Unknown Labels

, - text: ( - - Identify if the name contains unknown labels (e.g. [0123abcd...].eth). - - ), - icon: checkCircle, - }, - { - header: ( -
-

Name Ruggability

- -
- ), - text: ( - - Warn buyers on secondary markets if a name can potentially be taken - away. - - ), - icon: checkCircle, - }, - { - header: ( -
-

NameWrapper Fuses

- -
- ), - text: ( - - Protect buyers on secondary markets from NameWrapper fuse - configurations. - - ), - icon: checkCircle, - }, - { - header:

Have a check suggestion?

, - text: ( - - - Reach out to us - {" "} - with your suggestions about which checks you want us to add - - ), - icon: questionmarkCircle, - }, - ]; - - const cellStyle = - "z-20 sm:w-[394px] box-border flex flex-row items-center justify-start bg-white p-5 gap-4 rounded-md border border-gray-200"; - const cellTextStyle = - "self-stretch not-italic z-10 text-gray-500 text-left text-sm leading-6 font-normal"; - - return ( -
-
-
- - - Advanced inspections - -
-

- Checks NameGuard Performs -

-

- Elevate your security standards. Get next-level protection with a - rigorous 12-Point inspection on ENS names, meticulously scrutinizing - each label and grapheme for enhanced safety. -

-
-
-
-
- {checkElements.map((elem, idx) => { - return ( - idx < checkElements.length - 1 && ( -
- {elem.icon} -
- {elem.header} -

{elem.text}

-
-
- ) - ); - })} -
-
- {checkElements[checkElements.length - 1].icon} -
- {checkElements[checkElements.length - 1].header} -

- {checkElements[checkElements.length - 1].text} -

-
-
-
-
- ); -} - -function DevelopersSection() { - const iconWrapperStyle = - "w-11 h-11 p-[10px] flex justify-center items-center flex-shrink-0 bg-black rounded-lg"; - const cellStyle = - "group w-full md:w-[602px] h-full sm:min-w-[602px] max-w-[602px] box-border flex flex-row items-start justify-start bg-white p-5 gap-4 rounded-xl border border-gray-200"; - const cellTextStyle = - "self-stretch not-italic z-10 text-gray-500 text-left text-sm leading-6 font-normal"; - const headerStyle = - "self-stretch not-italic z-10 text-black text-left text-sm leading-6 font-semibold whitespace-nowrap"; - const headerWrapperStyle = - "flex flex-row items-center justify-start gap-x-2 gap-y-1 flex-wrap"; - const redirectStyle = - "hidden gt_mobile:group-hover:block absolute z-10 top-[18px] right-[18px]"; - const hoverCellStyle = cc([ - cellStyle, - "gt_mobile:hover:cursor-pointer gt_mobile:hover:border-gray-300 gt_mobile:hover:shadow-sm transition relative", - ]); - - const devElements: ListSectionElement[] = [ - { - header: ( -
-

NameGuard library

-
- ), - text: Security "x-ray" for ENS names., - icon: ( -
- -
- ), - link: "https://github.com/namehash/nameguard/tree/main/api", - }, - { - header: ( -
-

NameGuard Client SDK

-
- ), - text: ( - Thin client SDK for making API calls to NameGuard. - ), - icon: ( -
- -
- ), - link: "https://github.com/namehash/nameguard/tree/main/packages/sdk", - }, - { - header: ( -
-

NameGuard React UI Kit

- -
- ), - text: ( - - React components for building nice interfaces with NameGuard data. - - ), - icon: ( -
- -
- ), - link: "https://github.com/namehash/nameguard/tree/main/packages/nameguard-react", - }, - { - header: ( -
-

Figma UI kit

-
- ), - text: ( - - Customize NameKit user interfaces to match your unique app. - - ), - icon: ( -
- -
- ), - link: "https://www.figma.com/file/aVlWccl7J2MyP8IE56lDMb/NameGuard-UI-Kit---23-11-2023", - }, - { - header: ( -
-

ENS Label Inspector

-
- ), - text: Detailed inspection of labels in ENS names., - icon: ( -
- -
- ), - link: "https://github.com/namehash/ens-label-inspector", - }, - { - header: ( -
-

ENS Font Data

-
- ), - text: ( - - Metadata for graphemes that may appear in ENS names. - - ), - icon: ( -
- -
- ), - link: "https://github.com/namehash/ens-font-data", - }, - { - header: ( -
-

ENS Normalize Python

-
- ), - text: ( - - Python implementation of the ENS name normalization standard. - - ), - icon: ( -
- -
- ), - link: "https://github.com/namehash/ens-normalize-python", - }, - { - header: ( -
-

ENS Name Parser

- -
- ), - text: ( - Utilities for parsing ENS names from user input. - ), - icon: ( -
- -
- ), - link: "https://github.com/namehash/ens-utils/blob/main/README.md", - }, - { - header: ( -
-

Open public API

-
- ), - text: ( - - Connect to the NameGuard instance running in AWS for community use. - - ), - icon: ( -
- -
- ), - link: "https://api.nameguard.io/docs", - }, - { - header: ( -
-

NameGuard DevOps Scripts

-
- ), - text: ( - - Easily deploy your own instance of NameGuard into your own AWS cloud. - - ), - icon: ( -
- -
- ), - link: "https://github.com/namehash/nameguard/blob/main/api/serverless.yml", - }, - { - header: ( -
-

Detailed documentation

- -
- ), - text: ( - - Step-by-step guides to help developers make the most of NameGuard. - - ), - icon: ( -
- -
- ), - }, - { - header: ( -
-

ENS Webfont

- -
- ), - text: ( - - Increase rendering support for emojis and other special graphemes. - - ), - icon: ( -
- -
- ), - link: "https://github.com/namehash/nameguard/tree/main/packages/ens-webfont", - }, - ]; - - return ( -
-
-
- - - Developer resources - -
-

- NameGuard 🤝 Developers -

-

- All resources are open sourced and freely licensed for the community. -

-
-
- {devElements.map((elem, idx) => { - return elem.link == undefined ? ( -
- {elem.icon} -
- {elem.header} -

{elem.text}

-
-
- ) : ( - -
- - {elem.icon} -
- {elem.header} -

{elem.text}

-
-
-
- ); - })} -
-
- ); -} - function ExploreTheEcosystemSection() { return (
diff --git a/apps/website/src/app/rating-shields/page.tsx b/apps/website/src/app/rating-shields/page.tsx deleted file mode 100644 index 03fa16af3..000000000 --- a/apps/website/src/app/rating-shields/page.tsx +++ /dev/null @@ -1,333 +0,0 @@ -"use client"; - -import { CheckResultCode, Normalization, Rating } from "@namehash/nameguard"; -import { - Shield, - ShieldIcon, - NameBadge, - ShieldSize, -} from "@namehash/nameguard-react"; - -export default function RatingShieldsPage() { - return ( -
-
-
-
-
Success
-
Warn
-
Alert
-
Error
-
Loading
-
-
-
-
-
{""}
-
-
- -
- -
-
- -
-
- -
-
-
- -
-
- -
-
-
-
{"Hello world"}
-
-
- -
- Hello world -
-
- Hello world -
-
- Hello world -
-
-
- -
-
-
- -
-
-
-
{""}
-
- -
- -
-
- -
-
- -
-
- -
-
- -
-
-
-
-
{""}
-
- -
- alert("Clicked")} - /> -
-
- alert("Clicked")} - /> -
-
- alert("Clicked")} - /> -
-
- alert("Clicked")} - /> -
-
- alert("Clicked")} /> -
-
-
- -
-
-
-
{``}
-
- -
- -
-
- -
-
- -
-
- -
-
- -
-
- -
-
-
{``}
-
- -
- -
-
- -
-
- -
-
- -
-
- -
-
- -
-
-
{``}
-
- -
- -
-
- -
-
- -
-
- -
-
- -
-
- -
-
-
{``}
-
- -
- -
-
- -
-
- -
-
- -
-
- -
-
-
-
- ); -} diff --git a/package.json b/package.json index 1ff26f00f..8b438600d 100644 --- a/package.json +++ b/package.json @@ -1,18 +1,18 @@ { "name": "namekit", - "private": true, "scripts": { "build": "turbo build", "dev": "turbo dev", "lint": "turbo lint", - "clean": "turbo clean", + "clean": "rimraf -g \"**/node_modules\" \"**/dist\" \"**/.turbo\" \"**/.next\"", "format": "prettier --write \"**/*.{ts,tsx,md}\"" }, "packageManager": "pnpm@8.6.10", "devDependencies": { - "eslint": "8.51.0", - "prettier": "^3.0.3", - "turbo": "1.10.16" + "eslint": "^8.56.0", + "prettier": "^3.2.5", + "rimraf": "^5.0.7", + "turbo": "1.13.3" } } diff --git a/packages/ens-utils/package.json b/packages/ens-utils/package.json index 195001bad..5c85af024 100644 --- a/packages/ens-utils/package.json +++ b/packages/ens-utils/package.json @@ -42,7 +42,7 @@ "tsup": "8.0.2", "typescript": "5.3.3", "vite": "5.1.7", - "vitest": "1.3.1" + "vitest": "1.4.0" }, "files": ["dist"] } diff --git a/packages/nameguard-react/package.json b/packages/nameguard-react/package.json index ddf1b8a50..128ab6e5d 100644 --- a/packages/nameguard-react/package.json +++ b/packages/nameguard-react/package.json @@ -1,6 +1,6 @@ { "name": "@namehash/nameguard-react", - "version": "0.0.29", + "version": "0.0.31", "scripts": { "build": "tsup", "dev": "tsup --watch --clean=false" @@ -25,9 +25,9 @@ "@headlessui-float/react": "0.11.4", "@headlessui/react": "1.7.17", "@heroicons/react": "2.0.18", - "@namehash/ens-utils": "latest", - "@namehash/ens-webfont": "latest", - "@namehash/nameguard": "latest", + "@namehash/ens-utils": "1.9.0", + "@namehash/ens-webfont": "workspace:^", + "@namehash/nameguard": "workspace:^", "classcat": "5.0.4", "react": "^18.2.0", "react-dom": "^18.2.0", diff --git a/packages/nameguard-react/src/components/Button/Button.tsx b/packages/nameguard-react/src/components/Button/Button.tsx deleted file mode 100644 index e69de29bb..000000000 diff --git a/packages/nameguard-react/src/components/GraphemeModal/ConfusableListItem.tsx b/packages/nameguard-react/src/components/GraphemeModal/ConfusableListItem.tsx index 3cecc1530..dd0f59cef 100644 --- a/packages/nameguard-react/src/components/GraphemeModal/ConfusableListItem.tsx +++ b/packages/nameguard-react/src/components/GraphemeModal/ConfusableListItem.tsx @@ -1,7 +1,7 @@ import React from "react"; -import { GraphemeGuardReport } from "@namehash/nameguard"; +import { CheckResultCode, GraphemeGuardReport } from "@namehash/nameguard"; -import { Check } from "../Report/Check"; +import { CheckResultCodeIcon } from "../Report/CheckResultCodeIcon"; import { useGraphemeModalStore } from "../../stores/grapheme"; type ConfusableListItemProps = { @@ -38,9 +38,21 @@ export const ConfusableListItem = ({ item }: ConfusableListItemProps) => {
-
- -
+ {item.highest_risk ? ( +
+ +
+ ) : ( +
+ +
+ )}

{item.rating === "pass" ? item.title : item.highest_risk?.message} diff --git a/packages/nameguard-react/src/components/GraphemeModal/GraphemeModal.tsx b/packages/nameguard-react/src/components/GraphemeModal/GraphemeModal.tsx index 251b71987..f1c270fd4 100644 --- a/packages/nameguard-react/src/components/GraphemeModal/GraphemeModal.tsx +++ b/packages/nameguard-react/src/components/GraphemeModal/GraphemeModal.tsx @@ -5,7 +5,7 @@ import { type GraphemeGuardReport, nameguard } from "@namehash/nameguard"; import { useGraphemeModalStore } from "../../stores/grapheme"; import { Slideover } from "../Slideover/Slideover"; import { CheckResultCard } from "../Report/CheckResultCard"; -import { Shield, ShieldSize } from "../Report/Shield"; +import { RatingIcon, RatingIconSize } from "../Report/RatingIcon"; import { RatedBox } from "../RatedBox/RatedBox"; import { ConfusableList } from "./ConfusableList"; import { LoadingSkeleton } from "./LoadingSkeleton"; @@ -46,7 +46,10 @@ export const GraphemeModal = forwardRef((_, ref: Ref) => {

- + {data?.title}
diff --git a/packages/nameguard-react/src/components/NameBadge/NameBadge.tsx b/packages/nameguard-react/src/components/NameBadge/NameBadge.tsx deleted file mode 100644 index 63a3cb0af..000000000 --- a/packages/nameguard-react/src/components/NameBadge/NameBadge.tsx +++ /dev/null @@ -1,92 +0,0 @@ -import React, { type MouseEventHandler } from "react"; -import { - CheckResultCode, - type ConsolidatedNameGuardReport, -} from "@namehash/nameguard"; -import cc from "classcat"; - -import { NameShield } from "../NameShield"; -import { Shield, ShieldSize } from "../Report/Shield"; -import { ShieldError } from "../Shield/Error"; - -type NameBadgeProps = { - name?: string; - data?: ConsolidatedNameGuardReport; - onClick?: MouseEventHandler; - error?: string; -}; - -export const NameBadge = ({ name, onClick, data, error }: NameBadgeProps) => { - const buttonClass = - "flex-shrink-0 appearance-none bg-white transition-colors hover:bg-gray-50 border border-gray-200 rounded-md px-2.5 py-1.5 space-x-1.5 inline-flex items-center"; - const cursorClass = cc([ - { - "cursor-pointer": onClick, - "cursor-default": !onClick, - }, - ]); - const buttonAndCursorClass = cc([buttonClass, cursorClass]); - - if (error) - return ( - -
- )} - - - ); - - if (!data) - return ( - - ); - - return ( - -
- )} - - - ); -}; diff --git a/packages/nameguard-react/src/components/NameShield/index.tsx b/packages/nameguard-react/src/components/NameShield/index.tsx deleted file mode 100644 index a4b0bbe72..000000000 --- a/packages/nameguard-react/src/components/NameShield/index.tsx +++ /dev/null @@ -1,78 +0,0 @@ -import React, { type ReactNode } from "react"; -import { ConsolidatedNameGuardReport, Rating } from "@namehash/nameguard"; -import cc from "classcat"; - -import { Tooltip } from "../Tooltip/Tooltip"; -import { Shield, ShieldSize } from "../Report/Shield"; - -function textColor(rating?: Rating) { - switch (rating) { - case Rating.alert: { - return "text-red-600"; - } - case Rating.pass: { - return "text-emerald-600"; - } - case Rating.warn: { - return "text-amber-500"; - } - default: { - return "text-gray-500"; - } - } -} - -type NameShieldProps = { - data?: ConsolidatedNameGuardReport; - children?: ReactNode; - disableHover?: boolean; - size?: ShieldSize; -} & React.ComponentProps; - -export function NameShield({ - data, - children, - disableHover, - size = ShieldSize.small, - ...props -}: NameShieldProps) { - if (!data) return null; - - const { title, subtitle, rating, risk_count, highest_risk } = data; - - const textClass = cc(["font-semibold mb-1", textColor(rating)]); - - if (!rating) { - return ; - } - - if (disableHover) { - return ; - } - - return ( - }> -
-
- -
- -
-
- {title} - {risk_count >= 1 && ( - - {risk_count} risk{risk_count !== 1 && "s"} detected - - )} -
- -
- {highest_risk?.message || subtitle} -
- {children} -
-
-
- ); -} diff --git a/packages/nameguard-react/src/components/RatedBox/RatedBox.tsx b/packages/nameguard-react/src/components/RatedBox/RatedBox.tsx index 04bfca3a7..8a5641960 100644 --- a/packages/nameguard-react/src/components/RatedBox/RatedBox.tsx +++ b/packages/nameguard-react/src/components/RatedBox/RatedBox.tsx @@ -13,9 +13,6 @@ function borderColor(rating: Rating) { case Rating.warn: { return "border-yellow-200"; } - default: { - return "border-gray-200"; - } } } @@ -30,9 +27,6 @@ function shadowColor(rating: Rating) { case Rating.warn: { return "shadow-yellow-50"; } - default: { - return "shadow-gray-50"; - } } } diff --git a/packages/nameguard-react/src/components/Report/Banner.tsx b/packages/nameguard-react/src/components/Report/Banner.tsx index ee8ea955e..777014a86 100644 --- a/packages/nameguard-react/src/components/Report/Banner.tsx +++ b/packages/nameguard-react/src/components/Report/Banner.tsx @@ -1,29 +1,13 @@ import React from "react"; import cc from "classcat"; -import { type NameGuardReport, Rating } from "@namehash/nameguard"; +import { type NameGuardReport } from "@namehash/nameguard"; import type { ParsedName } from "@namehash/ens-utils"; -import { Shield } from "./Shield"; +import { RatingIcon, RatingIconSize } from "./RatingIcon"; import { RatedBox } from "../RatedBox/RatedBox"; import { ReportChangesApplied } from "./ReportChangesApplied"; import { ReportFormattedDisplayName } from "./ReportFormattedName"; - -function textColor(rating: Rating) { - switch (rating) { - case Rating.alert: { - return "text-red-700"; - } - case Rating.pass: { - return "text-emerald-600"; - } - case Rating.warn: { - return "text-yellow-600"; - } - default: { - return "text-gray-500"; - } - } -} +import { ratingTextColor } from "../../utils/text"; type Props = { report?: NameGuardReport; @@ -34,7 +18,10 @@ export function Banner({ report, parsedName }: Props) { const { name, title, subtitle, rating, beautiful_name, normalization } = report; - const text = cc(["font-semibold text-sm md:text-2xl", textColor(rating)]); + const text = cc([ + "font-semibold text-sm md:text-2xl", + ratingTextColor(rating), + ]); return ( @@ -54,10 +41,10 @@ export function Banner({ report, parsedName }: Props) {
- +
-

{title}

+

{title}

{subtitle}

diff --git a/packages/nameguard-react/src/components/Report/Check.tsx b/packages/nameguard-react/src/components/Report/Check.tsx deleted file mode 100644 index f66a6e5fc..000000000 --- a/packages/nameguard-react/src/components/Report/Check.tsx +++ /dev/null @@ -1,104 +0,0 @@ -import React from "react"; -import { CheckResultCode } from "@namehash/nameguard"; -import { Tooltip } from "../Tooltip/Tooltip"; - -function text(code: CheckResultCode) { - switch (code) { - case CheckResultCode.pass: - return "All Checks Passed"; - case CheckResultCode.warn: - return "Warning"; - case CheckResultCode.alert: - return "Alert"; - case CheckResultCode.info: - return "Informational Notice"; - case CheckResultCode.skip: - default: - return "Check Not Applicable"; - } -} - -function icon(code: CheckResultCode): React.ReactNode { - switch (code) { - case "pass": - return ( - - - - ); - case "warn": - return ( - - - - ); - case CheckResultCode.alert: - return ( - - - - ); - case "info": - return ( - - - - ); - case "skip": - default: - return ( - - - - - ); - } -} - -export function Check({ code }: { code: CheckResultCode }) { - const tooltipText = text(code); - const Icon = icon(code); - - return ; -} diff --git a/packages/nameguard-react/src/components/Report/CheckResultCard.tsx b/packages/nameguard-react/src/components/Report/CheckResultCard.tsx index 20261cb34..3f802b5c4 100644 --- a/packages/nameguard-react/src/components/Report/CheckResultCard.tsx +++ b/packages/nameguard-react/src/components/Report/CheckResultCard.tsx @@ -1,12 +1,12 @@ import React from "react"; -import { CheckResult } from "@namehash/nameguard"; -import { Check } from "./Check"; +import { CheckResult, CheckResultCode } from "@namehash/nameguard"; +import { CheckResultCodeIcon } from "./CheckResultCodeIcon"; export function CheckResultCard(props: CheckResult) { return (
- +

diff --git a/packages/nameguard-react/src/components/Report/CheckResultCodeIcon.tsx b/packages/nameguard-react/src/components/Report/CheckResultCodeIcon.tsx new file mode 100644 index 000000000..600ef118a --- /dev/null +++ b/packages/nameguard-react/src/components/Report/CheckResultCodeIcon.tsx @@ -0,0 +1,99 @@ +import React from "react"; +import { Tooltip } from "../Tooltip/Tooltip"; +import { CheckResultCode } from "@namehash/nameguard"; +import { CheckResultCodePassIcon } from "../icons/CheckResultCodePassIcon"; +import { CheckResultCodeWarnIcon } from "../icons/CheckResultCodeWarnIcon"; +import { CheckResultCodeAlertIcon } from "../icons/CheckResultCodeAlertIcon"; +import { CheckResultCodeInfoIcon } from "../icons/CheckResultCodeInfoIcon"; +import { CheckResultCodeSkipIcon } from "../icons/CheckResultCodeSkipIcon"; + +function text(code: CheckResultCode) { + switch (code) { + case CheckResultCode.pass: + return "All Checks Passed"; + case CheckResultCode.warn: + return "Warning"; + case CheckResultCode.alert: + return "Alert"; + case CheckResultCode.info: + return "Informational Notice"; + case CheckResultCode.skip: + return "Check Not Applicable"; + } +} + +function icon( + code: CheckResultCode, + isInteractive = false, + onClick = () => {}, + className = "", +): React.ReactNode { + switch (code) { + case CheckResultCode.pass: + return ( + + ); + case CheckResultCode.warn: + return ( + + ); + case CheckResultCode.alert: + return ( + + ); + case CheckResultCode.info: + return ( + + ); + case CheckResultCode.skip: + return ( + + ); + } +} + +/** + * A component that displays a check result code as an icon with a tooltip. + * @param {CheckResultCode} code - The CheckResultCode status to display. + * @param {boolean} isInteractive - Wether to display a Tooltip and a color effect on icon hover or not. + */ +export function CheckResultCodeIcon({ + code, + onClick = () => {}, + isInteractive = false, + className = "", +}: { + onClick?: () => void; + code: CheckResultCode; + isInteractive?: boolean; + className?: string; +}) { + const tooltipText = text(code); + const Icon = icon(code, isInteractive, onClick, className); + + if (isInteractive) { + return ; + } else { + return Icon; + } +} diff --git a/packages/nameguard-react/src/components/Report/GraphemeListItem.tsx b/packages/nameguard-react/src/components/Report/GraphemeListItem.tsx index 241c8752f..f93507498 100644 --- a/packages/nameguard-react/src/components/Report/GraphemeListItem.tsx +++ b/packages/nameguard-react/src/components/Report/GraphemeListItem.tsx @@ -1,7 +1,10 @@ import React from "react"; -import { ConsolidatedGraphemeGuardReport } from "@namehash/nameguard"; +import { + CheckResultCode, + ConsolidatedGraphemeGuardReport, +} from "@namehash/nameguard"; -import { Check } from "./Check"; +import { CheckResultCodeIcon } from "./CheckResultCodeIcon"; import { RiskCounter } from "./RiskCounter"; import { useGraphemeModalStore } from "../../stores/grapheme"; @@ -48,9 +51,23 @@ export function GraphemeListItem({ item }: GraphemeListItemProps) {

-
- -
+ {item.highest_risk ? ( +
+ +
+ ) : ( +
+ +
+ )}
diff --git a/packages/nameguard-react/src/components/Report/LabelListItem.tsx b/packages/nameguard-react/src/components/Report/LabelListItem.tsx index 1ca981b3a..633dd4730 100644 --- a/packages/nameguard-react/src/components/Report/LabelListItem.tsx +++ b/packages/nameguard-react/src/components/Report/LabelListItem.tsx @@ -1,9 +1,10 @@ +import cc from "classcat"; import React, { Fragment } from "react"; -import { ShieldExclamationIcon } from "@heroicons/react/20/solid"; - -import { NoGraphemesWarning } from "./NoGraphemesWarning"; import { GraphemeList } from "./GraphemeList"; -import { NameGuardReport } from "@namehash/nameguard"; +import { NoGraphemesWarning } from "./NoGraphemesWarning"; +import { CheckResultCode, NameGuardReport, Rating } from "@namehash/nameguard"; +import { checkResultCodeTextColor } from "../../utils/text"; +import { RatingIcon } from "./RatingIcon"; type LabelListItemProps = { item: NameGuardReport["labels"][0]; @@ -43,8 +44,13 @@ export const LabelListItem = ({ {(item.normalization === "unnormalized" || item.normalization === "unknown") && (
- - + + {item.normalization === "unnormalized" ? "Not ENS Normalized" : "Not found"} diff --git a/packages/nameguard-react/src/components/Report/LoadingSkeleton.tsx b/packages/nameguard-react/src/components/Report/LoadingSkeleton.tsx index cbc4fdef4..3c7c9220e 100644 --- a/packages/nameguard-react/src/components/Report/LoadingSkeleton.tsx +++ b/packages/nameguard-react/src/components/Report/LoadingSkeleton.tsx @@ -1,9 +1,10 @@ import React from "react"; -import { Shield } from "./Shield"; +import { RatingIcon, RatingIconSize } from "./RatingIcon"; import { ReportFormattedDisplayName } from "./ReportFormattedName"; import { ReportChangesApplied } from "./ReportChangesApplied"; import { ParsedName } from "@namehash/ens-utils"; +import { RatingLoadingIcon } from "../icons/RatingLoadingIcon"; type LoadingSkeletonProps = { parsedName: ParsedName; @@ -36,7 +37,7 @@ export const LoadingSkeleton = ({ parsedName }: LoadingSkeletonProps) => { )}
- +

Inspecting... diff --git a/packages/nameguard-react/src/components/Report/NoGraphemesWarning.tsx b/packages/nameguard-react/src/components/Report/NoGraphemesWarning.tsx index db0c0706b..2c0d204b0 100644 --- a/packages/nameguard-react/src/components/Report/NoGraphemesWarning.tsx +++ b/packages/nameguard-react/src/components/Report/NoGraphemesWarning.tsx @@ -1,8 +1,9 @@ import React from "react"; -import { ShieldExclamationIcon } from "@heroicons/react/20/solid"; - -import { Check } from "./Check"; +import cc from "classcat"; +import { CheckResultCodeIcon } from "./CheckResultCodeIcon"; import { CheckResultCode } from "@namehash/nameguard"; +import { checkResultCodeTextColor } from "../../utils/text"; +import { ShieldExclamationIcon } from "@heroicons/react/20/solid"; type Props = { title: string; @@ -14,7 +15,12 @@ export function NoGraphemesWarning({ title, description }: Props) {

- +
@@ -26,8 +32,16 @@ export function NoGraphemesWarning({ title, description }: Props) {
- -

+ +

{description}

diff --git a/packages/nameguard-react/src/components/Report/RatingIcon.tsx b/packages/nameguard-react/src/components/Report/RatingIcon.tsx new file mode 100644 index 000000000..2f4db91a5 --- /dev/null +++ b/packages/nameguard-react/src/components/Report/RatingIcon.tsx @@ -0,0 +1,78 @@ +import React from "react"; +import { Rating } from "@namehash/nameguard"; + +import { RatingPassLargeIcon } from "../icons/RatingPassLargeIcon"; +import { RatingWarnLargeIcon } from "../icons/RatingWarnLargeIcon"; +import { RatingAlertLargeIcon } from "../icons/RatingAlertLargeIcon"; +import { RatingPassMediumIcon } from "../icons/RatingPassMediumIcon"; +import { RatingWarnMediumIcon } from "../icons/RatingWarnMediumIcon"; +import { RatingAlertMediumIcon } from "../icons/RatingAlertMediumIcon"; +import { RatingPassSmallIcon } from "../icons/RatingPassSmallIcon"; +import { RatingWarnSmallIcon } from "../icons/RatingWarnSmallIcon"; +import { RatingAlertSmallIcon } from "../icons/RatingAlertSmallIcon"; +import { RatingAlertMicroIcon } from "../icons/RatingAlertMicroIcon"; +import { RatingWarnMicroIcon } from "../icons/RatingWarnMicroIcon"; +import { RatingPassMicroIcon } from "../icons/RatingPassMicroIcon"; + +export enum RatingIconSize { + micro = "micro", + small = "small", + medium = "medium", + large = "large", +} + +type Props = { + rating: Rating; + isInteractive?: boolean; + size?: RatingIconSize; + className?: string; +}; + +const STATUS_TO_BASE_NAME: { [key in Rating]: string } = { + [Rating.alert]: "RatingAlert", + [Rating.pass]: "RatingPass", + [Rating.warn]: "RatingWarn", +}; + +const getComponent = (rating: Rating, size: RatingIconSize): React.Node => { + const baseName = STATUS_TO_BASE_NAME[rating]; + const componentName = `${baseName}${capitalizeFirstLetter(size)}Icon`; + + const components: { [key: string]: React.ComponentType } = { + RatingPassLargeIcon, + RatingPassMediumIcon, + RatingPassSmallIcon, + RatingPassMicroIcon, + RatingWarnLargeIcon, + RatingWarnMediumIcon, + RatingWarnSmallIcon, + RatingWarnMicroIcon, + RatingAlertLargeIcon, + RatingAlertMediumIcon, + RatingAlertSmallIcon, + RatingAlertMicroIcon, + }; + + if (!components[componentName]) { + throw new Error( + `RatingIcon could not be built with params: \n\n rating: ${rating}\n size: ${size}`, + ); + } + + return components[componentName]; +}; + +function capitalizeFirstLetter(string: string) { + return string.charAt(0).toUpperCase() + string.slice(1); +} + +export const RatingIcon = ({ + rating, + isInteractive = false, + size = RatingIconSize.small, + ...props +}: Props) => { + const Component = getComponent(rating, size); + + return Component(props, isInteractive); +}; diff --git a/packages/nameguard-react/src/components/Report/Report.tsx b/packages/nameguard-react/src/components/Report/Report.tsx index 111ccf458..ac7aed0bb 100644 --- a/packages/nameguard-react/src/components/Report/Report.tsx +++ b/packages/nameguard-react/src/components/Report/Report.tsx @@ -1,6 +1,6 @@ import React, { Fragment, useMemo } from "react"; import useSWR from "swr"; -import { type NameGuardReport, nameguard } from "@namehash/nameguard"; +import { type NameGuardReport, nameguard, Rating } from "@namehash/nameguard"; import { parseName } from "@namehash/ens-utils"; import { Toaster } from "sonner"; @@ -24,6 +24,7 @@ import { useGraphemeModalStore } from "../../stores/grapheme"; import { ReportError } from "./ReportError"; import { ExternalLinks } from "../ExternalLinks/ExternalLinks"; import { Share } from "../Share/Share"; +import { ratingTextColor } from "../../utils/text"; type ReportProps = { data?: NameGuardReport; @@ -64,7 +65,11 @@ export const Report = ({ const showEmptyState = parsedName.outputName.name.length === 0 ?? true; - const { data, error, isLoading } = useSWR( + const { + data, + error: hadLoadingError, + isLoading, + } = useSWR( fallbackData ? null : parsedName.outputName.name, (n: string) => nameguard.inspectName(n), { @@ -117,14 +122,14 @@ export const Report = ({
- {isLoading && !error && normalizationUnknown && ( + {isLoading && !hadLoadingError && normalizationUnknown && ( )} - {isLoading && !error && !normalizationUnknown && ( + {isLoading && !hadLoadingError && !normalizationUnknown && ( )} - {error && } + {hadLoadingError && } {data && ( @@ -168,7 +173,7 @@ export const Report = ({ toast: "!bg-black !border-black !relative !text-sm !leading-5 !font-medium !px-5", title: "!text-white", - success: "!fill-current !text-green-400", + success: `!fill-current !${ratingTextColor(Rating.pass)}`, closeButton: "!hidden", }, }} diff --git a/packages/nameguard-react/src/components/Report/ReportError.tsx b/packages/nameguard-react/src/components/Report/ReportError.tsx index c589439ee..6c83c85f1 100644 --- a/packages/nameguard-react/src/components/Report/ReportError.tsx +++ b/packages/nameguard-react/src/components/Report/ReportError.tsx @@ -3,6 +3,10 @@ import { ExclamationTriangleIcon } from "@heroicons/react/24/outline"; import { RatedBox } from "../RatedBox/RatedBox"; +import cc from "classcat"; +import { CheckResultCode } from "@namehash/nameguard"; +import { checkResultCodeTextColor } from "../../utils/text"; + export const ReportError = () => { const [isOnline, setIsOnline] = useState(navigator.onLine); @@ -24,7 +28,12 @@ export const ReportError = () => {
- +
diff --git a/packages/nameguard-react/src/components/Report/ReportModalNameBadge.tsx b/packages/nameguard-react/src/components/Report/ReportModalNameBadge.tsx new file mode 100644 index 000000000..5d8880296 --- /dev/null +++ b/packages/nameguard-react/src/components/Report/ReportModalNameBadge.tsx @@ -0,0 +1,30 @@ +import React from "react"; +import { ENSName } from "@namehash/ens-utils"; +import { ConsolidatedNameGuardReport } from "@namehash/nameguard"; +import { useSearchStore } from "../../stores/search"; +import { ReportBadge } from "../ReportBadge"; + +interface ReportModalNameBadgeProps { + data?: ConsolidatedNameGuardReport; + hadLoadingError?: boolean; + ensName: ENSName; +} + +export function ReportModalNameBadge({ + data, + ensName, + hadLoadingError = false, + ...props +}: ReportModalNameBadgeProps) { + const { openModal } = useSearchStore(); + return ( + openModal(ensName.name)} + /> + ); +} diff --git a/packages/nameguard-react/src/components/Report/RiskCounter.tsx b/packages/nameguard-react/src/components/Report/RiskCounter.tsx index 6e93bbce6..df03e15e0 100644 --- a/packages/nameguard-react/src/components/Report/RiskCounter.tsx +++ b/packages/nameguard-react/src/components/Report/RiskCounter.tsx @@ -9,7 +9,7 @@ export function RiskCounter({ if (count === 0 || count === 1) return null; return ( - + + {count - 1} more risk{count - 1 >= 2 && "s"} ); diff --git a/packages/nameguard-react/src/components/Report/Shield.tsx b/packages/nameguard-react/src/components/Report/Shield.tsx deleted file mode 100644 index 43f0169b5..000000000 --- a/packages/nameguard-react/src/components/Report/Shield.tsx +++ /dev/null @@ -1,88 +0,0 @@ -import React from "react"; -import { CheckResultCode } from "@namehash/nameguard"; - -import { PassShieldLarge } from "../icons/PassShieldLarge"; -import { WarnShieldLarge } from "../icons/WarnShieldLarge"; -import { AlertShieldLarge } from "../icons/AlertShieldLarge"; -import { LoadingShieldLarge } from "../icons/LoadingShieldLarge"; -import { ErrorShieldLarge } from "../icons/ErrorShieldLarge"; -import { PassShieldMedium } from "../icons/PassShieldMedium"; -import { WarnShieldMedium } from "../icons/WarnShieldMedium"; -import { AlertShieldMedium } from "../icons/AlertShieldMedium"; -import { LoadingShieldMedium } from "../icons/LoadingShieldMedium"; -import { ErrorShieldMedium } from "../icons/ErrorShieldMedium"; -import { PassShieldSmall } from "../icons/PassShieldSmall"; -import { WarnShieldSmall } from "../icons/WarnShieldSmall"; -import { AlertShieldSmall } from "../icons/AlertShieldSmall"; -import { LoadingShieldSmall } from "../icons/LoadingShieldSmall"; -import { ErrorShieldSmall } from "../icons/ErrorShieldSmall"; -import { AlertIcon as AlertShieldMicro } from "../icons/Alert"; -import { WarnIcon as WarnShieldMicro } from "../icons/Warn"; -import { PassIcon as PassShieldMicro } from "../icons/Pass"; -import { LoadingIcon as LoadingShieldMicro } from "../icons/Loading"; -import { ErrorIcon as ErrorShieldMicro } from "../icons/Error"; - -export enum ShieldSize { - micro = "micro", - small = "small", - medium = "medium", - large = "large", -} - -type Props = { - size?: ShieldSize; - status: CheckResultCode; - className?: string; -}; - -const STATUS_TO_BASE_NAME: { [key in CheckResultCode]: string } = { - [CheckResultCode.alert]: "AlertShield", - [CheckResultCode.pass]: "PassShield", - [CheckResultCode.warn]: "WarnShield", - [CheckResultCode.info]: "LoadingShield", - [CheckResultCode.skip]: "ErrorShield", -}; - -const getComponent = (status: CheckResultCode, size: ShieldSize) => { - const baseName = STATUS_TO_BASE_NAME[status]; - const componentName = `${baseName}${capitalizeFirstLetter(size)}`; - - const components: { [key: string]: React.ComponentType } = { - PassShieldLarge, - PassShieldMedium, - PassShieldSmall, - PassShieldMicro, - WarnShieldLarge, - WarnShieldMedium, - WarnShieldSmall, - WarnShieldMicro, - AlertShieldLarge, - AlertShieldMedium, - AlertShieldSmall, - AlertShieldMicro, - LoadingShieldLarge, - LoadingShieldMedium, - LoadingShieldSmall, - LoadingShieldMicro, - ErrorShieldLarge, - ErrorShieldMedium, - ErrorShieldSmall, - ErrorShieldMicro, - }; - - return components[componentName] || null; -}; - -function capitalizeFirstLetter(string: string) { - return string.charAt(0).toUpperCase() + string.slice(1); -} - -export const Shield = ({ - status, - size = ShieldSize.small, - ...props -}: Props) => { - const Component = getComponent(status, size); - - return Component ? : null; -}; diff --git a/packages/nameguard-react/src/components/ReportBadge/index.tsx b/packages/nameguard-react/src/components/ReportBadge/index.tsx new file mode 100644 index 000000000..efe1879fc --- /dev/null +++ b/packages/nameguard-react/src/components/ReportBadge/index.tsx @@ -0,0 +1,185 @@ +"use client"; +import { + Normalization, + type ConsolidatedNameGuardReport, +} from "@namehash/nameguard"; +import React, { useEffect, useState, useRef } from "react"; +import cc from "classcat"; + +import { ReportIcon } from "../ReportIcon/index"; +import { RatingLoadingIcon, RatingIconSize, Tooltip } from "../.."; +import { UnknownReportIcon } from "../UnknownReportIcon/UnknownReportIcon"; +import { ENSName } from "@namehash/ens-utils"; + +interface ReportBadgeProps { + /* + The data prop is the consolidated report for the ensName. + The ensName prop is the ENSName object. + + The data prop should always be relative to the ensName prop. + This means that the data prop should always be the report for + the ensName provided in the ensName prop. + */ + ensName: ENSName; + data?: ConsolidatedNameGuardReport; + + hadLoadingError?: boolean; + displayUnnormalizedNames?: boolean; + onClickOverride?: (ensName: ENSName) => void; + + /* + Below number is a measure of the maximum width that the ensName + should have inside ReportBadge. If the ensName displayed is longer + than this number, the badge will truncate the ensName and display a + tooltip on hover that shows the full ensName. This number is measured in pixels. + */ + maxEnsNameDisplayWidth?: number; +} + +const DEFAULT_MAX_ENSNAME_DISPLAY_WIDTH = 200; + +export function ReportBadge({ + data, + ensName, + onClickOverride, + hadLoadingError = false, + displayUnnormalizedNames = false, + maxEnsNameDisplayWidth = DEFAULT_MAX_ENSNAME_DISPLAY_WIDTH, +}: ReportBadgeProps) { + const buttonClass = + "flex-shrink-0 appearance-none bg-white transition-colors hover:bg-gray-50 border border-gray-200 rounded-md px-2.5 py-1.5 inline-flex items-center"; + const buttonAndCursorClass = cc([buttonClass, "cursor-pointer"]); + + const onClickHandler = () => { + if (onClickOverride) onClickOverride(ensName); + else { + window.location.href = `https://nameguard.io/inspect/${encodeURIComponent( + ensName.name, + )}`; + } + }; + + const invisibleNameWidthTester = useRef(null); + + /* + Below state is only true if the ensName displayed is longer + than badge's ensName max-width (defined by MAX_ENSNAME_DISPLAY_WIDTH) + */ + const [displayFullNameInTooltip, setDisplayFullNameInTooltip] = + useState(false); + + useEffect(() => { + if (data) { + if (data.name !== ensName.name) { + throw new Error( + `The data received is from: ${data.name} and not for the provided ensName, which is ${ensName.name}`, + ); + } + } + }, [data]); + + useEffect(() => { + if (invisibleNameWidthTester && invisibleNameWidthTester.current) { + const nameIsBiggerThanBadgeMax = + Math.ceil( + invisibleNameWidthTester.current.getBoundingClientRect().width, + ) > maxEnsNameDisplayWidth; + + setDisplayFullNameInTooltip(nameIsBiggerThanBadgeMax); + } + }, [invisibleNameWidthTester]); + + const showUnnormalizedName = + displayUnnormalizedNames && + ensName.normalization === Normalization.unnormalized; + const displayName = showUnnormalizedName ? ensName.name : ensName.displayName; + + return ( +
+ } + > + + {displayName} + + + ) : ( +

+ {displayName} +

+ )} + + {hadLoadingError ? ( + // Unknown Rating + +
+ +
+
+ ) : !data ? ( + // Loading Rating + + ) : ( + // Known Rating + {}} + size={RatingIconSize.micro} + className={"cursor-pointer"} + hadLoadingError={hadLoadingError} + /> + )} + + ); +} diff --git a/packages/nameguard-react/src/components/ReportIcon/index.tsx b/packages/nameguard-react/src/components/ReportIcon/index.tsx new file mode 100644 index 000000000..15ed1768f --- /dev/null +++ b/packages/nameguard-react/src/components/ReportIcon/index.tsx @@ -0,0 +1,160 @@ +"use client"; + +import React, { useEffect } from "react"; +import { + CheckResultCode, + ConsolidatedNameGuardReport, +} from "@namehash/nameguard"; +import cc from "classcat"; + +import { Tooltip } from "../Tooltip/Tooltip"; +import { RatingLoadingIcon } from "../icons/RatingLoadingIcon"; +import { RatingIcon, RatingIconSize } from "../Report/RatingIcon"; +import { checkResultCodeTextColor, ratingTextColor } from "../../utils/text"; +import { ENSName } from "@namehash/ens-utils"; +import { UnknownReportIcon } from "../UnknownReportIcon/UnknownReportIcon"; + +type ReportShieldProps = { + onClickOverride?: (ensName: ENSName) => void; + + /* + The data prop is the consolidated report for the ensName. + The ensName prop is the ENSName object. + + The data prop should always be relative to the ensName prop. + This means that the data prop should always be the report for + the ensName provided in the ensName prop. + */ + ensName: ENSName; + data?: ConsolidatedNameGuardReport; + + hadLoadingError: boolean; + size?: RatingIconSize; +} & React.ComponentProps; + +declare global { + interface Window { + location: Location; + } +} + +export function ReportIcon({ + ensName, + data, + onClickOverride, + hadLoadingError, + size = RatingIconSize.small, + + /* + Props are applied to the shield icon which is the onHover trigger element + for the tooltip with Report information. For examples, please visit the + https://nameguard.io/docs/report and see the ReportIcon docs. Any + additional props are passed to the shield icon that when hovered, + displays the tooltip with the report information. + */ + ...props +}: ReportShieldProps) { + const onClickHandler = () => { + if (onClickOverride) onClickOverride(ensName); + else { + window.location.href = `https://nameguard.io/inspect/${encodeURIComponent( + ensName.name, + )}`; + } + }; + + if (hadLoadingError) { + return ( + +
+ +
+
+ ); + } + + if (!data) { + return ( + + ); + } + + useEffect(() => { + if (data) { + if (data.name !== ensName.name) { + throw new Error( + `The data received is from: ${data.name} and not for the provided ensName, which is ${ensName.name}`, + ); + } + } + }, [data]); + + const { title, subtitle, rating, risk_count, highest_risk } = data; + + const textClass = cc(["font-semibold mb-1", ratingTextColor(rating)]); + + return ( + + } + > +
+
+ +
+ +
+
+ {title} + {risk_count >= 1 && ( + + {risk_count} risk{risk_count !== 1 && "s"} detected + + )} +
+ +
+ {highest_risk?.message || subtitle} +
+ +
+ +
+
+
+
+ ); +} diff --git a/packages/nameguard-react/src/components/Search/SearchEmptyState.tsx b/packages/nameguard-react/src/components/Search/SearchEmptyState.tsx index ee092ea59..f211b54fb 100644 --- a/packages/nameguard-react/src/components/Search/SearchEmptyState.tsx +++ b/packages/nameguard-react/src/components/Search/SearchEmptyState.tsx @@ -4,9 +4,9 @@ import { nameguard, type BulkConsolidatedNameGuardReport, } from "@namehash/nameguard"; -import { parseName } from "@namehash/ens-utils"; +import { buildENSName } from "@namehash/ens-utils"; -import { NameBadge } from "../NameBadge/NameBadge"; +import { ReportModalNameBadge } from "../Report/ReportModalNameBadge"; import { useSearchStore } from "../../stores/search"; import { ChevronLeftIcon, ChevronRightIcon } from "@heroicons/react/24/solid"; @@ -26,7 +26,7 @@ const examples = [ "unknоwn.eth", "john🇺🇸", "7️⃣7️⃣7️⃣.eth", -]; +].map((name) => buildENSName(name)); export const SearchEmptyState = () => { const sliderRef = useRef(null); @@ -34,12 +34,15 @@ export const SearchEmptyState = () => { const [isAtEnd, setIsAtEnd] = useState(false); const { openModal } = useSearchStore(); - const parsedNames = examples.map((n) => parseName(n)); + const exampleNames = examples.map((n) => n.name); - const { data, isLoading } = useSWR( - examples.join(), - (_) => - nameguard.bulkInspectNames(parsedNames.map((n) => n.outputName.name)), + const { + data, + isLoading, + error: hadLoadingError, + } = useSWR( + exampleNames.join(), + (_) => nameguard.bulkInspectNames(exampleNames), { revalidateIfStale: false, revalidateOnFocus: false, @@ -116,13 +119,20 @@ export const SearchEmptyState = () => {
)} - {isLoading && - examples.map((e, index) => )} + {(hadLoadingError || isLoading) && + examples.map((_, index) => ( + + ))} {data?.results?.map((report, index) => ( - openModal(report.name)} /> ))}
diff --git a/packages/nameguard-react/src/components/Share/Share.tsx b/packages/nameguard-react/src/components/Share/Share.tsx index c9dd5cd59..55bc2c0d5 100644 --- a/packages/nameguard-react/src/components/Share/Share.tsx +++ b/packages/nameguard-react/src/components/Share/Share.tsx @@ -8,7 +8,10 @@ import { import { toast } from "sonner"; +import cc from "classcat"; import { Tooltip } from "../Tooltip/Tooltip"; +import { CheckResultCode } from "@namehash/nameguard"; +import { checkResultCodeTextColor } from "../../utils/text"; type ShareProps = { name?: string; @@ -19,7 +22,7 @@ function createTwitterLink(name: string) { const url = `https://nameguard.io/inspect/${encodeURIComponent(name)}`; return `https://twitter.com/intent/tweet?text=${encodeURIComponent( - tweetText, + tweetText )}&url=${encodeURIComponent(url)}`; } @@ -41,18 +44,25 @@ export function Share({ name }: ShareProps) { const twitterLink = createTwitterLink(name); const telegramLink = createTelegramLink( - `https://nameguard.io/inspect/${encodeURIComponent(name)}`, + `https://nameguard.io/inspect/${encodeURIComponent(name)}` ); const emailLink = createMailToLink( `NameGuard Report for ${name}`, - `Check this out!\nhttps://nameguard.io/inspect/${encodeURIComponent(name)}`, + `Check this out!\nhttps://nameguard.io/inspect/${encodeURIComponent(name)}` ); const copyLinkToClipboard = () => { navigator.clipboard.writeText( - `https://nameguard.io/inspect/${encodeURIComponent(name)}`, + `https://nameguard.io/inspect/${encodeURIComponent(name)}` ); toast.success("Link copied to clipboard", { - icon: , + icon: ( + + ), }); closeModal(); }; diff --git a/packages/nameguard-react/src/components/Shield/Error.tsx b/packages/nameguard-react/src/components/Shield/Error.tsx deleted file mode 100644 index dc05fbcb5..000000000 --- a/packages/nameguard-react/src/components/Shield/Error.tsx +++ /dev/null @@ -1,43 +0,0 @@ -import React, { type ReactNode } from "react"; - -import { Shield as ShieldIcon, ShieldSize } from "../Report/Shield"; -import { Tooltip } from "../Tooltip/Tooltip"; -import { CheckResultCode } from "@namehash/nameguard"; - -type ShieldErrorProps = { - children?: ReactNode; - size?: ShieldSize; -} & React.ComponentProps; - -export const ShieldError = ({ - children, - size = ShieldSize.small, - ...props -}: ShieldErrorProps) => { - return ( - - } - > -
-
- -
- -
-
- - Unable to analyze - -
- -
- Refresh the page to try again. -
- {children} -
-
-
- ); -}; diff --git a/packages/nameguard-react/src/components/Shield/Shield.tsx b/packages/nameguard-react/src/components/Shield/Shield.tsx deleted file mode 100644 index 8276afc5e..000000000 --- a/packages/nameguard-react/src/components/Shield/Shield.tsx +++ /dev/null @@ -1,93 +0,0 @@ -import type { ReactNode } from "react"; -import React from "react"; -import useSWR from "swr"; -import { - nameguard, - Rating, - type BulkConsolidatedNameGuardReport, - CheckResultCode, -} from "@namehash/nameguard"; -import { parseName } from "@namehash/ens-utils"; -import cc from "classcat"; - -import { Shield as ShieldIcon, ShieldSize } from "../Report/Shield"; -import { Tooltip } from "../Tooltip/Tooltip"; -import { ShieldError } from "./Error"; - -function textColor(rating: Rating) { - switch (rating) { - case Rating.alert: { - return "text-red-600"; - } - case Rating.pass: { - return "text-emerald-600"; - } - case Rating.warn: { - return "text-amber-500"; - } - default: { - return "text-gray-500"; - } - } -} - -type ShieldProps = { - name?: string; - children?: ReactNode; - size?: ShieldSize; -}; - -export const Shield = ({ name, children, size }: ShieldProps) => { - if (!name) return null; - - const { data, error, isLoading } = useSWR( - name, - (n: string) => nameguard.bulkInspectNames([parseName(n).outputName.name]) - ); - - const result = data?.results[0]; - - const status = isLoading - ? CheckResultCode.info - : result.highest_risk - ? result.highest_risk.status - : CheckResultCode.info; - - if (isLoading || !data) { - return ( - - ); - } - - if (error) { - return {children}; - } - - const textClass = cc(["font-semibold mb-1", textColor(result.rating)]); - - return ( - }> -
- - -
-
- {result.title} - {result.risk_count >= 1 && ( - - {result.risk_count} risk{result.risk_count === 1 ? "" : "s"}{" "} - detected - - )} -
-
{result.subtitle}
- {children} -
-
-
- ); -}; diff --git a/packages/nameguard-react/src/components/Tooltip/Tooltip.tsx b/packages/nameguard-react/src/components/Tooltip/Tooltip.tsx index 9e0049808..ba51ed0d0 100644 --- a/packages/nameguard-react/src/components/Tooltip/Tooltip.tsx +++ b/packages/nameguard-react/src/components/Tooltip/Tooltip.tsx @@ -12,6 +12,11 @@ export function Tooltip({ trigger, children, placement = "top", + + /* + Props are applied to the Float component, + which is a wrapper for the tooltip "children". + */ ...props }: Props) { const [open, setOpen] = useState(false); diff --git a/packages/nameguard-react/src/components/UnknownReportIcon/UnknownReportIcon.tsx b/packages/nameguard-react/src/components/UnknownReportIcon/UnknownReportIcon.tsx new file mode 100644 index 000000000..5bdd54c8d --- /dev/null +++ b/packages/nameguard-react/src/components/UnknownReportIcon/UnknownReportIcon.tsx @@ -0,0 +1,50 @@ +import React, { type ReactNode } from "react"; + +import { RatingIcon, RatingIconSize } from "../Report/RatingIcon"; +import { Tooltip } from "../Tooltip/Tooltip"; +import { RatingUnknownIcon } from "../icons/RatingUnknownIcon"; + +type UnknownShieldProps = { + size?: RatingIconSize; +} & React.ComponentProps; + +export const UnknownReportIcon = ({ + size = RatingIconSize.small, + + /* + Props are applied to the shield icon which is the onHover trigger element + for the tooltip with Report information. For examples, please visit the + https://nameguard.io/docs/report and see the ReportIcon docs. Any + additional props are passed to the shield icon that when hovered, + displays the tooltip with the report information. + */ + ...props +}: UnknownShieldProps) => { + return ( + +
+
+ +
+ +
+
+ + Unable to analyze + +
+ +
+ Refresh the page to try again. +
+
+
+
+ ); +}; diff --git a/packages/nameguard-react/src/components/icons/Alert.tsx b/packages/nameguard-react/src/components/icons/Alert.tsx deleted file mode 100644 index 8e0333679..000000000 --- a/packages/nameguard-react/src/components/icons/Alert.tsx +++ /dev/null @@ -1,20 +0,0 @@ -import React from "react"; - -export const AlertIcon = (props: any) => ( - - - -); diff --git a/packages/nameguard-react/src/components/icons/AlertShieldLarge.tsx b/packages/nameguard-react/src/components/icons/AlertShieldLarge.tsx deleted file mode 100644 index 9faa8d8f4..000000000 --- a/packages/nameguard-react/src/components/icons/AlertShieldLarge.tsx +++ /dev/null @@ -1,93 +0,0 @@ -import * as React from "react"; - -export const AlertShieldLarge = (props) => ( - - - - - - - - - - - - - - - - - - - - - - - - - - - - -); diff --git a/packages/nameguard-react/src/components/icons/AlertShieldMedium.tsx b/packages/nameguard-react/src/components/icons/AlertShieldMedium.tsx deleted file mode 100644 index ed278234b..000000000 --- a/packages/nameguard-react/src/components/icons/AlertShieldMedium.tsx +++ /dev/null @@ -1,107 +0,0 @@ -import * as React from "react"; - -export const AlertShieldMedium = (props) => ( - - - - - - - - - - - - - - - - - - - - - - - - - - - - -); diff --git a/packages/nameguard-react/src/components/icons/AlertShieldSmall.tsx b/packages/nameguard-react/src/components/icons/AlertShieldSmall.tsx deleted file mode 100644 index 6c30d134e..000000000 --- a/packages/nameguard-react/src/components/icons/AlertShieldSmall.tsx +++ /dev/null @@ -1,20 +0,0 @@ -import * as React from "react"; - -export const AlertShieldSmall = (props) => ( - - - -); diff --git a/packages/nameguard-react/src/components/icons/CheckResultCodeAlertIcon.tsx b/packages/nameguard-react/src/components/icons/CheckResultCodeAlertIcon.tsx new file mode 100644 index 000000000..2de889fbc --- /dev/null +++ b/packages/nameguard-react/src/components/icons/CheckResultCodeAlertIcon.tsx @@ -0,0 +1,28 @@ +import * as React from "react"; +import cc from "classcat"; +import { checkResultCodeTextColor } from "../../utils/text"; +import { CheckResultCode } from "@namehash/nameguard"; + +export const CheckResultCodeAlertIcon = ({ + onClick = () => {}, + isInteractive = false, + className = "", +}) => ( + + + +); diff --git a/packages/nameguard-react/src/components/icons/CheckResultCodeInfoIcon.tsx b/packages/nameguard-react/src/components/icons/CheckResultCodeInfoIcon.tsx new file mode 100644 index 000000000..ecc5b9c41 --- /dev/null +++ b/packages/nameguard-react/src/components/icons/CheckResultCodeInfoIcon.tsx @@ -0,0 +1,28 @@ +import * as React from "react"; +import cc from "classcat"; +import { checkResultCodeTextColor } from "../../utils/text"; +import { CheckResultCode } from "@namehash/nameguard"; + +export const CheckResultCodeInfoIcon = ({ + isInteractive = false, + onClick = () => {}, + className = "", +}) => ( + + + +); diff --git a/packages/nameguard-react/src/components/icons/CheckResultCodePassIcon.tsx b/packages/nameguard-react/src/components/icons/CheckResultCodePassIcon.tsx new file mode 100644 index 000000000..8c1cf4f44 --- /dev/null +++ b/packages/nameguard-react/src/components/icons/CheckResultCodePassIcon.tsx @@ -0,0 +1,28 @@ +import * as React from "react"; +import cc from "classcat"; +import { checkResultCodeTextColor } from "../../utils/text"; +import { CheckResultCode } from "@namehash/nameguard"; + +export const CheckResultCodePassIcon = ({ + isInteractive = false, + onClick = () => {}, + className = "", +}) => ( + + + +); diff --git a/packages/nameguard-react/src/components/icons/CheckResultCodeSkipIcon.tsx b/packages/nameguard-react/src/components/icons/CheckResultCodeSkipIcon.tsx new file mode 100644 index 000000000..33f8e4f28 --- /dev/null +++ b/packages/nameguard-react/src/components/icons/CheckResultCodeSkipIcon.tsx @@ -0,0 +1,25 @@ +import * as React from "react"; +import cc from "classcat"; +import { checkResultCodeTextColor } from "../../utils/text"; +import { CheckResultCode } from "@namehash/nameguard"; + +export const CheckResultCodeSkipIcon = ({ + isInteractive = false, + onClick = () => {}, + className = "", +}) => ( + + + + +); diff --git a/packages/nameguard-react/src/components/icons/CheckResultCodeWarnIcon.tsx b/packages/nameguard-react/src/components/icons/CheckResultCodeWarnIcon.tsx new file mode 100644 index 000000000..a18f489bb --- /dev/null +++ b/packages/nameguard-react/src/components/icons/CheckResultCodeWarnIcon.tsx @@ -0,0 +1,28 @@ +import * as React from "react"; +import cc from "classcat"; +import { checkResultCodeTextColor } from "../../utils/text"; +import { CheckResultCode } from "@namehash/nameguard"; + +export const CheckResultCodeWarnIcon = ({ + isInteractive = false, + onClick = () => {}, + className = "", +}) => ( + + + +); diff --git a/packages/nameguard-react/src/components/icons/Error.tsx b/packages/nameguard-react/src/components/icons/Error.tsx deleted file mode 100644 index 5b2c700a1..000000000 --- a/packages/nameguard-react/src/components/icons/Error.tsx +++ /dev/null @@ -1,20 +0,0 @@ -import React from "react"; - -export const ErrorIcon = (props: any) => ( - - - -); diff --git a/packages/nameguard-react/src/components/icons/ErrorShieldLarge.tsx b/packages/nameguard-react/src/components/icons/ErrorShieldLarge.tsx deleted file mode 100644 index 8703fd13a..000000000 --- a/packages/nameguard-react/src/components/icons/ErrorShieldLarge.tsx +++ /dev/null @@ -1,99 +0,0 @@ -import * as React from "react"; - -export const ErrorShieldLarge = (props) => ( - - - - - - - - - - - - - - - - - - - - - - - - - -); diff --git a/packages/nameguard-react/src/components/icons/ErrorShieldMedium.tsx b/packages/nameguard-react/src/components/icons/ErrorShieldMedium.tsx deleted file mode 100644 index add7b267a..000000000 --- a/packages/nameguard-react/src/components/icons/ErrorShieldMedium.tsx +++ /dev/null @@ -1,93 +0,0 @@ -import * as React from "react"; - -export const ErrorShieldMedium = (props) => ( - - - - - - - - - - - - - - - - - - - - - - - - -); diff --git a/packages/nameguard-react/src/components/icons/ErrorShieldSmall.tsx b/packages/nameguard-react/src/components/icons/ErrorShieldSmall.tsx deleted file mode 100644 index 80d0c1677..000000000 --- a/packages/nameguard-react/src/components/icons/ErrorShieldSmall.tsx +++ /dev/null @@ -1,20 +0,0 @@ -import * as React from "react"; - -export const ErrorShieldSmall = (props) => ( - - - -); diff --git a/packages/nameguard-react/src/components/icons/Loading.tsx b/packages/nameguard-react/src/components/icons/Loading.tsx deleted file mode 100644 index 087f7963b..000000000 --- a/packages/nameguard-react/src/components/icons/Loading.tsx +++ /dev/null @@ -1,33 +0,0 @@ -import React from "react"; - -export const LoadingIcon = (props: any) => ( - - - - - - - - - -); diff --git a/packages/nameguard-react/src/components/icons/LoadingShieldLarge.tsx b/packages/nameguard-react/src/components/icons/LoadingShieldLarge.tsx deleted file mode 100644 index 87e1c4be9..000000000 --- a/packages/nameguard-react/src/components/icons/LoadingShieldLarge.tsx +++ /dev/null @@ -1,98 +0,0 @@ -import * as React from "react"; - -export const LoadingShieldLarge = (props) => ( - - - - - - - - - - - - - - - - - - - - - - - - - - - -); diff --git a/packages/nameguard-react/src/components/icons/LoadingShieldMedium.tsx b/packages/nameguard-react/src/components/icons/LoadingShieldMedium.tsx deleted file mode 100644 index 8d52b616c..000000000 --- a/packages/nameguard-react/src/components/icons/LoadingShieldMedium.tsx +++ /dev/null @@ -1,98 +0,0 @@ -import * as React from "react"; - -export const LoadingShieldMedium = (props) => ( - - - - - - - - - - - - - - - - - - - - - - - - - - - -); diff --git a/packages/nameguard-react/src/components/icons/LoadingShieldSmall.tsx b/packages/nameguard-react/src/components/icons/LoadingShieldSmall.tsx deleted file mode 100644 index 51b87dc48..000000000 --- a/packages/nameguard-react/src/components/icons/LoadingShieldSmall.tsx +++ /dev/null @@ -1,33 +0,0 @@ -import * as React from "react"; - -export const LoadingShieldSmall = (props) => ( - - - - - - - - - -); diff --git a/packages/nameguard-react/src/components/icons/Pass.tsx b/packages/nameguard-react/src/components/icons/Pass.tsx deleted file mode 100644 index dd9b2ef2f..000000000 --- a/packages/nameguard-react/src/components/icons/Pass.tsx +++ /dev/null @@ -1,20 +0,0 @@ -import React from "react"; - -export const PassIcon = (props: any) => ( - - - -); diff --git a/packages/nameguard-react/src/components/icons/PassShieldLarge.tsx b/packages/nameguard-react/src/components/icons/PassShieldLarge.tsx deleted file mode 100644 index 4747a5264..000000000 --- a/packages/nameguard-react/src/components/icons/PassShieldLarge.tsx +++ /dev/null @@ -1,93 +0,0 @@ -import * as React from "react"; - -export const PassShieldLarge = (props) => ( - - - - - - - - - - - - - - - - - - - - - - - - - -); diff --git a/packages/nameguard-react/src/components/icons/PassShieldMedium.tsx b/packages/nameguard-react/src/components/icons/PassShieldMedium.tsx deleted file mode 100644 index eabd863e7..000000000 --- a/packages/nameguard-react/src/components/icons/PassShieldMedium.tsx +++ /dev/null @@ -1,91 +0,0 @@ -import * as React from "react"; - -export const PassShieldMedium = (props) => ( - - - - - - - - - - - - - - - - - - - - - - - -); diff --git a/packages/nameguard-react/src/components/icons/PassShieldSmall.tsx b/packages/nameguard-react/src/components/icons/PassShieldSmall.tsx deleted file mode 100644 index f5d217f96..000000000 --- a/packages/nameguard-react/src/components/icons/PassShieldSmall.tsx +++ /dev/null @@ -1,20 +0,0 @@ -import * as React from "react"; - -export const PassShieldSmall = (props) => ( - - - -); diff --git a/packages/nameguard-react/src/components/icons/RatingAlertLargeIcon.tsx b/packages/nameguard-react/src/components/icons/RatingAlertLargeIcon.tsx new file mode 100644 index 000000000..5b8ebf7ce --- /dev/null +++ b/packages/nameguard-react/src/components/icons/RatingAlertLargeIcon.tsx @@ -0,0 +1,202 @@ +import * as React from "react"; + +export const RatingAlertLargeIcon = (props: React.SVGProps) => ( + <> +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +); diff --git a/packages/nameguard-react/src/components/icons/RatingAlertMediumIcon.tsx b/packages/nameguard-react/src/components/icons/RatingAlertMediumIcon.tsx new file mode 100644 index 000000000..8102b7a9a --- /dev/null +++ b/packages/nameguard-react/src/components/icons/RatingAlertMediumIcon.tsx @@ -0,0 +1,44 @@ +import * as React from "react"; + +export const RatingAlertMediumIcon = ( + props: React.SVGProps, + isInteractive = false, +) => ( +
+
+ + + +
+
+ + + +
+
+); diff --git a/packages/nameguard-react/src/components/icons/RatingAlertMicroIcon.tsx b/packages/nameguard-react/src/components/icons/RatingAlertMicroIcon.tsx new file mode 100644 index 000000000..f36f6966e --- /dev/null +++ b/packages/nameguard-react/src/components/icons/RatingAlertMicroIcon.tsx @@ -0,0 +1,46 @@ +import React from "react"; + +export const RatingAlertMicroIcon = ( + props: React.SVGProps, + isInteractive = false, +) => ( +
+
+ + + +
+
+ + + +
+
+); diff --git a/packages/nameguard-react/src/components/icons/RatingAlertSmallIcon.tsx b/packages/nameguard-react/src/components/icons/RatingAlertSmallIcon.tsx new file mode 100644 index 000000000..e29a5683a --- /dev/null +++ b/packages/nameguard-react/src/components/icons/RatingAlertSmallIcon.tsx @@ -0,0 +1,44 @@ +import * as React from "react"; + +export const RatingAlertSmallIcon = ( + props: React.SVGProps, + isInteractive = false, +) => ( +
+
+ + + +
+
+ + + +
+
+); diff --git a/packages/nameguard-react/src/components/icons/RatingLoadingIcon.tsx b/packages/nameguard-react/src/components/icons/RatingLoadingIcon.tsx new file mode 100644 index 000000000..275429c23 --- /dev/null +++ b/packages/nameguard-react/src/components/icons/RatingLoadingIcon.tsx @@ -0,0 +1,23 @@ +import { RatingIconSize } from "../Report/RatingIcon"; +import { RatingLoadingLargeIcon } from "./RatingLoadingLargeIcon"; +import { RatingLoadingMediumIcon } from "./RatingLoadingMediumIcon"; +import { RatingLoadingSmallIcon } from "./RatingLoadingSmallIcon"; +import { RatingLoadingMicroIcon } from "./RatingLoadingMicroIcon"; + +import React from "react"; + +export const RatingLoadingIcon = ({ + size, + ...props +}: { size: RatingIconSize } & React.ComponentProps) => { + switch (size) { + case RatingIconSize.large: + return ; + case RatingIconSize.medium: + return ; + case RatingIconSize.small: + return ; + case RatingIconSize.micro: + return ; + } +}; diff --git a/packages/nameguard-react/src/components/icons/RatingLoadingLargeIcon.tsx b/packages/nameguard-react/src/components/icons/RatingLoadingLargeIcon.tsx new file mode 100644 index 000000000..2a61fef41 --- /dev/null +++ b/packages/nameguard-react/src/components/icons/RatingLoadingLargeIcon.tsx @@ -0,0 +1,198 @@ +import * as React from "react"; + +export const RatingLoadingLargeIcon = ( + props: React.SVGProps, +) => ( + <> +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +); diff --git a/packages/nameguard-react/src/components/icons/RatingLoadingMediumIcon.tsx b/packages/nameguard-react/src/components/icons/RatingLoadingMediumIcon.tsx new file mode 100644 index 000000000..8a193901e --- /dev/null +++ b/packages/nameguard-react/src/components/icons/RatingLoadingMediumIcon.tsx @@ -0,0 +1,36 @@ +import * as React from "react"; + +export const RatingLoadingMediumIcon = ( + props: React.SVGProps, +) => ( +
+ + + + + + + + + +
+); diff --git a/packages/nameguard-react/src/components/icons/RatingLoadingMicroIcon.tsx b/packages/nameguard-react/src/components/icons/RatingLoadingMicroIcon.tsx new file mode 100644 index 000000000..211c2f662 --- /dev/null +++ b/packages/nameguard-react/src/components/icons/RatingLoadingMicroIcon.tsx @@ -0,0 +1,36 @@ +import React from "react"; + +export const RatingLoadingMicroIcon = ( + props: React.SVGProps, +) => ( +
+ + + + + + + + + +
+); diff --git a/packages/nameguard-react/src/components/icons/RatingLoadingSmallIcon.tsx b/packages/nameguard-react/src/components/icons/RatingLoadingSmallIcon.tsx new file mode 100644 index 000000000..cb9d26f5f --- /dev/null +++ b/packages/nameguard-react/src/components/icons/RatingLoadingSmallIcon.tsx @@ -0,0 +1,36 @@ +import * as React from "react"; + +export const RatingLoadingSmallIcon = ( + props: React.SVGProps, +) => ( +
+ + + + + + + + + +
+); diff --git a/packages/nameguard-react/src/components/icons/RatingPassLargeIcon.tsx b/packages/nameguard-react/src/components/icons/RatingPassLargeIcon.tsx new file mode 100644 index 000000000..1ca5e5ecb --- /dev/null +++ b/packages/nameguard-react/src/components/icons/RatingPassLargeIcon.tsx @@ -0,0 +1,186 @@ +import * as React from "react"; + +export const RatingPassLargeIcon = (props: React.SVGProps) => ( + <> +
+ + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + +
+ +); diff --git a/packages/nameguard-react/src/components/icons/RatingPassMediumIcon.tsx b/packages/nameguard-react/src/components/icons/RatingPassMediumIcon.tsx new file mode 100644 index 000000000..cbbc5000a --- /dev/null +++ b/packages/nameguard-react/src/components/icons/RatingPassMediumIcon.tsx @@ -0,0 +1,44 @@ +import * as React from "react"; + +export const RatingPassMediumIcon = ( + props: React.SVGProps, + isInteractive = false, +) => ( +
+
+ + + +
+
+ + + +
+
+); diff --git a/packages/nameguard-react/src/components/icons/RatingPassMicroIcon.tsx b/packages/nameguard-react/src/components/icons/RatingPassMicroIcon.tsx new file mode 100644 index 000000000..f5185aebe --- /dev/null +++ b/packages/nameguard-react/src/components/icons/RatingPassMicroIcon.tsx @@ -0,0 +1,44 @@ +import React from "react"; + +export const RatingPassMicroIcon = ( + props: React.SVGProps, + isInteractive = false, +) => ( +
+
+ + + +
+
+ + + +
+
+); diff --git a/packages/nameguard-react/src/components/icons/RatingPassSmallIcon.tsx b/packages/nameguard-react/src/components/icons/RatingPassSmallIcon.tsx new file mode 100644 index 000000000..5c6548735 --- /dev/null +++ b/packages/nameguard-react/src/components/icons/RatingPassSmallIcon.tsx @@ -0,0 +1,44 @@ +import * as React from "react"; + +export const RatingPassSmallIcon = ( + props: React.SVGProps, + isInteractive = false, +) => ( +
+
+ + + +
+
+ + + +
+
+); diff --git a/packages/nameguard-react/src/components/icons/RatingUnknownIcon.tsx b/packages/nameguard-react/src/components/icons/RatingUnknownIcon.tsx new file mode 100644 index 000000000..8979097c5 --- /dev/null +++ b/packages/nameguard-react/src/components/icons/RatingUnknownIcon.tsx @@ -0,0 +1,27 @@ +import { RatingIconSize } from "../Report/RatingIcon"; +import { RatingUnknownLargeIcon } from "./RatingUnknownLargeIcon"; +import { RatingUnknownMediumIcon } from "./RatingUnknownMediumIcon"; +import { RatingUnknownSmallIcon } from "./RatingUnknownSmallIcon"; +import { RatingUnknownMicroIcon } from "./RatingUnknownMicroIcon"; + +import React from "react"; + +export const RatingUnknownIcon = ({ + size, + isInteractive = false, + ...props +}: { + size: RatingIconSize; + isInteractive?: boolean; +} & React.ComponentProps) => { + switch (size) { + case RatingIconSize.large: + return RatingUnknownLargeIcon(props); + case RatingIconSize.medium: + return RatingUnknownMediumIcon(props, isInteractive); + case RatingIconSize.small: + return RatingUnknownSmallIcon(props, isInteractive); + case RatingIconSize.micro: + return RatingUnknownMicroIcon(props, isInteractive); + } +}; diff --git a/packages/nameguard-react/src/components/icons/RatingUnknownLargeIcon.tsx b/packages/nameguard-react/src/components/icons/RatingUnknownLargeIcon.tsx new file mode 100644 index 000000000..6dca45ee3 --- /dev/null +++ b/packages/nameguard-react/src/components/icons/RatingUnknownLargeIcon.tsx @@ -0,0 +1,196 @@ +import * as React from "react"; + +export const RatingUnknownLargeIcon = ( + props: React.SVGProps, +) => ( + <> +
+ + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
+ +); diff --git a/packages/nameguard-react/src/components/icons/RatingUnknownMediumIcon.tsx b/packages/nameguard-react/src/components/icons/RatingUnknownMediumIcon.tsx new file mode 100644 index 000000000..b4662de0f --- /dev/null +++ b/packages/nameguard-react/src/components/icons/RatingUnknownMediumIcon.tsx @@ -0,0 +1,46 @@ +import * as React from "react"; + +export const RatingUnknownMediumIcon = ( + props: React.SVGProps, + isInteractive = false, +) => { + return ( +
+
+ + + +
+
+ + + +
+
+ ); +}; diff --git a/packages/nameguard-react/src/components/icons/RatingUnknownMicroIcon.tsx b/packages/nameguard-react/src/components/icons/RatingUnknownMicroIcon.tsx new file mode 100644 index 000000000..ae287c282 --- /dev/null +++ b/packages/nameguard-react/src/components/icons/RatingUnknownMicroIcon.tsx @@ -0,0 +1,52 @@ +import React from "react"; + +export const RatingUnknownMicroIcon = ( + props: React.SVGProps, + isInteractive = false, +) => { + return ( +
+
+ + + +
+
+ + + +
+
+ ); +}; diff --git a/packages/nameguard-react/src/components/icons/RatingUnknownSmallIcon.tsx b/packages/nameguard-react/src/components/icons/RatingUnknownSmallIcon.tsx new file mode 100644 index 000000000..7842997c6 --- /dev/null +++ b/packages/nameguard-react/src/components/icons/RatingUnknownSmallIcon.tsx @@ -0,0 +1,44 @@ +import * as React from "react"; + +export const RatingUnknownSmallIcon = ( + props: React.SVGProps, + isInteractive = false, +) => ( +
+
+ + + +
+
+ + + +
+
+); diff --git a/packages/nameguard-react/src/components/icons/RatingWarnLargeIcon.tsx b/packages/nameguard-react/src/components/icons/RatingWarnLargeIcon.tsx new file mode 100644 index 000000000..aa2d86b1c --- /dev/null +++ b/packages/nameguard-react/src/components/icons/RatingWarnLargeIcon.tsx @@ -0,0 +1,180 @@ +import * as React from "react"; + +export const RatingWarnLargeIcon = (props: React.SVGProps) => ( + <> +
+ + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + +
+ +); diff --git a/packages/nameguard-react/src/components/icons/RatingWarnMediumIcon.tsx b/packages/nameguard-react/src/components/icons/RatingWarnMediumIcon.tsx new file mode 100644 index 000000000..2436e0857 --- /dev/null +++ b/packages/nameguard-react/src/components/icons/RatingWarnMediumIcon.tsx @@ -0,0 +1,44 @@ +import * as React from "react"; + +export const RatingWarnMediumIcon = ( + props: React.SVGProps, + isInteractive = false, +) => ( +
+
+ + + +
+
+ + + +
+
+); diff --git a/packages/nameguard-react/src/components/icons/RatingWarnMicroIcon.tsx b/packages/nameguard-react/src/components/icons/RatingWarnMicroIcon.tsx new file mode 100644 index 000000000..563988f7f --- /dev/null +++ b/packages/nameguard-react/src/components/icons/RatingWarnMicroIcon.tsx @@ -0,0 +1,44 @@ +import React from "react"; + +export const RatingWarnMicroIcon = ( + props: React.SVGProps, + isInteractive = false, +) => ( +
+
+ + + +
+
+ + + +
+
+); diff --git a/packages/nameguard-react/src/components/icons/RatingWarnSmallIcon.tsx b/packages/nameguard-react/src/components/icons/RatingWarnSmallIcon.tsx new file mode 100644 index 000000000..c7f4b342f --- /dev/null +++ b/packages/nameguard-react/src/components/icons/RatingWarnSmallIcon.tsx @@ -0,0 +1,44 @@ +import * as React from "react"; + +export const RatingWarnSmallIcon = ( + props: React.SVGProps, + isInteractive = false, +) => ( +
+
+ + + +
+
+ + + +
+
+); diff --git a/packages/nameguard-react/src/components/icons/Warn.tsx b/packages/nameguard-react/src/components/icons/Warn.tsx deleted file mode 100644 index 2ba1b5ab4..000000000 --- a/packages/nameguard-react/src/components/icons/Warn.tsx +++ /dev/null @@ -1,20 +0,0 @@ -import React from "react"; - -export const WarnIcon = (props: any) => ( - - - -); diff --git a/packages/nameguard-react/src/components/icons/WarnShieldLarge.tsx b/packages/nameguard-react/src/components/icons/WarnShieldLarge.tsx deleted file mode 100644 index 78e7644b0..000000000 --- a/packages/nameguard-react/src/components/icons/WarnShieldLarge.tsx +++ /dev/null @@ -1,87 +0,0 @@ -import * as React from "react"; - -export const WarnShieldLarge = (props) => ( - - - - - - - - - - - - - - - - - - - - - - - - - -); diff --git a/packages/nameguard-react/src/components/icons/WarnShieldMedium.tsx b/packages/nameguard-react/src/components/icons/WarnShieldMedium.tsx deleted file mode 100644 index aa088b3b1..000000000 --- a/packages/nameguard-react/src/components/icons/WarnShieldMedium.tsx +++ /dev/null @@ -1,91 +0,0 @@ -import * as React from "react"; - -export const WarnShieldMedium = (props) => ( - - - - - - - - - - - - - - - - - - - - - - - -); diff --git a/packages/nameguard-react/src/components/icons/WarnShieldSmall.tsx b/packages/nameguard-react/src/components/icons/WarnShieldSmall.tsx deleted file mode 100644 index ffd2c6101..000000000 --- a/packages/nameguard-react/src/components/icons/WarnShieldSmall.tsx +++ /dev/null @@ -1,20 +0,0 @@ -import * as React from "react"; - -export const WarnShieldSmall = (props) => ( - - - -); diff --git a/packages/nameguard-react/src/hooks/use-outside-click.ts b/packages/nameguard-react/src/hooks/use-outside-click.ts index 64f185df0..17742ce4a 100644 --- a/packages/nameguard-react/src/hooks/use-outside-click.ts +++ b/packages/nameguard-react/src/hooks/use-outside-click.ts @@ -4,7 +4,7 @@ type Callback = () => void; export const useOutsideClick = ( callback: Callback, - isOpen: boolean, + isOpen: boolean ): MutableRefObject => { const ref = useRef(null); diff --git a/packages/nameguard-react/src/index.ts b/packages/nameguard-react/src/index.ts index aacdf9f0f..2ae2a634c 100644 --- a/packages/nameguard-react/src/index.ts +++ b/packages/nameguard-react/src/index.ts @@ -1,16 +1,20 @@ +export { ratingTextColor, checkResultCodeTextColor } from "./utils/text"; export { Tooltip } from "./components/Tooltip/Tooltip"; export { Search } from "./components/Search/Search"; export { Report } from "./components/Report/Report"; export { SearchModal } from "./components/Search/SearchModal"; export { SettingsModal } from "./components/SettingsModal/SettingsModal"; + +export { ReportBadge } from "./components/ReportBadge"; +export { ReportIcon } from "./components/ReportIcon"; +export { CheckResultCodeIcon } from "./components/Report/CheckResultCodeIcon"; +export { RatingIcon, RatingIconSize } from "./components/Report/RatingIcon"; +export { ReportModalNameBadge } from "./components/Report/ReportModalNameBadge"; + +export { RatingLoadingIcon } from "./components/icons/RatingLoadingIcon"; +export { RatingUnknownIcon } from "./components/icons/RatingUnknownIcon"; + export { useChatModalStore } from "./stores/chat"; export { useSearchStore } from "./stores/search"; -export { NameBadge } from "./components/NameBadge/NameBadge"; -export { NameShield } from "./components/NameShield"; -export { Shield } from "./components/Shield/Shield"; -export { ShieldSize } from "./components/Report/Shield"; -export { Shield as ShieldIcon } from "./components/Report/Shield"; -export { LoadingIcon as LoadingShield } from "./components/icons/Loading"; - import "@namehash/ens-webfont"; diff --git a/packages/nameguard-react/src/utils/text.ts b/packages/nameguard-react/src/utils/text.ts new file mode 100644 index 000000000..f76ed4941 --- /dev/null +++ b/packages/nameguard-react/src/utils/text.ts @@ -0,0 +1,65 @@ +import { CheckResultCode, Rating } from "@namehash/nameguard"; + +export function checkResultCodeTextColor( + check: CheckResultCode, + isInteractive = false, +): string { + let color: string | null = null; + + switch (check) { + case CheckResultCode.alert: { + color = isInteractive + ? "text-red-600 hover:text-red-700" + : "text-red-600"; + break; + } + case CheckResultCode.pass: { + color = isInteractive + ? "text-emerald-600 hover:text-emerald-800" + : "text-emerald-600"; + break; + } + case CheckResultCode.warn: { + color = isInteractive + ? "text-yellow-600 hover:text-yellow-700" + : "text-yellow-600"; + break; + } + case CheckResultCode.info: + case CheckResultCode.skip: { + color = isInteractive + ? "text-gray-400 hover:text-gray-500" + : "text-gray-400"; + break; + } + } + + return color; +} + +export function ratingTextColor(rating: Rating, isInteractive = false): string { + let color: string | null = null; + + switch (rating) { + case Rating.alert: { + color = isInteractive + ? "text-red-600 hover:text-red-700" + : "text-red-600"; + break; + } + case Rating.pass: { + color = isInteractive + ? "text-emerald-600 hover:text-emerald-800" + : "text-emerald-600"; + break; + } + case Rating.warn: { + color = isInteractive + ? "text-yellow-600 hover:text-yellow-700" + : "text-yellow-600"; + break; + } + } + + return color; +} diff --git a/packages/nameguard-sdk/examples/with-nextjs/src/app/components/icons/Alert.tsx b/packages/nameguard-sdk/examples/with-nextjs/src/app/components/icons/Alert.tsx deleted file mode 100644 index aeba04769..000000000 --- a/packages/nameguard-sdk/examples/with-nextjs/src/app/components/icons/Alert.tsx +++ /dev/null @@ -1,17 +0,0 @@ -export const AlertIcon = (props: any) => ( - - - -); diff --git a/packages/nameguard-sdk/examples/with-nextjs/src/app/components/icons/Warn.tsx b/packages/nameguard-sdk/examples/with-nextjs/src/app/components/icons/Warn.tsx deleted file mode 100644 index 88b0105e7..000000000 --- a/packages/nameguard-sdk/examples/with-nextjs/src/app/components/icons/Warn.tsx +++ /dev/null @@ -1,17 +0,0 @@ -export const WarnIcon = (props: any) => ( - - - -); diff --git a/packages/nameguard-sdk/package.json b/packages/nameguard-sdk/package.json index c8b519917..da64ed5d1 100644 --- a/packages/nameguard-sdk/package.json +++ b/packages/nameguard-sdk/package.json @@ -29,7 +29,7 @@ "@types/node": "^20.6.2", "tsup": "^7.2.0", "typescript": "^5.2.2", - "vitest": "^0.34.5" + "vitest": "1.4.0" }, "dependencies": { "whatwg-fetch": "3.6.19" diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 9efcbf9c8..e58705606 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -9,14 +9,72 @@ importers: .: devDependencies: eslint: - specifier: 8.51.0 - version: 8.51.0 + specifier: ^8.56.0 + version: 8.56.0 prettier: - specifier: ^3.0.3 - version: 3.0.3 + specifier: ^3.2.5 + version: 3.2.5 + rimraf: + specifier: ^5.0.7 + version: 5.0.7 turbo: - specifier: 1.10.16 - version: 1.10.16 + specifier: 1.13.3 + version: 1.13.3 + + apps/examples.nameguard.io: + dependencies: + '@headlessui-float/react': + specifier: 0.11.4 + version: 0.11.4(@headlessui/react@1.7.17)(react-dom@18.2.0)(react@18.2.0) + '@headlessui/react': + specifier: 1.7.17 + version: 1.7.17(react-dom@18.2.0)(react@18.2.0) + '@namehash/nameguard': + specifier: workspace:* + version: link:../../packages/nameguard-sdk + '@namehash/nameguard-react': + specifier: workspace:* + version: link:../../packages/nameguard-react + classcat: + specifier: 5.0.4 + version: 5.0.4 + next: + specifier: 14.1.0 + version: 14.1.0(react-dom@18.2.0)(react@18.2.0) + react: + specifier: ^18 + version: 18.2.0 + react-dom: + specifier: ^18 + version: 18.2.0(react@18.2.0) + devDependencies: + '@types/node': + specifier: ^20 + version: 20.12.12 + '@types/react': + specifier: ^18 + version: 18.3.2 + '@types/react-dom': + specifier: ^18 + version: 18.3.0 + autoprefixer: + specifier: ^10.0.1 + version: 10.4.19(postcss@8.4.38) + eslint: + specifier: ^8.56.0 + version: 8.56.0 + eslint-config-next: + specifier: 14.2.3 + version: 14.2.3(eslint@8.56.0)(typescript@5.3.3) + postcss: + specifier: ^8 + version: 8.4.38 + tailwindcss: + specifier: ^3.3.0 + version: 3.4.3 + typescript: + specifier: ^5 + version: 5.3.3 apps/website: dependencies: @@ -62,6 +120,9 @@ importers: react-dom: specifier: 18.2.0 version: 18.2.0(react@18.2.0) + sharp: + specifier: ^0.33.3 + version: 0.33.3 sugar-high: specifier: 0.5.5 version: 0.5.5 @@ -79,11 +140,11 @@ importers: specifier: latest version: 10.4.19(postcss@8.4.38) eslint: - specifier: latest - version: 9.2.0 + specifier: ^8.56.0 + version: 8.56.0 eslint-config-next: - specifier: latest - version: 14.2.3(eslint@9.2.0)(typescript@5.4.5) + specifier: 14.2.3 + version: 14.2.3(eslint@8.56.0)(typescript@5.4.5) postcss: specifier: latest version: 8.4.38 @@ -104,7 +165,7 @@ importers: version: 14.1.4(react-dom@18.2.0)(react@18.2.0) typescript: specifier: ^5.3.3 - version: 5.4.5 + version: 5.3.3 packages/ens-utils: dependencies: @@ -134,8 +195,8 @@ importers: specifier: 5.1.7 version: 5.1.7(@types/node@20.12.12) vitest: - specifier: 1.3.1 - version: 1.3.1 + specifier: 1.4.0 + version: 1.4.0(@types/node@20.12.12) packages/ens-webfont: {} @@ -151,13 +212,13 @@ importers: specifier: 2.0.18 version: 2.0.18(react@18.2.0) '@namehash/ens-utils': - specifier: latest - version: 1.3.0 + specifier: 1.9.0 + version: 1.9.0(typescript@5.3.3) '@namehash/ens-webfont': - specifier: latest + specifier: workspace:^ version: link:../ens-webfont '@namehash/nameguard': - specifier: latest + specifier: workspace:^ version: link:../nameguard-sdk classcat: specifier: 5.0.4 @@ -180,10 +241,10 @@ importers: devDependencies: tsup: specifier: ^7.2.0 - version: 7.2.0(typescript@5.2.2) + version: 7.2.0(typescript@5.3.3) typescript: specifier: ^5.2.2 - version: 5.2.2 + version: 5.3.3 packages/nameguard-sdk: dependencies: @@ -196,73 +257,16 @@ importers: version: 20.12.12 tsup: specifier: ^7.2.0 - version: 7.2.0(typescript@5.4.5) + version: 7.2.0(typescript@5.3.3) typescript: specifier: ^5.2.2 - version: 5.4.5 + version: 5.3.3 vitest: - specifier: ^0.34.5 - version: 0.34.5 - - packages/nameguard-sdk/examples/with-nextjs: - dependencies: - '@headlessui-float/react': - specifier: 0.11.4 - version: 0.11.4(@headlessui/react@1.7.17)(react-dom@18.2.0)(react@18.2.0) - '@headlessui/react': - specifier: 1.7.17 - version: 1.7.17(react-dom@18.2.0)(react@18.2.0) - '@namehash/nameguard': - specifier: 0.0.17 - version: 0.0.17 - classcat: - specifier: 5.0.4 - version: 5.0.4 - next: - specifier: 14.0.2 - version: 14.0.2(react-dom@18.2.0)(react@18.2.0) - react: - specifier: ^18 - version: 18.2.0 - react-dom: - specifier: ^18 - version: 18.2.0(react@18.2.0) - devDependencies: - '@types/node': - specifier: ^20 - version: 20.12.12 - '@types/react': - specifier: ^18 - version: 18.3.2 - '@types/react-dom': - specifier: ^18 - version: 18.3.0 - autoprefixer: - specifier: ^10.0.1 - version: 10.4.19(postcss@8.4.38) - eslint: - specifier: ^8 - version: 8.51.0 - eslint-config-next: - specifier: 14.0.2 - version: 14.0.2(eslint@8.51.0)(typescript@5.4.5) - postcss: - specifier: ^8 - version: 8.4.38 - tailwindcss: - specifier: ^3.3.0 - version: 3.4.3 - typescript: - specifier: ^5 - version: 5.4.5 + specifier: 1.4.0 + version: 1.4.0(@types/node@20.12.12) packages: - /@aashutoshrathi/word-wrap@1.2.6: - resolution: {integrity: sha512-1Yjs2SvM8TflER/OD3cOjhWWOZb58A2t7wpE2S9XfBYTiIl+XFhQG2bjy4Pu1I+EAlCNUzRDYDdFwFYUKvXcIA==} - engines: {node: '>=0.10.0'} - dev: true - /@adraffy/ens-normalize@1.10.0: resolution: {integrity: sha512-nA9XHtlAkYfJxY7bce8DcN7eKxWWCWkU+1GR9d+U6MbNpfwQp8TI7vqOsBsMcHoT4mBu2kypKoSKnghEzOOq5Q==} dev: false @@ -275,11 +279,11 @@ packages: resolution: {integrity: sha512-UrcABB+4bUrFABwbluTIBErXwvbsU/V7TZWfmbgJfbkwiBuziS9gxdODUyuiecfdGQ85jglMW6juS3+z5TsKLw==} engines: {node: '>=10'} - /@babel/runtime@7.23.1: - resolution: {integrity: sha512-hC2v6p8ZSI/W0HUzh3V8C5g+NwSKzKPtJwSpTjwl0o297GP9+ZLQSkdvHz46CM3LqyoXxq+5G9komY+eSqSO0g==} + /@babel/runtime@7.24.5: + resolution: {integrity: sha512-Nms86NXrsaeU9vbBJKni6gXiEXZ4CVpYVzEjDH9Sb8vmZ3UljyA1GSOJl/6LGPO8EHLuSF9H+IxNXHPX8QHJ4g==} engines: {node: '>=6.9.0'} dependencies: - regenerator-runtime: 0.14.0 + regenerator-runtime: 0.14.1 dev: true /@calcom/embed-core@1.3.2: @@ -304,6 +308,14 @@ packages: '@calcom/embed-core': 1.3.2 dev: false + /@emnapi/runtime@1.1.1: + resolution: {integrity: sha512-3bfqkzuR1KLx57nZfjr2NLnFOobvyS0aTszaEGCGqmYMVDRaGvgIZbjGSV/MHSSmLgQ/b9JFHQ5xm5WRZYd+XQ==} + requiresBuild: true + dependencies: + tslib: 2.6.2 + dev: false + optional: true + /@esbuild/aix-ppc64@0.19.12: resolution: {integrity: sha512-bmoCYyWdEL3wDQIVbcyzRyeKLgk2WtWLTWz1ZIAZF/EGbNOwSA6ew3PftJ1PqMiOOGu0OyFMzG53L0zqIpPeNA==} engines: {node: '>=12'} @@ -709,57 +721,30 @@ packages: dev: true optional: true - /@eslint-community/eslint-utils@4.4.0(eslint@8.51.0): - resolution: {integrity: sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - peerDependencies: - eslint: ^6.0.0 || ^7.0.0 || >=8.0.0 - dependencies: - eslint: 8.51.0 - eslint-visitor-keys: 3.4.3 - dev: true - - /@eslint-community/eslint-utils@4.4.0(eslint@9.2.0): + /@eslint-community/eslint-utils@4.4.0(eslint@8.56.0): resolution: {integrity: sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: eslint: ^6.0.0 || ^7.0.0 || >=8.0.0 dependencies: - eslint: 9.2.0 + eslint: 8.56.0 eslint-visitor-keys: 3.4.3 dev: true - /@eslint-community/regexpp@4.9.1: - resolution: {integrity: sha512-Y27x+MBLjXa+0JWDhykM3+JE+il3kHKAEqabfEWq3SDhZjLYb6/BHL/JKFnH3fe207JaXkyDo685Oc2Glt6ifA==} + /@eslint-community/regexpp@4.10.0: + resolution: {integrity: sha512-Cu96Sd2By9mCNTx2iyKOmq10v22jUVQv0lQnlGNy16oE9589yE+QADPbrMGCkA51cKZSg3Pu/aTJVTGfL/qjUA==} engines: {node: ^12.0.0 || ^14.0.0 || >=16.0.0} dev: true - /@eslint/eslintrc@2.1.2: - resolution: {integrity: sha512-+wvgpDsrB1YqAMdEUCcnTlpfVBH7Vqn6A/NT3D8WVXFIaKMlErPIZT3oCIAVCOtarRpMtelZLqJeU3t7WY6X6g==} + /@eslint/eslintrc@2.1.4: + resolution: {integrity: sha512-269Z39MS6wVJtsoUl10L60WdkhJVdPG24Q4eZTH3nnF6lpvSShEK3wQjDX9JRWAUPvPh7COouPpU9IrqaZFvtQ==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} dependencies: ajv: 6.12.6 debug: 4.3.4 espree: 9.6.1 - globals: 13.22.0 - ignore: 5.2.4 - import-fresh: 3.3.0 - js-yaml: 4.1.0 - minimatch: 3.1.2 - strip-json-comments: 3.1.1 - transitivePeerDependencies: - - supports-color - dev: true - - /@eslint/eslintrc@3.0.2: - resolution: {integrity: sha512-wV19ZEGEMAC1eHgrS7UQPqsdEiCIbTKTasEfcXAigzoXICcqZSjBZEHlZwNVvKg6UBCjSlos84XiLqsRJnIcIg==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - dependencies: - ajv: 6.12.6 - debug: 4.3.4 - espree: 10.0.1 - globals: 14.0.0 - ignore: 5.2.4 + globals: 13.24.0 + ignore: 5.3.1 import-fresh: 3.3.0 js-yaml: 4.1.0 minimatch: 3.1.2 @@ -768,16 +753,11 @@ packages: - supports-color dev: true - /@eslint/js@8.51.0: - resolution: {integrity: sha512-HxjQ8Qn+4SI3/AFv6sOrDB+g6PpUTDwSJiQqOrnneEk8L71161srI9gjzzZvYVbzHiVg/BvcH95+cK/zfIt4pg==} + /@eslint/js@8.56.0: + resolution: {integrity: sha512-gMsVel9D7f2HLkBma9VbtzZRehRogVRfbr++f06nL2vnCGCNlzOD+/MUov/F4p8myyAHspEhVobgjpX64q5m6A==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} dev: true - /@eslint/js@9.2.0: - resolution: {integrity: sha512-ESiIudvhoYni+MdsI8oD7skpprZ89qKocwRM2KEvhhBJ9nl5MRh7BXU5GTod7Mdygq+AUl+QzId6iWJKR/wABA==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - dev: true - /@ethersproject/abstract-provider@5.7.0: resolution: {integrity: sha512-R41c9UkchKCpAqStMYUpdunjo3pkEvZC3FAwZn5S5MGbXoMQOHIdHItezTETxAO5bevtMApSyEhn9+CHcDsWBw==} dependencies: @@ -923,17 +903,17 @@ packages: '@ethersproject/strings': 5.7.0 dev: false - /@floating-ui/core@1.5.0: - resolution: {integrity: sha512-kK1h4m36DQ0UHGj5Ah4db7R0rHemTqqO0QLvUqi1/mUUp3LuAWbWxdxSIf/XsnH9VS6rRVPLJCncjRzUvyCLXg==} + /@floating-ui/core@1.6.2: + resolution: {integrity: sha512-+2XpQV9LLZeanU4ZevzRnGFg2neDeKHgFLjP6YLW+tly0IvrhqT4u8enLGjLH3qeh85g19xY5rsAusfwTdn5lg==} dependencies: - '@floating-ui/utils': 0.1.6 + '@floating-ui/utils': 0.2.2 dev: false - /@floating-ui/dom@1.5.3: - resolution: {integrity: sha512-ClAbQnEqJAKCJOEbbLo5IUlZHkNszqhuxS4fHAVxRPXPya6Ysf2G8KypnYcOTpx6I8xcgF9bbHb6g/2KpbV8qA==} + /@floating-ui/dom@1.6.5: + resolution: {integrity: sha512-Nsdud2X65Dz+1RHjAIP0t8z5e2ff/IRbei6BqFrl1urT8sDVzM1HMQ+R0XcU5ceRfyO3I6ayeqIfh+6Wb8LGTw==} dependencies: - '@floating-ui/core': 1.5.0 - '@floating-ui/utils': 0.1.6 + '@floating-ui/core': 1.6.2 + '@floating-ui/utils': 0.2.2 dev: false /@floating-ui/react-dom@1.3.0(react-dom@18.2.0)(react@18.2.0): @@ -942,7 +922,7 @@ packages: react: '>=16.8.0' react-dom: '>=16.8.0' dependencies: - '@floating-ui/dom': 1.5.3 + '@floating-ui/dom': 1.6.5 react: 18.2.0 react-dom: 18.2.0(react@18.2.0) dev: false @@ -954,14 +934,14 @@ packages: react-dom: '>=16.8.0' dependencies: '@floating-ui/react-dom': 1.3.0(react-dom@18.2.0)(react@18.2.0) - aria-hidden: 1.2.3 + aria-hidden: 1.2.4 react: 18.2.0 react-dom: 18.2.0(react@18.2.0) tabbable: 6.2.0 dev: false - /@floating-ui/utils@0.1.6: - resolution: {integrity: sha512-OfX7E2oUDYxtBvsuS4e/jSn4Q9Qb6DzgeYtsAdkPZ47znpoNsMgZw0+tVijiv3uGNR6dgNlty6r9rzIzHjtd/A==} + /@floating-ui/utils@0.2.2: + resolution: {integrity: sha512-J4yDIIthosAsRZ5CPYP/jQvUAQtlZTTD/4suA08/FEnlxqW3sKS9iAhgsa9VYLZ6vDHn/ixJgIqRQPotoBjxIw==} dev: false /@headlessui-float/react@0.11.4(@headlessui/react@1.7.17)(react-dom@18.2.0)(react@18.2.0): @@ -971,8 +951,8 @@ packages: react: ^16 || ^17 || ^18 react-dom: ^16 || ^17 || ^18 dependencies: - '@floating-ui/core': 1.5.0 - '@floating-ui/dom': 1.5.3 + '@floating-ui/core': 1.6.2 + '@floating-ui/dom': 1.6.5 '@floating-ui/react': 0.19.2(react-dom@18.2.0)(react@18.2.0) '@headlessui/react': 1.7.17(react-dom@18.2.0)(react@18.2.0) react: 18.2.0 @@ -999,19 +979,8 @@ packages: react: 18.2.0 dev: false - /@humanwhocodes/config-array@0.11.11: - resolution: {integrity: sha512-N2brEuAadi0CcdeMXUkhbZB84eskAc8MEX1By6qEchoVywSgXPIjou4rYsl0V3Hj0ZnuGycGCjdNgockbzeWNA==} - engines: {node: '>=10.10.0'} - dependencies: - '@humanwhocodes/object-schema': 1.2.1 - debug: 4.3.4 - minimatch: 3.1.2 - transitivePeerDependencies: - - supports-color - dev: true - - /@humanwhocodes/config-array@0.13.0: - resolution: {integrity: sha512-DZLEEqFWQFiyK6h5YIeynKx7JlvCYWL0cImfSRXZ9l4Sg2efkFGTuFf6vzXjK1cq6IYkU+Eg/JizXw+TD2vRNw==} + /@humanwhocodes/config-array@0.11.14: + resolution: {integrity: sha512-3T8LkOmg45BV5FICb15QQMsyUSWrQ8AygVfC7ZG32zOalnqrilm018ZVCw0eapXux8FtA33q8PSRSstjee3jSg==} engines: {node: '>=10.10.0'} dependencies: '@humanwhocodes/object-schema': 2.0.3 @@ -1026,204 +995,376 @@ packages: engines: {node: '>=12.22'} dev: true - /@humanwhocodes/object-schema@1.2.1: - resolution: {integrity: sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==} - dev: true - /@humanwhocodes/object-schema@2.0.3: resolution: {integrity: sha512-93zYdMES/c1D69yZiKDBj0V24vqNzB/koF26KPaagAfd3P/4gUlh3Dys5ogAK+Exi9QyzlD8x/08Zt7wIKcDcA==} dev: true - /@humanwhocodes/retry@0.2.4: - resolution: {integrity: sha512-Ttl/jHpxfS3st5sxwICYfk4pOH0WrLI1SpW283GgQL7sCWU7EHIOhX4b4fkIxr3tkfzwg8+FNojtzsIEE7Ecgg==} - engines: {node: '>=18.18'} - dev: true - - /@isaacs/cliui@8.0.2: - resolution: {integrity: sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==} - engines: {node: '>=12'} - dependencies: - string-width: 5.1.2 - string-width-cjs: /string-width@4.2.3 - strip-ansi: 7.1.0 - strip-ansi-cjs: /strip-ansi@6.0.1 - wrap-ansi: 8.1.0 - wrap-ansi-cjs: /wrap-ansi@7.0.0 - dev: true - - /@jest/schemas@29.6.3: - resolution: {integrity: sha512-mo5j5X+jIZmJQveBKeS/clAueipV7KgiX1vMgCxam1RNYiqE1w62n0/tJJnHtjW8ZHcQco5gY85jA3mi0L+nSA==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - dependencies: - '@sinclair/typebox': 0.27.8 - dev: true - - /@jridgewell/gen-mapping@0.3.3: - resolution: {integrity: sha512-HLhSWOLRi875zjjMG/r+Nv0oCW8umGb0BgEhyX3dDX3egwZtB8PqLnjz3yedt8R5StBrzcg4aBpnh8UA9D1BoQ==} - engines: {node: '>=6.0.0'} - dependencies: - '@jridgewell/set-array': 1.1.2 - '@jridgewell/sourcemap-codec': 1.4.15 - '@jridgewell/trace-mapping': 0.3.19 - - /@jridgewell/resolve-uri@3.1.1: - resolution: {integrity: sha512-dSYZh7HhCDtCKm4QakX0xFpsRDqjjtZf/kjI/v3T3Nwt5r8/qz/M19F9ySyOqU94SXBmeG9ttTul+YnR4LOxFA==} - engines: {node: '>=6.0.0'} - - /@jridgewell/set-array@1.1.2: - resolution: {integrity: sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==} - engines: {node: '>=6.0.0'} - - /@jridgewell/sourcemap-codec@1.4.15: - resolution: {integrity: sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==} - - /@jridgewell/trace-mapping@0.3.19: - resolution: {integrity: sha512-kf37QtfW+Hwx/buWGMPcR60iF9ziHa6r/CZJIHbmcm4+0qrXiVdxegAH0F6yddEVQ7zdkjcGCgCzUu+BcbhQxw==} - dependencies: - '@jridgewell/resolve-uri': 3.1.1 - '@jridgewell/sourcemap-codec': 1.4.15 - - /@namehash/ens-utils@1.3.0: - resolution: {integrity: sha512-iFZYTd2OR0L9klgQXjwB/dnd+kd1O7feZwmILMlsMnoJJxS8ARLyHoARA0NZa72nAsDmMUgmPU5/hxv896XfiA==} - dependencies: - '@adraffy/ens-normalize': 1.10.1 - '@ethersproject/hash': 5.7.0 - date-fns: 3.3.1 - decimal.js: 10.4.3 - dev: false - - /@namehash/nameguard@0.0.17: - resolution: {integrity: sha512-6c4d6u7kA8EWazzByHTfsHpfK9SydC/q6GD7hgIN0HS+TmkicXlZzpxuZ3ws13LhR2nFM9BFsXCwiVnhfqhp+Q==} - dependencies: - whatwg-fetch: 3.6.19 - dev: false - - /@next/env@14.0.2: - resolution: {integrity: sha512-HAW1sljizEaduEOes/m84oUqeIDAUYBR1CDwu2tobNlNDFP3cSm9d6QsOsGeNlIppU1p/p1+bWbYCbvwjFiceA==} - dev: false - - /@next/env@14.1.4: - resolution: {integrity: sha512-e7X7bbn3Z6DWnDi75UWn+REgAbLEqxI8Tq2pkFOFAMpWAWApz/YCUhtWMWn410h8Q2fYiYL7Yg5OlxMOCfFjJQ==} - - /@next/eslint-plugin-next@14.0.2: - resolution: {integrity: sha512-APrYFsXfAhnysycqxHcpg6Y4i7Ukp30GzVSZQRKT3OczbzkqGjt33vNhScmgoOXYBU1CfkwgtXmNxdiwv1jKmg==} - dependencies: - glob: 7.1.7 - dev: true - - /@next/eslint-plugin-next@14.2.3: - resolution: {integrity: sha512-L3oDricIIjgj1AVnRdRor21gI7mShlSwU/1ZGHmqM3LzHhXXhdkrfeNY5zif25Bi5Dd7fiJHsbhoZCHfXYvlAw==} - dependencies: - glob: 10.3.10 - dev: true - - /@next/swc-darwin-arm64@14.0.2: - resolution: {integrity: sha512-i+jQY0fOb8L5gvGvojWyZMfQoQtDVB2kYe7fufOEiST6sicvzI2W5/EXo4lX5bLUjapHKe+nFxuVv7BA+Pd7LQ==} - engines: {node: '>= 10'} + /@img/sharp-darwin-arm64@0.33.3: + resolution: {integrity: sha512-FaNiGX1MrOuJ3hxuNzWgsT/mg5OHG/Izh59WW2mk1UwYHUwtfbhk5QNKYZgxf0pLOhx9ctGiGa2OykD71vOnSw==} + engines: {glibc: '>=2.26', node: ^18.17.0 || ^20.3.0 || >=21.0.0, npm: '>=9.6.5', pnpm: '>=7.1.0', yarn: '>=3.2.0'} cpu: [arm64] os: [darwin] requiresBuild: true + optionalDependencies: + '@img/sharp-libvips-darwin-arm64': 1.0.2 dev: false optional: true - /@next/swc-darwin-arm64@14.1.4: - resolution: {integrity: sha512-ubmUkbmW65nIAOmoxT1IROZdmmJMmdYvXIe8211send9ZYJu+SqxSnJM4TrPj9wmL6g9Atvj0S/2cFmMSS99jg==} - engines: {node: '>= 10'} - cpu: [arm64] + /@img/sharp-darwin-x64@0.33.3: + resolution: {integrity: sha512-2QeSl7QDK9ru//YBT4sQkoq7L0EAJZA3rtV+v9p8xTKl4U1bUqTIaCnoC7Ctx2kCjQgwFXDasOtPTCT8eCTXvw==} + engines: {glibc: '>=2.26', node: ^18.17.0 || ^20.3.0 || >=21.0.0, npm: '>=9.6.5', pnpm: '>=7.1.0', yarn: '>=3.2.0'} + cpu: [x64] os: [darwin] requiresBuild: true + optionalDependencies: + '@img/sharp-libvips-darwin-x64': 1.0.2 + dev: false optional: true - /@next/swc-darwin-x64@14.0.2: - resolution: {integrity: sha512-zRCAO0d2hW6gBEa4wJaLn+gY8qtIqD3gYd9NjruuN98OCI6YyelmhWVVLlREjS7RYrm9OUQIp/iVJFeB6kP1hg==} - engines: {node: '>= 10'} - cpu: [x64] + /@img/sharp-libvips-darwin-arm64@1.0.2: + resolution: {integrity: sha512-tcK/41Rq8IKlSaKRCCAuuY3lDJjQnYIW1UXU1kxcEKrfL8WR7N6+rzNoOxoQRJWTAECuKwgAHnPvqXGN8XfkHA==} + engines: {macos: '>=11', npm: '>=9.6.5', pnpm: '>=7.1.0', yarn: '>=3.2.0'} + cpu: [arm64] os: [darwin] requiresBuild: true dev: false optional: true - /@next/swc-darwin-x64@14.1.4: - resolution: {integrity: sha512-b0Xo1ELj3u7IkZWAKcJPJEhBop117U78l70nfoQGo4xUSvv0PJSTaV4U9xQBLvZlnjsYkc8RwQN1HoH/oQmLlQ==} - engines: {node: '>= 10'} + /@img/sharp-libvips-darwin-x64@1.0.2: + resolution: {integrity: sha512-Ofw+7oaWa0HiiMiKWqqaZbaYV3/UGL2wAPeLuJTx+9cXpCRdvQhCLG0IH8YGwM0yGWGLpsF4Su9vM1o6aer+Fw==} + engines: {macos: '>=10.13', npm: '>=9.6.5', pnpm: '>=7.1.0', yarn: '>=3.2.0'} cpu: [x64] os: [darwin] requiresBuild: true - optional: true - - /@next/swc-linux-arm64-gnu@14.0.2: - resolution: {integrity: sha512-tSJmiaon8YaKsVhi7GgRizZoV0N1Sx5+i+hFTrCKKQN7s3tuqW0Rov+RYdPhAv/pJl4qiG+XfSX4eJXqpNg3dA==} - engines: {node: '>= 10'} - cpu: [arm64] - os: [linux] - requiresBuild: true dev: false optional: true - /@next/swc-linux-arm64-gnu@14.1.4: - resolution: {integrity: sha512-457G0hcLrdYA/u1O2XkRMsDKId5VKe3uKPvrKVOyuARa6nXrdhJOOYU9hkKKyQTMru1B8qEP78IAhf/1XnVqKA==} - engines: {node: '>= 10'} + /@img/sharp-libvips-linux-arm64@1.0.2: + resolution: {integrity: sha512-x7kCt3N00ofFmmkkdshwj3vGPCnmiDh7Gwnd4nUwZln2YjqPxV1NlTyZOvoDWdKQVDL911487HOueBvrpflagw==} + engines: {glibc: '>=2.26', npm: '>=9.6.5', pnpm: '>=7.1.0', yarn: '>=3.2.0'} cpu: [arm64] os: [linux] requiresBuild: true + dev: false optional: true - /@next/swc-linux-arm64-musl@14.0.2: - resolution: {integrity: sha512-dXJLMSEOwqJKcag1BeX1C+ekdPPJ9yXbWIt3nAadhbLx5CjACoB2NQj9Xcqu2tmdr5L6m34fR+fjGPs+ZVPLzA==} - engines: {node: '>= 10'} - cpu: [arm64] + /@img/sharp-libvips-linux-arm@1.0.2: + resolution: {integrity: sha512-iLWCvrKgeFoglQxdEwzu1eQV04o8YeYGFXtfWU26Zr2wWT3q3MTzC+QTCO3ZQfWd3doKHT4Pm2kRmLbupT+sZw==} + engines: {glibc: '>=2.28', npm: '>=9.6.5', pnpm: '>=7.1.0', yarn: '>=3.2.0'} + cpu: [arm] os: [linux] requiresBuild: true dev: false optional: true - /@next/swc-linux-arm64-musl@14.1.4: - resolution: {integrity: sha512-l/kMG+z6MB+fKA9KdtyprkTQ1ihlJcBh66cf0HvqGP+rXBbOXX0dpJatjZbHeunvEHoBBS69GYQG5ry78JMy3g==} - engines: {node: '>= 10'} - cpu: [arm64] + /@img/sharp-libvips-linux-s390x@1.0.2: + resolution: {integrity: sha512-cmhQ1J4qVhfmS6szYW7RT+gLJq9dH2i4maq+qyXayUSn9/3iY2ZeWpbAgSpSVbV2E1JUL2Gg7pwnYQ1h8rQIog==} + engines: {glibc: '>=2.28', npm: '>=9.6.5', pnpm: '>=7.1.0', yarn: '>=3.2.0'} + cpu: [s390x] os: [linux] requiresBuild: true + dev: false optional: true - /@next/swc-linux-x64-gnu@14.0.2: - resolution: {integrity: sha512-WC9KAPSowj6as76P3vf1J3mf2QTm3Wv3FBzQi7UJ+dxWjK3MhHVWsWUo24AnmHx9qDcEtHM58okgZkXVqeLB+Q==} - engines: {node: '>= 10'} + /@img/sharp-libvips-linux-x64@1.0.2: + resolution: {integrity: sha512-E441q4Qdb+7yuyiADVi5J+44x8ctlrqn8XgkDTwr4qPJzWkaHwD489iZ4nGDgcuya4iMN3ULV6NwbhRZJ9Z7SQ==} + engines: {glibc: '>=2.26', npm: '>=9.6.5', pnpm: '>=7.1.0', yarn: '>=3.2.0'} cpu: [x64] os: [linux] requiresBuild: true dev: false optional: true - /@next/swc-linux-x64-gnu@14.1.4: - resolution: {integrity: sha512-BapIFZ3ZRnvQ1uWbmqEGJuPT9cgLwvKtxhK/L2t4QYO7l+/DxXuIGjvp1x8rvfa/x1FFSsipERZK70pewbtJtw==} - engines: {node: '>= 10'} - cpu: [x64] + /@img/sharp-libvips-linuxmusl-arm64@1.0.2: + resolution: {integrity: sha512-3CAkndNpYUrlDqkCM5qhksfE+qSIREVpyoeHIU6jd48SJZViAmznoQQLAv4hVXF7xyUB9zf+G++e2v1ABjCbEQ==} + engines: {musl: '>=1.2.2', npm: '>=9.6.5', pnpm: '>=7.1.0', yarn: '>=3.2.0'} + cpu: [arm64] os: [linux] requiresBuild: true + dev: false optional: true - /@next/swc-linux-x64-musl@14.0.2: - resolution: {integrity: sha512-KSSAwvUcjtdZY4zJFa2f5VNJIwuEVnOSlqYqbQIawREJA+gUI6egeiRu290pXioQXnQHYYdXmnVNZ4M+VMB7KQ==} - engines: {node: '>= 10'} + /@img/sharp-libvips-linuxmusl-x64@1.0.2: + resolution: {integrity: sha512-VI94Q6khIHqHWNOh6LLdm9s2Ry4zdjWJwH56WoiJU7NTeDwyApdZZ8c+SADC8OH98KWNQXnE01UdJ9CSfZvwZw==} + engines: {musl: '>=1.2.2', npm: '>=9.6.5', pnpm: '>=7.1.0', yarn: '>=3.2.0'} cpu: [x64] os: [linux] requiresBuild: true dev: false optional: true - /@next/swc-linux-x64-musl@14.1.4: - resolution: {integrity: sha512-mqVxTwk4XuBl49qn2A5UmzFImoL1iLm0KQQwtdRJRKl21ylQwwGCxJtIYo2rbfkZHoSKlh/YgztY0qH3wG1xIg==} - engines: {node: '>= 10'} - cpu: [x64] + /@img/sharp-linux-arm64@0.33.3: + resolution: {integrity: sha512-Zf+sF1jHZJKA6Gor9hoYG2ljr4wo9cY4twaxgFDvlG0Xz9V7sinsPp8pFd1XtlhTzYo0IhDbl3rK7P6MzHpnYA==} + engines: {glibc: '>=2.26', node: ^18.17.0 || ^20.3.0 || >=21.0.0, npm: '>=9.6.5', pnpm: '>=7.1.0', yarn: '>=3.2.0'} + cpu: [arm64] os: [linux] requiresBuild: true + optionalDependencies: + '@img/sharp-libvips-linux-arm64': 1.0.2 + dev: false optional: true - /@next/swc-win32-arm64-msvc@14.0.2: - resolution: {integrity: sha512-2/O0F1SqJ0bD3zqNuYge0ok7OEWCQwk55RPheDYD0va5ij7kYwrFkq5ycCRN0TLjLfxSF6xI5NM6nC5ux7svEQ==} - engines: {node: '>= 10'} - cpu: [arm64] - os: [win32] + /@img/sharp-linux-arm@0.33.3: + resolution: {integrity: sha512-Q7Ee3fFSC9P7vUSqVEF0zccJsZ8GiiCJYGWDdhEjdlOeS9/jdkyJ6sUSPj+bL8VuOYFSbofrW0t/86ceVhx32w==} + engines: {glibc: '>=2.28', node: ^18.17.0 || ^20.3.0 || >=21.0.0, npm: '>=9.6.5', pnpm: '>=7.1.0', yarn: '>=3.2.0'} + cpu: [arm] + os: [linux] + requiresBuild: true + optionalDependencies: + '@img/sharp-libvips-linux-arm': 1.0.2 + dev: false + optional: true + + /@img/sharp-linux-s390x@0.33.3: + resolution: {integrity: sha512-vFk441DKRFepjhTEH20oBlFrHcLjPfI8B0pMIxGm3+yilKyYeHEVvrZhYFdqIseSclIqbQ3SnZMwEMWonY5XFA==} + engines: {glibc: '>=2.28', node: ^18.17.0 || ^20.3.0 || >=21.0.0, npm: '>=9.6.5', pnpm: '>=7.1.0', yarn: '>=3.2.0'} + cpu: [s390x] + os: [linux] + requiresBuild: true + optionalDependencies: + '@img/sharp-libvips-linux-s390x': 1.0.2 + dev: false + optional: true + + /@img/sharp-linux-x64@0.33.3: + resolution: {integrity: sha512-Q4I++herIJxJi+qmbySd072oDPRkCg/SClLEIDh5IL9h1zjhqjv82H0Seupd+q2m0yOfD+/fJnjSoDFtKiHu2g==} + engines: {glibc: '>=2.26', node: ^18.17.0 || ^20.3.0 || >=21.0.0, npm: '>=9.6.5', pnpm: '>=7.1.0', yarn: '>=3.2.0'} + cpu: [x64] + os: [linux] + requiresBuild: true + optionalDependencies: + '@img/sharp-libvips-linux-x64': 1.0.2 + dev: false + optional: true + + /@img/sharp-linuxmusl-arm64@0.33.3: + resolution: {integrity: sha512-qnDccehRDXadhM9PM5hLvcPRYqyFCBN31kq+ErBSZtZlsAc1U4Z85xf/RXv1qolkdu+ibw64fUDaRdktxTNP9A==} + engines: {musl: '>=1.2.2', node: ^18.17.0 || ^20.3.0 || >=21.0.0, npm: '>=9.6.5', pnpm: '>=7.1.0', yarn: '>=3.2.0'} + cpu: [arm64] + os: [linux] + requiresBuild: true + optionalDependencies: + '@img/sharp-libvips-linuxmusl-arm64': 1.0.2 + dev: false + optional: true + + /@img/sharp-linuxmusl-x64@0.33.3: + resolution: {integrity: sha512-Jhchim8kHWIU/GZ+9poHMWRcefeaxFIs9EBqf9KtcC14Ojk6qua7ghKiPs0sbeLbLj/2IGBtDcxHyjCdYWkk2w==} + engines: {musl: '>=1.2.2', node: ^18.17.0 || ^20.3.0 || >=21.0.0, npm: '>=9.6.5', pnpm: '>=7.1.0', yarn: '>=3.2.0'} + cpu: [x64] + os: [linux] + requiresBuild: true + optionalDependencies: + '@img/sharp-libvips-linuxmusl-x64': 1.0.2 + dev: false + optional: true + + /@img/sharp-wasm32@0.33.3: + resolution: {integrity: sha512-68zivsdJ0koE96stdUfM+gmyaK/NcoSZK5dV5CAjES0FUXS9lchYt8LAB5rTbM7nlWtxaU/2GON0HVN6/ZYJAQ==} + engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0, npm: '>=9.6.5', pnpm: '>=7.1.0', yarn: '>=3.2.0'} + cpu: [wasm32] + requiresBuild: true + dependencies: + '@emnapi/runtime': 1.1.1 + dev: false + optional: true + + /@img/sharp-win32-ia32@0.33.3: + resolution: {integrity: sha512-CyimAduT2whQD8ER4Ux7exKrtfoaUiVr7HG0zZvO0XTFn2idUWljjxv58GxNTkFb8/J9Ub9AqITGkJD6ZginxQ==} + engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0, npm: '>=9.6.5', pnpm: '>=7.1.0', yarn: '>=3.2.0'} + cpu: [ia32] + os: [win32] + requiresBuild: true + dev: false + optional: true + + /@img/sharp-win32-x64@0.33.3: + resolution: {integrity: sha512-viT4fUIDKnli3IfOephGnolMzhz5VaTvDRkYqtZxOMIoMQ4MrAziO7pT1nVnOt2FAm7qW5aa+CCc13aEY6Le0g==} + engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0, npm: '>=9.6.5', pnpm: '>=7.1.0', yarn: '>=3.2.0'} + cpu: [x64] + os: [win32] + requiresBuild: true + dev: false + optional: true + + /@isaacs/cliui@8.0.2: + resolution: {integrity: sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==} + engines: {node: '>=12'} + dependencies: + string-width: 5.1.2 + string-width-cjs: /string-width@4.2.3 + strip-ansi: 7.1.0 + strip-ansi-cjs: /strip-ansi@6.0.1 + wrap-ansi: 8.1.0 + wrap-ansi-cjs: /wrap-ansi@7.0.0 + + /@jest/schemas@29.6.3: + resolution: {integrity: sha512-mo5j5X+jIZmJQveBKeS/clAueipV7KgiX1vMgCxam1RNYiqE1w62n0/tJJnHtjW8ZHcQco5gY85jA3mi0L+nSA==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + '@sinclair/typebox': 0.27.8 + dev: true + + /@jridgewell/gen-mapping@0.3.5: + resolution: {integrity: sha512-IzL8ZoEDIBRWEzlCcRhOaCupYyN5gdIK+Q6fbFdPDg6HqX6jpkItn7DFIpW9LQzXG6Df9sA7+OKnq0qlz/GaQg==} + engines: {node: '>=6.0.0'} + dependencies: + '@jridgewell/set-array': 1.2.1 + '@jridgewell/sourcemap-codec': 1.4.15 + '@jridgewell/trace-mapping': 0.3.25 + + /@jridgewell/resolve-uri@3.1.2: + resolution: {integrity: sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==} + engines: {node: '>=6.0.0'} + + /@jridgewell/set-array@1.2.1: + resolution: {integrity: sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==} + engines: {node: '>=6.0.0'} + + /@jridgewell/sourcemap-codec@1.4.15: + resolution: {integrity: sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==} + + /@jridgewell/trace-mapping@0.3.25: + resolution: {integrity: sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==} + dependencies: + '@jridgewell/resolve-uri': 3.1.2 + '@jridgewell/sourcemap-codec': 1.4.15 + + /@namehash/ens-utils@1.9.0(typescript@5.3.3): + resolution: {integrity: sha512-NHZdHsDLPYEH4OrQenyd/M1vXjYeQNF3fq1MIcRCEsZqw4rtNyxCluuMKBlTxL/mubkaUAEwCl5JG/qt4MKeqw==} + dependencies: + '@adraffy/ens-normalize': 1.10.1 + '@ethersproject/hash': 5.7.0 + date-fns: 3.3.1 + decimal.js: 10.4.3 + viem: 2.9.3(typescript@5.3.3) + transitivePeerDependencies: + - bufferutil + - typescript + - utf-8-validate + - zod + dev: false + + /@next/env@14.1.0: + resolution: {integrity: sha512-Py8zIo+02ht82brwwhTg36iogzFqGLPXlRGKQw5s+qP/kMNc4MAyDeEwBKDijk6zTIbegEgu8Qy7C1LboslQAw==} + dev: false + + /@next/env@14.1.4: + resolution: {integrity: sha512-e7X7bbn3Z6DWnDi75UWn+REgAbLEqxI8Tq2pkFOFAMpWAWApz/YCUhtWMWn410h8Q2fYiYL7Yg5OlxMOCfFjJQ==} + + /@next/eslint-plugin-next@14.2.3: + resolution: {integrity: sha512-L3oDricIIjgj1AVnRdRor21gI7mShlSwU/1ZGHmqM3LzHhXXhdkrfeNY5zif25Bi5Dd7fiJHsbhoZCHfXYvlAw==} + dependencies: + glob: 10.3.10 + dev: true + + /@next/swc-darwin-arm64@14.1.0: + resolution: {integrity: sha512-nUDn7TOGcIeyQni6lZHfzNoo9S0euXnu0jhsbMOmMJUBfgsnESdjN97kM7cBqQxZa8L/bM9om/S5/1dzCrW6wQ==} + engines: {node: '>= 10'} + cpu: [arm64] + os: [darwin] + requiresBuild: true + dev: false + optional: true + + /@next/swc-darwin-arm64@14.1.4: + resolution: {integrity: sha512-ubmUkbmW65nIAOmoxT1IROZdmmJMmdYvXIe8211send9ZYJu+SqxSnJM4TrPj9wmL6g9Atvj0S/2cFmMSS99jg==} + engines: {node: '>= 10'} + cpu: [arm64] + os: [darwin] + requiresBuild: true + optional: true + + /@next/swc-darwin-x64@14.1.0: + resolution: {integrity: sha512-1jgudN5haWxiAl3O1ljUS2GfupPmcftu2RYJqZiMJmmbBT5M1XDffjUtRUzP4W3cBHsrvkfOFdQ71hAreNQP6g==} + engines: {node: '>= 10'} + cpu: [x64] + os: [darwin] + requiresBuild: true + dev: false + optional: true + + /@next/swc-darwin-x64@14.1.4: + resolution: {integrity: sha512-b0Xo1ELj3u7IkZWAKcJPJEhBop117U78l70nfoQGo4xUSvv0PJSTaV4U9xQBLvZlnjsYkc8RwQN1HoH/oQmLlQ==} + engines: {node: '>= 10'} + cpu: [x64] + os: [darwin] + requiresBuild: true + optional: true + + /@next/swc-linux-arm64-gnu@14.1.0: + resolution: {integrity: sha512-RHo7Tcj+jllXUbK7xk2NyIDod3YcCPDZxj1WLIYxd709BQ7WuRYl3OWUNG+WUfqeQBds6kvZYlc42NJJTNi4tQ==} + engines: {node: '>= 10'} + cpu: [arm64] + os: [linux] + requiresBuild: true + dev: false + optional: true + + /@next/swc-linux-arm64-gnu@14.1.4: + resolution: {integrity: sha512-457G0hcLrdYA/u1O2XkRMsDKId5VKe3uKPvrKVOyuARa6nXrdhJOOYU9hkKKyQTMru1B8qEP78IAhf/1XnVqKA==} + engines: {node: '>= 10'} + cpu: [arm64] + os: [linux] + requiresBuild: true + optional: true + + /@next/swc-linux-arm64-musl@14.1.0: + resolution: {integrity: sha512-v6kP8sHYxjO8RwHmWMJSq7VZP2nYCkRVQ0qolh2l6xroe9QjbgV8siTbduED4u0hlk0+tjS6/Tuy4n5XCp+l6g==} + engines: {node: '>= 10'} + cpu: [arm64] + os: [linux] + requiresBuild: true + dev: false + optional: true + + /@next/swc-linux-arm64-musl@14.1.4: + resolution: {integrity: sha512-l/kMG+z6MB+fKA9KdtyprkTQ1ihlJcBh66cf0HvqGP+rXBbOXX0dpJatjZbHeunvEHoBBS69GYQG5ry78JMy3g==} + engines: {node: '>= 10'} + cpu: [arm64] + os: [linux] + requiresBuild: true + optional: true + + /@next/swc-linux-x64-gnu@14.1.0: + resolution: {integrity: sha512-zJ2pnoFYB1F4vmEVlb/eSe+VH679zT1VdXlZKX+pE66grOgjmKJHKacf82g/sWE4MQ4Rk2FMBCRnX+l6/TVYzQ==} + engines: {node: '>= 10'} + cpu: [x64] + os: [linux] + requiresBuild: true + dev: false + optional: true + + /@next/swc-linux-x64-gnu@14.1.4: + resolution: {integrity: sha512-BapIFZ3ZRnvQ1uWbmqEGJuPT9cgLwvKtxhK/L2t4QYO7l+/DxXuIGjvp1x8rvfa/x1FFSsipERZK70pewbtJtw==} + engines: {node: '>= 10'} + cpu: [x64] + os: [linux] + requiresBuild: true + optional: true + + /@next/swc-linux-x64-musl@14.1.0: + resolution: {integrity: sha512-rbaIYFt2X9YZBSbH/CwGAjbBG2/MrACCVu2X0+kSykHzHnYH5FjHxwXLkcoJ10cX0aWCEynpu+rP76x0914atg==} + engines: {node: '>= 10'} + cpu: [x64] + os: [linux] + requiresBuild: true + dev: false + optional: true + + /@next/swc-linux-x64-musl@14.1.4: + resolution: {integrity: sha512-mqVxTwk4XuBl49qn2A5UmzFImoL1iLm0KQQwtdRJRKl21ylQwwGCxJtIYo2rbfkZHoSKlh/YgztY0qH3wG1xIg==} + engines: {node: '>= 10'} + cpu: [x64] + os: [linux] + requiresBuild: true + optional: true + + /@next/swc-win32-arm64-msvc@14.1.0: + resolution: {integrity: sha512-o1N5TsYc8f/HpGt39OUQpQ9AKIGApd3QLueu7hXk//2xq5Z9OxmV6sQfNp8C7qYmiOlHYODOGqNNa0e9jvchGQ==} + engines: {node: '>= 10'} + cpu: [arm64] + os: [win32] requiresBuild: true dev: false optional: true @@ -1236,8 +1377,8 @@ packages: requiresBuild: true optional: true - /@next/swc-win32-ia32-msvc@14.0.2: - resolution: {integrity: sha512-vJI/x70Id0oN4Bq/R6byBqV1/NS5Dl31zC+lowO8SDu1fHmUxoAdILZR5X/sKbiJpuvKcCrwbYgJU8FF/Gh50Q==} + /@next/swc-win32-ia32-msvc@14.1.0: + resolution: {integrity: sha512-XXIuB1DBRCFwNO6EEzCTMHT5pauwaSj4SWs7CYnME57eaReAKBXCnkUE80p/pAZcewm7hs+vGvNqDPacEXHVkw==} engines: {node: '>= 10'} cpu: [ia32] os: [win32] @@ -1253,8 +1394,8 @@ packages: requiresBuild: true optional: true - /@next/swc-win32-x64-msvc@14.0.2: - resolution: {integrity: sha512-Ut4LXIUvC5m8pHTe2j0vq/YDnTEyq6RSR9vHYPqnELrDapPhLNz9Od/L5Ow3J8RNDWpEnfCiQXuVdfjlNEJ7ug==} + /@next/swc-win32-x64-msvc@14.1.0: + resolution: {integrity: sha512-9WEbVRRAqJ3YFVqEZIxUqkiO8l1nool1LmNxygr5HWF8AcSYsEpneUDhmjUVJEzO2A04+oPtZdombzzPPkTtgg==} engines: {node: '>= 10'} cpu: [x64] os: [win32] @@ -1297,13 +1438,12 @@ packages: engines: {node: '>= 8'} dependencies: '@nodelib/fs.scandir': 2.1.5 - fastq: 1.15.0 + fastq: 1.17.1 /@pkgjs/parseargs@0.11.0: resolution: {integrity: sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==} engines: {node: '>=14'} requiresBuild: true - dev: true optional: true /@rollup/rollup-android-arm-eabi@4.17.2: @@ -1434,8 +1574,8 @@ packages: dev: true optional: true - /@rushstack/eslint-patch@1.5.1: - resolution: {integrity: sha512-6i/8UoL0P5y4leBIGzvkZdS85RDMG9y1ihZzmTZQ5LdHUYmZ7pKFoj8X0236s3lusPs1Fa5HTQUpwI+UfTcmeA==} + /@rushstack/eslint-patch@1.10.2: + resolution: {integrity: sha512-hw437iINopmQuxWPSUEvqE56NCPsiU8N4AYtfHmJFckclktzK9YQJieD3XkDCDH4OjL+C7zgPUh73R/nrcHrqw==} dev: true /@scure/base@1.1.6: @@ -1475,16 +1615,6 @@ packages: tailwindcss: 3.4.3 dev: false - /@types/chai-subset@1.3.3: - resolution: {integrity: sha512-frBecisrNGz+F4T6bcc+NLeolfiojh5FxW2klu669+8BARtyQv2C/GkNW6FUodVe4BroGMP/wER/YDGc7rEllw==} - dependencies: - '@types/chai': 4.3.6 - dev: true - - /@types/chai@4.3.6: - resolution: {integrity: sha512-VOVRLM1mBxIRxydiViqPcKn6MIxZytrbMpd6RJLIWKxUNr3zux8no0Oc7kJx0WAPIitgZ0gkrDS+btlqQpubpw==} - dev: true - /@types/estree@1.0.5: resolution: {integrity: sha512-/kYRxGDLWzHOB7q+wtSUQlFrtcdUccpfy+X+9iMBpHK8QLLhx2wIPYuS5DYtR9Wa/YlZAbIovy7qVdB1Aq6Lyw==} dev: true @@ -1499,8 +1629,8 @@ packages: undici-types: 5.26.5 dev: true - /@types/prop-types@15.7.8: - resolution: {integrity: sha512-kMpQpfZKSCBqltAJwskgePRaYRFukDkm1oItcAbC3gNELR20XIBcN9VRgg4+m8DKsTfkWeA4m4Imp4DDuWy7FQ==} + /@types/prop-types@15.7.12: + resolution: {integrity: sha512-5zvhXYtRNRluoE/jAp4GVsSduVUzNWKkOZrCDBWYtE7biZywwdC2AcEzg+cSMLFRfVgeAFqpfNabiPjxFddV1Q==} dev: true /@types/react-dom@18.3.0: @@ -1512,67 +1642,67 @@ packages: /@types/react@18.3.2: resolution: {integrity: sha512-Btgg89dAnqD4vV7R3hlwOxgqobUQKgx3MmrQRi0yYbs/P0ym8XozIAlkqVilPqHQwXs4e9Tf63rrCgl58BcO4w==} dependencies: - '@types/prop-types': 15.7.8 - csstype: 3.1.2 + '@types/prop-types': 15.7.12 + csstype: 3.1.3 dev: true - /@typescript-eslint/parser@6.7.3(eslint@8.51.0)(typescript@5.4.5): - resolution: {integrity: sha512-TlutE+iep2o7R8Lf+yoer3zU6/0EAUc8QIBB3GYBc1KGz4c4TRm83xwXUZVPlZ6YCLss4r77jbu6j3sendJoiQ==} + /@typescript-eslint/parser@7.2.0(eslint@8.56.0)(typescript@5.3.3): + resolution: {integrity: sha512-5FKsVcHTk6TafQKQbuIVkXq58Fnbkd2wDL4LB7AURN7RUOu1utVP+G8+6u3ZhEroW3DF6hyo3ZEXxgKgp4KeCg==} engines: {node: ^16.0.0 || >=18.0.0} peerDependencies: - eslint: ^7.0.0 || ^8.0.0 + eslint: ^8.56.0 typescript: '*' peerDependenciesMeta: typescript: optional: true dependencies: - '@typescript-eslint/scope-manager': 6.7.3 - '@typescript-eslint/types': 6.7.3 - '@typescript-eslint/typescript-estree': 6.7.3(typescript@5.4.5) - '@typescript-eslint/visitor-keys': 6.7.3 + '@typescript-eslint/scope-manager': 7.2.0 + '@typescript-eslint/types': 7.2.0 + '@typescript-eslint/typescript-estree': 7.2.0(typescript@5.3.3) + '@typescript-eslint/visitor-keys': 7.2.0 debug: 4.3.4 - eslint: 8.51.0 - typescript: 5.4.5 + eslint: 8.56.0 + typescript: 5.3.3 transitivePeerDependencies: - supports-color dev: true - /@typescript-eslint/parser@6.7.3(eslint@9.2.0)(typescript@5.4.5): - resolution: {integrity: sha512-TlutE+iep2o7R8Lf+yoer3zU6/0EAUc8QIBB3GYBc1KGz4c4TRm83xwXUZVPlZ6YCLss4r77jbu6j3sendJoiQ==} + /@typescript-eslint/parser@7.2.0(eslint@8.56.0)(typescript@5.4.5): + resolution: {integrity: sha512-5FKsVcHTk6TafQKQbuIVkXq58Fnbkd2wDL4LB7AURN7RUOu1utVP+G8+6u3ZhEroW3DF6hyo3ZEXxgKgp4KeCg==} engines: {node: ^16.0.0 || >=18.0.0} peerDependencies: - eslint: ^7.0.0 || ^8.0.0 + eslint: ^8.56.0 typescript: '*' peerDependenciesMeta: typescript: optional: true dependencies: - '@typescript-eslint/scope-manager': 6.7.3 - '@typescript-eslint/types': 6.7.3 - '@typescript-eslint/typescript-estree': 6.7.3(typescript@5.4.5) - '@typescript-eslint/visitor-keys': 6.7.3 + '@typescript-eslint/scope-manager': 7.2.0 + '@typescript-eslint/types': 7.2.0 + '@typescript-eslint/typescript-estree': 7.2.0(typescript@5.4.5) + '@typescript-eslint/visitor-keys': 7.2.0 debug: 4.3.4 - eslint: 9.2.0 + eslint: 8.56.0 typescript: 5.4.5 transitivePeerDependencies: - supports-color dev: true - /@typescript-eslint/scope-manager@6.7.3: - resolution: {integrity: sha512-wOlo0QnEou9cHO2TdkJmzF7DFGvAKEnB82PuPNHpT8ZKKaZu6Bm63ugOTn9fXNJtvuDPanBc78lGUGGytJoVzQ==} + /@typescript-eslint/scope-manager@7.2.0: + resolution: {integrity: sha512-Qh976RbQM/fYtjx9hs4XkayYujB/aPwglw2choHmf3zBjB4qOywWSdt9+KLRdHubGcoSwBnXUH2sR3hkyaERRg==} engines: {node: ^16.0.0 || >=18.0.0} dependencies: - '@typescript-eslint/types': 6.7.3 - '@typescript-eslint/visitor-keys': 6.7.3 + '@typescript-eslint/types': 7.2.0 + '@typescript-eslint/visitor-keys': 7.2.0 dev: true - /@typescript-eslint/types@6.7.3: - resolution: {integrity: sha512-4g+de6roB2NFcfkZb439tigpAMnvEIg3rIjWQ+EM7IBaYt/CdJt6em9BJ4h4UpdgaBWdmx2iWsafHTrqmgIPNw==} + /@typescript-eslint/types@7.2.0: + resolution: {integrity: sha512-XFtUHPI/abFhm4cbCDc5Ykc8npOKBSJePY3a3s+lwumt7XWJuzP5cZcfZ610MIPHjQjNsOLlYK8ASPaNG8UiyA==} engines: {node: ^16.0.0 || >=18.0.0} dev: true - /@typescript-eslint/typescript-estree@6.7.3(typescript@5.4.5): - resolution: {integrity: sha512-YLQ3tJoS4VxLFYHTw21oe1/vIZPRqAO91z6Uv0Ss2BKm/Ag7/RVQBcXTGcXhgJMdA4U+HrKuY5gWlJlvoaKZ5g==} + /@typescript-eslint/typescript-estree@7.2.0(typescript@5.3.3): + resolution: {integrity: sha512-cyxS5WQQCoBwSakpMrvMXuMDEbhOo9bNHHrNcEWis6XHx6KF518tkF1wBvKIn/tpq5ZpUYK7Bdklu8qY0MsFIA==} engines: {node: ^16.0.0 || >=18.0.0} peerDependencies: typescript: '*' @@ -1580,26 +1710,53 @@ packages: typescript: optional: true dependencies: - '@typescript-eslint/types': 6.7.3 - '@typescript-eslint/visitor-keys': 6.7.3 + '@typescript-eslint/types': 7.2.0 + '@typescript-eslint/visitor-keys': 7.2.0 debug: 4.3.4 globby: 11.1.0 is-glob: 4.0.3 - semver: 7.5.4 - ts-api-utils: 1.0.3(typescript@5.4.5) + minimatch: 9.0.3 + semver: 7.6.2 + ts-api-utils: 1.3.0(typescript@5.3.3) + typescript: 5.3.3 + transitivePeerDependencies: + - supports-color + dev: true + + /@typescript-eslint/typescript-estree@7.2.0(typescript@5.4.5): + resolution: {integrity: sha512-cyxS5WQQCoBwSakpMrvMXuMDEbhOo9bNHHrNcEWis6XHx6KF518tkF1wBvKIn/tpq5ZpUYK7Bdklu8qY0MsFIA==} + engines: {node: ^16.0.0 || >=18.0.0} + peerDependencies: + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true + dependencies: + '@typescript-eslint/types': 7.2.0 + '@typescript-eslint/visitor-keys': 7.2.0 + debug: 4.3.4 + globby: 11.1.0 + is-glob: 4.0.3 + minimatch: 9.0.3 + semver: 7.6.2 + ts-api-utils: 1.3.0(typescript@5.4.5) typescript: 5.4.5 transitivePeerDependencies: - supports-color dev: true - /@typescript-eslint/visitor-keys@6.7.3: - resolution: {integrity: sha512-HEVXkU9IB+nk9o63CeICMHxFWbHWr3E1mpilIQBe9+7L/lH97rleFLVtYsfnWB+JVMaiFnEaxvknvmIzX+CqVg==} + /@typescript-eslint/visitor-keys@7.2.0: + resolution: {integrity: sha512-c6EIQRHhcpl6+tO8EMR+kjkkV+ugUNXOmeASA1rlzkd8EPIriavpWoiEz1HR/VLhbVIdhqnV6E7JZm00cBDx2A==} engines: {node: ^16.0.0 || >=18.0.0} dependencies: - '@typescript-eslint/types': 6.7.3 + '@typescript-eslint/types': 7.2.0 eslint-visitor-keys: 3.4.3 dev: true + /@ungap/structured-clone@1.2.0: + resolution: {integrity: sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ==} + dev: true + /@vercel/analytics@1.1.2: resolution: {integrity: sha512-CodhkLCQ/EHzjX8k+Qg+OzTBY0UadykrcfolfSOJVZZY/ZJM5nbhztm9KdbYvMfqKlasAr1+OYy0ThZnDA/MYA==} dependencies: @@ -1634,76 +1791,38 @@ packages: react: 18.2.0 dev: false - /@vitest/expect@0.34.5: - resolution: {integrity: sha512-/3RBIV9XEH+nRpRMqDJBufKIOQaYUH2X6bt0rKSCW0MfKhXFLYsR5ivHifeajRSTsln0FwJbitxLKHSQz/Xwkw==} - dependencies: - '@vitest/spy': 0.34.5 - '@vitest/utils': 0.34.5 - chai: 4.3.10 - dev: true - - /@vitest/expect@1.3.1: - resolution: {integrity: sha512-xofQFwIzfdmLLlHa6ag0dPV8YsnKOCP1KdAeVVh34vSjN2dcUiXYCD9htu/9eM7t8Xln4v03U9HLxLpPlsXdZw==} - dependencies: - '@vitest/spy': 1.3.1 - '@vitest/utils': 1.3.1 - chai: 4.3.10 - dev: true - - /@vitest/runner@0.34.5: - resolution: {integrity: sha512-RDEE3ViVvl7jFSCbnBRyYuu23XxmvRTSZWW6W4M7eC5dOsK75d5LIf6uhE5Fqf809DQ1+9ICZZNxhIolWHU4og==} + /@vitest/expect@1.4.0: + resolution: {integrity: sha512-Jths0sWCJZ8BxjKe+p+eKsoqev1/T8lYcrjavEaz8auEJ4jAVY0GwW3JKmdVU4mmNPLPHixh4GNXP7GFtAiDHA==} dependencies: - '@vitest/utils': 0.34.5 - p-limit: 4.0.0 - pathe: 1.1.1 + '@vitest/spy': 1.4.0 + '@vitest/utils': 1.4.0 + chai: 4.4.1 dev: true - /@vitest/runner@1.3.1: - resolution: {integrity: sha512-5FzF9c3jG/z5bgCnjr8j9LNq/9OxV2uEBAITOXfoe3rdZJTdO7jzThth7FXv/6b+kdY65tpRQB7WaKhNZwX+Kg==} + /@vitest/runner@1.4.0: + resolution: {integrity: sha512-EDYVSmesqlQ4RD2VvWo3hQgTJ7ZrFQ2VSJdfiJiArkCerDAGeyF1i6dHkmySqk573jLp6d/cfqCN+7wUB5tLgg==} dependencies: - '@vitest/utils': 1.3.1 + '@vitest/utils': 1.4.0 p-limit: 5.0.0 - pathe: 1.1.1 + pathe: 1.1.2 dev: true - /@vitest/snapshot@0.34.5: - resolution: {integrity: sha512-+ikwSbhu6z2yOdtKmk/aeoDZ9QPm2g/ZO5rXT58RR9Vmu/kB2MamyDSx77dctqdZfP3Diqv4mbc/yw2kPT8rmA==} + /@vitest/snapshot@1.4.0: + resolution: {integrity: sha512-saAFnt5pPIA5qDGxOHxJ/XxhMFKkUSBJmVt5VgDsAqPTX6JP326r5C/c9UuCMPoXNzuudTPsYDZCoJ5ilpqG2A==} dependencies: magic-string: 0.30.10 - pathe: 1.1.1 + pathe: 1.1.2 pretty-format: 29.7.0 dev: true - /@vitest/snapshot@1.3.1: - resolution: {integrity: sha512-EF++BZbt6RZmOlE3SuTPu/NfwBF6q4ABS37HHXzs2LUVPBLx2QoY/K0fKpRChSo8eLiuxcbCVfqKgx/dplCDuQ==} + /@vitest/spy@1.4.0: + resolution: {integrity: sha512-Ywau/Qs1DzM/8Uc+yA77CwSegizMlcgTJuYGAi0jujOteJOUf1ujunHThYo243KG9nAyWT3L9ifPYZ5+As/+6Q==} dependencies: - magic-string: 0.30.10 - pathe: 1.1.1 - pretty-format: 29.7.0 + tinyspy: 2.2.1 dev: true - /@vitest/spy@0.34.5: - resolution: {integrity: sha512-epsicsfhvBjRjCMOC/3k00mP/TBGQy8/P0DxOFiWyLt55gnZ99dqCfCiAsKO17BWVjn4eZRIjKvcqNmSz8gvmg==} - dependencies: - tinyspy: 2.2.0 - dev: true - - /@vitest/spy@1.3.1: - resolution: {integrity: sha512-xAcW+S099ylC9VLU7eZfdT9myV67Nor9w9zhf0mGCYJSO+zM2839tOeROTdikOi/8Qeusffvxb/MyBSOja1Uig==} - dependencies: - tinyspy: 2.2.0 - dev: true - - /@vitest/utils@0.34.5: - resolution: {integrity: sha512-ur6CmmYQoeHMwmGb0v+qwkwN3yopZuZyf4xt1DBBSGBed8Hf9Gmbm/5dEWqgpLPdRx6Av6jcWXrjcKfkTzg/pw==} - dependencies: - diff-sequences: 29.6.3 - loupe: 2.3.7 - pretty-format: 29.7.0 - dev: true - - /@vitest/utils@1.3.1: - resolution: {integrity: sha512-d3Waie/299qqRyHTm2DjADeTaNdNSVsnwHPWrs20JMpjh6eiVq7ggggweO8rc4arhf6rRkWuHKwvxGvejUXZZQ==} + /@vitest/utils@1.4.0: + resolution: {integrity: sha512-mx3Yd1/6e2Vt/PUC98DcqTirtfxUyAZ32uK82r8rZzbtBeBo+nqgnjx/LvqQdWsrvNtm14VmurNgcf4nqY5gJg==} dependencies: diff-sequences: 29.6.3 estree-walker: 3.0.3 @@ -1725,14 +1844,6 @@ packages: typescript: 5.3.3 dev: false - /acorn-jsx@5.3.2(acorn@8.10.0): - resolution: {integrity: sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==} - peerDependencies: - acorn: ^6.0.0 || ^7.0.0 || ^8.0.0 - dependencies: - acorn: 8.10.0 - dev: true - /acorn-jsx@5.3.2(acorn@8.11.3): resolution: {integrity: sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==} peerDependencies: @@ -1746,12 +1857,6 @@ packages: engines: {node: '>=0.4.0'} dev: true - /acorn@8.10.0: - resolution: {integrity: sha512-F0SAmZ8iUtS//m8DmCTA0jlh6TDKkHQyK6xc6V4KDTyZKA9dnvX9/3sRTVQrWm79glUAZbnmmNcdYwUIHWVybw==} - engines: {node: '>=0.4.0'} - hasBin: true - dev: true - /acorn@8.11.3: resolution: {integrity: sha512-Y9rRfJG5jcKOE0CLisYbojUjIrIEE7AGMzA/Sm4BslANhbS+cDMpgBdcPT91oJ7OuJ9hYJBx59RjbhxVnrF8Xg==} engines: {node: '>=0.4.0'} @@ -1770,19 +1875,16 @@ packages: /ansi-regex@5.0.1: resolution: {integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==} engines: {node: '>=8'} - dev: true /ansi-regex@6.0.1: resolution: {integrity: sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==} engines: {node: '>=12'} - dev: true /ansi-styles@4.3.0: resolution: {integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==} engines: {node: '>=8'} dependencies: color-convert: 2.0.1 - dev: true /ansi-styles@5.2.0: resolution: {integrity: sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==} @@ -1792,7 +1894,6 @@ packages: /ansi-styles@6.2.1: resolution: {integrity: sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==} engines: {node: '>=12'} - dev: true /any-promise@1.3.0: resolution: {integrity: sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A==} @@ -1811,8 +1912,8 @@ packages: resolution: {integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==} dev: true - /aria-hidden@1.2.3: - resolution: {integrity: sha512-xcLxITLe2HYa1cnYnwCjkOO1PqUHQpozB8x9AR0OgWN2woOBi5kSDVxKfd0b7sb1hw5qFeJhXm9H1nu3xSfLeQ==} + /aria-hidden@1.2.4: + resolution: {integrity: sha512-y+CcFFwelSXpLZk/7fMB2mUbGtX9lKycf1MWJ7CaTIERyitVlyQx6C+sxcROU2BAJ24OiZyK+8wj2i8AlBoS3A==} engines: {node: '>=10'} dependencies: tslib: 2.6.2 @@ -1824,21 +1925,23 @@ packages: dequal: 2.0.3 dev: true - /array-buffer-byte-length@1.0.0: - resolution: {integrity: sha512-LPuwb2P+NrQw3XhxGc36+XSvuBPopovXYTR9Ew++Du9Yb/bx5AzBfrIsBoj0EZUifjQU+sHL21sseZ3jerWO/A==} + /array-buffer-byte-length@1.0.1: + resolution: {integrity: sha512-ahC5W1xgou+KTXix4sAO8Ki12Q+jf4i0+tmk3sC+zgcynshkHxzpXdImBehiUYKKKDwvfFiJl1tZt6ewscS1Mg==} + engines: {node: '>= 0.4'} dependencies: - call-bind: 1.0.2 - is-array-buffer: 3.0.2 + call-bind: 1.0.7 + is-array-buffer: 3.0.4 dev: true - /array-includes@3.1.7: - resolution: {integrity: sha512-dlcsNBIiWhPkHdOEEKnehA+RNUWDc4UqFtnIXU4uuYDPtA4LDkr7qip2p0VvFAEXNDr0yWZ9PJyIRiGjRLQzwQ==} + /array-includes@3.1.8: + resolution: {integrity: sha512-itaWrbYbqpGXkGhZPGUulwnhVf5Hpy1xiCFsGqyIGglbBxmG5vSjxQen3/WGOjPpNEv1RtBLKxbmVXm8HpJStQ==} engines: {node: '>= 0.4'} dependencies: - call-bind: 1.0.2 + call-bind: 1.0.7 define-properties: 1.2.1 - es-abstract: 1.22.2 - get-intrinsic: 1.2.1 + es-abstract: 1.23.3 + es-object-atoms: 1.0.0 + get-intrinsic: 1.2.4 is-string: 1.0.7 dev: true @@ -1847,72 +1950,89 @@ packages: engines: {node: '>=8'} dev: true - /array.prototype.findlastindex@1.2.3: - resolution: {integrity: sha512-LzLoiOMAxvy+Gd3BAq3B7VeIgPdo+Q8hthvKtXybMvRV0jrXfJM/t8mw7nNlpEcVlVUnCnM2KSX4XU5HmpodOA==} + /array.prototype.findlast@1.2.5: + resolution: {integrity: sha512-CVvd6FHg1Z3POpBLxO6E6zr+rSKEQ9L6rZHAaY7lLfhKsWYUBBOuMs0e9o24oopj6H+geRCX0YJ+TJLBK2eHyQ==} engines: {node: '>= 0.4'} dependencies: - call-bind: 1.0.2 + call-bind: 1.0.7 define-properties: 1.2.1 - es-abstract: 1.22.2 - es-shim-unscopables: 1.0.0 - get-intrinsic: 1.2.1 + es-abstract: 1.23.3 + es-errors: 1.3.0 + es-object-atoms: 1.0.0 + es-shim-unscopables: 1.0.2 + dev: true + + /array.prototype.findlastindex@1.2.5: + resolution: {integrity: sha512-zfETvRFA8o7EiNn++N5f/kaCw221hrpGsDmcpndVupkPzEc1Wuf3VgC0qby1BbHs7f5DVYjgtEU2LLh5bqeGfQ==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.7 + define-properties: 1.2.1 + es-abstract: 1.23.3 + es-errors: 1.3.0 + es-object-atoms: 1.0.0 + es-shim-unscopables: 1.0.2 dev: true /array.prototype.flat@1.3.2: resolution: {integrity: sha512-djYB+Zx2vLewY8RWlNCUdHjDXs2XOgm602S9E7P/UpHgfeHL00cRiIF+IN/G/aUJ7kGPb6yO/ErDI5V2s8iycA==} engines: {node: '>= 0.4'} dependencies: - call-bind: 1.0.2 + call-bind: 1.0.7 define-properties: 1.2.1 - es-abstract: 1.22.2 - es-shim-unscopables: 1.0.0 + es-abstract: 1.23.3 + es-shim-unscopables: 1.0.2 dev: true /array.prototype.flatmap@1.3.2: resolution: {integrity: sha512-Ewyx0c9PmpcsByhSW4r+9zDU7sGjFc86qf/kKtuSCRdhfbk0SNLLkaT5qvcHnRGgc5NP/ly/y+qkXkqONX54CQ==} engines: {node: '>= 0.4'} dependencies: - call-bind: 1.0.2 + call-bind: 1.0.7 define-properties: 1.2.1 - es-abstract: 1.22.2 - es-shim-unscopables: 1.0.0 + es-abstract: 1.23.3 + es-shim-unscopables: 1.0.2 dev: true - /array.prototype.tosorted@1.1.2: - resolution: {integrity: sha512-HuQCHOlk1Weat5jzStICBCd83NxiIMwqDg/dHEsoefabn/hJRj5pVdWcPUSpRrwhwxZOsQassMpgN/xRYFBMIg==} + /array.prototype.toreversed@1.1.2: + resolution: {integrity: sha512-wwDCoT4Ck4Cz7sLtgUmzR5UV3YF5mFHUlbChCzZBQZ+0m2cl/DH3tKgvphv1nKgFsJ48oCSg6p91q2Vm0I/ZMA==} dependencies: - call-bind: 1.0.2 + call-bind: 1.0.7 define-properties: 1.2.1 - es-abstract: 1.22.2 - es-shim-unscopables: 1.0.0 - get-intrinsic: 1.2.1 + es-abstract: 1.23.3 + es-shim-unscopables: 1.0.2 dev: true - /arraybuffer.prototype.slice@1.0.2: - resolution: {integrity: sha512-yMBKppFur/fbHu9/6USUe03bZ4knMYiwFBcyiaXB8Go0qNehwX6inYPzK9U0NeQvGxKthcmHcaR8P5MStSRBAw==} + /array.prototype.tosorted@1.1.3: + resolution: {integrity: sha512-/DdH4TiTmOKzyQbp/eadcCVexiCb36xJg7HshYOYJnNZFDj33GEv0P7GxsynpShhq4OLYJzbGcBDkLsDt7MnNg==} + dependencies: + call-bind: 1.0.7 + define-properties: 1.2.1 + es-abstract: 1.23.3 + es-errors: 1.3.0 + es-shim-unscopables: 1.0.2 + dev: true + + /arraybuffer.prototype.slice@1.0.3: + resolution: {integrity: sha512-bMxMKAjg13EBSVscxTaYA4mRc5t1UAXa2kXiGTNfZ079HIWXEkKmkgFrh/nJqamaLSrXO5H4WFFkPEaLJWbs3A==} engines: {node: '>= 0.4'} dependencies: - array-buffer-byte-length: 1.0.0 - call-bind: 1.0.2 + array-buffer-byte-length: 1.0.1 + call-bind: 1.0.7 define-properties: 1.2.1 - es-abstract: 1.22.2 - get-intrinsic: 1.2.1 - is-array-buffer: 3.0.2 - is-shared-array-buffer: 1.0.2 + es-abstract: 1.23.3 + es-errors: 1.3.0 + get-intrinsic: 1.2.4 + is-array-buffer: 3.0.4 + is-shared-array-buffer: 1.0.3 dev: true /assertion-error@1.1.0: resolution: {integrity: sha512-jgsaNduz+ndvGyFt3uSuWqvy4lCnIJiovtouQN5JZHOKCS2QuhEdbcQHFhVksz2N2U9hXJo8odG7ETyWlEeuDw==} dev: true - /ast-types-flow@0.0.7: - resolution: {integrity: sha512-eBvWn1lvIApYMhzQMsu9ciLfkBY499mFZlNqG+/9WR7PVlroQw0vG30cOQQbaKz3sCEc44TAOu2ykzqXSNnwag==} - dev: true - - /asynciterator.prototype@1.0.0: - resolution: {integrity: sha512-wwHYEIS0Q80f5mosx3L/dfG5t5rjEa9Ft51GTaNt862EnpyGHpgz2RkZvLPp1oF5TnAiTohkEKVEu8pQPJI7Vg==} - dependencies: - has-symbols: 1.0.3 + /ast-types-flow@0.0.8: + resolution: {integrity: sha512-OH/2E5Fg20h2aPrbe+QL8JZQFko0YZaF+j4mnQ7BGhfavO7OpSLa8a0y9sBwomHdSbkhTS8TQNayBfnW5DwbvQ==} dev: true /autoprefixer@10.4.19(postcss@8.4.38): @@ -1923,21 +2043,23 @@ packages: postcss: ^8.1.0 dependencies: browserslist: 4.23.0 - caniuse-lite: 1.0.30001600 + caniuse-lite: 1.0.30001620 fraction.js: 4.3.7 normalize-range: 0.1.2 - picocolors: 1.0.0 + picocolors: 1.0.1 postcss: 8.4.38 postcss-value-parser: 4.2.0 dev: true - /available-typed-arrays@1.0.5: - resolution: {integrity: sha512-DMD0KiN46eipeziST1LPP/STfDU0sufISXmjSgvVsoU2tqxctQeASejWcfNtxYKqETM1UxQ8sp2OrSBWpHY6sw==} + /available-typed-arrays@1.0.7: + resolution: {integrity: sha512-wvUjBtSGN7+7SjNpq/9M2Tg350UZD3q62IFZLbRAR1bSMlCo1ZaeW+BJ+D090e4hIIZLBcTDWe4Mh4jvUDajzQ==} engines: {node: '>= 0.4'} + dependencies: + possible-typed-array-names: 1.0.0 dev: true - /axe-core@4.8.2: - resolution: {integrity: sha512-/dlp0fxyM3R8YW7MFzaHWXrf4zzbr0vaYb23VBFCl83R7nWNPg/yaQw2Dc8jzCMmDVLhSdzH8MjrsuIUuvX+6g==} + /axe-core@4.7.0: + resolution: {integrity: sha512-M0JtH+hlOL5pLQwHOLNYZaXuhqmvS8oExsqB1SBYgA4Dk7u/xx+YdGHXaK5pyUfed5mYXdlYiphWq3G8cRi5JQ==} engines: {node: '>=4'} dev: true @@ -1950,8 +2072,8 @@ packages: /balanced-match@1.0.2: resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==} - /binary-extensions@2.2.0: - resolution: {integrity: sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==} + /binary-extensions@2.3.0: + resolution: {integrity: sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==} engines: {node: '>=8'} /bn.js@4.12.0: @@ -1967,12 +2089,12 @@ packages: dependencies: balanced-match: 1.0.2 concat-map: 0.0.1 + dev: true /brace-expansion@2.0.1: resolution: {integrity: sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==} dependencies: balanced-match: 1.0.2 - dev: true /braces@3.0.2: resolution: {integrity: sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==} @@ -1989,14 +2111,14 @@ packages: engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} hasBin: true dependencies: - caniuse-lite: 1.0.30001600 - electron-to-chromium: 1.4.717 + caniuse-lite: 1.0.30001620 + electron-to-chromium: 1.4.772 node-releases: 2.0.14 - update-browserslist-db: 1.0.13(browserslist@4.23.0) + update-browserslist-db: 1.0.16(browserslist@4.23.0) dev: true - /bundle-require@4.0.2(esbuild@0.18.20): - resolution: {integrity: sha512-jwzPOChofl67PSTW2SGubV9HBQAhhR2i6nskiOThauo9dzwDUgOWQScFVaJkjEfYX+UXiD+LEx8EblQMc2wIag==} + /bundle-require@4.1.0(esbuild@0.18.20): + resolution: {integrity: sha512-FeArRFM+ziGkRViKRnSTbHZc35dgmR9yNog05Kn0+ItI59pOAISGvnnIwW1WgFZQW59IxD9QpJnUPkdIPfZuXg==} engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} peerDependencies: esbuild: '>=0.17' @@ -2005,8 +2127,8 @@ packages: load-tsconfig: 0.2.5 dev: true - /bundle-require@4.0.2(esbuild@0.19.12): - resolution: {integrity: sha512-jwzPOChofl67PSTW2SGubV9HBQAhhR2i6nskiOThauo9dzwDUgOWQScFVaJkjEfYX+UXiD+LEx8EblQMc2wIag==} + /bundle-require@4.1.0(esbuild@0.19.12): + resolution: {integrity: sha512-FeArRFM+ziGkRViKRnSTbHZc35dgmR9yNog05Kn0+ItI59pOAISGvnnIwW1WgFZQW59IxD9QpJnUPkdIPfZuXg==} engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} peerDependencies: esbuild: '>=0.17' @@ -2026,11 +2148,15 @@ packages: engines: {node: '>=8'} dev: true - /call-bind@1.0.2: - resolution: {integrity: sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==} + /call-bind@1.0.7: + resolution: {integrity: sha512-GHTSNSYICQ7scH7sZ+M2rFopRoLh8t2bLSW6BbgrtLsahOIB5iyAVJf9GjWK3cYTDaMj4XdBpM1cA6pIS0Kv2w==} + engines: {node: '>= 0.4'} dependencies: - function-bind: 1.1.1 - get-intrinsic: 1.2.1 + es-define-property: 1.0.0 + es-errors: 1.3.0 + function-bind: 1.1.2 + get-intrinsic: 1.2.4 + set-function-length: 1.2.2 dev: true /callsites@3.1.0: @@ -2042,18 +2168,18 @@ packages: resolution: {integrity: sha512-QOSvevhslijgYwRx6Rv7zKdMF8lbRmx+uQGx2+vDc+KI/eBnsy9kit5aj23AgGu3pa4t9AgwbnXWqS+iOY+2aA==} engines: {node: '>= 6'} - /caniuse-lite@1.0.30001600: - resolution: {integrity: sha512-+2S9/2JFhYmYaDpZvo0lKkfvuKIglrx68MwOBqMGHhQsNkLjB5xtc/TGoEPs+MxjSyN/72qer2g97nzR641mOQ==} + /caniuse-lite@1.0.30001620: + resolution: {integrity: sha512-WJvYsOjd1/BYUY6SNGUosK9DUidBPDTnOARHp3fSmFO1ekdxaY6nKRttEVrfMmYi80ctS0kz1wiWmm14fVc3ew==} - /chai@4.3.10: - resolution: {integrity: sha512-0UXG04VuVbruMUYbJ6JctvH0YnC/4q3/AkT18q4NaITo91CUm0liMS9VqzT9vZhVQ/1eqPanMWjBM+Juhfb/9g==} + /chai@4.4.1: + resolution: {integrity: sha512-13sOfMv2+DWduEU+/xbun3LScLoqN17nBeTLUsmDfKdoiC1fr0n9PU4guu4AhRcOVFk/sW8LyZWHuhWtQZiF+g==} engines: {node: '>=4'} dependencies: assertion-error: 1.1.0 check-error: 1.0.3 deep-eql: 4.1.3 get-func-name: 2.0.2 - loupe: 2.3.6 + loupe: 2.3.7 pathval: 1.1.1 type-detect: 4.0.8 dev: true @@ -2072,8 +2198,8 @@ packages: get-func-name: 2.0.2 dev: true - /chokidar@3.5.3: - resolution: {integrity: sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==} + /chokidar@3.6.0: + resolution: {integrity: sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==} engines: {node: '>= 8.10.0'} dependencies: anymatch: 3.1.3 @@ -2098,11 +2224,24 @@ packages: engines: {node: '>=7.0.0'} dependencies: color-name: 1.1.4 - dev: true /color-name@1.1.4: resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==} - dev: true + + /color-string@1.9.1: + resolution: {integrity: sha512-shrVawQFojnZv6xM40anx4CkoDP+fZsw/ZerEMsW/pyzsRbElpsL/DBVW7q3ExxwusdNXI3lXpuhEZkzs8p5Eg==} + dependencies: + color-name: 1.1.4 + simple-swizzle: 0.2.2 + dev: false + + /color@4.2.3: + resolution: {integrity: sha512-1rXeuUUiGGrykh+CeBdu5Ie7OJwinCgQY0bc7GCRxy5xVHy+moaqkpL/jqQq0MtQOeYcrqEz4abc5f0KtU7W4A==} + engines: {node: '>=12.5.0'} + dependencies: + color-convert: 2.0.1 + color-string: 1.9.1 + dev: false /commander@4.1.1: resolution: {integrity: sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==} @@ -2110,6 +2249,11 @@ packages: /concat-map@0.0.1: resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==} + dev: true + + /confbox@0.1.7: + resolution: {integrity: sha512-uJcB/FKZtBMCJpK8MQji6bJHgu1tixKPxRLeGkNzBoOZzpnZUJm0jm2/sBDWcuBx1dYgxV4JU+g5hmNxCyAmdA==} + dev: true /cross-spawn@7.0.3: resolution: {integrity: sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==} @@ -2118,21 +2262,47 @@ packages: path-key: 3.1.1 shebang-command: 2.0.0 which: 2.0.2 - dev: true /cssesc@3.0.0: resolution: {integrity: sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==} engines: {node: '>=4'} hasBin: true - /csstype@3.1.2: - resolution: {integrity: sha512-I7K1Uu0MBPzaFKg4nI5Q7Vs2t+3gWWW648spaF+Rg7pI9ds18Ugn+lvg4SHczUdKlHI5LWBXyqfS8+DufyBsgQ==} + /csstype@3.1.3: + resolution: {integrity: sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==} dev: true /damerau-levenshtein@1.0.8: resolution: {integrity: sha512-sdQSFB7+llfUcQHUQO3+B8ERRj0Oa4w9POWMI/puGtuf7gFywGmkaLCElnudfTiKZV+NvHqL0ifzdrI8Ro7ESA==} dev: true + /data-view-buffer@1.0.1: + resolution: {integrity: sha512-0lht7OugA5x3iJLOWFhWK/5ehONdprk0ISXqVFn/NFrDu+cuc8iADFrGQz5BnRK7LLU3JmkbXSxaqX+/mXYtUA==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.7 + es-errors: 1.3.0 + is-data-view: 1.0.1 + dev: true + + /data-view-byte-length@1.0.1: + resolution: {integrity: sha512-4J7wRJD3ABAzr8wP+OcIcqq2dlUKp4DVflx++hs5h5ZKydWMI6/D/fAot+yh6g2tHh8fLFTvNOaVN357NvSrOQ==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.7 + es-errors: 1.3.0 + is-data-view: 1.0.1 + dev: true + + /data-view-byte-offset@1.0.0: + resolution: {integrity: sha512-t/Ygsytq+R995EJ5PZlD4Cu56sWa8InXySaViRzw9apusqsOO2bQP+SbYzAhR0pFKoB+43lYy8rWban9JSuXnA==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.7 + es-errors: 1.3.0 + is-data-view: 1.0.1 + dev: true + /date-fns@3.3.1: resolution: {integrity: sha512-y8e109LYGgoQDveiEBD3DYXKba1jWf5BA8YU1FL5Tvm0BTdEfy54WLCwnuYWZNnzzvALy/QQ4Hov+Q9RVRv+Zw==} dev: false @@ -2145,7 +2315,7 @@ packages: supports-color: optional: true dependencies: - ms: 2.1.2 + ms: 2.1.3 dev: true /debug@4.3.4: @@ -2175,21 +2345,21 @@ packages: resolution: {integrity: sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==} dev: true - /define-data-property@1.1.0: - resolution: {integrity: sha512-UzGwzcjyv3OtAvolTj1GoyNYzfFR+iqbGjcnBEENZVCpM4/Ng1yhGNvS3lR/xDS74Tb2wGG9WzNSNIOS9UVb2g==} + /define-data-property@1.1.4: + resolution: {integrity: sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==} engines: {node: '>= 0.4'} dependencies: - get-intrinsic: 1.2.1 + es-define-property: 1.0.0 + es-errors: 1.3.0 gopd: 1.0.1 - has-property-descriptors: 1.0.0 dev: true /define-properties@1.2.1: resolution: {integrity: sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==} engines: {node: '>= 0.4'} dependencies: - define-data-property: 1.1.0 - has-property-descriptors: 1.0.0 + define-data-property: 1.1.4 + has-property-descriptors: 1.0.2 object-keys: 1.1.1 dev: true @@ -2198,6 +2368,11 @@ packages: engines: {node: '>=6'} dev: true + /detect-libc@2.0.3: + resolution: {integrity: sha512-bwy0MGW55bG41VqxxypOsdSdGqLwXPI/focwgTYCFMbdUiBAxLg9CFzG08sz2aqzknwiX7Hkl0bQENjg8iLByw==} + engines: {node: '>=8'} + dev: false + /didyoumean@1.2.2: resolution: {integrity: sha512-gxtyfqMg7GKyhQmb056K7M3xszy/myH8w+B4RT+QXBQsvAOdc3XymqDDPHx1BgPgsdAA5SIifona89YtRATDzw==} @@ -2232,10 +2407,9 @@ packages: /eastasianwidth@0.2.0: resolution: {integrity: sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==} - dev: true - /electron-to-chromium@1.4.717: - resolution: {integrity: sha512-6Fmg8QkkumNOwuZ/5mIbMU9WI3H2fmn5ajcVya64I5Yr5CcNmO7vcLt0Y7c96DCiMO5/9G+4sI2r6eEvdg1F7A==} + /electron-to-chromium@1.4.772: + resolution: {integrity: sha512-jFfEbxR/abTTJA3ci+2ok1NTuOBBtB4jH+UT6PUmRN+DY3WSD4FFRsgoVQ+QNIJ0T7wrXwzsWCI2WKC46b++2A==} dev: true /elliptic@6.5.4: @@ -2252,97 +2426,122 @@ packages: /emoji-regex@8.0.0: resolution: {integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==} - dev: true /emoji-regex@9.2.2: resolution: {integrity: sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==} - dev: true - /enhanced-resolve@5.15.0: - resolution: {integrity: sha512-LXYT42KJ7lpIKECr2mAXIaMldcNCh/7E0KBKOu4KSfkHmP+mZmSs+8V5gBAqisWBy0OO4W5Oyys0GO1Y8KtdKg==} + /enhanced-resolve@5.16.1: + resolution: {integrity: sha512-4U5pNsuDl0EhuZpq46M5xPslstkviJuhrdobaRDBk2Jy2KO37FDAJl4lb2KlNabxT0m4MTK2UHNrsAcphE8nyw==} engines: {node: '>=10.13.0'} dependencies: graceful-fs: 4.2.11 tapable: 2.2.1 dev: true - /es-abstract@1.22.2: - resolution: {integrity: sha512-YoxfFcDmhjOgWPWsV13+2RNjq1F6UQnfs+8TftwNqtzlmFzEXvlUwdrNrYeaizfjQzRMxkZ6ElWMOJIFKdVqwA==} + /es-abstract@1.23.3: + resolution: {integrity: sha512-e+HfNH61Bj1X9/jLc5v1owaLYuHdeHHSQlkhCBiTK8rBvKaULl/beGMxwrMXjpYrv4pz22BlY570vVePA2ho4A==} engines: {node: '>= 0.4'} dependencies: - array-buffer-byte-length: 1.0.0 - arraybuffer.prototype.slice: 1.0.2 - available-typed-arrays: 1.0.5 - call-bind: 1.0.2 - es-set-tostringtag: 2.0.1 + array-buffer-byte-length: 1.0.1 + arraybuffer.prototype.slice: 1.0.3 + available-typed-arrays: 1.0.7 + call-bind: 1.0.7 + data-view-buffer: 1.0.1 + data-view-byte-length: 1.0.1 + data-view-byte-offset: 1.0.0 + es-define-property: 1.0.0 + es-errors: 1.3.0 + es-object-atoms: 1.0.0 + es-set-tostringtag: 2.0.3 es-to-primitive: 1.2.1 function.prototype.name: 1.1.6 - get-intrinsic: 1.2.1 - get-symbol-description: 1.0.0 - globalthis: 1.0.3 + get-intrinsic: 1.2.4 + get-symbol-description: 1.0.2 + globalthis: 1.0.4 gopd: 1.0.1 - has: 1.0.3 - has-property-descriptors: 1.0.0 - has-proto: 1.0.1 + has-property-descriptors: 1.0.2 + has-proto: 1.0.3 has-symbols: 1.0.3 - internal-slot: 1.0.5 - is-array-buffer: 3.0.2 + hasown: 2.0.2 + internal-slot: 1.0.7 + is-array-buffer: 3.0.4 is-callable: 1.2.7 - is-negative-zero: 2.0.2 + is-data-view: 1.0.1 + is-negative-zero: 2.0.3 is-regex: 1.1.4 - is-shared-array-buffer: 1.0.2 + is-shared-array-buffer: 1.0.3 is-string: 1.0.7 - is-typed-array: 1.1.12 + is-typed-array: 1.1.13 is-weakref: 1.0.2 - object-inspect: 1.12.3 + object-inspect: 1.13.1 object-keys: 1.1.1 - object.assign: 4.1.4 - regexp.prototype.flags: 1.5.1 - safe-array-concat: 1.0.1 - safe-regex-test: 1.0.0 - string.prototype.trim: 1.2.8 - string.prototype.trimend: 1.0.7 - string.prototype.trimstart: 1.0.7 - typed-array-buffer: 1.0.0 - typed-array-byte-length: 1.0.0 - typed-array-byte-offset: 1.0.0 - typed-array-length: 1.0.4 + object.assign: 4.1.5 + regexp.prototype.flags: 1.5.2 + safe-array-concat: 1.1.2 + safe-regex-test: 1.0.3 + string.prototype.trim: 1.2.9 + string.prototype.trimend: 1.0.8 + string.prototype.trimstart: 1.0.8 + typed-array-buffer: 1.0.2 + typed-array-byte-length: 1.0.1 + typed-array-byte-offset: 1.0.2 + typed-array-length: 1.0.6 unbox-primitive: 1.0.2 - which-typed-array: 1.1.11 + which-typed-array: 1.1.15 + dev: true + + /es-define-property@1.0.0: + resolution: {integrity: sha512-jxayLKShrEqqzJ0eumQbVhTYQM27CfT1T35+gCgDFoL82JLsXqTJ76zv6A0YLOgEnLUMvLzsDsGIrl8NFpT2gQ==} + engines: {node: '>= 0.4'} + dependencies: + get-intrinsic: 1.2.4 + dev: true + + /es-errors@1.3.0: + resolution: {integrity: sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==} + engines: {node: '>= 0.4'} dev: true - /es-iterator-helpers@1.0.15: - resolution: {integrity: sha512-GhoY8uYqd6iwUl2kgjTm4CZAf6oo5mHK7BPqx3rKgx893YSsy0LGHV6gfqqQvZt/8xM8xeOnfXBCfqclMKkJ5g==} + /es-iterator-helpers@1.0.19: + resolution: {integrity: sha512-zoMwbCcH5hwUkKJkT8kDIBZSz9I6mVG//+lDCinLCGov4+r7NIy0ld8o03M0cJxl2spVf6ESYVS6/gpIfq1FFw==} + engines: {node: '>= 0.4'} dependencies: - asynciterator.prototype: 1.0.0 - call-bind: 1.0.2 + call-bind: 1.0.7 define-properties: 1.2.1 - es-abstract: 1.22.2 - es-set-tostringtag: 2.0.1 - function-bind: 1.1.1 - get-intrinsic: 1.2.1 - globalthis: 1.0.3 - has-property-descriptors: 1.0.0 - has-proto: 1.0.1 + es-abstract: 1.23.3 + es-errors: 1.3.0 + es-set-tostringtag: 2.0.3 + function-bind: 1.1.2 + get-intrinsic: 1.2.4 + globalthis: 1.0.4 + has-property-descriptors: 1.0.2 + has-proto: 1.0.3 has-symbols: 1.0.3 - internal-slot: 1.0.5 + internal-slot: 1.0.7 iterator.prototype: 1.1.2 - safe-array-concat: 1.0.1 + safe-array-concat: 1.1.2 dev: true - /es-set-tostringtag@2.0.1: - resolution: {integrity: sha512-g3OMbtlwY3QewlqAiMLI47KywjWZoEytKr8pf6iTC8uJq5bIAH52Z9pnQ8pVL6whrCto53JZDuUIsifGeLorTg==} + /es-object-atoms@1.0.0: + resolution: {integrity: sha512-MZ4iQ6JwHOBQjahnjwaC1ZtIBH+2ohjamzAO3oaHcXYup7qxjF2fixyH+Q71voWHeOkI2q/TnJao/KfXYIZWbw==} engines: {node: '>= 0.4'} dependencies: - get-intrinsic: 1.2.1 - has: 1.0.3 - has-tostringtag: 1.0.0 + es-errors: 1.3.0 dev: true - /es-shim-unscopables@1.0.0: - resolution: {integrity: sha512-Jm6GPcCdC30eMLbZ2x8z2WuRwAws3zTBBKuusffYVUrNj/GVSUAZ+xKMaUpfNDR5IbyNA5LJbaecoUVbmUcB1w==} + /es-set-tostringtag@2.0.3: + resolution: {integrity: sha512-3T8uNMC3OQTHkFUsFq8r/BwAXLHvU/9O9mE0fBc/MY5iq/8H7ncvO947LmYA6ldWw9Uh8Yhf25zu6n7nML5QWQ==} + engines: {node: '>= 0.4'} dependencies: - has: 1.0.3 + get-intrinsic: 1.2.4 + has-tostringtag: 1.0.2 + hasown: 2.0.2 + dev: true + + /es-shim-unscopables@1.0.2: + resolution: {integrity: sha512-J3yBRXCzDu4ULnQwxyToo/OjdMx6akgVC7K6few0a7F/0wLtmKKN7I73AH5T2836UuXRqN7Qg+IIUw/+YJksRw==} + dependencies: + hasown: 2.0.2 dev: true /es-to-primitive@1.2.1: @@ -2415,8 +2614,8 @@ packages: '@esbuild/win32-x64': 0.19.12 dev: true - /escalade@3.1.1: - resolution: {integrity: sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==} + /escalade@3.1.2: + resolution: {integrity: sha512-ErCHMCae19vR8vQGe50xIsVomy19rg6gFu3+r3jkEO46suLMWBksvVyoGgQV+jOfl84ZSOSlmv6Gxa89PmTGmA==} engines: {node: '>=6'} dev: true @@ -2425,8 +2624,8 @@ packages: engines: {node: '>=10'} dev: true - /eslint-config-next@14.0.2(eslint@8.51.0)(typescript@5.4.5): - resolution: {integrity: sha512-CasWThlsyIcg/a+clU6KVOMTieuDhTztsrqvniP6AsRki9v7FnojTa7vKQOYM8QSOsQdZ/aElLD1Y2Oc8/PsIg==} + /eslint-config-next@14.2.3(eslint@8.56.0)(typescript@5.3.3): + resolution: {integrity: sha512-ZkNztm3Q7hjqvB1rRlOX8P9E/cXRL9ajRcs8jufEtwMfTVYRqnmtnaSu57QqHyBlovMuiB8LEzfLBkh5RYV6Fg==} peerDependencies: eslint: ^7.23.0 || ^8.0.0 typescript: '>=3.3.1' @@ -2434,23 +2633,23 @@ packages: typescript: optional: true dependencies: - '@next/eslint-plugin-next': 14.0.2 - '@rushstack/eslint-patch': 1.5.1 - '@typescript-eslint/parser': 6.7.3(eslint@8.51.0)(typescript@5.4.5) - eslint: 8.51.0 + '@next/eslint-plugin-next': 14.2.3 + '@rushstack/eslint-patch': 1.10.2 + '@typescript-eslint/parser': 7.2.0(eslint@8.56.0)(typescript@5.3.3) + eslint: 8.56.0 eslint-import-resolver-node: 0.3.9 - eslint-import-resolver-typescript: 3.6.1(@typescript-eslint/parser@6.7.3)(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.28.1)(eslint@8.51.0) - eslint-plugin-import: 2.28.1(@typescript-eslint/parser@6.7.3)(eslint-import-resolver-typescript@3.6.1)(eslint@8.51.0) - eslint-plugin-jsx-a11y: 6.7.1(eslint@8.51.0) - eslint-plugin-react: 7.33.2(eslint@8.51.0) - eslint-plugin-react-hooks: 4.6.0(eslint@8.51.0) - typescript: 5.4.5 + eslint-import-resolver-typescript: 3.6.1(@typescript-eslint/parser@7.2.0)(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.29.1)(eslint@8.56.0) + eslint-plugin-import: 2.29.1(@typescript-eslint/parser@7.2.0)(eslint-import-resolver-typescript@3.6.1)(eslint@8.56.0) + eslint-plugin-jsx-a11y: 6.8.0(eslint@8.56.0) + eslint-plugin-react: 7.34.1(eslint@8.56.0) + eslint-plugin-react-hooks: 4.6.2(eslint@8.56.0) + typescript: 5.3.3 transitivePeerDependencies: - eslint-import-resolver-webpack - supports-color dev: true - /eslint-config-next@14.2.3(eslint@9.2.0)(typescript@5.4.5): + /eslint-config-next@14.2.3(eslint@8.56.0)(typescript@5.4.5): resolution: {integrity: sha512-ZkNztm3Q7hjqvB1rRlOX8P9E/cXRL9ajRcs8jufEtwMfTVYRqnmtnaSu57QqHyBlovMuiB8LEzfLBkh5RYV6Fg==} peerDependencies: eslint: ^7.23.0 || ^8.0.0 @@ -2460,15 +2659,15 @@ packages: optional: true dependencies: '@next/eslint-plugin-next': 14.2.3 - '@rushstack/eslint-patch': 1.5.1 - '@typescript-eslint/parser': 6.7.3(eslint@9.2.0)(typescript@5.4.5) - eslint: 9.2.0 + '@rushstack/eslint-patch': 1.10.2 + '@typescript-eslint/parser': 7.2.0(eslint@8.56.0)(typescript@5.4.5) + eslint: 8.56.0 eslint-import-resolver-node: 0.3.9 - eslint-import-resolver-typescript: 3.6.1(@typescript-eslint/parser@6.7.3)(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.28.1)(eslint@9.2.0) - eslint-plugin-import: 2.28.1(@typescript-eslint/parser@6.7.3)(eslint-import-resolver-typescript@3.6.1)(eslint@9.2.0) - eslint-plugin-jsx-a11y: 6.7.1(eslint@9.2.0) - eslint-plugin-react: 7.33.2(eslint@9.2.0) - eslint-plugin-react-hooks: 4.6.0(eslint@9.2.0) + eslint-import-resolver-typescript: 3.6.1(@typescript-eslint/parser@7.2.0)(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.29.1)(eslint@8.56.0) + eslint-plugin-import: 2.29.1(@typescript-eslint/parser@7.2.0)(eslint-import-resolver-typescript@3.6.1)(eslint@8.56.0) + eslint-plugin-jsx-a11y: 6.8.0(eslint@8.56.0) + eslint-plugin-react: 7.34.1(eslint@8.56.0) + eslint-plugin-react-hooks: 4.6.2(eslint@8.56.0) typescript: 5.4.5 transitivePeerDependencies: - eslint-import-resolver-webpack @@ -2479,13 +2678,13 @@ packages: resolution: {integrity: sha512-WFj2isz22JahUv+B788TlO3N6zL3nNJGU8CcZbPZvVEkBPaJdCV4vy5wyghty5ROFbCRnm132v8BScu5/1BQ8g==} dependencies: debug: 3.2.7 - is-core-module: 2.13.0 - resolve: 1.22.6 + is-core-module: 2.13.1 + resolve: 1.22.8 transitivePeerDependencies: - supports-color dev: true - /eslint-import-resolver-typescript@3.6.1(@typescript-eslint/parser@6.7.3)(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.28.1)(eslint@8.51.0): + /eslint-import-resolver-typescript@3.6.1(@typescript-eslint/parser@7.2.0)(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.29.1)(eslint@8.56.0): resolution: {integrity: sha512-xgdptdoi5W3niYeuQxKmzVDTATvLYqhpwmykwsh7f6HIOStGWEIL9iqZgQDF9u9OEzrRwR8no5q2VT+bjAujTg==} engines: {node: ^14.18.0 || >=16.0.0} peerDependencies: @@ -2493,13 +2692,13 @@ packages: eslint-plugin-import: '*' dependencies: debug: 4.3.4 - enhanced-resolve: 5.15.0 - eslint: 8.51.0 - eslint-module-utils: 2.8.0(@typescript-eslint/parser@6.7.3)(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.1)(eslint@8.51.0) - eslint-plugin-import: 2.28.1(@typescript-eslint/parser@6.7.3)(eslint-import-resolver-typescript@3.6.1)(eslint@8.51.0) - fast-glob: 3.3.1 - get-tsconfig: 4.7.2 - is-core-module: 2.13.0 + enhanced-resolve: 5.16.1 + eslint: 8.56.0 + eslint-module-utils: 2.8.1(@typescript-eslint/parser@7.2.0)(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.1)(eslint@8.56.0) + eslint-plugin-import: 2.29.1(@typescript-eslint/parser@7.2.0)(eslint-import-resolver-typescript@3.6.1)(eslint@8.56.0) + fast-glob: 3.3.2 + get-tsconfig: 4.7.5 + is-core-module: 2.13.1 is-glob: 4.0.3 transitivePeerDependencies: - '@typescript-eslint/parser' @@ -2508,31 +2707,8 @@ packages: - supports-color dev: true - /eslint-import-resolver-typescript@3.6.1(@typescript-eslint/parser@6.7.3)(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.28.1)(eslint@9.2.0): - resolution: {integrity: sha512-xgdptdoi5W3niYeuQxKmzVDTATvLYqhpwmykwsh7f6HIOStGWEIL9iqZgQDF9u9OEzrRwR8no5q2VT+bjAujTg==} - engines: {node: ^14.18.0 || >=16.0.0} - peerDependencies: - eslint: '*' - eslint-plugin-import: '*' - dependencies: - debug: 4.3.4 - enhanced-resolve: 5.15.0 - eslint: 9.2.0 - eslint-module-utils: 2.8.0(@typescript-eslint/parser@6.7.3)(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.1)(eslint@9.2.0) - eslint-plugin-import: 2.28.1(@typescript-eslint/parser@6.7.3)(eslint-import-resolver-typescript@3.6.1)(eslint@9.2.0) - fast-glob: 3.3.1 - get-tsconfig: 4.7.2 - is-core-module: 2.13.0 - is-glob: 4.0.3 - transitivePeerDependencies: - - '@typescript-eslint/parser' - - eslint-import-resolver-node - - eslint-import-resolver-webpack - - supports-color - dev: true - - /eslint-module-utils@2.8.0(@typescript-eslint/parser@6.7.3)(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.1)(eslint@8.51.0): - resolution: {integrity: sha512-aWajIYfsqCKRDgUfjEXNN/JlrzauMuSEy5sbd7WXbtW3EH6A6MpwEh42c7qD+MqQo9QMJ6fWLAeIJynx0g6OAw==} + /eslint-module-utils@2.8.1(@typescript-eslint/parser@7.2.0)(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.1)(eslint@8.56.0): + resolution: {integrity: sha512-rXDXR3h7cs7dy9RNpUlQf80nX31XWJEyGq1tRMo+6GsO5VmTe4UTwtmonAD4ZkAsrfMVDA2wlGJ3790Ys+D49Q==} engines: {node: '>=4'} peerDependencies: '@typescript-eslint/parser': '*' @@ -2552,47 +2728,17 @@ packages: eslint-import-resolver-webpack: optional: true dependencies: - '@typescript-eslint/parser': 6.7.3(eslint@8.51.0)(typescript@5.4.5) + '@typescript-eslint/parser': 7.2.0(eslint@8.56.0)(typescript@5.4.5) debug: 3.2.7 - eslint: 8.51.0 + eslint: 8.56.0 eslint-import-resolver-node: 0.3.9 - eslint-import-resolver-typescript: 3.6.1(@typescript-eslint/parser@6.7.3)(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.28.1)(eslint@8.51.0) + eslint-import-resolver-typescript: 3.6.1(@typescript-eslint/parser@7.2.0)(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.29.1)(eslint@8.56.0) transitivePeerDependencies: - supports-color dev: true - /eslint-module-utils@2.8.0(@typescript-eslint/parser@6.7.3)(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.1)(eslint@9.2.0): - resolution: {integrity: sha512-aWajIYfsqCKRDgUfjEXNN/JlrzauMuSEy5sbd7WXbtW3EH6A6MpwEh42c7qD+MqQo9QMJ6fWLAeIJynx0g6OAw==} - engines: {node: '>=4'} - peerDependencies: - '@typescript-eslint/parser': '*' - eslint: '*' - eslint-import-resolver-node: '*' - eslint-import-resolver-typescript: '*' - eslint-import-resolver-webpack: '*' - peerDependenciesMeta: - '@typescript-eslint/parser': - optional: true - eslint: - optional: true - eslint-import-resolver-node: - optional: true - eslint-import-resolver-typescript: - optional: true - eslint-import-resolver-webpack: - optional: true - dependencies: - '@typescript-eslint/parser': 6.7.3(eslint@9.2.0)(typescript@5.4.5) - debug: 3.2.7 - eslint: 9.2.0 - eslint-import-resolver-node: 0.3.9 - eslint-import-resolver-typescript: 3.6.1(@typescript-eslint/parser@6.7.3)(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.28.1)(eslint@9.2.0) - transitivePeerDependencies: - - supports-color - dev: true - - /eslint-plugin-import@2.28.1(@typescript-eslint/parser@6.7.3)(eslint-import-resolver-typescript@3.6.1)(eslint@8.51.0): - resolution: {integrity: sha512-9I9hFlITvOV55alzoKBI+K9q74kv0iKMeY6av5+umsNwayt59fz692daGyjR+oStBQgx6nwR9rXldDev3Clw+A==} + /eslint-plugin-import@2.29.1(@typescript-eslint/parser@7.2.0)(eslint-import-resolver-typescript@3.6.1)(eslint@8.56.0): + resolution: {integrity: sha512-BbPC0cuExzhiMo4Ff1BTVwHpjjv28C5R+btTOGaCRC7UEz801up0JadwkeSk5Ued6TG34uaczuVuH6qyy5YUxw==} engines: {node: '>=4'} peerDependencies: '@typescript-eslint/parser': '*' @@ -2601,182 +2747,90 @@ packages: '@typescript-eslint/parser': optional: true dependencies: - '@typescript-eslint/parser': 6.7.3(eslint@8.51.0)(typescript@5.4.5) - array-includes: 3.1.7 - array.prototype.findlastindex: 1.2.3 + '@typescript-eslint/parser': 7.2.0(eslint@8.56.0)(typescript@5.4.5) + array-includes: 3.1.8 + array.prototype.findlastindex: 1.2.5 array.prototype.flat: 1.3.2 array.prototype.flatmap: 1.3.2 debug: 3.2.7 doctrine: 2.1.0 - eslint: 8.51.0 + eslint: 8.56.0 eslint-import-resolver-node: 0.3.9 - eslint-module-utils: 2.8.0(@typescript-eslint/parser@6.7.3)(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.1)(eslint@8.51.0) - has: 1.0.3 - is-core-module: 2.13.0 + eslint-module-utils: 2.8.1(@typescript-eslint/parser@7.2.0)(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.1)(eslint@8.56.0) + hasown: 2.0.2 + is-core-module: 2.13.1 is-glob: 4.0.3 minimatch: 3.1.2 - object.fromentries: 2.0.7 - object.groupby: 1.0.1 - object.values: 1.1.7 + object.fromentries: 2.0.8 + object.groupby: 1.0.3 + object.values: 1.2.0 semver: 6.3.1 - tsconfig-paths: 3.14.2 + tsconfig-paths: 3.15.0 transitivePeerDependencies: - eslint-import-resolver-typescript - eslint-import-resolver-webpack - supports-color dev: true - /eslint-plugin-import@2.28.1(@typescript-eslint/parser@6.7.3)(eslint-import-resolver-typescript@3.6.1)(eslint@9.2.0): - resolution: {integrity: sha512-9I9hFlITvOV55alzoKBI+K9q74kv0iKMeY6av5+umsNwayt59fz692daGyjR+oStBQgx6nwR9rXldDev3Clw+A==} - engines: {node: '>=4'} - peerDependencies: - '@typescript-eslint/parser': '*' - eslint: ^2 || ^3 || ^4 || ^5 || ^6 || ^7.2.0 || ^8 - peerDependenciesMeta: - '@typescript-eslint/parser': - optional: true - dependencies: - '@typescript-eslint/parser': 6.7.3(eslint@9.2.0)(typescript@5.4.5) - array-includes: 3.1.7 - array.prototype.findlastindex: 1.2.3 - array.prototype.flat: 1.3.2 - array.prototype.flatmap: 1.3.2 - debug: 3.2.7 - doctrine: 2.1.0 - eslint: 9.2.0 - eslint-import-resolver-node: 0.3.9 - eslint-module-utils: 2.8.0(@typescript-eslint/parser@6.7.3)(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.1)(eslint@9.2.0) - has: 1.0.3 - is-core-module: 2.13.0 - is-glob: 4.0.3 - minimatch: 3.1.2 - object.fromentries: 2.0.7 - object.groupby: 1.0.1 - object.values: 1.1.7 - semver: 6.3.1 - tsconfig-paths: 3.14.2 - transitivePeerDependencies: - - eslint-import-resolver-typescript - - eslint-import-resolver-webpack - - supports-color - dev: true - - /eslint-plugin-jsx-a11y@6.7.1(eslint@8.51.0): - resolution: {integrity: sha512-63Bog4iIethyo8smBklORknVjB0T2dwB8Mr/hIC+fBS0uyHdYYpzM/Ed+YC8VxTjlXHEWFOdmgwcDn1U2L9VCA==} + /eslint-plugin-jsx-a11y@6.8.0(eslint@8.56.0): + resolution: {integrity: sha512-Hdh937BS3KdwwbBaKd5+PLCOmYY6U4f2h9Z2ktwtNKvIdIEu137rjYbcb9ApSbVJfWxANNuiKTD/9tOKjK9qOA==} engines: {node: '>=4.0'} peerDependencies: eslint: ^3 || ^4 || ^5 || ^6 || ^7 || ^8 dependencies: - '@babel/runtime': 7.23.1 + '@babel/runtime': 7.24.5 aria-query: 5.3.0 - array-includes: 3.1.7 + array-includes: 3.1.8 array.prototype.flatmap: 1.3.2 - ast-types-flow: 0.0.7 - axe-core: 4.8.2 + ast-types-flow: 0.0.8 + axe-core: 4.7.0 axobject-query: 3.2.1 damerau-levenshtein: 1.0.8 emoji-regex: 9.2.2 - eslint: 8.51.0 - has: 1.0.3 + es-iterator-helpers: 1.0.19 + eslint: 8.56.0 + hasown: 2.0.2 jsx-ast-utils: 3.3.5 - language-tags: 1.0.5 + language-tags: 1.0.9 minimatch: 3.1.2 - object.entries: 1.1.7 - object.fromentries: 2.0.7 - semver: 6.3.1 + object.entries: 1.1.8 + object.fromentries: 2.0.8 dev: true - /eslint-plugin-jsx-a11y@6.7.1(eslint@9.2.0): - resolution: {integrity: sha512-63Bog4iIethyo8smBklORknVjB0T2dwB8Mr/hIC+fBS0uyHdYYpzM/Ed+YC8VxTjlXHEWFOdmgwcDn1U2L9VCA==} - engines: {node: '>=4.0'} - peerDependencies: - eslint: ^3 || ^4 || ^5 || ^6 || ^7 || ^8 - dependencies: - '@babel/runtime': 7.23.1 - aria-query: 5.3.0 - array-includes: 3.1.7 - array.prototype.flatmap: 1.3.2 - ast-types-flow: 0.0.7 - axe-core: 4.8.2 - axobject-query: 3.2.1 - damerau-levenshtein: 1.0.8 - emoji-regex: 9.2.2 - eslint: 9.2.0 - has: 1.0.3 - jsx-ast-utils: 3.3.5 - language-tags: 1.0.5 - minimatch: 3.1.2 - object.entries: 1.1.7 - object.fromentries: 2.0.7 - semver: 6.3.1 - dev: true - - /eslint-plugin-react-hooks@4.6.0(eslint@8.51.0): - resolution: {integrity: sha512-oFc7Itz9Qxh2x4gNHStv3BqJq54ExXmfC+a1NjAta66IAN87Wu0R/QArgIS9qKzX3dXKPI9H5crl9QchNMY9+g==} - engines: {node: '>=10'} - peerDependencies: - eslint: ^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0-0 - dependencies: - eslint: 8.51.0 - dev: true - - /eslint-plugin-react-hooks@4.6.0(eslint@9.2.0): - resolution: {integrity: sha512-oFc7Itz9Qxh2x4gNHStv3BqJq54ExXmfC+a1NjAta66IAN87Wu0R/QArgIS9qKzX3dXKPI9H5crl9QchNMY9+g==} + /eslint-plugin-react-hooks@4.6.2(eslint@8.56.0): + resolution: {integrity: sha512-QzliNJq4GinDBcD8gPB5v0wh6g8q3SUi6EFF0x8N/BL9PoVs0atuGc47ozMRyOWAKdwaZ5OnbOEa3WR+dSGKuQ==} engines: {node: '>=10'} peerDependencies: eslint: ^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0-0 dependencies: - eslint: 9.2.0 + eslint: 8.56.0 dev: true - /eslint-plugin-react@7.33.2(eslint@8.51.0): - resolution: {integrity: sha512-73QQMKALArI8/7xGLNI/3LylrEYrlKZSb5C9+q3OtOewTnMQi5cT+aE9E41sLCmli3I9PGGmD1yiZydyo4FEPw==} + /eslint-plugin-react@7.34.1(eslint@8.56.0): + resolution: {integrity: sha512-N97CxlouPT1AHt8Jn0mhhN2RrADlUAsk1/atcT2KyA/l9Q/E6ll7OIGwNumFmWfZ9skV3XXccYS19h80rHtgkw==} engines: {node: '>=4'} peerDependencies: eslint: ^3 || ^4 || ^5 || ^6 || ^7 || ^8 dependencies: - array-includes: 3.1.7 + array-includes: 3.1.8 + array.prototype.findlast: 1.2.5 array.prototype.flatmap: 1.3.2 - array.prototype.tosorted: 1.1.2 + array.prototype.toreversed: 1.1.2 + array.prototype.tosorted: 1.1.3 doctrine: 2.1.0 - es-iterator-helpers: 1.0.15 - eslint: 8.51.0 + es-iterator-helpers: 1.0.19 + eslint: 8.56.0 estraverse: 5.3.0 jsx-ast-utils: 3.3.5 minimatch: 3.1.2 - object.entries: 1.1.7 - object.fromentries: 2.0.7 - object.hasown: 1.1.3 - object.values: 1.1.7 + object.entries: 1.1.8 + object.fromentries: 2.0.8 + object.hasown: 1.1.4 + object.values: 1.2.0 prop-types: 15.8.1 - resolve: 2.0.0-next.4 + resolve: 2.0.0-next.5 semver: 6.3.1 - string.prototype.matchall: 4.0.10 - dev: true - - /eslint-plugin-react@7.33.2(eslint@9.2.0): - resolution: {integrity: sha512-73QQMKALArI8/7xGLNI/3LylrEYrlKZSb5C9+q3OtOewTnMQi5cT+aE9E41sLCmli3I9PGGmD1yiZydyo4FEPw==} - engines: {node: '>=4'} - peerDependencies: - eslint: ^3 || ^4 || ^5 || ^6 || ^7 || ^8 - dependencies: - array-includes: 3.1.7 - array.prototype.flatmap: 1.3.2 - array.prototype.tosorted: 1.1.2 - doctrine: 2.1.0 - es-iterator-helpers: 1.0.15 - eslint: 9.2.0 - estraverse: 5.3.0 - jsx-ast-utils: 3.3.5 - minimatch: 3.1.2 - object.entries: 1.1.7 - object.fromentries: 2.0.7 - object.hasown: 1.1.3 - object.values: 1.1.7 - prop-types: 15.8.1 - resolve: 2.0.0-next.4 - semver: 6.3.1 - string.prototype.matchall: 4.0.10 + string.prototype.matchall: 4.0.11 dev: true /eslint-scope@7.2.2: @@ -2787,36 +2841,24 @@ packages: estraverse: 5.3.0 dev: true - /eslint-scope@8.0.1: - resolution: {integrity: sha512-pL8XjgP4ZOmmwfFE8mEhSxA7ZY4C+LWyqjQ3o4yWkkmD0qcMT9kkW3zWHOczhWcjTSgqycYAgwSlXvZltv65og==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - dependencies: - esrecurse: 4.3.0 - estraverse: 5.3.0 - dev: true - /eslint-visitor-keys@3.4.3: resolution: {integrity: sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} dev: true - /eslint-visitor-keys@4.0.0: - resolution: {integrity: sha512-OtIRv/2GyiF6o/d8K7MYKKbXrOUBIK6SfkIRM4Z0dY3w+LiQ0vy3F57m0Z71bjbyeiWFiHJ8brqnmE6H6/jEuw==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - dev: true - - /eslint@8.51.0: - resolution: {integrity: sha512-2WuxRZBrlwnXi+/vFSJyjMqrNjtJqiasMzehF0shoLaW7DzS3/9Yvrmq5JiT66+pNjiX4UBnLDiKHcWAr/OInA==} + /eslint@8.56.0: + resolution: {integrity: sha512-Go19xM6T9puCOWntie1/P997aXxFsOi37JIHRWI514Hc6ZnaHGKY9xFhrU65RT6CcBEzZoGG1e6Nq+DT04ZtZQ==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} hasBin: true dependencies: - '@eslint-community/eslint-utils': 4.4.0(eslint@8.51.0) - '@eslint-community/regexpp': 4.9.1 - '@eslint/eslintrc': 2.1.2 - '@eslint/js': 8.51.0 - '@humanwhocodes/config-array': 0.11.11 + '@eslint-community/eslint-utils': 4.4.0(eslint@8.56.0) + '@eslint-community/regexpp': 4.10.0 + '@eslint/eslintrc': 2.1.4 + '@eslint/js': 8.56.0 + '@humanwhocodes/config-array': 0.11.14 '@humanwhocodes/module-importer': 1.0.1 '@nodelib/fs.walk': 1.2.8 + '@ungap/structured-clone': 1.2.0 ajv: 6.12.6 chalk: 4.1.2 cross-spawn: 7.0.3 @@ -2832,9 +2874,9 @@ packages: file-entry-cache: 6.0.1 find-up: 5.0.0 glob-parent: 6.0.2 - globals: 13.22.0 + globals: 13.24.0 graphemer: 1.4.0 - ignore: 5.2.4 + ignore: 5.3.1 imurmurhash: 0.1.4 is-glob: 4.0.3 is-path-inside: 3.0.3 @@ -2844,71 +2886,19 @@ packages: lodash.merge: 4.6.2 minimatch: 3.1.2 natural-compare: 1.4.0 - optionator: 0.9.3 - strip-ansi: 6.0.1 - text-table: 0.2.0 - transitivePeerDependencies: - - supports-color - dev: true - - /eslint@9.2.0: - resolution: {integrity: sha512-0n/I88vZpCOzO+PQpt0lbsqmn9AsnsJAQseIqhZFI8ibQT0U1AkEKRxA3EVMos0BoHSXDQvCXY25TUjB5tr8Og==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - hasBin: true - dependencies: - '@eslint-community/eslint-utils': 4.4.0(eslint@9.2.0) - '@eslint-community/regexpp': 4.9.1 - '@eslint/eslintrc': 3.0.2 - '@eslint/js': 9.2.0 - '@humanwhocodes/config-array': 0.13.0 - '@humanwhocodes/module-importer': 1.0.1 - '@humanwhocodes/retry': 0.2.4 - '@nodelib/fs.walk': 1.2.8 - ajv: 6.12.6 - chalk: 4.1.2 - cross-spawn: 7.0.3 - debug: 4.3.4 - escape-string-regexp: 4.0.0 - eslint-scope: 8.0.1 - eslint-visitor-keys: 4.0.0 - espree: 10.0.1 - esquery: 1.5.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.2.4 - imurmurhash: 0.1.4 - is-glob: 4.0.3 - is-path-inside: 3.0.3 - json-stable-stringify-without-jsonify: 1.0.1 - levn: 0.4.1 - lodash.merge: 4.6.2 - minimatch: 3.1.2 - natural-compare: 1.4.0 - optionator: 0.9.3 + optionator: 0.9.4 strip-ansi: 6.0.1 text-table: 0.2.0 transitivePeerDependencies: - supports-color dev: true - /espree@10.0.1: - resolution: {integrity: sha512-MWkrWZbJsL2UwnjxTX3gG8FneachS/Mwg7tdGXce011sJd5b0JG54vat5KHnfSBODZ3Wvzd2WnjxyzsRoVv+ww==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - dependencies: - acorn: 8.11.3 - acorn-jsx: 5.3.2(acorn@8.11.3) - eslint-visitor-keys: 4.0.0 - dev: true - /espree@9.6.1: resolution: {integrity: sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} dependencies: - acorn: 8.10.0 - acorn-jsx: 5.3.2(acorn@8.10.0) + acorn: 8.11.3 + acorn-jsx: 5.3.2(acorn@8.11.3) eslint-visitor-keys: 3.4.3 dev: true @@ -2976,8 +2966,8 @@ packages: resolution: {integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==} dev: true - /fast-glob@3.3.1: - resolution: {integrity: sha512-kNFPyjhh5cKjrUltxs+wFx+ZkbRaxxmZ+X0ZU31SOsxCEtP9VPgtq2teZw1DebupL5GmDaNQ6yKMMVcM41iqDg==} + /fast-glob@3.3.2: + resolution: {integrity: sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow==} engines: {node: '>=8.6.0'} dependencies: '@nodelib/fs.stat': 2.0.5 @@ -2994,8 +2984,8 @@ packages: resolution: {integrity: sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==} dev: true - /fastq@1.15.0: - resolution: {integrity: sha512-wBrocU2LCXXa+lWBt8RoIRD89Fi8OdABODa/kEnyeyjS5aZO5/GNvI5sEINADqP/h8M29UHTHUb53sUu5Ihqdw==} + /fastq@1.17.1: + resolution: {integrity: sha512-sRVD3lWVIXWg6By68ZN7vho9a1pQcN/WBFaAAsDDFzlJjvoGx0P8z7V1t72grFJfJhu3YPZBuu25f7Kaw2jN1w==} dependencies: reusify: 1.0.4 @@ -3003,14 +2993,7 @@ packages: resolution: {integrity: sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==} engines: {node: ^10.12.0 || >=12.0.0} dependencies: - flat-cache: 3.1.0 - dev: true - - /file-entry-cache@8.0.0: - resolution: {integrity: sha512-XXTUwCvisa5oacNGRP9SfNtYBNAMi+RPwBFmblZEF7N7swHYQS6/Zfk7SRwx4D5j3CH211YNRco1DEMNVfZCnQ==} - engines: {node: '>=16.0.0'} - dependencies: - flat-cache: 4.0.1 + flat-cache: 3.2.0 dev: true /fill-range@7.0.1: @@ -3027,25 +3010,17 @@ packages: path-exists: 4.0.0 dev: true - /flat-cache@3.1.0: - resolution: {integrity: sha512-OHx4Qwrrt0E4jEIcI5/Xb+f+QmJYNj2rrK8wiIdQOIrB9WrrJL8cjZvXdXuBTkkEwEqLycb5BeZDV1o2i9bTew==} - engines: {node: '>=12.0.0'} - dependencies: - flatted: 3.2.9 - keyv: 4.5.3 - rimraf: 3.0.2 - dev: true - - /flat-cache@4.0.1: - resolution: {integrity: sha512-f7ccFPK3SXFHpx15UIGyRJ/FJQctuKZ0zVuN3frBo4HnK3cay9VEW0R6yPYFHC0AgqhukPzKjq22t5DmAyqGyw==} - engines: {node: '>=16'} + /flat-cache@3.2.0: + resolution: {integrity: sha512-CYcENa+FtcUKLmhhqyctpclsq7QF38pKjZHsGNiSQF5r4FtoKDWabFDl3hzaEQMvT1LHEysw5twgLvpYYb4vbw==} + engines: {node: ^10.12.0 || >=12.0.0} dependencies: - flatted: 3.2.9 + flatted: 3.3.1 keyv: 4.5.4 + rimraf: 3.0.2 dev: true - /flatted@3.2.9: - resolution: {integrity: sha512-36yxDn5H7OFZQla0/jFJmbIKTdZAQHngCedGxiMmpNfEZM0sdEeT+WczLQrjK6D7o2aiyLYDnkw0R3JK0Qv1RQ==} + /flatted@3.3.1: + resolution: {integrity: sha512-X8cqMLLie7KsNUDSdzeN8FYK9rEt4Dt67OsG/DNGnYTSDBG4uFAJFBnUeiV+zCVAvwFy56IjM9sH51jVaEhNxw==} dev: true /for-each@0.3.3: @@ -3060,7 +3035,6 @@ packages: dependencies: cross-spawn: 7.0.3 signal-exit: 4.1.0 - dev: true /fraction.js@4.3.7: resolution: {integrity: sha512-ZsDfxO51wGAXREY55a7la9LScWpwv9RxIrYABrlvOFBlH/ShPnrtsXeuUIfXKKOVicNxQ+o8JTbJvjS4M89yew==} @@ -3068,6 +3042,7 @@ packages: /fs.realpath@1.0.0: resolution: {integrity: sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==} + dev: true /fsevents@2.3.3: resolution: {integrity: sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==} @@ -3076,16 +3051,16 @@ packages: requiresBuild: true optional: true - /function-bind@1.1.1: - resolution: {integrity: sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==} + /function-bind@1.1.2: + resolution: {integrity: sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==} /function.prototype.name@1.1.6: resolution: {integrity: sha512-Z5kx79swU5P27WEayXM1tBi5Ze/lbIyiNgU3qyXUOf9b2rgXYyF9Dy9Cx+IQv/Lc8WCG6L82zwUPpSS9hGehIg==} engines: {node: '>= 0.4'} dependencies: - call-bind: 1.0.2 + call-bind: 1.0.7 define-properties: 1.2.1 - es-abstract: 1.22.2 + es-abstract: 1.23.3 functions-have-names: 1.2.3 dev: true @@ -3097,13 +3072,15 @@ packages: resolution: {integrity: sha512-8vXOvuE167CtIc3OyItco7N/dpRtBbYOsPsXCz7X/PMnlGjYjSGuZJgM1Y7mmew7BKf9BqvLX2tnOVy1BBUsxQ==} dev: true - /get-intrinsic@1.2.1: - resolution: {integrity: sha512-2DcsyfABl+gVHEfCOaTrWgyt+tb6MSEGmKq+kI5HwLbIYgjgmMcV8KQ41uaKz1xxUcn9tJtgFbQUEVcEbd0FYw==} + /get-intrinsic@1.2.4: + resolution: {integrity: sha512-5uYhsJH8VJBTv7oslg4BznJYhDoRI6waYCxMmCdnTrcCrHA/fCFKoTFz2JKKE0HdDFUF7/oQuhzumXJK7paBRQ==} + engines: {node: '>= 0.4'} dependencies: - function-bind: 1.1.1 - has: 1.0.3 - has-proto: 1.0.1 + es-errors: 1.3.0 + function-bind: 1.1.2 + has-proto: 1.0.3 has-symbols: 1.0.3 + hasown: 2.0.2 dev: true /get-stream@6.0.1: @@ -3116,16 +3093,17 @@ packages: engines: {node: '>=16'} dev: true - /get-symbol-description@1.0.0: - resolution: {integrity: sha512-2EmdH1YvIQiZpltCNgkuiUnyukzxM/R6NDJX31Ke3BG1Nq5b0S2PhX59UKi9vZpPDQVdqn+1IcaAwnzTT5vCjw==} + /get-symbol-description@1.0.2: + resolution: {integrity: sha512-g0QYk1dZBxGwk+Ngc+ltRH2IBp2f7zBkBMBJZCDerh6EhlhSR6+9irMCuT/09zD6qkarHUSn529sK/yL4S27mg==} engines: {node: '>= 0.4'} dependencies: - call-bind: 1.0.2 - get-intrinsic: 1.2.1 + call-bind: 1.0.7 + es-errors: 1.3.0 + get-intrinsic: 1.2.4 dev: true - /get-tsconfig@4.7.2: - resolution: {integrity: sha512-wuMsz4leaj5hbGgg4IvDU0bqJagpftG5l5cXIAvo8uZrqn0NJqwtfupTN00VnkQJPcIRrxYrm1Ue24btpCha2A==} + /get-tsconfig@4.7.5: + resolution: {integrity: sha512-ZCuZCnlqNzjb4QprAzXKdpp/gh6KTxSJuw3IBsPnV/7fV4NxC9ckB+vPTt8w7fJA0TaSD7c55BR47JD6MEDyDw==} dependencies: resolve-pkg-maps: 1.0.0 dev: true @@ -3142,10 +3120,6 @@ packages: dependencies: is-glob: 4.0.3 - /glob-to-regexp@0.4.1: - resolution: {integrity: sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==} - dev: false - /glob@10.3.10: resolution: {integrity: sha512-fa46+tv1Ak0UPK1TOy/pZrIybNNt4HCv7SDzwyfiOZkvZLEbjsZkJBPtDHVshZjbecAoAGSC20MjLDG/qr679g==} engines: {node: '>=16 || 14 >=14.17'} @@ -3153,23 +3127,24 @@ packages: dependencies: foreground-child: 3.1.1 jackspeak: 2.3.6 - minimatch: 9.0.3 - minipass: 7.0.4 - path-scurry: 1.10.1 + minimatch: 9.0.4 + minipass: 7.1.1 + path-scurry: 1.11.1 dev: true - /glob@7.1.6: - resolution: {integrity: sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==} + /glob@10.3.15: + resolution: {integrity: sha512-0c6RlJt1TICLyvJYIApxb8GsXoai0KUP7AxKKAtsYXdgJR1mGEUa7DgwShbdk1nly0PYoZj01xd4hzbq3fsjpw==} + engines: {node: '>=16 || 14 >=14.18'} + hasBin: true dependencies: - fs.realpath: 1.0.0 - inflight: 1.0.6 - inherits: 2.0.4 - minimatch: 3.1.2 - once: 1.4.0 - path-is-absolute: 1.0.1 + foreground-child: 3.1.1 + jackspeak: 2.3.6 + minimatch: 9.0.4 + minipass: 7.1.1 + path-scurry: 1.11.1 - /glob@7.1.7: - resolution: {integrity: sha512-OvD9ENzPLbegENnYP5UUfJIirTg4+XwMWGaQfQTY0JenxNvvIKP3U3/tAQSPIu/lHxXYSZmpXlUHeqAIdKzBLQ==} + /glob@7.2.3: + resolution: {integrity: sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==} dependencies: fs.realpath: 1.0.0 inflight: 1.0.6 @@ -3179,23 +3154,19 @@ packages: path-is-absolute: 1.0.1 dev: true - /globals@13.22.0: - resolution: {integrity: sha512-H1Ddc/PbZHTDVJSnj8kWptIRSD6AM3pK+mKytuIVF4uoBV7rshFlhhvA58ceJ5wp3Er58w6zj7bykMpYXt3ETw==} + /globals@13.24.0: + resolution: {integrity: sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ==} engines: {node: '>=8'} dependencies: type-fest: 0.20.2 dev: true - /globals@14.0.0: - resolution: {integrity: sha512-oahGvuMGQlPw/ivIYBjVSrWAfWLBeku5tpPE2fOPLi+WHffIWbuh2tCjhyQhTBPMf5E9jDEH4FOmTYgYwbKwtQ==} - engines: {node: '>=18'} - dev: true - - /globalthis@1.0.3: - resolution: {integrity: sha512-sFdI5LyBiNTHjRd7cGPWapiHWMOXKyuBNX/cWJ3NfzrZQVa8GI/8cofCl74AOVqq9W5kNmguTIzJ/1s2gyI9wA==} + /globalthis@1.0.4: + resolution: {integrity: sha512-DpLKbNU4WylpxJykQujfCcwYWiV/Jhm50Goo0wrVILAv5jOr9d+H+UR3PhSCD2rCCEIg0uc+G+muBTwD54JhDQ==} engines: {node: '>= 0.4'} dependencies: define-properties: 1.2.1 + gopd: 1.0.1 dev: true /globby@11.1.0: @@ -3204,8 +3175,8 @@ packages: dependencies: array-union: 2.1.0 dir-glob: 3.0.1 - fast-glob: 3.3.1 - ignore: 5.2.4 + fast-glob: 3.3.2 + ignore: 5.3.1 merge2: 1.4.1 slash: 3.0.0 dev: true @@ -3213,7 +3184,7 @@ packages: /gopd@1.0.1: resolution: {integrity: sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==} dependencies: - get-intrinsic: 1.2.1 + get-intrinsic: 1.2.4 dev: true /graceful-fs@4.2.11: @@ -3232,14 +3203,14 @@ packages: engines: {node: '>=8'} dev: true - /has-property-descriptors@1.0.0: - resolution: {integrity: sha512-62DVLZGoiEBDHQyqG4w9xCuZ7eJEwNmJRWw2VY84Oedb7WFcA27fiEVe8oUQx9hAUJ4ekurquucTGwsyO1XGdQ==} + /has-property-descriptors@1.0.2: + resolution: {integrity: sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==} dependencies: - get-intrinsic: 1.2.1 + es-define-property: 1.0.0 dev: true - /has-proto@1.0.1: - resolution: {integrity: sha512-7qE+iP+O+bgF9clE5+UoBFzE65mlBiVj3tKCrlNQ0Ogwm0BjpT/gK4SlLYDMybDh5I3TCTKnPPa0oMG7JDYrhg==} + /has-proto@1.0.3: + resolution: {integrity: sha512-SJ1amZAJUiZS+PhsVLf5tGydlaVB8EdFpaSO4gmiUKUOxk8qzn5AIy4ZeJUmh22znIdk/uMAUT2pl3FxzVUH+Q==} engines: {node: '>= 0.4'} dev: true @@ -3248,19 +3219,13 @@ packages: engines: {node: '>= 0.4'} dev: true - /has-tostringtag@1.0.0: - resolution: {integrity: sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ==} + /has-tostringtag@1.0.2: + resolution: {integrity: sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==} engines: {node: '>= 0.4'} dependencies: has-symbols: 1.0.3 dev: true - /has@1.0.3: - resolution: {integrity: sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==} - engines: {node: '>= 0.4.0'} - dependencies: - function-bind: 1.1.1 - /hash.js@1.1.7: resolution: {integrity: sha512-taOaskGt4z4SOANNseOviYDvjEJinIkRgmp7LbKP2YTTmVxWBl87s/uzK9r+44BclBSp2X7K1hqeNfz9JbBeXA==} dependencies: @@ -3268,6 +3233,12 @@ packages: minimalistic-assert: 1.0.1 dev: false + /hasown@2.0.2: + resolution: {integrity: sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==} + engines: {node: '>= 0.4'} + dependencies: + function-bind: 1.1.2 + /hmac-drbg@1.0.1: resolution: {integrity: sha512-Tti3gMqLdZfhOQY1Mzf/AanLiqh1WTiJgEj26ZuYQ9fbkLomzGchCws4FyrSd4VkpBfiNhaE1On+lOz894jvXg==} dependencies: @@ -3286,8 +3257,8 @@ packages: engines: {node: '>=16.17.0'} dev: true - /ignore@5.2.4: - resolution: {integrity: sha512-MAb38BcSbH0eHNBxn7ql2NH/kX33OkB3lZ1BNdh7ENeRChHTYsTvWrMubiIAMNS2llXEEgZ1MUOBtXChP3kaFQ==} + /ignore@5.3.1: + resolution: {integrity: sha512-5Fytz/IraMjqpwfd34ke28PTVMjZjJG2MPn5t7OE4eUCUNf8BAa7b5WUS9/Qvr6mwOQS7Mk6vdsMno5he+T8Xw==} engines: {node: '>= 4'} dev: true @@ -3309,32 +3280,37 @@ packages: dependencies: once: 1.4.0 wrappy: 1.0.2 + dev: true /inherits@2.0.4: resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==} - /internal-slot@1.0.5: - resolution: {integrity: sha512-Y+R5hJrzs52QCG2laLn4udYVnxsfny9CpOhNhUvk/SSSVyF6T27FzRbF0sroPidSu3X8oEAkOn2K804mjpt6UQ==} + /internal-slot@1.0.7: + resolution: {integrity: sha512-NGnrKwXzSms2qUUih/ILZ5JBqNTSa1+ZmP6flaIp6KmSElgE9qdndzS3cqjrDovwFdmwsGsLdeFgB6suw+1e9g==} engines: {node: '>= 0.4'} dependencies: - get-intrinsic: 1.2.1 - has: 1.0.3 - side-channel: 1.0.4 + es-errors: 1.3.0 + hasown: 2.0.2 + side-channel: 1.0.6 dev: true - /is-array-buffer@3.0.2: - resolution: {integrity: sha512-y+FyyR/w8vfIRq4eQcM1EYgSTnmHXPqaF+IgzgraytCFq5Xh8lllDVmAZolPJiZttZLeFSINPYMaEJ7/vWUa1w==} + /is-array-buffer@3.0.4: + resolution: {integrity: sha512-wcjaerHw0ydZwfhiKbXJWLDY8A7yV7KhjQOpb83hGgGfId/aQa4TOvwyzn2PuswW2gPCYEL/nEAiSVpdOj1lXw==} + engines: {node: '>= 0.4'} dependencies: - call-bind: 1.0.2 - get-intrinsic: 1.2.1 - is-typed-array: 1.1.12 + call-bind: 1.0.7 + get-intrinsic: 1.2.4 dev: true + /is-arrayish@0.3.2: + resolution: {integrity: sha512-eVRqCvVlZbuw3GrM63ovNSNAeA1K16kaR/LRY/92w0zxQ5/1YzwblUX652i4Xs9RwAGjW9d9y6X88t8OaAJfWQ==} + dev: false + /is-async-function@2.0.0: resolution: {integrity: sha512-Y1JXKrfykRJGdlDwdKlLpLyMIiWqWvuSd17TvZk68PLAOGOoF4Xyav1z0Xhoi+gCYjZVeC5SI+hYFOfvXmGRCA==} engines: {node: '>= 0.4'} dependencies: - has-tostringtag: 1.0.0 + has-tostringtag: 1.0.2 dev: true /is-bigint@1.0.4: @@ -3347,14 +3323,14 @@ packages: resolution: {integrity: sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==} engines: {node: '>=8'} dependencies: - binary-extensions: 2.2.0 + binary-extensions: 2.3.0 /is-boolean-object@1.1.2: resolution: {integrity: sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA==} engines: {node: '>= 0.4'} dependencies: - call-bind: 1.0.2 - has-tostringtag: 1.0.0 + call-bind: 1.0.7 + has-tostringtag: 1.0.2 dev: true /is-callable@1.2.7: @@ -3362,16 +3338,23 @@ packages: engines: {node: '>= 0.4'} dev: true - /is-core-module@2.13.0: - resolution: {integrity: sha512-Z7dk6Qo8pOCp3l4tsX2C5ZVas4V+UxwQodwZhLopL91TX8UyyHEXafPcyoeeWuLrwzHcr3igO78wNLwHJHsMCQ==} + /is-core-module@2.13.1: + resolution: {integrity: sha512-hHrIjvZsftOsvKSn2TRYl63zvxsgE0K+0mYMoH6gD4omR5IWB2KynivBQczo3+wF1cCkjzvptnI9Q0sPU66ilw==} + dependencies: + hasown: 2.0.2 + + /is-data-view@1.0.1: + resolution: {integrity: sha512-AHkaJrsUVW6wq6JS8y3JnM/GJF/9cf+k20+iDzlSaJrinEo5+7vRiteOSwBhHRiAyQATN1AmY4hwzxJKPmYf+w==} + engines: {node: '>= 0.4'} dependencies: - has: 1.0.3 + is-typed-array: 1.1.13 + dev: true /is-date-object@1.0.5: resolution: {integrity: sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==} engines: {node: '>= 0.4'} dependencies: - has-tostringtag: 1.0.0 + has-tostringtag: 1.0.2 dev: true /is-extglob@2.1.1: @@ -3381,19 +3364,18 @@ packages: /is-finalizationregistry@1.0.2: resolution: {integrity: sha512-0by5vtUJs8iFQb5TYUHHPudOR+qXYIMKtiUzvLIZITZUjknFmziyBJuLhVRc+Ds0dREFlskDNJKYIdIzu/9pfw==} dependencies: - call-bind: 1.0.2 + call-bind: 1.0.7 dev: true /is-fullwidth-code-point@3.0.0: resolution: {integrity: sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==} engines: {node: '>=8'} - dev: true /is-generator-function@1.0.10: resolution: {integrity: sha512-jsEjy9l3yiXEQ+PsXdmBwEPcOxaXWLspKdplFUVI9vq1iZgIekeC0L167qeu86czQaxed3q/Uzuw0swL0irL8A==} engines: {node: '>= 0.4'} dependencies: - has-tostringtag: 1.0.0 + has-tostringtag: 1.0.2 dev: true /is-glob@4.0.3: @@ -3402,12 +3384,13 @@ packages: dependencies: is-extglob: 2.1.1 - /is-map@2.0.2: - resolution: {integrity: sha512-cOZFQQozTha1f4MxLFzlgKYPTyj26picdZTx82hbc/Xf4K/tZOOXSCkMvU4pKioRXGDLJRn0GM7Upe7kR721yg==} + /is-map@2.0.3: + resolution: {integrity: sha512-1Qed0/Hr2m+YqxnM09CjA2d/i6YZNfF6R2oRAOj36eUdS6qIV/huPJNSEpKbupewFs+ZsJlxsjjPbc0/afW6Lw==} + engines: {node: '>= 0.4'} dev: true - /is-negative-zero@2.0.2: - resolution: {integrity: sha512-dqJvarLawXsFbNDeJW7zAz8ItJ9cd28YufuuFzh0G8pNHjJMnY08Dv7sYX2uF5UpQOwieAeOExEYAWWfu7ZZUA==} + /is-negative-zero@2.0.3: + resolution: {integrity: sha512-5KoIu2Ngpyek75jXodFvnafB6DJgr3u8uuK0LEZJjrU19DrMD3EVERaR8sjz8CCGgpZvxPl9SuE1GMVPFHx1mw==} engines: {node: '>= 0.4'} dev: true @@ -3415,7 +3398,7 @@ packages: resolution: {integrity: sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ==} engines: {node: '>= 0.4'} dependencies: - has-tostringtag: 1.0.0 + has-tostringtag: 1.0.2 dev: true /is-number@7.0.0: @@ -3431,18 +3414,20 @@ packages: resolution: {integrity: sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==} engines: {node: '>= 0.4'} dependencies: - call-bind: 1.0.2 - has-tostringtag: 1.0.0 + call-bind: 1.0.7 + has-tostringtag: 1.0.2 dev: true - /is-set@2.0.2: - resolution: {integrity: sha512-+2cnTEZeY5z/iXGbLhPrOAaK/Mau5k5eXq9j14CpRTftq0pAJu2MwVRSZhyZWBzx3o6X795Lz6Bpb6R0GKf37g==} + /is-set@2.0.3: + resolution: {integrity: sha512-iPAjerrse27/ygGLxw+EBR9agv9Y6uLeYVJMu+QNCoouJ1/1ri0mGrcWpfCqFZuzzx3WjtwxG098X+n4OuRkPg==} + engines: {node: '>= 0.4'} dev: true - /is-shared-array-buffer@1.0.2: - resolution: {integrity: sha512-sqN2UDu1/0y6uvXyStCOzyhAjCSlHceFoMKJW8W9EU9cvic/QdsZ0kEU93HEy3IUEFZIiH/3w+AH/UQbPHNdhA==} + /is-shared-array-buffer@1.0.3: + resolution: {integrity: sha512-nA2hv5XIhLR3uVzDDfCIknerhx8XUKnstuOERPNNIinXG7v9u+ohXF67vxm4TPTEPU6lm61ZkwP3c9PCB97rhg==} + engines: {node: '>= 0.4'} dependencies: - call-bind: 1.0.2 + call-bind: 1.0.7 dev: true /is-stream@2.0.1: @@ -3459,7 +3444,7 @@ packages: resolution: {integrity: sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==} engines: {node: '>= 0.4'} dependencies: - has-tostringtag: 1.0.0 + has-tostringtag: 1.0.2 dev: true /is-symbol@1.0.4: @@ -3469,28 +3454,30 @@ packages: has-symbols: 1.0.3 dev: true - /is-typed-array@1.1.12: - resolution: {integrity: sha512-Z14TF2JNG8Lss5/HMqt0//T9JeHXttXy5pH/DBU4vi98ozO2btxzq9MwYDZYnKwU8nRsz/+GVFVRDq3DkVuSPg==} + /is-typed-array@1.1.13: + resolution: {integrity: sha512-uZ25/bUAlUY5fR4OKT4rZQEBrzQWYV9ZJYGGsUmEJ6thodVJ1HX64ePQ6Z0qPWP+m+Uq6e9UugrE38jeYsDSMw==} engines: {node: '>= 0.4'} dependencies: - which-typed-array: 1.1.11 + which-typed-array: 1.1.15 dev: true - /is-weakmap@2.0.1: - resolution: {integrity: sha512-NSBR4kH5oVj1Uwvv970ruUkCV7O1mzgVFO4/rev2cLRda9Tm9HrL70ZPut4rOHgY0FNrUu9BCbXA2sdQ+x0chA==} + /is-weakmap@2.0.2: + resolution: {integrity: sha512-K5pXYOm9wqY1RgjpL3YTkF39tni1XajUIkawTLUo9EZEVUFga5gSQJF8nNS7ZwJQ02y+1YCNYcMh+HIf1ZqE+w==} + engines: {node: '>= 0.4'} dev: true /is-weakref@1.0.2: resolution: {integrity: sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ==} dependencies: - call-bind: 1.0.2 + call-bind: 1.0.7 dev: true - /is-weakset@2.0.2: - resolution: {integrity: sha512-t2yVvttHkQktwnNNmBQ98AhENLdPUTDTE21uPqAQ0ARwQfGeQKRVS0NNurH7bTf7RrvcVn1OOge45CnBeHCSmg==} + /is-weakset@2.0.3: + resolution: {integrity: sha512-LvIm3/KWzS9oRFHugab7d+M/GcBXuXX5xZkzPmN+NxihdQlZUQ4dWuSV1xR/sq6upL1TJEDrfBgRepHFdBtSNQ==} + engines: {node: '>= 0.4'} dependencies: - call-bind: 1.0.2 - get-intrinsic: 1.2.1 + call-bind: 1.0.7 + get-intrinsic: 1.2.4 dev: true /isarray@2.0.5: @@ -3499,7 +3486,6 @@ packages: /isexe@2.0.0: resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==} - dev: true /isows@1.0.3(ws@8.13.0): resolution: {integrity: sha512-2cKei4vlmg2cxEjm3wVSqn8pcoRF/LX/wpifuuNquFO4SQmPwarClT+SUCA2lt+l581tTeZIPIZuIDo2jWN1fg==} @@ -3513,10 +3499,10 @@ packages: resolution: {integrity: sha512-DR33HMMr8EzwuRL8Y9D3u2BMj8+RqSE850jfGu59kS7tbmPLzGkZmVSfyCFSDxuZiEY6Rzt3T2NA/qU+NwVj1w==} dependencies: define-properties: 1.2.1 - get-intrinsic: 1.2.1 + get-intrinsic: 1.2.4 has-symbols: 1.0.3 - reflect.getprototypeof: 1.0.4 - set-function-name: 2.0.1 + reflect.getprototypeof: 1.0.6 + set-function-name: 2.0.2 dev: true /jackspeak@2.3.6: @@ -3526,7 +3512,6 @@ packages: '@isaacs/cliui': 8.0.2 optionalDependencies: '@pkgjs/parseargs': 0.11.0 - dev: true /jiti@1.21.0: resolution: {integrity: sha512-gFqAIbuKyyso/3G2qhiO2OM6shY6EPP/R0+mkDbyspxKazh8BXDC5FiFsUjlczgdNz/vfra0da2y+aHrusLG/Q==} @@ -3574,24 +3559,14 @@ packages: minimist: 1.2.8 dev: true - /jsonc-parser@3.2.0: - resolution: {integrity: sha512-gfFQZrcTc8CnKXp6Y4/CBT3fTc0OVuDofpre4aEeEpSBPV5X5v4+Vmx+8snU7RLPrNHPKSgLxGo9YuQzz20o+w==} - dev: true - /jsx-ast-utils@3.3.5: resolution: {integrity: sha512-ZZow9HBI5O6EPgSJLUb8n2NKgmVWTwCvHGwFuJlMjvLFqlGG6pjirPhtdsseaLZjSibD8eegzmYpUZwoIlj2cQ==} engines: {node: '>=4.0'} dependencies: - array-includes: 3.1.7 + array-includes: 3.1.8 array.prototype.flat: 1.3.2 - object.assign: 4.1.4 - object.values: 1.1.7 - dev: true - - /keyv@4.5.3: - resolution: {integrity: sha512-QCiSav9WaX1PgETJ+SpNnx2PRRapJ/oRSXM4VO5OGYGSjrxbKPVFVhB3l2OCbLCk329N8qyAtsJjSjvVBWzEug==} - dependencies: - json-buffer: 3.0.1 + object.assign: 4.1.5 + object.values: 1.2.0 dev: true /keyv@4.5.4: @@ -3604,8 +3579,9 @@ packages: resolution: {integrity: sha512-tN0MCzyWnoz/4nHS6uxdlFWoUZT7ABptwKPQ52Ea7URk6vll88bWBVhodtnlfEuCcKWNGoc+uGbw1cwa9IKh/w==} dev: true - /language-tags@1.0.5: - resolution: {integrity: sha512-qJhlO9cGXi6hBGKoxEG/sKZDAHD5Hnu9Hs4WbOY3pCWXDhw0N8x1NenNzm2EnNLkLkk7J2SdxAkDSbb6ftT+UQ==} + /language-tags@1.0.9: + resolution: {integrity: sha512-MbjN408fEndfiQXbFQ1vnd+1NoLDsnQW41410oQBXiyXDMYH5z505juWa4KUE1LqxRC7DgOgZDbKLxHIwm27hA==} + engines: {node: '>=0.10'} dependencies: language-subtag-registry: 0.3.22 dev: true @@ -3622,6 +3598,10 @@ packages: resolution: {integrity: sha512-utWOt/GHzuUxnLKxB6dk81RoOeoNeHgbrXiuGk4yyF5qlRz+iIVWu56E2fqGHFrXz0QNUhLB/8nKqvRH66JKGQ==} engines: {node: '>=10'} + /lilconfig@3.1.1: + resolution: {integrity: sha512-O18pf7nyvHTckunPWCV1XUNXU1piu01y2b7ATJ0ppkUkk8ocqVWBrYjJBCwHDjD/ZWcfyrA0P4gKhzWGi5EINQ==} + engines: {node: '>=14'} + /lines-and-columns@1.2.4: resolution: {integrity: sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==} @@ -3630,17 +3610,12 @@ packages: engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} dev: true - /local-pkg@0.4.3: - resolution: {integrity: sha512-SFppqq5p42fe2qcZQqqEOiVRXl+WCP1MdT6k7BDEW1j++sp5fIY+/fdRQitvKgB5BrBcmrs5m/L0v2FrU5MY1g==} - engines: {node: '>=14'} - dev: true - /local-pkg@0.5.0: resolution: {integrity: sha512-ok6z3qlYyCDS4ZEU27HaU6x/xZa9Whf8jD4ptH5UZTQYZVYeb9bnZ3ojVhiJNLiXK1Hfc0GNbLXcmZ5plLDDBg==} engines: {node: '>=14'} dependencies: - mlly: 1.4.2 - pkg-types: 1.0.3 + mlly: 1.7.0 + pkg-types: 1.1.1 dev: true /locate-path@6.0.0: @@ -3664,30 +3639,15 @@ packages: dependencies: js-tokens: 4.0.0 - /loupe@2.3.6: - resolution: {integrity: sha512-RaPMZKiMy8/JruncMU5Bt6na1eftNoo++R4Y+N2FrxkDVTrGvcyzFTsaGif4QTeKESheMGegbhw6iUAq+5A8zA==} - deprecated: Please upgrade to 2.3.7 which fixes GHSA-4q6p-r6v2-jvc5 - dependencies: - get-func-name: 2.0.2 - dev: true - /loupe@2.3.7: resolution: {integrity: sha512-zSMINGVYkdpYSOBmLi0D1Uo7JU9nVdQKrHxC8eYlV+9YKK9WePqAlL7lSlorG/U2Fw1w0hTBmaa/jrQ3UbPHtA==} dependencies: get-func-name: 2.0.2 dev: true - /lru-cache@10.2.0: - resolution: {integrity: sha512-2bIM8x+VAf6JT4bKAljS1qUWgMsqZRPGJS6FSahIMPVvctcNhyVp7AJu7quxOW9jwkryBReKZY5tY5JYv2n/7Q==} + /lru-cache@10.2.2: + resolution: {integrity: sha512-9hp3Vp2/hFQUiIwKo8XCeFVnrg8Pk3TYNPIR7tJADKi5YfcF7vEaK7avFHTlSy3kOKYaJQaalfEo6YuXdceBOQ==} engines: {node: 14 || >=16.14} - dev: true - - /lru-cache@6.0.0: - resolution: {integrity: sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==} - engines: {node: '>=10'} - dependencies: - yallist: 4.0.0 - dev: true /magic-string@0.30.10: resolution: {integrity: sha512-iIRwTIf0QKV3UAnYK4PU8uiEc4SRh5jX0mwpIwETPpHdhVM4f53RSwS/vXvN1JhGX+Cs7B8qIq3d6AH49O5fAQ==} @@ -3737,6 +3697,7 @@ packages: resolution: {integrity: sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==} dependencies: brace-expansion: 1.1.11 + dev: true /minimatch@9.0.3: resolution: {integrity: sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg==} @@ -3745,28 +3706,37 @@ packages: brace-expansion: 2.0.1 dev: true + /minimatch@9.0.4: + resolution: {integrity: sha512-KqWh+VchfxcMNRAJjj2tnsSJdNbHsVgnkBhTNrW7AjVo6OvLtxw8zfT9oLw1JSohlFzJ8jCoTgaoXvJ+kHt6fw==} + engines: {node: '>=16 || 14 >=14.17'} + dependencies: + brace-expansion: 2.0.1 + /minimist@1.2.8: resolution: {integrity: sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==} dev: true - /minipass@7.0.4: - resolution: {integrity: sha512-jYofLM5Dam9279rdkWzqHozUo4ybjdZmCsDHePy5V/PbBcVMiSZR97gmAy45aqi8CK1lG2ECd356FU86avfwUQ==} + /minipass@7.1.1: + resolution: {integrity: sha512-UZ7eQ+h8ywIRAW1hIEl2AqdwzJucU/Kp59+8kkZeSvafXhZjul247BvIJjEVFVeON6d7lM46XX1HXCduKAS8VA==} engines: {node: '>=16 || 14 >=14.17'} - dev: true - /mlly@1.4.2: - resolution: {integrity: sha512-i/Ykufi2t1EZ6NaPLdfnZk2AX8cs0d+mTzVKuPfqPKPatxLApaBoxJQ9x1/uckXtrS/U5oisPMDkNs0yQTaBRg==} + /mlly@1.7.0: + resolution: {integrity: sha512-U9SDaXGEREBYQgfejV97coK0UL1r+qnF2SyO9A3qcI8MzKnsIFKHNVEkrDyNncQTKQQumsasmeq84eNMdBfsNQ==} dependencies: - acorn: 8.10.0 - pathe: 1.1.1 - pkg-types: 1.0.3 - ufo: 1.3.1 + acorn: 8.11.3 + pathe: 1.1.2 + pkg-types: 1.1.1 + ufo: 1.5.3 dev: true /ms@2.1.2: resolution: {integrity: sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==} dev: true + /ms@2.1.3: + resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==} + dev: true + /mz@2.7.0: resolution: {integrity: sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q==} dependencies: @@ -3783,8 +3753,8 @@ packages: resolution: {integrity: sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==} dev: true - /next@14.0.2(react-dom@18.2.0)(react@18.2.0): - resolution: {integrity: sha512-jsAU2CkYS40GaQYOiLl9m93RTv2DA/tTJ0NRlmZIBIL87YwQ/xR8k796z7IqgM3jydI8G25dXvyYMC9VDIevIg==} + /next@14.1.0(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-wlzrsbfeSU48YQBjZhDzOwhWhGsy+uQycR8bHAOt1LY1bn3zZEcDyHQOEoN3aWzQ8LHCAJ1nqrWCc9XF2+O45Q==} engines: {node: '>=18.17.0'} hasBin: true peerDependencies: @@ -3798,25 +3768,25 @@ packages: sass: optional: true dependencies: - '@next/env': 14.0.2 + '@next/env': 14.1.0 '@swc/helpers': 0.5.2 busboy: 1.6.0 - caniuse-lite: 1.0.30001600 + caniuse-lite: 1.0.30001620 + graceful-fs: 4.2.11 postcss: 8.4.31 react: 18.2.0 react-dom: 18.2.0(react@18.2.0) styled-jsx: 5.1.1(react@18.2.0) - watchpack: 2.4.0 optionalDependencies: - '@next/swc-darwin-arm64': 14.0.2 - '@next/swc-darwin-x64': 14.0.2 - '@next/swc-linux-arm64-gnu': 14.0.2 - '@next/swc-linux-arm64-musl': 14.0.2 - '@next/swc-linux-x64-gnu': 14.0.2 - '@next/swc-linux-x64-musl': 14.0.2 - '@next/swc-win32-arm64-msvc': 14.0.2 - '@next/swc-win32-ia32-msvc': 14.0.2 - '@next/swc-win32-x64-msvc': 14.0.2 + '@next/swc-darwin-arm64': 14.1.0 + '@next/swc-darwin-x64': 14.1.0 + '@next/swc-linux-arm64-gnu': 14.1.0 + '@next/swc-linux-arm64-musl': 14.1.0 + '@next/swc-linux-x64-gnu': 14.1.0 + '@next/swc-linux-x64-musl': 14.1.0 + '@next/swc-win32-arm64-msvc': 14.1.0 + '@next/swc-win32-ia32-msvc': 14.1.0 + '@next/swc-win32-x64-msvc': 14.1.0 transitivePeerDependencies: - '@babel/core' - babel-plugin-macros @@ -3840,7 +3810,7 @@ packages: '@next/env': 14.1.4 '@swc/helpers': 0.5.2 busboy: 1.6.0 - caniuse-lite: 1.0.30001600 + caniuse-lite: 1.0.30001620 graceful-fs: 4.2.11 postcss: 8.4.31 react: 18.2.0 @@ -3895,8 +3865,8 @@ packages: resolution: {integrity: sha512-RSn9F68PjH9HqtltsSnqYC1XXoWe9Bju5+213R98cNGttag9q9yAOTzdbsqvIa7aNm5WffBZFpWYr2aWrklWAw==} engines: {node: '>= 6'} - /object-inspect@1.12.3: - resolution: {integrity: sha512-geUvdk7c+eizMNUDkRpW1wJwgfOiOeHbxBR/hLXK1aT6zmVSO0jsQcs7fj6MGw89jC/cjGfLcNOrtMYtGqm81g==} + /object-inspect@1.13.1: + resolution: {integrity: sha512-5qoj1RUiKOMsCCNLV1CBiPYE10sziTsnmNxkAI/rZhiD63CF7IqdFGC/XzjWjpSgLf0LxXX3bDFIh0E18f6UhQ==} dev: true /object-keys@1.1.1: @@ -3904,63 +3874,67 @@ packages: engines: {node: '>= 0.4'} dev: true - /object.assign@4.1.4: - resolution: {integrity: sha512-1mxKf0e58bvyjSCtKYY4sRe9itRk3PJpquJOjeIkz885CczcI4IvJJDLPS72oowuSh+pBxUFROpX+TU++hxhZQ==} + /object.assign@4.1.5: + resolution: {integrity: sha512-byy+U7gp+FVwmyzKPYhW2h5l3crpmGsxl7X2s8y43IgxvG4g3QZ6CffDtsNQy1WsmZpQbO+ybo0AlW7TY6DcBQ==} engines: {node: '>= 0.4'} dependencies: - call-bind: 1.0.2 + call-bind: 1.0.7 define-properties: 1.2.1 has-symbols: 1.0.3 object-keys: 1.1.1 dev: true - /object.entries@1.1.7: - resolution: {integrity: sha512-jCBs/0plmPsOnrKAfFQXRG2NFjlhZgjjcBLSmTnEhU8U6vVTsVe8ANeQJCHTl3gSsI4J+0emOoCgoKlmQPMgmA==} + /object.entries@1.1.8: + resolution: {integrity: sha512-cmopxi8VwRIAw/fkijJohSfpef5PdN0pMQJN6VC/ZKvn0LIknWD8KtgY6KlQdEc4tIjcQ3HxSMmnvtzIscdaYQ==} engines: {node: '>= 0.4'} dependencies: - call-bind: 1.0.2 + call-bind: 1.0.7 define-properties: 1.2.1 - es-abstract: 1.22.2 + es-object-atoms: 1.0.0 dev: true - /object.fromentries@2.0.7: - resolution: {integrity: sha512-UPbPHML6sL8PI/mOqPwsH4G6iyXcCGzLin8KvEPenOZN5lpCNBZZQ+V62vdjB1mQHrmqGQt5/OJzemUA+KJmEA==} + /object.fromentries@2.0.8: + resolution: {integrity: sha512-k6E21FzySsSK5a21KRADBd/NGneRegFO5pLHfdQLpRDETUNJueLXs3WCzyQ3tFRDYgbq3KHGXfTbi2bs8WQ6rQ==} engines: {node: '>= 0.4'} dependencies: - call-bind: 1.0.2 + call-bind: 1.0.7 define-properties: 1.2.1 - es-abstract: 1.22.2 + es-abstract: 1.23.3 + es-object-atoms: 1.0.0 dev: true - /object.groupby@1.0.1: - resolution: {integrity: sha512-HqaQtqLnp/8Bn4GL16cj+CUYbnpe1bh0TtEaWvybszDG4tgxCJuRpV8VGuvNaI1fAnI4lUJzDG55MXcOH4JZcQ==} + /object.groupby@1.0.3: + resolution: {integrity: sha512-+Lhy3TQTuzXI5hevh8sBGqbmurHbbIjAi0Z4S63nthVLmLxfbj4T54a4CfZrXIrt9iP4mVAPYMo/v99taj3wjQ==} + engines: {node: '>= 0.4'} dependencies: - call-bind: 1.0.2 + call-bind: 1.0.7 define-properties: 1.2.1 - es-abstract: 1.22.2 - get-intrinsic: 1.2.1 + es-abstract: 1.23.3 dev: true - /object.hasown@1.1.3: - resolution: {integrity: sha512-fFI4VcYpRHvSLXxP7yiZOMAd331cPfd2p7PFDVbgUsYOfCT3tICVqXWngbjr4m49OvsBwUBQ6O2uQoJvy3RexA==} + /object.hasown@1.1.4: + resolution: {integrity: sha512-FZ9LZt9/RHzGySlBARE3VF+gE26TxR38SdmqOqliuTnl9wrKulaQs+4dee1V+Io8VfxqzAfHu6YuRgUy8OHoTg==} + engines: {node: '>= 0.4'} dependencies: define-properties: 1.2.1 - es-abstract: 1.22.2 + es-abstract: 1.23.3 + es-object-atoms: 1.0.0 dev: true - /object.values@1.1.7: - resolution: {integrity: sha512-aU6xnDFYT3x17e/f0IiiwlGPTy2jzMySGfUB4fq6z7CV8l85CWHDk5ErhyhpfDHhrOMwGFhSQkhMGHaIotA6Ng==} + /object.values@1.2.0: + resolution: {integrity: sha512-yBYjY9QX2hnRmZHAjG/f13MzmBzxzYgQhFrke06TTyKY5zSTEqkOeukBzIdVA3j3ulu8Qa3MbVFShV7T2RmGtQ==} engines: {node: '>= 0.4'} dependencies: - call-bind: 1.0.2 + call-bind: 1.0.7 define-properties: 1.2.1 - es-abstract: 1.22.2 + es-object-atoms: 1.0.0 dev: true /once@1.4.0: resolution: {integrity: sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==} dependencies: wrappy: 1.0.2 + dev: true /onetime@5.1.2: resolution: {integrity: sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==} @@ -3976,16 +3950,16 @@ packages: mimic-fn: 4.0.0 dev: true - /optionator@0.9.3: - resolution: {integrity: sha512-JjCoypp+jKn1ttEFExxhetCKeJt9zhAgAve5FXHixTvFDW/5aEktX9bufBKLRRMdU7bNtpLfcGu94B3cdEJgjg==} + /optionator@0.9.4: + resolution: {integrity: sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g==} engines: {node: '>= 0.8.0'} dependencies: - '@aashutoshrathi/word-wrap': 1.2.6 deep-is: 0.1.4 fast-levenshtein: 2.0.6 levn: 0.4.1 prelude-ls: 1.2.1 type-check: 0.4.0 + word-wrap: 1.2.5 dev: true /p-limit@3.1.0: @@ -3995,13 +3969,6 @@ packages: yocto-queue: 0.1.0 dev: true - /p-limit@4.0.0: - resolution: {integrity: sha512-5b0R4txpzjPWVw/cXXUResoD4hb6U/x9BH08L7nw+GN1sezDzPdxeRvpc9c433fZhBan/wusjbCsqwqm4EIBIQ==} - engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} - dependencies: - yocto-queue: 1.0.0 - dev: true - /p-limit@5.0.0: resolution: {integrity: sha512-/Eaoq+QyLSiXQ4lyYV23f14mZRQcXnxfHrN0vCai+ak9G0pp9iEQukIIZq5NccEvwRB8PUnZT0KsOoDCINS1qQ==} engines: {node: '>=18'} @@ -4031,11 +3998,11 @@ packages: /path-is-absolute@1.0.1: resolution: {integrity: sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==} engines: {node: '>=0.10.0'} + dev: true /path-key@3.1.1: resolution: {integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==} engines: {node: '>=8'} - dev: true /path-key@4.0.0: resolution: {integrity: sha512-haREypq7xkM7ErfgIyA0z+Bj4AGKlMSdlQE2jvJo6huWD1EdkKYV+G/T4nq0YEF2vgTT8kqMFKo1uHn950r4SQ==} @@ -4045,29 +4012,28 @@ packages: /path-parse@1.0.7: resolution: {integrity: sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==} - /path-scurry@1.10.1: - resolution: {integrity: sha512-MkhCqzzBEpPvxxQ71Md0b1Kk51W01lrYvlMzSUaIzNsODdd7mqhiimSZlr+VegAz5Z6Vzt9Xg2ttE//XBhH3EQ==} - engines: {node: '>=16 || 14 >=14.17'} + /path-scurry@1.11.1: + resolution: {integrity: sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA==} + engines: {node: '>=16 || 14 >=14.18'} dependencies: - lru-cache: 10.2.0 - minipass: 7.0.4 - dev: true + lru-cache: 10.2.2 + minipass: 7.1.1 /path-type@4.0.0: resolution: {integrity: sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==} engines: {node: '>=8'} dev: true - /pathe@1.1.1: - resolution: {integrity: sha512-d+RQGp0MAYTIaDBIMmOfMwz3E+LOZnxx1HZd5R18mmCZY0QBlK0LDZfPc8FW8Ed2DlvsuE6PRjroDY+wg4+j/Q==} + /pathe@1.1.2: + resolution: {integrity: sha512-whLdWMYL2TwI08hn8/ZqAbrVemu0LNaNNJZX73O6qaIdCTfXutsLhMkjdENX0qhsQ9uIimo4/aQOmXkoon2nDQ==} dev: true /pathval@1.1.1: resolution: {integrity: sha512-Dp6zGqpTdETdR63lehJYPeIOqpiNBNtc7BpWSLrOje7UaIsE5aY92r/AunQA7rsXvet3lrJ3JnZX29UPTKXyKQ==} dev: true - /picocolors@1.0.0: - resolution: {integrity: sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==} + /picocolors@1.0.1: + resolution: {integrity: sha512-anP1Z8qwhkbmu7MFP5iTt+wQKXgwzf7zTyGlcdzabySa9vd0Xt392U0rVmz9poOaBj0uHJKyyo9/upk0HrEQew==} /picomatch@2.3.1: resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==} @@ -4081,12 +4047,17 @@ packages: resolution: {integrity: sha512-saLsH7WeYYPiD25LDuLRRY/i+6HaPYr6G1OUlN39otzkSTxKnubR9RTxS3/Kk50s1g2JTgFwWQDQyplC5/SHZg==} engines: {node: '>= 6'} - /pkg-types@1.0.3: - resolution: {integrity: sha512-nN7pYi0AQqJnoLPC9eHFQ8AcyaixBUOwvqc5TDnIKCMEE6I0y8P7OKA7fPexsXGCGxQDl/cmrLAp26LhcwxZ4A==} + /pkg-types@1.1.1: + resolution: {integrity: sha512-ko14TjmDuQJ14zsotODv7dBlwxKhUKQEhuhmbqo1uCi9BB0Z2alo/wAXg6q1dTR5TyuqYyWhjtfe/Tsh+X28jQ==} dependencies: - jsonc-parser: 3.2.0 - mlly: 1.4.2 - pathe: 1.1.1 + confbox: 0.1.7 + mlly: 1.7.0 + pathe: 1.1.2 + dev: true + + /possible-typed-array-names@1.0.0: + resolution: {integrity: sha512-d7Uw+eZoloe0EHDIYoe+bQ5WXnGMOpmiZFTuMWCwpjzzkL2nTjcKiAk4hh8TjnGye2TwWOk3UXucZ+3rbmBa8Q==} + engines: {node: '>= 0.4'} dev: true /postcss-import@15.1.0(postcss@8.4.38): @@ -4098,7 +4069,7 @@ packages: postcss: 8.4.38 postcss-value-parser: 4.2.0 read-cache: 1.0.0 - resolve: 1.22.6 + resolve: 1.22.8 /postcss-js@4.0.1(postcss@8.4.38): resolution: {integrity: sha512-dDLF8pEO191hJMtlHFPRa8xsizHaM82MLfNkUHdUtVEV3tgTp5oj+8qbEqYM57SLfc74KSbw//4SeJma2LRVIw==} @@ -4109,8 +4080,8 @@ packages: camelcase-css: 2.0.1 postcss: 8.4.38 - /postcss-load-config@4.0.1(postcss@8.4.38): - resolution: {integrity: sha512-vEJIc8RdiBRu3oRAI0ymerOn+7rPuMvRXslTvZUKZonDHFIczxztIyJ1urxM1x9JXEikvpWWTUUqal5j/8QgvA==} + /postcss-load-config@4.0.2(postcss@8.4.38): + resolution: {integrity: sha512-bSVhyJGL00wMVoPUzAVAnbEoWyqRxkjv64tUl427SKnPrENtq6hJwUojroMz2VB+Q1edmi4IfrAPpami5VVgMQ==} engines: {node: '>= 14'} peerDependencies: postcss: '>=8.0.9' @@ -4121,9 +4092,9 @@ packages: ts-node: optional: true dependencies: - lilconfig: 2.1.0 + lilconfig: 3.1.1 postcss: 8.4.38 - yaml: 2.3.2 + yaml: 2.4.2 /postcss-nested@6.0.1(postcss@8.4.38): resolution: {integrity: sha512-mEp4xPMi5bSWiMbsgoPfcP74lsWLHkQbZc3sY+jWYd65CUwXrUaTp0fmNpa01ZcETKlIgUdFN/MpS2xZtqL9dQ==} @@ -4132,10 +4103,10 @@ packages: postcss: ^8.2.14 dependencies: postcss: 8.4.38 - postcss-selector-parser: 6.0.13 + postcss-selector-parser: 6.0.16 - /postcss-selector-parser@6.0.13: - resolution: {integrity: sha512-EaV1Gl4mUEV4ddhDnv/xtj7sxwrwxdetHdWUGnT4VJQf+4d05v6lHYZr8N573k5Z0BViss7BDhfWtKS3+sfAqQ==} + /postcss-selector-parser@6.0.16: + resolution: {integrity: sha512-A0RVJrX+IUkVZbW3ClroRWurercFhieevHB38sr2+l9eUClMqome3LmEmnhlNy+5Mr2EYN6B2Kaw9wYdd+VHiw==} engines: {node: '>=4'} dependencies: cssesc: 3.0.0 @@ -4149,7 +4120,7 @@ packages: engines: {node: ^10 || ^12 || >=14} dependencies: nanoid: 3.3.7 - picocolors: 1.0.0 + picocolors: 1.0.1 source-map-js: 1.2.0 /postcss@8.4.38: @@ -4157,7 +4128,7 @@ packages: engines: {node: ^10 || ^12 || >=14} dependencies: nanoid: 3.3.7 - picocolors: 1.0.0 + picocolors: 1.0.1 source-map-js: 1.2.0 /prelude-ls@1.2.1: @@ -4165,8 +4136,8 @@ packages: engines: {node: '>= 0.8.0'} dev: true - /prettier@3.0.3: - resolution: {integrity: sha512-L/4pUDMxcNa8R/EthV08Zt42WBO4h1rarVtK0K+QJG0X187OLo7l699jWw0GKuwzkPQ//jMFA/8Xm6Fh3J/DAg==} + /prettier@3.2.5: + resolution: {integrity: sha512-3/GWa9aOC0YeD7LUfvOG2NiDyhOWRvt1k+rcKhOuYnMY24iiCphgneUfJDyFXd6rZCAnuLBv6UeAULtrhT/F4A==} engines: {node: '>=14'} hasBin: true dev: true @@ -4177,7 +4148,7 @@ packages: dependencies: '@jest/schemas': 29.6.3 ansi-styles: 5.2.0 - react-is: 18.2.0 + react-is: 18.3.1 dev: true /prop-types@15.8.1: @@ -4188,8 +4159,8 @@ packages: react-is: 16.13.1 dev: true - /punycode@2.3.0: - resolution: {integrity: sha512-rRV+zQD8tVFys26lAGR9WUuS4iUAngJScM+ZRSKtvl5tKeZ2t5bvdNFdNHBW9FWR4guGHlgmsZ1G7BSm2wTbuA==} + /punycode@2.3.1: + resolution: {integrity: sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==} engines: {node: '>=6'} dev: true @@ -4203,14 +4174,14 @@ packages: dependencies: loose-envify: 1.4.0 react: 18.2.0 - scheduler: 0.23.0 + scheduler: 0.23.2 /react-is@16.13.1: resolution: {integrity: sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==} dev: true - /react-is@18.2.0: - resolution: {integrity: sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w==} + /react-is@18.3.1: + resolution: {integrity: sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg==} dev: true /react@18.2.0: @@ -4230,29 +4201,31 @@ packages: dependencies: picomatch: 2.3.1 - /reflect.getprototypeof@1.0.4: - resolution: {integrity: sha512-ECkTw8TmJwW60lOTR+ZkODISW6RQ8+2CL3COqtiJKLd6MmB45hN51HprHFziKLGkAuTGQhBb91V8cy+KHlaCjw==} + /reflect.getprototypeof@1.0.6: + resolution: {integrity: sha512-fmfw4XgoDke3kdI6h4xcUz1dG8uaiv5q9gcEwLS4Pnth2kxT+GZ7YehS1JTMGBQmtV7Y4GFGbs2re2NqhdozUg==} engines: {node: '>= 0.4'} dependencies: - call-bind: 1.0.2 + call-bind: 1.0.7 define-properties: 1.2.1 - es-abstract: 1.22.2 - get-intrinsic: 1.2.1 - globalthis: 1.0.3 + es-abstract: 1.23.3 + es-errors: 1.3.0 + get-intrinsic: 1.2.4 + globalthis: 1.0.4 which-builtin-type: 1.1.3 dev: true - /regenerator-runtime@0.14.0: - resolution: {integrity: sha512-srw17NI0TUWHuGa5CFGGmhfNIeja30WMBfbslPNhf6JrqQlLN5gcrvig1oqPxiVaXb0oW0XRKtH6Nngs5lKCIA==} + /regenerator-runtime@0.14.1: + resolution: {integrity: sha512-dYnhHh0nJoMfnkZs6GmmhFknAGRrLznOu5nc9ML+EJxGvrx6H7teuevqVqCuPcPK//3eDrrjQhehXVx9cnkGdw==} dev: true - /regexp.prototype.flags@1.5.1: - resolution: {integrity: sha512-sy6TXMN+hnP/wMy+ISxg3krXx7BAtWVO4UouuCN/ziM9UEne0euamVNafDfvC83bRNr95y0V5iijeDQFUNpvrg==} + /regexp.prototype.flags@1.5.2: + resolution: {integrity: sha512-NcDiDkTLuPR+++OCKB0nWafEmhg/Da8aUPLPMQbK+bxKKCm1/S5he+AqYa4PlMCVBalb4/yxIRub6qkEx5yJbw==} engines: {node: '>= 0.4'} dependencies: - call-bind: 1.0.2 + call-bind: 1.0.7 define-properties: 1.2.1 - set-function-name: 2.0.1 + es-errors: 1.3.0 + set-function-name: 2.0.2 dev: true /resolve-from@4.0.0: @@ -4269,19 +4242,19 @@ packages: resolution: {integrity: sha512-seS2Tj26TBVOC2NIc2rOe2y2ZO7efxITtLZcGSOnHHNOQ7CkiUBfw0Iw2ck6xkIhPwLhKNLS8BO+hEpngQlqzw==} dev: true - /resolve@1.22.6: - resolution: {integrity: sha512-njhxM7mV12JfufShqGy3Rz8j11RPdLy4xi15UurGJeoHLfJpVXKdh3ueuOqbYUcDZnffr6X739JBo5LzyahEsw==} + /resolve@1.22.8: + resolution: {integrity: sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw==} hasBin: true dependencies: - is-core-module: 2.13.0 + is-core-module: 2.13.1 path-parse: 1.0.7 supports-preserve-symlinks-flag: 1.0.0 - /resolve@2.0.0-next.4: - resolution: {integrity: sha512-iMDbmAWtfU+MHpxt/I5iWI7cY6YVEZUQ3MBgPQ++XD1PELuJHIl82xBmObyP2KyQmkNB2dsqF7seoQQiAn5yDQ==} + /resolve@2.0.0-next.5: + resolution: {integrity: sha512-U7WjGVG9sH8tvjW5SmGbQuui75FiyjAX72HX15DwBBwF9dNiQZRQAg9nnPhYy+TUnE0+VcrttuvNI8oSxZcocA==} hasBin: true dependencies: - is-core-module: 2.13.0 + is-core-module: 2.13.1 path-parse: 1.0.7 supports-preserve-symlinks-flag: 1.0.0 dev: true @@ -4294,7 +4267,15 @@ packages: resolution: {integrity: sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==} hasBin: true dependencies: - glob: 7.1.7 + glob: 7.2.3 + dev: true + + /rimraf@5.0.7: + resolution: {integrity: sha512-nV6YcJo5wbLW77m+8KjH8aB/7/rxQy9SZ0HY5shnwULfS+9nmTtVXAJET5NdZmCzA4fPI/Hm1wo/Po/4mopOdg==} + engines: {node: '>=14.18'} + hasBin: true + dependencies: + glob: 10.3.15 dev: true /rollup@3.29.4: @@ -4336,26 +4317,27 @@ packages: dependencies: queue-microtask: 1.2.3 - /safe-array-concat@1.0.1: - resolution: {integrity: sha512-6XbUAseYE2KtOuGueyeobCySj9L4+66Tn6KQMOPQJrAJEowYKW/YR/MGJZl7FdydUdaFu4LYyDZjxf4/Nmo23Q==} + /safe-array-concat@1.1.2: + resolution: {integrity: sha512-vj6RsCsWBCf19jIeHEfkRMw8DPiBb+DMXklQ/1SGDHOMlHdPUkZXFQ2YdplS23zESTijAcurb1aSgJA3AgMu1Q==} engines: {node: '>=0.4'} dependencies: - call-bind: 1.0.2 - get-intrinsic: 1.2.1 + call-bind: 1.0.7 + get-intrinsic: 1.2.4 has-symbols: 1.0.3 isarray: 2.0.5 dev: true - /safe-regex-test@1.0.0: - resolution: {integrity: sha512-JBUUzyOgEwXQY1NuPtvcj/qcBDbDmEvWufhlnXZIm75DEHp+afM1r1ujJpJsV/gSM4t59tpDyPi1sd6ZaPFfsA==} + /safe-regex-test@1.0.3: + resolution: {integrity: sha512-CdASjNJPvRa7roO6Ra/gLYBTzYzzPyyBXxIMdGW3USQLyjWEls2RgW5UBTXaQVp+OrpeCK3bLem8smtmheoRuw==} + engines: {node: '>= 0.4'} dependencies: - call-bind: 1.0.2 - get-intrinsic: 1.2.1 + call-bind: 1.0.7 + es-errors: 1.3.0 is-regex: 1.1.4 dev: true - /scheduler@0.23.0: - resolution: {integrity: sha512-CtuThmgHNg7zIZWAXi3AsyIzA3n4xx7aNyjwC2VJldO2LMVDhFK+63xGqq6CsJH4rTAt6/M+N4GhZiDYPx9eUw==} + /scheduler@0.23.2: + resolution: {integrity: sha512-UOShsPwz7NrMUqhR6t0hWjFduvOzbtv7toDH1/hIrfRNIDBnnBWd0CwJTGvTpngVlmwGCdP9/Zl/tVrDqcuYzQ==} dependencies: loose-envify: 1.4.0 @@ -4364,45 +4346,85 @@ packages: hasBin: true dev: true - /semver@7.5.4: - resolution: {integrity: sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==} + /semver@7.6.2: + resolution: {integrity: sha512-FNAIBWCx9qcRhoHcgcJ0gvU7SN1lYU2ZXuSfl04bSC5OpvDHFyJCjdNHomPXxjQlCBU67YW64PzY7/VIEH7F2w==} engines: {node: '>=10'} hasBin: true - dependencies: - lru-cache: 6.0.0 - dev: true /server-only@0.0.1: resolution: {integrity: sha512-qepMx2JxAa5jjfzxG79yPPq+8BuFToHd1hm7kI+Z4zAq1ftQiP7HcxMhDDItrbtwVeLg/cY2JnKnrcFkmiswNA==} dev: false - /set-function-name@2.0.1: - resolution: {integrity: sha512-tMNCiqYVkXIZgc2Hnoy2IvC/f8ezc5koaRFkCjrpWzGpCd3qbZXPzVy9MAZzK1ch/X0jvSkojys3oqJN0qCmdA==} + /set-function-length@1.2.2: + resolution: {integrity: sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==} engines: {node: '>= 0.4'} dependencies: - define-data-property: 1.1.0 + define-data-property: 1.1.4 + es-errors: 1.3.0 + function-bind: 1.1.2 + get-intrinsic: 1.2.4 + gopd: 1.0.1 + has-property-descriptors: 1.0.2 + dev: true + + /set-function-name@2.0.2: + resolution: {integrity: sha512-7PGFlmtwsEADb0WYyvCMa1t+yke6daIG4Wirafur5kcf+MhUnPms1UeR0CKQdTZD81yESwMHbtn+TR+dMviakQ==} + engines: {node: '>= 0.4'} + dependencies: + define-data-property: 1.1.4 + es-errors: 1.3.0 functions-have-names: 1.2.3 - has-property-descriptors: 1.0.0 + has-property-descriptors: 1.0.2 dev: true + /sharp@0.33.3: + resolution: {integrity: sha512-vHUeXJU1UvlO/BNwTpT0x/r53WkLUVxrmb5JTgW92fdFCFk0ispLMAeu/jPO2vjkXM1fYUi3K7/qcLF47pwM1A==} + engines: {libvips: '>=8.15.2', node: ^18.17.0 || ^20.3.0 || >=21.0.0} + requiresBuild: true + dependencies: + color: 4.2.3 + detect-libc: 2.0.3 + semver: 7.6.2 + optionalDependencies: + '@img/sharp-darwin-arm64': 0.33.3 + '@img/sharp-darwin-x64': 0.33.3 + '@img/sharp-libvips-darwin-arm64': 1.0.2 + '@img/sharp-libvips-darwin-x64': 1.0.2 + '@img/sharp-libvips-linux-arm': 1.0.2 + '@img/sharp-libvips-linux-arm64': 1.0.2 + '@img/sharp-libvips-linux-s390x': 1.0.2 + '@img/sharp-libvips-linux-x64': 1.0.2 + '@img/sharp-libvips-linuxmusl-arm64': 1.0.2 + '@img/sharp-libvips-linuxmusl-x64': 1.0.2 + '@img/sharp-linux-arm': 0.33.3 + '@img/sharp-linux-arm64': 0.33.3 + '@img/sharp-linux-s390x': 0.33.3 + '@img/sharp-linux-x64': 0.33.3 + '@img/sharp-linuxmusl-arm64': 0.33.3 + '@img/sharp-linuxmusl-x64': 0.33.3 + '@img/sharp-wasm32': 0.33.3 + '@img/sharp-win32-ia32': 0.33.3 + '@img/sharp-win32-x64': 0.33.3 + dev: false + /shebang-command@2.0.0: resolution: {integrity: sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==} engines: {node: '>=8'} dependencies: shebang-regex: 3.0.0 - dev: true /shebang-regex@3.0.0: resolution: {integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==} engines: {node: '>=8'} - dev: true - /side-channel@1.0.4: - resolution: {integrity: sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==} + /side-channel@1.0.6: + resolution: {integrity: sha512-fDW/EZ6Q9RiO8eFG8Hj+7u/oW+XrPTIChwCOM2+th2A6OblDtYYIpve9m+KvI9Z4C9qSEXlaGR6bTEYHReuglA==} + engines: {node: '>= 0.4'} dependencies: - call-bind: 1.0.2 - get-intrinsic: 1.2.1 - object-inspect: 1.12.3 + call-bind: 1.0.7 + es-errors: 1.3.0 + get-intrinsic: 1.2.4 + object-inspect: 1.13.1 dev: true /siginfo@2.0.0: @@ -4416,7 +4438,12 @@ packages: /signal-exit@4.1.0: resolution: {integrity: sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==} engines: {node: '>=14'} - dev: true + + /simple-swizzle@0.2.2: + resolution: {integrity: sha512-JA//kQgZtbuY83m+xT+tXJkmJncGMTFT+C+g2h2R9uxkYIrE2yy9sgmcLhCnw57/WSD+Eh3J97FPEDFnbXnDUg==} + dependencies: + is-arrayish: 0.3.2 + dev: false /slash@3.0.0: resolution: {integrity: sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==} @@ -4463,7 +4490,6 @@ packages: emoji-regex: 8.0.0 is-fullwidth-code-point: 3.0.0 strip-ansi: 6.0.1 - dev: true /string-width@5.1.2: resolution: {integrity: sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==} @@ -4472,45 +4498,50 @@ packages: eastasianwidth: 0.2.0 emoji-regex: 9.2.2 strip-ansi: 7.1.0 - dev: true - /string.prototype.matchall@4.0.10: - resolution: {integrity: sha512-rGXbGmOEosIQi6Qva94HUjgPs9vKW+dkG7Y8Q5O2OYkWL6wFaTRZO8zM4mhP94uX55wgyrXzfS2aGtGzUL7EJQ==} + /string.prototype.matchall@4.0.11: + resolution: {integrity: sha512-NUdh0aDavY2og7IbBPenWqR9exH+E26Sv8e0/eTe1tltDGZL+GtBkDAnnyBtmekfK6/Dq3MkcGtzXFEd1LQrtg==} + engines: {node: '>= 0.4'} dependencies: - call-bind: 1.0.2 + call-bind: 1.0.7 define-properties: 1.2.1 - es-abstract: 1.22.2 - get-intrinsic: 1.2.1 + es-abstract: 1.23.3 + es-errors: 1.3.0 + es-object-atoms: 1.0.0 + get-intrinsic: 1.2.4 + gopd: 1.0.1 has-symbols: 1.0.3 - internal-slot: 1.0.5 - regexp.prototype.flags: 1.5.1 - set-function-name: 2.0.1 - side-channel: 1.0.4 + internal-slot: 1.0.7 + regexp.prototype.flags: 1.5.2 + set-function-name: 2.0.2 + side-channel: 1.0.6 dev: true - /string.prototype.trim@1.2.8: - resolution: {integrity: sha512-lfjY4HcixfQXOfaqCvcBuOIapyaroTXhbkfJN3gcB1OtyupngWK4sEET9Knd0cXd28kTUqu/kHoV4HKSJdnjiQ==} + /string.prototype.trim@1.2.9: + resolution: {integrity: sha512-klHuCNxiMZ8MlsOihJhJEBJAiMVqU3Z2nEXWfWnIqjN0gEFS9J9+IxKozWWtQGcgoa1WUZzLjKPTr4ZHNFTFxw==} engines: {node: '>= 0.4'} dependencies: - call-bind: 1.0.2 + call-bind: 1.0.7 define-properties: 1.2.1 - es-abstract: 1.22.2 + es-abstract: 1.23.3 + es-object-atoms: 1.0.0 dev: true - /string.prototype.trimend@1.0.7: - resolution: {integrity: sha512-Ni79DqeB72ZFq1uH/L6zJ+DKZTkOtPIHovb3YZHQViE+HDouuU4mBrLOLDn5Dde3RF8qw5qVETEjhu9locMLvA==} + /string.prototype.trimend@1.0.8: + resolution: {integrity: sha512-p73uL5VCHCO2BZZ6krwwQE3kCzM7NKmis8S//xEC6fQonchbum4eP6kR4DLEjQFO3Wnj3Fuo8NM0kOSjVdHjZQ==} dependencies: - call-bind: 1.0.2 + call-bind: 1.0.7 define-properties: 1.2.1 - es-abstract: 1.22.2 + es-object-atoms: 1.0.0 dev: true - /string.prototype.trimstart@1.0.7: - resolution: {integrity: sha512-NGhtDFu3jCEm7B4Fy0DpLewdJQOZcQ0rGbwQ/+stjnrp2i+rlKeCvos9hOIeCmqwratM47OBxY7uFZzjxHXmrg==} + /string.prototype.trimstart@1.0.8: + resolution: {integrity: sha512-UXSH262CSZY1tfu3G3Secr6uGLCFVPMhIqHjlgCUtCCcgihYc/xKs9djMTMUOb2j1mVSeU8EU6NWc/iQKU6Gfg==} + engines: {node: '>= 0.4'} dependencies: - call-bind: 1.0.2 + call-bind: 1.0.7 define-properties: 1.2.1 - es-abstract: 1.22.2 + es-object-atoms: 1.0.0 dev: true /strip-ansi@6.0.1: @@ -4518,14 +4549,12 @@ packages: engines: {node: '>=8'} dependencies: ansi-regex: 5.0.1 - dev: true /strip-ansi@7.1.0: resolution: {integrity: sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==} engines: {node: '>=12'} dependencies: ansi-regex: 6.0.1 - dev: true /strip-bom@3.0.0: resolution: {integrity: sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==} @@ -4547,12 +4576,6 @@ packages: engines: {node: '>=8'} dev: true - /strip-literal@1.3.0: - resolution: {integrity: sha512-PugKzOsyXpArk0yWmUwqOZecSO0GH0bPoctLcqNDH9J04pVW3lflYE0ujElBGTloevcxF5MofAOZ7C5l2b+wLg==} - dependencies: - acorn: 8.11.3 - dev: true - /strip-literal@2.1.0: resolution: {integrity: sha512-Op+UycaUt/8FbN/Z2TWPBLge3jWrP3xj10f3fnYxf052bKuS3EKs1ZQcVGjnEMdsNVAM+plXRdmjrZ/KgG3Skw==} dependencies: @@ -4575,14 +4598,14 @@ packages: client-only: 0.0.1 react: 18.2.0 - /sucrase@3.34.0: - resolution: {integrity: sha512-70/LQEZ07TEcxiU2dz51FKaE6hCTWC6vr7FOk3Gr0U60C3shtAN+H+BFr9XlYe5xqf3RA8nrc+VIwzCfnxuXJw==} - engines: {node: '>=8'} + /sucrase@3.35.0: + resolution: {integrity: sha512-8EbVDiu9iN/nESwxeSxDKe0dunta1GOlHufmSSXxMD2z2/tMZpDMpvXQGsc+ajGo8y2uYUmixaSRUc/QPoQ0GA==} + engines: {node: '>=16 || 14 >=14.17'} hasBin: true dependencies: - '@jridgewell/gen-mapping': 0.3.3 + '@jridgewell/gen-mapping': 0.3.5 commander: 4.1.1 - glob: 7.1.6 + glob: 10.3.15 lines-and-columns: 1.2.4 mz: 2.7.0 pirates: 4.0.6 @@ -4610,7 +4633,7 @@ packages: dependencies: client-only: 0.0.1 react: 18.2.0 - use-sync-external-store: 1.2.0(react@18.2.0) + use-sync-external-store: 1.2.2(react@18.2.0) dev: false /tabbable@6.2.0: @@ -4628,10 +4651,10 @@ packages: dependencies: '@alloc/quick-lru': 5.2.0 arg: 5.0.2 - chokidar: 3.5.3 + chokidar: 3.6.0 didyoumean: 1.2.2 dlv: 1.1.3 - fast-glob: 3.3.1 + fast-glob: 3.3.2 glob-parent: 6.0.2 is-glob: 4.0.3 jiti: 1.21.0 @@ -4639,15 +4662,15 @@ packages: micromatch: 4.0.5 normalize-path: 3.0.0 object-hash: 3.0.0 - picocolors: 1.0.0 + picocolors: 1.0.1 postcss: 8.4.38 postcss-import: 15.1.0(postcss@8.4.38) postcss-js: 4.0.1(postcss@8.4.38) - postcss-load-config: 4.0.1(postcss@8.4.38) + postcss-load-config: 4.0.2(postcss@8.4.38) postcss-nested: 6.0.1(postcss@8.4.38) - postcss-selector-parser: 6.0.13 - resolve: 1.22.6 - sucrase: 3.34.0 + postcss-selector-parser: 6.0.16 + resolve: 1.22.8 + sucrase: 3.35.0 transitivePeerDependencies: - ts-node @@ -4671,13 +4694,8 @@ packages: dependencies: any-promise: 1.3.0 - /tinybench@2.5.1: - resolution: {integrity: sha512-65NKvSuAVDP/n4CqH+a9w2kTlLReS9vhsAP06MWx+/89nMinJyB2icyl58RIcqCmIggpojIGeuJGhjU1aGMBSg==} - dev: true - - /tinypool@0.7.0: - resolution: {integrity: sha512-zSYNUlYSMhJ6Zdou4cJwo/p7w5nmAH17GRfU/ui3ctvjXFErXXkruT4MWW6poDeXgCaIBlGLrfU6TbTXxyGMww==} - engines: {node: '>=14.0.0'} + /tinybench@2.8.0: + resolution: {integrity: sha512-1/eK7zUnIklz4JUUlL+658n58XO2hHLQfSk1Zf2LKieUjxidN16eKFEoDEfjHc3ohofSSqK3X5yO6VGb6iW8Lw==} dev: true /tinypool@0.8.4: @@ -4685,8 +4703,8 @@ packages: engines: {node: '>=14.0.0'} dev: true - /tinyspy@2.2.0: - resolution: {integrity: sha512-d2eda04AN/cPOR89F7Xv5bK/jrQEhmcLFe6HFldoeO9AJtps+fqEnh486vnT/8y4bw38pSyxDcTCAq+Ks2aJTg==} + /tinyspy@2.2.1: + resolution: {integrity: sha512-KYad6Vy5VDWV4GH3fjpseMQ/XU2BhIYP7Vzd0LG44qRWm/Yt2WCOTicFdvmgo6gWaqooMQCawTtILVQJupKu7A==} engines: {node: '>=14.0.0'} dev: true @@ -4699,7 +4717,7 @@ packages: /tr46@1.0.1: resolution: {integrity: sha512-dTpowEjclQ7Kgx5SdBkqRzVhERQXov8/l9Ft9dVM9fmg0W0KQSVaXX9T4i6twCPNtYiZM53lpSSUAwJbFPOHxA==} dependencies: - punycode: 2.3.0 + punycode: 2.3.1 dev: true /tree-kill@1.2.2: @@ -4707,9 +4725,18 @@ packages: hasBin: true dev: true - /ts-api-utils@1.0.3(typescript@5.4.5): - resolution: {integrity: sha512-wNMeqtMz5NtwpT/UZGY5alT+VoKdSsOOP/kqHFcUW1P/VRhH2wJ48+DN2WwUliNbQ976ETwDL0Ifd2VVvgonvg==} - engines: {node: '>=16.13.0'} + /ts-api-utils@1.3.0(typescript@5.3.3): + resolution: {integrity: sha512-UQMIo7pb8WRomKR1/+MFVLTroIvDVtMX3K6OUir8ynLyzB8Jeriont2bTAtmNPa1ekAgN7YPDyf6V+ygrdU+eQ==} + engines: {node: '>=16'} + peerDependencies: + typescript: '>=4.2.0' + dependencies: + typescript: 5.3.3 + dev: true + + /ts-api-utils@1.3.0(typescript@5.4.5): + resolution: {integrity: sha512-UQMIo7pb8WRomKR1/+MFVLTroIvDVtMX3K6OUir8ynLyzB8Jeriont2bTAtmNPa1ekAgN7YPDyf6V+ygrdU+eQ==} + engines: {node: '>=16'} peerDependencies: typescript: '>=4.2.0' dependencies: @@ -4719,8 +4746,8 @@ packages: /ts-interface-checker@0.1.13: resolution: {integrity: sha512-Y/arvbn+rrz3JCKl9C4kVNfTfSm2/mEp5FSz5EsZSANGPSlQrpRI5M4PKF+mJnE52jOO90PnPSc3Ur3bTQw0gA==} - /tsconfig-paths@3.14.2: - resolution: {integrity: sha512-o/9iXgCYc5L/JxCHPe3Hvh8Q/2xm5Z+p18PESBU6Ff33695QnCHBEjcytY2q19ua7Mbl/DavtBOLq+oG0RCL+g==} + /tsconfig-paths@3.15.0: + resolution: {integrity: sha512-2Ac2RgzDe/cn48GvOe3M+o82pEFewD3UPbyoUHHdKasHwJKjds4fLXWf/Ux5kATBKN20oaFGu+jbElp1pos0mg==} dependencies: '@types/json5': 0.0.29 json5: 1.0.2 @@ -4731,43 +4758,7 @@ packages: /tslib@2.6.2: resolution: {integrity: sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==} - /tsup@7.2.0(typescript@5.2.2): - resolution: {integrity: sha512-vDHlczXbgUvY3rWvqFEbSqmC1L7woozbzngMqTtL2PGBODTtWlRwGDDawhvWzr5c1QjKe4OAKqJGfE1xeXUvtQ==} - engines: {node: '>=16.14'} - hasBin: true - peerDependencies: - '@swc/core': ^1 - postcss: ^8.4.12 - typescript: '>=4.1.0' - peerDependenciesMeta: - '@swc/core': - optional: true - postcss: - optional: true - typescript: - optional: true - dependencies: - bundle-require: 4.0.2(esbuild@0.18.20) - cac: 6.7.14 - chokidar: 3.5.3 - debug: 4.3.4 - esbuild: 0.18.20 - execa: 5.1.1 - globby: 11.1.0 - joycon: 3.1.1 - postcss-load-config: 4.0.1(postcss@8.4.38) - resolve-from: 5.0.0 - rollup: 3.29.4 - source-map: 0.8.0-beta.0 - sucrase: 3.34.0 - tree-kill: 1.2.2 - typescript: 5.2.2 - transitivePeerDependencies: - - supports-color - - ts-node - dev: true - - /tsup@7.2.0(typescript@5.4.5): + /tsup@7.2.0(typescript@5.3.3): resolution: {integrity: sha512-vDHlczXbgUvY3rWvqFEbSqmC1L7woozbzngMqTtL2PGBODTtWlRwGDDawhvWzr5c1QjKe4OAKqJGfE1xeXUvtQ==} engines: {node: '>=16.14'} hasBin: true @@ -4783,21 +4774,21 @@ packages: typescript: optional: true dependencies: - bundle-require: 4.0.2(esbuild@0.18.20) + bundle-require: 4.1.0(esbuild@0.18.20) cac: 6.7.14 - chokidar: 3.5.3 + chokidar: 3.6.0 debug: 4.3.4 esbuild: 0.18.20 execa: 5.1.1 globby: 11.1.0 joycon: 3.1.1 - postcss-load-config: 4.0.1(postcss@8.4.38) + postcss-load-config: 4.0.2(postcss@8.4.38) resolve-from: 5.0.0 rollup: 3.29.4 source-map: 0.8.0-beta.0 - sucrase: 3.34.0 + sucrase: 3.35.0 tree-kill: 1.2.2 - typescript: 5.4.5 + typescript: 5.3.3 transitivePeerDependencies: - supports-color - ts-node @@ -4822,19 +4813,19 @@ packages: typescript: optional: true dependencies: - bundle-require: 4.0.2(esbuild@0.19.12) + bundle-require: 4.1.0(esbuild@0.19.12) cac: 6.7.14 - chokidar: 3.5.3 + chokidar: 3.6.0 debug: 4.3.4 esbuild: 0.19.12 execa: 5.1.1 globby: 11.1.0 joycon: 3.1.1 - postcss-load-config: 4.0.1(postcss@8.4.38) + postcss-load-config: 4.0.2(postcss@8.4.38) resolve-from: 5.0.0 rollup: 4.17.2 source-map: 0.8.0-beta.0 - sucrase: 3.34.0 + sucrase: 3.35.0 tree-kill: 1.2.2 typescript: 5.3.3 transitivePeerDependencies: @@ -4842,64 +4833,64 @@ packages: - ts-node dev: true - /turbo-darwin-64@1.10.16: - resolution: {integrity: sha512-+Jk91FNcp9e9NCLYlvDDlp2HwEDp14F9N42IoW3dmHI5ZkGSXzalbhVcrx3DOox3QfiNUHxzWg4d7CnVNCuuMg==} + /turbo-darwin-64@1.13.3: + resolution: {integrity: sha512-glup8Qx1qEFB5jerAnXbS8WrL92OKyMmg5Hnd4PleLljAeYmx+cmmnsmLT7tpaVZIN58EAAwu8wHC6kIIqhbWA==} cpu: [x64] os: [darwin] requiresBuild: true dev: true optional: true - /turbo-darwin-arm64@1.10.16: - resolution: {integrity: sha512-jqGpFZipIivkRp/i+jnL8npX0VssE6IAVNKtu573LXtssZdV/S+fRGYA16tI46xJGxSAivrZ/IcgZrV6Jk80bw==} + /turbo-darwin-arm64@1.13.3: + resolution: {integrity: sha512-/np2xD+f/+9qY8BVtuOQXRq5f9LehCFxamiQnwdqWm5iZmdjygC5T3uVSYuagVFsZKMvX3ycySwh8dylGTl6lg==} cpu: [arm64] os: [darwin] requiresBuild: true dev: true optional: true - /turbo-linux-64@1.10.16: - resolution: {integrity: sha512-PpqEZHwLoizQ6sTUvmImcRmACyRk9EWLXGlqceogPZsJ1jTRK3sfcF9fC2W56zkSIzuLEP07k5kl+ZxJd8JMcg==} + /turbo-linux-64@1.13.3: + resolution: {integrity: sha512-G+HGrau54iAnbXLfl+N/PynqpDwi/uDzb6iM9hXEDG+yJnSJxaHMShhOkXYJPk9offm9prH33Khx2scXrYVW1g==} cpu: [x64] os: [linux] requiresBuild: true dev: true optional: true - /turbo-linux-arm64@1.10.16: - resolution: {integrity: sha512-TMjFYz8to1QE0fKVXCIvG/4giyfnmqcQIwjdNfJvKjBxn22PpbjeuFuQ5kNXshUTRaTJihFbuuCcb5OYFNx4uw==} + /turbo-linux-arm64@1.13.3: + resolution: {integrity: sha512-qWwEl5VR02NqRyl68/3pwp3c/olZuSp+vwlwrunuoNTm6JXGLG5pTeme4zoHNnk0qn4cCX7DFrOboArlYxv0wQ==} cpu: [arm64] os: [linux] requiresBuild: true dev: true optional: true - /turbo-windows-64@1.10.16: - resolution: {integrity: sha512-+jsf68krs0N66FfC4/zZvioUap/Tq3sPFumnMV+EBo8jFdqs4yehd6+MxIwYTjSQLIcpH8KoNMB0gQYhJRLZzw==} + /turbo-windows-64@1.13.3: + resolution: {integrity: sha512-Nudr4bRChfJzBPzEmpVV85VwUYRCGKecwkBFpbp2a4NtrJ3+UP1VZES653ckqCu2FRyRuS0n03v9euMbAvzH+Q==} cpu: [x64] os: [win32] requiresBuild: true dev: true optional: true - /turbo-windows-arm64@1.10.16: - resolution: {integrity: sha512-sKm3hcMM1bl0B3PLG4ifidicOGfoJmOEacM5JtgBkYM48ncMHjkHfFY7HrJHZHUnXM4l05RQTpLFoOl/uIo2HQ==} + /turbo-windows-arm64@1.13.3: + resolution: {integrity: sha512-ouJCgsVLd3icjRLmRvHQDDZnmGzT64GBupM1Y+TjtYn2LVaEBoV6hicFy8x5DUpnqdLy+YpCzRMkWlwhmkX7sQ==} cpu: [arm64] os: [win32] requiresBuild: true dev: true optional: true - /turbo@1.10.16: - resolution: {integrity: sha512-2CEaK4FIuSZiP83iFa9GqMTQhroW2QryckVqUydmg4tx78baftTOS0O+oDAhvo9r9Nit4xUEtC1RAHoqs6ZEtg==} + /turbo@1.13.3: + resolution: {integrity: sha512-n17HJv4F4CpsYTvKzUJhLbyewbXjq1oLCi90i5tW1TiWDz16ML1eDG7wi5dHaKxzh5efIM56SITnuVbMq5dk4g==} hasBin: true optionalDependencies: - turbo-darwin-64: 1.10.16 - turbo-darwin-arm64: 1.10.16 - turbo-linux-64: 1.10.16 - turbo-linux-arm64: 1.10.16 - turbo-windows-64: 1.10.16 - turbo-windows-arm64: 1.10.16 + turbo-darwin-64: 1.13.3 + turbo-darwin-arm64: 1.13.3 + turbo-linux-64: 1.13.3 + turbo-linux-arm64: 1.13.3 + turbo-windows-64: 1.13.3 + turbo-windows-arm64: 1.13.3 dev: true /type-check@0.4.0: @@ -4919,48 +4910,48 @@ packages: engines: {node: '>=10'} dev: true - /typed-array-buffer@1.0.0: - resolution: {integrity: sha512-Y8KTSIglk9OZEr8zywiIHG/kmQ7KWyjseXs1CbSo8vC42w7hg2HgYTxSWwP0+is7bWDc1H+Fo026CpHFwm8tkw==} + /typed-array-buffer@1.0.2: + resolution: {integrity: sha512-gEymJYKZtKXzzBzM4jqa9w6Q1Jjm7x2d+sh19AdsD4wqnMPDYyvwpsIc2Q/835kHuo3BEQ7CjelGhfTsoBb2MQ==} engines: {node: '>= 0.4'} dependencies: - call-bind: 1.0.2 - get-intrinsic: 1.2.1 - is-typed-array: 1.1.12 + call-bind: 1.0.7 + es-errors: 1.3.0 + is-typed-array: 1.1.13 dev: true - /typed-array-byte-length@1.0.0: - resolution: {integrity: sha512-Or/+kvLxNpeQ9DtSydonMxCx+9ZXOswtwJn17SNLvhptaXYDJvkFFP5zbfU/uLmvnBJlI4yrnXRxpdWH/M5tNA==} + /typed-array-byte-length@1.0.1: + resolution: {integrity: sha512-3iMJ9q0ao7WE9tWcaYKIptkNBuOIcZCCT0d4MRvuuH88fEoEH62IuQe0OtraD3ebQEoTRk8XCBoknUNc1Y67pw==} engines: {node: '>= 0.4'} dependencies: - call-bind: 1.0.2 + call-bind: 1.0.7 for-each: 0.3.3 - has-proto: 1.0.1 - is-typed-array: 1.1.12 + gopd: 1.0.1 + has-proto: 1.0.3 + is-typed-array: 1.1.13 dev: true - /typed-array-byte-offset@1.0.0: - resolution: {integrity: sha512-RD97prjEt9EL8YgAgpOkf3O4IF9lhJFr9g0htQkm0rchFp/Vx7LW5Q8fSXXub7BXAODyUQohRMyOc3faCPd0hg==} + /typed-array-byte-offset@1.0.2: + resolution: {integrity: sha512-Ous0vodHa56FviZucS2E63zkgtgrACj7omjwd/8lTEMEPFFyjfixMZ1ZXenpgCFBBt4EC1J2XsyVS2gkG0eTFA==} engines: {node: '>= 0.4'} dependencies: - available-typed-arrays: 1.0.5 - call-bind: 1.0.2 + available-typed-arrays: 1.0.7 + call-bind: 1.0.7 for-each: 0.3.3 - has-proto: 1.0.1 - is-typed-array: 1.1.12 + gopd: 1.0.1 + has-proto: 1.0.3 + is-typed-array: 1.1.13 dev: true - /typed-array-length@1.0.4: - resolution: {integrity: sha512-KjZypGq+I/H7HI5HlOoGHkWUUGq+Q0TPhQurLbyrVrvnKTBgzLhIJ7j6J/XTQOi0d1RjyZ0wdas8bKs2p0x3Ng==} + /typed-array-length@1.0.6: + resolution: {integrity: sha512-/OxDN6OtAk5KBpGb28T+HZc2M+ADtvRxXrKKbUwtsLgdoxgX13hyy7ek6bFRl5+aBs2yZzB0c4CnQfAtVypW/g==} + engines: {node: '>= 0.4'} dependencies: - call-bind: 1.0.2 + call-bind: 1.0.7 for-each: 0.3.3 - is-typed-array: 1.1.12 - dev: true - - /typescript@5.2.2: - resolution: {integrity: sha512-mI4WrpHsbCIcwT9cF4FZvr80QUeKvsUsUvKDoR+X/7XHQH98xYD8YHZg7ANtz2GtZt/CBq2QJ0thkGJMHfqc1w==} - engines: {node: '>=14.17'} - hasBin: true + gopd: 1.0.1 + has-proto: 1.0.3 + is-typed-array: 1.1.13 + possible-typed-array-names: 1.0.0 dev: true /typescript@5.3.3: @@ -4974,14 +4965,14 @@ packages: hasBin: true dev: true - /ufo@1.3.1: - resolution: {integrity: sha512-uY/99gMLIOlJPwATcMVYfqDSxUR9//AUcgZMzwfSTJPDKzA1S8mX4VLqa+fiAtveraQUBCz4FFcwVZBGbwBXIw==} + /ufo@1.5.3: + resolution: {integrity: sha512-Y7HYmWaFwPUmkoQCUIAYpKqkOf+SbVj/2fJJZ4RJMCfZp0rTGwRbzQD+HghfnhKOjL9E01okqz+ncJskGYfBNw==} dev: true /unbox-primitive@1.0.2: resolution: {integrity: sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw==} dependencies: - call-bind: 1.0.2 + call-bind: 1.0.7 has-bigints: 1.0.2 has-symbols: 1.0.3 which-boxed-primitive: 1.0.2 @@ -4991,21 +4982,21 @@ packages: resolution: {integrity: sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==} dev: true - /update-browserslist-db@1.0.13(browserslist@4.23.0): - resolution: {integrity: sha512-xebP81SNcPuNpPP3uzeW1NYXxI3rxyJzF3pD6sH4jE7o/IX+WtSpwnVU+qIsDPyk0d3hmFQ7mjqc6AtV604hbg==} + /update-browserslist-db@1.0.16(browserslist@4.23.0): + resolution: {integrity: sha512-KVbTxlBYlckhF5wgfyZXTWnMn7MMZjMu9XG8bPlliUOP9ThaF4QnhP8qrjrH7DRzHfSk0oQv1wToW+iA5GajEQ==} hasBin: true peerDependencies: browserslist: '>= 4.21.0' dependencies: browserslist: 4.23.0 - escalade: 3.1.1 - picocolors: 1.0.0 + escalade: 3.1.2 + picocolors: 1.0.1 dev: true /uri-js@4.4.1: resolution: {integrity: sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==} dependencies: - punycode: 2.3.0 + punycode: 2.3.1 dev: true /use-sync-external-store@1.2.0(react@18.2.0): @@ -5016,6 +5007,14 @@ packages: react: 18.2.0 dev: false + /use-sync-external-store@1.2.2(react@18.2.0): + resolution: {integrity: sha512-PElTlVMwpblvbNqQ82d2n6RjStvdSoNe9FG28kNfz3WiXilJm4DdNkEzRhCZuIDwY8U08WVihhGR5iRqAwfDiw==} + peerDependencies: + react: ^16.8.0 || ^17.0.0 || ^18.0.0 + dependencies: + react: 18.2.0 + dev: false + /util-deprecate@1.0.2: resolution: {integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==} @@ -5042,37 +5041,15 @@ packages: - zod dev: false - /vite-node@0.34.5(@types/node@20.12.12): - resolution: {integrity: sha512-RNZ+DwbCvDoI5CbCSQSyRyzDTfFvFauvMs6Yq4ObJROKlIKuat1KgSX/Ako5rlDMfVCyMcpMRMTkJBxd6z8YRA==} - engines: {node: '>=v14.18.0'} - hasBin: true - dependencies: - cac: 6.7.14 - debug: 4.3.4 - mlly: 1.4.2 - pathe: 1.1.1 - picocolors: 1.0.0 - vite: 5.1.7(@types/node@20.12.12) - transitivePeerDependencies: - - '@types/node' - - less - - lightningcss - - sass - - stylus - - sugarss - - supports-color - - terser - dev: true - - /vite-node@1.3.1: - resolution: {integrity: sha512-azbRrqRxlWTJEVbzInZCTchx0X69M/XPTCz4H+TLvlTcR/xH/3hkRqhOakT41fMJCMzXTu4UvegkZiEoJAWvng==} + /vite-node@1.4.0(@types/node@20.12.12): + resolution: {integrity: sha512-VZDAseqjrHgNd4Kh8icYHWzTKSCZMhia7GyHfhtzLW33fZlG9SwsB6CEhgyVOWkJfJ2pFLrp/Gj1FSfAiqH9Lw==} engines: {node: ^18.0.0 || >=20.0.0} hasBin: true dependencies: cac: 6.7.14 debug: 4.3.4 - pathe: 1.1.1 - picocolors: 1.0.0 + pathe: 1.1.2 + picocolors: 1.0.1 vite: 5.1.7(@types/node@20.12.12) transitivePeerDependencies: - '@types/node' @@ -5121,80 +5098,15 @@ packages: fsevents: 2.3.3 dev: true - /vitest@0.34.5: - resolution: {integrity: sha512-CPI68mmnr2DThSB3frSuE5RLm9wo5wU4fbDrDwWQQB1CWgq9jQVoQwnQSzYAjdoBOPoH2UtXpOgHVge/uScfZg==} - engines: {node: '>=v14.18.0'} - hasBin: true - peerDependencies: - '@edge-runtime/vm': '*' - '@vitest/browser': '*' - '@vitest/ui': '*' - happy-dom: '*' - jsdom: '*' - playwright: '*' - safaridriver: '*' - webdriverio: '*' - peerDependenciesMeta: - '@edge-runtime/vm': - optional: true - '@vitest/browser': - optional: true - '@vitest/ui': - optional: true - happy-dom: - optional: true - jsdom: - optional: true - playwright: - optional: true - safaridriver: - optional: true - webdriverio: - optional: true - dependencies: - '@types/chai': 4.3.6 - '@types/chai-subset': 1.3.3 - '@types/node': 20.12.12 - '@vitest/expect': 0.34.5 - '@vitest/runner': 0.34.5 - '@vitest/snapshot': 0.34.5 - '@vitest/spy': 0.34.5 - '@vitest/utils': 0.34.5 - acorn: 8.11.3 - acorn-walk: 8.3.2 - cac: 6.7.14 - chai: 4.3.10 - debug: 4.3.4 - local-pkg: 0.4.3 - magic-string: 0.30.10 - pathe: 1.1.1 - picocolors: 1.0.0 - std-env: 3.7.0 - strip-literal: 1.3.0 - tinybench: 2.5.1 - tinypool: 0.7.0 - vite: 5.1.7(@types/node@20.12.12) - vite-node: 0.34.5(@types/node@20.12.12) - why-is-node-running: 2.2.2 - transitivePeerDependencies: - - less - - lightningcss - - sass - - stylus - - sugarss - - supports-color - - terser - dev: true - - /vitest@1.3.1: - resolution: {integrity: sha512-/1QJqXs8YbCrfv/GPQ05wAZf2eakUPLPa18vkJAKE7RXOKfVHqMZZ1WlTjiwl6Gcn65M5vpNUB6EFLnEdRdEXQ==} + /vitest@1.4.0(@types/node@20.12.12): + resolution: {integrity: sha512-gujzn0g7fmwf83/WzrDTnncZt2UiXP41mHuFYFrdwaLRVQ6JYQEiME2IfEjU3vcFL3VKa75XhI3lFgn+hfVsQw==} engines: {node: ^18.0.0 || >=20.0.0} hasBin: true peerDependencies: '@edge-runtime/vm': '*' '@types/node': ^18.0.0 || >=20.0.0 - '@vitest/browser': 1.3.1 - '@vitest/ui': 1.3.1 + '@vitest/browser': 1.4.0 + '@vitest/ui': 1.4.0 happy-dom: '*' jsdom: '*' peerDependenciesMeta: @@ -5211,25 +5123,26 @@ packages: jsdom: optional: true dependencies: - '@vitest/expect': 1.3.1 - '@vitest/runner': 1.3.1 - '@vitest/snapshot': 1.3.1 - '@vitest/spy': 1.3.1 - '@vitest/utils': 1.3.1 + '@types/node': 20.12.12 + '@vitest/expect': 1.4.0 + '@vitest/runner': 1.4.0 + '@vitest/snapshot': 1.4.0 + '@vitest/spy': 1.4.0 + '@vitest/utils': 1.4.0 acorn-walk: 8.3.2 - chai: 4.3.10 + chai: 4.4.1 debug: 4.3.4 execa: 8.0.1 local-pkg: 0.5.0 magic-string: 0.30.10 - pathe: 1.1.1 - picocolors: 1.0.0 + pathe: 1.1.2 + picocolors: 1.0.1 std-env: 3.7.0 strip-literal: 2.1.0 - tinybench: 2.5.1 + tinybench: 2.8.0 tinypool: 0.8.4 vite: 5.1.7(@types/node@20.12.12) - vite-node: 1.3.1 + vite-node: 1.4.0(@types/node@20.12.12) why-is-node-running: 2.2.2 transitivePeerDependencies: - less @@ -5241,14 +5154,6 @@ packages: - terser dev: true - /watchpack@2.4.0: - resolution: {integrity: sha512-Lcvm7MGST/4fup+ifyKi2hjyIAwcdI4HRgtvTpIUxBRhB+RFtUh8XtDOxUfctVCnhVi+QQj49i91OyvzkJl6cg==} - engines: {node: '>=10.13.0'} - dependencies: - glob-to-regexp: 0.4.1 - graceful-fs: 4.2.11 - dev: false - /webidl-conversions@4.0.2: resolution: {integrity: sha512-YQ+BmxuTgd6UXZW3+ICGfyqRyHXVlD5GtQr5+qjiNW7bF0cqrzX500HVXPBOvgXb5YnzDd+h0zqyv61KUD7+Sg==} dev: true @@ -5280,7 +5185,7 @@ packages: engines: {node: '>= 0.4'} dependencies: function.prototype.name: 1.1.6 - has-tostringtag: 1.0.0 + has-tostringtag: 1.0.2 is-async-function: 2.0.0 is-date-object: 1.0.5 is-finalizationregistry: 1.0.2 @@ -5289,28 +5194,29 @@ packages: is-weakref: 1.0.2 isarray: 2.0.5 which-boxed-primitive: 1.0.2 - which-collection: 1.0.1 - which-typed-array: 1.1.11 + which-collection: 1.0.2 + which-typed-array: 1.1.15 dev: true - /which-collection@1.0.1: - resolution: {integrity: sha512-W8xeTUwaln8i3K/cY1nGXzdnVZlidBcagyNFtBdD5kxnb4TvGKR7FfSIS3mYpwWS1QUCutfKz8IY8RjftB0+1A==} + /which-collection@1.0.2: + resolution: {integrity: sha512-K4jVyjnBdgvc86Y6BkaLZEN933SwYOuBFkdmBu9ZfkcAbdVbpITnDmjvZ/aQjRXQrv5EPkTnD1s39GiiqbngCw==} + engines: {node: '>= 0.4'} dependencies: - is-map: 2.0.2 - is-set: 2.0.2 - is-weakmap: 2.0.1 - is-weakset: 2.0.2 + is-map: 2.0.3 + is-set: 2.0.3 + is-weakmap: 2.0.2 + is-weakset: 2.0.3 dev: true - /which-typed-array@1.1.11: - resolution: {integrity: sha512-qe9UWWpkeG5yzZ0tNYxDmd7vo58HDBc39mZ0xWWpolAGADdFOzkfamWLDxkOWcvHQKVmdTyQdLD4NOfjLWTKew==} + /which-typed-array@1.1.15: + resolution: {integrity: sha512-oV0jmFtUky6CXfkqehVvBP/LSWJ2sy4vWMioiENyJLePrBO/yKyV9OyJySfAKosh+RYkIl5zJCNZ8/4JncrpdA==} engines: {node: '>= 0.4'} dependencies: - available-typed-arrays: 1.0.5 - call-bind: 1.0.2 + available-typed-arrays: 1.0.7 + call-bind: 1.0.7 for-each: 0.3.3 gopd: 1.0.1 - has-tostringtag: 1.0.0 + has-tostringtag: 1.0.2 dev: true /which@2.0.2: @@ -5319,7 +5225,6 @@ packages: hasBin: true dependencies: isexe: 2.0.0 - dev: true /why-is-node-running@2.2.2: resolution: {integrity: sha512-6tSwToZxTOcotxHeA+qGCq1mVzKR3CwcJGmVcY+QE8SHy6TnpFnh8PAvPNHYr7EcuVeG0QSMxtYCuO1ta/G/oA==} @@ -5330,6 +5235,11 @@ packages: stackback: 0.0.2 dev: true + /word-wrap@1.2.5: + resolution: {integrity: sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==} + engines: {node: '>=0.10.0'} + dev: true + /wrap-ansi@7.0.0: resolution: {integrity: sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==} engines: {node: '>=10'} @@ -5337,7 +5247,6 @@ packages: ansi-styles: 4.3.0 string-width: 4.2.3 strip-ansi: 6.0.1 - dev: true /wrap-ansi@8.1.0: resolution: {integrity: sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==} @@ -5346,10 +5255,10 @@ packages: ansi-styles: 6.2.1 string-width: 5.1.2 strip-ansi: 7.1.0 - dev: true /wrappy@1.0.2: resolution: {integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==} + dev: true /ws@8.13.0: resolution: {integrity: sha512-x9vcZYTrFPC7aSIbj7sRCYo7L/Xb8Iy+pW0ng0wt2vCJv7M9HOMy0UoN3rr+IFC7hb7vXoqS+P9ktyLLLhO+LA==} @@ -5364,13 +5273,10 @@ packages: optional: true dev: false - /yallist@4.0.0: - resolution: {integrity: sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==} - dev: true - - /yaml@2.3.2: - resolution: {integrity: sha512-N/lyzTPaJasoDmfV7YTrYCI0G/3ivm/9wdG0aHuheKowWQwGTsK0Eoiw6utmzAnI6pkJa0DUVygvp3spqqEKXg==} + /yaml@2.4.2: + resolution: {integrity: sha512-B3VqDZ+JAg1nZpaEmWtTXUlBneoGx6CPM9b0TENK6aoSu5t73dItudwdgmi6tHlIZZId4dZ9skcAQ2UbcyAeVA==} engines: {node: '>= 14'} + hasBin: true /yocto-queue@0.1.0: resolution: {integrity: sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==}