Peter Makowski has proposed merging ~petermakowski/maas-site-manager:list-backend-integration-MAASENG-1388 into maas-site-manager:main.
Commit message: feat: backend integration, add pagination MAASENG-1388 - display regions in singular or plural format - update to use @tanstack/react-query - add siteFactory, createMockSitesResolver - add chance, fishery, i18n-iso-countries, unique-names-generator, plural Requested reviews: MAAS Committers (maas-committers) For more details, see: https://code.launchpad.net/~petermakowski/maas-site-manager/+git/site-manager/+merge/438203 feat: add pagination - update to use @tanstack/react-query feat: display regions in singular or plural format - add siteFactory, createMockSitesResolver - add chance, fishery, i18n-iso-countries, unique-names-generator, plural -- Your team MAAS Committers is requested to review the proposed merge of ~petermakowski/maas-site-manager:list-backend-integration-MAASENG-1388 into maas-site-manager:main.
diff --git a/frontend/package.json b/frontend/package.json index 1991368..5e953c9 100644 --- a/frontend/package.json +++ b/frontend/package.json @@ -13,15 +13,16 @@ }, "dependencies": { "@canonical/react-components": "0.38.0", + "@tanstack/react-query": "4.24.10", "@tanstack/react-table": "8.7.9", "axios": "1.3.4", "classnames": "2.3.2", "date-fns": "2.29.3", "date-fns-tz": "2.0.0", "lodash": "4.17.21", + "pluralize": "8.0.0", "react": "18.2.0", "react-dom": "18.2.0", - "react-query": "3.39.3", "react-router-dom": "6.8.1", "use-local-storage-state": "18.1.2", "vanilla-framework": "3.11.0" @@ -31,10 +32,13 @@ "@testing-library/jest-dom": "5.16.5", "@testing-library/react": "13.4.0", "@types/axios": "0.14.0", + "@types/chance": "1.1.3", "@types/lodash": "4.14.191", + "@types/pluralize": "0.0.29", "@types/react": "18.0.27", "@types/react-dom": "18.0.10", "@vitejs/plugin-react-swc": "3.0.0", + "chance": "1.1.10", "dotenv": "16.0.3", "eslint": "8.35.0", "eslint-config-prettier": "8.6.0", @@ -44,6 +48,8 @@ "eslint-plugin-no-only-tests": "3.1.0", "eslint-plugin-prettier": "4.2.1", "eslint-plugin-react": "7.32.2", + "fishery": "2.2.2", + "i18n-iso-countries": "7.5.0", "mockdate": "3.0.5", "msw": "1.0.1", "npm-package-json-lint": "6.4.0", @@ -51,6 +57,7 @@ "sass": "1.58.1", "timezone-mock": "1.3.6", "typescript": "4.9.3", + "unique-names-generator": "4.7.1", "vite": "4.1.0", "vitest": "0.28.5" }, diff --git a/frontend/src/App.tsx b/frontend/src/App.tsx index 9607ac4..4db42f0 100644 --- a/frontend/src/App.tsx +++ b/frontend/src/App.tsx @@ -1,5 +1,5 @@ import "./App.scss"; -import { QueryClient, QueryClientProvider } from "react-query"; +import { QueryClient, QueryClientProvider } from "@tanstack/react-query"; import { RouterProvider } from "react-router-dom"; import router from "./router"; diff --git a/frontend/src/api/handlers.ts b/frontend/src/api/handlers.ts index f9b605f..9eff927 100644 --- a/frontend/src/api/handlers.ts +++ b/frontend/src/api/handlers.ts @@ -1,9 +1,14 @@ import api from "./api"; import urls from "./urls"; -export const getSites = async () => { +export type GetSitesQueryParams = { + page: string; + size: string; +}; + +export const getSites = async (params: GetSitesQueryParams) => { try { - const response = await api.get(urls.sites); + const response = await api.get(urls.sites, { params }); return response.data; } catch (error) { // eslint-disable-next-line no-console diff --git a/frontend/src/api/types.ts b/frontend/src/api/types.ts index 5314e6f..9d459e3 100644 --- a/frontend/src/api/types.ts +++ b/frontend/src/api/types.ts @@ -1,7 +1,8 @@ export type Site = { + identifier: number; name: string; url: string; // <full URL including protocol>, - connection: "stable" | "stale" | "lost"; + connection: "stable" | "unstable" | "stale" | "lost"; last_seen: string; // <ISO 8601 date>, address: { countrycode: string; // <alpha2 country code>, diff --git a/frontend/src/components/SitesList/SitesList.test.tsx b/frontend/src/components/SitesList/SitesList.test.tsx index b944366..868a683 100644 --- a/frontend/src/components/SitesList/SitesList.test.tsx +++ b/frontend/src/components/SitesList/SitesList.test.tsx @@ -1,12 +1,13 @@ import urls from "../../api/urls"; -import { sites } from "../../mocks/factories"; +import { siteFactory } from "../../mocks/factories"; +import { createMockSitesResolver } from "../../mocks/resolvers"; import { createMockGetServer } from "../../mocks/server"; import { render, screen, waitFor, within } from "../../test-utils"; import SitesList from "./SitesList"; -const sitesData = sites(); -const mockServer = createMockGetServer(urls.sites, sitesData); +const sites = siteFactory.buildList(2); +const mockServer = createMockGetServer(urls.sites, createMockSitesResolver(sites)); beforeAll(() => { mockServer.listen(); @@ -31,16 +32,14 @@ it("displays loading text", () => { }); it("displays populated sites table", async () => { - const { items } = sitesData; render(<SitesList />); await waitFor(() => expect(screen.getByRole("table", { name: /sites/i })).toBeInTheDocument()); expect(screen.getAllByRole("rowgroup")).toHaveLength(2); - expect(screen.getByRole("heading", { name: /2 MAAS Regions/i })).toBeInTheDocument(); const tableBody = screen.getAllByRole("rowgroup")[1]; - expect(within(tableBody).getAllByRole("row")).toHaveLength(items.length); + expect(within(tableBody).getAllByRole("row")).toHaveLength(sites.length); within(tableBody) .getAllByRole("row") - .forEach((row, i) => expect(row).toHaveTextContent(new RegExp(items[i].name, "i"))); + .forEach((row, i) => expect(row).toHaveTextContent(new RegExp(sites[i].name, "i"))); }); diff --git a/frontend/src/components/SitesList/SitesList.tsx b/frontend/src/components/SitesList/SitesList.tsx index 682c17a..1b520ea 100644 --- a/frontend/src/components/SitesList/SitesList.tsx +++ b/frontend/src/components/SitesList/SitesList.tsx @@ -1,13 +1,30 @@ +import { useState } from "react"; + +import { Pagination } from "@canonical/react-components"; + import { useSitesQuery } from "../../hooks/api"; import SitesTable from "./components/SitesTable"; +const DEFAULT_PAGE_SIZE = 50; + const SitesList = () => { - const { data, isLoading, isFetchedAfterMount } = useSitesQuery(); + const [page, setPage] = useState(0); + const [size] = useState(DEFAULT_PAGE_SIZE); + const { data, isLoading, isFetchedAfterMount } = useSitesQuery({ page: `${page}`, size: `${size}` }); return ( <div> <SitesTable data={data} isFetchedAfterMount={isFetchedAfterMount} isLoading={isLoading} /> + <Pagination + currentPage={page + 1} + disabled={isLoading} + itemsPerPage={size} + paginate={(page) => { + setPage(page - 1); + }} + totalItems={data?.total || 0} + /> </div> ); }; diff --git a/frontend/src/components/SitesList/components/SitesCount.test.tsx b/frontend/src/components/SitesList/components/SitesCount.test.tsx new file mode 100644 index 0000000..defa9e4 --- /dev/null +++ b/frontend/src/components/SitesList/components/SitesCount.test.tsx @@ -0,0 +1,20 @@ +import { siteFactory } from "../../../mocks/factories"; +import { render, screen } from "../../../test-utils"; + +import SitesCount from "./SitesCount"; + +it("displays plural sites count", () => { + const total = 11; + const items = siteFactory.buildList(total); + render(<SitesCount data={{ items, total, page: 1, size: 1 }} isLoading={false} />); + + expect(screen.getByText("11 MAAS regions")).toBeInTheDocument(); +}); + +it("displays singular sites count", () => { + const total = 1; + const items = siteFactory.buildList(total); + render(<SitesCount data={{ items, total, page: 1, size: 1 }} isLoading={false} />); + + expect(screen.getByText("1 MAAS region")).toBeInTheDocument(); +}); diff --git a/frontend/src/components/SitesList/components/SitesCount.tsx b/frontend/src/components/SitesList/components/SitesCount.tsx new file mode 100644 index 0000000..431dacf --- /dev/null +++ b/frontend/src/components/SitesList/components/SitesCount.tsx @@ -0,0 +1,13 @@ +import pluralize from "pluralize"; + +import type { UseSitesQueryResult } from "../../../hooks/api"; +import Placeholder from "../../Placeholder"; + +const SitesCount = ({ data, isLoading }: Pick<UseSitesQueryResult, "data" | "isLoading">) => + isLoading ? ( + <Placeholder isLoading={isLoading} text="xx" /> + ) : ( + <span>{`${pluralize("MAAS regions", data?.total || 0, !!data?.total)}`}</span> + ); + +export default SitesCount; diff --git a/frontend/src/components/SitesList/components/SitesTable.test.tsx b/frontend/src/components/SitesList/components/SitesTable.test.tsx index 38fce0d..b10ce66 100644 --- a/frontend/src/components/SitesList/components/SitesTable.test.tsx +++ b/frontend/src/components/SitesList/components/SitesTable.test.tsx @@ -1,8 +1,7 @@ import timezoneMock from "timezone-mock"; import { vi } from "vitest"; -import type { Site } from "../../../api/types"; -import { sites, site } from "../../../mocks/factories"; +import { siteFactory } from "../../../mocks/factories"; import { render, screen, within } from "../../../test-utils"; import SitesTable from "./SitesTable"; @@ -24,7 +23,7 @@ it("displays an empty sites table", () => { }); it("displays rows with details for each site", () => { - const items = sites().items as Site[]; + const items = siteFactory.buildList(1); render(<SitesTable data={{ items, total: 1, page: 1, size: 1 }} isFetchedAfterMount={true} isLoading={false} />); expect(screen.getByRole("table", { name: /sites/i })).toBeInTheDocument(); @@ -40,7 +39,7 @@ it("displays correct local time", () => { const date = new Date("2000-01-01T12:00:00Z"); vi.setSystemTime(date); - const item = site({ timezone: "CET" }); + const item = siteFactory.build({ timezone: "CET" }); render( <SitesTable data={{ items: [item], total: 1, page: 1, size: 1 }} isFetchedAfterMount={true} isLoading={false} />, ); @@ -48,3 +47,12 @@ it("displays correct local time", () => { expect(screen.getByRole("table", { name: /sites/i })).toBeInTheDocument(); expect(screen.getByText(/13:00 \(local time\)/i)).toBeInTheDocument(); }); + +it("displays full name of the country", () => { + const item = siteFactory.build({ address: { countrycode: "UK" } }); + render( + <SitesTable data={{ items: [item], total: 1, page: 1, size: 1 }} isFetchedAfterMount={true} isLoading={false} />, + ); + + expect(screen.getByText("United Kingdom")).toBeInTheDocument(); +}); diff --git a/frontend/src/components/SitesList/components/SitesTable.tsx b/frontend/src/components/SitesList/components/SitesTable.tsx index 7791887..1e12a93 100644 --- a/frontend/src/components/SitesList/components/SitesTable.tsx +++ b/frontend/src/components/SitesList/components/SitesTable.tsx @@ -16,6 +16,7 @@ import useLocalStorageState from "use-local-storage-state"; import type { SitesQueryResult } from "../../../api/types"; import type { UseSitesQueryResult } from "../../../hooks/api"; +import { getCountryName } from "../../../utils"; import "./SitesTable.scss"; import SitesTableControls from "./SitesTableControls"; @@ -114,7 +115,7 @@ const SitesTable = ({ const { countrycode, city, zip, street } = address || {}; return ( <> - <div>{countrycode}</div> + <div>{countrycode ? getCountryName(countrycode) : ""}</div> <div className="u-text--muted"> {street}, {city}, {zip} </div> diff --git a/frontend/src/components/SitesList/components/SitesTableControls.test.tsx b/frontend/src/components/SitesList/components/SitesTableControls.test.tsx new file mode 100644 index 0000000..b271bff --- /dev/null +++ b/frontend/src/components/SitesList/components/SitesTableControls.test.tsx @@ -0,0 +1,9 @@ +import { render, screen } from "../../../test-utils"; + +import SitesTableControls from "./SitesTableControls"; + +it("displays correct total number of sites", () => { + render(<SitesTableControls allColumns={[]} data={{ items: [], total: 3, page: 1, size: 0 }} isLoading={false} />); + + expect(screen.getByRole("heading", { name: /3 MAAS region/i })).toBeInTheDocument(); +}); diff --git a/frontend/src/components/SitesList/components/SitesTableControls.tsx b/frontend/src/components/SitesList/components/SitesTableControls.tsx index 076e506..b6ecd3b 100644 --- a/frontend/src/components/SitesList/components/SitesTableControls.tsx +++ b/frontend/src/components/SitesList/components/SitesTableControls.tsx @@ -1,14 +1,10 @@ import { Row, Col } from "@canonical/react-components"; import type { UseSitesQueryResult } from "../../../hooks/api"; -import Placeholder from "../../Placeholder"; import ColumnsVisibilityControl from "./ColumnsVisibilityControl"; import type { SitesColumn } from "./SitesTable"; -const SitesCount = ({ data, isLoading }: Pick<UseSitesQueryResult, "data" | "isLoading">) => - isLoading ? <Placeholder isLoading={isLoading} text="xx" /> : <span>{`${data?.items?.length || ""}`}</span>; - const SitesTableControls = ({ data, isLoading, @@ -18,7 +14,7 @@ const SitesTableControls = ({ <Row> <Col size={10}> <h2 className="p-heading--4"> - <SitesCount data={data} isLoading={isLoading} /> MAAS Regions + <SitesCount data={data} isLoading={isLoading} /> </h2> </Col> <Col size={2}> diff --git a/frontend/src/hooks/api.test.ts b/frontend/src/hooks/api.test.ts index a31acc2..736b168 100644 --- a/frontend/src/hooks/api.test.ts +++ b/frontend/src/hooks/api.test.ts @@ -1,14 +1,15 @@ import { renderHook, waitFor } from "@testing-library/react"; import urls from "../api/urls"; -import { sites } from "../mocks/factories"; +import { siteFactory } from "../mocks/factories"; +import { createMockSitesResolver } from "../mocks/resolvers"; import { createMockGetServer } from "../mocks/server"; import { Providers } from "../test-utils"; import { useSitesQuery } from "./api"; -const sitesData = sites(); -const mockServer = createMockGetServer(urls.sites, sitesData); +const sitesData = siteFactory.buildList(2); +const mockServer = createMockGetServer(urls.sites, createMockSitesResolver(sitesData)); beforeAll(() => { mockServer.listen(); @@ -21,9 +22,9 @@ afterAll(() => { }); it("should return sites", async () => { - const { result } = renderHook(() => useSitesQuery(), { wrapper: Providers }); + const { result } = renderHook(() => useSitesQuery({ page: "0", size: "2" }), { wrapper: Providers }); await waitFor(() => expect(result.current.isFetchedAfterMount).toBe(true)); - expect(result.current.data!.items).toEqual(sitesData.items); + expect(result.current.data!.items).toEqual(sitesData); }); diff --git a/frontend/src/hooks/api.ts b/frontend/src/hooks/api.ts index 71943b2..ccf0b4d 100644 --- a/frontend/src/hooks/api.ts +++ b/frontend/src/hooks/api.ts @@ -1,7 +1,14 @@ -import { useQuery } from "react-query"; +import { useQuery } from "@tanstack/react-query"; +import type { GetSitesQueryParams } from "../api/handlers"; import { getSites } from "../api/handlers"; import type { SitesQueryResult } from "../api/types"; -export const useSitesQuery = () => useQuery<SitesQueryResult>("/api/sites", getSites); export type UseSitesQueryResult = ReturnType<typeof useSitesQuery>; + +export const useSitesQuery = ({ page, size }: GetSitesQueryParams) => + useQuery<SitesQueryResult>({ + queryKey: ["sites", page, size], + queryFn: () => getSites({ page, size }), + keepPreviousData: true, + }); diff --git a/frontend/src/mocks/browser.ts b/frontend/src/mocks/browser.ts index cdc1e21..b2b9266 100644 --- a/frontend/src/mocks/browser.ts +++ b/frontend/src/mocks/browser.ts @@ -2,10 +2,6 @@ import { setupWorker, rest } from "msw"; import urls from "../api/urls"; -import { sites } from "./factories"; +import { createMockSitesResolver } from "./resolvers"; -export const worker = setupWorker( - rest.get(urls.sites, (_req, res, ctx) => { - return res(ctx.delay(), ctx.json(sites())); - }), -); +export const worker = setupWorker(rest.get(urls.sites, createMockSitesResolver())); diff --git a/frontend/src/mocks/factories.ts b/frontend/src/mocks/factories.ts index 18e6997..f12aa62 100644 --- a/frontend/src/mocks/factories.ts +++ b/frontend/src/mocks/factories.ts @@ -1,43 +1,41 @@ +import Chance from "chance"; +import { Factory } from "fishery"; +import { uniqueNamesGenerator, adjectives, colors, animals } from "unique-names-generator"; + import type { Site } from "../api/types"; -export const site = (site: Partial<Site> = {}): Site => ({ - name: "maas-example-region", - url: "http://maas.example.com", - connection: "stable", - last_seen: "2020-10-20T12:00:00Z", - address: { - countrycode: "DE", // <alpha2 country code>, - city: "Berlin", - zip: "10405", - street: "Prenzlauer Allee 132", - }, - timezone: "CET", // <three letter abbreviation>, - stats: { - machines: 300, - occupied_machines: 289, - ready_machines: 11, - error_machines: 0, - }, - ...site, -}); +const connections: Site["connection"][] = ["stable", "lost", "stale", "unstable"]; -export const sites = (sites = {}) => ({ - items: [ - site(), - site({ - name: "maas-shanghai", - url: "http://maas.shanghai.com", - address: { - countrycode: "CHN", - city: "Shanghai", - zip: "200000", - street: "Xinzhen Road 3", - }, - timezone: "CST", - }), - ], - total: 42, - page: 1, - size: 20, - ...sites, +export const siteFactory = Factory.define<Site>(({ sequence }) => { + const chance = new Chance(`maas-${sequence}`); + const name = uniqueNamesGenerator({ + dictionaries: [adjectives, colors, animals], + separator: "-", + length: 2, + seed: sequence, + }); + const connection = uniqueNamesGenerator({ + dictionaries: [connections], + seed: sequence, + }) as Site["connection"]; + return { + identifier: sequence, + name, + url: `http://${name}.${chance.tld()}`, + connection, + last_seen: new Date(chance.date({ year: 2023 })).toISOString(), + address: { + countrycode: chance.country(), // <alpha2 country code>, + city: chance.city(), + zip: chance.zip(), + street: chance.address(), + }, + timezone: "CET", // <three letter abbreviation>, + stats: { + machines: chance.integer({ min: 0, max: 1500 }), + occupied_machines: chance.integer({ min: 0, max: 500 }), + ready_machines: chance.integer({ min: 0, max: 500 }), + error_machines: chance.integer({ min: 0, max: 500 }), + }, + }; }); diff --git a/frontend/src/mocks/resolvers.ts b/frontend/src/mocks/resolvers.ts new file mode 100644 index 0000000..76207f7 --- /dev/null +++ b/frontend/src/mocks/resolvers.ts @@ -0,0 +1,24 @@ +import type { RestRequest, restContext, ResponseResolver } from "msw"; + +import type { GetSitesQueryParams } from "../api/handlers"; + +import { siteFactory } from "./factories"; + +export const sitesList = siteFactory.buildList(155); + +type SitesResponseResolver = ResponseResolver<RestRequest<never, GetSitesQueryParams>, typeof restContext>; +export const createMockSitesResolver = + (sites = sitesList): SitesResponseResolver => + (req, res, ctx) => { + const searchParams = new URLSearchParams(req.url.search); + const page = Number(searchParams.get("page")); + const size = Number(searchParams.get("size")); + const itemsPage = sites.slice(page * Number(size), (page + 1) * size); + const response = { + items: itemsPage, + page, + total: sites.length, + }; + + return res(ctx.json(response)); + }; diff --git a/frontend/src/mocks/server.ts b/frontend/src/mocks/server.ts index c6e4e2a..52577dd 100644 --- a/frontend/src/mocks/server.ts +++ b/frontend/src/mocks/server.ts @@ -4,15 +4,11 @@ import { setupServer } from "msw/node"; import urls from "../api/urls"; -import { sites } from "./factories"; +import { createMockSitesResolver } from "./resolvers"; -const createMockGetServer = (endpoint: string, response: object) => - setupServer( - rest.get(endpoint, (_req, res, ctx) => { - return res(ctx.json(response)); - }), - ); +const createMockGetServer = (endpoint: string, resolver: ReturnType<typeof createMockSitesResolver>) => + setupServer(rest.get(endpoint, resolver)); -const mockSitesServer = createMockGetServer(urls.sites, sites()); +const mockSitesServer = createMockGetServer(urls.sites, createMockSitesResolver()); export { createMockGetServer, mockSitesServer }; diff --git a/frontend/src/pages/list.tsx b/frontend/src/pages/list.tsx deleted file mode 100644 index 43bec57..0000000 --- a/frontend/src/pages/list.tsx +++ /dev/null @@ -1,5 +0,0 @@ -import SitesList from "../components/SitesList"; - -const List: React.FC = () => <SitesList />; - -export default List; diff --git a/frontend/src/pages/sites.tsx b/frontend/src/pages/sites.tsx new file mode 100644 index 0000000..895b383 --- /dev/null +++ b/frontend/src/pages/sites.tsx @@ -0,0 +1,5 @@ +import SitesList from "../components/SitesList"; + +const Sites: React.FC = () => <SitesList />; + +export default Sites; diff --git a/frontend/src/router.tsx b/frontend/src/router.tsx index b92d0b9..2a08fdf 100644 --- a/frontend/src/router.tsx +++ b/frontend/src/router.tsx @@ -1,7 +1,7 @@ import { createBrowserRouter, createRoutesFromElements, Route } from "react-router-dom"; import MainLayout from "./components/MainLayout"; -import SitesList from "./components/SitesList/SitesList"; +import SitesList from "./pages/sites"; const router = createBrowserRouter( createRoutesFromElements( diff --git a/frontend/src/test-utils.tsx b/frontend/src/test-utils.tsx index 8653b4b..918031f 100644 --- a/frontend/src/test-utils.tsx +++ b/frontend/src/test-utils.tsx @@ -1,9 +1,9 @@ import type { ReactElement } from "react"; import React from "react"; +import { QueryClient, QueryClientProvider } from "@tanstack/react-query"; import type { RenderOptions, RenderResult } from "@testing-library/react"; import { render } from "@testing-library/react"; -import { QueryClient, QueryClientProvider } from "react-query"; const queryClient = new QueryClient({ defaultOptions: { diff --git a/frontend/src/utils.ts b/frontend/src/utils.ts new file mode 100644 index 0000000..4849540 --- /dev/null +++ b/frontend/src/utils.ts @@ -0,0 +1,10 @@ +import countries, { getName } from "i18n-iso-countries"; +import en from "i18n-iso-countries/langs/en.json"; + +if (typeof window !== "undefined") { + countries.registerLocale(en); +} + +export const getCountryName = (countryCode: string) => { + return getName(countryCode, "en", { select: "official" }); +}; diff --git a/frontend/yarn.lock b/frontend/yarn.lock index 8b0b656..6d6b727 100644 --- a/frontend/yarn.lock +++ b/frontend/yarn.lock @@ -1005,7 +1005,7 @@ resolved "https://registry.yarnpkg.com/@babel/regjsgen/-/regjsgen-0.8.0.tgz#f0ba69b075e1f05fb2825b7fad991e7adbb18310" integrity sha512-x/rqGMdzj+fWZvCOYForTghzbtqPDZ5gPwaoNGHdgDfF2QA/XZbCBp4Moo5scrkAMPhB7z26XM/AaHuIJdgauA== -"@babel/runtime@^7.12.5", "@babel/runtime@^7.5.5", "@babel/runtime@^7.6.2", "@babel/runtime@^7.7.2", "@babel/runtime@^7.9.2": +"@babel/runtime@^7.12.5", "@babel/runtime@^7.9.2": version "7.20.13" resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.20.13.tgz#7055ab8a7cff2b8f6058bf6ae45ff84ad2aded4b" integrity sha512-gt3PKXs0DBoL9xCvOIIZ2NEqAGZqHjAnmVbfQtB620V0uReIQutpel14KcneZuer7UioY8ALKZ7iocavvzTNFA== @@ -1262,7 +1262,7 @@ "@jridgewell/set-array" "^1.0.0" "@jridgewell/sourcemap-codec" "^1.4.10" -"@jridgewell/gen-mapping@^0.3.2": +"@jridgewell/gen-mapping@^0.3.0", "@jridgewell/gen-mapping@^0.3.2": version "0.3.2" resolved "https://registry.yarnpkg.com/@jridgewell/gen-mapping/-/gen-mapping-0.3.2.tgz#c1aedc61e853f2bb9f5dfe6d4442d3b565b253b9" integrity sha512-mh65xKQAzI6iBcFzwv28KVWSmCkdRBWoOh+bYQGW3+6OZvbbN3TqMGo5hqYxQniRcH9F2VZIoJCm4pa3BPDK/A== @@ -1281,6 +1281,14 @@ resolved "https://registry.yarnpkg.com/@jridgewell/set-array/-/set-array-1.1.2.tgz#7c6cf998d6d20b914c0a55a91ae928ff25965e72" integrity sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw== +"@jridgewell/source-map@^0.3.2": + version "0.3.2" + resolved "https://registry.yarnpkg.com/@jridgewell/source-map/-/source-map-0.3.2.tgz#f45351aaed4527a298512ec72f81040c998580fb" + integrity sha512-m7O9o2uR8k2ObDysZYzdfhb08VuEml5oWGiosa1VdaPZ/A6QyPkAJuwN0Q1lhULOf6B7MtQmHENS743hWtCrgw== + dependencies: + "@jridgewell/gen-mapping" "^0.3.0" + "@jridgewell/trace-mapping" "^0.3.9" + "@jridgewell/sourcemap-codec@1.4.14", "@jridgewell/sourcemap-codec@^1.4.10": version "1.4.14" resolved "https://registry.yarnpkg.com/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.14.tgz#add4c98d341472a289190b424efbdb096991bb24" @@ -1440,6 +1448,19 @@ "@swc/core-win32-ia32-msvc" "1.3.35" "@swc/core-win32-x64-msvc" "1.3.35" +"@tanstack/query-core@4.24.10": + version "4.24.10" + resolved "https://registry.yarnpkg.com/@tanstack/query-core/-/query-core-4.24.10.tgz#758e1f5b2d7faf7316d299facd272a9f64c26299" + integrity sha512-2QywqXEAGBIUoTdgn1lAB4/C8QEqwXHj2jrCLeYTk2xVGtLiPEUD8jcMoeB2noclbiW2mMt4+Fq7fZStuz3wAQ== + +"@tanstack/react-query@4.24.10": + version "4.24.10" + resolved "https://registry.yarnpkg.com/@tanstack/react-query/-/react-query-4.24.10.tgz#2e1004bb1d1f55198961a21e875e2c65ec865130" + integrity sha512-FY1DixytOcNNCydPQXLxuKEV7VSST32CAuJ55BjhDNqASnMLZn+6c30yQBMrODjmWMNwzfjMZnq0Vw7C62Fwow== + dependencies: + "@tanstack/query-core" "4.24.10" + use-sync-external-store "^1.2.0" + "@tanstack/react-table@8.7.9": version "8.7.9" resolved "https://registry.yarnpkg.com/@tanstack/react-table/-/react-table-8.7.9.tgz#9efcd168fb0080a7e0bc213b5eac8b55513babf4" @@ -1514,6 +1535,11 @@ resolved "https://registry.yarnpkg.com/@types/chai/-/chai-4.3.4.tgz#e913e8175db8307d78b4e8fa690408ba6b65dee4" integrity sha512-KnRanxnpfpjUTqTCXslZSEdLfXExwgNxYPdiO2WGUj8+HDjFi8R3k5RVKPeSCzLjCcshCAtVO2QBbVuAV4kTnw== +"@types/chance@1.1.3": + version "1.1.3" + resolved "https://registry.yarnpkg.com/@types/chance/-/chance-1.1.3.tgz#d19fe9391288d60fdccd87632bfc9ab2b4523fea" + integrity sha512-X6c6ghhe4/sQh4XzcZWSFaTAUOda38GQHmq9BUanYkOE/EO7ZrkazwKmtsj3xzTjkLWmwULE++23g3d3CCWaWw== + "@types/cookie@^0.4.1": version "0.4.1" resolved "https://registry.yarnpkg.com/@types/cookie/-/cookie-0.4.1.tgz#bfd02c1f2224567676c1545199f87c3a861d878d" @@ -1611,6 +1637,11 @@ resolved "https://registry.yarnpkg.com/@types/parse-json/-/parse-json-4.0.0.tgz#2f8bb441434d163b35fb8ffdccd7138927ffb8c0" integrity sha512-//oorEZjL6sbPcKUaCdIGlIUeH26mgzimjBB77G6XRgnDl/L5wOnpyBGRe/Mmf5CVW3PwEBE1NjiMZ/ssFh4wA== +"@types/pluralize@0.0.29": + version "0.0.29" + resolved "https://registry.yarnpkg.com/@types/pluralize/-/pluralize-0.0.29.tgz#6ffa33ed1fc8813c469b859681d09707eb40d03c" + integrity sha512-BYOID+l2Aco2nBik+iYS4SZX0Lf20KPILP5RGmM1IgzdwNdTs0eebiFriOPcej1sX9mLnSoiNte5zcFxssgpGA== + "@types/prop-types@*": version "15.7.5" resolved "https://registry.yarnpkg.com/@types/prop-types/-/prop-types-15.7.5.tgz#5f19d2b85a98e9558036f6a3cacc8819420f05cf" @@ -1875,7 +1906,7 @@ acorn-walk@^8.2.0: resolved "https://registry.yarnpkg.com/acorn-walk/-/acorn-walk-8.2.0.tgz#741210f2e2426454508853a2f44d0ab83b7f69c1" integrity sha512-k+iyHEuPgSw6SbuDpGQM+06HQUa04DZ3o+F6CSzXMvvI5KMvnaEqXe+YVe555R9nn6GPt404fos4wcgpw12SDA== -acorn@^8.8.0, acorn@^8.8.1, acorn@^8.8.2: +acorn@^8.5.0, acorn@^8.8.0, acorn@^8.8.1, acorn@^8.8.2: version "8.8.2" resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.8.2.tgz#1b2f25db02af965399b9776b0c2c391276d37c4a" integrity sha512-xjIYgE8HBrkpd/sJqOGNspf8uHG+NOHGOw6a/Urj8taM2EXfdNAH2oFcPeIFfsv3+kz/mJrS5VuMqbNLjCa2vw== @@ -1895,6 +1926,13 @@ ajv@^6.10.0, ajv@^6.12.4, ajv@^6.12.6: json-schema-traverse "^0.4.1" uri-js "^4.2.2" +ansi-colors@^1.0.1: + version "1.1.0" + resolved "https://registry.yarnpkg.com/ansi-colors/-/ansi-colors-1.1.0.tgz#6374b4dd5d4718ff3ce27a671a3b1cad077132a9" + integrity sha512-SFKX67auSNoVR38N3L+nvsPjOE0bybKTYbkf5tRvushrAPQ9V75huw0ZxBkKVeRU9kqH3d6HA4xTckbwZ4ixmA== + dependencies: + ansi-wrap "^0.1.0" + ansi-escapes@^4.2.1: version "4.3.2" resolved "https://registry.yarnpkg.com/ansi-escapes/-/ansi-escapes-4.3.2.tgz#6b2291d1db7d98b6521d5f1efa42d0f3a9feb65e" @@ -1936,6 +1974,11 @@ ansi-styles@^6.0.0: resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-6.2.1.tgz#0e62320cf99c21afff3b3012192546aacbfb05c5" integrity sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug== +ansi-wrap@^0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/ansi-wrap/-/ansi-wrap-0.1.0.tgz#a82250ddb0015e9a27ca82e82ea603bbfa45efaf" + integrity sha512-ZyznvL8k/FZeQHr2T6LzcJ/+vBApDnMNZvfVFy3At0knswWd6rJ3/0Hhmpu8oqa6C92npmozs890sX9Dl6q+Qw== + anymatch@~3.1.2: version "3.1.3" resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-3.1.3.tgz#790c58b19ba1720a84205b57c618d5ad8524973e" @@ -1956,6 +1999,16 @@ aria-query@^5.0.0, aria-query@^5.1.3: dependencies: deep-equal "^2.0.5" +arr-diff@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/arr-diff/-/arr-diff-4.0.0.tgz#d6461074febfec71e7e15235761a329a5dc7c520" + integrity sha512-YVIQ82gZPGBebQV/a8dar4AitzCQs0jjXwMPZllpXMaGjXPYVUawSxQrRsjhjupyVxEvbHgUmIhKVlND+j02kA== + +arr-union@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/arr-union/-/arr-union-3.1.0.tgz#e39b09aea9def866a8f206e288af63919bae39c4" + integrity sha512-sKpyeERZ02v1FeCZT8lrfJq5u6goHCtpTAzPwJYe7c8SPFOboNjNg1vz2L4VTn9T4PQxEx13TbXLmYUcS6Ug7Q== + array-includes@^3.1.5, array-includes@^3.1.6: version "3.1.6" resolved "https://registry.yarnpkg.com/array-includes/-/array-includes-3.1.6.tgz#9e9e720e194f198266ba9e18c29e6a9b0e4b225f" @@ -2018,6 +2071,11 @@ assertion-error@^1.1.0: resolved "https://registry.yarnpkg.com/assertion-error/-/assertion-error-1.1.0.tgz#e60b6b0e8f301bd97e5375215bda406c85118c0b" integrity sha512-jgsaNduz+ndvGyFt3uSuWqvy4lCnIJiovtouQN5JZHOKCS2QuhEdbcQHFhVksz2N2U9hXJo8odG7ETyWlEeuDw== +assign-symbols@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/assign-symbols/-/assign-symbols-1.0.0.tgz#59667f41fadd4f20ccbc2bb96b8d4f7f78ec0367" + integrity sha512-Q+JC7Whu8HhmTdBph/Tq59IoRtoy6KAm5zzPv00WdujX82lbAL8K7WVjne7vdCsAmbF4AYaDOPyO3k0kl8qIrw== + ast-types-flow@^0.0.7: version "0.0.7" resolved "https://registry.yarnpkg.com/ast-types-flow/-/ast-types-flow-0.0.7.tgz#f70b735c6bca1a5c9c22d982c3e39e7feba3bdad" @@ -2136,11 +2194,6 @@ base64-js@^1.3.1: resolved "https://registry.yarnpkg.com/base64-js/-/base64-js-1.5.1.tgz#1b1b440160a5bf7ad40b650f095963481903930a" integrity sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA== -big-integer@^1.6.16: - version "1.6.51" - resolved "https://registry.yarnpkg.com/big-integer/-/big-integer-1.6.51.tgz#0df92a5d9880560d3ff2d5fd20245c889d130686" - integrity sha512-GPEid2Y9QU1Exl1rpO9B2IPJGHPSupF5GnVIP0blYvNOMer2bTvSWs1jGOUg04hTmu67nmLsQ9TBo1puaotBHg== - binary-extensions@^2.0.0: version "2.2.0" resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-2.2.0.tgz#75f502eeaf9ffde42fc98829645be4ea76bd9e2d" @@ -2170,20 +2223,6 @@ braces@^3.0.2, braces@~3.0.2: dependencies: fill-range "^7.0.1" -broadcast-channel@^3.4.1: - version "3.7.0" - resolved "https://registry.yarnpkg.com/broadcast-channel/-/broadcast-channel-3.7.0.tgz#2dfa5c7b4289547ac3f6705f9c00af8723889937" - integrity sha512-cIAKJXAxGJceNZGTZSBzMxzyOn72cVgPnKx4dc6LRjQgbaJUQqhy5rzL3zbMxkMWsGKkv2hSFkPRMEXfoMZ2Mg== - dependencies: - "@babel/runtime" "^7.7.2" - detect-node "^2.1.0" - js-sha3 "0.8.0" - microseconds "0.2.0" - nano-time "1.0.0" - oblivious-set "1.0.0" - rimraf "3.0.2" - unload "2.2.0" - browserslist@^4.21.3, browserslist@^4.21.4, browserslist@^4.21.5: version "4.21.5" resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.21.5.tgz#75c5dae60063ee641f977e00edd3cfb2fb7af6a7" @@ -2297,6 +2336,13 @@ chalk@^4.0.0, chalk@^4.1.0, chalk@^4.1.1, chalk@^4.1.2: ansi-styles "^4.1.0" supports-color "^7.1.0" +chance@1.1.10: + version "1.1.10" + resolved "https://registry.yarnpkg.com/chance/-/chance-1.1.10.tgz#97aa50acaeb810ae293330a9e2b138ee3d49daf2" + integrity sha512-R6o7L/PGxBxdxzWbnLTi9nKQPtNZJySAxA1yGmAfKSiUt3KsBOAttsF04gNWA/XUcGIOrLHy7uAQ7KZwK92Qig== + dependencies: + gulp-uglify-es "^3.0.0" + chardet@^0.7.0: version "0.7.0" resolved "https://registry.yarnpkg.com/chardet/-/chardet-0.7.0.tgz#90094849f0937f2eedc2425d0d28a9e5f0cbad9e" @@ -2371,11 +2417,35 @@ cliui@^8.0.1: strip-ansi "^6.0.1" wrap-ansi "^7.0.0" +clone-buffer@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/clone-buffer/-/clone-buffer-1.0.0.tgz#e3e25b207ac4e701af721e2cb5a16792cac3dc58" + integrity sha512-KLLTJWrvwIP+OPfMn0x2PheDEP20RPUcGXj/ERegTgdmPEZylALQldygiqrPPu8P45uNuPs7ckmReLY6v/iA5g== + +clone-stats@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/clone-stats/-/clone-stats-1.0.0.tgz#b3782dff8bb5474e18b9b6bf0fdfe782f8777680" + integrity sha512-au6ydSpg6nsrigcZ4m8Bc9hxjeW+GJ8xh5G3BJCMt4WXe1H10UNaVOamqQTmrx1kjVuxAHIQSNU6hY4Nsn9/ag== + clone@^1.0.2: version "1.0.4" resolved "https://registry.yarnpkg.com/clone/-/clone-1.0.4.tgz#da309cc263df15994c688ca902179ca3c7cd7c7e" integrity sha512-JQHZ2QMW6l3aH/j6xCqQThY/9OH4D/9ls34cgkUBiEeocRTU04tHfKPBsUK1PqZCUQM7GiA0IIXJSuXHI64Kbg== +clone@^2.1.1: + version "2.1.2" + resolved "https://registry.yarnpkg.com/clone/-/clone-2.1.2.tgz#1b7f4b9f591f1e8f83670401600345a02887435f" + integrity sha512-3Pe/CF1Nn94hyhIYpjtiLhdCoEoz0DqQ+988E9gmeEdQZlojxnOb74wctFyuwWQHzqyf9X7C7MG8juUpqBJT8w== + +cloneable-readable@^1.0.0: + version "1.1.3" + resolved "https://registry.yarnpkg.com/cloneable-readable/-/cloneable-readable-1.1.3.tgz#120a00cb053bfb63a222e709f9683ea2e11d8cec" + integrity sha512-2EF8zTQOxYq70Y4XKtorQupqF0m49MBz2/yf5Bj+MHjvpG3Hy7sImifnqD6UA+TKYxeSV+u6qqQPawN5UvnpKQ== + dependencies: + inherits "^2.0.1" + process-nextick-args "^2.0.0" + readable-stream "^2.3.5" + color-convert@^1.9.0: version "1.9.3" resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-1.9.3.tgz#bb71850690e1f136567de629d2d5471deda4c1e8" @@ -2407,6 +2477,11 @@ combined-stream@^1.0.8: dependencies: delayed-stream "~1.0.0" +commander@^2.20.0: + version "2.20.3" + resolved "https://registry.yarnpkg.com/commander/-/commander-2.20.3.tgz#fd485e84c03eb4881c20722ba48035e8531aeb33" + integrity sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ== + concat-map@0.0.1: version "0.0.1" resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" @@ -2434,6 +2509,11 @@ core-js-compat@^3.25.1: dependencies: browserslist "^4.21.5" +core-util-is@~1.0.0: + version "1.0.3" + resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.3.tgz#a6042d3634c2b27e9328f837b965fac83808db85" + integrity sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ== + cosmiconfig@^7.0.0: version "7.1.0" resolved "https://registry.yarnpkg.com/cosmiconfig/-/cosmiconfig-7.1.0.tgz#1443b9afa596b670082ea46cbd8f6a62b84635f6" @@ -2576,10 +2656,10 @@ dependency-graph@^0.11.0: resolved "https://registry.yarnpkg.com/dependency-graph/-/dependency-graph-0.11.0.tgz#ac0ce7ed68a54da22165a85e97a01d53f5eb2e27" integrity sha512-JeMq7fEshyepOWDfcfHK06N3MhyPhz++vtqWhMT5O9A3K42rdsEDpfdVqjaqaAhsw6a+ZqeDvQVtD0hFHQWrzg== -detect-node@^2.0.4, detect-node@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/detect-node/-/detect-node-2.1.0.tgz#c9c70775a49c3d03bc2c06d9a73be550f978f8b1" - integrity sha512-T0NIuQpnTvFDATNuHN5roPwSBG83rFsuO+MXXH9/3N1eFbn4wcPjttvjMLEPWJ0RGUYgQE7cGgS3tNxbqCGM7g== +diacritics@1.3.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/diacritics/-/diacritics-1.3.0.tgz#3efa87323ebb863e6696cebb0082d48ff3d6f7a1" + integrity sha512-wlwEkqcsaxvPJML+rDh/2iS824jbREk6DUMUKkEaSlxdYHeS43cClJtsWglvw2RfeXGm6ohKDqsXteJ5sP5enA== diff-sequences@^27.5.1: version "27.5.1" @@ -3065,6 +3145,14 @@ expect@^29.0.0: jest-message-util "^29.4.3" jest-util "^29.4.3" +extend-shallow@^3.0.2: + version "3.0.2" + resolved "https://registry.yarnpkg.com/extend-shallow/-/extend-shallow-3.0.2.tgz#26a71aaf073b39fb2127172746131c2704028db8" + integrity sha512-BwY5b5Ql4+qZoefgMj2NUmx+tehVTH/Kf4k1ZEtOHNFcm2wSxMRo992l6X3TIgni2eZVTZ85xMOjF31fwZAj6Q== + dependencies: + assign-symbols "^1.0.0" + is-extendable "^1.0.1" + external-editor@^3.0.3: version "3.1.0" resolved "https://registry.yarnpkg.com/external-editor/-/external-editor-3.1.0.tgz#cb03f740befae03ea4d283caed2741a83f335495" @@ -3149,6 +3237,13 @@ find-up@^5.0.0: locate-path "^6.0.0" path-exists "^4.0.0" +fishery@2.2.2: + version "2.2.2" + resolved "https://registry.yarnpkg.com/fishery/-/fishery-2.2.2.tgz#94d3d9380295dd3ce555021e9353c5348b8beb77" + integrity sha512-jeU0nDhPHJkupmjX+r9niKgVMTBDB8X+U/pktoGHAiWOSyNlMd0HhmqnjrpjUOCDPJYaSSu4Ze16h6dZOKSp2w== + dependencies: + lodash.mergewith "^4.6.2" + flat-cache@^3.0.4: version "3.0.4" resolved "https://registry.yarnpkg.com/flat-cache/-/flat-cache-3.0.4.tgz#61b0338302b2fe9f957dcc32fc2a87f1c3048b11" @@ -3355,6 +3450,17 @@ grapheme-splitter@^1.0.4: resolved "https://registry.yarnpkg.com/graphql/-/graphql-16.6.0.tgz#c2dcffa4649db149f6282af726c8c83f1c7c5fdb" integrity sha512-KPIBPDlW7NxrbT/eh4qPXz5FiFdL5UbaA0XUNz2Rp3Z3hqBSkbj0GVjwFDztsWVauZUWsbKHgMg++sk8UX0bkw== +gulp-uglify-es@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/gulp-uglify-es/-/gulp-uglify-es-3.0.0.tgz#00466e0e3b0486057c552b8b0d3e326791f2f832" + integrity sha512-dQ3czMFFojNgCajcrYl0oa98+YayaQ8kXRdaacpZRZ3iw2sdVURfdt8y8Ki1ogZGQqw8BUawnB7V6NkanxqnDg== + dependencies: + o-stream "^0.3.0" + plugin-error "^1.0.1" + terser "^5.7.1" + vinyl "^2.2.1" + vinyl-sourcemaps-apply "^0.2.1" + hard-rejection@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/hard-rejection/-/hard-rejection-2.1.0.tgz#1c6eda5c1685c63942766d79bb40ae773cecd883" @@ -3423,6 +3529,13 @@ hosted-git-info@^4.0.1: dependencies: lru-cache "^6.0.0" +i18n-iso-countries@7.5.0: + version "7.5.0" + resolved "https://registry.yarnpkg.com/i18n-iso-countries/-/i18n-iso-countries-7.5.0.tgz#74fedd72619526a195cfb2e768fe1d82eed2123f" + integrity sha512-PtfKJNWLVhhU0KBX/8asmywjAcuyQk07mmmMwxFJcddTNBJJ1yvpY2qxVmyxbtVF+9+6eg9phgpv83XPUKU5CA== + dependencies: + diacritics "1.3.0" + iconv-lite@^0.4.24: version "0.4.24" resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.24.tgz#2022b4b25fbddc21d2f524974a474aafe733908b" @@ -3471,7 +3584,7 @@ inflight@^1.0.4: once "^1.3.0" wrappy "1" -inherits@2, inherits@^2.0.3, inherits@^2.0.4: +inherits@2, inherits@^2.0.1, inherits@^2.0.3, inherits@^2.0.4, inherits@~2.0.3: version "2.0.4" resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c" integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ== @@ -3574,6 +3687,13 @@ is-date-object@^1.0.1, is-date-object@^1.0.5: dependencies: has-tostringtag "^1.0.0" +is-extendable@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/is-extendable/-/is-extendable-1.0.1.tgz#a7470f9e426733d81bd81e1155264e3a3507cab4" + integrity sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA== + dependencies: + is-plain-object "^2.0.4" + is-extglob@^2.1.1: version "2.1.1" resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-2.1.1.tgz#a88c02535791f02ed37c76a1b9ea9773c833f8c2" @@ -3650,6 +3770,13 @@ is-plain-obj@^3.0.0: resolved "https://registry.yarnpkg.com/is-plain-obj/-/is-plain-obj-3.0.0.tgz#af6f2ea14ac5a646183a5bbdb5baabbc156ad9d7" integrity sha512-gwsOE28k+23GP1B6vFl1oVh/WOzmawBrKwo5Ev6wMKzPkaXaCDIQKzLnvsA42DRlbVTWorkgTKIviAKCWkfUwA== +is-plain-object@^2.0.4: + version "2.0.4" + resolved "https://registry.yarnpkg.com/is-plain-object/-/is-plain-object-2.0.4.tgz#2c163b3fafb1b606d9d17928f05c2a1c38e07677" + integrity sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og== + dependencies: + isobject "^3.0.1" + is-regex@^1.1.4: version "1.1.4" resolved "https://registry.yarnpkg.com/is-regex/-/is-regex-1.1.4.tgz#eef5663cd59fa4c0ae339505323df6854bb15958" @@ -3725,11 +3852,21 @@ isarray@^2.0.5: resolved "https://registry.yarnpkg.com/isarray/-/isarray-2.0.5.tgz#8af1e4c1221244cc62459faf38940d4e644a5723" integrity sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw== +isarray@~1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/isarray/-/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11" + integrity sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ== + isexe@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10" integrity sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw== +isobject@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/isobject/-/isobject-3.0.1.tgz#4e431e92b11a9731636aa1f9c8d1ccbcfdab78df" + integrity sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg== + jest-diff@^27.5.1: version "27.5.1" resolved "https://registry.yarnpkg.com/jest-diff/-/jest-diff-27.5.1.tgz#a07f5011ac9e6643cf8a95a462b7b1ecf6680def" @@ -3817,11 +3954,6 @@ js-sdsl@^4.1.4: resolved "https://registry.yarnpkg.com/js-sdsl/-/js-sdsl-4.3.0.tgz#aeefe32a451f7af88425b11fdb5f58c90ae1d711" integrity sha512-mifzlm2+5nZ+lEcLJMoBK0/IH/bDg8XnJfd/Wq6IP+xoCjLZsTOnV2QpxlVbX9bMnkl5PdEjNtBJ9Cj1NjifhQ== -js-sha3@0.8.0: - version "0.8.0" - resolved "https://registry.yarnpkg.com/js-sha3/-/js-sha3-0.8.0.tgz#b9b7a5da73afad7dedd0f8c463954cbde6818840" - integrity sha512-gF1cRrHhIzNfToc802P800N8PpXS+evLLXfsVpowqmAFR9uwbi89WvXg2QspOmXL8QL86J4T1EpFu+yUkwJY3Q== - "js-tokens@^3.0.0 || ^4.0.0", js-tokens@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-4.0.0.tgz#19203fb59991df98e3a287050d4647cdeaf32499" @@ -3957,6 +4089,11 @@ lodash.merge@^4.6.2: resolved "https://registry.yarnpkg.com/lodash.merge/-/lodash.merge-4.6.2.tgz#558aa53b43b661e1925a0afdfa36a9a1085fe57a" integrity sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ== +lodash.mergewith@^4.6.2: + version "4.6.2" + resolved "https://registry.yarnpkg.com/lodash.mergewith/-/lodash.mergewith-4.6.2.tgz#617121f89ac55f59047c7aec1ccd6654c6590f55" + integrity sha512-GK3g5RPZWTRSeLSpgP8Xhra+pnjBC56q9FZYe1d5RN3TJ35dbkGy3YqBSMbyCrlbi+CM9Z3Jk5yTL7RCsqboyQ== + lodash@4.17.21, lodash@^4.17.15, lodash@^4.17.21: version "4.17.21" resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.21.tgz#679591c564c3bffaae8454cf0b3df370c3d6911c" @@ -4013,14 +4150,6 @@ map-obj@^4.0.0: resolved "https://registry.yarnpkg.com/map-obj/-/map-obj-4.3.0.tgz#9304f906e93faae70880da102a9f1df0ea8bb05a" integrity sha512-hdN1wVrZbb29eBGiGjJbeP8JbKjq1urkHJ/LIP/NY48MZ1QVXUsQBV1G1zvYFHn1XE06cwjBsOI2K3Ulnj1YXQ== -match-sorter@^6.0.2: - version "6.3.1" - resolved "https://registry.yarnpkg.com/match-sorter/-/match-sorter-6.3.1.tgz#98cc37fda756093424ddf3cbc62bfe9c75b92bda" - integrity sha512-mxybbo3pPNuA+ZuCUhm5bwNkXrJTbsk5VWbR5wiwz/GC6LIiegBGn2w3O08UG/jdbYLinw51fSQ5xNU1U3MgBw== - dependencies: - "@babel/runtime" "^7.12.5" - remove-accents "0.4.2" - meow@^9.0.0: version "9.0.0" resolved "https://registry.yarnpkg.com/meow/-/meow-9.0.0.tgz#cd9510bc5cac9dee7d03c73ee1f9ad959f4ea364" @@ -4052,11 +4181,6 @@ micromatch@^4.0.4: braces "^3.0.2" picomatch "^2.3.1" -microseconds@0.2.0: - version "0.2.0" - resolved "https://registry.yarnpkg.com/microseconds/-/microseconds-0.2.0.tgz#233b25f50c62a65d861f978a4a4f8ec18797dc39" - integrity sha512-n7DHHMjR1avBbSpsTBj6fmMGh2AGrifVV4e+WYc3Q9lO+xnSZ3NyhcBND3vzzatt05LFhoKFRxrIyklmLlUtyA== - mime-db@1.52.0: version "1.52.0" resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.52.0.tgz#bbabcdc02859f4987301c856e3387ce5ec43bf70" @@ -4155,13 +4279,6 @@ mute-stream@0.0.8: resolved "https://registry.yarnpkg.com/mute-stream/-/mute-stream-0.0.8.tgz#1630c42b2251ff81e2a283de96a5497ea92e5e0d" integrity sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA== -nano-time@1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/nano-time/-/nano-time-1.0.0.tgz#b0554f69ad89e22d0907f7a12b0993a5d96137ef" - integrity sha512-flnngywOoQ0lLQOTRNexn2gGSNuM9bKj9RZAWSzhQ+UJYaAFG9bac4DW9VHjUAzrOaIcajHybCTHe/bkvozQqA== - dependencies: - big-integer "^1.6.16" - nanoid@3.3.4, nanoid@^3.3.4: version "3.3.4" resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-3.3.4.tgz#730b67e3cd09e2deacf03c027c81c9d9dbc5e8ab" @@ -4242,6 +4359,11 @@ npm-package-json-lint@6.4.0: type-fest "^3.2.0" validate-npm-package-name "^5.0.0" +o-stream@^0.3.0: + version "0.3.0" + resolved "https://registry.yarnpkg.com/o-stream/-/o-stream-0.3.0.tgz#204d27bc3fb395164507d79b381e91752e8daedc" + integrity sha512-gbzl6qCJZ609x/M2t25HqCYQagFzWYCtQ84jcuObGr+V8D1Am4EVubkF4J+XFs6ukfiv96vNeiBb8FrbbMZYiQ== + object-assign@^4.1.1: version "4.1.1" resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863" @@ -4310,11 +4432,6 @@ object.values@^1.1.6: define-properties "^1.1.4" es-abstract "^1.20.4" -oblivious-set@1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/oblivious-set/-/oblivious-set-1.0.0.tgz#c8316f2c2fb6ff7b11b6158db3234c49f733c566" - integrity sha512-z+pI07qxo4c2CulUHCDf9lcqDlMSo72N/4rLUpRXf6fu+q8vjt8y0xS+Tlf8NTJDdTXHbdeO1n3MlbctwEoXZw== - once@^1.3.0: version "1.4.0" resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1" @@ -4492,6 +4609,16 @@ playwright-core@1.31.1: resolved "https://registry.yarnpkg.com/playwright-core/-/playwright-core-1.31.1.tgz#4deeebbb8fb73b512593fe24bea206d8fd85ff7f" integrity sha512-JTyX4kV3/LXsvpHkLzL2I36aCdml4zeE35x+G5aPc4bkLsiRiQshU5lWeVpHFAuC8xAcbI6FDcw/8z3q2xtJSQ== +plugin-error@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/plugin-error/-/plugin-error-1.0.1.tgz#77016bd8919d0ac377fdcdd0322328953ca5781c" + integrity sha512-L1zP0dk7vGweZME2i+EeakvUNqSrdiI3F91TwEoYiGrAfUXmVv6fJIq4g82PAXxNsWOp0J7ZqQy/3Szz0ajTxA== + dependencies: + ansi-colors "^1.0.1" + arr-diff "^4.0.0" + arr-union "^3.1.0" + extend-shallow "^3.0.2" + plur@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/plur/-/plur-4.0.0.tgz#729aedb08f452645fe8c58ef115bf16b0a73ef84" @@ -4499,6 +4626,11 @@ plur@^4.0.0: dependencies: irregular-plurals "^3.2.0" +pluralize@8.0.0: + version "8.0.0" + resolved "https://registry.yarnpkg.com/pluralize/-/pluralize-8.0.0.tgz#1a6fa16a38d12a1901e0320fa017051c539ce3b1" + integrity sha512-Nc3IT5yHzflTfbjgqWcCPpo7DaKy4FnpB0l/zCAW0Tc7jxAiuqSxHasntB3D7887LSrA93kDJ9IXovxJYxyLCA== + postcss-cli@9.1.0: version "9.1.0" resolved "https://registry.yarnpkg.com/postcss-cli/-/postcss-cli-9.1.0.tgz#1a86404cbe848e370127b4bdf5cd2be83bc45ebe" @@ -4592,6 +4724,11 @@ pretty-hrtime@^1.0.3: resolved "https://registry.yarnpkg.com/pretty-hrtime/-/pretty-hrtime-1.0.3.tgz#b7e3ea42435a4c9b2759d99e0f201eb195802ee1" integrity sha512-66hKPCr+72mlfiSjlEB1+45IjXSqvVAIy6mocupoww4tBFE9R9IhwwUGoI4G++Tc9Aq+2rxOt0RFU6gPcrte0A== +process-nextick-args@^2.0.0, process-nextick-args@~2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-2.0.1.tgz#7820d9b16120cc55ca9ae7792680ae7dba6d7fe2" + integrity sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag== + prop-types@15.8.1, prop-types@^15.8.1: version "15.8.1" resolved "https://registry.yarnpkg.com/prop-types/-/prop-types-15.8.1.tgz#67d87bf1a694f48435cf332c24af10214a3140b5" @@ -4644,15 +4781,6 @@ react-is@^18.0.0: resolved "https://registry.yarnpkg.com/react-is/-/react-is-18.2.0.tgz#199431eeaaa2e09f86427efbb4f1473edb47609b" integrity sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w== -react-query@3.39.3: - version "3.39.3" - resolved "https://registry.yarnpkg.com/react-query/-/react-query-3.39.3.tgz#4cea7127c6c26bdea2de5fb63e51044330b03f35" - integrity sha512-nLfLz7GiohKTJDuT4us4X3h/8unOh+00MLb2yJoGTPjxKs2bc1iDhkNx2bd5MKklXnOD3NrVZ+J2UXujA5In4g== - dependencies: - "@babel/runtime" "^7.5.5" - broadcast-channel "^3.4.1" - match-sorter "^6.0.2" - react-router-dom@6.8.1: version "6.8.1" resolved "https://registry.yarnpkg.com/react-router-dom/-/react-router-dom-6.8.1.tgz#7e136b67d9866f55999e9a8482c7008e3c575ac9" @@ -4713,6 +4841,19 @@ read-pkg@^5.2.0: parse-json "^5.0.0" type-fest "^0.6.0" +readable-stream@^2.3.5: + version "2.3.8" + resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.3.8.tgz#91125e8042bba1b9887f49345f6277027ce8be9b" + integrity sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA== + dependencies: + core-util-is "~1.0.0" + inherits "~2.0.3" + isarray "~1.0.0" + process-nextick-args "~2.0.0" + safe-buffer "~5.1.1" + string_decoder "~1.1.1" + util-deprecate "~1.0.1" + readable-stream@^3.4.0: version "3.6.0" resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-3.6.0.tgz#337bbda3adc0706bd3e024426a286d4b4b2c9198" @@ -4794,10 +4935,15 @@ regjsparser@^0.9.1: dependencies: jsesc "~0.5.0" -remove-accents@0.4.2: - version "0.4.2" - resolved "https://registry.yarnpkg.com/remove-accents/-/remove-accents-0.4.2.tgz#0a43d3aaae1e80db919e07ae254b285d9e1c7bb5" - integrity sha512-7pXIJqJOq5tFgG1A2Zxti3Ht8jJF337m4sowbuHsW30ZnkQFnDzy9qBNhgzX8ZLW4+UBcXiiR7SwR6pokHsxiA== +remove-trailing-separator@^1.0.1: + version "1.1.0" + resolved "https://registry.yarnpkg.com/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz#c24bce2a283adad5bc3f58e0d48249b92379d8ef" + integrity sha512-/hS+Y0u3aOfIETiaiirUFwDBDzmXPvO+jAfKTitUngIPzdKc6Z0LoFjM/CK5PL4C+eKwHohlHAb6H0VFfmmUsw== + +replace-ext@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/replace-ext/-/replace-ext-1.0.1.tgz#2d6d996d04a15855d967443631dd5f77825b016a" + integrity sha512-yD5BHCe7quCgBph4rMQ+0KkIRKwWCrHDOX1p1Gp6HwjPM5kVoCdKGNhN7ydqqsX6lJEnQDKZ/tFMiEdQ1dvPEw== require-directory@^2.1.1: version "2.1.1" @@ -4840,7 +4986,7 @@ reusify@^1.0.4: resolved "https://registry.yarnpkg.com/reusify/-/reusify-1.0.4.tgz#90da382b1e126efc02146e90845a88db12925d76" integrity sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw== -rimraf@3.0.2, rimraf@^3.0.2: +rimraf@^3.0.2: version "3.0.2" resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-3.0.2.tgz#f1a5402ba6220ad52cc1282bac1ae3aa49fd061a" integrity sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA== @@ -4873,6 +5019,11 @@ rxjs@^7.5.5: dependencies: tslib "^2.1.0" +safe-buffer@~5.1.0, safe-buffer@~5.1.1: + version "5.1.2" + resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.2.tgz#991ec69d296e0313747d59bdfd2b745c35f8828d" + integrity sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g== + safe-buffer@~5.2.0: version "5.2.1" resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.2.1.tgz#1eaf9fa9bdb1fdd4ec75f58f9cdb4e6b7827eec6" @@ -4993,7 +5144,7 @@ slice-ansi@^5.0.0: resolved "https://registry.yarnpkg.com/source-map-js/-/source-map-js-1.0.2.tgz#adbc361d9c62df380125e7f161f71c826f1e490c" integrity sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw== -source-map-support@^0.5.21: +source-map-support@^0.5.21, source-map-support@~0.5.20: version "0.5.21" resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.21.tgz#04fe7c7f9e1ed2d662233c28cb2b35b9f63f6e4f" integrity sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w== @@ -5001,6 +5152,11 @@ source-map-support@^0.5.21: buffer-from "^1.0.0" source-map "^0.6.0" +source-map@^0.5.1: + version "0.5.7" + resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.5.7.tgz#8a039d2d1021d22d1ea14c80d8ea468ba2ef3fcc" + integrity sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ== + source-map@^0.6.0, source-map@^0.6.1: version "0.6.1" resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263" @@ -5130,6 +5286,13 @@ string_decoder@^1.1.1: dependencies: safe-buffer "~5.2.0" +string_decoder@~1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.1.1.tgz#9cf1611ba62685d7030ae9e4ba34149c3af03fc8" + integrity sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg== + dependencies: + safe-buffer "~5.1.0" + strip-ansi@^6.0.0, strip-ansi@^6.0.1: version "6.0.1" resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.1.tgz#9e26c63d30f53443e9489495b2105d37b67a85d9" @@ -5187,6 +5350,16 @@ supports-preserve-symlinks-flag@^1.0.0: resolved "https://registry.yarnpkg.com/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz#6eda4bd344a3c94aea376d4cc31bc77311039e09" integrity sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w== +terser@^5.7.1: + version "5.16.5" + resolved "https://registry.yarnpkg.com/terser/-/terser-5.16.5.tgz#1c285ca0655f467f92af1bbab46ab72d1cb08e5a" + integrity sha512-qcwfg4+RZa3YvlFh0qjifnzBHjKGNbtDo9yivMqMFDy9Q6FSaQWSB/j1xKhsoUFJIqDOM3TsN6D5xbrMrFcHbg== + dependencies: + "@jridgewell/source-map" "^0.3.2" + acorn "^8.5.0" + commander "^2.20.0" + source-map-support "~0.5.20" + text-table@^0.2.0: version "0.2.0" resolved "https://registry.yarnpkg.com/text-table/-/text-table-0.2.0.tgz#7f5ee823ae805207c00af2df4a84ec3fcfa570b4" @@ -5377,19 +5550,16 @@ unicode-property-aliases-ecmascript@^2.0.0: resolved "https://registry.yarnpkg.com/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-2.1.0.tgz#43d41e3be698bd493ef911077c9b131f827e8ccd" integrity sha512-6t3foTQI9qne+OZoVQB/8x8rk2k1eVy1gRXhV3oFQ5T6R1dqQ1xtin3XqSlx3+ATBkliTaR/hHyJBm+LVPNM8w== +unique-names-generator@4.7.1: + version "4.7.1" + resolved "https://registry.yarnpkg.com/unique-names-generator/-/unique-names-generator-4.7.1.tgz#966407b12ba97f618928f77322cfac8c80df5597" + integrity sha512-lMx9dX+KRmG8sq6gulYYpKWZc9RlGsgBR6aoO8Qsm3qvkSJ+3rAymr+TnV8EDMrIrwuFJ4kruzMWM/OpYzPoow== + universalify@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/universalify/-/universalify-2.0.0.tgz#75a4984efedc4b08975c5aeb73f530d02df25717" integrity sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ== -unload@2.2.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/unload/-/unload-2.2.0.tgz#ccc88fdcad345faa06a92039ec0f80b488880ef7" - integrity sha512-B60uB5TNBLtN6/LsgAf3udH9saB5p7gqJwcFfbOEZ8BcBHnGwCf6G/TGiEqkRAxX7zAFIUtzdrXQSdL3Q/wqNA== - dependencies: - "@babel/runtime" "^7.6.2" - detect-node "^2.0.4" - update-browserslist-db@^1.0.10: version "1.0.10" resolved "https://registry.yarnpkg.com/update-browserslist-db/-/update-browserslist-db-1.0.10.tgz#0f54b876545726f17d00cd9a2561e6dade943ff3" @@ -5415,7 +5585,12 @@ use-ssr@^1.0.22: resolved "https://registry.yarnpkg.com/use-ssr/-/use-ssr-1.0.24.tgz#213a3df58f5ab9268e6fe1a57ad0a9de91e514d1" integrity sha512-0MFps7ezL57/3o0yl4CvrHLlp9z20n1rQZV/lSRz7if+TUoM6POU1XdOvEjIgjgKeIhTEye1U0khrIYWCTWw4g== -util-deprecate@^1.0.1: +use-sync-external-store@^1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/use-sync-external-store/-/use-sync-external-store-1.2.0.tgz#7dbefd6ef3fe4e767a0cf5d7287aacfb5846928a" + integrity sha512-eEgnFxGQ1Ife9bzYs6VLi8/4X6CObHMw9Qr9tPY43iKwsPw8xE8+EFsf/2cFZ5S3esXgpWgtSCtLNS41F+sKPA== + +util-deprecate@^1.0.1, util-deprecate@~1.0.1: version "1.0.2" resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf" integrity sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw== @@ -5460,6 +5635,25 @@ vanilla-framework@3.11.0: sass "1.57.1" yaml "1.10.2" +vinyl-sourcemaps-apply@^0.2.1: + version "0.2.1" + resolved "https://registry.yarnpkg.com/vinyl-sourcemaps-apply/-/vinyl-sourcemaps-apply-0.2.1.tgz#ab6549d61d172c2b1b87be5c508d239c8ef87705" + integrity sha512-+oDh3KYZBoZC8hfocrbrxbLUeaYtQK7J5WU5Br9VqWqmCll3tFJqKp97GC9GmMsVIL0qnx2DgEDVxdo5EZ5sSw== + dependencies: + source-map "^0.5.1" + +vinyl@^2.2.1: + version "2.2.1" + resolved "https://registry.yarnpkg.com/vinyl/-/vinyl-2.2.1.tgz#23cfb8bbab5ece3803aa2c0a1eb28af7cbba1974" + integrity sha512-LII3bXRFBZLlezoG5FfZVcXflZgWP/4dCwKtxd5ky9+LOtM4CS3bIRQsmR1KMnMW07jpE8fqR2lcxPZ+8sJIcw== + dependencies: + clone "^2.1.1" + clone-buffer "^1.0.0" + clone-stats "^1.0.0" + cloneable-readable "^1.0.0" + remove-trailing-separator "^1.0.1" + replace-ext "^1.0.0" + vite-node@0.28.5: version "0.28.5" resolved "https://registry.yarnpkg.com/vite-node/-/vite-node-0.28.5.tgz#56d0f78846ea40fddf2e28390899df52a4738006"
-- Mailing list: https://launchpad.net/~sts-sponsors Post to : sts-sponsors@lists.launchpad.net Unsubscribe : https://launchpad.net/~sts-sponsors More help : https://help.launchpad.net/ListHelp