diff --git a/frontend/package.json b/frontend/package.json index 8c951f0859..d29ec1d40b 100644 --- a/frontend/package.json +++ b/frontend/package.json @@ -135,7 +135,7 @@ "@vitest/ui": "2.1.8", "combine-react-intl-messages": "^4.0.0", "jest-canvas-mock": "^2.5.2", - "msw": "^1.3.2", + "msw": "^2.7.0", "prettier": "^2.8.8", "react-scripts": "^5.0.1", "react-select-event": "^5.5.1", diff --git a/frontend/src/components/banner/tests/topBanner.test.tsx b/frontend/src/components/banner/tests/topBanner.test.tsx index 60ac831571..60b654066b 100644 --- a/frontend/src/components/banner/tests/topBanner.test.tsx +++ b/frontend/src/components/banner/tests/topBanner.test.tsx @@ -4,12 +4,11 @@ import { banner } from '../../../network/tests/mockData/miscellaneous'; import { ReduxIntlProviders, renderWithRouter } from '../../../utils/testWithIntl'; import { TopBanner } from '../topBanner'; -it('should render the banner text ', async () => { +it('should render the banner text', async () => { renderWithRouter( , ); - screen.debug(); expect(await screen.findByText(banner.message)).toBeInTheDocument(); }); diff --git a/frontend/src/components/banner/topBanner.tsx b/frontend/src/components/banner/topBanner.tsx index a40557655f..7f1d92de43 100644 --- a/frontend/src/components/banner/topBanner.tsx +++ b/frontend/src/components/banner/topBanner.tsx @@ -2,12 +2,23 @@ import { useLocation } from 'react-router-dom'; import { useFetchWithAbort } from '../../hooks/UseFetch'; import { htmlFromMarkdown } from '../../utils/htmlFromMarkdown'; import './styles.scss'; +import { useEffect, useState } from 'react'; export function TopBanner() { const location = useLocation(); const [, error, data] = useFetchWithAbort<{ message: string; }>(`system/banner/`); + const [safeHTML, setSafeHTML] = useState(); + + useEffect(() => { + (async () => { + if (data?.message) { + const html = await htmlFromMarkdown(data.message); + setSafeHTML(html.__html); + } + })(); + }, [data?.message]) return ( <> @@ -16,7 +27,9 @@ export function TopBanner() {
)} diff --git a/frontend/src/components/contributions/tests/myProjectsDropdown.test.tsx b/frontend/src/components/contributions/tests/myProjectsDropdown.test.tsx index d7a133ff76..77342c69e7 100644 --- a/frontend/src/components/contributions/tests/myProjectsDropdown.test.tsx +++ b/frontend/src/components/contributions/tests/myProjectsDropdown.test.tsx @@ -4,6 +4,7 @@ import selectEvent from 'react-select-event'; import MyProjectsDropdown from '../myProjectsDropdown'; import { ReduxIntlProviders } from '../../../utils/testWithIntl'; +import { API_URL } from '../../../config'; it('displays placeholder and typed text on type', async () => { const setQueryMock = vi.fn(); @@ -24,7 +25,7 @@ it('displays placeholder and typed text on type', async () => { , ); - screen.debug() + // screen.debug() await selectEvent.select(screen.getByRole('combobox'), '#8629'); expect(setQueryMock).toHaveBeenCalled(); diff --git a/frontend/src/components/header/updateEmail.tsx b/frontend/src/components/header/updateEmail.tsx index 8a11667bc9..adcf309b2a 100644 --- a/frontend/src/components/header/updateEmail.tsx +++ b/frontend/src/components/header/updateEmail.tsx @@ -26,7 +26,9 @@ export const UpdateEmail = ({ closeModal }: { const onSubmit = (e) => { e.preventDefault(); let userData = userDetails; - userData.emailAddress = userState.email; + if (userData) { + userData.emailAddress = userState.email; + } dispatch(updateUserEmail(userData, token, PROFILE_RELEVANT_FIELDS.concat(['id']))); setUserState({ ...userState, diff --git a/frontend/src/network/genericJSONRequest.ts b/frontend/src/network/genericJSONRequest.ts index 34e0e50b7e..a3d8919316 100644 --- a/frontend/src/network/genericJSONRequest.ts +++ b/frontend/src/network/genericJSONRequest.ts @@ -34,6 +34,7 @@ export function fetchLocalJSONAPI(endpoint: string, token: string, method = 'GET if (token) { headers['Authorization'] = `Token ${token}`; } + return fetch(url, { method: method, headers: headers, @@ -59,6 +60,9 @@ export function fetchLocalJSONAPIWithAbort( if (token) { headers['Authorization'] = `Token ${token}`; } + + // return fetch(url); + return fetch(url, { method: method, headers: headers, diff --git a/frontend/src/network/tests/server-handlers.ts b/frontend/src/network/tests/server-handlers.ts index 08769687eb..67ebfe0ca7 100644 --- a/frontend/src/network/tests/server-handlers.ts +++ b/frontend/src/network/tests/server-handlers.ts @@ -1,4 +1,4 @@ -import { DefaultBodyType, PathParams, ResponseComposition, rest, RestContext, RestRequest } from 'msw'; +import { DefaultBodyType, PathParams, ResponseComposition, http, RestContext, RestRequest, HttpResponse } from 'msw'; import { getProjectSummary, @@ -83,355 +83,357 @@ import { } from './mockData/taskHistory'; const handlers = [ - rest.get(API_URL + 'projects/:id/queries/summary/', async (req, res, ctx) => { - return res(ctx.json(getProjectSummary(Number(req.params.id)))); + http.get(API_URL + 'projects/:id/queries/summary/', async (info) => { + return HttpResponse.json(getProjectSummary(Number(info.params.id))); }), - rest.get(API_URL + 'projects/:id/activities/latest/', async (req, res, ctx) => { - return res(ctx.json(activities(Number(req.params.id)))); + http.get(API_URL + 'projects/:id/activities/latest/', async (info) => { + return HttpResponse.json(activities(Number(info.params.id))); }), - rest.get(API_URL + 'projects/:id/queries/priority-areas/', async (req, res, ctx) => { - return res(ctx.json([])); + http.get(API_URL + 'projects/:id/queries/priority-areas/', async () => { + return HttpResponse.json([]); }), - rest.get(API_URL + 'projects/', async (req, res, ctx) => { - return res(ctx.json(projects)); + http.get(API_URL + 'projects/', async () => { + return HttpResponse.json(projects); }), - rest.get(API_URL + 'projects/', async (req, res, ctx) => { - return res(ctx.json(projects)); + http.get(API_URL + 'projects/', async () => { + return HttpResponse.json(projects); }), - rest.get(API_URL + 'projects/:id/contributions/', async (req, res, ctx) => { - return res(ctx.json(projectContributions)); + http.get(API_URL + 'projects/:id/contributions/', async () => { + return HttpResponse.json(projectContributions); }), - rest.get(API_URL + 'projects/:id/', async (req, res, ctx) => { - return res(ctx.json(projectDetail)); + http.get(API_URL + 'projects/:id/', async () => { + return HttpResponse.json(projectDetail); }), - rest.get(API_URL + 'projects/:id/comments/', async (req, res, ctx) => { - return res(ctx.json(projectComments)); + http.get(API_URL + 'projects/:id/comments/', async () => { + return HttpResponse.json(projectComments); }), - rest.post(API_URL + 'projects/:id/comments/', async (req, res, ctx) => { - return res(ctx.json({ message: 'Comment posted' })); + http.post(API_URL + 'projects/:id/comments/', async () => { + return HttpResponse.json({ message: 'Comment posted' }); }), - rest.delete(API_URL + 'projects/:projectId/comments/:commentId/', async (req, res, ctx) => { - return res(ctx.json({ message: 'Message deleted' })); + http.delete(API_URL + 'projects/:projectId/comments/:commentId/', async () => { + return HttpResponse.json({ message: 'Message deleted' }); }), - rest.get(API_URL + 'projects/:id/favorite/', async (req, res, ctx) => { - return res(ctx.json(userFavorite)); + http.get(API_URL + 'projects/:id/favorite/', async () => { + return HttpResponse.json(userFavorite); }), - rest.post(API_URL + 'projects/:id/favorite/', async (req, res, ctx) => { - // return res(ctx.json(favoritePost(req.params.id))); - return res(ctx.json(favoritePost())); + http.post(API_URL + 'projects/:id/favorite/', async () => { + // return HttpResponse.json(favoritePost(req.params.id))); + return HttpResponse.json(favoritePost()); }), - rest.get(API_URL + 'projects/:id/statistics/', async (req, res, ctx) => { - const { id } = req.params; + http.get(API_URL + 'projects/:id/statistics/', async (info) => { + const { id } = info.params; // @ts-expect-error TS Migrations - return res(ctx.json(getProjectStats(id))); + return HttpResponse.json(getProjectStats(id)); }), - rest.get(API_URL + 'projects/:id/contributions/queries/day/', async (req, res, ctx) => { - return res(ctx.json(projectContributionsByDay)); + http.get(API_URL + 'projects/:id/contributions/queries/day/', async () => { + return HttpResponse.json(projectContributionsByDay); }), - rest.get(API_URL + 'projects/:id/tasks', async (req, res, ctx) => { - return res(ctx.json(tasksGeojson)); + http.get(API_URL + 'projects/:id/tasks', async () => { + return HttpResponse.json(tasksGeojson); }), - rest.get(API_URL + 'projects/queries/featured/', async (req, res, ctx) => { - return res(ctx.json(featuredProjects)); + http.get(API_URL + 'projects/queries/featured/', async () => { + return HttpResponse.json(featuredProjects); }), - rest.get(API_URL + 'projects/queries/:username/touched', async (req, res, ctx) => { - return res(ctx.json(userTouchedProjects)); + http.get(API_URL + 'projects/queries/:username/touched', async () => { + return HttpResponse.json(userTouchedProjects); }), - rest.get(API_URL + 'projects/:projectId/tasks/:taskId/', async (req, res, ctx) => { - return res(ctx.json(taskDetail(Number(req.params.taskId)))); + http.get(API_URL + 'projects/:projectId/tasks/:taskId/', async (info) => { + return HttpResponse.json(taskDetail(Number(info.params.taskId))); }), - rest.post( + http.post( API_URL + 'projects/:projectId/tasks/actions/stop-mapping/:taskId/', - async (req, res, ctx) => { - return res(ctx.json(stopMapping)); + async () => { + return HttpResponse.json(stopMapping); }, ), - rest.post( + http.post( API_URL + 'projects/:projectId/tasks/actions/stop-validation/', - async (req, res, ctx) => { - return res(ctx.json(stopValidation)); + async () => { + return HttpResponse.json(stopValidation); }, ), - rest.get(API_URL + 'projects/queries/:projectId/similar-projects/', async (req, res, ctx) => { - return res(ctx.json(similarProjects)); + http.get(API_URL + 'projects/queries/:projectId/similar-projects/', async () => { + return HttpResponse.json(similarProjects); }), // AUTHENTICATION - rest.get(API_URL + 'system/authentication/login/', async (req, res, ctx) => { - return res(ctx.json(authLogin)); + http.get(API_URL + 'system/authentication/login/', async () => { + return HttpResponse.json(authLogin); }), - rest.post(API_URL + 'users/actions/register/', async (req, res, ctx) => { - return res(ctx.json(userRegister)); + http.post(API_URL + 'users/actions/register/', async () => { + return HttpResponse.json(userRegister); }), - rest.patch(API_URL + 'users/me/actions/set-user/', async (req, res, ctx) => { - return res(ctx.json(setUser)); + http.patch(API_URL + 'users/me/actions/set-user/', async () => { + return HttpResponse.json(setUser); }), // NOTIFICATIONS - rest.get(API_URL + 'notifications', async (req, res, ctx) => { - return res(ctx.json(notifications)); + http.get(API_URL + 'notifications', async () => { + return HttpResponse.json(notifications); }), - rest.get(API_URL + 'notifications/:id', async (req, res, ctx) => { - return res(ctx.json(notifications.userMessages[0])); + http.get(API_URL + 'notifications/:id', async () => { + return HttpResponse.json(notifications.userMessages[0]); }), - rest.get(API_URL + 'notifications/queries/own/count-unread/', async (req, res, ctx) => { - return res(ctx.json(ownCountUnread)); + http.get(API_URL + 'notifications/queries/own/count-unread/', async () => { + return HttpResponse.json(ownCountUnread); }), - rest.delete(API_URL + 'notifications/:id/', async (req, res, ctx) => { - return res(ctx.json({ Success: 'Message deleted' })); + http.delete(API_URL + 'notifications/:id/', async () => { + return HttpResponse.json({ Success: 'Message deleted' }); }), - rest.delete(API_URL + 'notifications/delete-all/', async (req, res, ctx) => { - return res(ctx.json({ Success: 'Message deleted' })); + http.delete(API_URL + 'notifications/delete-all/', async () => { + return HttpResponse.json({ Success: 'Message deleted' }); }), - rest.delete(API_URL + 'notifications/delete-all/:types', async (req, res, ctx) => { - return res(ctx.json({ Success: 'Message deleted' })); + http.delete(API_URL + 'notifications/delete-all/:types', async () => { + return HttpResponse.json({ Success: 'Message deleted' }); }), - rest.delete(API_URL + 'notifications/delete-multiple/', async (req, res, ctx) => { - return res(ctx.json({ Success: 'Message deleted' })); + http.delete(API_URL + 'notifications/delete-multiple/', async () => { + return HttpResponse.json({ Success: 'Message deleted' }); }), - rest.post(API_URL + 'notifications/queries/own/post-unread/', async (req, res, ctx) => { - return res(ctx.json(null)); + http.post(API_URL + 'notifications/queries/own/post-unread/', async () => { + return HttpResponse.json(null); }), - rest.post(API_URL + 'notifications/mark-as-read-all/', async (req, res, ctx) => { - return res(ctx.json(null)); + http.post(API_URL + 'notifications/mark-as-read-all/', async () => { + return HttpResponse.json(null); }), - rest.post(API_URL + 'notifications/mark-as-read-all/:types', async (req, res, ctx) => { - return res(ctx.json(null)); + http.post(API_URL + 'notifications/mark-as-read-all/:types', async () => { + return HttpResponse.json(null); }), - rest.post(API_URL + 'notifications/mark-as-read-multiple/', async (req, res, ctx) => { - return res(ctx.json(null)); + http.post(API_URL + 'notifications/mark-as-read-multiple/', async () => { + return HttpResponse.json(null); }), // USER - rest.get(API_URL + 'users/statistics/', async (req, res, ctx) => { - return res(ctx.json(newUsersStats)); + http.get(API_URL + 'users/statistics/', async () => { + return HttpResponse.json(newUsersStats); }), - rest.get(API_URL + 'tasks/statistics/', async (req, res, ctx) => { - return res(ctx.json(newUsersStats)); + http.get(API_URL + 'tasks/statistics/', async () => { + return HttpResponse.json(newUsersStats); }), - rest.get(API_URL + 'users/queries/:username', async (req, res, ctx) => { - return res(ctx.json(userQueryDetails)); + http.get(API_URL + 'users/queries/:username', async () => { + return HttpResponse.json(userQueryDetails); }), - rest.get(API_URL + 'users', async (req, res, ctx) => { - return res(ctx.json(usersList)); + http.get(API_URL + 'users', async () => { + return HttpResponse.json(usersList); }), - rest.patch(API_URL + 'users/:username/actions/set-level/:level', (req, res, ctx) => { - return res(ctx.json(levelUpdationSuccess)); + http.patch(API_URL + 'users/:username/actions/set-level/:level', () => { + return HttpResponse.json(levelUpdationSuccess); }), - rest.patch(API_URL + 'users/:username/actions/set-role/:role', (req, res, ctx) => { - return res(ctx.json(roleUpdationSuccess)); + http.patch(API_URL + 'users/:username/actions/set-role/:role', () => { + return HttpResponse.json(roleUpdationSuccess); }), - rest.get(API_URL + 'users/:userId/tasks/', async (req, res, ctx) => { - return res(ctx.json(userTasks)); + http.get(API_URL + 'users/:userId/tasks/', async () => { + return HttpResponse.json(userTasks); }), - rest.get(API_URL + 'users/:username/statistics/', async (req, res, ctx) => { - return res(ctx.json(userStats)); + http.get(API_URL + 'users/:username/statistics/', async () => { + return HttpResponse.json(userStats); }), - rest.get(API_URL + 'users/queries/tasks/locked/details/', async (req, res, ctx) => { - return res(ctx.json(userLockedTasksDetails)); + http.get(API_URL + 'users/queries/tasks/locked/details/', async () => { + return HttpResponse.json(userLockedTasksDetails); }), // ORGANIZATIONS - rest.get(API_URL + 'organisations', (req, res, ctx) => { - return res(ctx.json(organisations)); + http.get(API_URL + 'organisations', () => { + return HttpResponse.json(organisations); }), - rest.get(API_URL + 'organisations/:id/', (req, res, ctx) => { - return res(ctx.json(organisation)); + http.get(API_URL + 'organisations/:id/', () => { + return HttpResponse.json(organisation); }), - rest.post(API_URL + 'organisations', (req, res, ctx) => { - return res(ctx.json(organisationCreationSuccess)); + http.post(API_URL + 'organisations', () => { + return HttpResponse.json(organisationCreationSuccess); }), - rest.patch(API_URL + 'organisations/:id/', (req, res, ctx) => { - return res(ctx.json(organisationUpdationSuccess)); + http.patch(API_URL + 'organisations/:id/', () => { + return HttpResponse.json(organisationUpdationSuccess); }), - rest.delete(API_URL + 'organisations/:id', (req, res, ctx) => { - return res(ctx.json(organisationDeletionSuccess)); + http.delete(API_URL + 'organisations/:id', () => { + return HttpResponse.json(organisationDeletionSuccess); }), // TEAMS - rest.get(API_URL + 'teams', (req, res, ctx) => { - return res(ctx.json(teams)); + http.get(API_URL + 'teams', () => { + return HttpResponse.json(teams); }), - rest.get(API_URL + 'teams/:id/', (req, res, ctx) => { - return res(ctx.json(team)); + http.get(API_URL + 'teams/:id/', () => { + return HttpResponse.json(team); }), - rest.post(API_URL + 'teams', (req, res, ctx) => { - return res(ctx.json(teamCreationSuccess)); + http.post(API_URL + 'teams', () => { + return HttpResponse.json(teamCreationSuccess); }), - rest.patch(API_URL + 'teams/:id/', (req, res, ctx) => { - return res(ctx.json(teamUpdationSuccess)); + http.patch(API_URL + 'teams/:id/', () => { + return HttpResponse.json(teamUpdationSuccess); }), - rest.delete(API_URL + 'teams/:id', (req, res, ctx) => { - return res(ctx.json(teamDeletionSuccess)); + http.delete(API_URL + 'teams/:id', () => { + return HttpResponse.json(teamDeletionSuccess); }), // LICENSES - rest.get(API_URL + 'licenses', (req, res, ctx) => { - return res(ctx.json(licenses)); + http.get(API_URL + 'licenses', () => { + return HttpResponse.json(licenses); }), - rest.get(API_URL + 'licenses/:id/', (req, res, ctx) => { - return res(ctx.json(license)); + http.get(API_URL + 'licenses/:id/', () => { + return HttpResponse.json(license); }), - rest.patch(API_URL + 'licenses/:id', (req, res, ctx) => { - return res(ctx.json(req.body)); + http.patch(API_URL + 'licenses/:id', (info) => { + return HttpResponse.json(info.request.text()); }), - rest.delete(API_URL + 'licenses/:id', (req, res, ctx) => { - return res(ctx.json(licenseDeletionSuccess)); + http.delete(API_URL + 'licenses/:id', () => { + return HttpResponse.json(licenseDeletionSuccess); }), - rest.post(API_URL + 'licenses', (req, res, ctx) => { - return res(ctx.json(licenseCreationSuccess)); + http.post(API_URL + 'licenses', () => { + return HttpResponse.json(licenseCreationSuccess); }), - rest.post(API_URL + 'licenses/:id/actions/accept-for-me/', (req, res, ctx) => { - return res(ctx.json(licenseAccepted)); + http.post(API_URL + 'licenses/:id/actions/accept-for-me/', () => { + return HttpResponse.json(licenseAccepted); }), // CAMPAIGNS - rest.get(API_URL + 'campaigns', (req, res, ctx) => { - return res(ctx.json(campaigns)); + http.get(API_URL + 'campaigns', () => { + return HttpResponse.json(campaigns); }), - rest.post(API_URL + 'campaigns', (req, res, ctx) => { - return res(ctx.json(campaignCreationSuccess)); + http.post(API_URL + 'campaigns', () => { + return HttpResponse.json(campaignCreationSuccess); }), - rest.get(API_URL + 'campaigns/:id', (req, res, ctx) => { - return res(ctx.json(campaign)); + http.get(API_URL + 'campaigns/:id', () => { + return HttpResponse.json(campaign); }), - rest.patch(API_URL + 'campaigns/:id', (req, res, ctx) => { - return res(ctx.json(campaignUpdationSuccess)); + http.patch(API_URL + 'campaigns/:id', () => { + return HttpResponse.json(campaignUpdationSuccess); }), - rest.delete(API_URL + 'campaigns/:id', (req, res, ctx) => { - return res(ctx.json(campaignDeletionSuccess)); + http.delete(API_URL + 'campaigns/:id', () => { + return HttpResponse.json(campaignDeletionSuccess); }), // INTERESTS - rest.get(API_URL + 'interests', (req, res, ctx) => { - return res(ctx.json(interests)); + http.get(API_URL + 'interests', () => { + return HttpResponse.json(interests); }), - rest.get(API_URL + 'interests/:id/', (req, res, ctx) => { - return res(ctx.json(interest)); + http.get(API_URL + 'interests/:id/', () => { + return HttpResponse.json(interest); }), - rest.patch(API_URL + 'interests/:id', async (req, res, ctx) => { - const body = await req.json(); - return res(ctx.json(interestUpdationSuccess(body.name))); + http.patch(API_URL + 'interests/:id', async (info) => { + const body = await info.request.json(); + return HttpResponse.json(interestUpdationSuccess(body.name)); }), - rest.delete(API_URL + 'interests/:id', (req, res, ctx) => { - return res(ctx.json(interestDeletionSuccess)); + http.delete(API_URL + 'interests/:id', () => { + return HttpResponse.json(interestDeletionSuccess); }), - rest.post(API_URL + 'interests', async (req, res, ctx) => { - const body = await req.json(); - return res(ctx.json(interestCreationSuccess(body.name))); + http.post(API_URL + 'interests', async (info) => { + const body = await info.request.json(); + return HttpResponse.json(interestCreationSuccess(body.name)); }), - rest.get(API_URL + 'countries', (req, res, ctx) => { - return res(ctx.json(countries)); + http.get(API_URL + 'countries', () => { + return HttpResponse.json(countries); }), - rest.get(API_URL + 'system/banner/', (req, res, ctx) => { - return res(ctx.json(banner)); + http.get(API_URL + 'system/banner/', () => { + return HttpResponse.json(banner); }), //TASKS - rest.post( + http.post( API_URL + 'projects/:projectId/tasks/actions/lock-for-mapping/:taskId', - (req, res, ctx) => { - return res(ctx.json(lockForMapping)); + () => { + return HttpResponse.json(lockForMapping); }, ), - rest.post(API_URL + 'projects/:projectId/tasks/actions/lock-for-validation/', (req, res, ctx) => { - return res(ctx.json(lockForValidation)); + http.post(API_URL + 'projects/:projectId/tasks/actions/lock-for-validation/', () => { + return HttpResponse.json(lockForValidation); }), - rest.post( + http.post( API_URL + 'projects/:projectId/tasks/actions/unlock-after-mapping/:taskId', - (req, res, ctx) => { - return res(ctx.json(submitMappingTask)); + () => { + return HttpResponse.json(submitMappingTask); }, ), - rest.post( + http.post( API_URL + 'projects/:projectId/tasks/actions/unlock-after-validation/', - (req, res, ctx) => { - return res(ctx.json(submitValidationTask)); + () => { + return HttpResponse.json(submitValidationTask); }, ), - rest.get(API_URL + 'users/queries/tasks/locked/', (req, res, ctx) => { - return res(ctx.json(userLockedTasks)); + http.get(API_URL + 'users/queries/tasks/locked/', () => { + return HttpResponse.json(userLockedTasks); }), - rest.post(API_URL + 'projects/:projectId/tasks/actions/split/:taskId/', (req, res, ctx) => { - return res(ctx.json(splitTask)); + http.post(API_URL + 'projects/:projectId/tasks/actions/split/:taskId/', () => { + return HttpResponse.json(splitTask); }), - rest.post(API_URL + 'projects/:projectId/tasks/actions/extend/', (req, res, ctx) => { - return res(ctx.json(extendTask)); + http.post(API_URL + 'projects/:projectId/tasks/actions/extend/', () => { + return HttpResponse.json(extendTask); }), - rest.get(API_URL + 'system/statistics/', (req, res, ctx) => { - return res(ctx.json(systemStats)); + http.get(API_URL + 'system/statistics/', () => { + return HttpResponse.json(systemStats); }), // EXTERNAL API - rest.get(`${OHSOME_STATS_BASE_URL}/stats/${defaultChangesetComment}-%2A`, (req, res, ctx) => { - return res(ctx.json(homepageStats)); + http.get(`${OHSOME_STATS_BASE_URL}/stats/${defaultChangesetComment}-%2A`, () => { + return HttpResponse.json(homepageStats); }), - rest.get(`${OHSOME_STATS_BASE_URL}/hot-tm-user`, (req, res, ctx) => { - return res(ctx.json(ohsomeNowUserStats)); + http.get(`${OHSOME_STATS_BASE_URL}/hot-tm-user`, () => { + return HttpResponse.json(ohsomeNowUserStats); }), - rest.get(`${OHSOME_STATS_BASE_URL}/stats/:projectId`, (req, res, ctx) => { - return res(ctx.json(osmStatsProject)); + http.get(`${OHSOME_STATS_BASE_URL}/stats/:projectId`, () => { + return HttpResponse.json(osmStatsProject); }), - rest.get(`${OHSOME_STATS_BASE_URL}/metadata`, (req, res, ctx) => { - return res(ctx.json(ohsomeNowMetadata)); + http.get(`${OHSOME_STATS_BASE_URL}/metadata`, () => { + return HttpResponse.json(ohsomeNowMetadata); }), - rest.get('http://127.0.0.1:8111/version', (req, res, ctx) => { - return res(ctx.json(josmRemote)); + http.get('http://127.0.0.1:8111/version', () => { + return HttpResponse.json(josmRemote); }), - rest.get('http://127.0.0.1:8111/load_data', (req, res, ctx) => { - return res(ctx.text('OK')); + http.get('http://127.0.0.1:8111/load_data', () => { + return new HttpResponse('OK'); }), - rest.get('http://127.0.0.1:8111/load_and_zoom', (req, res, ctx) => { - return res(ctx.text('OK')); + http.get('http://127.0.0.1:8111/load_and_zoom', () => { + return new HttpResponse('OK'); }), - rest.get('http://127.0.0.1:8111/import', (req, res, ctx) => { - return res(ctx.text('OK')); + http.get('http://127.0.0.1:8111/import', () => { + return new HttpResponse('OK'); }), ]; -const failedToConnectError = (_req: RestRequest>, res: ResponseComposition, _ctx: RestContext) => { - return res.networkError('Failed to connect'); +const failedToConnectError = () => { + return HttpResponse.error(); }; const faultyHandlers = [ - rest.get(API_URL + 'projects/:id/', async (req, res, ctx) => { - return res.once( - ctx.status(403), - ctx.json({ - SubCode: `PrivateProject`, - }), - ); - }), - rest.get(API_URL + 'projects/:id/', async (req, res, ctx) => { - return res.once( - ctx.status(403), - ctx.json({ - SubCode: `Project Not Found`, - }), - ); - }), - rest.get('http://127.0.0.1:8111/version', failedToConnectError), - rest.post( + http.get(API_URL + 'projects/:id/', async () => { + return Response.json({ + SubCode: `PrivateProject`, + }, { + status: 403, + }); + }), + http.get(API_URL + 'projects/:id/', async () => { + return Response.json({ + SubCode: `Project Not Found`, + }, { + status: 403, + }); + }), + http.get('http://127.0.0.1:8111/version', failedToConnectError), + http.post( API_URL + 'projects/:projectId/tasks/actions/lock-for-mapping/:taskId', failedToConnectError, ), - rest.post( + http.post( API_URL + 'projects/:projectId/tasks/actions/lock-for-validation', failedToConnectError, ), - rest.post(API_URL + 'projects/:projectId/tasks/actions/extend/', failedToConnectError), - rest.post(API_URL + 'projects/:projectId/tasks/actions/split/:taskId/', failedToConnectError), - rest.get(API_URL + 'projects/queries/:projectId/similar-projects/', failedToConnectError), - rest.post(API_URL + 'licenses', failedToConnectError), - rest.patch(API_URL + 'licenses/:id', failedToConnectError), - rest.post(API_URL + 'interests', failedToConnectError), - rest.post(API_URL + 'campaigns', failedToConnectError), - rest.patch(API_URL + 'campaigns/:id', failedToConnectError), - rest.delete(API_URL + 'campaigns/:id', failedToConnectError), - rest.post(API_URL + 'teams', failedToConnectError), - rest.patch(API_URL + 'teams/:id/', failedToConnectError), - rest.delete(API_URL + 'teams/:id', failedToConnectError), - rest.post(API_URL + 'organisations', failedToConnectError), - rest.delete(API_URL + 'notifications/delete-multiple/', failedToConnectError), - rest.delete(API_URL + 'notifications/delete-all/', failedToConnectError), - rest.delete(API_URL + 'notifications/delete-all/:types', failedToConnectError), - rest.post(API_URL + 'notifications/mark-as-read-all/', failedToConnectError), - rest.post(API_URL + 'notifications/mark-as-read-all/:types', failedToConnectError), - rest.post(API_URL + 'notifications/mark-as-read-multiple/', failedToConnectError), - rest.get(API_URL + 'notifications/:id/', failedToConnectError), - rest.delete(API_URL + 'notifications/:id/', failedToConnectError), - rest.patch(API_URL + 'users/:username/actions/set-level/:level', failedToConnectError), - rest.patch(API_URL + 'users/:username/actions/set-role/:role', failedToConnectError), + http.post(API_URL + 'projects/:projectId/tasks/actions/extend/', failedToConnectError), + http.post(API_URL + 'projects/:projectId/tasks/actions/split/:taskId/', failedToConnectError), + http.get(API_URL + 'projects/queries/:projectId/similar-projects/', failedToConnectError), + http.post(API_URL + 'licenses', failedToConnectError), + http.patch(API_URL + 'licenses/:id', failedToConnectError), + http.post(API_URL + 'interests', failedToConnectError), + http.post(API_URL + 'campaigns', failedToConnectError), + http.patch(API_URL + 'campaigns/:id', failedToConnectError), + http.delete(API_URL + 'campaigns/:id', failedToConnectError), + http.post(API_URL + 'teams', failedToConnectError), + http.patch(API_URL + 'teams/:id/', failedToConnectError), + http.delete(API_URL + 'teams/:id', failedToConnectError), + http.post(API_URL + 'organisations', failedToConnectError), + http.delete(API_URL + 'notifications/delete-multiple/', failedToConnectError), + http.delete(API_URL + 'notifications/delete-all/', failedToConnectError), + http.delete(API_URL + 'notifications/delete-all/:types', failedToConnectError), + http.post(API_URL + 'notifications/mark-as-read-all/', failedToConnectError), + http.post(API_URL + 'notifications/mark-as-read-all/:types', failedToConnectError), + http.post(API_URL + 'notifications/mark-as-read-multiple/', failedToConnectError), + http.get(API_URL + 'notifications/:id/', failedToConnectError), + http.delete(API_URL + 'notifications/:id/', failedToConnectError), + http.patch(API_URL + 'users/:username/actions/set-level/:level', failedToConnectError), + http.patch(API_URL + 'users/:username/actions/set-role/:role', failedToConnectError), ]; export { handlers, faultyHandlers }; diff --git a/frontend/src/network/tests/server.ts b/frontend/src/network/tests/server.ts index b0cafd43d1..a86a8441d5 100644 --- a/frontend/src/network/tests/server.ts +++ b/frontend/src/network/tests/server.ts @@ -1,11 +1,8 @@ import { setupServer } from 'msw/node'; - -import { faultyHandlers, handlers } from './server-handlers'; -import { API_URL } from '../../config'; +import { handlers } from './server-handlers'; // Setup requests interception using the given handlers. export const server = setupServer(...handlers); -console.log(import.meta.env.VITE_API_URL, API_URL.toString(), "MEOW") beforeAll(() => { server.use(...handlers); server.listen({ onUnhandledRequest: 'warn' }) @@ -17,9 +14,9 @@ afterAll(() => server.close()) // Reset handlers after each test `important for test isolation` afterEach(() => server.resetHandlers()) -// export const setupHandlers = () => { -// server.use(...handlers); -// }; +export const setupHandlers = () => { + server.use(...handlers); +}; export const setupFaultyHandlers = () => { server.resetHandlers(); diff --git a/frontend/src/store/actions/auth.ts b/frontend/src/store/actions/auth.ts index 46197fe5f1..a4de00c7f8 100644 --- a/frontend/src/store/actions/auth.ts +++ b/frontend/src/store/actions/auth.ts @@ -24,6 +24,7 @@ export function clearUserDetails() { } export const updateUserEmail = (userDetails, token, relevant_fields) => (dispatch) => { + if (!userDetails) return; const filtered = Object.keys(userDetails) .filter((key) => relevant_fields.includes(key)) .reduce((obj, key) => { diff --git a/frontend/src/utils/promise.ts b/frontend/src/utils/promise.ts index 81208988b2..701087af65 100644 --- a/frontend/src/utils/promise.ts +++ b/frontend/src/utils/promise.ts @@ -14,7 +14,7 @@ export function cancelablePromise(promise: Promise) { }; } -export async function handleErrors(response) { +export async function handleErrors(response: Response) { if (response.ok) { return response; } diff --git a/frontend/yarn.lock b/frontend/yarn.lock index e36d6ea2a5..2d88dad424 100644 --- a/frontend/yarn.lock +++ b/frontend/yarn.lock @@ -1173,6 +1173,28 @@ resolved "https://registry.yarnpkg.com/@bcoe/v8-coverage/-/v8-coverage-0.2.3.tgz#75a2e8b51cb758a7553d6804a5932d7aace75c39" integrity sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw== +"@bundled-es-modules/cookie@^2.0.1": + version "2.0.1" + resolved "https://registry.yarnpkg.com/@bundled-es-modules/cookie/-/cookie-2.0.1.tgz#b41376af6a06b3e32a15241d927b840a9b4de507" + integrity sha512-8o+5fRPLNbjbdGRRmJj3h6Hh1AQJf2dk3qQ/5ZFb+PXkRNiSoMGGUKlsgLfrxneb72axVJyIYji64E2+nNfYyw== + dependencies: + cookie "^0.7.2" + +"@bundled-es-modules/statuses@^1.0.1": + version "1.0.1" + resolved "https://registry.yarnpkg.com/@bundled-es-modules/statuses/-/statuses-1.0.1.tgz#761d10f44e51a94902c4da48675b71a76cc98872" + integrity sha512-yn7BklA5acgcBr+7w064fGV+SGIFySjCKpqjcWgBAIfrAkY+4GQTJJHQMeT3V/sgz23VTEVV8TtOmkvJAhFVfg== + dependencies: + statuses "^2.0.1" + +"@bundled-es-modules/tough-cookie@^0.1.6": + version "0.1.6" + resolved "https://registry.yarnpkg.com/@bundled-es-modules/tough-cookie/-/tough-cookie-0.1.6.tgz#fa9cd3cedfeecd6783e8b0d378b4a99e52bde5d3" + integrity sha512-dvMHbL464C0zI+Yqxbz6kZ5TOEp7GLW+pry/RWndAR8MJQAXZ2rPmIs8tziTZjeIyhSNZgZbCePtfSbdWqStJw== + dependencies: + "@types/tough-cookie" "^4.0.5" + tough-cookie "^4.1.4" + "@craco/craco@^7.1.0": version "7.1.0" resolved "https://registry.yarnpkg.com/@craco/craco/-/craco-7.1.0.tgz#12bd394c7f0334e214302e4d35a1768f68042fbb" @@ -1710,6 +1732,39 @@ resolved "https://registry.yarnpkg.com/@humanwhocodes/object-schema/-/object-schema-2.0.3.tgz#4a2868d75d6d6963e423bcf90b7fd1be343409d3" integrity sha512-93zYdMES/c1D69yZiKDBj0V24vqNzB/koF26KPaagAfd3P/4gUlh3Dys5ogAK+Exi9QyzlD8x/08Zt7wIKcDcA== +"@inquirer/confirm@^5.0.0": + version "5.1.1" + resolved "https://registry.yarnpkg.com/@inquirer/confirm/-/confirm-5.1.1.tgz#18385064b8275eb79fdba505ce527801804eea04" + integrity sha512-vVLSbGci+IKQvDOtzpPTCOiEJCNidHcAq9JYVoWTW0svb5FiwSLotkM+JXNXejfjnzVYV9n0DTBythl9+XgTxg== + dependencies: + "@inquirer/core" "^10.1.2" + "@inquirer/type" "^3.0.2" + +"@inquirer/core@^10.1.2": + version "10.1.2" + resolved "https://registry.yarnpkg.com/@inquirer/core/-/core-10.1.2.tgz#a9c5b9ed814a636e99b5c0a8ca4f1626d99fd75d" + integrity sha512-bHd96F3ezHg1mf/J0Rb4CV8ndCN0v28kUlrHqP7+ECm1C/A+paB7Xh2lbMk6x+kweQC+rZOxM/YeKikzxco8bQ== + dependencies: + "@inquirer/figures" "^1.0.9" + "@inquirer/type" "^3.0.2" + ansi-escapes "^4.3.2" + cli-width "^4.1.0" + mute-stream "^2.0.0" + signal-exit "^4.1.0" + strip-ansi "^6.0.1" + wrap-ansi "^6.2.0" + yoctocolors-cjs "^2.1.2" + +"@inquirer/figures@^1.0.9": + version "1.0.9" + resolved "https://registry.yarnpkg.com/@inquirer/figures/-/figures-1.0.9.tgz#9d8128f8274cde4ca009ca8547337cab3f37a4a3" + integrity sha512-BXvGj0ehzrngHTPTDqUoDT3NXL8U0RxUk2zJm2A66RhCEIWdtU1v6GuUqNAgArW4PQ9CinqIWyHdQgdwOj06zQ== + +"@inquirer/type@^3.0.2": + version "3.0.2" + resolved "https://registry.yarnpkg.com/@inquirer/type/-/type-3.0.2.tgz#baff9f8d70947181deb36772cd9a5b6876d3e60c" + integrity sha512-ZhQ4TvhwHZF+lGhQ2O/rsjo80XoZR5/5qhOY3t6FJuX5XBg5Be8YzYTvaUGJnc12AUGI2nr4QSUE4PhKSigx7g== + "@isaacs/cliui@^8.0.2": version "8.0.2" resolved "https://registry.yarnpkg.com/@isaacs/cliui/-/cliui-8.0.2.tgz#b37667b7bc181c168782259bab42474fbf52b550" @@ -2206,27 +2261,17 @@ rw "^1.3.3" sort-object "^3.0.3" -"@mswjs/cookies@^0.2.2": - version "0.2.2" - resolved "https://registry.yarnpkg.com/@mswjs/cookies/-/cookies-0.2.2.tgz#b4e207bf6989e5d5427539c2443380a33ebb922b" - integrity sha512-mlN83YSrcFgk7Dm1Mys40DLssI1KdJji2CMKN8eOlBqsTADYzj2+jWzsANsUTFbxDMWPD5e9bfA1RGqBpS3O1g== - dependencies: - "@types/set-cookie-parser" "^2.4.0" - set-cookie-parser "^2.4.6" - -"@mswjs/interceptors@^0.17.10": - version "0.17.10" - resolved "https://registry.yarnpkg.com/@mswjs/interceptors/-/interceptors-0.17.10.tgz#857b41f30e2b92345ed9a4e2b1d0a08b8b6fcad4" - integrity sha512-N8x7eSLGcmUFNWZRxT1vsHvypzIRgQYdG0rJey/rZCy6zT/30qDt8Joj7FxzGNLSwXbeZqJOMqDurp7ra4hgbw== - dependencies: - "@open-draft/until" "^1.0.3" - "@types/debug" "^4.1.7" - "@xmldom/xmldom" "^0.8.3" - debug "^4.3.3" - headers-polyfill "3.2.5" - outvariant "^1.2.1" - strict-event-emitter "^0.2.4" - web-encoding "^1.1.5" +"@mswjs/interceptors@^0.37.0": + version "0.37.3" + resolved "https://registry.yarnpkg.com/@mswjs/interceptors/-/interceptors-0.37.3.tgz#1ed2460c2f056ffad2a179a119bb755ac50140a6" + integrity sha512-USvgCL/uOGFtVa6SVyRrC8kIAedzRohxIXN5LISlg5C5vLZCn7dgMFVSNhSF9cuBEFrm/O2spDWEZeMnw4ZXYg== + dependencies: + "@open-draft/deferred-promise" "^2.2.0" + "@open-draft/logger" "^0.3.0" + "@open-draft/until" "^2.0.0" + is-node-process "^1.2.0" + outvariant "^1.4.3" + strict-event-emitter "^0.5.1" "@nicolo-ribaudo/eslint-scope-5-internals@5.1.1-v1": version "5.1.1-v1" @@ -2256,10 +2301,23 @@ "@nodelib/fs.scandir" "2.1.5" fastq "^1.6.0" -"@open-draft/until@^1.0.3": - version "1.0.3" - resolved "https://registry.yarnpkg.com/@open-draft/until/-/until-1.0.3.tgz#db9cc719191a62e7d9200f6e7bab21c5b848adca" - integrity sha512-Aq58f5HiWdyDlFffbbSjAlv596h/cOnt2DO1w3DOC7OJ5EHs0hd/nycJfiu9RJbT6Yk6F1knnRRXNSpxoIVZ9Q== +"@open-draft/deferred-promise@^2.2.0": + version "2.2.0" + resolved "https://registry.yarnpkg.com/@open-draft/deferred-promise/-/deferred-promise-2.2.0.tgz#4a822d10f6f0e316be4d67b4d4f8c9a124b073bd" + integrity sha512-CecwLWx3rhxVQF6V4bAgPS5t+So2sTbPgAzafKkVizyi7tlwpcFpdFqq+wqF2OwNBmqFuu6tOyouTuxgpMfzmA== + +"@open-draft/logger@^0.3.0": + version "0.3.0" + resolved "https://registry.yarnpkg.com/@open-draft/logger/-/logger-0.3.0.tgz#2b3ab1242b360aa0adb28b85f5d7da1c133a0954" + integrity sha512-X2g45fzhxH238HKO4xbSr7+wBS8Fvw6ixhTDuvLd5mqh6bJJCFAPwU9mPDxbcrRtfxv4u5IHCEH77BmxvXmmxQ== + dependencies: + is-node-process "^1.2.0" + outvariant "^1.4.0" + +"@open-draft/until@^2.0.0", "@open-draft/until@^2.1.0": + version "2.1.0" + resolved "https://registry.yarnpkg.com/@open-draft/until/-/until-2.1.0.tgz#0acf32f470af2ceaf47f095cdecd40d68666efda" + integrity sha512-U69T3ItWHvLwGg5eJ0n3I62nWuE6ilHlmz7zM0npLBRvPRd7e6NYmg54vvRtP5mZG7kZqZCFVdsTWo7BPtBujg== "@pixi/accessibility@7.4.0": version "7.4.0" @@ -3702,10 +3760,10 @@ dependencies: "@types/node" "*" -"@types/cookie@^0.4.1": - version "0.4.1" - resolved "https://registry.yarnpkg.com/@types/cookie/-/cookie-0.4.1.tgz#bfd02c1f2224567676c1545199f87c3a861d878d" - integrity sha512-XW/Aa8APYr6jSVVA1y/DEIZX0/GMKLEVekNG727R8cs56ahETkRAy/3DR7+fJyh7oUgGwNQaRfXCun0+KbWY7Q== +"@types/cookie@^0.6.0": + version "0.6.0" + resolved "https://registry.yarnpkg.com/@types/cookie/-/cookie-0.6.0.tgz#eac397f28bf1d6ae0ae081363eca2f425bedf0d5" + integrity sha512-4Kh9a6B2bQciAhf7FSuMRRkUWecJgJu9nPnx3yzpsfXX/c50REIqpHY4C82bXP90qrLtXtkDxTZosYO3UpOwlA== "@types/css-font-loading-module@^0.0.12": version "0.0.12" @@ -3717,7 +3775,7 @@ resolved "https://registry.yarnpkg.com/@types/d3-polygon/-/d3-polygon-3.0.2.tgz#dfae54a6d35d19e76ac9565bcb32a8e54693189c" integrity sha512-ZuWOtMaHCkN9xoeEMr1ubW2nGWsp4nIql+OPQRstu4ypeZ+zk3YKqQT0CXVe/PYqrKpZAi+J9mTs05TKwjXSRA== -"@types/debug@^4.0.0", "@types/debug@^4.1.7": +"@types/debug@^4.0.0": version "4.1.12" resolved "https://registry.yarnpkg.com/@types/debug/-/debug-4.1.12.tgz#a155f21690871953410df4b6b6f53187f0500917" integrity sha512-vIChWdVG3LG1SMxEvI/AK+FWJthlrqlTu7fbrlywTkkaONwk/UAGaULXRlf8vkzFBLVm0zkMdCquhL5aOjhXPQ== @@ -3860,11 +3918,6 @@ dependencies: "@types/istanbul-lib-report" "*" -"@types/js-levenshtein@^1.1.1": - version "1.1.3" - resolved "https://registry.yarnpkg.com/@types/js-levenshtein/-/js-levenshtein-1.1.3.tgz#a6fd0bdc8255b274e5438e0bfb25f154492d1106" - integrity sha512-jd+Q+sD20Qfu9e2aEXogiO3vpOC1PYJOUdyN9gvs4Qrvkg4wF43L5OhqrPeokdv8TL0/mXoYfpkcoGZMNN2pkQ== - "@types/json-schema@*", "@types/json-schema@^7.0.4", "@types/json-schema@^7.0.5", "@types/json-schema@^7.0.8", "@types/json-schema@^7.0.9": version "7.0.15" resolved "https://registry.yarnpkg.com/@types/json-schema/-/json-schema-7.0.15.tgz#596a1747233694d50f6ad8a7869fcb6f56cf5841" @@ -4111,13 +4164,6 @@ "@types/node" "*" "@types/send" "*" -"@types/set-cookie-parser@^2.4.0": - version "2.4.10" - resolved "https://registry.yarnpkg.com/@types/set-cookie-parser/-/set-cookie-parser-2.4.10.tgz#ad3a807d6d921db9720621ea3374c5d92020bcbc" - integrity sha512-GGmQVGpQWUe5qglJozEjZV/5dyxbOOZ0LHe/lqyWssB88Y4svNfst0uqBVscdDeIKl5Jy5+aPSvy7mI9tYRguw== - dependencies: - "@types/node" "*" - "@types/slug@^5.0.9": version "5.0.9" resolved "https://registry.yarnpkg.com/@types/slug/-/slug-5.0.9.tgz#e5b213a9d7797d40d362ba85e2a7bbcd4df4ed40" @@ -4135,6 +4181,11 @@ resolved "https://registry.yarnpkg.com/@types/stack-utils/-/stack-utils-2.0.3.tgz#6209321eb2c1712a7e7466422b8cb1fc0d9dd5d8" integrity sha512-9aEbYZ3TbYMznPdcdr3SmIrLXwC/AKZXQeCf9Pgao5CKb8CyHuEX5jzWPTkvregvhRJHcpRO6BFoGW9ycaOkYw== +"@types/statuses@^2.0.4": + version "2.0.5" + resolved "https://registry.yarnpkg.com/@types/statuses/-/statuses-2.0.5.tgz#f61ab46d5352fd73c863a1ea4e1cef3b0b51ae63" + integrity sha512-jmIUGWrAiwu3dZpxntxieC+1n/5c3mjrImkmOSQ2NC5uP6cYO4aAZDdSmRcI5C1oiTmqlZGHC+/NmJrKogbP5A== + "@types/supercluster@^7.1.3": version "7.1.3" resolved "https://registry.yarnpkg.com/@types/supercluster/-/supercluster-7.1.3.tgz#1a1bc2401b09174d9c9e44124931ec7874a72b27" @@ -4142,6 +4193,11 @@ dependencies: "@types/geojson" "*" +"@types/tough-cookie@^4.0.5": + version "4.0.5" + resolved "https://registry.yarnpkg.com/@types/tough-cookie/-/tough-cookie-4.0.5.tgz#cb6e2a691b70cb177c6e3ae9c1d2e8b2ea8cd304" + integrity sha512-/Ad8+nIOV7Rl++6f1BdKxFSMgmoqEoYbHRpPcx3JEfv8VRsQe9Z4mCXeJBzxs7mbHY/XOZZuXlRNfhpVPbs6ZA== + "@types/trusted-types@^2.0.2", "@types/trusted-types@^2.0.7": version "2.0.7" resolved "https://registry.yarnpkg.com/@types/trusted-types/-/trusted-types-2.0.7.tgz#baccb07a970b91707df3a3e8ba6896c57ead2d11" @@ -4517,11 +4573,6 @@ resolved "https://registry.yarnpkg.com/@xmldom/xmldom/-/xmldom-0.8.3.tgz#beaf980612532aa9a3004aff7e428943aeaa0711" integrity sha512-Lv2vySXypg4nfa51LY1nU8yDAGo/5YwF+EY/rUZgIbfvwVARcd67ttCM8SMsTeJy51YhHYavEq+FS6R0hW9PFQ== -"@xmldom/xmldom@^0.8.3": - version "0.8.10" - resolved "https://registry.yarnpkg.com/@xmldom/xmldom/-/xmldom-0.8.10.tgz#a1337ca426aa61cef9fe15b5b28e340a72f6fa99" - integrity sha512-2WALfTl4xo2SkGCYRt6rDTFfk9R1czmBvUQy12gK2KuRKIpWEhcbbzy8EZXtz/jkRqHX8bFEc6FC1HjX4TUWYw== - "@xtuc/ieee754@^1.2.0": version "1.2.0" resolved "https://registry.yarnpkg.com/@xtuc/ieee754/-/ieee754-1.2.0.tgz#eef014a3145ae477a1cbc00cd1e552336dceb790" @@ -4532,11 +4583,6 @@ resolved "https://registry.yarnpkg.com/@xtuc/long/-/long-4.2.2.tgz#d291c6a4e97989b5c61d9acf396ae4fe133a718d" integrity sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ== -"@zxing/text-encoding@0.9.0": - version "0.9.0" - resolved "https://registry.yarnpkg.com/@zxing/text-encoding/-/text-encoding-0.9.0.tgz#fb50ffabc6c7c66a0c96b4c03e3d9be74864b70b" - integrity sha512-U/4aVJ2mxI0aDNI8Uq0wEhMgY+u4CNtEb0om3+y3+niDAsoTCOB33UF0sxpzqzdqXLqmvc+vZyAt4O8pPdfkwA== - JSONStream@0.8.0: version "0.8.0" resolved "https://registry.yarnpkg.com/JSONStream/-/JSONStream-0.8.0.tgz#efc462d5a5bc94ec007f4b22571acd7f6f2ae013" @@ -4681,7 +4727,7 @@ alif-toolkit@^1.3.0: resolved "https://registry.yarnpkg.com/alif-toolkit/-/alif-toolkit-1.3.0.tgz#007ce22ecaf684cd29ac00193d17322148c0f4d7" integrity sha512-jDqf4NRaP0aY7GFr3tvWUSV1qjPe5ho4woKOgIP1otJ/9Si4+bSjSqdDvhuJsVtnAi97Dw7hM4cObLHcHO+o0A== -ansi-escapes@^4.2.1, ansi-escapes@^4.3.1: +ansi-escapes@^4.2.1, ansi-escapes@^4.3.1, ansi-escapes@^4.3.2: version "4.3.2" resolved "https://registry.yarnpkg.com/ansi-escapes/-/ansi-escapes-4.3.2.tgz#6b2291d1db7d98b6521d5f1efa42d0f3a9feb65e" integrity sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ== @@ -5166,11 +5212,6 @@ base-64@^0.1.0: resolved "https://registry.yarnpkg.com/base-64/-/base-64-0.1.0.tgz#780a99c84e7d600260361511c4877613bf24f6bb" integrity sha512-Y5gU45svrR5tI2Vt/X9GPd3L0HNIKzGu202EjxrXMpuc2V2CiKgemAbUUsqYmZJvPtCXoUKjNZwBJzsNScUbXA== -base64-js@^1.3.1: - version "1.5.1" - resolved "https://registry.yarnpkg.com/base64-js/-/base64-js-1.5.1.tgz#1b1b440160a5bf7ad40b650f095963481903930a" - integrity sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA== - batch@0.6.1: version "0.6.1" resolved "https://registry.yarnpkg.com/batch/-/batch-0.6.1.tgz#dc34314f4e679318093fc760272525f94bf25c16" @@ -5207,15 +5248,6 @@ binary-extensions@^2.0.0: resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-2.3.0.tgz#f6e14a97858d327252200242d4ccfe522c445522" integrity sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw== -bl@^4.1.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/bl/-/bl-4.1.0.tgz#451535264182bec2fbbc83a62ab98cf11d9f7b3a" - integrity sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w== - dependencies: - buffer "^5.5.0" - inherits "^2.0.4" - readable-stream "^3.4.0" - bluebird@^3.7.2: version "3.7.2" resolved "https://registry.yarnpkg.com/bluebird/-/bluebird-3.7.2.tgz#9f229c15be272454ffa973ace0dbee79a1b0c36f" @@ -5306,14 +5338,6 @@ buffer-from@^1.0.0: resolved "https://registry.yarnpkg.com/buffer-from/-/buffer-from-1.1.2.tgz#2b146a6fd72e80b4f55d255f35ed59a3a9a41bd5" integrity sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ== -buffer@^5.5.0: - version "5.7.1" - resolved "https://registry.yarnpkg.com/buffer/-/buffer-5.7.1.tgz#ba62e7c13133053582197160851a8f648e99eed0" - integrity sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ== - dependencies: - base64-js "^1.3.1" - ieee754 "^1.1.13" - builtin-modules@^3.1.0: version "3.3.0" resolved "https://registry.yarnpkg.com/builtin-modules/-/builtin-modules-3.3.0.tgz#cae62812b89801e9656336e46223e030386be7b6" @@ -5468,7 +5492,7 @@ chalk@^3.0.0: ansi-styles "^4.1.0" supports-color "^7.1.0" -chalk@^4.0.0, chalk@^4.0.2, chalk@^4.1.0, chalk@^4.1.1, chalk@^4.1.2: +chalk@^4.0.0, chalk@^4.0.2, chalk@^4.1.0, chalk@^4.1.2: version "4.1.2" resolved "https://registry.yarnpkg.com/chalk/-/chalk-4.1.2.tgz#aac4e2b7734a740867aeb16bf02aad556a1e7a01" integrity sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA== @@ -5506,11 +5530,6 @@ character-reference-invalid@^2.0.0: resolved "https://registry.yarnpkg.com/character-reference-invalid/-/character-reference-invalid-2.0.1.tgz#85c66b041e43b47210faf401278abf808ac45cb9" integrity sha512-iBZ4F4wRbyORVsu0jPV7gXkOsGYjGHPmAyv+HiHG8gi5PtC9KI2j1+v8/tlibRvjoWX027ypmG/n0HtO5t7unw== -chardet@^0.7.0: - version "0.7.0" - resolved "https://registry.yarnpkg.com/chardet/-/chardet-0.7.0.tgz#90094849f0937f2eedc2425d0d28a9e5f0cbad9e" - integrity sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA== - chart.js@^4.4.1: version "4.4.4" resolved "https://registry.yarnpkg.com/chart.js/-/chart.js-4.4.4.tgz#b682d2e7249f7a0cbb1b1d31c840266ae9db64b7" @@ -5580,22 +5599,10 @@ clean-css@^5.2.2: dependencies: source-map "~0.6.0" -cli-cursor@^3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/cli-cursor/-/cli-cursor-3.1.0.tgz#264305a7ae490d1d03bf0c9ba7c925d1753af307" - integrity sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw== - dependencies: - restore-cursor "^3.1.0" - -cli-spinners@^2.5.0: - version "2.9.2" - resolved "https://registry.yarnpkg.com/cli-spinners/-/cli-spinners-2.9.2.tgz#1773a8f4b9c4d6ac31563df53b3fc1d79462fe41" - integrity sha512-ywqV+5MmyL4E7ybXgKys4DugZbX0FC6LnwrhjuykIjnK9k8OQacQ7axGKnjDXWNhns0xot3bZI5h55H8yo9cJg== - -cli-width@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/cli-width/-/cli-width-3.0.0.tgz#a2f48437a2caa9a22436e794bf071ec9e61cedf6" - integrity sha512-FxqpkPPwu1HjuN93Omfm4h8uIanXofW0RxVEW3k5RKx+mJJYSthzNhp32Kzxxy3YAEZ/Dc/EWN1vZRY0+kOhbw== +cli-width@^4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/cli-width/-/cli-width-4.1.0.tgz#42daac41d3c254ef38ad8ac037672130173691c5" + integrity sha512-ouuZd4/dm2Sw5Gmqy6bGyNNNe1qt9RpmxveLSO7KcgsTnU7RXfsw+/bukWGo1abgBiMAic068rclZsO4IWmmxQ== cliui@^7.0.2: version "7.0.4" @@ -5631,11 +5638,6 @@ clone-response@^1.0.2: dependencies: mimic-response "^1.0.0" -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== - co@^4.6.0: version "4.6.0" resolved "https://registry.yarnpkg.com/co/-/co-4.6.0.tgz#6ea6bdf3d853ae54ccb8e47bfa0bf3f9031fb184" @@ -5845,10 +5847,10 @@ cookie@0.6.0: resolved "https://registry.yarnpkg.com/cookie/-/cookie-0.6.0.tgz#2798b04b071b0ecbff0dbb62a505a8efa4e19051" integrity sha512-U71cyTamuh1CRNCfpGY6to28lxvNwPG4Guz/EVjgf3Jmzv0vlDp1atT9eS5dDjMYHucpHbWns6Lwf3BKz6svdw== -cookie@^0.4.2: - version "0.4.2" - resolved "https://registry.yarnpkg.com/cookie/-/cookie-0.4.2.tgz#0e41f24de5ecf317947c82fc789e06a884824432" - integrity sha512-aSWTXFzaKWkvHO1Ny/s+ePFpvKsPnjc551iI41v3ny/ow6tBG5Vd+FuqGNhh1LxOmVzOlGUriIlOaokOvhaStA== +cookie@^0.7.2: + version "0.7.2" + resolved "https://registry.yarnpkg.com/cookie/-/cookie-0.7.2.tgz#556369c472a2ba910f2979891b526b3436237ed7" + integrity sha512-yki5XnKuf750l50uGTllt6kKILY4nQ1eNIQatoXEByZ5dWgnKqbnqmTrBE5B4N7lrMJKQ2ytWMiTO2o0v6Ew/w== core-js-bundle@^3.38.0: version "3.38.1" @@ -6450,7 +6452,7 @@ debug@2.6.9, debug@^2.6.0: dependencies: ms "2.0.0" -debug@4, debug@^4.0.0, debug@^4.1.0, debug@^4.1.1, debug@^4.3.1, debug@^4.3.2, debug@^4.3.3, debug@^4.3.4: +debug@4, debug@^4.0.0, debug@^4.1.0, debug@^4.1.1, debug@^4.3.1, debug@^4.3.2, debug@^4.3.4: version "4.3.7" resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.7.tgz#87945b4151a011d76d95a198d7111c865c360a52" integrity sha512-Er2nc/H7RrMXZBFCEim6TCmMk02Z8vLC2Rbi1KEBggpo0fS6l0S1nnapwmIi3yW/+GOJap1Krg4w0Hg80oCqgQ== @@ -6559,13 +6561,6 @@ default-gateway@^6.0.3: dependencies: execa "^5.0.0" -defaults@^1.0.3: - version "1.0.4" - resolved "https://registry.yarnpkg.com/defaults/-/defaults-1.0.4.tgz#b0b02062c1e2aa62ff5d9528f0f98baa90978d7a" - integrity sha512-eFuaLoy/Rxalv2kr+lqMlUnrDWV+3j4pljOIJgLIhI058IQfWJ7vXhyEIHu+HtC738klGALYxOKDO0bQP3tg8A== - dependencies: - clone "^1.0.2" - defer-to-connect@^2.0.0: version "2.0.1" resolved "https://registry.yarnpkg.com/defer-to-connect/-/defer-to-connect-2.0.1.tgz#8016bdb4143e4632b77a3449c6236277de520587" @@ -7571,15 +7566,6 @@ extend@^3.0.0: resolved "https://registry.yarnpkg.com/extend/-/extend-3.0.2.tgz#f8b1136b4071fbd8eb140aff858b1019ec2915fa" integrity sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g== -external-editor@^3.0.3: - version "3.1.0" - resolved "https://registry.yarnpkg.com/external-editor/-/external-editor-3.1.0.tgz#cb03f740befae03ea4d283caed2741a83f335495" - integrity sha512-hMQ4CX1p1izmuLYyZqLMO/qGNw10wSv9QDCPfzXfyFrOaCSSoRfqE1Kf1s5an66J5JZC62NewG+mK49jOCtQew== - dependencies: - chardet "^0.7.0" - iconv-lite "^0.4.24" - tmp "^0.0.33" - fast-deep-equal@^3.1.1, fast-deep-equal@^3.1.3, fast-deep-equal@~3.1.1, fast-deep-equal@~3.1.3: version "3.1.3" resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz#3a7d56b559d6cbc3eb512325244e619a65c6c525" @@ -7642,13 +7628,6 @@ fflate@^0.8.0, fflate@^0.8.2: resolved "https://registry.yarnpkg.com/fflate/-/fflate-0.8.2.tgz#fc8631f5347812ad6028bbe4a2308b2792aa1dea" integrity sha512-cPJU47OaAoCbg0pBvzsgpTPhmhqI5eJjh/JIu8tPj5q+T7iLvW/JAYUqmE7KOB4R1ZyEhzBaIQpQpardBF5z8A== -figures@^3.0.0: - version "3.2.0" - resolved "https://registry.yarnpkg.com/figures/-/figures-3.2.0.tgz#625c18bd293c604dc4a8ddb2febf0c88341746af" - integrity sha512-yaduQFRKLXYOGgEn6AZau90j3ggSOyiqXU0F9JZfeXYhNa+Jk4X+s45A2zg5jns87GAFa34BBm2kXw4XpNcbdg== - dependencies: - escape-string-regexp "^1.0.5" - file-entry-cache@^6.0.1: version "6.0.1" resolved "https://registry.yarnpkg.com/file-entry-cache/-/file-entry-cache-6.0.1.tgz#211b2dd9659cb0394b073e7323ac3c933d522027" @@ -8366,10 +8345,10 @@ he@^1.2.0: resolved "https://registry.yarnpkg.com/he/-/he-1.2.0.tgz#84ae65fa7eafb165fddb61566ae14baf05664f0f" integrity sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw== -headers-polyfill@3.2.5: - version "3.2.5" - resolved "https://registry.yarnpkg.com/headers-polyfill/-/headers-polyfill-3.2.5.tgz#6e67d392c9d113d37448fe45014e0afdd168faed" - integrity sha512-tUCGvt191vNSQgttSyJoibR+VO+I6+iCHIUdhzEMJKE+EAL8BwCN7fUOZlY4ofOelNHsK+gEjxB/B+9N3EWtdA== +headers-polyfill@^4.0.2: + version "4.0.3" + resolved "https://registry.yarnpkg.com/headers-polyfill/-/headers-polyfill-4.0.3.tgz#922a0155de30ecc1f785bcf04be77844ca95ad07" + integrity sha512-IScLbePpkvO846sIwOtOTDjutRMWdXdJmXdMvk6gCBHxFO8d+QKOQedyZSxFTTFYRSmlgSTDtXqqq4pcenBXLQ== hex-color-regex@^1.1.0: version "1.1.0" @@ -8582,7 +8561,7 @@ humanize-duration@^3.31.0: resolved "https://registry.yarnpkg.com/humanize-duration/-/humanize-duration-3.32.1.tgz#922beff5da36fb1cee3de26ada24c592b0fe519b" integrity sha512-inh5wue5XdfObhu/IGEMiA1nUXigSGcaKNemcbLRKa7jXYGDZXr3LoT9pTIzq2hPEbld7w/qv9h+ikWGz8fL1g== -iconv-lite@0.4.24, iconv-lite@^0.4.15, iconv-lite@^0.4.24: +iconv-lite@0.4.24, iconv-lite@^0.4.15: version "0.4.24" resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.24.tgz#2022b4b25fbddc21d2f524974a474aafe733908b" integrity sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA== @@ -8613,7 +8592,7 @@ identity-obj-proxy@^3.0.0: dependencies: harmony-reflect "^1.4.6" -ieee754@^1.1.12, ieee754@^1.1.13: +ieee754@^1.1.12: version "1.2.1" resolved "https://registry.yarnpkg.com/ieee754/-/ieee754-1.2.1.tgz#8eb7a10a63fff25d15a57b001586d177d1b0d352" integrity sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA== @@ -8672,7 +8651,7 @@ inflight@^1.0.4: once "^1.3.0" wrappy "1" -inherits@2, inherits@2.0.4, inherits@^2.0.1, inherits@^2.0.3, inherits@^2.0.4, inherits@~2.0.1, inherits@~2.0.3: +inherits@2, inherits@2.0.4, inherits@^2.0.1, inherits@^2.0.3, inherits@~2.0.1, 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== @@ -8692,27 +8671,6 @@ inline-style-parser@0.1.1: resolved "https://registry.yarnpkg.com/inline-style-parser/-/inline-style-parser-0.1.1.tgz#ec8a3b429274e9c0a1f1c4ffa9453a7fef72cea1" integrity sha512-7NXolsK4CAS5+xvdj5OMMbI962hU/wvwoxk+LWR9Ek9bVtyuuYScDN6eS0rUm6TxApFpw7CX1o4uJzcd4AyD3Q== -inquirer@^8.2.0: - version "8.2.6" - resolved "https://registry.yarnpkg.com/inquirer/-/inquirer-8.2.6.tgz#733b74888195d8d400a67ac332011b5fae5ea562" - integrity sha512-M1WuAmb7pn9zdFRtQYk26ZBoY043Sse0wVDdk4Bppr+JOXyQYybdtvK+l9wUibhtjdjvtoiNy8tk+EgsYIUqKg== - dependencies: - ansi-escapes "^4.2.1" - chalk "^4.1.1" - cli-cursor "^3.1.0" - cli-width "^3.0.0" - external-editor "^3.0.3" - figures "^3.0.0" - lodash "^4.17.21" - mute-stream "0.0.8" - ora "^5.4.1" - run-async "^2.4.0" - rxjs "^7.5.5" - string-width "^4.1.0" - strip-ansi "^6.0.0" - through "^2.3.6" - wrap-ansi "^6.0.1" - internal-slot@^1.0.4, internal-slot@^1.0.7: version "1.0.7" resolved "https://registry.yarnpkg.com/internal-slot/-/internal-slot-1.0.7.tgz#c06dcca3ed874249881007b0a5523b172a190802" @@ -8767,7 +8725,7 @@ is-alphanumerical@^2.0.0: is-alphabetical "^2.0.0" is-decimal "^2.0.0" -is-arguments@^1.0.4, is-arguments@^1.1.1: +is-arguments@^1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/is-arguments/-/is-arguments-1.1.1.tgz#15b3f88fda01f2a97fec84ca761a560f123efa9b" integrity sha512-8Q7EARjzEnKpt/PCD7e1cgUS0a6X8u5tdSiMqXhojOdoV9TsMsiO+9VLC5vAmO8N7/GmXn7yjR8qnA6bVAEzfA== @@ -8909,7 +8867,7 @@ is-generator-fn@^2.0.0: resolved "https://registry.yarnpkg.com/is-generator-fn/-/is-generator-fn-2.1.0.tgz#7d140adc389aaf3011a8f2a2a4cfa6faadffb118" integrity sha512-cTIB4yPYL/Grw0EaSzASzg6bBy9gqCofvWN8okThAYIxKJZC+udlRAmGbM0XLeniEJSs8uEgHPGuHSe1XsOLSQ== -is-generator-function@^1.0.10, is-generator-function@^1.0.7: +is-generator-function@^1.0.10: version "1.0.10" resolved "https://registry.yarnpkg.com/is-generator-function/-/is-generator-function-1.0.10.tgz#f1558baf1ac17e0deea7c0415c438351ff2b3c72" integrity sha512-jsEjy9l3yiXEQ+PsXdmBwEPcOxaXWLspKdplFUVI9vq1iZgIekeC0L167qeu86czQaxed3q/Uzuw0swL0irL8A== @@ -8928,11 +8886,6 @@ is-hexadecimal@^2.0.0: resolved "https://registry.yarnpkg.com/is-hexadecimal/-/is-hexadecimal-2.0.1.tgz#86b5bf668fca307498d319dfc03289d781a90027" integrity sha512-DgZQp241c8oO6cA1SbTEWiXeoxV42vlcJxgH+B3hi1AiqqKruZR3ZGF8In3fj4+/y/7rHvlOZLZtgJ/4ttYGZg== -is-interactive@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/is-interactive/-/is-interactive-1.0.0.tgz#cea6e6ae5c870a7b0a0004070b7b587e0252912e" - integrity sha512-2HvIEKRoqS62guEC+qBjpvRubdX910WCMuJTZ+I9yvqKU2/12eSL549HMwtabb4oupdj2sMP50k+XJfB/8JE6w== - is-map@^2.0.2, is-map@^2.0.3: version "2.0.3" resolved "https://registry.yarnpkg.com/is-map/-/is-map-2.0.3.tgz#ede96b7fe1e270b3c4465e3a465658764926d62e" @@ -9051,7 +9004,7 @@ is-symbol@^1.0.2, is-symbol@^1.0.3: dependencies: has-symbols "^1.0.2" -is-typed-array@^1.1.13, is-typed-array@^1.1.3: +is-typed-array@^1.1.13: version "1.1.13" resolved "https://registry.yarnpkg.com/is-typed-array/-/is-typed-array-1.1.13.tgz#d6c5ca56df62334959322d7d7dd1cca50debe229" integrity sha512-uZ25/bUAlUY5fR4OKT4rZQEBrzQWYV9ZJYGGsUmEJ6thodVJ1HX64ePQ6Z0qPWP+m+Uq6e9UugrE38jeYsDSMw== @@ -9063,11 +9016,6 @@ is-typedarray@^1.0.0: resolved "https://registry.yarnpkg.com/is-typedarray/-/is-typedarray-1.0.0.tgz#e479c80858df0c1b11ddda6940f96011fcda4a9a" integrity sha512-cyA56iCMHAh5CdzjJIa4aohJyeO1YbwLi3Jc35MmRU6poroFjIGZzUzupGiRPOjgHg9TLu43xbpwXk523fMxKA== -is-unicode-supported@^0.1.0: - version "0.1.0" - resolved "https://registry.yarnpkg.com/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz#3f26c76a809593b52bfa2ecb5710ed2779b522a7" - integrity sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw== - is-weakmap@^2.0.2: version "2.0.2" resolved "https://registry.yarnpkg.com/is-weakmap/-/is-weakmap-2.0.2.tgz#bf72615d649dfe5f699079c54b83e47d1ae19cfd" @@ -9692,11 +9640,6 @@ jiti@^1.21.0: resolved "https://registry.yarnpkg.com/jiti/-/jiti-1.21.6.tgz#6c7f7398dd4b3142767f9a168af2f317a428d268" integrity sha512-2yTgeWTWzMWkHu6Jp9NKgePDaYHbntiwvYuuJLbbN9vl7DC9DvXKOB2BC3ZZ92D3cvV/aflH0osDfwpHepQ53w== -js-levenshtein@^1.1.6: - version "1.1.6" - resolved "https://registry.yarnpkg.com/js-levenshtein/-/js-levenshtein-1.1.6.tgz#c6cee58eb3550372df8deb85fad5ce66ce01d59d" - integrity sha512-X2BB11YZtrRqY4EnQcLX5Rh373zbK4alC1FW7D7MBhL2gtcC17cTnr6DmfHZeS0s2rTHjUTMMHfG7gO8SSdw+g== - "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" @@ -10072,14 +10015,6 @@ lodash@^4.17.20, lodash@^4.17.21, lodash@^4.7.0: resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.21.tgz#679591c564c3bffaae8454cf0b3df370c3d6911c" integrity sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg== -log-symbols@^4.1.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/log-symbols/-/log-symbols-4.1.0.tgz#3fbdbb95b4683ac9fc785111e792e558d4abd503" - integrity sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg== - dependencies: - chalk "^4.1.0" - is-unicode-supported "^0.1.0" - longest-streak@^3.0.0: version "3.1.0" resolved "https://registry.yarnpkg.com/longest-streak/-/longest-streak-3.1.0.tgz#62fa67cd958742a1574af9f39866364102d90cd4" @@ -10905,30 +10840,29 @@ ms@2.1.3, ms@^2.1.1, ms@^2.1.3: resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.3.tgz#574c8138ce1d2b5861f0b44579dbadd60c6615b2" integrity sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA== -msw@^1.3.2: - version "1.3.4" - resolved "https://registry.yarnpkg.com/msw/-/msw-1.3.4.tgz#76ad0396a9c7fff07c6893ce4d3997787dc8fd55" - integrity sha512-XxA/VomMIYLlgpFS00eQanBWIAT9gto4wxrRt9y58WBXJs1I0lQYRIWk7nKcY/7X6DhkKukcDgPcyAvkEc1i7w== - dependencies: - "@mswjs/cookies" "^0.2.2" - "@mswjs/interceptors" "^0.17.10" - "@open-draft/until" "^1.0.3" - "@types/cookie" "^0.4.1" - "@types/js-levenshtein" "^1.1.1" - chalk "^4.1.1" - chokidar "^3.4.2" - cookie "^0.4.2" +msw@^2.7.0: + version "2.7.0" + resolved "https://registry.yarnpkg.com/msw/-/msw-2.7.0.tgz#d13ff87f7e018fc4c359800ff72ba5017033fb56" + integrity sha512-BIodwZ19RWfCbYTxWTUfTXc+sg4OwjCAgxU1ZsgmggX/7S3LdUifsbUPJs61j0rWb19CZRGY5if77duhc0uXzw== + dependencies: + "@bundled-es-modules/cookie" "^2.0.1" + "@bundled-es-modules/statuses" "^1.0.1" + "@bundled-es-modules/tough-cookie" "^0.1.6" + "@inquirer/confirm" "^5.0.0" + "@mswjs/interceptors" "^0.37.0" + "@open-draft/deferred-promise" "^2.2.0" + "@open-draft/until" "^2.1.0" + "@types/cookie" "^0.6.0" + "@types/statuses" "^2.0.4" graphql "^16.8.1" - headers-polyfill "3.2.5" - inquirer "^8.2.0" + headers-polyfill "^4.0.2" is-node-process "^1.2.0" - js-levenshtein "^1.1.6" - node-fetch "^2.6.7" - outvariant "^1.4.0" - path-to-regexp "^6.2.0" - strict-event-emitter "^0.4.3" - type-fest "^2.19.0" - yargs "^17.3.1" + outvariant "^1.4.3" + path-to-regexp "^6.3.0" + picocolors "^1.1.1" + strict-event-emitter "^0.5.1" + type-fest "^4.26.1" + yargs "^17.7.2" multicast-dns@^7.2.5: version "7.2.5" @@ -10943,10 +10877,10 @@ murmurhash-js@^1.0.0: resolved "https://registry.yarnpkg.com/murmurhash-js/-/murmurhash-js-1.0.0.tgz#b06278e21fc6c37fa5313732b0412bcb6ae15f51" integrity sha512-TvmkNhkv8yct0SVBSy+o8wYzXjE4Zz3PCesbfs8HiCXXdcTuocApFv11UWlNFWKYsP2okqrhb7JNlSm9InBhIw== -mute-stream@0.0.8: - version "0.0.8" - resolved "https://registry.yarnpkg.com/mute-stream/-/mute-stream-0.0.8.tgz#1630c42b2251ff81e2a283de96a5497ea92e5e0d" - integrity sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA== +mute-stream@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/mute-stream/-/mute-stream-2.0.0.tgz#a5446fc0c512b71c83c44d908d5c7b7b4c493b2b" + integrity sha512-WWdIxpyjEn+FhQJQQv9aQAYlHoNVdzIzUySNV1gHUPDSdZJ3yZn7pAAbQcV7B56Mvu881q9FZV+0Vx2xC44VWA== mz@^2.7.0: version "2.7.0" @@ -11212,7 +11146,7 @@ once@^1.3.0, once@^1.3.1, once@^1.4.0: dependencies: wrappy "1" -onetime@^5.1.0, onetime@^5.1.2: +onetime@^5.1.2: version "5.1.2" resolved "https://registry.yarnpkg.com/onetime/-/onetime-5.1.2.tgz#d0e96ebb56b07476df1dd9c4806e5237985ca45e" integrity sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg== @@ -11267,26 +11201,6 @@ optionator@^0.9.3: type-check "^0.4.0" word-wrap "^1.2.5" -ora@^5.4.1: - version "5.4.1" - resolved "https://registry.yarnpkg.com/ora/-/ora-5.4.1.tgz#1b2678426af4ac4a509008e5e4ac9e9959db9e18" - integrity sha512-5b6Y85tPxZZ7QytO+BQzysW31HJku27cRIlkbAXaNx+BdcVi+LlRFmVXzeF6a7JCwJpyw5c4b+YSVImQIrBpuQ== - dependencies: - bl "^4.1.0" - chalk "^4.1.0" - cli-cursor "^3.1.0" - cli-spinners "^2.5.0" - is-interactive "^1.0.0" - is-unicode-supported "^0.1.0" - log-symbols "^4.1.0" - strip-ansi "^6.0.0" - wcwidth "^1.0.1" - -os-tmpdir@~1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/os-tmpdir/-/os-tmpdir-1.0.2.tgz#bbe67406c79aa85c5cfec766fe5734555dfa1274" - integrity sha512-D2FR03Vir7FIu45XBY20mTb+/ZSWB00sjU9jdQXt83gDrI4Ztz5Fs7/yy74g2N5SVQY4xY1qDr4rNddwYRVX0g== - osm-auth@2.5.0, osm-auth@~2.5.0: version "2.5.0" resolved "https://registry.yarnpkg.com/osm-auth/-/osm-auth-2.5.0.tgz#1b439979cfe16a7002e8a06945fbe4b766f76496" @@ -11314,7 +11228,7 @@ osmtogeojson@^3.0.0-beta.5: optionalDependencies: "@types/geojson" "^7946.0" -outvariant@^1.2.1, outvariant@^1.4.0: +outvariant@^1.4.0, outvariant@^1.4.3: version "1.4.3" resolved "https://registry.yarnpkg.com/outvariant/-/outvariant-1.4.3.tgz#221c1bfc093e8fec7075497e7799fdbf43d14873" integrity sha512-+Sl2UErvtsoajRDKCE5/dBz4DIvHXQQnAxtQTF04OJxY0+DyZXSo5P5Bb7XYWOh81syohlYL24hbDwxedPUJCA== @@ -11495,7 +11409,7 @@ path-to-regexp@0.1.10: resolved "https://registry.yarnpkg.com/path-to-regexp/-/path-to-regexp-0.1.10.tgz#67e9108c5c0551b9e5326064387de4763c4d5f8b" integrity sha512-7lf7qcQidTku0Gu3YDPc8DJ1q7OOucfa/BSsIwjuh56VU7katFvuM8hULfkwB3Fns/rsVF7PwPKVw1sl5KQS9w== -path-to-regexp@^6.2.0: +path-to-regexp@^6.3.0: version "6.3.0" resolved "https://registry.yarnpkg.com/path-to-regexp/-/path-to-regexp-6.3.0.tgz#2b6a26a337737a8e1416f9272ed0766b1c0389f4" integrity sha512-Yhpw4T9C6hPpgPeA28us07OJeqZ5EzQTkbfwuhsUg0c237RomFoETJgmp2sa3F/41gfLE6G5cqcYwznmeEeOlQ== @@ -12988,7 +12902,7 @@ readable-stream@^2.0.1, readable-stream@~2.3.6: string_decoder "~1.1.1" util-deprecate "~1.0.1" -readable-stream@^3.0.2, readable-stream@^3.0.6, readable-stream@^3.4.0: +readable-stream@^3.0.2, readable-stream@^3.0.6: version "3.6.2" resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-3.6.2.tgz#56a9b36ea965c00c5a93ef31eb111a0f11056967" integrity sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA== @@ -13362,14 +13276,6 @@ responselike@^2.0.0: dependencies: lowercase-keys "^2.0.0" -restore-cursor@^3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/restore-cursor/-/restore-cursor-3.1.0.tgz#39f67c54b3a7a58cea5236d95cf0034239631f7e" - integrity sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA== - dependencies: - onetime "^5.1.0" - signal-exit "^3.0.2" - retry@^0.13.1: version "0.13.1" resolved "https://registry.yarnpkg.com/retry/-/retry-0.13.1.tgz#185b1587acf67919d63b357349e03537b2484658" @@ -13454,11 +13360,6 @@ rollup@^4.20.0: "@rollup/rollup-win32-x64-msvc" "4.29.1" fsevents "~2.3.2" -run-async@^2.4.0: - version "2.4.1" - resolved "https://registry.yarnpkg.com/run-async/-/run-async-2.4.1.tgz#8440eccf99ea3e70bd409d49aab88e10c189a455" - integrity sha512-tvVnVv01b8c1RrA6Ep7JkStj85Guv/YrMcwqYQnwjsAS2cTmmPGBBjAjpCW7RrSodNSoE2/qg9O4bceNvUuDgQ== - run-parallel@^1.1.9: version "1.2.0" resolved "https://registry.yarnpkg.com/run-parallel/-/run-parallel-1.2.0.tgz#66d1368da7bdf921eb9d95bd1a9229e7f21a43ee" @@ -13476,13 +13377,6 @@ rw@~0.1.4: resolved "https://registry.yarnpkg.com/rw/-/rw-0.1.4.tgz#4903cbd80248ae0ede685bf58fd236a7a9b29a3e" integrity sha512-vSj3D96kMcjNyqPcp65wBRIDImGSrUuMxngNNxvw8MQaO+aQ6llzRPH7XcJy5zrpb3wU++045+Uz/IDIM684iw== -rxjs@^7.5.5: - version "7.8.1" - resolved "https://registry.yarnpkg.com/rxjs/-/rxjs-7.8.1.tgz#6f6f3d99ea8044291efd92e7c7fcf562c4057543" - integrity sha512-AA3TVj+0A2iuIoQkWEK/tqFjBq2j+6PO6Y0zJcvzLAFhEFIO3HL0vls9hWLncZbAAbK0mar7oZ4V079I/qPMxg== - dependencies: - tslib "^2.1.0" - sade@^1.7.3: version "1.8.1" resolved "https://registry.yarnpkg.com/sade/-/sade-1.8.1.tgz#0a78e81d658d394887be57d2a409bf703a3b2701" @@ -13706,11 +13600,6 @@ serve-static@1.16.2: parseurl "~1.3.3" send "0.19.0" -set-cookie-parser@^2.4.6: - version "2.7.0" - resolved "https://registry.yarnpkg.com/set-cookie-parser/-/set-cookie-parser-2.7.0.tgz#ef5552b56dc01baae102acb5fc9fb8cd060c30f9" - integrity sha512-lXLOiqpkUumhRdFF3k1osNXCy9akgx/dyPZ5p8qAg9seJzXr5ZrlqZuWIMuY6ejOsVLE6flJ5/h3lsn57fQ/PQ== - set-function-length@^1.2.1: version "1.2.2" resolved "https://registry.yarnpkg.com/set-function-length/-/set-function-length-1.2.2.tgz#aac72314198eaed975cf77b2c3b6b880695e5449" @@ -13818,7 +13707,7 @@ signal-exit@^3.0.2, signal-exit@^3.0.3: resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.7.tgz#a9a1767f8af84155114eaabd73f99273c8f59ad9" integrity sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ== -signal-exit@^4.0.1: +signal-exit@^4.0.1, signal-exit@^4.1.0: version "4.1.0" resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-4.1.0.tgz#952188c1cbd546070e2dd20d0f41c0ae0530cb04" integrity sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw== @@ -14072,7 +13961,7 @@ static-eval@2.0.2: dependencies: escodegen "^1.8.1" -statuses@2.0.1: +statuses@2.0.1, statuses@^2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/statuses/-/statuses-2.0.1.tgz#55cb000ccf1d48728bd23c685a063998cf1a1b63" integrity sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ== @@ -14094,17 +13983,10 @@ stop-iteration-iterator@^1.0.0: dependencies: internal-slot "^1.0.4" -strict-event-emitter@^0.2.4: - version "0.2.8" - resolved "https://registry.yarnpkg.com/strict-event-emitter/-/strict-event-emitter-0.2.8.tgz#b4e768927c67273c14c13d20e19d5e6c934b47ca" - integrity sha512-KDf/ujU8Zud3YaLtMCcTI4xkZlZVIYxTLr+XIULexP+77EEVWixeXroLUXQXiVtH4XH2W7jr/3PT1v3zBuvc3A== - dependencies: - events "^3.3.0" - -strict-event-emitter@^0.4.3: - version "0.4.6" - resolved "https://registry.yarnpkg.com/strict-event-emitter/-/strict-event-emitter-0.4.6.tgz#ff347c8162b3e931e3ff5f02cfce6772c3b07eb3" - integrity sha512-12KWeb+wixJohmnwNFerbyiBrAlq5qJLwIt38etRtKtmmHyDSoGlIqFE9wx+4IwG0aDjI7GV8tc8ZccjWZZtTg== +strict-event-emitter@^0.5.1: + version "0.5.1" + resolved "https://registry.yarnpkg.com/strict-event-emitter/-/strict-event-emitter-0.5.1.tgz#1602ece81c51574ca39c6815e09f1a3e8550bd93" + integrity sha512-vMgjE/GGEPEFnhFub6pa4FmJBRBVOLpIII2hvCZ8Kzb7K0hlHo7mQv6xYrBvCL2LtAIBwFUK8wvuJgTVSQ5MFQ== string-length@^4.0.1: version "4.0.2" @@ -14609,11 +14491,6 @@ throat@^6.0.1: resolved "https://registry.yarnpkg.com/throat/-/throat-6.0.2.tgz#51a3fbb5e11ae72e2cf74861ed5c8020f89f29fe" integrity sha512-WKexMoJj3vEuK0yFEapj8y64V0A6xcuPuK9Gt1d0R+dzCSJc0lHqQytAbSB4cDAK0dWh4T0E2ETkoLE2WZ41OQ== -through@^2.3.6: - version "2.3.8" - resolved "https://registry.yarnpkg.com/through/-/through-2.3.8.tgz#0dd4c9ffaabc357960b1b724115d7e0e86a2e1f5" - integrity sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg== - through@~2.2.7: version "2.2.7" resolved "https://registry.yarnpkg.com/through/-/through-2.2.7.tgz#6e8e21200191d4eb6a99f6f010df46aa1c6eb2bd" @@ -14680,13 +14557,6 @@ tinyspy@^3.0.2: resolved "https://registry.yarnpkg.com/tinyspy/-/tinyspy-3.0.2.tgz#86dd3cf3d737b15adcf17d7887c84a75201df20a" integrity sha512-n1cw8k1k0x4pgA2+9XrOkFydTerNcJ1zWCO5Nn9scWHTD+5tp8dghT2x1uduQePZTZgd3Tupf+x9BxJjeJi77Q== -tmp@^0.0.33: - version "0.0.33" - resolved "https://registry.yarnpkg.com/tmp/-/tmp-0.0.33.tgz#6d34335889768d21b2bcda0aa277ced3b1bfadf9" - integrity sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw== - dependencies: - os-tmpdir "~1.0.2" - tmp@^0.2.1: version "0.2.3" resolved "https://registry.yarnpkg.com/tmp/-/tmp-0.2.3.tgz#eb783cc22bc1e8bebd0671476d46ea4eb32a79ae" @@ -14719,7 +14589,7 @@ totalist@^3.0.0: resolved "https://registry.yarnpkg.com/totalist/-/totalist-3.0.1.tgz#ba3a3d600c915b1a97872348f79c127475f6acf8" integrity sha512-sf4i37nQ2LBx4m3wB74y+ubopq6W/dIzXg0FDGjsYnZHVa1Da8FH853wlL2gtUhg+xJXjfk3kUZS3BRoQeoQBQ== -tough-cookie@^4.0.0: +tough-cookie@^4.0.0, tough-cookie@^4.1.4: version "4.1.4" resolved "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-4.1.4.tgz#945f1461b45b5a8c76821c33ea49c3ac192c1b36" integrity sha512-Loo5UUvLD9ScZ6jh8beX1T6sO1w2/MpCRpEP7V280GKMVUQ0Jzar2U3UJPsrdbziLEMMhu3Ujnq//rhiFuIeag== @@ -14821,7 +14691,7 @@ tslib@^1.8.1: resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.14.1.tgz#cf2d38bdc34a134bcaf1091c41f6619e2f672d00" integrity sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg== -tslib@^2.0.3, tslib@^2.1.0, tslib@^2.4.0, tslib@^2.6.2: +tslib@^2.0.3, tslib@^2.4.0, tslib@^2.6.2: version "2.7.0" resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.7.0.tgz#d9b40c5c40ab59e8738f297df3087bf1a2690c01" integrity sha512-gLXCKdN1/j47AiHiOkJN69hJmcbGTHI0ImLmbYLHykhgeN0jVGola9yVjFgzCUklsZQMW55o+dW7IXv3RCXDzA== @@ -14882,10 +14752,10 @@ type-fest@^0.8.1: resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.8.1.tgz#09e249ebde851d3b1e48d27c105444667f17b83d" integrity sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA== -type-fest@^2.19.0: - version "2.19.0" - resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-2.19.0.tgz#88068015bb33036a598b952e55e9311a60fd3a9b" - integrity sha512-RAH822pAdBgcNMAfWnCBU3CFZcfZ/i1eZjwFU/dsLKumyuuP3niueg2UAukXYF0E2AAoc82ZSSf9J0WQBinzHA== +type-fest@^4.26.1: + version "4.30.2" + resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-4.30.2.tgz#d94429edde1f7deacf554741650aab394197a4cc" + integrity sha512-UJShLPYi1aWqCdq9HycOL/gwsuqda1OISdBO3t8RlXQC4QvtuIz4b5FCfe2dQIWEpmlRExKmcTBfP1r9bhY7ig== type-is@~1.6.18: version "1.6.18" @@ -15198,17 +15068,6 @@ util.promisify@~1.0.0: has-symbols "^1.0.1" object.getownpropertydescriptors "^2.1.0" -util@^0.12.3: - version "0.12.5" - resolved "https://registry.yarnpkg.com/util/-/util-0.12.5.tgz#5f17a6059b73db61a875668781a1c2b136bd6fbc" - integrity sha512-kZf/K6hEIrWHI6XqOFUiiMa+79wE/D8Q+NCNAWclkyg3b4d2k7s0QGepNjiABc+aR3N1PAyHL7p6UcLY6LmrnA== - dependencies: - inherits "^2.0.3" - is-arguments "^1.0.4" - is-generator-function "^1.0.7" - is-typed-array "^1.1.3" - which-typed-array "^1.1.2" - utila@~0.4: version "0.4.0" resolved "https://registry.yarnpkg.com/utila/-/utila-0.4.0.tgz#8a16a05d445657a3aea5eecc5b12a4fa5379772c" @@ -15387,22 +15246,6 @@ wbuf@^1.1.0, wbuf@^1.7.3: dependencies: minimalistic-assert "^1.0.0" -wcwidth@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/wcwidth/-/wcwidth-1.0.1.tgz#f0b0dcf915bc5ff1528afadb2c0e17b532da2fe8" - integrity sha512-XHPEwS0q6TaxcvG85+8EYkbiCux2XtWG2mkc47Ng2A77BQu9+DqIOJldST4HgPkuea7dvKSj5VgX3P1d4rW8Tg== - dependencies: - defaults "^1.0.3" - -web-encoding@^1.1.5: - version "1.1.5" - resolved "https://registry.yarnpkg.com/web-encoding/-/web-encoding-1.1.5.tgz#fc810cf7667364a6335c939913f5051d3e0c4864" - integrity sha512-HYLeVCdJ0+lBYV2FvNZmv3HJ2Nt0QYXqZojk3d9FJOLkwnuhzM9tmamh8d7HPM8QqjKH8DeHkFTx+CFlWpZZDA== - dependencies: - util "^0.12.3" - optionalDependencies: - "@zxing/text-encoding" "0.9.0" - web-namespaces@^2.0.0: version "2.0.1" resolved "https://registry.yarnpkg.com/web-namespaces/-/web-namespaces-2.0.1.tgz#1010ff7c650eccb2592cebeeaf9a1b253fd40692" @@ -15656,7 +15499,7 @@ which-polygon@2.2.1, which-polygon@^2.2.1: lineclip "^1.1.5" rbush "^2.0.1" -which-typed-array@^1.1.13, which-typed-array@^1.1.14, which-typed-array@^1.1.15, which-typed-array@^1.1.2: +which-typed-array@^1.1.13, which-typed-array@^1.1.14, which-typed-array@^1.1.15: version "1.1.15" resolved "https://registry.yarnpkg.com/which-typed-array/-/which-typed-array-1.1.15.tgz#264859e9b11a649b388bfaaf4f767df1f779b38d" integrity sha512-oV0jmFtUky6CXfkqehVvBP/LSWJ2sy4vWMioiENyJLePrBO/yKyV9OyJySfAKosh+RYkIl5zJCNZ8/4JncrpdA== @@ -15947,7 +15790,7 @@ workbox-window@6.6.1: string-width "^4.1.0" strip-ansi "^6.0.0" -wrap-ansi@^6.0.1: +wrap-ansi@^6.2.0: version "6.2.0" resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-6.2.0.tgz#e9393ba07102e6c91a3b221478f0257cd2856e53" integrity sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA== @@ -16053,7 +15896,7 @@ yargs@^16.2.0: y18n "^5.0.5" yargs-parser "^20.2.2" -yargs@^17.3.1: +yargs@^17.7.2: version "17.7.2" resolved "https://registry.yarnpkg.com/yargs/-/yargs-17.7.2.tgz#991df39aca675a192b816e1e0363f9d75d2aa269" integrity sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w== @@ -16076,6 +15919,11 @@ yocto-queue@^0.1.0: resolved "https://registry.yarnpkg.com/yocto-queue/-/yocto-queue-0.1.0.tgz#0294eb3dee05028d31ee1a5fa2c556a6aaf10a1b" integrity sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q== +yoctocolors-cjs@^2.1.2: + version "2.1.2" + resolved "https://registry.yarnpkg.com/yoctocolors-cjs/-/yoctocolors-cjs-2.1.2.tgz#f4b905a840a37506813a7acaa28febe97767a242" + integrity sha512-cYVsTjKl8b+FrnidjibDWskAv7UKOfcwaVZdp/it9n1s9fU3IkgDbhdIRKCW4JDsAlECJY0ytoVPT3sK6kideA== + zwitch@^2.0.0, zwitch@^2.0.4: version "2.0.4" resolved "https://registry.yarnpkg.com/zwitch/-/zwitch-2.0.4.tgz#c827d4b0acb76fc3e685a4c6ec2902d51070e9d7"