diff --git a/package.json b/package.json index 1ab9862b..927d59f4 100644 --- a/package.json +++ b/package.json @@ -15,34 +15,34 @@ "git-info": "rm -rf src/generated/ && mkdir src/generated/ && echo export default \"{\\\"commitHash\\\": \\\"$(git rev-parse --short HEAD)\\\", \\\"version\\\": \\\"$(git describe --tags --always)\\\"};\" > src/generated/gitInfo.ts" }, "dependencies": { - "@stellar/design-system": "^2.0.0-beta.7", + "@stellar/design-system": "^2.0.0-beta.8", "@stellar/stellar-sdk": "^11.3.0", - "@tanstack/react-query": "^5.24.1", - "@tanstack/react-query-devtools": "^5.24.1", - "dompurify": "^3.0.9", - "html-react-parser": "^5.1.8", - "immer": "^10.0.3", - "next": "14.1.0", + "@tanstack/react-query": "^5.28.8", + "@tanstack/react-query-devtools": "^5.28.8", + "dompurify": "^3.0.11", + "html-react-parser": "^5.1.9", + "immer": "^10.0.4", + "next": "14.1.4", "react": "^18", "react-dom": "^18", - "zustand": "^4.5.1", + "zustand": "^4.5.2", "zustand-querystring": "^0.0.19" }, "devDependencies": { - "@next/eslint-plugin-next": "^14.1.3", - "@playwright/test": "^1.42.0", + "@next/eslint-plugin-next": "^14.1.4", + "@playwright/test": "^1.42.1", "@types/dompurify": "^3.0.5", - "@types/node": "^20.11.23", - "@types/react": "^18.2.61", - "@types/react-dom": "^18.2.19", + "@types/node": "^20.11.30", + "@types/react": "^18.2.71", + "@types/react-dom": "^18.2.22", "concurrently": "^8.2.2", "eslint": "^8.57.0", - "eslint-config-next": "14.1.0", + "eslint-config-next": "14.1.4", "eslint-config-prettier": "^9.1.0", "husky": "^9.0.11", "lint-staged": "^15.2.2", "prettier": "^3.2.5", - "sass": "^1.71.1", - "typescript": "^5" + "sass": "^1.72.0", + "typescript": "^5.4.3" } } diff --git a/src/app/(sidebar)/explore-endpoints/[[...pages]]/page.tsx b/src/app/(sidebar)/explore-endpoints/[[...pages]]/page.tsx index 3fc5dfe5..4bbc8046 100644 --- a/src/app/(sidebar)/explore-endpoints/[[...pages]]/page.tsx +++ b/src/app/(sidebar)/explore-endpoints/[[...pages]]/page.tsx @@ -1,24 +1,24 @@ "use client"; -import React, { useCallback, useEffect, useState } from "react"; +import React, { useCallback, useEffect, useRef, useState } from "react"; import { usePathname } from "next/navigation"; import { Alert, Button, Card, - Checkbox, CopyText, Icon, Input, Link, Text, } from "@stellar/design-system"; +import { useQueryClient } from "@tanstack/react-query"; import { InfoCards } from "@/components/InfoCards"; -import { TabView } from "@/components/TabView"; import { SdsLink } from "@/components/SdsLink"; -import { WithInfoText } from "@/components/WithInfoText"; import { NextLink } from "@/components/NextLink"; +import { formComponentTemplate } from "@/components/formComponentTemplate"; +import { PrettyJson } from "@/components/PrettyJson"; import { useStore } from "@/store/useStore"; import { isEmptyObject } from "@/helpers/isEmptyObject"; @@ -28,11 +28,9 @@ import { parseJsonString } from "@/helpers/parseJsonString"; import { Routes } from "@/constants/routes"; import { EXPLORE_ENDPOINTS_PAGES_HORIZON } from "@/constants/exploreEndpointsPages"; -import { formComponentTemplate } from "@/constants/formComponentTemplate"; +import { useExploreEndpoint } from "@/query/useExploreEndpoint"; import { AnyObject, AssetObject, Network } from "@/types/types"; -// TODO: handle streaming - export default function ExploreEndpoints() { const pathname = usePathname(); const currentPage = pathname.split(Routes.EXPLORE_ENDPOINTS)?.[1]; @@ -57,10 +55,22 @@ export default function ExploreEndpoints() { resetParams, } = exploreEndpoints; - const [activeTab, setActiveTab] = useState("endpoints-tab-params"); const [formError, setFormError] = useState({}); const [requestUrl, setRequestUrl] = useState(""); + const queryClient = useQueryClient(); + const { + data: endpointData, + isLoading, + isFetching, + error: endpointError, + refetch, + isSuccess, + isError, + } = useExploreEndpoint(requestUrl); + + const responseEl = useRef(null); + const isSubmitEnabled = () => { let isValidReqFields = true; let isValidReqAssetFields = true; @@ -96,6 +106,21 @@ export default function ExploreEndpoints() { return isValidReqAssetFields && isValidReqFields && isValid; }; + const resetQuery = useCallback( + () => + queryClient.resetQueries({ + queryKey: ["exploreEndpoint", "response"], + exact: true, + }), + [queryClient], + ); + + const resetStates = useCallback(() => { + resetParams(); + setFormError({}); + resetQuery(); + }, [resetParams, resetQuery]); + useEffect(() => { // Validate saved params when the page loads const paramErrors = () => { @@ -127,10 +152,9 @@ export default function ExploreEndpoints() { // Clear form and errors if navigating to another endpoint page. We don't // want to keep previous form values. if (currentEndpoint && currentEndpoint !== currentPage) { - resetParams(); - setFormError({}); + resetStates(); } - }, [currentPage, currentEndpoint, updateCurrentEndpoint, resetParams]); + }, [currentEndpoint, currentPage, resetStates, updateCurrentEndpoint]); useEffect(() => { // Save network for endpoints if we don't have it yet. @@ -138,11 +162,17 @@ export default function ExploreEndpoints() { updateNetwork(network as Network); // When network changes, clear saved params and errors. } else if (network.id && network.id !== endpointNetwork.id) { - resetParams(); - setFormError({}); + resetStates(); updateNetwork(network as Network); } - }, [endpointNetwork.id, network, resetParams, updateNetwork]); + }, [endpointNetwork.id, network, resetStates, updateNetwork]); + + // Scroll to response + useEffect(() => { + if (isSuccess || isError) { + responseEl?.current?.scrollIntoView({ behavior: "smooth" }); + } + }, [isSuccess, isError]); const buildUrl = useCallback(() => { const mapPathParamToValue = (pathParams: string[]) => { @@ -199,7 +229,18 @@ export default function ExploreEndpoints() { const handleSubmit = (event: React.FormEvent) => { event.preventDefault(); - // TODO: handle submit + + // Adding a bit of a delay to make sure reset doesn't affect refetch + const delay = isError || isSuccess ? 100 : 0; + + if (delay) { + resetQuery(); + } + + const t = setTimeout(() => { + refetch(); + clearTimeout(t); + }, delay); }; const renderEndpointUrl = () => { @@ -226,6 +267,7 @@ export default function ExploreEndpoints() { variant="secondary" type="submit" disabled={!isSubmitEnabled()} + isLoading={isLoading || isFetching} > Submit @@ -248,7 +290,7 @@ export default function ExploreEndpoints() { return (
-
+
{allFields.map((f) => { const component = formComponentTemplate(f, pageData.custom?.[f]); @@ -259,6 +301,8 @@ export default function ExploreEndpoints() { // formatting (sanitizing object or array, for exmaple). // Error check needs the original value. const handleChange = (value: any, storeValue: any) => { + resetQuery(); + updateParams({ [f]: storeValue, }); @@ -313,16 +357,6 @@ export default function ExploreEndpoints() { return null; })}
- - {pageData.isStreaming ? ( - - - - ) : null}
); }; @@ -337,26 +371,77 @@ export default function ExploreEndpoints() { return ( <> -
- TODO: render JSON
, - }} - onTabChange={(id) => { - setActiveTab(id); - }} - activeTabId={activeTab} - /> - +
+ + {page.label} + + + }> + {`View ${pageData.docsLabel ? `${pageData.docsLabel} ` : ""}documentation`} + +
+ + +
+ {renderEndpointUrl()} + {renderFields()} +
+
+ + {endpointData || endpointError ? ( +
+ {endpointError ? ( + + {`${endpointError}`} + + ) : null} + + {endpointData ? ( + +
+ + JSON Response + {endpointData.isError ? ( + + + + ) : null} + + +
+ +
+ +
+
{/* TODO: add conditional StellarExpert link */}
+
+ + + +
+
+
+
+ ) : null} +
+ ) : null} + This tool can be used to run queries against the{" "} diff --git a/src/components/PrettyJson/index.tsx b/src/components/PrettyJson/index.tsx new file mode 100644 index 00000000..9f8420d2 --- /dev/null +++ b/src/components/PrettyJson/index.tsx @@ -0,0 +1,157 @@ +import React from "react"; +import { isEmptyObject } from "@/helpers/isEmptyObject"; +import { isValidUrl } from "@/helpers/isValidUrl"; +import { SdsLink } from "@/components/SdsLink"; +import { AnyObject } from "@/types/types"; + +import "./styles.scss"; + +export const PrettyJson = ({ json }: { json: AnyObject }) => { + if (typeof json !== "object") { + return null; + } + + const Key = ({ children }: { children: string }) => ( +
+ {`"${children}"`} + +
+ ); + const Value = ({ children }: { children: React.ReactNode }) => ( +
{children}
+ ); + const Quotes = () => {'"'}; + const Colon = () => {":"}; + const Comma = () => {","}; + const Bracket = ({ + char, + children, + }: { + char: "{" | "}" | "[" | "]"; + children?: React.ReactNode; + }) => ( + + {char} + {children} + + ); + + const render = (item: any, parentKey?: string): React.ReactElement => { + switch (typeof item) { + case "object": + return ( + + {Object.entries(item).map(([key, value]) => { + const keyProp = parentKey ? `${parentKey}-${key}` : key; + + if (typeof value === "object") { + if (Array.isArray(value)) { + if (value.length === 0) { + return ( +
+
+ {key} +
+ + {`[]`} + + +
+ ); + } + + return ( +
+
+ {key} + +
+
{value.map((v) => render(v, key))}
+
+ + +
+
+ ); + } + + if (value && isEmptyObject(value)) { + return ( +
+
+ {key} +
+ + {`{}`} + + +
+ ); + } + + return ( +
+
+ {key} + +
+
{render(value, key)}
+
+ + +
+
+ ); + } + + return ( +
+
+ {key} +
+ {render(value, key)} +
+ ); + })} +
+ ); + case "string": + return ( + + {isValidUrl(item) ? ( + <> + + {item} + + + ) : ( + `"${item}"` + )} + + + ); + case "function": + return ( + + {`${JSON.stringify(item)}`} + + + ); + default: + return ( + + {`${item}`} + + + ); + } + }; + + return ( +
+ + {render(json)} + +
+ ); +}; diff --git a/src/components/PrettyJson/styles.scss b/src/components/PrettyJson/styles.scss new file mode 100644 index 00000000..8f8d59dc --- /dev/null +++ b/src/components/PrettyJson/styles.scss @@ -0,0 +1,30 @@ +@use "../../styles/utils.scss" as *; + +.PrettyJson { + font-family: var(--sds-ff-monospace); + font-size: pxToRem(14px); + line-height: pxToRem(20px); + font-weight: var(--sds-fw-medium); + letter-spacing: -0.5px; + + &__nested { + padding-left: pxToRem(16px); + } + + &__inline { + display: flex; + gap: pxToRem(4px); + } + + &__value { + color: var(--sds-clr-gray-11); + white-space: nowrap; + } + + &__comma, + &__quotes, + &__bracket, + &__key { + color: var(--sds-clr-gray-11); + } +} diff --git a/src/components/TabView/index.tsx b/src/components/TabView/index.tsx deleted file mode 100644 index a61fa284..00000000 --- a/src/components/TabView/index.tsx +++ /dev/null @@ -1,119 +0,0 @@ -import React from "react"; -import { Card, Text } from "@stellar/design-system"; -import { WithInfoText } from "@/components/WithInfoText"; -import { Tabs } from "@/components/Tabs"; -import "./styles.scss"; - -type Tab = { - id: string; - label: string; - content: React.ReactNode; -}; - -type TabViewProps = { - heading: TabViewHeadingProps; - tab1: Tab; - tab2: Tab; - tab3?: Tab; - tab4?: Tab; - tab5?: Tab; - tab6?: Tab; - // eslint-disable-next-line no-unused-vars - onTabChange: (id: string) => void; - activeTabId: string; - staticTop?: React.ReactNode; -}; - -export const TabView = ({ - heading, - onTabChange, - activeTabId, - staticTop, - ...tabs -}: TabViewProps) => { - const tabItems = Object.values(tabs).map((t) => ({ - id: t.id, - label: t.label, - })); - - const tabContent = Object.values(tabs).map((t) => ({ - id: t.id, - content: t.content, - })); - - return ( -
-
- - -
- -
-
- - -
- {staticTop ?? null} - -
- {tabContent.map((tc) => ( -
- {tc.content} -
- ))} -
-
-
-
- ); -}; - -type TabViewHeadingProps = ( - | { - infoText: React.ReactNode | string; - href?: undefined; - } - | { - infoText?: undefined; - href: string; - } - | { infoText?: undefined; href?: undefined } -) & { - title: string; - infoHoverText?: string; -}; - -const TabViewHeading = ({ - title, - infoHoverText, - infoText, - href, -}: TabViewHeadingProps) => { - const renderTitle = () => ( - - {title} - - ); - - if (href || infoText) { - if (href) { - return ( - - {renderTitle()} - - ); - } - - return ( - - {renderTitle()} - - ); - } - - return renderTitle(); -}; diff --git a/src/components/TabView/styles.scss b/src/components/TabView/styles.scss deleted file mode 100644 index 10316d91..00000000 --- a/src/components/TabView/styles.scss +++ /dev/null @@ -1,30 +0,0 @@ -@use "../../styles/utils.scss" as *; - -.TabView { - display: flex; - flex-direction: column; - gap: pxToRem(12px); - - &__heading { - display: flex; - justify-content: space-between; - align-items: center; - gap: pxToRem(24px); - } - - &__body { - display: flex; - flex-direction: column; - gap: pxToRem(12px); - } - - &__content { - & > [data-is-active="false"] { - display: none; - } - - & > [data-is-active="true"] { - display: block; - } - } -} diff --git a/src/constants/formComponentTemplate.tsx b/src/components/formComponentTemplate.tsx similarity index 100% rename from src/constants/formComponentTemplate.tsx rename to src/components/formComponentTemplate.tsx diff --git a/src/constants/exploreEndpointsPages.ts b/src/constants/exploreEndpointsPages.ts index ca5bc736..600493ea 100644 --- a/src/constants/exploreEndpointsPages.ts +++ b/src/constants/exploreEndpointsPages.ts @@ -11,7 +11,8 @@ type ExploreEndpointsPagesProps = { label: string; form: | { - info: string; + docsUrl: string; + docsLabel?: string; requestMethod: "GET" | "POST"; endpointPath: string; endpointPathParams: string; @@ -37,7 +38,9 @@ export const EXPLORE_ENDPOINTS_PAGES_HORIZON: ExploreEndpointsPagesProps = { route: Routes.EXPLORE_ENDPOINTS_ACCOUNTS, label: "All Accounts", form: { - info: "https://developers.stellar.org/docs/fundamentals-and-concepts/stellar-data-structures/accounts", + docsUrl: + "https://developers.stellar.org/network/horizon/resources/list-all-accounts", + docsLabel: "accounts", requestMethod: "GET", endpointPath: "/accounts", endpointPathParams: "", @@ -56,13 +59,15 @@ export const EXPLORE_ENDPOINTS_PAGES_HORIZON: ExploreEndpointsPagesProps = { route: Routes.EXPLORE_ENDPOINTS_ACCOUNTS_SINGLE, label: "Single Account", form: { - info: "https://developers.stellar.org/api/resources/accounts/single/", + docsUrl: + "https://developers.stellar.org/network/horizon/resources/retrieve-an-account", + docsLabel: "account", requestMethod: "GET", endpointPath: "/accounts", endpointPathParams: "account_id", endpointParams: "", requiredParams: "account_id", - isStreaming: false, + isStreaming: true, }, }, ], diff --git a/src/helpers/isValidUrl.ts b/src/helpers/isValidUrl.ts new file mode 100644 index 00000000..16efd51c --- /dev/null +++ b/src/helpers/isValidUrl.ts @@ -0,0 +1,8 @@ +export const isValidUrl = (url: string) => { + try { + new URL(url); + return true; + } catch (e) { + return false; + } +}; diff --git a/src/query/useExploreEndpoint.ts b/src/query/useExploreEndpoint.ts new file mode 100644 index 00000000..adbf77c9 --- /dev/null +++ b/src/query/useExploreEndpoint.ts @@ -0,0 +1,19 @@ +import { useQuery } from "@tanstack/react-query"; + +export const useExploreEndpoint = (requestUrl: string) => { + const query = useQuery({ + queryKey: ["exploreEndpoint", "response"], + queryFn: async () => { + const endpointResponse = await fetch(requestUrl); + const endpointResponseJson = await endpointResponse.json(); + + return { + isError: endpointResponseJson?.status?.toString()?.startsWith("4"), + json: endpointResponseJson, + }; + }, + enabled: false, + }); + + return query; +}; diff --git a/src/store/createStore.ts b/src/store/createStore.ts index 0a1a1b16..3731f440 100644 --- a/src/store/createStore.ts +++ b/src/store/createStore.ts @@ -25,7 +25,6 @@ export interface Store { network: Network | EmptyObj; currentEndpoint: string | undefined; params: AnyObject; - isStreaming: boolean; // eslint-disable-next-line no-unused-vars updateNetwork: (network: Network) => void; // eslint-disable-next-line no-unused-vars @@ -46,7 +45,6 @@ const initExploreEndpointState = { network: {}, currentEndpoint: undefined, params: {}, - isStreaming: false, }; // Store diff --git a/src/styles/globals.scss b/src/styles/globals.scss index 4491da7f..559c2bd9 100644 --- a/src/styles/globals.scss +++ b/src/styles/globals.scss @@ -290,6 +290,66 @@ // Pages // ============================================================================= +.PageHeader, +.PageFooter { + display: flex; + align-items: center; + justify-content: space-between; + gap: pxToRem(16px); +} + +.PageHeader { + .Link { + --Link-icon-size: pxToRem(14px); + font-size: pxToRem(14px); + font-weight: var(--sds-fw-semi-bold); + } +} + +.PageBody { + display: flex; + flex-direction: column; + gap: pxToRem(16px); + + &__title { + display: flex; + align-items: center; + gap: pxToRem(4px); + + &__icon { + display: block; + width: pxToREm(14px); + height: pxToREm(14px); + + svg { + display: block; + width: 100%; + height: 100%; + stroke: var(--sds-clr-red-09); + } + } + } + + &__content { + display: flex; + flex-direction: column; + gap: pxToRem(16px); + padding: pxToRem(16px); + background-color: var(--sds-clr-gray-03); + border-radius: pxToRem(8px); + + &--error { + border: 1px solid var(--sds-clr-red-06); + } + } + + &__scrollable { + max-width: 100%; + max-height: pxToRem(600px); + overflow: auto; + } +} + // Introduction .CardText { display: flex; @@ -342,15 +402,6 @@ display: flex; flex-direction: column; gap: pxToRem(12px); - - &__inputs { - display: flex; - flex-direction: column; - gap: pxToRem(16px); - padding: pxToRem(16px); - background-color: var(--sds-clr-gray-03); - border-radius: pxToRem(8px); - } } .Input--disabled { diff --git a/yarn.lock b/yarn.lock index b5eb5df1..a4ef60ea 100644 --- a/yarn.lock +++ b/yarn.lock @@ -97,69 +97,62 @@ wrap-ansi "^8.1.0" wrap-ansi-cjs "npm:wrap-ansi@^7.0.0" -"@next/env@14.1.0": - version "14.1.0" - resolved "https://registry.yarnpkg.com/@next/env/-/env-14.1.0.tgz#43d92ebb53bc0ae43dcc64fb4d418f8f17d7a341" - integrity sha512-Py8zIo+02ht82brwwhTg36iogzFqGLPXlRGKQw5s+qP/kMNc4MAyDeEwBKDijk6zTIbegEgu8Qy7C1LboslQAw== - -"@next/eslint-plugin-next@14.1.0": - version "14.1.0" - resolved "https://registry.yarnpkg.com/@next/eslint-plugin-next/-/eslint-plugin-next-14.1.0.tgz#29b041233fac7417e22eefa4146432d5cd910820" - integrity sha512-x4FavbNEeXx/baD/zC/SdrvkjSby8nBn8KcCREqk6UuwvwoAPZmaV8TFCAuo/cpovBRTIY67mHhe86MQQm/68Q== - dependencies: - glob "10.3.10" +"@next/env@14.1.4": + version "14.1.4" + resolved "https://registry.yarnpkg.com/@next/env/-/env-14.1.4.tgz#432e80651733fbd67230bf262aee28be65252674" + integrity sha512-e7X7bbn3Z6DWnDi75UWn+REgAbLEqxI8Tq2pkFOFAMpWAWApz/YCUhtWMWn410h8Q2fYiYL7Yg5OlxMOCfFjJQ== -"@next/eslint-plugin-next@^14.1.3": +"@next/eslint-plugin-next@14.1.4", "@next/eslint-plugin-next@^14.1.4": version "14.1.4" resolved "https://registry.yarnpkg.com/@next/eslint-plugin-next/-/eslint-plugin-next-14.1.4.tgz#d7372b5ffede0e466af8af2ff534386418827fc8" integrity sha512-n4zYNLSyCo0Ln5b7qxqQeQ34OZKXwgbdcx6kmkQbywr+0k6M3Vinft0T72R6CDAcDrne2IAgSud4uWCzFgc5HA== dependencies: glob "10.3.10" -"@next/swc-darwin-arm64@14.1.0": - version "14.1.0" - resolved "https://registry.yarnpkg.com/@next/swc-darwin-arm64/-/swc-darwin-arm64-14.1.0.tgz#70a57c87ab1ae5aa963a3ba0f4e59e18f4ecea39" - integrity sha512-nUDn7TOGcIeyQni6lZHfzNoo9S0euXnu0jhsbMOmMJUBfgsnESdjN97kM7cBqQxZa8L/bM9om/S5/1dzCrW6wQ== - -"@next/swc-darwin-x64@14.1.0": - version "14.1.0" - resolved "https://registry.yarnpkg.com/@next/swc-darwin-x64/-/swc-darwin-x64-14.1.0.tgz#0863a22feae1540e83c249384b539069fef054e9" - integrity sha512-1jgudN5haWxiAl3O1ljUS2GfupPmcftu2RYJqZiMJmmbBT5M1XDffjUtRUzP4W3cBHsrvkfOFdQ71hAreNQP6g== - -"@next/swc-linux-arm64-gnu@14.1.0": - version "14.1.0" - resolved "https://registry.yarnpkg.com/@next/swc-linux-arm64-gnu/-/swc-linux-arm64-gnu-14.1.0.tgz#893da533d3fce4aec7116fe772d4f9b95232423c" - integrity sha512-RHo7Tcj+jllXUbK7xk2NyIDod3YcCPDZxj1WLIYxd709BQ7WuRYl3OWUNG+WUfqeQBds6kvZYlc42NJJTNi4tQ== - -"@next/swc-linux-arm64-musl@14.1.0": - version "14.1.0" - resolved "https://registry.yarnpkg.com/@next/swc-linux-arm64-musl/-/swc-linux-arm64-musl-14.1.0.tgz#d81ddcf95916310b8b0e4ad32b637406564244c0" - integrity sha512-v6kP8sHYxjO8RwHmWMJSq7VZP2nYCkRVQ0qolh2l6xroe9QjbgV8siTbduED4u0hlk0+tjS6/Tuy4n5XCp+l6g== - -"@next/swc-linux-x64-gnu@14.1.0": - version "14.1.0" - resolved "https://registry.yarnpkg.com/@next/swc-linux-x64-gnu/-/swc-linux-x64-gnu-14.1.0.tgz#18967f100ec19938354332dcb0268393cbacf581" - integrity sha512-zJ2pnoFYB1F4vmEVlb/eSe+VH679zT1VdXlZKX+pE66grOgjmKJHKacf82g/sWE4MQ4Rk2FMBCRnX+l6/TVYzQ== - -"@next/swc-linux-x64-musl@14.1.0": - version "14.1.0" - resolved "https://registry.yarnpkg.com/@next/swc-linux-x64-musl/-/swc-linux-x64-musl-14.1.0.tgz#77077cd4ba8dda8f349dc7ceb6230e68ee3293cf" - integrity sha512-rbaIYFt2X9YZBSbH/CwGAjbBG2/MrACCVu2X0+kSykHzHnYH5FjHxwXLkcoJ10cX0aWCEynpu+rP76x0914atg== - -"@next/swc-win32-arm64-msvc@14.1.0": - version "14.1.0" - resolved "https://registry.yarnpkg.com/@next/swc-win32-arm64-msvc/-/swc-win32-arm64-msvc-14.1.0.tgz#5f0b8cf955644104621e6d7cc923cad3a4c5365a" - integrity sha512-o1N5TsYc8f/HpGt39OUQpQ9AKIGApd3QLueu7hXk//2xq5Z9OxmV6sQfNp8C7qYmiOlHYODOGqNNa0e9jvchGQ== - -"@next/swc-win32-ia32-msvc@14.1.0": - version "14.1.0" - resolved "https://registry.yarnpkg.com/@next/swc-win32-ia32-msvc/-/swc-win32-ia32-msvc-14.1.0.tgz#21f4de1293ac5e5a168a412b139db5d3420a89d0" - integrity sha512-XXIuB1DBRCFwNO6EEzCTMHT5pauwaSj4SWs7CYnME57eaReAKBXCnkUE80p/pAZcewm7hs+vGvNqDPacEXHVkw== - -"@next/swc-win32-x64-msvc@14.1.0": - version "14.1.0" - resolved "https://registry.yarnpkg.com/@next/swc-win32-x64-msvc/-/swc-win32-x64-msvc-14.1.0.tgz#e561fb330466d41807123d932b365cf3d33ceba2" - integrity sha512-9WEbVRRAqJ3YFVqEZIxUqkiO8l1nool1LmNxygr5HWF8AcSYsEpneUDhmjUVJEzO2A04+oPtZdombzzPPkTtgg== +"@next/swc-darwin-arm64@14.1.4": + version "14.1.4" + resolved "https://registry.yarnpkg.com/@next/swc-darwin-arm64/-/swc-darwin-arm64-14.1.4.tgz#a3bca0dc4393ac4cf3169bbf24df63441de66bb7" + integrity sha512-ubmUkbmW65nIAOmoxT1IROZdmmJMmdYvXIe8211send9ZYJu+SqxSnJM4TrPj9wmL6g9Atvj0S/2cFmMSS99jg== + +"@next/swc-darwin-x64@14.1.4": + version "14.1.4" + resolved "https://registry.yarnpkg.com/@next/swc-darwin-x64/-/swc-darwin-x64-14.1.4.tgz#ba3683d4e2d30099f3f2864dd7349a4d9f440140" + integrity sha512-b0Xo1ELj3u7IkZWAKcJPJEhBop117U78l70nfoQGo4xUSvv0PJSTaV4U9xQBLvZlnjsYkc8RwQN1HoH/oQmLlQ== + +"@next/swc-linux-arm64-gnu@14.1.4": + version "14.1.4" + resolved "https://registry.yarnpkg.com/@next/swc-linux-arm64-gnu/-/swc-linux-arm64-gnu-14.1.4.tgz#3519969293f16379954b7e196deb0c1eecbb2f8b" + integrity sha512-457G0hcLrdYA/u1O2XkRMsDKId5VKe3uKPvrKVOyuARa6nXrdhJOOYU9hkKKyQTMru1B8qEP78IAhf/1XnVqKA== + +"@next/swc-linux-arm64-musl@14.1.4": + version "14.1.4" + resolved "https://registry.yarnpkg.com/@next/swc-linux-arm64-musl/-/swc-linux-arm64-musl-14.1.4.tgz#4bb3196bd402b3f84cf5373ff1021f547264d62f" + integrity sha512-l/kMG+z6MB+fKA9KdtyprkTQ1ihlJcBh66cf0HvqGP+rXBbOXX0dpJatjZbHeunvEHoBBS69GYQG5ry78JMy3g== + +"@next/swc-linux-x64-gnu@14.1.4": + version "14.1.4" + resolved "https://registry.yarnpkg.com/@next/swc-linux-x64-gnu/-/swc-linux-x64-gnu-14.1.4.tgz#1b3372c98c83dcdab946cdb4ee06e068b8139ba3" + integrity sha512-BapIFZ3ZRnvQ1uWbmqEGJuPT9cgLwvKtxhK/L2t4QYO7l+/DxXuIGjvp1x8rvfa/x1FFSsipERZK70pewbtJtw== + +"@next/swc-linux-x64-musl@14.1.4": + version "14.1.4" + resolved "https://registry.yarnpkg.com/@next/swc-linux-x64-musl/-/swc-linux-x64-musl-14.1.4.tgz#8459088bdc872648ff78f121db596f2533df5808" + integrity sha512-mqVxTwk4XuBl49qn2A5UmzFImoL1iLm0KQQwtdRJRKl21ylQwwGCxJtIYo2rbfkZHoSKlh/YgztY0qH3wG1xIg== + +"@next/swc-win32-arm64-msvc@14.1.4": + version "14.1.4" + resolved "https://registry.yarnpkg.com/@next/swc-win32-arm64-msvc/-/swc-win32-arm64-msvc-14.1.4.tgz#84280a08c00cc3be24ddd3a12f4617b108e6dea6" + integrity sha512-xzxF4ErcumXjO2Pvg/wVGrtr9QQJLk3IyQX1ddAC/fi6/5jZCZ9xpuL9Tzc4KPWMFq8GGWFVDMshZOdHGdkvag== + +"@next/swc-win32-ia32-msvc@14.1.4": + version "14.1.4" + resolved "https://registry.yarnpkg.com/@next/swc-win32-ia32-msvc/-/swc-win32-ia32-msvc-14.1.4.tgz#23ff7f4bd0a27177428669ef6fa5c3923c738031" + integrity sha512-WZiz8OdbkpRw6/IU/lredZWKKZopUMhcI2F+XiMAcPja0uZYdMTZQRoQ0WZcvinn9xZAidimE7tN9W5v9Yyfyw== + +"@next/swc-win32-x64-msvc@14.1.4": + version "14.1.4" + resolved "https://registry.yarnpkg.com/@next/swc-win32-x64-msvc/-/swc-win32-x64-msvc-14.1.4.tgz#bccf5beccfde66d6c66fa4e2509118c796385eda" + integrity sha512-4Rto21sPfw555sZ/XNLqfxDUNeLhNYGO2dlPqsnuCg8N8a2a9u1ltqBOPQ4vj1Gf7eJC0W2hHG2eYUHuiXgY2w== "@nodelib/fs.scandir@2.1.5": version "2.1.5" @@ -187,7 +180,7 @@ resolved "https://registry.yarnpkg.com/@pkgjs/parseargs/-/parseargs-0.11.0.tgz#a77ea742fab25775145434eb1d2328cf5013ac33" integrity sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg== -"@playwright/test@^1.42.0": +"@playwright/test@^1.42.1": version "1.42.1" resolved "https://registry.yarnpkg.com/@playwright/test/-/test-1.42.1.tgz#9eff7417bcaa770e9e9a00439e078284b301f31c" integrity sha512-Gq9rmS54mjBL/7/MvBaNOBwbfnh7beHvS6oS4srqXFcQHpQCV1+c8JXWE8VLPyRDhgS3H8x8A7hztqI9VnwrAQ== @@ -199,7 +192,7 @@ resolved "https://registry.yarnpkg.com/@rushstack/eslint-patch/-/eslint-patch-1.8.0.tgz#c5545e6a5d2bd5c26b4021c357177a28698c950e" integrity sha512-0HejFckBN2W+ucM6cUOlwsByTKt9/+0tWhqUffNIcHqCXkthY/mZ7AuYPK/2IIaGWhdl0h+tICDO0ssLMd6XMQ== -"@stellar/design-system@^2.0.0-beta.7": +"@stellar/design-system@^2.0.0-beta.8": version "2.0.0-beta.8" resolved "https://registry.yarnpkg.com/@stellar/design-system/-/design-system-2.0.0-beta.8.tgz#462759beb8ca1497d44b78043e2cd6a0ef3fbd7a" integrity sha512-ZPn1frWylT7lYYZJK8OtLbsXX2S8I1spyRBWmUrekaPvrDrrpYOUepWj8ZSC5NNWjR8Kbb5QnfV1wc8YYaCQ0A== @@ -249,29 +242,29 @@ dependencies: tslib "^2.4.0" -"@tanstack/query-core@5.28.8": - version "5.28.8" - resolved "https://registry.yarnpkg.com/@tanstack/query-core/-/query-core-5.28.8.tgz#48571172ed2d70fc0eae7004ccf445ad4e8b0558" - integrity sha512-cx64XHeB0kvKxFt22ibvegPeOxnaWVFUbAuhXoIrb7+XePEexHWoB9Kq5n9qroNPkRwQZwgFAP9HNbQz5ohoIg== +"@tanstack/query-core@5.28.9": + version "5.28.9" + resolved "https://registry.yarnpkg.com/@tanstack/query-core/-/query-core-5.28.9.tgz#170a7a8794ab73aeffbaf711ac62126479a5d026" + integrity sha512-hNlfCiqZevr3GRVPXS3MhaGW5hjcxvCsIQ4q6ff7EPlvFwYZaS+0d9EIIgofnegDaU2BbCDlyURoYfRl5rmzow== -"@tanstack/query-devtools@5.28.6": - version "5.28.6" - resolved "https://registry.yarnpkg.com/@tanstack/query-devtools/-/query-devtools-5.28.6.tgz#da31268b79102e6fd8d6df64763ec9c02d84bd58" - integrity sha512-DXJGqbrsteWU9XehDf6s3k3QxwQqGUlNXpitsF1xbwkYBcDaAakiC6hjJSMfPBHOrbZCnWfAGCVf4vh2D75/xw== +"@tanstack/query-devtools@5.28.10": + version "5.28.10" + resolved "https://registry.yarnpkg.com/@tanstack/query-devtools/-/query-devtools-5.28.10.tgz#33e9a42dd2199fca12f0dd2d891570ecdbfd3c7b" + integrity sha512-5UN629fKa5/1K/2Pd26gaU7epxRrYiT1gy+V+pW5K6hnf1DeUKK3pANSb2eHKlecjIKIhTwyF7k9XdyE2gREvQ== -"@tanstack/react-query-devtools@^5.24.1": - version "5.28.8" - resolved "https://registry.yarnpkg.com/@tanstack/react-query-devtools/-/react-query-devtools-5.28.8.tgz#d9299198144de6f1b9feb04a27eaebd4a14db638" - integrity sha512-NorR2ueGlGdB5PTvt1WynzjfNI/OJwiisB1r0UAwgi0Em2UalZpMltwvoIrGhJ0T2V+8b0MV5wD+cmf0PPdHGA== +"@tanstack/react-query-devtools@^5.28.8": + version "5.28.10" + resolved "https://registry.yarnpkg.com/@tanstack/react-query-devtools/-/react-query-devtools-5.28.10.tgz#0b968b93e301a696d06dc44198d39aac95e8c5b9" + integrity sha512-D+SiHZTWhK2sNgBYj+xIvUOqonsKy74OLU/YHmRB5OZVLLTiekvZd12C3rKlU+WM69jid0hjEjuFqkULOMwc3A== dependencies: - "@tanstack/query-devtools" "5.28.6" + "@tanstack/query-devtools" "5.28.10" -"@tanstack/react-query@^5.24.1": - version "5.28.8" - resolved "https://registry.yarnpkg.com/@tanstack/react-query/-/react-query-5.28.8.tgz#8afc45057f0d8f0b9ba78093e749dc3b4ee5a7a4" - integrity sha512-4XYhoRmcThqziB32HsyiBLNXJcukaeGfYwAQ+fZqUUE3ZP4oB/Zy41UJdql+TUg98+vsezfbixxAwAbGHfc5Hg== +"@tanstack/react-query@^5.28.8": + version "5.28.9" + resolved "https://registry.yarnpkg.com/@tanstack/react-query/-/react-query-5.28.9.tgz#13c2049daa5db6c3137473e279b209f76d39708e" + integrity sha512-vwifBkGXsydsLxFOBMe3+f8kvtDoqDRDwUNjPHVDDt+FoBetCbOWAUHgZn4k+CVeZgLmy7bx6aKeDbe3e8koOQ== dependencies: - "@tanstack/query-core" "5.28.8" + "@tanstack/query-core" "5.28.9" "@types/dompurify@^3.0.5": version "3.0.5" @@ -285,7 +278,7 @@ resolved "https://registry.yarnpkg.com/@types/json5/-/json5-0.0.29.tgz#ee28707ae94e11d2b827bcbe5270bcea7f3e71ee" integrity sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ== -"@types/node@^20.11.23": +"@types/node@^20.11.30": version "20.11.30" resolved "https://registry.yarnpkg.com/@types/node/-/node-20.11.30.tgz#9c33467fc23167a347e73834f788f4b9f399d66f" integrity sha512-dHM6ZxwlmuZaRmUPfv1p+KrdD1Dci04FbdEm/9wEMouFqxYoFl5aMkt0VMAUtYRQDyYvD41WJLukhq/ha3YuTw== @@ -297,27 +290,21 @@ resolved "https://registry.yarnpkg.com/@types/prop-types/-/prop-types-15.7.12.tgz#12bb1e2be27293c1406acb6af1c3f3a1481d98c6" integrity sha512-5zvhXYtRNRluoE/jAp4GVsSduVUzNWKkOZrCDBWYtE7biZywwdC2AcEzg+cSMLFRfVgeAFqpfNabiPjxFddV1Q== -"@types/react-dom@^18.2.19": +"@types/react-dom@^18.2.22": version "18.2.22" resolved "https://registry.yarnpkg.com/@types/react-dom/-/react-dom-18.2.22.tgz#d332febf0815403de6da8a97e5fe282cbe609bae" integrity sha512-fHkBXPeNtfvri6gdsMYyW+dW7RXFo6Ad09nLFK0VQWR7yGLai/Cyvyj696gbwYvBnhGtevUG9cET0pmUbMtoPQ== dependencies: "@types/react" "*" -"@types/react@*", "@types/react@^18.2.61": - version "18.2.70" - resolved "https://registry.yarnpkg.com/@types/react/-/react-18.2.70.tgz#89a37f9e0a6a4931f4259c598f40fd44dd6abf71" - integrity sha512-hjlM2hho2vqklPhopNkXkdkeq6Lv8WSZTpr7956zY+3WS5cfYUewtCzsJLsbW5dEv3lfSeQ4W14ZFeKC437JRQ== +"@types/react@*", "@types/react@^18.2.71": + version "18.2.73" + resolved "https://registry.yarnpkg.com/@types/react/-/react-18.2.73.tgz#0579548ad122660d99e00499d22e33b81e73ed94" + integrity sha512-XcGdod0Jjv84HOC7N5ziY3x+qL0AfmubvKOZ9hJjJ2yd5EE+KYjWhdOjt387e9HPheHkdggF9atTifMRtyAaRA== dependencies: "@types/prop-types" "*" - "@types/scheduler" "*" csstype "^3.0.2" -"@types/scheduler@*": - version "0.16.8" - resolved "https://registry.yarnpkg.com/@types/scheduler/-/scheduler-0.16.8.tgz#ce5ace04cfeabe7ef87c0091e50752e36707deff" - integrity sha512-WZLiwShhwLRmeV6zH+GkbOFT6Z6VklCItrDioxUnv+u4Ll+8vKeFySoFyK/0ctcRpOmwAicELfmys1sDc/Rw+A== - "@types/trusted-types@*": version "2.0.7" resolved "https://registry.yarnpkg.com/@types/trusted-types/-/trusted-types-2.0.7.tgz#baccb07a970b91707df3a3e8ba6896c57ead2d11" @@ -921,7 +908,7 @@ domhandler@5.0.3, domhandler@^5.0.2, domhandler@^5.0.3: dependencies: domelementtype "^2.3.0" -dompurify@^3.0.9: +dompurify@^3.0.11: version "3.0.11" resolved "https://registry.yarnpkg.com/dompurify/-/dompurify-3.0.11.tgz#c163f5816eaac6aeef35dae2b77fca0504564efe" integrity sha512-Fan4uMuyB26gFV3ovPoEoQbxRRPfTu3CvImyZnhGq5fsIEO+gEFLp45ISFt+kQBWsK5ulDdT0oV28jS1UrwQLg== @@ -1094,12 +1081,12 @@ escape-string-regexp@^4.0.0: resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz#14ba83a5d373e3d311e5afca29cf5bfad965bf34" integrity sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA== -eslint-config-next@14.1.0: - version "14.1.0" - resolved "https://registry.yarnpkg.com/eslint-config-next/-/eslint-config-next-14.1.0.tgz#7e309d426b8afacaba3b32fdbb02ba220b6d0a97" - integrity sha512-SBX2ed7DoRFXC6CQSLc/SbLY9Ut6HxNB2wPTcoIWjUMd7aF7O/SIE7111L8FdZ9TXsNV4pulUDnfthpyPtbFUg== +eslint-config-next@14.1.4: + version "14.1.4" + resolved "https://registry.yarnpkg.com/eslint-config-next/-/eslint-config-next-14.1.4.tgz#22f2ba4c0993e991249d863656a64c204bae542c" + integrity sha512-cihIahbhYAWwXJwZkAaRPpUi5t9aOi/HdfWXOjZeUOqNWXHD8X22kd1KG58Dc3MVaRx3HoR/oMGk2ltcrqDn8g== dependencies: - "@next/eslint-plugin-next" "14.1.0" + "@next/eslint-plugin-next" "14.1.4" "@rushstack/eslint-patch" "^1.3.3" "@typescript-eslint/parser" "^5.4.2 || ^6.0.0" eslint-import-resolver-node "^0.3.6" @@ -1636,7 +1623,7 @@ html-dom-parser@5.0.8: domhandler "5.0.3" htmlparser2 "9.1.0" -html-react-parser@^5.1.8: +html-react-parser@^5.1.9: version "5.1.9" resolved "https://registry.yarnpkg.com/html-react-parser/-/html-react-parser-5.1.9.tgz#7a8eb3a0b243bddf68f1a77bba5e423933b64161" integrity sha512-MP0MQDEGlzkJT0OwY//tKYrgIzBM1frYLxx9RF7ALdIjI+MCMumydcNovXDX4X/iDi1zfgaU28VxoNXZn7EPjQ== @@ -1676,7 +1663,7 @@ ignore@^5.2.0: resolved "https://registry.yarnpkg.com/ignore/-/ignore-5.3.1.tgz#5073e554cd42c5b33b394375f538b8593e34d4ef" integrity sha512-5Fytz/IraMjqpwfd34ke28PTVMjZjJG2MPn5t7OE4eUCUNf8BAa7b5WUS9/Qvr6mwOQS7Mk6vdsMno5he+T8Xw== -immer@^10.0.3: +immer@^10.0.4: version "10.0.4" resolved "https://registry.yarnpkg.com/immer/-/immer-10.0.4.tgz#09af41477236b99449f9d705369a4daaf780362b" integrity sha512-cuBuGK40P/sk5IzWa9QPUaAdvPHjkk1c+xYsd9oZw+YQQEV+10G0P5uMpGctZZKnyQ+ibRO08bD25nWLmYi2pw== @@ -2195,12 +2182,12 @@ natural-compare@^1.4.0: resolved "https://registry.yarnpkg.com/natural-compare/-/natural-compare-1.4.0.tgz#4abebfeed7541f2c27acfb29bdbbd15c8d5ba4f7" integrity sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw== -next@14.1.0: - version "14.1.0" - resolved "https://registry.yarnpkg.com/next/-/next-14.1.0.tgz#b31c0261ff9caa6b4a17c5af019ed77387174b69" - integrity sha512-wlzrsbfeSU48YQBjZhDzOwhWhGsy+uQycR8bHAOt1LY1bn3zZEcDyHQOEoN3aWzQ8LHCAJ1nqrWCc9XF2+O45Q== +next@14.1.4: + version "14.1.4" + resolved "https://registry.yarnpkg.com/next/-/next-14.1.4.tgz#203310f7310578563fd5c961f0db4729ce7a502d" + integrity sha512-1WTaXeSrUwlz/XcnhGTY7+8eiaFvdet5z9u3V2jb+Ek1vFo0VhHKSAIJvDWfQpttWjnyw14kBeq28TPq7bTeEQ== dependencies: - "@next/env" "14.1.0" + "@next/env" "14.1.4" "@swc/helpers" "0.5.2" busboy "1.6.0" caniuse-lite "^1.0.30001579" @@ -2208,15 +2195,15 @@ next@14.1.0: postcss "8.4.31" styled-jsx "5.1.1" optionalDependencies: - "@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" + "@next/swc-darwin-arm64" "14.1.4" + "@next/swc-darwin-x64" "14.1.4" + "@next/swc-linux-arm64-gnu" "14.1.4" + "@next/swc-linux-arm64-musl" "14.1.4" + "@next/swc-linux-x64-gnu" "14.1.4" + "@next/swc-linux-x64-musl" "14.1.4" + "@next/swc-win32-arm64-msvc" "14.1.4" + "@next/swc-win32-ia32-msvc" "14.1.4" + "@next/swc-win32-x64-msvc" "14.1.4" node-gyp-build@^4.8.0: version "4.8.0" @@ -2646,7 +2633,7 @@ safe-regex-test@^1.0.3: es-errors "^1.3.0" is-regex "^1.1.4" -sass@^1.71.1: +sass@^1.72.0: version "1.72.0" resolved "https://registry.yarnpkg.com/sass/-/sass-1.72.0.tgz#5b9978943fcfb32b25a6a5acb102fc9dabbbf41c" integrity sha512-Gpczt3WA56Ly0Mn8Sl21Vj94s1axi9hDIzDFn9Ph9x3C3p4nNyvsqJoQyVXKou6cBlfFWEgRW4rT8Tb4i3XnVA== @@ -2790,7 +2777,6 @@ string-argv@0.3.2: integrity sha512-aqD2Q0144Z+/RqG52NeHEkZauTAUWJO8c6yTftGJKO3Tja5tUgIfmIl6kExvhtxSDP7fXB6DvzkfMpCd/F3G+Q== "string-width-cjs@npm:string-width@^4.2.0", string-width@^4.1.0, string-width@^4.2.0, string-width@^4.2.3: - name string-width-cjs version "4.2.3" resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.2.3.tgz#269c7117d27b05ad2e536830a8ec895ef9c6d010" integrity sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g== @@ -2864,7 +2850,6 @@ string.prototype.trimstart@^1.0.7: es-object-atoms "^1.0.0" "strip-ansi-cjs@npm:strip-ansi@^6.0.1", strip-ansi@^6.0.0, strip-ansi@^6.0.1: - name strip-ansi-cjs version "6.0.1" resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.1.tgz#9e26c63d30f53443e9489495b2105d37b67a85d9" integrity sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A== @@ -3046,7 +3031,7 @@ typed-array-length@^1.0.5: is-typed-array "^1.1.13" possible-typed-array-names "^1.0.0" -typescript@^5: +typescript@^5.4.3: version "5.4.3" resolved "https://registry.yarnpkg.com/typescript/-/typescript-5.4.3.tgz#5c6fedd4c87bee01cd7a528a30145521f8e0feff" integrity sha512-KrPd3PKaCLr78MalgiwJnA25Nm8HAmdwN3mYUYZgG/wizIo9EainNVQI9/yDavtVFRN2h3k8uf3GLHuhDMgEHg== @@ -3141,7 +3126,6 @@ which@^2.0.1: isexe "^2.0.0" "wrap-ansi-cjs@npm:wrap-ansi@^7.0.0", wrap-ansi@^7.0.0: - name wrap-ansi-cjs version "7.0.0" resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-7.0.0.tgz#67e145cff510a6a6984bdf1152911d69d2eb9e43" integrity sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q== @@ -3218,7 +3202,7 @@ zustand-querystring@^0.0.19: dependencies: lodash-es "^4.17.21" -zustand@^4.5.1: +zustand@^4.5.2: version "4.5.2" resolved "https://registry.yarnpkg.com/zustand/-/zustand-4.5.2.tgz#fddbe7cac1e71d45413b3682cdb47b48034c3848" integrity sha512-2cN1tPkDVkwCy5ickKrI7vijSjPksFRfqS6237NzT0vqSsztTNnQdHw9mmN7uBdk3gceVXU0a+21jFzFzAc9+g==