diff --git a/.eslintrc.json b/.eslintrc.json index ddddcfaf..fcdb403f 100644 --- a/.eslintrc.json +++ b/.eslintrc.json @@ -20,7 +20,7 @@ { "files": ["*.js", "*.jsx"], "extends": ["prettier"], - "parser": "babel-eslint", + "parser": "@babel/eslint-parser", "rules": { "@typescript-eslint/no-var-requires": 0 } diff --git a/.prettierrc b/.prettierrc index e010e49a..d8293c94 100644 --- a/.prettierrc +++ b/.prettierrc @@ -1,6 +1,5 @@ { "bracketSpacing": false, - "jsxBracketSameLine": true, "printWidth": 120, "singleQuote": true, "trailingComma": "all" diff --git a/client/src/javascript/actions/AuthActions.ts b/client/src/javascript/actions/AuthActions.ts index f29ce82e..4af62557 100644 --- a/client/src/javascript/actions/AuthActions.ts +++ b/client/src/javascript/actions/AuthActions.ts @@ -1,11 +1,13 @@ -import axios, {AxiosError, AxiosResponse} from 'axios'; +import axios, {AxiosError} from 'axios'; import AuthStore from '@client/stores/AuthStore'; import ConfigStore from '@client/stores/ConfigStore'; import type { AuthAuthenticationOptions, + AuthAuthenticationResponse, AuthRegistrationOptions, + AuthRegistrationResponse, AuthUpdateUserOptions, AuthVerificationResponse, } from '@shared/schema/api/auth'; @@ -20,10 +22,9 @@ const {baseURI} = ConfigStore; const AuthActions = { authenticate: (options: AuthAuthenticationOptions) => axios - .post(`${baseURI}api/auth/authenticate`, options) - .then((json) => json.data) + .post(`${baseURI}api/auth/authenticate`, options) .then( - (data) => { + ({data}) => { AuthStore.handleLoginSuccess(data); }, (error) => { @@ -53,36 +54,27 @@ const AuthActions = { ), createUser: (options: AuthRegistrationOptions) => - axios - .post(`${baseURI}api/auth/register?cookie=false`, options) - .then((json) => json.data) - .then((data) => { - AuthStore.handleCreateUserSuccess(data); - }), + axios.post(`${baseURI}api/auth/register?cookie=false`, options).then(({data}) => { + AuthStore.handleCreateUserSuccess(data); + }), updateUser: (username: Credentials['username'], options: AuthUpdateUserOptions) => - axios.patch(`${baseURI}api/auth/users/${encodeURIComponent(username)}`, options).then((json) => json.data), + axios.patch(`${baseURI}api/auth/users/${encodeURIComponent(username)}`, options).then((res) => res.data), deleteUser: (username: Credentials['username']) => - axios - .delete(`${baseURI}api/auth/users/${encodeURIComponent(username)}`) - .then((json) => json.data) - .then( - () => { - // do nothing. - }, - () => { - // do nothing. - }, - ), + axios.delete(`${baseURI}api/auth/users/${encodeURIComponent(username)}`).then( + () => { + // do nothing. + }, + () => { + // do nothing. + }, + ), fetchUsers: () => - axios - .get(`${baseURI}api/auth/users`) - .then((json) => json.data) - .then((data) => { - AuthStore.handleListUsersSuccess(data); - }), + axios.get>(`${baseURI}api/auth/users`).then(({data}) => { + AuthStore.handleListUsersSuccess(data); + }), logout: () => axios.get(`${baseURI}api/auth/logout`).then( @@ -95,47 +87,42 @@ const AuthActions = { ), register: (options: AuthRegistrationOptions) => - axios - .post(`${baseURI}api/auth/register`, options) - .then((json) => json.data) - .then( - (data) => { - AuthStore.handleRegisterSuccess(data); - }, - (error: AxiosError) => { - throw error; - }, - ), + axios.post(`${baseURI}api/auth/register`, options).then( + ({data}) => { + AuthStore.handleRegisterSuccess(data); + }, + (error: AxiosError) => { + throw error; + }, + ), verify: () => axios - .get(`${baseURI}api/auth/verify?${Date.now()}`) + .get(`${baseURI}api/auth/verify?${Date.now()}`) .then( - (res: AxiosResponse) => { - if (res.data.configs != null) { - ConfigStore.handlePreloadConfigs(res.data.configs); + ({data}) => { + if (data.configs != null) { + ConfigStore.handlePreloadConfigs(data.configs); } - return res.data; + return data; }, - (error: AxiosError) => { + (error: AxiosError) => { if (error.response?.data?.configs != null) { ConfigStore.handlePreloadConfigs(error.response.data.configs); } throw error; }, ) - .then( - (data: AuthVerificationResponse) => { - AuthStore.handleAuthVerificationSuccess(data); + .then((data) => { + AuthStore.handleAuthVerificationSuccess(data); - return Promise.all([ClientActions.fetchSettings(), SettingActions.fetchSettings()]).then(() => data); - }, - (error) => { - AuthStore.handleAuthVerificationError(); + return Promise.all([ClientActions.fetchSettings(), SettingActions.fetchSettings()]).then(() => data); + }) + .catch((error) => { + AuthStore.handleAuthVerificationError(); - throw error; - }, - ), + throw error; + }), } as const; export default AuthActions; diff --git a/client/src/javascript/actions/ClientActions.ts b/client/src/javascript/actions/ClientActions.ts index c4348f86..d043aeec 100644 --- a/client/src/javascript/actions/ClientActions.ts +++ b/client/src/javascript/actions/ClientActions.ts @@ -11,46 +11,35 @@ const {baseURI} = ConfigStore; const ClientActions = { fetchSettings: async (): Promise => - axios - .get(`${baseURI}api/client/settings`) - .then((json) => json.data) - .then( - (data) => { - SettingStore.handleClientSettingsFetchSuccess(data); - }, - () => { - // do nothing. - }, - ), + axios.get(`${baseURI}api/client/settings`).then( + ({data}) => { + SettingStore.handleClientSettingsFetchSuccess(data); + }, + () => { + // do nothing. + }, + ), saveSettings: async (settings: SetClientSettingsOptions, options?: {alert?: boolean}): Promise => { if (Object.keys(settings).length > 0) { SettingStore.saveClientSettings(settings); - let err = false; - await axios - .patch(`${baseURI}api/client/settings`, settings) - .then((json) => json.data) - .then( - () => { - // do nothing. - }, - () => { - err = true; - }, - ); + const success = await axios.patch(`${baseURI}api/client/settings`, settings).then( + () => true, + () => false, + ); if (options?.alert) { // TODO: More precise error message. AlertStore.add( - err + success ? { - id: 'general.error.unknown', - type: 'error', - } - : { id: 'alert.settings.saved', type: 'success', + } + : { + id: 'general.error.unknown', + type: 'error', }, ); } @@ -61,12 +50,9 @@ const ClientActions = { ClientActions.saveSettings({[property]: data}), testConnection: async (): Promise => - axios - .get(`${baseURI}api/client/connection-test`) - .then((json) => json.data) - .then(() => { - // do nothing. - }), + axios.get(`${baseURI}api/client/connection-test`).then(() => { + // do nothing. + }), } as const; export default ClientActions; diff --git a/client/src/javascript/actions/FeedActions.ts b/client/src/javascript/actions/FeedActions.ts index 6a0d95bb..8e1d5953 100644 --- a/client/src/javascript/actions/FeedActions.ts +++ b/client/src/javascript/actions/FeedActions.ts @@ -3,58 +3,40 @@ import axios from 'axios'; import ConfigStore from '@client/stores/ConfigStore'; import FeedStore from '@client/stores/FeedStore'; +import type {Feed, Item, Rule} from '@shared/types/Feed'; import type {AddFeedOptions, AddRuleOptions, ModifyFeedOptions} from '@shared/types/api/feed-monitor'; const {baseURI} = ConfigStore; const FeedActions = { addFeed: (options: AddFeedOptions) => - axios - .put(`${baseURI}api/feed-monitor/feeds`, options) - .then((json) => json.data) - .then(() => { - FeedActions.fetchFeedMonitors(); - }), + axios.put(`${baseURI}api/feed-monitor/feeds`, options).then(() => FeedActions.fetchFeedMonitors()), modifyFeed: (id: string, options: ModifyFeedOptions) => - axios - .patch(`${baseURI}api/feed-monitor/feeds/${id}`, options) - .then((json) => json.data) - .then(() => { - FeedActions.fetchFeedMonitors(); - }), + axios.patch(`${baseURI}api/feed-monitor/feeds/${id}`, options).then(() => FeedActions.fetchFeedMonitors()), addRule: (options: AddRuleOptions) => - axios - .put(`${baseURI}api/feed-monitor/rules`, options) - .then((json) => json.data) - .then(() => { - FeedActions.fetchFeedMonitors(); - }), + axios.put(`${baseURI}api/feed-monitor/rules`, options).then(() => FeedActions.fetchFeedMonitors()), fetchFeedMonitors: () => - axios - .get(`${baseURI}api/feed-monitor`) - .then((json) => json.data) - .then( - (data) => { - FeedStore.handleFeedMonitorsFetchSuccess(data); - }, - () => { - // do nothing. - }, - ), + axios.get<{feeds: Array; rules: Array}>(`${baseURI}api/feed-monitor`).then( + ({data}) => { + FeedStore.handleFeedMonitorsFetchSuccess(data); + }, + () => { + // do nothing. + }, + ), fetchItems: ({id, search}: {id: string; search: string}) => axios - .get(`${baseURI}api/feed-monitor/feeds/${id}/items`, { + .get(`${baseURI}api/feed-monitor/feeds/${id}/items`, { params: { search, }, }) - .then((json) => json.data) .then( - (data) => { + ({data}) => { FeedStore.handleItemsFetchSuccess(data); }, () => { @@ -63,17 +45,12 @@ const FeedActions = { ), removeFeedMonitor: (id: string) => - axios - .delete(`${baseURI}api/feed-monitor/${id}`) - .then((json) => json.data) - .then( - () => { - FeedActions.fetchFeedMonitors(); - }, - () => { - // do nothing. - }, - ), + axios.delete(`${baseURI}api/feed-monitor/${id}`).then( + () => FeedActions.fetchFeedMonitors(), + () => { + // do nothing. + }, + ), } as const; export default FeedActions; diff --git a/client/src/javascript/actions/FloodActions.ts b/client/src/javascript/actions/FloodActions.ts index e192a77c..6e43dc24 100644 --- a/client/src/javascript/actions/FloodActions.ts +++ b/client/src/javascript/actions/FloodActions.ts @@ -9,8 +9,9 @@ import TorrentStore from '@client/stores/TorrentStore'; import TransferDataStore from '@client/stores/TransferDataStore'; import UIStore from '@client/stores/UIStore'; +import type {DirectoryListResponse} from '@shared/types/api'; import type {HistorySnapshot} from '@shared/constants/historySnapshotTypes'; -import type {NotificationFetchOptions} from '@shared/types/Notification'; +import type {NotificationFetchOptions, NotificationState} from '@shared/types/Notification'; import type {ServerEvents} from '@shared/types/ServerEvents'; interface ActivityStreamOptions { @@ -70,17 +71,14 @@ const ServerEventHandlers: Record void> const FloodActions = { clearNotifications: () => { NotificationStore.clearAll(); - return axios - .delete(`${baseURI}api/notifications`) - .then((json) => json.data) - .then( - () => { - // do nothing. - }, - () => { - // do nothing. - }, - ); + return axios.delete(`${baseURI}api/notifications`).then( + () => { + // do nothing. + }, + () => { + // do nothing. + }, + ); }, closeActivityStream() { @@ -101,19 +99,18 @@ const FloodActions = { fetchDirectoryList: (path: string) => axios - .get(`${baseURI}api/directory-list`, { + .get(`${baseURI}api/directory-list`, { params: {path}, }) - .then((json) => json.data), + .then((res) => res.data), fetchNotifications: (options: NotificationFetchOptions) => axios - .get(`${baseURI}api/notifications`, { + .get(`${baseURI}api/notifications`, { params: options, }) - .then((json) => json.data) .then( - (data) => { + ({data}) => { NotificationStore.handleNotificationsFetchSuccess(data); }, () => { diff --git a/client/src/javascript/actions/SettingActions.ts b/client/src/javascript/actions/SettingActions.ts index 1d82e2f0..ac4b2a21 100644 --- a/client/src/javascript/actions/SettingActions.ts +++ b/client/src/javascript/actions/SettingActions.ts @@ -11,46 +11,35 @@ const {baseURI} = ConfigStore; const SettingActions = { fetchSettings: async (): Promise => - axios - .get(`${baseURI}api/settings`) - .then((json) => json.data) - .then( - (data) => { - SettingStore.handleSettingsFetchSuccess(data); - }, - () => { - // do nothing. - }, - ), + axios.get(`${baseURI}api/settings`).then( + ({data}) => { + SettingStore.handleSettingsFetchSuccess(data); + }, + () => { + // do nothing. + }, + ), saveSettings: async (settings: SetFloodSettingsOptions, options?: {alert?: boolean}): Promise => { if (Object.keys(settings).length > 0) { SettingStore.saveFloodSettings(settings); - let err = false; - await axios - .patch(`${baseURI}api/settings`, settings) - .then((json) => json.data) - .then( - () => { - // do nothing. - }, - () => { - err = true; - }, - ); + const success = await axios.patch(`${baseURI}api/settings`, settings).then( + () => true, + () => false, + ); if (options?.alert) { // TODO: More precise error message. AlertStore.add( - err + success ? { - id: 'general.error.unknown', - type: 'error', - } - : { id: 'alert.settings.saved', type: 'success', + } + : { + id: 'general.error.unknown', + type: 'error', }, ); } diff --git a/client/src/javascript/actions/TorrentActions.ts b/client/src/javascript/actions/TorrentActions.ts index c04706f2..308ea8d8 100644 --- a/client/src/javascript/actions/TorrentActions.ts +++ b/client/src/javascript/actions/TorrentActions.ts @@ -11,7 +11,7 @@ import type { ReannounceTorrentsOptions, SetTorrentsTagsOptions, } from '@shared/schema/api/torrents'; -import type { +import { CheckTorrentsOptions, CreateTorrentOptions, DeleteTorrentsOptions, @@ -23,6 +23,8 @@ import type { SetTorrentsTrackersOptions, StartTorrentsOptions, StopTorrentsOptions, + TorrentAddResponse, + TorrentMediainfoResponse, } from '@shared/types/api/torrents'; import type {TorrentContent} from '@shared/types/TorrentContent'; import type {TorrentPeer} from '@shared/types/TorrentPeer'; @@ -56,43 +58,37 @@ const emitFailedToAddTorrentAlert = (count: number) => { const TorrentActions = { addTorrentsByUrls: (options: AddTorrentByURLOptions): Promise => - axios - .post(`${baseURI}api/torrents/add-urls`, options) - .then((json) => json.data) - .then( - (response) => { - if (response.length) { - emitTorrentAddedAlert(response.length); - } else { - emitRequestSentAlert(options.urls.length); - } - }, - () => { - emitFailedToAddTorrentAlert(options.urls.length); - }, - ), + axios.post(`${baseURI}api/torrents/add-urls`, options).then( + ({data}) => { + if (data.length) { + emitTorrentAddedAlert(data.length); + } else { + emitRequestSentAlert(options.urls.length); + } + }, + () => { + emitFailedToAddTorrentAlert(options.urls.length); + }, + ), addTorrentsByFiles: (options: AddTorrentByFileOptions): Promise => - axios - .post(`${baseURI}api/torrents/add-files`, options) - .then((json) => json.data) - .then( - (response) => { - if (response.length) { - emitTorrentAddedAlert(response.length); - } else { - emitRequestSentAlert(options.files.length); - } - }, - () => { - emitFailedToAddTorrentAlert(options.files.length); - }, - ), + axios.post(`${baseURI}api/torrents/add-files`, options).then( + ({data}) => { + if (data.length) { + emitTorrentAddedAlert(data.length); + } else { + emitRequestSentAlert(options.files.length); + } + }, + () => { + emitFailedToAddTorrentAlert(options.files.length); + }, + ), createTorrent: (options: CreateTorrentOptions): Promise => - axios.post(`${baseURI}api/torrents/create`, options, {responseType: 'blob'}).then( - (response) => { - download(response.data, (options.name || `${Date.now()}`).concat('.torrent')); + axios.post(`${baseURI}api/torrents/create`, options, {responseType: 'blob'}).then( + ({data}) => { + download(data, (options.name || `${Date.now()}`).concat('.torrent')); emitTorrentAddedAlert(1); }, () => { @@ -101,68 +97,53 @@ const TorrentActions = { ), deleteTorrents: (options: DeleteTorrentsOptions): Promise => - axios - .post(`${baseURI}api/torrents/delete`, options) - .then((json) => json.data) - .then( - () => { - AlertStore.add({ - id: 'alert.torrent.remove', - type: 'success', - count: options.hashes.length, - }); - }, - () => { - AlertStore.add({ - id: 'alert.torrent.remove.failed', - type: 'error', - count: options.hashes.length, - }); - }, - ), + axios.post(`${baseURI}api/torrents/delete`, options).then( + () => + AlertStore.add({ + id: 'alert.torrent.remove', + type: 'success', + count: options.hashes.length, + }), + () => + AlertStore.add({ + id: 'alert.torrent.remove.failed', + type: 'error', + count: options.hashes.length, + }), + ), checkHash: (options: CheckTorrentsOptions): Promise => - axios - .post(`${baseURI}api/torrents/check-hash`, options) - .then((json) => json.data) - .then( - () => { - // do nothing. - }, - () => { - // do nothing. - }, - ), + axios.post(`${baseURI}api/torrents/check-hash`, options).then( + () => { + // do nothing. + }, + () => { + // do nothing. + }, + ), fetchMediainfo: (hash: TorrentProperties['hash'], cancelToken?: CancelToken): Promise<{output: string}> => - axios.get(`${baseURI}api/torrents/${hash}/mediainfo`, {cancelToken}).then<{output: string}>((json) => json.data), + axios + .get(`${baseURI}api/torrents/${hash}/mediainfo`, {cancelToken}) + .then<{output: string}>((res) => res.data), fetchTorrentContents: (hash: TorrentProperties['hash']): Promise | null> => - axios - .get(`${baseURI}api/torrents/${hash}/contents`) - .then>((json) => json.data) - .then( - (contents) => contents, - () => null, - ), + axios.get>(`${baseURI}api/torrents/${hash}/contents`).then( + (res) => res.data, + () => null, + ), fetchTorrentPeers: (hash: TorrentProperties['hash']): Promise | null> => - axios - .get(`${baseURI}api/torrents/${hash}/peers`) - .then>((json) => json.data) - .then( - (peers) => peers, - () => null, - ), + axios.get>(`${baseURI}api/torrents/${hash}/peers`).then( + (res) => res.data, + () => null, + ), fetchTorrentTrackers: (hash: TorrentProperties['hash']): Promise | null> => - axios - .get(`${baseURI}api/torrents/${hash}/trackers`) - .then>((json) => json.data) - .then( - (trackers) => trackers, - () => null, - ), + axios.get>(`${baseURI}api/torrents/${hash}/trackers`).then( + (res) => res.data, + () => null, + ), getTorrentContentsDataPermalink: (hash: TorrentProperties['hash'], indices: number[]): Promise => axios @@ -175,150 +156,116 @@ const TorrentActions = { ), moveTorrents: (options: MoveTorrentsOptions): Promise => - axios - .post(`${baseURI}api/torrents/move`, options) - .then((json) => json.data) - .then( - () => { - AlertStore.add({ - id: 'alert.torrent.move', - type: 'success', - count: options.hashes.length, - }); - }, - () => { - AlertStore.add({ - id: 'alert.torrent.move.failed', - type: 'error', - count: options.hashes.length, - }); - }, - ), + axios.post(`${baseURI}api/torrents/move`, options).then( + () => + AlertStore.add({ + id: 'alert.torrent.move', + type: 'success', + count: options.hashes.length, + }), + () => + AlertStore.add({ + id: 'alert.torrent.move.failed', + type: 'error', + count: options.hashes.length, + }), + ), reannounce: (options: ReannounceTorrentsOptions): Promise => - axios - .post(`${baseURI}api/torrents/reannounce`, options) - .then((json) => json.data) - .then( - () => { - // do nothing. - }, - () => { - // do nothing. - }, - ), + axios.post(`${baseURI}api/torrents/reannounce`, options).then( + () => { + // do nothing. + }, + () => { + // do nothing. + }, + ), startTorrents: async (options: StartTorrentsOptions): Promise => { if (options.hashes.length > 0) { - return axios - .post(`${baseURI}api/torrents/start`, options) - .then((json) => json.data) - .then( - () => { - // do nothing. - }, - () => { - // do nothing. - }, - ); + return axios.post(`${baseURI}api/torrents/start`, options).then( + () => { + // do nothing. + }, + () => { + // do nothing. + }, + ); } return undefined; }, stopTorrents: async (options: StopTorrentsOptions): Promise => { if (options.hashes.length > 0) { - return axios - .post(`${baseURI}api/torrents/stop`, options) - .then((json) => json.data) - .then( - () => { - // do nothing. - }, - () => { - // do nothing. - }, - ); + return axios.post(`${baseURI}api/torrents/stop`, options).then( + () => { + // do nothing. + }, + () => { + // do nothing. + }, + ); } return undefined; }, setInitialSeeding: (options: SetTorrentsInitialSeedingOptions): Promise => - axios - .patch(`${baseURI}api/torrents/initial-seeding`, options) - .then((json) => json.data) - .then( - () => { - // do nothing. - }, - () => { - // do nothing. - }, - ), + axios.patch(`${baseURI}api/torrents/initial-seeding`, options).then( + () => { + // do nothing. + }, + () => { + // do nothing. + }, + ), setPriority: (options: SetTorrentsPriorityOptions): Promise => - axios - .patch(`${baseURI}api/torrents/priority`, options) - .then((json) => json.data) - .then( - () => { - // do nothing. - }, - () => { - // do nothing. - }, - ), + axios.patch(`${baseURI}api/torrents/priority`, options).then( + () => { + // do nothing. + }, + () => { + // do nothing. + }, + ), setSequential: (options: SetTorrentsSequentialOptions): Promise => - axios - .patch(`${baseURI}api/torrents/sequential`, options) - .then((json) => json.data) - .then( - () => { - // do nothing. - }, - () => { - // do nothing. - }, - ), + axios.patch(`${baseURI}api/torrents/sequential`, options).then( + () => { + // do nothing. + }, + () => { + // do nothing. + }, + ), setFilePriority: (hash: TorrentProperties['hash'], options: SetTorrentContentsPropertiesOptions): Promise => - axios - .patch(`${baseURI}api/torrents/${hash}/contents`, options) - .then((json) => json.data) - .then( - () => { - // do nothing. - }, - () => { - // do nothing. - }, - ), + axios.patch(`${baseURI}api/torrents/${hash}/contents`, options).then( + () => { + // do nothing. + }, + () => { + // do nothing. + }, + ), setTags: (options: SetTorrentsTagsOptions): Promise => - axios - .patch(`${baseURI}api/torrents/tags`, options) - .then((json) => json.data) - .then( - () => { - UIStore.handleSetTaxonomySuccess(); - }, - () => { - // do nothing. - }, - ), + axios.patch(`${baseURI}api/torrents/tags`, options).then( + () => UIStore.handleSetTaxonomySuccess(), + () => { + // do nothing. + }, + ), setTrackers: (options: SetTorrentsTrackersOptions): Promise => - axios - .patch(`${baseURI}api/torrents/trackers`, options) - .then((json) => json.data) - .then( - () => { - // do nothing. - }, - () => { - // do nothing. - }, - ), + axios.patch(`${baseURI}api/torrents/trackers`, options).then( + () => { + // do nothing. + }, + () => { + // do nothing. + }, + ), }; export default TorrentActions; diff --git a/client/src/javascript/components/general/form-elements/FilesystemBrowserTextbox.tsx b/client/src/javascript/components/general/form-elements/FilesystemBrowserTextbox.tsx index 31d6255f..25bae507 100644 --- a/client/src/javascript/components/general/form-elements/FilesystemBrowserTextbox.tsx +++ b/client/src/javascript/components/general/form-elements/FilesystemBrowserTextbox.tsx @@ -1,5 +1,5 @@ import debounce from 'lodash/debounce'; -import {forwardRef, MutableRefObject, ReactNode, useEffect, useRef, useState} from 'react'; +import {forwardRef, MutableRefObject, ReactElement, ReactNode, useEffect, useRef, useState} from 'react'; import {Trans, useLingui} from '@lingui/react'; import {useEnsuredForwardedRef} from 'react-use'; @@ -67,7 +67,7 @@ const FilesystemBrowserTextbox = forwardRef = []; if (showBasePathToggle) { toggles.push( diff --git a/client/src/javascript/components/general/form-elements/TagSelect.tsx b/client/src/javascript/components/general/form-elements/TagSelect.tsx index b226780f..2865cd68 100644 --- a/client/src/javascript/components/general/form-elements/TagSelect.tsx +++ b/client/src/javascript/components/general/form-elements/TagSelect.tsx @@ -1,5 +1,5 @@ import classnames from 'classnames'; -import {FC, ReactNode, ReactNodeArray, useEffect, useRef, useState} from 'react'; +import {FC, ReactElement, ReactNode, useEffect, useRef, useState} from 'react'; import {sort} from 'fast-sort'; import {Trans} from '@lingui/react'; import {useKeyPressEvent} from 'react-use'; @@ -114,7 +114,7 @@ const TagSelect: FC = ({defaultValue, placeholder, id, label, on ...sort(Object.keys(TorrentFilterStore.taxonomy.tagCounts)).asc(), ...selectedTags, ]), - ].reduce((accumulator: ReactNodeArray, tag) => { + ].reduce((accumulator: Array, tag) => { if (tag === '') { return accumulator; } diff --git a/client/src/javascript/components/modals/ModalTabs.tsx b/client/src/javascript/components/modals/ModalTabs.tsx index fde5d9f2..649bf55a 100644 --- a/client/src/javascript/components/modals/ModalTabs.tsx +++ b/client/src/javascript/components/modals/ModalTabs.tsx @@ -1,5 +1,5 @@ import classnames from 'classnames'; -import {FC, ReactNode, ReactNodeArray} from 'react'; +import {FC, ReactNode} from 'react'; export interface Tab { id?: string; @@ -18,41 +18,43 @@ interface ModalTabsProps { const ModalTabs: FC = (props: ModalTabsProps) => { const {activeTabId, tabs = {}, onTabChange} = props; - const tabNodes: ReactNodeArray = Object.keys(tabs).map((tabId) => { - const currentTab = tabs[tabId]; + return ( +
    + {Object.keys(tabs).map((tabId) => { + const currentTab = tabs[tabId]; - currentTab.id = tabId; + currentTab.id = tabId; - const classes = classnames('modal__tab', { - 'is-active': tabId === activeTabId, - }); + const classes = classnames('modal__tab', { + 'is-active': tabId === activeTabId, + }); - return ( -
  • - -
  • - ); - }); - - return
      {tabNodes}
    ; + return ( +
  • + +
  • + ); + })} +
+ ); }; ModalTabs.defaultProps = { diff --git a/client/src/javascript/components/modals/feeds-modal/DownloadRulesTab.tsx b/client/src/javascript/components/modals/feeds-modal/DownloadRulesTab.tsx index e1a60244..adb5995a 100644 --- a/client/src/javascript/components/modals/feeds-modal/DownloadRulesTab.tsx +++ b/client/src/javascript/components/modals/feeds-modal/DownloadRulesTab.tsx @@ -1,4 +1,4 @@ -import {FC, ReactNodeArray, useRef, useState} from 'react'; +import {FC, ReactElement, useRef, useState} from 'react'; import {Trans, useLingui} from '@lingui/react'; import {Button, Form, FormError, FormRow, FormRowItem} from '@client/ui'; @@ -164,7 +164,7 @@ const DownloadRulesTab: FC = () => { - {Object.keys(errors).reduce((memo: ReactNodeArray, key) => { + {Object.keys(errors).reduce((memo: Array, key) => { if (errors[key as ValidatedField] != null) { memo.push( diff --git a/client/src/javascript/components/modals/feeds-modal/FeedItems.tsx b/client/src/javascript/components/modals/feeds-modal/FeedItems.tsx index 8c8ed709..68c999c6 100644 --- a/client/src/javascript/components/modals/feeds-modal/FeedItems.tsx +++ b/client/src/javascript/components/modals/feeds-modal/FeedItems.tsx @@ -1,4 +1,4 @@ -import {FC, ReactNodeArray} from 'react'; +import {FC, ReactElement} from 'react'; import {observer} from 'mobx-react'; import {Trans} from '@lingui/react'; @@ -13,7 +13,7 @@ interface FeedItemsProps { const FeedItems: FC = observer(({selectedFeedID}: FeedItemsProps) => { const {items} = FeedStore; - const itemElements: ReactNodeArray = []; + const itemElements: Array = []; if (selectedFeedID) { const titleOccurrences: Record = {}; items.forEach((item, index) => { diff --git a/client/src/javascript/components/modals/feeds-modal/FeedsTab.tsx b/client/src/javascript/components/modals/feeds-modal/FeedsTab.tsx index d71f6fc4..cd833044 100644 --- a/client/src/javascript/components/modals/feeds-modal/FeedsTab.tsx +++ b/client/src/javascript/components/modals/feeds-modal/FeedsTab.tsx @@ -1,4 +1,4 @@ -import {FC, ReactNodeArray, useRef, useState} from 'react'; +import {FC, ReactElement, useRef, useState} from 'react'; import {Trans, useLingui} from '@lingui/react'; import {Button, Form, FormError, FormRow, FormRowItem} from '@client/ui'; @@ -137,7 +137,7 @@ const FeedsTab: FC = () => { - {Object.keys(errors).reduce((memo: ReactNodeArray, key) => { + {Object.keys(errors).reduce((memo: Array, key) => { if (errors[key as ValidatedField] != null) { memo.push( diff --git a/client/src/javascript/components/torrent-list/TableHeading.tsx b/client/src/javascript/components/torrent-list/TableHeading.tsx index bd270b3b..58c6ccf9 100644 --- a/client/src/javascript/components/torrent-list/TableHeading.tsx +++ b/client/src/javascript/components/torrent-list/TableHeading.tsx @@ -1,5 +1,5 @@ import classnames from 'classnames'; -import {forwardRef, MutableRefObject, ReactNodeArray, useRef, useState} from 'react'; +import {forwardRef, MutableRefObject, ReactElement, useRef, useState} from 'react'; import {observer} from 'mobx-react'; import {Trans, useLingui} from '@lingui/react'; import {useEnsuredForwardedRef} from 'react-use'; @@ -76,7 +76,7 @@ const TableHeading = observer( return (
- {SettingStore.floodSettings.torrentListColumns.reduce((accumulator: ReactNodeArray, {id, visible}) => { + {SettingStore.floodSettings.torrentListColumns.reduce((accumulator: Array, {id, visible}) => { if (!visible) { return accumulator; } diff --git a/client/src/javascript/components/torrent-list/TorrentListRowCondensed.tsx b/client/src/javascript/components/torrent-list/TorrentListRowCondensed.tsx index a3c244b1..0c5975ce 100644 --- a/client/src/javascript/components/torrent-list/TorrentListRowCondensed.tsx +++ b/client/src/javascript/components/torrent-list/TorrentListRowCondensed.tsx @@ -1,4 +1,4 @@ -import {CSSProperties, forwardRef, KeyboardEvent, MouseEvent, ReactNodeArray, TouchEvent} from 'react'; +import {CSSProperties, forwardRef, KeyboardEvent, MouseEvent, ReactElement, TouchEvent} from 'react'; import {observer} from 'mobx-react'; import SettingStore from '../../stores/SettingStore'; @@ -34,7 +34,7 @@ const TorrentListRowCondensed = observer( ref, ) => { const torrentListColumns = SettingStore.floodSettings.torrentListColumns.reduce( - (accumulator: ReactNodeArray, {id, visible}) => { + (accumulator: Array, {id, visible}) => { if (TorrentListColumns[id] == null) { return accumulator; } diff --git a/client/src/javascript/components/torrent-list/TorrentListRowExpanded.tsx b/client/src/javascript/components/torrent-list/TorrentListRowExpanded.tsx index e42e8f35..04d954c0 100644 --- a/client/src/javascript/components/torrent-list/TorrentListRowExpanded.tsx +++ b/client/src/javascript/components/torrent-list/TorrentListRowExpanded.tsx @@ -1,4 +1,4 @@ -import {CSSProperties, FC, forwardRef, KeyboardEvent, MouseEvent, ReactNodeArray, TouchEvent} from 'react'; +import {CSSProperties, FC, forwardRef, KeyboardEvent, MouseEvent, ReactElement, TouchEvent} from 'react'; import {observer} from 'mobx-react'; import {useLingui} from '@lingui/react'; @@ -54,7 +54,7 @@ const TorrentListRowExpanded = observer( ) => { const columns = SettingStore.floodSettings.torrentListColumns; - const primarySection: ReactNodeArray = [ + const primarySection: Array = [ , ]; - const secondarySection: ReactNodeArray = [ + const secondarySection: Array = [ , , , ]; - const tertiarySection: ReactNodeArray = [ + const tertiarySection: Array = [ , ]; - const quaternarySection: ReactNodeArray = [ + const quaternarySection: Array = [ = ({ grow, onClick, }: ButtonProps) => { - const addonNodes: ReactNodeArray = []; - const childNodes: ReactNodeArray = []; + const addonNodes: Array = []; + const childNodes: Array = []; Children.toArray(children).forEach((child) => { const childAsElement = child as ReactElement; @@ -56,7 +56,7 @@ const Button: FC = ({ }), ); } else { - childNodes.push(child); + childNodes.push(childAsElement); } }); diff --git a/package-lock.json b/package-lock.json index 1e166a43..bffdad5d 100644 --- a/package-lock.json +++ b/package-lock.json @@ -12,7 +12,7 @@ ], "license": "GPL-3.0-only", "dependencies": { - "geoip-country": "^4.0.89" + "geoip-country": "^4.0.91" }, "bin": { "flood": "dist/index.js" @@ -27,8 +27,8 @@ "@babel/preset-react": "^7.14.5", "@babel/preset-typescript": "^7.15.0", "@emotion/babel-plugin": "^11.3.0", - "@emotion/css": "^11.1.3", - "@emotion/react": "^11.4.1", + "@emotion/css": "^11.5.0", + "@emotion/react": "^11.5.0", "@lingui/loader": "^3.12.1", "@lingui/react": "^3.12.1", "@pmmmwh/react-refresh-webpack-plugin": "^0.5.1", @@ -38,7 +38,7 @@ "@types/content-disposition": "^0.5.4", "@types/cookie-parser": "^1.4.2", "@types/create-torrent": "^5.0.0", - "@types/d3": "^7.0.0", + "@types/d3": "^7.1.0", "@types/debug": "^4.1.7", "@types/express": "^4.17.13", "@types/express-rate-limit": "^5.1.3", @@ -47,29 +47,28 @@ "@types/http-errors": "^1.8.1", "@types/jest": "^27.0.2", "@types/jsonwebtoken": "^8.5.5", - "@types/lodash": "^4.14.175", + "@types/lodash": "^4.14.176", "@types/morgan": "^1.9.3", - "@types/node": "^12.20.28", + "@types/node": "^12.20.34", "@types/overlayscrollbars": "^1.12.1", "@types/parse-torrent": "^5.8.4", "@types/passport": "^1.0.7", "@types/passport-jwt": "^3.0.6", - "@types/react": "^17.0.27", - "@types/react-dom": "^17.0.9", - "@types/react-measure": "^2.0.7", + "@types/react": "^17.0.31", + "@types/react-dom": "^17.0.10", + "@types/react-measure": "^2.0.8", "@types/react-router-dom": "^5.3.1", - "@types/react-transition-group": "^4.4.3", + "@types/react-transition-group": "^4.4.4", "@types/react-window": "^1.8.5", "@types/spdy": "^3.4.5", "@types/supertest": "^2.0.11", "@types/tar-fs": "^2.0.1", - "@types/tar-stream": "^2.2.1", "@typescript-eslint/eslint-plugin": "^4.33.0", "@typescript-eslint/parser": "^4.33.0", "@vercel/ncc": "^0.31.1", "autoprefixer": "^10.3.7", - "axios": "^0.21.4", - "babel-loader": "^8.2.2", + "axios": "^0.23.0", + "babel-loader": "^8.2.3", "bencode": "^2.0.2", "body-parser": "^1.19.0", "case-sensitive-paths-webpack-plugin": "2.4.0", @@ -79,7 +78,7 @@ "content-disposition": "^0.5.3", "cookie-parser": "^1.4.5", "create-torrent": "^5.0.1", - "css-loader": "^6.3.0", + "css-loader": "^6.4.0", "css-minimizer-webpack-plugin": "^3.1.1", "d3-array": "^3.1.1", "d3-scale": "^4.0.2", @@ -90,16 +89,11 @@ "eslint-config-airbnb": "^18.2.1", "eslint-config-airbnb-typescript": "^14.0.1", "eslint-config-prettier": "^8.3.0", - "eslint-config-react-app": "^6.0.0", - "eslint-import-resolver-webpack": "^0.13.1", - "eslint-plugin-import": "^2.24.2", - "eslint-plugin-jest": "^24.5.2", - "eslint-plugin-jsx-a11y": "^6.4.1", - "eslint-plugin-react": "^7.26.1", - "eslint-plugin-react-hooks": "^4.2.0", + "eslint-config-react-app": "^7.0.0-next.91", + "eslint-import-resolver-webpack": "^0.13.2", "eslint-webpack-plugin": "^3.0.1", "express": "^4.17.1", - "express-rate-limit": "^5.4.1", + "express-rate-limit": "^5.5.0", "fast-json-patch": "^3.1.0", "fast-sort": "^3.0.3", "feedsub": "^0.7.7", @@ -109,15 +103,15 @@ "fs-extra": "^10.0.0", "get-user-locale": "^1.4.0", "hash-wasm": "^4.9.0", - "html-webpack-plugin": "^5.3.2", + "html-webpack-plugin": "^5.4.0", "http-errors": "^1.8.0", - "jest": "^27.2.5", + "jest": "^27.3.1", "js-file-download": "^0.4.12", "jsonwebtoken": "^8.5.1", "lodash": "^4.17.21", - "mini-css-extract-plugin": "^2.4.2", - "mobx": "^6.3.3", - "mobx-react": "^7.2.0", + "mini-css-extract-plugin": "^2.4.3", + "mobx": "^6.3.5", + "mobx-react": "^7.2.1", "morgan": "^1.10.0", "nedb-promises": "^5.0.1", "overlayscrollbars": "^1.13.1", @@ -126,8 +120,8 @@ "passport": "^0.5.0", "passport-jwt": "^4.0.0", "polished": "^4.1.3", - "postcss": "^8.3.9", - "postcss-loader": "^6.1.1", + "postcss": "^8.3.11", + "postcss-loader": "^6.2.0", "prettier": "^2.4.1", "promise": "^8.1.0", "query-string": "^6.14.1", @@ -149,29 +143,27 @@ "react-window": "^1.8.6", "ress": "^4.0.0", "sanitize-filename": "^1.6.3", - "sass": "^1.42.1", - "sass-loader": "^12.1.0", + "sass": "^1.43.3", + "sass-loader": "^12.2.0", "saxen": "^8.1.2", "source-map-loader": "^3.0.0", "spdy": "^4.0.2", - "style-loader": "^3.3.0", + "style-loader": "^3.3.1", "supertest": "^6.1.6", "tar-fs": "^2.1.1", - "tar-stream": "^2.2.0", "terser-webpack-plugin": "^5.2.4", - "tldts": "^5.7.47", - "ts-jest": "^27.0.5", + "tldts": "^5.7.49", + "ts-jest": "^27.0.7", "ts-node-dev": "^1.1.8", "tsconfig-paths": "^3.11.0", - "typed-emitter": "^1.3.1", - "typescript": "~4.4.3", - "url-loader": "^4.1.1", + "typed-emitter": "^1.4.0", + "typescript": "~4.4.4", "use-query-params": "^1.2.3", - "webpack": "^5.58.1", + "webpack": "^5.59.1", "webpack-dev-server": "^4.3.1", "webpackbar": "^5.0.0-3", "yargs": "^17.2.1", - "zod": "^3.9.8" + "zod": "^3.11.2" }, "engines": { "node": ">=12.0.0", @@ -1054,6 +1046,21 @@ "@babel/core": "^7.0.0-0" } }, + "node_modules/@babel/plugin-syntax-flow": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-flow/-/plugin-syntax-flow-7.14.5.tgz", + "integrity": "sha512-9WK5ZwKCdWHxVuU13XNT6X73FGmutAXeor5lGFq6qhOFtMFUF4jkbijuyUdZZlpYq6E2hZeZf/u3959X9wsv0Q==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, "node_modules/@babel/plugin-syntax-import-meta": { "version": "7.10.4", "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-meta/-/plugin-syntax-import-meta-7.10.4.tgz", @@ -1370,6 +1377,22 @@ "@babel/core": "^7.0.0-0" } }, + "node_modules/@babel/plugin-transform-flow-strip-types": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-flow-strip-types/-/plugin-transform-flow-strip-types-7.14.5.tgz", + "integrity": "sha512-KhcolBKfXbvjwI3TV7r7TkYm8oNXHNBqGOy6JDVwtecFaRoKYsUUqJdS10q0YDKW1c6aZQgO+Ys3LfGkox8pXA==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.14.5", + "@babel/plugin-syntax-flow": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, "node_modules/@babel/plugin-transform-for-of": { "version": "7.15.4", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.15.4.tgz", @@ -1672,6 +1695,26 @@ "@babel/core": "^7.0.0-0" } }, + "node_modules/@babel/plugin-transform-runtime": { + "version": "7.15.8", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.15.8.tgz", + "integrity": "sha512-+6zsde91jMzzvkzuEA3k63zCw+tm/GvuuabkpisgbDMTPQsIMHllE3XczJFFtEHLjjhKQFZmGQVRdELetlWpVw==", + "dev": true, + "dependencies": { + "@babel/helper-module-imports": "^7.15.4", + "@babel/helper-plugin-utils": "^7.14.5", + "babel-plugin-polyfill-corejs2": "^0.2.2", + "babel-plugin-polyfill-corejs3": "^0.2.5", + "babel-plugin-polyfill-regenerator": "^0.2.2", + "semver": "^6.3.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, "node_modules/@babel/plugin-transform-shorthand-properties": { "version": "7.14.5", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.14.5.tgz", @@ -2038,28 +2081,28 @@ } }, "node_modules/@emotion/cache": { - "version": "11.4.0", - "resolved": "https://registry.npmjs.org/@emotion/cache/-/cache-11.4.0.tgz", - "integrity": "sha512-Zx70bjE7LErRO9OaZrhf22Qye1y4F7iDl+ITjet0J+i+B88PrAOBkKvaAWhxsZf72tDLajwCgfCjJ2dvH77C3g==", + "version": "11.5.0", + "resolved": "https://registry.npmjs.org/@emotion/cache/-/cache-11.5.0.tgz", + "integrity": "sha512-mAZ5QRpLriBtaj/k2qyrXwck6yeoz1V5lMt/jfj6igWU35yYlNKs2LziXVgvH81gnJZ+9QQNGelSsnuoAy6uIw==", "dev": true, "dependencies": { "@emotion/memoize": "^0.7.4", - "@emotion/sheet": "^1.0.0", + "@emotion/sheet": "^1.0.3", "@emotion/utils": "^1.0.0", "@emotion/weak-memoize": "^0.2.5", - "stylis": "^4.0.3" + "stylis": "^4.0.10" } }, "node_modules/@emotion/css": { - "version": "11.1.3", - "resolved": "https://registry.npmjs.org/@emotion/css/-/css-11.1.3.tgz", - "integrity": "sha512-RSQP59qtCNTf5NWD6xM08xsQdCZmVYnX/panPYvB6LQAPKQB6GL49Njf0EMbS3CyDtrlWsBcmqBtysFvfWT3rA==", + "version": "11.5.0", + "resolved": "https://registry.npmjs.org/@emotion/css/-/css-11.5.0.tgz", + "integrity": "sha512-mqjz/3aqR9rp40M+pvwdKYWxlQK4Nj3cnNjo3Tx6SM14dSsEn7q/4W2/I7PlgG+mb27iITHugXuBIHH/QwUBVQ==", "dev": true, "dependencies": { "@emotion/babel-plugin": "^11.0.0", - "@emotion/cache": "^11.1.3", + "@emotion/cache": "^11.5.0", "@emotion/serialize": "^1.0.0", - "@emotion/sheet": "^1.0.0", + "@emotion/sheet": "^1.0.3", "@emotion/utils": "^1.0.0" }, "peerDependencies": { @@ -2084,15 +2127,15 @@ "dev": true }, "node_modules/@emotion/react": { - "version": "11.4.1", - "resolved": "https://registry.npmjs.org/@emotion/react/-/react-11.4.1.tgz", - "integrity": "sha512-pRegcsuGYj4FCdZN6j5vqCALkNytdrKw3TZMekTzNXixRg4wkLsU5QEaBG5LC6l01Vppxlp7FE3aTHpIG5phLg==", + "version": "11.5.0", + "resolved": "https://registry.npmjs.org/@emotion/react/-/react-11.5.0.tgz", + "integrity": "sha512-MYq/bzp3rYbee4EMBORCn4duPQfgpiEB5XzrZEBnUZAL80Qdfr7CEv/T80jwaTl/dnZmt9SnTa8NkTrwFNpLlw==", "dev": true, "dependencies": { "@babel/runtime": "^7.13.10", - "@emotion/cache": "^11.4.0", + "@emotion/cache": "^11.5.0", "@emotion/serialize": "^1.0.2", - "@emotion/sheet": "^1.0.2", + "@emotion/sheet": "^1.0.3", "@emotion/utils": "^1.0.0", "@emotion/weak-memoize": "^0.2.5", "hoist-non-react-statics": "^3.3.1" @@ -2124,9 +2167,9 @@ } }, "node_modules/@emotion/sheet": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/@emotion/sheet/-/sheet-1.0.2.tgz", - "integrity": "sha512-QQPB1B70JEVUHuNtzjHftMGv6eC3Y9wqavyarj4x4lg47RACkeSfNo5pxIOKizwS9AEFLohsqoaxGQj4p0vSIw==", + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/@emotion/sheet/-/sheet-1.0.3.tgz", + "integrity": "sha512-YoX5GyQ4db7LpbmXHMuc8kebtBGP6nZfRC5Z13OKJMixBEwdZrJ914D6yJv/P+ZH/YY3F5s89NYX2hlZAf3SRQ==", "dev": true }, "node_modules/@emotion/unitless": { @@ -2319,16 +2362,16 @@ } }, "node_modules/@jest/console": { - "version": "27.2.5", - "resolved": "https://registry.npmjs.org/@jest/console/-/console-27.2.5.tgz", - "integrity": "sha512-smtlRF9vNKorRMCUtJ+yllIoiY8oFmfFG7xlzsAE76nKEwXNhjPOJIsc7Dv+AUitVt76t+KjIpUP9m98Crn2LQ==", + "version": "27.3.1", + "resolved": "https://registry.npmjs.org/@jest/console/-/console-27.3.1.tgz", + "integrity": "sha512-RkFNWmv0iui+qsOr/29q9dyfKTTT5DCuP31kUwg7rmOKPT/ozLeGLKJKVIiOfbiKyleUZKIrHwhmiZWVe8IMdw==", "dev": true, "dependencies": { "@jest/types": "^27.2.5", "@types/node": "*", "chalk": "^4.0.0", - "jest-message-util": "^27.2.5", - "jest-util": "^27.2.5", + "jest-message-util": "^27.3.1", + "jest-util": "^27.3.1", "slash": "^3.0.0" }, "engines": { @@ -2336,15 +2379,15 @@ } }, "node_modules/@jest/core": { - "version": "27.2.5", - "resolved": "https://registry.npmjs.org/@jest/core/-/core-27.2.5.tgz", - "integrity": "sha512-VR7mQ+jykHN4WO3OvusRJMk4xCa2MFLipMS+43fpcRGaYrN1KwMATfVEXif7ccgFKYGy5D1TVXTNE4mGq/KMMA==", + "version": "27.3.1", + "resolved": "https://registry.npmjs.org/@jest/core/-/core-27.3.1.tgz", + "integrity": "sha512-DMNE90RR5QKx0EA+wqe3/TNEwiRpOkhshKNxtLxd4rt3IZpCt+RSL+FoJsGeblRZmqdK4upHA/mKKGPPRAifhg==", "dev": true, "dependencies": { - "@jest/console": "^27.2.5", - "@jest/reporters": "^27.2.5", - "@jest/test-result": "^27.2.5", - "@jest/transform": "^27.2.5", + "@jest/console": "^27.3.1", + "@jest/reporters": "^27.3.1", + "@jest/test-result": "^27.3.1", + "@jest/transform": "^27.3.1", "@jest/types": "^27.2.5", "@types/node": "*", "ansi-escapes": "^4.2.1", @@ -2352,19 +2395,19 @@ "emittery": "^0.8.1", "exit": "^0.1.2", "graceful-fs": "^4.2.4", - "jest-changed-files": "^27.2.5", - "jest-config": "^27.2.5", - "jest-haste-map": "^27.2.5", - "jest-message-util": "^27.2.5", + "jest-changed-files": "^27.3.0", + "jest-config": "^27.3.1", + "jest-haste-map": "^27.3.1", + "jest-message-util": "^27.3.1", "jest-regex-util": "^27.0.6", - "jest-resolve": "^27.2.5", - "jest-resolve-dependencies": "^27.2.5", - "jest-runner": "^27.2.5", - "jest-runtime": "^27.2.5", - "jest-snapshot": "^27.2.5", - "jest-util": "^27.2.5", - "jest-validate": "^27.2.5", - "jest-watcher": "^27.2.5", + "jest-resolve": "^27.3.1", + "jest-resolve-dependencies": "^27.3.1", + "jest-runner": "^27.3.1", + "jest-runtime": "^27.3.1", + "jest-snapshot": "^27.3.1", + "jest-util": "^27.3.1", + "jest-validate": "^27.3.1", + "jest-watcher": "^27.3.1", "micromatch": "^4.0.4", "rimraf": "^3.0.0", "slash": "^3.0.0", @@ -2395,17 +2438,17 @@ } }, "node_modules/@jest/core/node_modules/jest-validate": { - "version": "27.2.5", - "resolved": "https://registry.npmjs.org/jest-validate/-/jest-validate-27.2.5.tgz", - "integrity": "sha512-XgYtjS89nhVe+UfkbLgcm+GgXKWgL80t9nTcNeejyO3t0Sj/yHE8BtIJqjZu9NXQksYbGImoQRXmQ1gP+Guffw==", + "version": "27.3.1", + "resolved": "https://registry.npmjs.org/jest-validate/-/jest-validate-27.3.1.tgz", + "integrity": "sha512-3H0XCHDFLA9uDII67Bwi1Vy7AqwA5HqEEjyy934lgVhtJ3eisw6ShOF1MDmRPspyikef5MyExvIm0/TuLzZ86Q==", "dev": true, "dependencies": { "@jest/types": "^27.2.5", "camelcase": "^6.2.0", "chalk": "^4.0.0", - "jest-get-type": "^27.0.6", + "jest-get-type": "^27.3.1", "leven": "^3.1.0", - "pretty-format": "^27.2.5" + "pretty-format": "^27.3.1" }, "engines": { "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" @@ -2425,61 +2468,61 @@ } }, "node_modules/@jest/environment": { - "version": "27.2.5", - "resolved": "https://registry.npmjs.org/@jest/environment/-/environment-27.2.5.tgz", - "integrity": "sha512-XvUW3q6OUF+54SYFCgbbfCd/BKTwm5b2MGLoc2jINXQLKQDTCS2P2IrpPOtQ08WWZDGzbhAzVhOYta3J2arubg==", + "version": "27.3.1", + "resolved": "https://registry.npmjs.org/@jest/environment/-/environment-27.3.1.tgz", + "integrity": "sha512-BCKCj4mOVLme6Tanoyc9k0ultp3pnmuyHw73UHRPeeZxirsU/7E3HC4le/VDb/SMzE1JcPnto+XBKFOcoiJzVw==", "dev": true, "dependencies": { - "@jest/fake-timers": "^27.2.5", + "@jest/fake-timers": "^27.3.1", "@jest/types": "^27.2.5", "@types/node": "*", - "jest-mock": "^27.2.5" + "jest-mock": "^27.3.0" }, "engines": { "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" } }, "node_modules/@jest/fake-timers": { - "version": "27.2.5", - "resolved": "https://registry.npmjs.org/@jest/fake-timers/-/fake-timers-27.2.5.tgz", - "integrity": "sha512-ZGUb6jg7BgwY+nmO0TW10bc7z7Hl2G/UTAvmxEyZ/GgNFoa31tY9/cgXmqcxnnZ7o5Xs7RAOz3G1SKIj8IVDlg==", + "version": "27.3.1", + "resolved": "https://registry.npmjs.org/@jest/fake-timers/-/fake-timers-27.3.1.tgz", + "integrity": "sha512-M3ZFgwwlqJtWZ+QkBG5NmC23A9w+A6ZxNsO5nJxJsKYt4yguBd3i8TpjQz5NfCX91nEve1KqD9RA2Q+Q1uWqoA==", "dev": true, "dependencies": { "@jest/types": "^27.2.5", "@sinonjs/fake-timers": "^8.0.1", "@types/node": "*", - "jest-message-util": "^27.2.5", - "jest-mock": "^27.2.5", - "jest-util": "^27.2.5" + "jest-message-util": "^27.3.1", + "jest-mock": "^27.3.0", + "jest-util": "^27.3.1" }, "engines": { "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" } }, "node_modules/@jest/globals": { - "version": "27.2.5", - "resolved": "https://registry.npmjs.org/@jest/globals/-/globals-27.2.5.tgz", - "integrity": "sha512-naRI537GM+enFVJQs6DcwGYPn/0vgJNb06zGVbzXfDfe/epDPV73hP1vqO37PqSKDeOXM2KInr6ymYbL1HTP7g==", + "version": "27.3.1", + "resolved": "https://registry.npmjs.org/@jest/globals/-/globals-27.3.1.tgz", + "integrity": "sha512-Q651FWiWQAIFiN+zS51xqhdZ8g9b88nGCobC87argAxA7nMfNQq0Q0i9zTfQYgLa6qFXk2cGANEqfK051CZ8Pg==", "dev": true, "dependencies": { - "@jest/environment": "^27.2.5", + "@jest/environment": "^27.3.1", "@jest/types": "^27.2.5", - "expect": "^27.2.5" + "expect": "^27.3.1" }, "engines": { "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" } }, "node_modules/@jest/reporters": { - "version": "27.2.5", - "resolved": "https://registry.npmjs.org/@jest/reporters/-/reporters-27.2.5.tgz", - "integrity": "sha512-zYuR9fap3Q3mxQ454VWF8I6jYHErh368NwcKHWO2uy2fwByqBzRHkf9j2ekMDM7PaSTWcLBSZyd7NNxR1iHxzQ==", + "version": "27.3.1", + "resolved": "https://registry.npmjs.org/@jest/reporters/-/reporters-27.3.1.tgz", + "integrity": "sha512-m2YxPmL9Qn1emFVgZGEiMwDntDxRRQ2D58tiDQlwYTg5GvbFOKseYCcHtn0WsI8CG4vzPglo3nqbOiT8ySBT/w==", "dev": true, "dependencies": { "@bcoe/v8-coverage": "^0.2.3", - "@jest/console": "^27.2.5", - "@jest/test-result": "^27.2.5", - "@jest/transform": "^27.2.5", + "@jest/console": "^27.3.1", + "@jest/test-result": "^27.3.1", + "@jest/transform": "^27.3.1", "@jest/types": "^27.2.5", "@types/node": "*", "chalk": "^4.0.0", @@ -2492,10 +2535,10 @@ "istanbul-lib-report": "^3.0.0", "istanbul-lib-source-maps": "^4.0.0", "istanbul-reports": "^3.0.2", - "jest-haste-map": "^27.2.5", - "jest-resolve": "^27.2.5", - "jest-util": "^27.2.5", - "jest-worker": "^27.2.5", + "jest-haste-map": "^27.3.1", + "jest-resolve": "^27.3.1", + "jest-util": "^27.3.1", + "jest-worker": "^27.3.1", "slash": "^3.0.0", "source-map": "^0.6.0", "string-length": "^4.0.1", @@ -2547,12 +2590,12 @@ } }, "node_modules/@jest/test-result": { - "version": "27.2.5", - "resolved": "https://registry.npmjs.org/@jest/test-result/-/test-result-27.2.5.tgz", - "integrity": "sha512-ub7j3BrddxZ0BdSnM5JCF6cRZJ/7j3wgdX0+Dtwhw2Po+HKsELCiXUTvh+mgS4/89mpnU1CPhZxe2mTvuLPJJg==", + "version": "27.3.1", + "resolved": "https://registry.npmjs.org/@jest/test-result/-/test-result-27.3.1.tgz", + "integrity": "sha512-mLn6Thm+w2yl0opM8J/QnPTqrfS4FoXsXF2WIWJb2O/GBSyResL71BRuMYbYRsGt7ELwS5JGcEcGb52BNrumgg==", "dev": true, "dependencies": { - "@jest/console": "^27.2.5", + "@jest/console": "^27.3.1", "@jest/types": "^27.2.5", "@types/istanbul-lib-coverage": "^2.0.0", "collect-v8-coverage": "^1.0.0" @@ -2562,24 +2605,24 @@ } }, "node_modules/@jest/test-sequencer": { - "version": "27.2.5", - "resolved": "https://registry.npmjs.org/@jest/test-sequencer/-/test-sequencer-27.2.5.tgz", - "integrity": "sha512-8j8fHZRfnjbbdMitMAGFKaBZ6YqvFRFJlMJzcy3v75edTOqc7RY65S9JpMY6wT260zAcL2sTQRga/P4PglCu3Q==", + "version": "27.3.1", + "resolved": "https://registry.npmjs.org/@jest/test-sequencer/-/test-sequencer-27.3.1.tgz", + "integrity": "sha512-siySLo07IMEdSjA4fqEnxfIX8lB/lWYsBPwNFtkOvsFQvmBrL3yj3k3uFNZv/JDyApTakRpxbKLJ3CT8UGVCrA==", "dev": true, "dependencies": { - "@jest/test-result": "^27.2.5", + "@jest/test-result": "^27.3.1", "graceful-fs": "^4.2.4", - "jest-haste-map": "^27.2.5", - "jest-runtime": "^27.2.5" + "jest-haste-map": "^27.3.1", + "jest-runtime": "^27.3.1" }, "engines": { "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" } }, "node_modules/@jest/transform": { - "version": "27.2.5", - "resolved": "https://registry.npmjs.org/@jest/transform/-/transform-27.2.5.tgz", - "integrity": "sha512-29lRtAHHYGALbZOx343v0zKmdOg4Sb0rsA1uSv0818bvwRhs3TyElOmTVXlrw0v1ZTqXJCAH/cmoDXimBhQOJQ==", + "version": "27.3.1", + "resolved": "https://registry.npmjs.org/@jest/transform/-/transform-27.3.1.tgz", + "integrity": "sha512-3fSvQ02kuvjOI1C1ssqMVBKJpZf6nwoCiSu00zAKh5nrp3SptNtZy/8s5deayHnqxhjD9CWDJ+yqQwuQ0ZafXQ==", "dev": true, "dependencies": { "@babel/core": "^7.1.0", @@ -2589,9 +2632,9 @@ "convert-source-map": "^1.4.0", "fast-json-stable-stringify": "^2.0.0", "graceful-fs": "^4.2.4", - "jest-haste-map": "^27.2.5", + "jest-haste-map": "^27.3.1", "jest-regex-util": "^27.0.6", - "jest-util": "^27.2.5", + "jest-util": "^27.3.1", "micromatch": "^4.0.4", "pirates": "^4.0.1", "slash": "^3.0.0", @@ -2913,6 +2956,12 @@ "integrity": "sha512-Pc/AFTdwZwEKJxFJvlxrSmGe/di+aAOBn60sremrpLo6VI/6cmiUYNNwlI5KNYttg7uypzA3ILPMPgxB2GYZEg==", "dev": true }, + "node_modules/@rushstack/eslint-patch": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/@rushstack/eslint-patch/-/eslint-patch-1.0.8.tgz", + "integrity": "sha512-ZK5v4bJwgXldAUA8r3q9YKfCwOqoHTK/ZqRjSeRXQrBXWouoPnS4MQtgC4AXGiiBuUu5wxrRgTlv0ktmM4P1Aw==", + "dev": true + }, "node_modules/@seald-io/binary-search-tree": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/@seald-io/binary-search-tree/-/binary-search-tree-1.0.2.tgz", @@ -3081,9 +3130,9 @@ } }, "node_modules/@types/d3": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/@types/d3/-/d3-7.0.0.tgz", - "integrity": "sha512-7rMMuS5unvbvFCJXAkQXIxWTo2OUlmVXN5q7sfQFesuVICY55PSP6hhbUhWjTTNpfTTB3iLALsIYDFe7KUNABw==", + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/@types/d3/-/d3-7.1.0.tgz", + "integrity": "sha512-gYWvgeGjEl+zmF8c+U1RNIKqe7sfQwIXeLXO5Os72TjDjCEtgpvGBvZ8dXlAuSS1m6B90Y1Uo6Bm36OGR/OtCA==", "dev": true, "dependencies": { "@types/d3-array": "*", @@ -3437,9 +3486,9 @@ "dev": true }, "node_modules/@types/html-minifier-terser": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/@types/html-minifier-terser/-/html-minifier-terser-5.1.2.tgz", - "integrity": "sha512-h4lTMgMJctJybDp8CQrxTUiiYmedihHWkjnF/8Pxseu2S6Nlfcy8kwboQ8yejh456rP2yWoEVm1sS/FVsfM48w==", + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/@types/html-minifier-terser/-/html-minifier-terser-6.0.0.tgz", + "integrity": "sha512-NZwaaynfs1oIoLAV1vg18e7QMVDvw+6SQrdJc8w3BwUaoroVSf6EBj/Sk4PBWGxsq0dzhA2drbsuMC1/6C6KgQ==", "dev": true }, "node_modules/@types/http-errors": { @@ -3519,9 +3568,9 @@ } }, "node_modules/@types/lodash": { - "version": "4.14.175", - "resolved": "https://registry.npmjs.org/@types/lodash/-/lodash-4.14.175.tgz", - "integrity": "sha512-XmdEOrKQ8a1Y/yxQFOMbC47G/V2VDO1GvMRnl4O75M4GW/abC5tnfzadQYkqEveqRM1dEJGFFegfPNA2vvx2iw==", + "version": "4.14.176", + "resolved": "https://registry.npmjs.org/@types/lodash/-/lodash-4.14.176.tgz", + "integrity": "sha512-xZmuPTa3rlZoIbtDUyJKZQimJV3bxCmzMIO2c9Pz9afyDro6kr7R79GwcB6mRhuoPmV2p1Vb66WOJH7F886WKQ==", "dev": true }, "node_modules/@types/magnet-uri": { @@ -3555,9 +3604,9 @@ "dev": true }, "node_modules/@types/node": { - "version": "12.20.28", - "resolved": "https://registry.npmjs.org/@types/node/-/node-12.20.28.tgz", - "integrity": "sha512-cBw8gzxUPYX+/5lugXIPksioBSbE42k0fZ39p+4yRzfYjN6++eq9kAPdlY9qm+MXyfbk9EmvCYAYRn380sF46w==", + "version": "12.20.34", + "resolved": "https://registry.npmjs.org/@types/node/-/node-12.20.34.tgz", + "integrity": "sha512-+G6kIkmDOyWs7Co8M48lgyauuOlgZeRib64/DFBwYlY6ngwT7wgcF7ga1DsmZImUDfm2rE1jMnUhIEC/gdJ5rw==", "dev": true }, "node_modules/@types/overlayscrollbars": { @@ -3647,9 +3696,9 @@ "dev": true }, "node_modules/@types/react": { - "version": "17.0.27", - "resolved": "https://registry.npmjs.org/@types/react/-/react-17.0.27.tgz", - "integrity": "sha512-zgiJwtsggVGtr53MndV7jfiUESTqrbxOcBvwfe6KS/9bzaVPCTDieTWnFNecVNx6EAaapg5xsLLWFfHHR437AA==", + "version": "17.0.31", + "resolved": "https://registry.npmjs.org/@types/react/-/react-17.0.31.tgz", + "integrity": "sha512-MQSR5EL4JZtdWRvqDgz9kXhSDDoy2zMTYyg7UhP+FZ5ttUOocWyxiqFJiI57sUG0BtaEX7WDXYQlkCYkb3X9vQ==", "dev": true, "dependencies": { "@types/prop-types": "*", @@ -3658,18 +3707,18 @@ } }, "node_modules/@types/react-dom": { - "version": "17.0.9", - "resolved": "https://registry.npmjs.org/@types/react-dom/-/react-dom-17.0.9.tgz", - "integrity": "sha512-wIvGxLfgpVDSAMH5utdL9Ngm5Owu0VsGmldro3ORLXV8CShrL8awVj06NuEXFQ5xyaYfdca7Sgbk/50Ri1GdPg==", + "version": "17.0.10", + "resolved": "https://registry.npmjs.org/@types/react-dom/-/react-dom-17.0.10.tgz", + "integrity": "sha512-8oz3NAUId2z/zQdFI09IMhQPNgIbiP8Lslhv39DIDamr846/0spjZK0vnrMak0iB8EKb9QFTTIdg2Wj2zH5a3g==", "dev": true, "dependencies": { "@types/react": "*" } }, "node_modules/@types/react-measure": { - "version": "2.0.7", - "resolved": "https://registry.npmjs.org/@types/react-measure/-/react-measure-2.0.7.tgz", - "integrity": "sha512-BXIsnoC1lT58lwtUIAwVm8cEQZzmvL99VYshpLnIobOBgIIFfBqYZf/X3hdXnkwFKwc3SauYIQpZwPVF13EFCw==", + "version": "2.0.8", + "resolved": "https://registry.npmjs.org/@types/react-measure/-/react-measure-2.0.8.tgz", + "integrity": "sha512-Pu4/hQ/1AKVN6efoawtcM+l376WYOI8e1fiM6ir4pdLkHilDCkJLjUGvAm0mWKJ0GE6hzu55yCrcJ/xNyEdFwA==", "dev": true, "dependencies": { "@types/react": "*" @@ -3697,9 +3746,9 @@ } }, "node_modules/@types/react-transition-group": { - "version": "4.4.3", - "resolved": "https://registry.npmjs.org/@types/react-transition-group/-/react-transition-group-4.4.3.tgz", - "integrity": "sha512-fUx5muOWSYP8Bw2BUQ9M9RK9+W1XBK/7FLJ8PTQpnpTEkn0ccyMffyEQvan4C3h53gHdx7KE5Qrxi/LnUGQtdg==", + "version": "4.4.4", + "resolved": "https://registry.npmjs.org/@types/react-transition-group/-/react-transition-group-4.4.4.tgz", + "integrity": "sha512-7gAPz7anVK5xzbeQW9wFBDg7G++aPLAFY0QaSMOou9rJZpbuI58WAuJrgu+qR92l61grlnCUe7AFX8KGahAgug==", "dev": true, "dependencies": { "@types/react": "*" @@ -3793,9 +3842,9 @@ } }, "node_modules/@types/tar-stream": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/@types/tar-stream/-/tar-stream-2.2.1.tgz", - "integrity": "sha512-zhcfACZ4HavArMutfAB1/ApfSx44kNF2zyytU4mbO1dGCT/y9kL2IZwRDRyYYtBUxW6LRparZpLoX8i67b6IZw==", + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/@types/tar-stream/-/tar-stream-2.2.2.tgz", + "integrity": "sha512-1AX+Yt3icFuU6kxwmPakaiGrJUwG44MpuiqPg4dSolRFk6jmvs4b3IbUol9wKDLIgU76gevn3EwE8y/DkSJCZQ==", "dev": true, "dependencies": { "@types/node": "*" @@ -3896,6 +3945,24 @@ "eslint": "*" } }, + "node_modules/@typescript-eslint/experimental-utils/node_modules/eslint-utils": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-3.0.0.tgz", + "integrity": "sha512-uuQC43IGctw68pJA1RgbQS8/NP7rch6Cwd4j3ZBtgo4/8Flj4eGE7ZYSZRN3iq5pVUv6GPdW5Z1RFleo84uLDA==", + "dev": true, + "dependencies": { + "eslint-visitor-keys": "^2.0.0" + }, + "engines": { + "node": "^10.0.0 || ^12.0.0 || >= 14.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/mysticatea" + }, + "peerDependencies": { + "eslint": ">=5" + } + }, "node_modules/@typescript-eslint/parser": { "version": "4.33.0", "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-4.33.0.tgz", @@ -4429,16 +4496,16 @@ "dev": true }, "node_modules/array-includes": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/array-includes/-/array-includes-3.1.3.tgz", - "integrity": "sha512-gcem1KlBU7c9rB+Rq8/3PPKsK2kjqeEBa3bD5kkQo4nYlOHQCJqIJFqBXDEfwaRuYTT4E+FxA9xez7Gf/e3Q7A==", + "version": "3.1.4", + "resolved": "https://registry.npmjs.org/array-includes/-/array-includes-3.1.4.tgz", + "integrity": "sha512-ZTNSQkmWumEbiHO2GF4GmWxYVTiQyJy2XOTa15sdQSrvKn7l+180egQMqlrMOUMCyLMD7pmyQe4mMDUT6Behrw==", "dev": true, "dependencies": { "call-bind": "^1.0.2", "define-properties": "^1.1.3", - "es-abstract": "^1.18.0-next.2", + "es-abstract": "^1.19.1", "get-intrinsic": "^1.1.1", - "is-string": "^1.0.5" + "is-string": "^1.0.7" }, "engines": { "node": ">= 0.4" @@ -4457,14 +4524,14 @@ } }, "node_modules/array.prototype.flat": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/array.prototype.flat/-/array.prototype.flat-1.2.4.tgz", - "integrity": "sha512-4470Xi3GAPAjZqFcljX2xzckv1qeKPizoNkiS0+O4IoPR2ZNpcjE0pkhdihlDouK+x6QOast26B4Q/O9DJnwSg==", + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/array.prototype.flat/-/array.prototype.flat-1.2.5.tgz", + "integrity": "sha512-KaYU+S+ndVqyUnignHftkwc58o3uVU1jzczILJ1tN2YaIZpFIKBiP/x/j97E5MVPsaCloPbqWLB/8qCTVvT2qg==", "dev": true, "dependencies": { - "call-bind": "^1.0.0", + "call-bind": "^1.0.2", "define-properties": "^1.1.3", - "es-abstract": "^1.18.0-next.1" + "es-abstract": "^1.19.0" }, "engines": { "node": ">= 0.4" @@ -4582,12 +4649,12 @@ } }, "node_modules/axios": { - "version": "0.21.4", - "resolved": "https://registry.npmjs.org/axios/-/axios-0.21.4.tgz", - "integrity": "sha512-ut5vewkiu8jjGBdqpM44XxjuCjq9LAKeHVmoVfHVzy8eHgxxq8SbAVQNovDA8mVi05kP0Ea/n/UzcSHcTJQfNg==", + "version": "0.23.0", + "resolved": "https://registry.npmjs.org/axios/-/axios-0.23.0.tgz", + "integrity": "sha512-NmvAE4i0YAv5cKq8zlDoPd1VLKAqX5oLuZKs8xkJa4qi6RGn0uhCYFjWtHHC9EM/MwOwYWOs53W+V0aqEXq1sg==", "dev": true, "dependencies": { - "follow-redirects": "^1.14.0" + "follow-redirects": "^1.14.4" } }, "node_modules/axobject-query": { @@ -4596,45 +4663,13 @@ "integrity": "sha512-Td525n+iPOOyUQIeBfcASuG6uJsDOITl7Mds5gFyerkWiX7qhUTdYUBlSgNMyVqtSJqwpt1kXGLdUt6SykLMRA==", "dev": true }, - "node_modules/babel-eslint": { - "version": "10.1.0", - "resolved": "https://registry.npmjs.org/babel-eslint/-/babel-eslint-10.1.0.tgz", - "integrity": "sha512-ifWaTHQ0ce+448CYop8AdrQiBsGrnC+bMgfyKFdi6EsPLTAWG+QfyDeM6OH+FmWnKvEq5NnBMLvlBUPKQZoDSg==", - "deprecated": "babel-eslint is now @babel/eslint-parser. This package will no longer receive updates.", - "dev": true, - "peer": true, - "dependencies": { - "@babel/code-frame": "^7.0.0", - "@babel/parser": "^7.7.0", - "@babel/traverse": "^7.7.0", - "@babel/types": "^7.7.0", - "eslint-visitor-keys": "^1.0.0", - "resolve": "^1.12.0" - }, - "engines": { - "node": ">=6" - }, - "peerDependencies": { - "eslint": ">= 4.12.1" - } - }, - "node_modules/babel-eslint/node_modules/eslint-visitor-keys": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz", - "integrity": "sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==", - "dev": true, - "peer": true, - "engines": { - "node": ">=4" - } - }, "node_modules/babel-jest": { - "version": "27.2.5", - "resolved": "https://registry.npmjs.org/babel-jest/-/babel-jest-27.2.5.tgz", - "integrity": "sha512-GC9pWCcitBhSuF7H3zl0mftoKizlswaF0E3qi+rPL417wKkCB0d+Sjjb0OfXvxj7gWiBf497ldgRMii68Xz+2g==", + "version": "27.3.1", + "resolved": "https://registry.npmjs.org/babel-jest/-/babel-jest-27.3.1.tgz", + "integrity": "sha512-SjIF8hh/ir0peae2D6S6ZKRhUy7q/DnpH7k/V6fT4Bgs/LXXUztOpX4G2tCgq8mLo5HA9mN6NmlFMeYtKmIsTQ==", "dev": true, "dependencies": { - "@jest/transform": "^27.2.5", + "@jest/transform": "^27.3.1", "@jest/types": "^27.2.5", "@types/babel__core": "^7.1.14", "babel-plugin-istanbul": "^6.0.0", @@ -4651,9 +4686,9 @@ } }, "node_modules/babel-loader": { - "version": "8.2.2", - "resolved": "https://registry.npmjs.org/babel-loader/-/babel-loader-8.2.2.tgz", - "integrity": "sha512-JvTd0/D889PQBtUXJ2PXaKU/pjZDMtHA9V2ecm+eNRmmBCMR09a+fmpGTNwnJtFmFl5Ei7Vy47LjBb+L0wQ99g==", + "version": "8.2.3", + "resolved": "https://registry.npmjs.org/babel-loader/-/babel-loader-8.2.3.tgz", + "integrity": "sha512-n4Zeta8NC3QAsuyiizu0GkmRcQ6clkV9WFUnUf1iXP//IeSKbWjofW3UHyZVwlOB4y039YQKefawyTn64Zwbuw==", "dev": true, "dependencies": { "find-cache-dir": "^3.3.1", @@ -4819,6 +4854,12 @@ "@babel/core": "^7.0.0-0" } }, + "node_modules/babel-plugin-transform-react-remove-prop-types": { + "version": "0.4.24", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-react-remove-prop-types/-/babel-plugin-transform-react-remove-prop-types-0.4.24.tgz", + "integrity": "sha512-eqj0hVcJUR57/Ug2zE1Yswsw4LhuqqHhD+8v120T1cl3kjg76QwtyBrdIk4WVwK+lAhBJVYCd/v+4nc4y+8JsA==", + "dev": true + }, "node_modules/babel-preset-current-node-syntax": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/babel-preset-current-node-syntax/-/babel-preset-current-node-syntax-1.0.1.tgz", @@ -4858,6 +4899,45 @@ "@babel/core": "^7.0.0" } }, + "node_modules/babel-preset-react-app": { + "version": "11.0.0-next.91", + "resolved": "https://registry.npmjs.org/babel-preset-react-app/-/babel-preset-react-app-11.0.0-next.91.tgz", + "integrity": "sha512-hr7SHwLCNjCzKmINQybKF84lwI4KrlC8fstNVO7lmsa1fZyXKqSqdY0lXMKcFOhfx7zw8kH1kLzQ1tx9H3GvHg==", + "dev": true, + "dependencies": { + "@babel/core": "^7.14.6", + "@babel/plugin-proposal-class-properties": "^7.14.5", + "@babel/plugin-proposal-decorators": "^7.14.5", + "@babel/plugin-proposal-nullish-coalescing-operator": "^7.14.5", + "@babel/plugin-proposal-numeric-separator": "^7.14.5", + "@babel/plugin-proposal-optional-chaining": "^7.14.5", + "@babel/plugin-proposal-private-methods": "^7.14.5", + "@babel/plugin-transform-flow-strip-types": "^7.14.5", + "@babel/plugin-transform-react-display-name": "^7.14.5", + "@babel/plugin-transform-runtime": "^7.14.5", + "@babel/preset-env": "^7.14.5", + "@babel/preset-react": "^7.14.5", + "@babel/preset-typescript": "^7.14.5", + "@babel/runtime": "^7.14.5", + "babel-plugin-macros": "^3.1.0", + "babel-plugin-transform-react-remove-prop-types": "^0.4.24" + } + }, + "node_modules/babel-preset-react-app/node_modules/babel-plugin-macros": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/babel-plugin-macros/-/babel-plugin-macros-3.1.0.tgz", + "integrity": "sha512-Cg7TFGpIr01vOQNODXOOaGz2NpCU5gl8x1qJFbb6hbZxR7XrcE2vtbAsTAbJ7/xwJtUuJEw8K8Zr/AE0LHlesg==", + "dev": true, + "dependencies": { + "@babel/runtime": "^7.12.5", + "cosmiconfig": "^7.0.0", + "resolve": "^1.19.0" + }, + "engines": { + "node": ">=10", + "npm": ">=6" + } + }, "node_modules/balanced-match": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", @@ -5372,15 +5452,15 @@ "dev": true }, "node_modules/clean-css": { - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/clean-css/-/clean-css-4.2.3.tgz", - "integrity": "sha512-VcMWDN54ZN/DS+g58HYL5/n4Zrqe8vHJpGA8KdgUXFU4fuP/aHNw8eld9SyEIyabIMJX/0RaY/fplOo5hYLSFA==", + "version": "5.2.2", + "resolved": "https://registry.npmjs.org/clean-css/-/clean-css-5.2.2.tgz", + "integrity": "sha512-/eR8ru5zyxKzpBLv9YZvMXgTSSQn7AdkMItMYynsFgGwTveCRVam9IUPFloE85B4vAIj05IuKmmEoV7/AQjT0w==", "dev": true, "dependencies": { "source-map": "~0.6.0" }, "engines": { - "node": ">= 4.0" + "node": ">= 10.0" } }, "node_modules/clean-css/node_modules/source-map": { @@ -5866,9 +5946,9 @@ } }, "node_modules/css-loader": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/css-loader/-/css-loader-6.3.0.tgz", - "integrity": "sha512-9NGvHOR+L6ps13Ilw/b216++Q8q+5RpJcVufCdW9S/9iCzs4KBDNa8qnA/n3FK/sSfWmH35PAIK/cfPi7LOSUg==", + "version": "6.4.0", + "resolved": "https://registry.npmjs.org/css-loader/-/css-loader-6.4.0.tgz", + "integrity": "sha512-Dlt6qfsxI/w1vU0r8qDd4BtMPxWqJeY5qQU7SmmZfvbpe6Xl18McO4GhyaMLns24Y2VNPiZwJPQ8JSbg4qvQLw==", "dev": true, "dependencies": { "icss-utils": "^5.1.0", @@ -6818,9 +6898,9 @@ } }, "node_modules/es-abstract": { - "version": "1.18.6", - "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.18.6.tgz", - "integrity": "sha512-kAeIT4cku5eNLNuUKhlmtuk1/TRZvQoYccn6TO0cSVdf1kzB0T7+dYuVK9MWM7l+/53W2Q8M7N2c6MQvhXFcUQ==", + "version": "1.19.1", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.19.1.tgz", + "integrity": "sha512-2vJ6tjA/UfqLm2MPs7jxVybLoB8i1t1Jd9R3kISld20sIxPcTbLuggQOUxeWeAvIUkduv/CfMjuh4WmiXr2v9w==", "dev": true, "dependencies": { "call-bind": "^1.0.2", @@ -6834,7 +6914,9 @@ "is-callable": "^1.2.4", "is-negative-zero": "^2.0.1", "is-regex": "^1.1.4", + "is-shared-array-buffer": "^1.0.1", "is-string": "^1.0.7", + "is-weakref": "^1.0.1", "object-inspect": "^1.11.0", "object-keys": "^1.1.1", "object.assign": "^4.1.2", @@ -7104,21 +7186,18 @@ } }, "node_modules/eslint-config-react-app": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/eslint-config-react-app/-/eslint-config-react-app-6.0.0.tgz", - "integrity": "sha512-bpoAAC+YRfzq0dsTk+6v9aHm/uqnDwayNAXleMypGl6CpxI9oXXscVHo4fk3eJPIn+rsbtNetB4r/ZIidFIE8A==", + "version": "7.0.0-next.91", + "resolved": "https://registry.npmjs.org/eslint-config-react-app/-/eslint-config-react-app-7.0.0-next.91.tgz", + "integrity": "sha512-EzQYdNCC7i7JMhdpB3iza59cUOZmY6nxQ5TlU0HS1fXqfc02JnRLF6szk8XMQ08NpqEAs6kK4d3yeK9s0ofVoQ==", "dev": true, "dependencies": { - "confusing-browser-globals": "^1.0.10" - }, - "engines": { - "node": "^10.12.0 || >=12.0.0" - }, - "peerDependencies": { + "@babel/core": "^7.14.2", + "@babel/eslint-parser": "^7.14.7", + "@rushstack/eslint-patch": "^1.0.6", "@typescript-eslint/eslint-plugin": "^4.0.0", "@typescript-eslint/parser": "^4.0.0", - "babel-eslint": "^10.0.0", - "eslint": "^7.5.0", + "babel-preset-react-app": "11.0.0-next.91+1465357b", + "confusing-browser-globals": "2.0.0-next.91+1465357b", "eslint-plugin-flowtype": "^5.2.0", "eslint-plugin-import": "^2.22.0", "eslint-plugin-jest": "^24.0.0", @@ -7127,13 +7206,33 @@ "eslint-plugin-react-hooks": "^4.0.8", "eslint-plugin-testing-library": "^3.9.0" }, - "peerDependenciesMeta": { - "eslint-plugin-jest": { - "optional": true - }, - "eslint-plugin-testing-library": { - "optional": true - } + "engines": { + "node": ">=14.0.0" + }, + "peerDependencies": { + "eslint": "^7.30.0" + } + }, + "node_modules/eslint-config-react-app/node_modules/confusing-browser-globals": { + "version": "2.0.0-next.91", + "resolved": "https://registry.npmjs.org/confusing-browser-globals/-/confusing-browser-globals-2.0.0-next.91.tgz", + "integrity": "sha512-zeZBvlMaKyIzUNRWa/aMetboOK8fZv97qQOxfoH2UqUtaEwbWTAp9fgI+RrRQXq/GMnE6X+tkmgOUMyJJ8RMAw==", + "dev": true + }, + "node_modules/eslint-config-react-app/node_modules/eslint-plugin-flowtype": { + "version": "5.10.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-flowtype/-/eslint-plugin-flowtype-5.10.0.tgz", + "integrity": "sha512-vcz32f+7TP+kvTUyMXZmCnNujBQZDNmcqPImw8b9PZ+16w1Qdm6ryRuYZYVaG9xRqqmAPr2Cs9FAX5gN+x/bjw==", + "dev": true, + "dependencies": { + "lodash": "^4.17.15", + "string-natural-compare": "^3.0.1" + }, + "engines": { + "node": "^10.12.0 || >=12.0.0" + }, + "peerDependencies": { + "eslint": "^7.1.0" } }, "node_modules/eslint-import-resolver-node": { @@ -7156,9 +7255,9 @@ } }, "node_modules/eslint-import-resolver-webpack": { - "version": "0.13.1", - "resolved": "https://registry.npmjs.org/eslint-import-resolver-webpack/-/eslint-import-resolver-webpack-0.13.1.tgz", - "integrity": "sha512-O/8mG6AHmaKYSMb4lWxiXPpaARxOJ4rMQEHJ8vTgjS1MXooJA3KPgBPPAdOPoV17v5ML5120qod5FBLM+DtgEw==", + "version": "0.13.2", + "resolved": "https://registry.npmjs.org/eslint-import-resolver-webpack/-/eslint-import-resolver-webpack-0.13.2.tgz", + "integrity": "sha512-XodIPyg1OgE2h5BDErz3WJoK7lawxKTJNhgPNafRST6csC/MZC+L5P6kKqsZGRInpbgc02s/WZMrb4uGJzcuRg==", "dev": true, "dependencies": { "array-find": "^1.0.0", @@ -7167,14 +7266,14 @@ "find-root": "^1.1.0", "has": "^1.0.3", "interpret": "^1.4.0", - "is-core-module": "^2.4.0", - "is-regex": "^1.1.3", + "is-core-module": "^2.7.0", + "is-regex": "^1.1.4", "lodash": "^4.17.21", "resolve": "^1.20.0", "semver": "^5.7.1" }, "engines": { - "node": "^16 || ^15 || ^14 || ^13 || ^12 || ^11 || ^10 || ^9 || ^8 || ^7 || ^6" + "node": ">= 6" }, "peerDependencies": { "eslint-plugin-import": ">=1.4.0", @@ -7200,12 +7299,13 @@ } }, "node_modules/eslint-module-utils": { - "version": "2.6.2", - "resolved": "https://registry.npmjs.org/eslint-module-utils/-/eslint-module-utils-2.6.2.tgz", - "integrity": "sha512-QG8pcgThYOuqxupd06oYTZoNOGaUdTY1PqK+oS6ElF6vs4pBdk/aYxFVQQXzcrAqp9m7cl7lb2ubazX+g16k2Q==", + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/eslint-module-utils/-/eslint-module-utils-2.7.1.tgz", + "integrity": "sha512-fjoetBXQZq2tSTWZ9yWVl2KuFrTZZH3V+9iD1V1RfpDgxzJR+mPd/KZmMiA8gbPqdBzpNiEHOuT7IYEWxrH0zQ==", "dev": true, "dependencies": { "debug": "^3.2.7", + "find-up": "^2.1.0", "pkg-dir": "^2.0.0" }, "engines": { @@ -7221,42 +7321,90 @@ "ms": "^2.1.1" } }, - "node_modules/eslint-plugin-flowtype": { - "version": "5.10.0", - "resolved": "https://registry.npmjs.org/eslint-plugin-flowtype/-/eslint-plugin-flowtype-5.10.0.tgz", - "integrity": "sha512-vcz32f+7TP+kvTUyMXZmCnNujBQZDNmcqPImw8b9PZ+16w1Qdm6ryRuYZYVaG9xRqqmAPr2Cs9FAX5gN+x/bjw==", + "node_modules/eslint-module-utils/node_modules/find-up": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz", + "integrity": "sha1-RdG35QbHF93UgndaK3eSCjwMV6c=", "dev": true, - "peer": true, "dependencies": { - "lodash": "^4.17.15", - "string-natural-compare": "^3.0.1" + "locate-path": "^2.0.0" }, "engines": { - "node": "^10.12.0 || >=12.0.0" + "node": ">=4" + } + }, + "node_modules/eslint-module-utils/node_modules/locate-path": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz", + "integrity": "sha1-K1aLJl7slExtnA3pw9u7ygNUzY4=", + "dev": true, + "dependencies": { + "p-locate": "^2.0.0", + "path-exists": "^3.0.0" }, - "peerDependencies": { - "eslint": "^7.1.0" + "engines": { + "node": ">=4" + } + }, + "node_modules/eslint-module-utils/node_modules/p-limit": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.3.0.tgz", + "integrity": "sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q==", + "dev": true, + "dependencies": { + "p-try": "^1.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/eslint-module-utils/node_modules/p-locate": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz", + "integrity": "sha1-IKAQOyIqcMj9OcwuWAaA893l7EM=", + "dev": true, + "dependencies": { + "p-limit": "^1.1.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/eslint-module-utils/node_modules/p-try": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-1.0.0.tgz", + "integrity": "sha1-y8ec26+P1CKOE/Yh8rGiN8GyB7M=", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/eslint-module-utils/node_modules/path-exists": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", + "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=", + "dev": true, + "engines": { + "node": ">=4" } }, "node_modules/eslint-plugin-import": { - "version": "2.24.2", - "resolved": "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.24.2.tgz", - "integrity": "sha512-hNVtyhiEtZmpsabL4neEj+6M5DCLgpYyG9nzJY8lZQeQXEn5UPW1DpUdsMHMXsq98dbNm7nt1w9ZMSVpfJdi8Q==", + "version": "2.25.2", + "resolved": "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.25.2.tgz", + "integrity": "sha512-qCwQr9TYfoBHOFcVGKY9C9unq05uOxxdklmBXLVvcwo68y5Hta6/GzCZEMx2zQiu0woKNEER0LE7ZgaOfBU14g==", "dev": true, "dependencies": { - "array-includes": "^3.1.3", - "array.prototype.flat": "^1.2.4", + "array-includes": "^3.1.4", + "array.prototype.flat": "^1.2.5", "debug": "^2.6.9", "doctrine": "^2.1.0", "eslint-import-resolver-node": "^0.3.6", - "eslint-module-utils": "^2.6.2", - "find-up": "^2.0.0", + "eslint-module-utils": "^2.7.0", "has": "^1.0.3", - "is-core-module": "^2.6.0", + "is-core-module": "^2.7.0", + "is-glob": "^4.0.3", "minimatch": "^3.0.4", - "object.values": "^1.1.4", - "pkg-up": "^2.0.0", - "read-pkg-up": "^3.0.0", + "object.values": "^1.1.5", "resolve": "^1.20.0", "tsconfig-paths": "^3.11.0" }, @@ -7264,7 +7412,7 @@ "node": ">=4" }, "peerDependencies": { - "eslint": "^2 || ^3 || ^4 || ^5 || ^6 || ^7.2.0" + "eslint": "^2 || ^3 || ^4 || ^5 || ^6 || ^7.2.0 || ^8" } }, "node_modules/eslint-plugin-import/node_modules/debug": { @@ -7288,95 +7436,16 @@ "node": ">=0.10.0" } }, - "node_modules/eslint-plugin-import/node_modules/find-up": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz", - "integrity": "sha1-RdG35QbHF93UgndaK3eSCjwMV6c=", - "dev": true, - "dependencies": { - "locate-path": "^2.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/eslint-plugin-import/node_modules/locate-path": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz", - "integrity": "sha1-K1aLJl7slExtnA3pw9u7ygNUzY4=", - "dev": true, - "dependencies": { - "p-locate": "^2.0.0", - "path-exists": "^3.0.0" - }, - "engines": { - "node": ">=4" - } - }, "node_modules/eslint-plugin-import/node_modules/ms": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", "dev": true }, - "node_modules/eslint-plugin-import/node_modules/p-limit": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.3.0.tgz", - "integrity": "sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q==", - "dev": true, - "dependencies": { - "p-try": "^1.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/eslint-plugin-import/node_modules/p-locate": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz", - "integrity": "sha1-IKAQOyIqcMj9OcwuWAaA893l7EM=", - "dev": true, - "dependencies": { - "p-limit": "^1.1.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/eslint-plugin-import/node_modules/p-try": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/p-try/-/p-try-1.0.0.tgz", - "integrity": "sha1-y8ec26+P1CKOE/Yh8rGiN8GyB7M=", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/eslint-plugin-import/node_modules/path-exists": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", - "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/eslint-plugin-import/node_modules/pkg-up": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/pkg-up/-/pkg-up-2.0.0.tgz", - "integrity": "sha1-yBmscoBZpGHKscOImivjxJoATX8=", - "dev": true, - "dependencies": { - "find-up": "^2.1.0" - }, - "engines": { - "node": ">=4" - } - }, "node_modules/eslint-plugin-jest": { - "version": "24.5.2", - "resolved": "https://registry.npmjs.org/eslint-plugin-jest/-/eslint-plugin-jest-24.5.2.tgz", - "integrity": "sha512-lrI3sGAyZi513RRmP08sIW241Ti/zMnn/6wbE4ZBhb3M2pJ9ztaZMnSKSKKBUfotVdwqU8W1KtD8ao2/FR8DIg==", + "version": "24.7.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-jest/-/eslint-plugin-jest-24.7.0.tgz", + "integrity": "sha512-wUxdF2bAZiYSKBclsUMrYHH6WxiBreNjyDxbRv345TIvPeoCEgPNEn3Sa+ZrSqsf1Dl9SqqSREXMHExlMMu1DA==", "dev": true, "dependencies": { "@typescript-eslint/experimental-utils": "^4.0.1" @@ -7484,6 +7553,141 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/eslint-plugin-testing-library": { + "version": "3.10.2", + "resolved": "https://registry.npmjs.org/eslint-plugin-testing-library/-/eslint-plugin-testing-library-3.10.2.tgz", + "integrity": "sha512-WAmOCt7EbF1XM8XfbCKAEzAPnShkNSwcIsAD2jHdsMUT9mZJPjLCG7pMzbcC8kK366NOuGip8HKLDC+Xk4yIdA==", + "dev": true, + "dependencies": { + "@typescript-eslint/experimental-utils": "^3.10.1" + }, + "engines": { + "node": "^10.12.0 || >=12.0.0", + "npm": ">=6" + }, + "peerDependencies": { + "eslint": "^5 || ^6 || ^7" + } + }, + "node_modules/eslint-plugin-testing-library/node_modules/@typescript-eslint/experimental-utils": { + "version": "3.10.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/experimental-utils/-/experimental-utils-3.10.1.tgz", + "integrity": "sha512-DewqIgscDzmAfd5nOGe4zm6Bl7PKtMG2Ad0KG8CUZAHlXfAKTF9Ol5PXhiMh39yRL2ChRH1cuuUGOcVyyrhQIw==", + "dev": true, + "dependencies": { + "@types/json-schema": "^7.0.3", + "@typescript-eslint/types": "3.10.1", + "@typescript-eslint/typescript-estree": "3.10.1", + "eslint-scope": "^5.0.0", + "eslint-utils": "^2.0.0" + }, + "engines": { + "node": "^10.12.0 || >=12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "*" + } + }, + "node_modules/eslint-plugin-testing-library/node_modules/@typescript-eslint/types": { + "version": "3.10.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-3.10.1.tgz", + "integrity": "sha512-+3+FCUJIahE9q0lDi1WleYzjCwJs5hIsbugIgnbB+dSCYUxl8L6PwmsyOPFZde2hc1DlTo/xnkOgiTLSyAbHiQ==", + "dev": true, + "engines": { + "node": "^8.10.0 || ^10.13.0 || >=11.10.1" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/eslint-plugin-testing-library/node_modules/@typescript-eslint/typescript-estree": { + "version": "3.10.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-3.10.1.tgz", + "integrity": "sha512-QbcXOuq6WYvnB3XPsZpIwztBoquEYLXh2MtwVU+kO8jgYCiv4G5xrSP/1wg4tkvrEE+esZVquIPX/dxPlePk1w==", + "dev": true, + "dependencies": { + "@typescript-eslint/types": "3.10.1", + "@typescript-eslint/visitor-keys": "3.10.1", + "debug": "^4.1.1", + "glob": "^7.1.6", + "is-glob": "^4.0.1", + "lodash": "^4.17.15", + "semver": "^7.3.2", + "tsutils": "^3.17.1" + }, + "engines": { + "node": "^10.12.0 || >=12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/eslint-plugin-testing-library/node_modules/@typescript-eslint/visitor-keys": { + "version": "3.10.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-3.10.1.tgz", + "integrity": "sha512-9JgC82AaQeglebjZMgYR5wgmfUdUc+EitGUUMW8u2nDckaeimzW+VsoLV6FoimPv2id3VQzfjwBxEMVz08ameQ==", + "dev": true, + "dependencies": { + "eslint-visitor-keys": "^1.1.0" + }, + "engines": { + "node": "^8.10.0 || ^10.13.0 || >=11.10.1" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/eslint-plugin-testing-library/node_modules/eslint-utils": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-2.1.0.tgz", + "integrity": "sha512-w94dQYoauyvlDc43XnGB8lU3Zt713vNChgt4EWwhXAP2XkBvndfxF0AgIqKOOasjPIPzj9JqgwkwbCYD0/V3Zg==", + "dev": true, + "dependencies": { + "eslint-visitor-keys": "^1.1.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/mysticatea" + } + }, + "node_modules/eslint-plugin-testing-library/node_modules/eslint-visitor-keys": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz", + "integrity": "sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/eslint-plugin-testing-library/node_modules/semver": { + "version": "7.3.5", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz", + "integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==", + "dev": true, + "dependencies": { + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, "node_modules/eslint-scope": { "version": "5.1.1", "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz", @@ -7506,24 +7710,6 @@ "node": ">=4.0" } }, - "node_modules/eslint-utils": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-3.0.0.tgz", - "integrity": "sha512-uuQC43IGctw68pJA1RgbQS8/NP7rch6Cwd4j3ZBtgo4/8Flj4eGE7ZYSZRN3iq5pVUv6GPdW5Z1RFleo84uLDA==", - "dev": true, - "dependencies": { - "eslint-visitor-keys": "^2.0.0" - }, - "engines": { - "node": "^10.0.0 || ^12.0.0 || >= 14.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/mysticatea" - }, - "peerDependencies": { - "eslint": ">=5" - } - }, "node_modules/eslint-visitor-keys": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz", @@ -7780,16 +7966,16 @@ } }, "node_modules/expect": { - "version": "27.2.5", - "resolved": "https://registry.npmjs.org/expect/-/expect-27.2.5.tgz", - "integrity": "sha512-ZrO0w7bo8BgGoP/bLz+HDCI+0Hfei9jUSZs5yI/Wyn9VkG9w8oJ7rHRgYj+MA7yqqFa0IwHA3flJzZtYugShJA==", + "version": "27.3.1", + "resolved": "https://registry.npmjs.org/expect/-/expect-27.3.1.tgz", + "integrity": "sha512-MrNXV2sL9iDRebWPGOGFdPQRl2eDQNu/uhxIMShjjx74T6kC6jFIkmQ6OqXDtevjGUkyB2IT56RzDBqXf/QPCg==", "dev": true, "dependencies": { "@jest/types": "^27.2.5", "ansi-styles": "^5.0.0", - "jest-get-type": "^27.0.6", - "jest-matcher-utils": "^27.2.5", - "jest-message-util": "^27.2.5", + "jest-get-type": "^27.3.1", + "jest-matcher-utils": "^27.3.1", + "jest-message-util": "^27.3.1", "jest-regex-util": "^27.0.6" }, "engines": { @@ -7850,9 +8036,9 @@ } }, "node_modules/express-rate-limit": { - "version": "5.4.1", - "resolved": "https://registry.npmjs.org/express-rate-limit/-/express-rate-limit-5.4.1.tgz", - "integrity": "sha512-ZQh2h3qiu7wWdvWNYHznBhaOp2ZIXNnT4hl2Ff608STeWtCuJ251NzqQlk7mo5wnO2HmrydBYHuVA9Z3S3ZtXg==", + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/express-rate-limit/-/express-rate-limit-5.5.0.tgz", + "integrity": "sha512-/1mrKggjXMxd1/ghPub5N3d36u5VlK8KjbQFQLxYub09BWSSgSXMQbXgFiIW0BYxjM49YCj8bkihONZR2U4+mQ==", "dev": true }, "node_modules/express/node_modules/debug": { @@ -8571,9 +8757,9 @@ } }, "node_modules/geoip-country": { - "version": "4.0.89", - "resolved": "https://registry.npmjs.org/geoip-country/-/geoip-country-4.0.89.tgz", - "integrity": "sha512-7QbzSuXfzsl6cQ6jdZW8eTgyKcf08NOBNc6Oli9ugjr2+cM4SvnmAP58JZ+KOXYom+W24pZ9lyNjC8NRA3bSFw==", + "version": "4.0.91", + "resolved": "https://registry.npmjs.org/geoip-country/-/geoip-country-4.0.91.tgz", + "integrity": "sha512-iYfqsWkYub3lVl8WXa9UAgAPC41J1UmlHW14LiIPjWD1D4nwuU6CFlrMHECs6S/4zAkEJH726SlCDsuWTHb1zA==", "inBundle": true, "dependencies": { "async": "^2.6.1", @@ -8943,12 +9129,6 @@ "react-is": "^16.7.0" } }, - "node_modules/hosted-git-info": { - "version": "2.8.9", - "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.9.tgz", - "integrity": "sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==", - "dev": true - }, "node_modules/hpack.js": { "version": "2.1.6", "resolved": "https://registry.npmjs.org/hpack.js/-/hpack.js-2.1.6.tgz", @@ -9010,43 +9190,43 @@ "dev": true }, "node_modules/html-minifier-terser": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/html-minifier-terser/-/html-minifier-terser-5.1.1.tgz", - "integrity": "sha512-ZPr5MNObqnV/T9akshPKbVgyOqLmy+Bxo7juKCfTfnjNniTAMdy4hz21YQqoofMBJD2kdREaqPPdThoR78Tgxg==", + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/html-minifier-terser/-/html-minifier-terser-6.0.2.tgz", + "integrity": "sha512-AgYO3UGhMYQx2S/FBJT3EM0ZYcKmH6m9XL9c1v77BeK/tYJxGPxT1/AtsdUi4FcP8kZGmqqnItCcjFPcX9hk6A==", "dev": true, "dependencies": { - "camel-case": "^4.1.1", - "clean-css": "^4.2.3", - "commander": "^4.1.1", + "camel-case": "^4.1.2", + "clean-css": "^5.1.5", + "commander": "^8.1.0", "he": "^1.2.0", - "param-case": "^3.0.3", + "param-case": "^3.0.4", "relateurl": "^0.2.7", - "terser": "^4.6.3" + "terser": "^5.7.2" }, "bin": { "html-minifier-terser": "cli.js" }, "engines": { - "node": ">=6" + "node": ">=12" } }, "node_modules/html-minifier-terser/node_modules/commander": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/commander/-/commander-4.1.1.tgz", - "integrity": "sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==", + "version": "8.3.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-8.3.0.tgz", + "integrity": "sha512-OkTL9umf+He2DZkUq8f8J9of7yL6RJKI24dVITBmNfZBmri9zYZQrKkuXiKhyfPSu8tUhnVBB1iKXevvnlR4Ww==", "dev": true, "engines": { - "node": ">= 6" + "node": ">= 12" } }, "node_modules/html-webpack-plugin": { - "version": "5.3.2", - "resolved": "https://registry.npmjs.org/html-webpack-plugin/-/html-webpack-plugin-5.3.2.tgz", - "integrity": "sha512-HvB33boVNCz2lTyBsSiMffsJ+m0YLIQ+pskblXgN9fnjS1BgEcuAfdInfXfGrkdXV406k9FiDi86eVCDBgJOyQ==", + "version": "5.4.0", + "resolved": "https://registry.npmjs.org/html-webpack-plugin/-/html-webpack-plugin-5.4.0.tgz", + "integrity": "sha512-cSUdckNOIqKc0nOrCJG7zkvzEIUcXjzEiVbKdEdIzW3BD5T4xPK6boV1mrTrPDZiL+aAr/j45eqbNL1akU2ZRA==", "dev": true, "dependencies": { - "@types/html-minifier-terser": "^5.0.0", - "html-minifier-terser": "^5.0.1", + "@types/html-minifier-terser": "^6.0.0", + "html-minifier-terser": "^6.0.2", "lodash": "^4.17.21", "pretty-error": "^3.0.4", "tapable": "^2.0.0" @@ -9633,22 +9813,10 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/is-ci": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-ci/-/is-ci-3.0.0.tgz", - "integrity": "sha512-kDXyttuLeslKAHYL/K28F2YkM3x5jvFPEw3yXbRptXydjD9rpLEz+C5K5iutY9ZiUu6AP41JdvRQwF4Iqs4ZCQ==", - "dev": true, - "dependencies": { - "ci-info": "^3.1.1" - }, - "bin": { - "is-ci": "bin.js" - } - }, "node_modules/is-core-module": { - "version": "2.6.0", - "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.6.0.tgz", - "integrity": "sha512-wShG8vs60jKfPWpF2KZRaAtvt3a20OAn7+IJ6hLPECpSABLcKtFKTTI4ZtH5QcBruBHlq+WsdHWyz0BCZW7svQ==", + "version": "2.8.0", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.8.0.tgz", + "integrity": "sha512-vd15qHsaqrRL7dtH6QNuy0ndJmRDrS9HAM1CAiSifNUFv4x1a0CCVsj18hJ1mShxIG6T2i1sO78MkP56r0nYRw==", "dev": true, "dependencies": { "has": "^1.0.3" @@ -9731,9 +9899,9 @@ } }, "node_modules/is-glob": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.1.tgz", - "integrity": "sha512-5G0tKtBTFImOqDnLB2hG6Bp2qcKEFduo4tZu9MT/H6NQv/ghhy30o55ufafxJ/LdH79LLs2Kfrn85TLKyA7BUg==", + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", + "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", "dev": true, "dependencies": { "is-extglob": "^2.1.1" @@ -9866,6 +10034,15 @@ "node": ">=6" } }, + "node_modules/is-shared-array-buffer": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.1.tgz", + "integrity": "sha512-IU0NmyknYZN0rChcKhRO1X8LYz5Isj/Fsqh8NJOSf+N/hCOTwy29F32Ik7a+QszE63IdvmwdTPDd6cZ5pg4cwA==", + "dev": true, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/is-stream": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", @@ -9926,6 +10103,18 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/is-weakref": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-weakref/-/is-weakref-1.0.1.tgz", + "integrity": "sha512-b2jKc2pQZjaeFYWEf7ScFj+Be1I+PXmlu572Q8coTXZ+LD/QQZ7ShPMst8h16riVgyXTQwUsFEl74mDvc/3MHQ==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/is-wsl": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-2.2.0.tgz", @@ -9998,9 +10187,9 @@ } }, "node_modules/istanbul-lib-source-maps": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/istanbul-lib-source-maps/-/istanbul-lib-source-maps-4.0.0.tgz", - "integrity": "sha512-c16LpFRkR8vQXyHZ5nLpY35JZtzj1PQY1iZmesUbf1FZHbIupcWfjgOXBY9YHkLEQ6puz1u4Dgj6qmU/DisrZg==", + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/istanbul-lib-source-maps/-/istanbul-lib-source-maps-4.0.1.tgz", + "integrity": "sha512-n3s8EwkdFIJCG3BPKBYvskgXGoy88ARzvegkitk60NxRdwltLOTaH7CUiMRXvwYorl0Q712iEjcWB+fK/MrWVw==", "dev": true, "dependencies": { "debug": "^4.1.1", @@ -10008,7 +10197,7 @@ "source-map": "^0.6.1" }, "engines": { - "node": ">=8" + "node": ">=10" } }, "node_modules/istanbul-lib-source-maps/node_modules/source-map": { @@ -10021,9 +10210,9 @@ } }, "node_modules/istanbul-reports": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-3.0.3.tgz", - "integrity": "sha512-0i77ZFLsb9U3DHi22WzmIngVzfoyxxbQcZRqlF3KoKmCJGq9nhFHoGi8FqBztN2rE8w6hURnZghetn0xpkVb6A==", + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-3.0.5.tgz", + "integrity": "sha512-5+19PlhnGabNWB7kOFnuxT8H3T/iIyQzIbQMxXsURmmvKg86P2sbkrGOT77VnHw0Qr0gc2XzRaRfMZYYbSQCJQ==", "dev": true, "dependencies": { "html-escaper": "^2.0.0", @@ -10034,14 +10223,14 @@ } }, "node_modules/jest": { - "version": "27.2.5", - "resolved": "https://registry.npmjs.org/jest/-/jest-27.2.5.tgz", - "integrity": "sha512-vDMzXcpQN4Ycaqu+vO7LX8pZwNNoKMhc+gSp6q1D8S6ftRk8gNW8cni3YFxknP95jxzQo23Lul0BI2FrWgnwYQ==", + "version": "27.3.1", + "resolved": "https://registry.npmjs.org/jest/-/jest-27.3.1.tgz", + "integrity": "sha512-U2AX0AgQGd5EzMsiZpYt8HyZ+nSVIh5ujQ9CPp9EQZJMjXIiSZpJNweZl0swatKRoqHWgGKM3zaSwm4Zaz87ng==", "dev": true, "dependencies": { - "@jest/core": "^27.2.5", + "@jest/core": "^27.3.1", "import-local": "^3.0.2", - "jest-cli": "^27.2.5" + "jest-cli": "^27.3.1" }, "bin": { "jest": "bin/jest.js" @@ -10059,9 +10248,9 @@ } }, "node_modules/jest-changed-files": { - "version": "27.2.5", - "resolved": "https://registry.npmjs.org/jest-changed-files/-/jest-changed-files-27.2.5.tgz", - "integrity": "sha512-jfnNJzF89csUKRPKJ4MwZ1SH27wTmX2xiAIHUHrsb/OYd9Jbo4/SXxJ17/nnx6RIifpthk3Y+LEeOk+/dDeGdw==", + "version": "27.3.0", + "resolved": "https://registry.npmjs.org/jest-changed-files/-/jest-changed-files-27.3.0.tgz", + "integrity": "sha512-9DJs9garMHv4RhylUMZgbdCJ3+jHSkpL9aaVKp13xtXAD80qLTLrqcDZL1PHA9dYA0bCI86Nv2BhkLpLhrBcPg==", "dev": true, "dependencies": { "@jest/types": "^27.2.5", @@ -10073,27 +10262,27 @@ } }, "node_modules/jest-circus": { - "version": "27.2.5", - "resolved": "https://registry.npmjs.org/jest-circus/-/jest-circus-27.2.5.tgz", - "integrity": "sha512-eyL9IcrAxm3Saq3rmajFCwpaxaRMGJ1KJs+7hlTDinXpJmeR3P02bheM3CYohE7UfwOBmrFMJHjgo/WPcLTM+Q==", + "version": "27.3.1", + "resolved": "https://registry.npmjs.org/jest-circus/-/jest-circus-27.3.1.tgz", + "integrity": "sha512-v1dsM9II6gvXokgqq6Yh2jHCpfg7ZqV4jWY66u7npz24JnhP3NHxI0sKT7+ZMQ7IrOWHYAaeEllOySbDbWsiXw==", "dev": true, "dependencies": { - "@jest/environment": "^27.2.5", - "@jest/test-result": "^27.2.5", + "@jest/environment": "^27.3.1", + "@jest/test-result": "^27.3.1", "@jest/types": "^27.2.5", "@types/node": "*", "chalk": "^4.0.0", "co": "^4.6.0", "dedent": "^0.7.0", - "expect": "^27.2.5", + "expect": "^27.3.1", "is-generator-fn": "^2.0.0", - "jest-each": "^27.2.5", - "jest-matcher-utils": "^27.2.5", - "jest-message-util": "^27.2.5", - "jest-runtime": "^27.2.5", - "jest-snapshot": "^27.2.5", - "jest-util": "^27.2.5", - "pretty-format": "^27.2.5", + "jest-each": "^27.3.1", + "jest-matcher-utils": "^27.3.1", + "jest-message-util": "^27.3.1", + "jest-runtime": "^27.3.1", + "jest-snapshot": "^27.3.1", + "jest-util": "^27.3.1", + "pretty-format": "^27.3.1", "slash": "^3.0.0", "stack-utils": "^2.0.3", "throat": "^6.0.1" @@ -10103,21 +10292,21 @@ } }, "node_modules/jest-cli": { - "version": "27.2.5", - "resolved": "https://registry.npmjs.org/jest-cli/-/jest-cli-27.2.5.tgz", - "integrity": "sha512-XzfcOXi5WQrXqFYsDxq5RDOKY4FNIgBgvgf3ZBz4e/j5/aWep5KnsAYH5OFPMdX/TP/LFsYQMRH7kzJUMh6JKg==", + "version": "27.3.1", + "resolved": "https://registry.npmjs.org/jest-cli/-/jest-cli-27.3.1.tgz", + "integrity": "sha512-WHnCqpfK+6EvT62me6WVs8NhtbjAS4/6vZJnk7/2+oOr50cwAzG4Wxt6RXX0hu6m1169ZGMlhYYUNeKBXCph/Q==", "dev": true, "dependencies": { - "@jest/core": "^27.2.5", - "@jest/test-result": "^27.2.5", + "@jest/core": "^27.3.1", + "@jest/test-result": "^27.3.1", "@jest/types": "^27.2.5", "chalk": "^4.0.0", "exit": "^0.1.2", "graceful-fs": "^4.2.4", "import-local": "^3.0.2", - "jest-config": "^27.2.5", - "jest-util": "^27.2.5", - "jest-validate": "^27.2.5", + "jest-config": "^27.3.1", + "jest-util": "^27.3.1", + "jest-validate": "^27.3.1", "prompts": "^2.0.1", "yargs": "^16.2.0" }, @@ -10149,17 +10338,17 @@ } }, "node_modules/jest-cli/node_modules/jest-validate": { - "version": "27.2.5", - "resolved": "https://registry.npmjs.org/jest-validate/-/jest-validate-27.2.5.tgz", - "integrity": "sha512-XgYtjS89nhVe+UfkbLgcm+GgXKWgL80t9nTcNeejyO3t0Sj/yHE8BtIJqjZu9NXQksYbGImoQRXmQ1gP+Guffw==", + "version": "27.3.1", + "resolved": "https://registry.npmjs.org/jest-validate/-/jest-validate-27.3.1.tgz", + "integrity": "sha512-3H0XCHDFLA9uDII67Bwi1Vy7AqwA5HqEEjyy934lgVhtJ3eisw6ShOF1MDmRPspyikef5MyExvIm0/TuLzZ86Q==", "dev": true, "dependencies": { "@jest/types": "^27.2.5", "camelcase": "^6.2.0", "chalk": "^4.0.0", - "jest-get-type": "^27.0.6", + "jest-get-type": "^27.3.1", "leven": "^3.1.0", - "pretty-format": "^27.2.5" + "pretty-format": "^27.3.1" }, "engines": { "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" @@ -10184,32 +10373,32 @@ } }, "node_modules/jest-config": { - "version": "27.2.5", - "resolved": "https://registry.npmjs.org/jest-config/-/jest-config-27.2.5.tgz", - "integrity": "sha512-QdENtn9b5rIIYGlbDNEcgY9LDL5kcokJnXrp7x8AGjHob/XFqw1Z6p+gjfna2sUulQsQ3ce2Fvntnv+7fKYDhQ==", + "version": "27.3.1", + "resolved": "https://registry.npmjs.org/jest-config/-/jest-config-27.3.1.tgz", + "integrity": "sha512-KY8xOIbIACZ/vdYCKSopL44I0xboxC751IX+DXL2+Wx6DKNycyEfV3rryC3BPm5Uq/BBqDoMrKuqLEUNJmMKKg==", "dev": true, "dependencies": { "@babel/core": "^7.1.0", - "@jest/test-sequencer": "^27.2.5", + "@jest/test-sequencer": "^27.3.1", "@jest/types": "^27.2.5", - "babel-jest": "^27.2.5", + "babel-jest": "^27.3.1", "chalk": "^4.0.0", + "ci-info": "^3.2.0", "deepmerge": "^4.2.2", "glob": "^7.1.1", "graceful-fs": "^4.2.4", - "is-ci": "^3.0.0", - "jest-circus": "^27.2.5", - "jest-environment-jsdom": "^27.2.5", - "jest-environment-node": "^27.2.5", - "jest-get-type": "^27.0.6", - "jest-jasmine2": "^27.2.5", + "jest-circus": "^27.3.1", + "jest-environment-jsdom": "^27.3.1", + "jest-environment-node": "^27.3.1", + "jest-get-type": "^27.3.1", + "jest-jasmine2": "^27.3.1", "jest-regex-util": "^27.0.6", - "jest-resolve": "^27.2.5", - "jest-runner": "^27.2.5", - "jest-util": "^27.2.5", - "jest-validate": "^27.2.5", + "jest-resolve": "^27.3.1", + "jest-runner": "^27.3.1", + "jest-util": "^27.3.1", + "jest-validate": "^27.3.1", "micromatch": "^4.0.4", - "pretty-format": "^27.2.5" + "pretty-format": "^27.3.1" }, "engines": { "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" @@ -10236,17 +10425,17 @@ } }, "node_modules/jest-config/node_modules/jest-validate": { - "version": "27.2.5", - "resolved": "https://registry.npmjs.org/jest-validate/-/jest-validate-27.2.5.tgz", - "integrity": "sha512-XgYtjS89nhVe+UfkbLgcm+GgXKWgL80t9nTcNeejyO3t0Sj/yHE8BtIJqjZu9NXQksYbGImoQRXmQ1gP+Guffw==", + "version": "27.3.1", + "resolved": "https://registry.npmjs.org/jest-validate/-/jest-validate-27.3.1.tgz", + "integrity": "sha512-3H0XCHDFLA9uDII67Bwi1Vy7AqwA5HqEEjyy934lgVhtJ3eisw6ShOF1MDmRPspyikef5MyExvIm0/TuLzZ86Q==", "dev": true, "dependencies": { "@jest/types": "^27.2.5", "camelcase": "^6.2.0", "chalk": "^4.0.0", - "jest-get-type": "^27.0.6", + "jest-get-type": "^27.3.1", "leven": "^3.1.0", - "pretty-format": "^27.2.5" + "pretty-format": "^27.3.1" }, "engines": { "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" @@ -10266,15 +10455,15 @@ } }, "node_modules/jest-diff": { - "version": "27.2.5", - "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-27.2.5.tgz", - "integrity": "sha512-7gfwwyYkeslOOVQY4tVq5TaQa92mWfC9COsVYMNVYyJTOYAqbIkoD3twi5A+h+tAPtAelRxkqY6/xu+jwTr0dA==", + "version": "27.3.1", + "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-27.3.1.tgz", + "integrity": "sha512-PCeuAH4AWUo2O5+ksW4pL9v5xJAcIKPUPfIhZBcG1RKv/0+dvaWTQK1Nrau8d67dp65fOqbeMdoil+6PedyEPQ==", "dev": true, "dependencies": { "chalk": "^4.0.0", "diff-sequences": "^27.0.6", - "jest-get-type": "^27.0.6", - "pretty-format": "^27.2.5" + "jest-get-type": "^27.3.1", + "pretty-format": "^27.3.1" }, "engines": { "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" @@ -10293,33 +10482,33 @@ } }, "node_modules/jest-each": { - "version": "27.2.5", - "resolved": "https://registry.npmjs.org/jest-each/-/jest-each-27.2.5.tgz", - "integrity": "sha512-HUPWIbJT0bXarRwKu/m7lYzqxR4GM5EhKOsu0z3t0SKtbFN6skQhpAUADM4qFShBXb9zoOuag5lcrR1x/WM+Ag==", + "version": "27.3.1", + "resolved": "https://registry.npmjs.org/jest-each/-/jest-each-27.3.1.tgz", + "integrity": "sha512-E4SwfzKJWYcvOYCjOxhZcxwL+AY0uFMvdCOwvzgutJiaiodFjkxQQDxHm8FQBeTqDnSmKsQWn7ldMRzTn2zJaQ==", "dev": true, "dependencies": { "@jest/types": "^27.2.5", "chalk": "^4.0.0", - "jest-get-type": "^27.0.6", - "jest-util": "^27.2.5", - "pretty-format": "^27.2.5" + "jest-get-type": "^27.3.1", + "jest-util": "^27.3.1", + "pretty-format": "^27.3.1" }, "engines": { "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" } }, "node_modules/jest-environment-jsdom": { - "version": "27.2.5", - "resolved": "https://registry.npmjs.org/jest-environment-jsdom/-/jest-environment-jsdom-27.2.5.tgz", - "integrity": "sha512-QtRpOh/RQKuXniaWcoFE2ElwP6tQcyxHu0hlk32880g0KczdonCs5P1sk5+weu/OVzh5V4Bt1rXuQthI01mBLg==", + "version": "27.3.1", + "resolved": "https://registry.npmjs.org/jest-environment-jsdom/-/jest-environment-jsdom-27.3.1.tgz", + "integrity": "sha512-3MOy8qMzIkQlfb3W1TfrD7uZHj+xx8Olix5vMENkj5djPmRqndMaXtpnaZkxmxM+Qc3lo+yVzJjzuXbCcZjAlg==", "dev": true, "dependencies": { - "@jest/environment": "^27.2.5", - "@jest/fake-timers": "^27.2.5", + "@jest/environment": "^27.3.1", + "@jest/fake-timers": "^27.3.1", "@jest/types": "^27.2.5", "@types/node": "*", - "jest-mock": "^27.2.5", - "jest-util": "^27.2.5", + "jest-mock": "^27.3.0", + "jest-util": "^27.3.1", "jsdom": "^16.6.0" }, "engines": { @@ -10327,35 +10516,35 @@ } }, "node_modules/jest-environment-node": { - "version": "27.2.5", - "resolved": "https://registry.npmjs.org/jest-environment-node/-/jest-environment-node-27.2.5.tgz", - "integrity": "sha512-0o1LT4grm7iwrS8fIoLtwJxb/hoa3GsH7pP10P02Jpj7Mi4BXy65u46m89vEM2WfD1uFJQ2+dfDiWZNA2e6bJg==", + "version": "27.3.1", + "resolved": "https://registry.npmjs.org/jest-environment-node/-/jest-environment-node-27.3.1.tgz", + "integrity": "sha512-T89F/FgkE8waqrTSA7/ydMkcc52uYPgZZ6q8OaZgyiZkJb5QNNCF6oPZjH9IfPFfcc9uBWh1574N0kY0pSvTXw==", "dev": true, "dependencies": { - "@jest/environment": "^27.2.5", - "@jest/fake-timers": "^27.2.5", + "@jest/environment": "^27.3.1", + "@jest/fake-timers": "^27.3.1", "@jest/types": "^27.2.5", "@types/node": "*", - "jest-mock": "^27.2.5", - "jest-util": "^27.2.5" + "jest-mock": "^27.3.0", + "jest-util": "^27.3.1" }, "engines": { "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" } }, "node_modules/jest-get-type": { - "version": "27.0.6", - "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-27.0.6.tgz", - "integrity": "sha512-XTkK5exIeUbbveehcSR8w0bhH+c0yloW/Wpl+9vZrjzztCPWrxhHwkIFpZzCt71oRBsgxmuUfxEqOYoZI2macg==", + "version": "27.3.1", + "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-27.3.1.tgz", + "integrity": "sha512-+Ilqi8hgHSAdhlQ3s12CAVNd8H96ZkQBfYoXmArzZnOfAtVAJEiPDBirjByEblvG/4LPJmkL+nBqPO3A1YJAEg==", "dev": true, "engines": { "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" } }, "node_modules/jest-haste-map": { - "version": "27.2.5", - "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-27.2.5.tgz", - "integrity": "sha512-pzO+Gw2WLponaSi0ilpzYBE0kuVJstoXBX8YWyUebR8VaXuX4tzzn0Zp23c/WaETo7XYTGv2e8KdnpiskAFMhQ==", + "version": "27.3.1", + "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-27.3.1.tgz", + "integrity": "sha512-lYfNZIzwPccDJZIyk9Iz5iQMM/MH56NIIcGj7AFU1YyA4ewWFBl8z+YPJuSCRML/ee2cCt2y3W4K3VXPT6Nhzg==", "dev": true, "dependencies": { "@jest/types": "^27.2.5", @@ -10366,8 +10555,8 @@ "graceful-fs": "^4.2.4", "jest-regex-util": "^27.0.6", "jest-serializer": "^27.0.6", - "jest-util": "^27.2.5", - "jest-worker": "^27.2.5", + "jest-util": "^27.3.1", + "jest-worker": "^27.3.1", "micromatch": "^4.0.4", "walker": "^1.0.7" }, @@ -10392,28 +10581,28 @@ } }, "node_modules/jest-jasmine2": { - "version": "27.2.5", - "resolved": "https://registry.npmjs.org/jest-jasmine2/-/jest-jasmine2-27.2.5.tgz", - "integrity": "sha512-hdxY9Cm/CjLqu2tXeAoQHPgA4vcqlweVXYOg1+S9FeFdznB9Rti+eEBKDDkmOy9iqr4Xfbq95OkC4NFbXXPCAQ==", + "version": "27.3.1", + "resolved": "https://registry.npmjs.org/jest-jasmine2/-/jest-jasmine2-27.3.1.tgz", + "integrity": "sha512-WK11ZUetDQaC09w4/j7o4FZDUIp+4iYWH/Lik34Pv7ukL+DuXFGdnmmi7dT58J2ZYKFB5r13GyE0z3NPeyJmsg==", "dev": true, "dependencies": { "@babel/traverse": "^7.1.0", - "@jest/environment": "^27.2.5", + "@jest/environment": "^27.3.1", "@jest/source-map": "^27.0.6", - "@jest/test-result": "^27.2.5", + "@jest/test-result": "^27.3.1", "@jest/types": "^27.2.5", "@types/node": "*", "chalk": "^4.0.0", "co": "^4.6.0", - "expect": "^27.2.5", + "expect": "^27.3.1", "is-generator-fn": "^2.0.0", - "jest-each": "^27.2.5", - "jest-matcher-utils": "^27.2.5", - "jest-message-util": "^27.2.5", - "jest-runtime": "^27.2.5", - "jest-snapshot": "^27.2.5", - "jest-util": "^27.2.5", - "pretty-format": "^27.2.5", + "jest-each": "^27.3.1", + "jest-matcher-utils": "^27.3.1", + "jest-message-util": "^27.3.1", + "jest-runtime": "^27.3.1", + "jest-snapshot": "^27.3.1", + "jest-util": "^27.3.1", + "pretty-format": "^27.3.1", "throat": "^6.0.1" }, "engines": { @@ -10421,37 +10610,37 @@ } }, "node_modules/jest-leak-detector": { - "version": "27.2.5", - "resolved": "https://registry.npmjs.org/jest-leak-detector/-/jest-leak-detector-27.2.5.tgz", - "integrity": "sha512-HYsi3GUR72bYhOGB5C5saF9sPdxGzSjX7soSQS+BqDRysc7sPeBwPbhbuT8DnOpijnKjgwWQ8JqvbmReYnt3aQ==", + "version": "27.3.1", + "resolved": "https://registry.npmjs.org/jest-leak-detector/-/jest-leak-detector-27.3.1.tgz", + "integrity": "sha512-78QstU9tXbaHzwlRlKmTpjP9k4Pvre5l0r8Spo4SbFFVy/4Abg9I6ZjHwjg2QyKEAMg020XcjP+UgLZIY50yEg==", "dev": true, "dependencies": { - "jest-get-type": "^27.0.6", - "pretty-format": "^27.2.5" + "jest-get-type": "^27.3.1", + "pretty-format": "^27.3.1" }, "engines": { "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" } }, "node_modules/jest-matcher-utils": { - "version": "27.2.5", - "resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-27.2.5.tgz", - "integrity": "sha512-qNR/kh6bz0Dyv3m68Ck2g1fLW5KlSOUNcFQh87VXHZwWc/gY6XwnKofx76Qytz3x5LDWT09/2+yXndTkaG4aWg==", + "version": "27.3.1", + "resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-27.3.1.tgz", + "integrity": "sha512-hX8N7zXS4k+8bC1Aj0OWpGb7D3gIXxYvPNK1inP5xvE4ztbz3rc4AkI6jGVaerepBnfWB17FL5lWFJT3s7qo8w==", "dev": true, "dependencies": { "chalk": "^4.0.0", - "jest-diff": "^27.2.5", - "jest-get-type": "^27.0.6", - "pretty-format": "^27.2.5" + "jest-diff": "^27.3.1", + "jest-get-type": "^27.3.1", + "pretty-format": "^27.3.1" }, "engines": { "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" } }, "node_modules/jest-message-util": { - "version": "27.2.5", - "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-27.2.5.tgz", - "integrity": "sha512-ggXSLoPfIYcbmZ8glgEJZ8b+e0Msw/iddRmgkoO7lDAr9SmI65IIfv7VnvTnV4FGnIIUIjzM+fHRHO5RBvyAbQ==", + "version": "27.3.1", + "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-27.3.1.tgz", + "integrity": "sha512-bh3JEmxsTZ/9rTm0jQrPElbY2+y48Rw2t47uMfByNyUVR+OfPh4anuyKsGqsNkXk/TI4JbLRZx+7p7Hdt6q1yg==", "dev": true, "dependencies": { "@babel/code-frame": "^7.12.13", @@ -10460,7 +10649,7 @@ "chalk": "^4.0.0", "graceful-fs": "^4.2.4", "micromatch": "^4.0.4", - "pretty-format": "^27.2.5", + "pretty-format": "^27.3.1", "slash": "^3.0.0", "stack-utils": "^2.0.3" }, @@ -10482,9 +10671,9 @@ } }, "node_modules/jest-mock": { - "version": "27.2.5", - "resolved": "https://registry.npmjs.org/jest-mock/-/jest-mock-27.2.5.tgz", - "integrity": "sha512-HiMB3LqE9RzmeMzZARi2Bz3NoymxyP0gCid4y42ca1djffNtYFKgI220aC1VP1mUZ8rbpqZbHZOJ15093bZV/Q==", + "version": "27.3.0", + "resolved": "https://registry.npmjs.org/jest-mock/-/jest-mock-27.3.0.tgz", + "integrity": "sha512-ziZiLk0elZOQjD08bLkegBzv5hCABu/c8Ytx45nJKkysQwGaonvmTxwjLqEA4qGdasq9o2I8/HtdGMNnVsMTGw==", "dev": true, "dependencies": { "@jest/types": "^27.2.5", @@ -10521,20 +10710,20 @@ } }, "node_modules/jest-resolve": { - "version": "27.2.5", - "resolved": "https://registry.npmjs.org/jest-resolve/-/jest-resolve-27.2.5.tgz", - "integrity": "sha512-q5irwS3oS73SKy3+FM/HL2T7WJftrk9BRzrXF92f7net5HMlS7lJMg/ZwxLB4YohKqjSsdksEw7n/jvMxV7EKg==", + "version": "27.3.1", + "resolved": "https://registry.npmjs.org/jest-resolve/-/jest-resolve-27.3.1.tgz", + "integrity": "sha512-Dfzt25CFSPo3Y3GCbxynRBZzxq9AdyNN+x/v2IqYx6KVT5Z6me2Z/PsSGFSv3cOSUZqJ9pHxilao/I/m9FouLw==", "dev": true, "dependencies": { "@jest/types": "^27.2.5", "chalk": "^4.0.0", - "escalade": "^3.1.1", "graceful-fs": "^4.2.4", - "jest-haste-map": "^27.2.5", + "jest-haste-map": "^27.3.1", "jest-pnp-resolver": "^1.2.2", - "jest-util": "^27.2.5", - "jest-validate": "^27.2.5", + "jest-util": "^27.3.1", + "jest-validate": "^27.3.1", "resolve": "^1.20.0", + "resolve.exports": "^1.1.0", "slash": "^3.0.0" }, "engines": { @@ -10542,14 +10731,14 @@ } }, "node_modules/jest-resolve-dependencies": { - "version": "27.2.5", - "resolved": "https://registry.npmjs.org/jest-resolve-dependencies/-/jest-resolve-dependencies-27.2.5.tgz", - "integrity": "sha512-BSjefped31bcvvCh++/pN9ueqqN1n0+p8/58yScuWfklLm2tbPbS9d251vJhAy0ZI2pL/0IaGhOTJrs9Y4FJlg==", + "version": "27.3.1", + "resolved": "https://registry.npmjs.org/jest-resolve-dependencies/-/jest-resolve-dependencies-27.3.1.tgz", + "integrity": "sha512-X7iLzY8pCiYOnvYo2YrK3P9oSE8/3N2f4pUZMJ8IUcZnT81vlSonya1KTO9ZfKGuC+svE6FHK/XOb8SsoRUV1A==", "dev": true, "dependencies": { "@jest/types": "^27.2.5", "jest-regex-util": "^27.0.6", - "jest-snapshot": "^27.2.5" + "jest-snapshot": "^27.3.1" }, "engines": { "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" @@ -10568,32 +10757,32 @@ } }, "node_modules/jest-resolve/node_modules/jest-validate": { - "version": "27.2.5", - "resolved": "https://registry.npmjs.org/jest-validate/-/jest-validate-27.2.5.tgz", - "integrity": "sha512-XgYtjS89nhVe+UfkbLgcm+GgXKWgL80t9nTcNeejyO3t0Sj/yHE8BtIJqjZu9NXQksYbGImoQRXmQ1gP+Guffw==", + "version": "27.3.1", + "resolved": "https://registry.npmjs.org/jest-validate/-/jest-validate-27.3.1.tgz", + "integrity": "sha512-3H0XCHDFLA9uDII67Bwi1Vy7AqwA5HqEEjyy934lgVhtJ3eisw6ShOF1MDmRPspyikef5MyExvIm0/TuLzZ86Q==", "dev": true, "dependencies": { "@jest/types": "^27.2.5", "camelcase": "^6.2.0", "chalk": "^4.0.0", - "jest-get-type": "^27.0.6", + "jest-get-type": "^27.3.1", "leven": "^3.1.0", - "pretty-format": "^27.2.5" + "pretty-format": "^27.3.1" }, "engines": { "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" } }, "node_modules/jest-runner": { - "version": "27.2.5", - "resolved": "https://registry.npmjs.org/jest-runner/-/jest-runner-27.2.5.tgz", - "integrity": "sha512-n41vw9RLg5TKAnEeJK9d6pGOsBOpwE89XBniK+AD1k26oIIy3V7ogM1scbDjSheji8MUPC9pNgCrZ/FHLVDNgg==", + "version": "27.3.1", + "resolved": "https://registry.npmjs.org/jest-runner/-/jest-runner-27.3.1.tgz", + "integrity": "sha512-r4W6kBn6sPr3TBwQNmqE94mPlYVn7fLBseeJfo4E2uCTmAyDFm2O5DYAQAFP7Q3YfiA/bMwg8TVsciP7k0xOww==", "dev": true, "dependencies": { - "@jest/console": "^27.2.5", - "@jest/environment": "^27.2.5", - "@jest/test-result": "^27.2.5", - "@jest/transform": "^27.2.5", + "@jest/console": "^27.3.1", + "@jest/environment": "^27.3.1", + "@jest/test-result": "^27.3.1", + "@jest/transform": "^27.3.1", "@jest/types": "^27.2.5", "@types/node": "*", "chalk": "^4.0.0", @@ -10601,15 +10790,15 @@ "exit": "^0.1.2", "graceful-fs": "^4.2.4", "jest-docblock": "^27.0.6", - "jest-environment-jsdom": "^27.2.5", - "jest-environment-node": "^27.2.5", - "jest-haste-map": "^27.2.5", - "jest-leak-detector": "^27.2.5", - "jest-message-util": "^27.2.5", - "jest-resolve": "^27.2.5", - "jest-runtime": "^27.2.5", - "jest-util": "^27.2.5", - "jest-worker": "^27.2.5", + "jest-environment-jsdom": "^27.3.1", + "jest-environment-node": "^27.3.1", + "jest-haste-map": "^27.3.1", + "jest-leak-detector": "^27.3.1", + "jest-message-util": "^27.3.1", + "jest-resolve": "^27.3.1", + "jest-runtime": "^27.3.1", + "jest-util": "^27.3.1", + "jest-worker": "^27.3.1", "source-map-support": "^0.5.6", "throat": "^6.0.1" }, @@ -10618,18 +10807,17 @@ } }, "node_modules/jest-runtime": { - "version": "27.2.5", - "resolved": "https://registry.npmjs.org/jest-runtime/-/jest-runtime-27.2.5.tgz", - "integrity": "sha512-N0WRZ3QszKyZ3Dm27HTBbBuestsSd3Ud5ooVho47XZJ8aSKO/X1Ag8M1dNx9XzfGVRNdB/xCA3lz8MJwIzPLLA==", + "version": "27.3.1", + "resolved": "https://registry.npmjs.org/jest-runtime/-/jest-runtime-27.3.1.tgz", + "integrity": "sha512-qtO6VxPbS8umqhEDpjA4pqTkKQ1Hy4ZSi9mDVeE9Za7LKBo2LdW2jmT+Iod3XFaJqINikZQsn2wEi0j9wPRbLg==", "dev": true, "dependencies": { - "@jest/console": "^27.2.5", - "@jest/environment": "^27.2.5", - "@jest/fake-timers": "^27.2.5", - "@jest/globals": "^27.2.5", + "@jest/console": "^27.3.1", + "@jest/environment": "^27.3.1", + "@jest/globals": "^27.3.1", "@jest/source-map": "^27.0.6", - "@jest/test-result": "^27.2.5", - "@jest/transform": "^27.2.5", + "@jest/test-result": "^27.3.1", + "@jest/transform": "^27.3.1", "@jest/types": "^27.2.5", "@types/yargs": "^16.0.0", "chalk": "^4.0.0", @@ -10639,14 +10827,14 @@ "exit": "^0.1.2", "glob": "^7.1.3", "graceful-fs": "^4.2.4", - "jest-haste-map": "^27.2.5", - "jest-message-util": "^27.2.5", - "jest-mock": "^27.2.5", + "jest-haste-map": "^27.3.1", + "jest-message-util": "^27.3.1", + "jest-mock": "^27.3.0", "jest-regex-util": "^27.0.6", - "jest-resolve": "^27.2.5", - "jest-snapshot": "^27.2.5", - "jest-util": "^27.2.5", - "jest-validate": "^27.2.5", + "jest-resolve": "^27.3.1", + "jest-snapshot": "^27.3.1", + "jest-util": "^27.3.1", + "jest-validate": "^27.3.1", "slash": "^3.0.0", "strip-bom": "^4.0.0", "yargs": "^16.2.0" @@ -10668,17 +10856,17 @@ } }, "node_modules/jest-runtime/node_modules/jest-validate": { - "version": "27.2.5", - "resolved": "https://registry.npmjs.org/jest-validate/-/jest-validate-27.2.5.tgz", - "integrity": "sha512-XgYtjS89nhVe+UfkbLgcm+GgXKWgL80t9nTcNeejyO3t0Sj/yHE8BtIJqjZu9NXQksYbGImoQRXmQ1gP+Guffw==", + "version": "27.3.1", + "resolved": "https://registry.npmjs.org/jest-validate/-/jest-validate-27.3.1.tgz", + "integrity": "sha512-3H0XCHDFLA9uDII67Bwi1Vy7AqwA5HqEEjyy934lgVhtJ3eisw6ShOF1MDmRPspyikef5MyExvIm0/TuLzZ86Q==", "dev": true, "dependencies": { "@jest/types": "^27.2.5", "camelcase": "^6.2.0", "chalk": "^4.0.0", - "jest-get-type": "^27.0.6", + "jest-get-type": "^27.3.1", "leven": "^3.1.0", - "pretty-format": "^27.2.5" + "pretty-format": "^27.3.1" }, "engines": { "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" @@ -10716,9 +10904,9 @@ } }, "node_modules/jest-snapshot": { - "version": "27.2.5", - "resolved": "https://registry.npmjs.org/jest-snapshot/-/jest-snapshot-27.2.5.tgz", - "integrity": "sha512-2/Jkn+VN6Abwz0llBltZaiJMnL8b1j5Bp/gRIxe9YR3FCEh9qp0TXVV0dcpTGZ8AcJV1SZGQkczewkI9LP5yGw==", + "version": "27.3.1", + "resolved": "https://registry.npmjs.org/jest-snapshot/-/jest-snapshot-27.3.1.tgz", + "integrity": "sha512-APZyBvSgQgOT0XumwfFu7X3G5elj6TGhCBLbBdn3R1IzYustPGPE38F51dBWMQ8hRXa9je0vAdeVDtqHLvB6lg==", "dev": true, "dependencies": { "@babel/core": "^7.7.2", @@ -10727,23 +10915,23 @@ "@babel/plugin-syntax-typescript": "^7.7.2", "@babel/traverse": "^7.7.2", "@babel/types": "^7.0.0", - "@jest/transform": "^27.2.5", + "@jest/transform": "^27.3.1", "@jest/types": "^27.2.5", "@types/babel__traverse": "^7.0.4", "@types/prettier": "^2.1.5", "babel-preset-current-node-syntax": "^1.0.0", "chalk": "^4.0.0", - "expect": "^27.2.5", + "expect": "^27.3.1", "graceful-fs": "^4.2.4", - "jest-diff": "^27.2.5", - "jest-get-type": "^27.0.6", - "jest-haste-map": "^27.2.5", - "jest-matcher-utils": "^27.2.5", - "jest-message-util": "^27.2.5", - "jest-resolve": "^27.2.5", - "jest-util": "^27.2.5", + "jest-diff": "^27.3.1", + "jest-get-type": "^27.3.1", + "jest-haste-map": "^27.3.1", + "jest-matcher-utils": "^27.3.1", + "jest-message-util": "^27.3.1", + "jest-resolve": "^27.3.1", + "jest-util": "^27.3.1", "natural-compare": "^1.4.0", - "pretty-format": "^27.2.5", + "pretty-format": "^27.3.1", "semver": "^7.3.2" }, "engines": { @@ -10766,16 +10954,16 @@ } }, "node_modules/jest-util": { - "version": "27.2.5", - "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-27.2.5.tgz", - "integrity": "sha512-QRhDC6XxISntMzFRd/OQ6TGsjbzA5ONO0tlAj2ElHs155x1aEr0rkYJBEysG6H/gZVH3oGFzCdAB/GA8leh8NQ==", + "version": "27.3.1", + "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-27.3.1.tgz", + "integrity": "sha512-8fg+ifEH3GDryLQf/eKZck1DEs2YuVPBCMOaHQxVVLmQwl/CDhWzrvChTX4efLZxGrw+AA0mSXv78cyytBt/uw==", "dev": true, "dependencies": { "@jest/types": "^27.2.5", "@types/node": "*", "chalk": "^4.0.0", + "ci-info": "^3.2.0", "graceful-fs": "^4.2.4", - "is-ci": "^3.0.0", "picomatch": "^2.2.3" }, "engines": { @@ -10867,17 +11055,17 @@ "dev": true }, "node_modules/jest-watcher": { - "version": "27.2.5", - "resolved": "https://registry.npmjs.org/jest-watcher/-/jest-watcher-27.2.5.tgz", - "integrity": "sha512-umV4qGozg2Dn6DTTtqAh9puPw+DGLK9AQas7+mWjiK8t0fWMpxKg8ZXReZw7L4C88DqorsGUiDgwHNZ+jkVrkQ==", + "version": "27.3.1", + "resolved": "https://registry.npmjs.org/jest-watcher/-/jest-watcher-27.3.1.tgz", + "integrity": "sha512-9/xbV6chABsGHWh9yPaAGYVVKurWoP3ZMCv6h+O1v9/+pkOroigs6WzZ0e9gLP/njokUwM7yQhr01LKJVMkaZA==", "dev": true, "dependencies": { - "@jest/test-result": "^27.2.5", + "@jest/test-result": "^27.3.1", "@jest/types": "^27.2.5", "@types/node": "*", "ansi-escapes": "^4.2.1", "chalk": "^4.0.0", - "jest-util": "^27.2.5", + "jest-util": "^27.3.1", "string-length": "^4.0.1" }, "engines": { @@ -10885,9 +11073,9 @@ } }, "node_modules/jest-worker": { - "version": "27.2.5", - "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-27.2.5.tgz", - "integrity": "sha512-HTjEPZtcNKZ4LnhSp02NEH4vE+5OpJ0EsOWYvGQpHgUMLngydESAAMH5Wd/asPf29+XUDQZszxpLg1BkIIA2aw==", + "version": "27.3.1", + "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-27.3.1.tgz", + "integrity": "sha512-ks3WCzsiZaOPJl/oMsDjaf0TRiSv7ctNgs0FqRr2nARsovz6AWWy4oLElwcquGSz692DzgZQrCLScPNs5YlC4g==", "dev": true, "dependencies": { "@types/node": "*", @@ -11265,52 +11453,6 @@ "uc.micro": "^1.0.1" } }, - "node_modules/load-json-file": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-4.0.0.tgz", - "integrity": "sha1-L19Fq5HjMhYjT9U62rZo607AmTs=", - "dev": true, - "dependencies": { - "graceful-fs": "^4.1.2", - "parse-json": "^4.0.0", - "pify": "^3.0.0", - "strip-bom": "^3.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/load-json-file/node_modules/parse-json": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-4.0.0.tgz", - "integrity": "sha1-vjX1Qlvh9/bHRxhPmKeIy5lHfuA=", - "dev": true, - "dependencies": { - "error-ex": "^1.3.1", - "json-parse-better-errors": "^1.0.1" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/load-json-file/node_modules/pify": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", - "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/load-json-file/node_modules/strip-bom": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", - "integrity": "sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM=", - "dev": true, - "engines": { - "node": ">=4" - } - }, "node_modules/loader-runner": { "version": "4.2.0", "resolved": "https://registry.npmjs.org/loader-runner/-/loader-runner-4.2.0.tgz", @@ -11760,9 +11902,9 @@ } }, "node_modules/mini-css-extract-plugin": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/mini-css-extract-plugin/-/mini-css-extract-plugin-2.4.2.tgz", - "integrity": "sha512-ZmqShkn79D36uerdED+9qdo1ZYG8C1YsWvXu0UMJxurZnSdgz7gQKO2EGv8T55MhDqG3DYmGtizZNpM/UbTlcA==", + "version": "2.4.3", + "resolved": "https://registry.npmjs.org/mini-css-extract-plugin/-/mini-css-extract-plugin-2.4.3.tgz", + "integrity": "sha512-zekavl9mZuGyk7COjsfFY/f655AX61EKE0AthXPrmDk+oZyjZ9WzO4WPjXnnO9xl8obK2kmM6rAQrBEmk+WK1g==", "dev": true, "dependencies": { "schema-utils": "^3.1.0" @@ -11830,9 +11972,9 @@ "dev": true }, "node_modules/mobx": { - "version": "6.3.3", - "resolved": "https://registry.npmjs.org/mobx/-/mobx-6.3.3.tgz", - "integrity": "sha512-JoNU50rO6d1wHwKPJqKq4rmUMbYnI9CsJmBo+Cu4exBYenFvIN77LWrZENpzW6reZPADtXMmB1DicbDSfy8Clw==", + "version": "6.3.5", + "resolved": "https://registry.npmjs.org/mobx/-/mobx-6.3.5.tgz", + "integrity": "sha512-MeDfqtiSbhVoJgXqQsrJwvq2klj7Xk9pPdMThCdFiwFt33vgWJe82ATppPwVzQoz0AI3QpSSwQzcp3TBDK4syg==", "dev": true, "funding": { "type": "opencollective", @@ -11840,9 +11982,9 @@ } }, "node_modules/mobx-react": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/mobx-react/-/mobx-react-7.2.0.tgz", - "integrity": "sha512-KHUjZ3HBmZlNnPd1M82jcdVsQRDlfym38zJhZEs33VxyVQTvL77hODCArq6+C1P1k/6erEeo2R7rpE7ZeOL7dg==", + "version": "7.2.1", + "resolved": "https://registry.npmjs.org/mobx-react/-/mobx-react-7.2.1.tgz", + "integrity": "sha512-LZS99KFLn75VWDXPdRJhILzVQ7qLcRjQbzkK+wVs0Qg4kWw5hOI2USp7tmu+9zP9KYsVBmKyx2k/8cTTBfsymw==", "dev": true, "dependencies": { "mobx-react-lite": "^3.2.0" @@ -12002,9 +12144,9 @@ } }, "node_modules/nanoid": { - "version": "3.1.29", - "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.1.29.tgz", - "integrity": "sha512-dW2pUSGZ8ZnCFIlBIA31SV8huOGCHb6OwzVCc7A69rb/a+SgPBwfmLvK5TKQ3INPbRkcI8a/Owo0XbiTNH19wg==", + "version": "3.1.30", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.1.30.tgz", + "integrity": "sha512-zJpuPDwOv8D2zq2WRoMe1HsfZthVewpel9CAvTfc/2mBD1uUT/agc5f7GHGWXlYkFvi1mVxe4IjvP2HNrop7nQ==", "dev": true, "bin": { "nanoid": "bin/nanoid.cjs" @@ -12101,27 +12243,6 @@ "integrity": "sha512-rB1DUFUNAN4Gn9keO2K1efO35IDK7yKHCdCaIMvFO7yUYmmZYeDjnGKle26G4rwj+LKRQpjyUUvMkPglwGCYNQ==", "dev": true }, - "node_modules/normalize-package-data": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz", - "integrity": "sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==", - "dev": true, - "dependencies": { - "hosted-git-info": "^2.1.4", - "resolve": "^1.10.0", - "semver": "2 || 3 || 4 || 5", - "validate-npm-package-license": "^3.0.1" - } - }, - "node_modules/normalize-package-data/node_modules/semver": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", - "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", - "dev": true, - "bin": { - "semver": "bin/semver" - } - }, "node_modules/normalize-path": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", @@ -12289,14 +12410,14 @@ } }, "node_modules/object.values": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/object.values/-/object.values-1.1.4.tgz", - "integrity": "sha512-TnGo7j4XSnKQoK3MfvkzqKCi0nVe/D9I9IjwTNYdb/fxYHpjrluHVOgw0AF6jrRFGMPHdfuidR09tIDiIvnaSg==", + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/object.values/-/object.values-1.1.5.tgz", + "integrity": "sha512-QUZRW0ilQ3PnPpbNtgdNV1PDbEqLIiSFB3l+EnGtBQ/8SUTLj1PZwtQHABZtLgwpJZTSZhuGLOGk57Drx2IvYg==", "dev": true, "dependencies": { "call-bind": "^1.0.2", "define-properties": "^1.1.3", - "es-abstract": "^1.18.2" + "es-abstract": "^1.19.1" }, "engines": { "node": ">= 0.4" @@ -12996,13 +13117,13 @@ } }, "node_modules/postcss": { - "version": "8.3.9", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.3.9.tgz", - "integrity": "sha512-f/ZFyAKh9Dnqytx5X62jgjhhzttjZS7hMsohcI7HEI5tjELX/HxCy3EFhsRxyzGvrzFF+82XPvCS8T9TFleVJw==", + "version": "8.3.11", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.3.11.tgz", + "integrity": "sha512-hCmlUAIlUiav8Xdqw3Io4LcpA1DOt7h3LSTAC4G6JGHFFaWzI6qvFt9oilvl8BmkbBRX1IhM90ZAmpk68zccQA==", "dev": true, "dependencies": { - "nanoid": "^3.1.28", - "picocolors": "^0.2.1", + "nanoid": "^3.1.30", + "picocolors": "^1.0.0", "source-map-js": "^0.6.2" }, "engines": { @@ -13108,9 +13229,9 @@ } }, "node_modules/postcss-loader": { - "version": "6.1.1", - "resolved": "https://registry.npmjs.org/postcss-loader/-/postcss-loader-6.1.1.tgz", - "integrity": "sha512-lBmJMvRh1D40dqpWKr9Rpygwxn8M74U9uaCSeYGNKLGInbk9mXBt1ultHf2dH9Ghk6Ue4UXlXWwGMH9QdUJ5ug==", + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/postcss-loader/-/postcss-loader-6.2.0.tgz", + "integrity": "sha512-H9hv447QjQJVDbHj3OUdciyAXY3v5+UDduzEytAlZCVHCpNAAg/mCSwhYYqZr9BiGYhmYspU8QXxZwiHTLn3yA==", "dev": true, "dependencies": { "cosmiconfig": "^7.0.0", @@ -13544,6 +13665,12 @@ "integrity": "sha512-97DXOFbQJhk71ne5/Mt6cOu6yxsSfM0QGQyl0L25Gca4yGWEGJaig7l7gbCX623VqTBNGLRLaVUCnNkcedlRSQ==", "dev": true }, + "node_modules/postcss/node_modules/picocolors": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", + "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==", + "dev": true + }, "node_modules/prelude-ls": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", @@ -13576,9 +13703,9 @@ } }, "node_modules/pretty-format": { - "version": "27.2.5", - "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-27.2.5.tgz", - "integrity": "sha512-+nYn2z9GgicO9JiqmY25Xtq8SYfZ/5VCpEU3pppHHNAhd1y+ZXxmNPd1evmNcAd6Hz4iBV2kf0UpGth5A/VJ7g==", + "version": "27.3.1", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-27.3.1.tgz", + "integrity": "sha512-DR/c+pvFc52nLimLROYjnXPtolawm+uWDxr4FjuLDLUn+ktWnSN851KoHwHzzqq6rfCOjkzN8FLgDrSub6UDuA==", "dev": true, "dependencies": { "@jest/types": "^27.2.5", @@ -14295,121 +14422,6 @@ "react-dom": "^15.0.0 || ^16.0.0 || ^17.0.0" } }, - "node_modules/read-pkg": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-3.0.0.tgz", - "integrity": "sha1-nLxoaXj+5l0WwA4rGcI3/Pbjg4k=", - "dev": true, - "dependencies": { - "load-json-file": "^4.0.0", - "normalize-package-data": "^2.3.2", - "path-type": "^3.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/read-pkg-up": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-3.0.0.tgz", - "integrity": "sha1-PtSWaF26D4/hGNBpHcUfSh/5bwc=", - "dev": true, - "dependencies": { - "find-up": "^2.0.0", - "read-pkg": "^3.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/read-pkg-up/node_modules/find-up": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz", - "integrity": "sha1-RdG35QbHF93UgndaK3eSCjwMV6c=", - "dev": true, - "dependencies": { - "locate-path": "^2.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/read-pkg-up/node_modules/locate-path": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz", - "integrity": "sha1-K1aLJl7slExtnA3pw9u7ygNUzY4=", - "dev": true, - "dependencies": { - "p-locate": "^2.0.0", - "path-exists": "^3.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/read-pkg-up/node_modules/p-limit": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.3.0.tgz", - "integrity": "sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q==", - "dev": true, - "dependencies": { - "p-try": "^1.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/read-pkg-up/node_modules/p-locate": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz", - "integrity": "sha1-IKAQOyIqcMj9OcwuWAaA893l7EM=", - "dev": true, - "dependencies": { - "p-limit": "^1.1.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/read-pkg-up/node_modules/p-try": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/p-try/-/p-try-1.0.0.tgz", - "integrity": "sha1-y8ec26+P1CKOE/Yh8rGiN8GyB7M=", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/read-pkg-up/node_modules/path-exists": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", - "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/read-pkg/node_modules/path-type": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/path-type/-/path-type-3.0.0.tgz", - "integrity": "sha512-T2ZUsdZFHgA3u4e5PfPbjd7HDDpxPnQb5jN0SrDsjNSuVXHJqtwTnWqG0B1jZrgmJ/7lj1EmVIByWt1gxGkWvg==", - "dev": true, - "dependencies": { - "pify": "^3.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/read-pkg/node_modules/pify": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", - "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=", - "dev": true, - "engines": { - "node": ">=4" - } - }, "node_modules/readable-stream": { "version": "3.6.0", "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", @@ -14684,6 +14696,15 @@ "integrity": "sha512-C7rARubxI8bXFNB/hqcp/4iUeIXJhJZvFPFPiSPRnhU5UPxzMFIl+2E6yY6c4k9giDJAhtV+enfA+G89N6Csng==", "dev": true }, + "node_modules/resolve.exports": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/resolve.exports/-/resolve.exports-1.1.0.tgz", + "integrity": "sha512-J1l+Zxxp4XK3LUDZ9m60LRJF/mAe4z6a4xyabPHk7pvK5t35dACV32iIjJDFeWZFfZlO29w6SZ67knR0tHzJtQ==", + "dev": true, + "engines": { + "node": ">=10" + } + }, "node_modules/ress": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/ress/-/ress-4.0.0.tgz", @@ -14824,9 +14845,9 @@ } }, "node_modules/sass": { - "version": "1.42.1", - "resolved": "https://registry.npmjs.org/sass/-/sass-1.42.1.tgz", - "integrity": "sha512-/zvGoN8B7dspKc5mC6HlaygyCBRvnyzzgD5khiaCfglWztY99cYoiTUksVx11NlnemrcfH5CEaCpsUKoW0cQqg==", + "version": "1.43.3", + "resolved": "https://registry.npmjs.org/sass/-/sass-1.43.3.tgz", + "integrity": "sha512-BJnLngqWpMeS65UvlYYEuCb3/fLxDxhHtOB/gWPxs6NKrslTxGt3ZxwIvOe/0Jm4tWwM/+tIpE3wj4dLEhPDeQ==", "dev": true, "dependencies": { "chokidar": ">=3.0.0 <4.0.0" @@ -14839,9 +14860,9 @@ } }, "node_modules/sass-loader": { - "version": "12.1.0", - "resolved": "https://registry.npmjs.org/sass-loader/-/sass-loader-12.1.0.tgz", - "integrity": "sha512-FVJZ9kxVRYNZTIe2xhw93n3xJNYZADr+q69/s98l9nTCrWASo+DR2Ot0s5xTKQDDEosUkatsGeHxcH4QBp5bSg==", + "version": "12.2.0", + "resolved": "https://registry.npmjs.org/sass-loader/-/sass-loader-12.2.0.tgz", + "integrity": "sha512-qducnp5vSV+8A8MZxuH6zV0MUg4MOVISScl2wDTCAn/2WJX+9Auxh92O/rnkdR2bvi5QxZBafnzkzRrWGZvm7w==", "dev": true, "dependencies": { "klona": "^2.0.4", @@ -15350,38 +15371,6 @@ "integrity": "sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA==", "dev": true }, - "node_modules/spdx-correct": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.1.1.tgz", - "integrity": "sha512-cOYcUWwhCuHCXi49RhFRCyJEK3iPj1Ziz9DpViV3tbZOwXD49QzIN3MpOLJNxh2qwq2lJJZaKMVw9qNi4jTC0w==", - "dev": true, - "dependencies": { - "spdx-expression-parse": "^3.0.0", - "spdx-license-ids": "^3.0.0" - } - }, - "node_modules/spdx-exceptions": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.3.0.tgz", - "integrity": "sha512-/tTrYOC7PPI1nUAgx34hUpqXuyJG+DTHJTnIULG4rDygi4xu/tfgmq1e1cIRwRzwZgo4NLySi+ricLkZkw4i5A==", - "dev": true - }, - "node_modules/spdx-expression-parse": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz", - "integrity": "sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==", - "dev": true, - "dependencies": { - "spdx-exceptions": "^2.1.0", - "spdx-license-ids": "^3.0.0" - } - }, - "node_modules/spdx-license-ids": { - "version": "3.0.10", - "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.10.tgz", - "integrity": "sha512-oie3/+gKf7QtpitB0LYLETe+k8SifzsX4KixvpOsbI6S0kRiRQ5MKOio8eMSAKQ17N06+wdEOXRiId+zOxo0hA==", - "dev": true - }, "node_modules/spdy": { "version": "4.0.2", "resolved": "https://registry.npmjs.org/spdy/-/spdy-4.0.2.tgz", @@ -15572,8 +15561,7 @@ "version": "3.0.1", "resolved": "https://registry.npmjs.org/string-natural-compare/-/string-natural-compare-3.0.1.tgz", "integrity": "sha512-n3sPwynL1nwKi3WJ6AIsClwBMa0zTi54fn2oLU6ndfTSIO05xaznjSf15PcBZU6FNWbmN5Q6cxT4V5hGvB4taw==", - "dev": true, - "peer": true + "dev": true }, "node_modules/string-width": { "version": "4.2.2", @@ -15683,9 +15671,9 @@ } }, "node_modules/style-loader": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/style-loader/-/style-loader-3.3.0.tgz", - "integrity": "sha512-szANub7ksJtQioJYtpbWwh1hUl99uK15n5HDlikeCRil/zYMZgSxucHddyF/4A3qJMUiAjPhFowrrQuNMA7jwQ==", + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/style-loader/-/style-loader-3.3.1.tgz", + "integrity": "sha512-GPcQ+LDJbrcxHORTRes6Jy2sfvK2kS6hpSfI/fXhPt+spVzxF6LJ1dHLN9zIGmVaaP044YKaIatFaufENRiDoQ==", "dev": true, "engines": { "node": ">= 12.13.0" @@ -15965,20 +15953,20 @@ } }, "node_modules/terser": { - "version": "4.8.0", - "resolved": "https://registry.npmjs.org/terser/-/terser-4.8.0.tgz", - "integrity": "sha512-EAPipTNeWsb/3wLPeup1tVPaXfIaU68xMnVdPafIL1TV05OhASArYyIfFvnvJCNrR2NIOvDVNNTFRa+Re2MWyw==", + "version": "5.9.0", + "resolved": "https://registry.npmjs.org/terser/-/terser-5.9.0.tgz", + "integrity": "sha512-h5hxa23sCdpzcye/7b8YqbE5OwKca/ni0RQz1uRX3tGh8haaGHqcuSqbGRybuAKNdntZ0mDgFNXPJ48xQ2RXKQ==", "dev": true, "dependencies": { "commander": "^2.20.0", - "source-map": "~0.6.1", - "source-map-support": "~0.5.12" + "source-map": "~0.7.2", + "source-map-support": "~0.5.20" }, "bin": { "terser": "bin/terser" }, "engines": { - "node": ">=6.0.0" + "node": ">=10" } }, "node_modules/terser-webpack-plugin": { @@ -16016,12 +16004,6 @@ } } }, - "node_modules/terser-webpack-plugin/node_modules/commander": { - "version": "2.20.3", - "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", - "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", - "dev": true - }, "node_modules/terser-webpack-plugin/node_modules/source-map": { "version": "0.6.1", "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", @@ -16031,32 +16013,6 @@ "node": ">=0.10.0" } }, - "node_modules/terser-webpack-plugin/node_modules/terser": { - "version": "5.7.2", - "resolved": "https://registry.npmjs.org/terser/-/terser-5.7.2.tgz", - "integrity": "sha512-0Omye+RD4X7X69O0eql3lC4Heh/5iLj3ggxR/B5ketZLOtLiOqukUgjw3q4PDnNQbsrkKr3UMypqStQG3XKRvw==", - "dev": true, - "dependencies": { - "commander": "^2.20.0", - "source-map": "~0.7.2", - "source-map-support": "~0.5.19" - }, - "bin": { - "terser": "bin/terser" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/terser-webpack-plugin/node_modules/terser/node_modules/source-map": { - "version": "0.7.3", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.3.tgz", - "integrity": "sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ==", - "dev": true, - "engines": { - "node": ">= 8" - } - }, "node_modules/terser/node_modules/commander": { "version": "2.20.3", "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", @@ -16064,12 +16020,12 @@ "dev": true }, "node_modules/terser/node_modules/source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "version": "0.7.3", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.3.tgz", + "integrity": "sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ==", "dev": true, "engines": { - "node": ">=0.10.0" + "node": ">= 8" } }, "node_modules/test-exclude": { @@ -16153,21 +16109,21 @@ "dev": true }, "node_modules/tldts": { - "version": "5.7.47", - "resolved": "https://registry.npmjs.org/tldts/-/tldts-5.7.47.tgz", - "integrity": "sha512-z7LKgaYkTKkbLdjM00d1DdqwyRZknnB132PBJMwJ5Wmr4KXH5VNAUqo33UO0XfAS+xgd4zndd+95L12bmz4Btg==", + "version": "5.7.49", + "resolved": "https://registry.npmjs.org/tldts/-/tldts-5.7.49.tgz", + "integrity": "sha512-AAS/2F3WiNrlD+PcSGiQzTui0BgsYDAxX/+jz8HB3EeyGjvz/y1LPpny8nCH9qt47sQQtAha5SiH7IIU7kVhzg==", "dev": true, "dependencies": { - "tldts-core": "^5.7.47" + "tldts-core": "^5.7.49" }, "bin": { "tldts": "bin/cli.js" } }, "node_modules/tldts-core": { - "version": "5.7.47", - "resolved": "https://registry.npmjs.org/tldts-core/-/tldts-core-5.7.47.tgz", - "integrity": "sha512-yPdz6a+xx+vp6LvlFw5oSrpfhuU5ORHZF+OXK1dx0IjYGjjYNLFkDQnjJ0CiHsmCQkZ2zTuEdIKUlGlZTXfLVA==", + "version": "5.7.49", + "resolved": "https://registry.npmjs.org/tldts-core/-/tldts-core-5.7.49.tgz", + "integrity": "sha512-ZwUJwp6gUnhCwH6K2xC5YJLnnzKrLrfIsGr9lWZH3DWwGmMVdWzOn4ZVBpTa8StP+H9Dxtk4UJYFiHtFL/qU3Q==", "dev": true }, "node_modules/tmp": { @@ -16284,16 +16240,16 @@ "dev": true }, "node_modules/ts-jest": { - "version": "27.0.5", - "resolved": "https://registry.npmjs.org/ts-jest/-/ts-jest-27.0.5.tgz", - "integrity": "sha512-lIJApzfTaSSbtlksfFNHkWOzLJuuSm4faFAfo5kvzOiRAuoN4/eKxVJ2zEAho8aecE04qX6K1pAzfH5QHL1/8w==", + "version": "27.0.7", + "resolved": "https://registry.npmjs.org/ts-jest/-/ts-jest-27.0.7.tgz", + "integrity": "sha512-O41shibMqzdafpuP+CkrOL7ykbmLh+FqQrXEmV9CydQ5JBk0Sj0uAEF5TNNe94fZWKm3yYvWa/IbyV4Yg1zK2Q==", "dev": true, "dependencies": { "bs-logger": "0.x", "fast-json-stable-stringify": "2.x", "jest-util": "^27.0.0", "json5": "2.x", - "lodash": "4.x", + "lodash.memoize": "4.x", "make-error": "1.x", "semver": "7.x", "yargs-parser": "20.x" @@ -16547,9 +16503,9 @@ } }, "node_modules/typed-emitter": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/typed-emitter/-/typed-emitter-1.3.1.tgz", - "integrity": "sha512-2h7utWyXgd2R2u2IuL8B4yu1gqMxbgUj2VS/MGVbFhEVQNJKXoQQoS5CBMh+eW31zFeSmDfEQ3qQf4xy5SlPVQ==", + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/typed-emitter/-/typed-emitter-1.4.0.tgz", + "integrity": "sha512-weBmoo3HhpKGgLBOYwe8EB31CzDFuaK7CCL+axXhUYhn4jo6DSkHnbefboCF5i4DQ2aMFe0C/FdTWcPdObgHyg==", "dev": true }, "node_modules/typedarray-to-buffer": { @@ -16562,9 +16518,9 @@ } }, "node_modules/typescript": { - "version": "4.4.3", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.4.3.tgz", - "integrity": "sha512-4xfscpisVgqqDfPaJo5vkd+Qd/ItkoagnHpufr+i2QCHBsNYp+G7UAoyFl8aPtx879u38wPV65rZ8qbGZijalA==", + "version": "4.4.4", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.4.4.tgz", + "integrity": "sha512-DqGhF5IKoBl8WNf8C1gu8q0xZSInh9j1kJJMqT3a94w1JzVaBU4EXOSMrz9yDqMT0xt3selp83fuFMQ0uzv6qA==", "dev": true, "bin": { "tsc": "bin/tsc", @@ -16678,33 +16634,6 @@ "querystring": "0.2.0" } }, - "node_modules/url-loader": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/url-loader/-/url-loader-4.1.1.tgz", - "integrity": "sha512-3BTV812+AVHHOJQO8O5MkWgZ5aosP7GnROJwvzLS9hWDj00lZ6Z0wNak423Lp9PBZN05N+Jk/N5Si8jRAlGyWA==", - "dev": true, - "dependencies": { - "loader-utils": "^2.0.0", - "mime-types": "^2.1.27", - "schema-utils": "^3.0.0" - }, - "engines": { - "node": ">= 10.13.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" - }, - "peerDependencies": { - "file-loader": "*", - "webpack": "^4.0.0 || ^5.0.0" - }, - "peerDependenciesMeta": { - "file-loader": { - "optional": true - } - } - }, "node_modules/url/node_modules/punycode": { "version": "1.3.2", "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.3.2.tgz", @@ -16791,16 +16720,6 @@ "node": ">= 8" } }, - "node_modules/validate-npm-package-license": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz", - "integrity": "sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==", - "dev": true, - "dependencies": { - "spdx-correct": "^3.0.0", - "spdx-expression-parse": "^3.0.0" - } - }, "node_modules/value-equal": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/value-equal/-/value-equal-1.0.1.tgz", @@ -16897,9 +16816,9 @@ } }, "node_modules/webpack": { - "version": "5.58.1", - "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.58.1.tgz", - "integrity": "sha512-4Z/dmbTU+VmkCb2XNgW7wkE5TfEcSooclprn/UEuVeAkwHhn07OcgUsyaKHGtCY/VobjnsYBlyhKeMLiSoOqPg==", + "version": "5.59.1", + "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.59.1.tgz", + "integrity": "sha512-I01IQV9K96FlpXX3V0L4nvd7gb0r7thfuu1IfT2P4uOHOA77nKARAKDYGe/tScSHKnffNIyQhLC8kRXzY4KEHQ==", "dev": true, "dependencies": { "@types/eslint-scope": "^3.7.0", @@ -17425,9 +17344,9 @@ } }, "node_modules/zod": { - "version": "3.9.8", - "resolved": "https://registry.npmjs.org/zod/-/zod-3.9.8.tgz", - "integrity": "sha512-pTNhdJd45PPOBpdxO8x00Tv+HhknYGx3WdgFQndazp+G1Gd2Cxf81L5yMfCIIcd/SA3VqrcTv/G4bFcr+DsZhA==", + "version": "3.11.2", + "resolved": "https://registry.npmjs.org/zod/-/zod-3.11.2.tgz", + "integrity": "sha512-mMoCWuXKGvPyShq2B1XnsZ3h0Ft1ekXLSkMfPEboaeSxrOVg7xnLhPrTiVT16rQz4A8Nq69XuHZHbQ8Bpx74lg==", "dev": true, "funding": { "url": "https://github.com/sponsors/colinhacks" @@ -18056,6 +17975,15 @@ "@babel/helper-plugin-utils": "^7.8.3" } }, + "@babel/plugin-syntax-flow": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-flow/-/plugin-syntax-flow-7.14.5.tgz", + "integrity": "sha512-9WK5ZwKCdWHxVuU13XNT6X73FGmutAXeor5lGFq6qhOFtMFUF4jkbijuyUdZZlpYq6E2hZeZf/u3959X9wsv0Q==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.14.5" + } + }, "@babel/plugin-syntax-import-meta": { "version": "7.10.4", "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-meta/-/plugin-syntax-import-meta-7.10.4.tgz", @@ -18264,6 +18192,16 @@ "@babel/helper-plugin-utils": "^7.14.5" } }, + "@babel/plugin-transform-flow-strip-types": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-flow-strip-types/-/plugin-transform-flow-strip-types-7.14.5.tgz", + "integrity": "sha512-KhcolBKfXbvjwI3TV7r7TkYm8oNXHNBqGOy6JDVwtecFaRoKYsUUqJdS10q0YDKW1c6aZQgO+Ys3LfGkox8pXA==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.14.5", + "@babel/plugin-syntax-flow": "^7.14.5" + } + }, "@babel/plugin-transform-for-of": { "version": "7.15.4", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.15.4.tgz", @@ -18452,6 +18390,20 @@ "@babel/helper-plugin-utils": "^7.14.5" } }, + "@babel/plugin-transform-runtime": { + "version": "7.15.8", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.15.8.tgz", + "integrity": "sha512-+6zsde91jMzzvkzuEA3k63zCw+tm/GvuuabkpisgbDMTPQsIMHllE3XczJFFtEHLjjhKQFZmGQVRdELetlWpVw==", + "dev": true, + "requires": { + "@babel/helper-module-imports": "^7.15.4", + "@babel/helper-plugin-utils": "^7.14.5", + "babel-plugin-polyfill-corejs2": "^0.2.2", + "babel-plugin-polyfill-corejs3": "^0.2.5", + "babel-plugin-polyfill-regenerator": "^0.2.2", + "semver": "^6.3.0" + } + }, "@babel/plugin-transform-shorthand-properties": { "version": "7.14.5", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.14.5.tgz", @@ -18731,28 +18683,28 @@ } }, "@emotion/cache": { - "version": "11.4.0", - "resolved": "https://registry.npmjs.org/@emotion/cache/-/cache-11.4.0.tgz", - "integrity": "sha512-Zx70bjE7LErRO9OaZrhf22Qye1y4F7iDl+ITjet0J+i+B88PrAOBkKvaAWhxsZf72tDLajwCgfCjJ2dvH77C3g==", + "version": "11.5.0", + "resolved": "https://registry.npmjs.org/@emotion/cache/-/cache-11.5.0.tgz", + "integrity": "sha512-mAZ5QRpLriBtaj/k2qyrXwck6yeoz1V5lMt/jfj6igWU35yYlNKs2LziXVgvH81gnJZ+9QQNGelSsnuoAy6uIw==", "dev": true, "requires": { "@emotion/memoize": "^0.7.4", - "@emotion/sheet": "^1.0.0", + "@emotion/sheet": "^1.0.3", "@emotion/utils": "^1.0.0", "@emotion/weak-memoize": "^0.2.5", - "stylis": "^4.0.3" + "stylis": "^4.0.10" } }, "@emotion/css": { - "version": "11.1.3", - "resolved": "https://registry.npmjs.org/@emotion/css/-/css-11.1.3.tgz", - "integrity": "sha512-RSQP59qtCNTf5NWD6xM08xsQdCZmVYnX/panPYvB6LQAPKQB6GL49Njf0EMbS3CyDtrlWsBcmqBtysFvfWT3rA==", + "version": "11.5.0", + "resolved": "https://registry.npmjs.org/@emotion/css/-/css-11.5.0.tgz", + "integrity": "sha512-mqjz/3aqR9rp40M+pvwdKYWxlQK4Nj3cnNjo3Tx6SM14dSsEn7q/4W2/I7PlgG+mb27iITHugXuBIHH/QwUBVQ==", "dev": true, "requires": { "@emotion/babel-plugin": "^11.0.0", - "@emotion/cache": "^11.1.3", + "@emotion/cache": "^11.5.0", "@emotion/serialize": "^1.0.0", - "@emotion/sheet": "^1.0.0", + "@emotion/sheet": "^1.0.3", "@emotion/utils": "^1.0.0" } }, @@ -18769,15 +18721,15 @@ "dev": true }, "@emotion/react": { - "version": "11.4.1", - "resolved": "https://registry.npmjs.org/@emotion/react/-/react-11.4.1.tgz", - "integrity": "sha512-pRegcsuGYj4FCdZN6j5vqCALkNytdrKw3TZMekTzNXixRg4wkLsU5QEaBG5LC6l01Vppxlp7FE3aTHpIG5phLg==", + "version": "11.5.0", + "resolved": "https://registry.npmjs.org/@emotion/react/-/react-11.5.0.tgz", + "integrity": "sha512-MYq/bzp3rYbee4EMBORCn4duPQfgpiEB5XzrZEBnUZAL80Qdfr7CEv/T80jwaTl/dnZmt9SnTa8NkTrwFNpLlw==", "dev": true, "requires": { "@babel/runtime": "^7.13.10", - "@emotion/cache": "^11.4.0", + "@emotion/cache": "^11.5.0", "@emotion/serialize": "^1.0.2", - "@emotion/sheet": "^1.0.2", + "@emotion/sheet": "^1.0.3", "@emotion/utils": "^1.0.0", "@emotion/weak-memoize": "^0.2.5", "hoist-non-react-statics": "^3.3.1" @@ -18797,9 +18749,9 @@ } }, "@emotion/sheet": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/@emotion/sheet/-/sheet-1.0.2.tgz", - "integrity": "sha512-QQPB1B70JEVUHuNtzjHftMGv6eC3Y9wqavyarj4x4lg47RACkeSfNo5pxIOKizwS9AEFLohsqoaxGQj4p0vSIw==", + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/@emotion/sheet/-/sheet-1.0.3.tgz", + "integrity": "sha512-YoX5GyQ4db7LpbmXHMuc8kebtBGP6nZfRC5Z13OKJMixBEwdZrJ914D6yJv/P+ZH/YY3F5s89NYX2hlZAf3SRQ==", "dev": true }, "@emotion/unitless": { @@ -18948,29 +18900,29 @@ "dev": true }, "@jest/console": { - "version": "27.2.5", - "resolved": "https://registry.npmjs.org/@jest/console/-/console-27.2.5.tgz", - "integrity": "sha512-smtlRF9vNKorRMCUtJ+yllIoiY8oFmfFG7xlzsAE76nKEwXNhjPOJIsc7Dv+AUitVt76t+KjIpUP9m98Crn2LQ==", + "version": "27.3.1", + "resolved": "https://registry.npmjs.org/@jest/console/-/console-27.3.1.tgz", + "integrity": "sha512-RkFNWmv0iui+qsOr/29q9dyfKTTT5DCuP31kUwg7rmOKPT/ozLeGLKJKVIiOfbiKyleUZKIrHwhmiZWVe8IMdw==", "dev": true, "requires": { "@jest/types": "^27.2.5", "@types/node": "*", "chalk": "^4.0.0", - "jest-message-util": "^27.2.5", - "jest-util": "^27.2.5", + "jest-message-util": "^27.3.1", + "jest-util": "^27.3.1", "slash": "^3.0.0" } }, "@jest/core": { - "version": "27.2.5", - "resolved": "https://registry.npmjs.org/@jest/core/-/core-27.2.5.tgz", - "integrity": "sha512-VR7mQ+jykHN4WO3OvusRJMk4xCa2MFLipMS+43fpcRGaYrN1KwMATfVEXif7ccgFKYGy5D1TVXTNE4mGq/KMMA==", + "version": "27.3.1", + "resolved": "https://registry.npmjs.org/@jest/core/-/core-27.3.1.tgz", + "integrity": "sha512-DMNE90RR5QKx0EA+wqe3/TNEwiRpOkhshKNxtLxd4rt3IZpCt+RSL+FoJsGeblRZmqdK4upHA/mKKGPPRAifhg==", "dev": true, "requires": { - "@jest/console": "^27.2.5", - "@jest/reporters": "^27.2.5", - "@jest/test-result": "^27.2.5", - "@jest/transform": "^27.2.5", + "@jest/console": "^27.3.1", + "@jest/reporters": "^27.3.1", + "@jest/test-result": "^27.3.1", + "@jest/transform": "^27.3.1", "@jest/types": "^27.2.5", "@types/node": "*", "ansi-escapes": "^4.2.1", @@ -18978,19 +18930,19 @@ "emittery": "^0.8.1", "exit": "^0.1.2", "graceful-fs": "^4.2.4", - "jest-changed-files": "^27.2.5", - "jest-config": "^27.2.5", - "jest-haste-map": "^27.2.5", - "jest-message-util": "^27.2.5", + "jest-changed-files": "^27.3.0", + "jest-config": "^27.3.1", + "jest-haste-map": "^27.3.1", + "jest-message-util": "^27.3.1", "jest-regex-util": "^27.0.6", - "jest-resolve": "^27.2.5", - "jest-resolve-dependencies": "^27.2.5", - "jest-runner": "^27.2.5", - "jest-runtime": "^27.2.5", - "jest-snapshot": "^27.2.5", - "jest-util": "^27.2.5", - "jest-validate": "^27.2.5", - "jest-watcher": "^27.2.5", + "jest-resolve": "^27.3.1", + "jest-resolve-dependencies": "^27.3.1", + "jest-runner": "^27.3.1", + "jest-runtime": "^27.3.1", + "jest-snapshot": "^27.3.1", + "jest-util": "^27.3.1", + "jest-validate": "^27.3.1", + "jest-watcher": "^27.3.1", "micromatch": "^4.0.4", "rimraf": "^3.0.0", "slash": "^3.0.0", @@ -19004,17 +18956,17 @@ "dev": true }, "jest-validate": { - "version": "27.2.5", - "resolved": "https://registry.npmjs.org/jest-validate/-/jest-validate-27.2.5.tgz", - "integrity": "sha512-XgYtjS89nhVe+UfkbLgcm+GgXKWgL80t9nTcNeejyO3t0Sj/yHE8BtIJqjZu9NXQksYbGImoQRXmQ1gP+Guffw==", + "version": "27.3.1", + "resolved": "https://registry.npmjs.org/jest-validate/-/jest-validate-27.3.1.tgz", + "integrity": "sha512-3H0XCHDFLA9uDII67Bwi1Vy7AqwA5HqEEjyy934lgVhtJ3eisw6ShOF1MDmRPspyikef5MyExvIm0/TuLzZ86Q==", "dev": true, "requires": { "@jest/types": "^27.2.5", "camelcase": "^6.2.0", "chalk": "^4.0.0", - "jest-get-type": "^27.0.6", + "jest-get-type": "^27.3.1", "leven": "^3.1.0", - "pretty-format": "^27.2.5" + "pretty-format": "^27.3.1" } }, "micromatch": { @@ -19030,52 +18982,52 @@ } }, "@jest/environment": { - "version": "27.2.5", - "resolved": "https://registry.npmjs.org/@jest/environment/-/environment-27.2.5.tgz", - "integrity": "sha512-XvUW3q6OUF+54SYFCgbbfCd/BKTwm5b2MGLoc2jINXQLKQDTCS2P2IrpPOtQ08WWZDGzbhAzVhOYta3J2arubg==", + "version": "27.3.1", + "resolved": "https://registry.npmjs.org/@jest/environment/-/environment-27.3.1.tgz", + "integrity": "sha512-BCKCj4mOVLme6Tanoyc9k0ultp3pnmuyHw73UHRPeeZxirsU/7E3HC4le/VDb/SMzE1JcPnto+XBKFOcoiJzVw==", "dev": true, "requires": { - "@jest/fake-timers": "^27.2.5", + "@jest/fake-timers": "^27.3.1", "@jest/types": "^27.2.5", "@types/node": "*", - "jest-mock": "^27.2.5" + "jest-mock": "^27.3.0" } }, "@jest/fake-timers": { - "version": "27.2.5", - "resolved": "https://registry.npmjs.org/@jest/fake-timers/-/fake-timers-27.2.5.tgz", - "integrity": "sha512-ZGUb6jg7BgwY+nmO0TW10bc7z7Hl2G/UTAvmxEyZ/GgNFoa31tY9/cgXmqcxnnZ7o5Xs7RAOz3G1SKIj8IVDlg==", + "version": "27.3.1", + "resolved": "https://registry.npmjs.org/@jest/fake-timers/-/fake-timers-27.3.1.tgz", + "integrity": "sha512-M3ZFgwwlqJtWZ+QkBG5NmC23A9w+A6ZxNsO5nJxJsKYt4yguBd3i8TpjQz5NfCX91nEve1KqD9RA2Q+Q1uWqoA==", "dev": true, "requires": { "@jest/types": "^27.2.5", "@sinonjs/fake-timers": "^8.0.1", "@types/node": "*", - "jest-message-util": "^27.2.5", - "jest-mock": "^27.2.5", - "jest-util": "^27.2.5" + "jest-message-util": "^27.3.1", + "jest-mock": "^27.3.0", + "jest-util": "^27.3.1" } }, "@jest/globals": { - "version": "27.2.5", - "resolved": "https://registry.npmjs.org/@jest/globals/-/globals-27.2.5.tgz", - "integrity": "sha512-naRI537GM+enFVJQs6DcwGYPn/0vgJNb06zGVbzXfDfe/epDPV73hP1vqO37PqSKDeOXM2KInr6ymYbL1HTP7g==", + "version": "27.3.1", + "resolved": "https://registry.npmjs.org/@jest/globals/-/globals-27.3.1.tgz", + "integrity": "sha512-Q651FWiWQAIFiN+zS51xqhdZ8g9b88nGCobC87argAxA7nMfNQq0Q0i9zTfQYgLa6qFXk2cGANEqfK051CZ8Pg==", "dev": true, "requires": { - "@jest/environment": "^27.2.5", + "@jest/environment": "^27.3.1", "@jest/types": "^27.2.5", - "expect": "^27.2.5" + "expect": "^27.3.1" } }, "@jest/reporters": { - "version": "27.2.5", - "resolved": "https://registry.npmjs.org/@jest/reporters/-/reporters-27.2.5.tgz", - "integrity": "sha512-zYuR9fap3Q3mxQ454VWF8I6jYHErh368NwcKHWO2uy2fwByqBzRHkf9j2ekMDM7PaSTWcLBSZyd7NNxR1iHxzQ==", + "version": "27.3.1", + "resolved": "https://registry.npmjs.org/@jest/reporters/-/reporters-27.3.1.tgz", + "integrity": "sha512-m2YxPmL9Qn1emFVgZGEiMwDntDxRRQ2D58tiDQlwYTg5GvbFOKseYCcHtn0WsI8CG4vzPglo3nqbOiT8ySBT/w==", "dev": true, "requires": { "@bcoe/v8-coverage": "^0.2.3", - "@jest/console": "^27.2.5", - "@jest/test-result": "^27.2.5", - "@jest/transform": "^27.2.5", + "@jest/console": "^27.3.1", + "@jest/test-result": "^27.3.1", + "@jest/transform": "^27.3.1", "@jest/types": "^27.2.5", "@types/node": "*", "chalk": "^4.0.0", @@ -19088,10 +19040,10 @@ "istanbul-lib-report": "^3.0.0", "istanbul-lib-source-maps": "^4.0.0", "istanbul-reports": "^3.0.2", - "jest-haste-map": "^27.2.5", - "jest-resolve": "^27.2.5", - "jest-util": "^27.2.5", - "jest-worker": "^27.2.5", + "jest-haste-map": "^27.3.1", + "jest-resolve": "^27.3.1", + "jest-util": "^27.3.1", + "jest-worker": "^27.3.1", "slash": "^3.0.0", "source-map": "^0.6.0", "string-length": "^4.0.1", @@ -19127,33 +19079,33 @@ } }, "@jest/test-result": { - "version": "27.2.5", - "resolved": "https://registry.npmjs.org/@jest/test-result/-/test-result-27.2.5.tgz", - "integrity": "sha512-ub7j3BrddxZ0BdSnM5JCF6cRZJ/7j3wgdX0+Dtwhw2Po+HKsELCiXUTvh+mgS4/89mpnU1CPhZxe2mTvuLPJJg==", + "version": "27.3.1", + "resolved": "https://registry.npmjs.org/@jest/test-result/-/test-result-27.3.1.tgz", + "integrity": "sha512-mLn6Thm+w2yl0opM8J/QnPTqrfS4FoXsXF2WIWJb2O/GBSyResL71BRuMYbYRsGt7ELwS5JGcEcGb52BNrumgg==", "dev": true, "requires": { - "@jest/console": "^27.2.5", + "@jest/console": "^27.3.1", "@jest/types": "^27.2.5", "@types/istanbul-lib-coverage": "^2.0.0", "collect-v8-coverage": "^1.0.0" } }, "@jest/test-sequencer": { - "version": "27.2.5", - "resolved": "https://registry.npmjs.org/@jest/test-sequencer/-/test-sequencer-27.2.5.tgz", - "integrity": "sha512-8j8fHZRfnjbbdMitMAGFKaBZ6YqvFRFJlMJzcy3v75edTOqc7RY65S9JpMY6wT260zAcL2sTQRga/P4PglCu3Q==", + "version": "27.3.1", + "resolved": "https://registry.npmjs.org/@jest/test-sequencer/-/test-sequencer-27.3.1.tgz", + "integrity": "sha512-siySLo07IMEdSjA4fqEnxfIX8lB/lWYsBPwNFtkOvsFQvmBrL3yj3k3uFNZv/JDyApTakRpxbKLJ3CT8UGVCrA==", "dev": true, "requires": { - "@jest/test-result": "^27.2.5", + "@jest/test-result": "^27.3.1", "graceful-fs": "^4.2.4", - "jest-haste-map": "^27.2.5", - "jest-runtime": "^27.2.5" + "jest-haste-map": "^27.3.1", + "jest-runtime": "^27.3.1" } }, "@jest/transform": { - "version": "27.2.5", - "resolved": "https://registry.npmjs.org/@jest/transform/-/transform-27.2.5.tgz", - "integrity": "sha512-29lRtAHHYGALbZOx343v0zKmdOg4Sb0rsA1uSv0818bvwRhs3TyElOmTVXlrw0v1ZTqXJCAH/cmoDXimBhQOJQ==", + "version": "27.3.1", + "resolved": "https://registry.npmjs.org/@jest/transform/-/transform-27.3.1.tgz", + "integrity": "sha512-3fSvQ02kuvjOI1C1ssqMVBKJpZf6nwoCiSu00zAKh5nrp3SptNtZy/8s5deayHnqxhjD9CWDJ+yqQwuQ0ZafXQ==", "dev": true, "requires": { "@babel/core": "^7.1.0", @@ -19163,9 +19115,9 @@ "convert-source-map": "^1.4.0", "fast-json-stable-stringify": "^2.0.0", "graceful-fs": "^4.2.4", - "jest-haste-map": "^27.2.5", + "jest-haste-map": "^27.3.1", "jest-regex-util": "^27.0.6", - "jest-util": "^27.2.5", + "jest-util": "^27.3.1", "micromatch": "^4.0.4", "pirates": "^4.0.1", "slash": "^3.0.0", @@ -19397,6 +19349,12 @@ "integrity": "sha512-Pc/AFTdwZwEKJxFJvlxrSmGe/di+aAOBn60sremrpLo6VI/6cmiUYNNwlI5KNYttg7uypzA3ILPMPgxB2GYZEg==", "dev": true }, + "@rushstack/eslint-patch": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/@rushstack/eslint-patch/-/eslint-patch-1.0.8.tgz", + "integrity": "sha512-ZK5v4bJwgXldAUA8r3q9YKfCwOqoHTK/ZqRjSeRXQrBXWouoPnS4MQtgC4AXGiiBuUu5wxrRgTlv0ktmM4P1Aw==", + "dev": true + }, "@seald-io/binary-search-tree": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/@seald-io/binary-search-tree/-/binary-search-tree-1.0.2.tgz", @@ -19561,9 +19519,9 @@ } }, "@types/d3": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/@types/d3/-/d3-7.0.0.tgz", - "integrity": "sha512-7rMMuS5unvbvFCJXAkQXIxWTo2OUlmVXN5q7sfQFesuVICY55PSP6hhbUhWjTTNpfTTB3iLALsIYDFe7KUNABw==", + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/@types/d3/-/d3-7.1.0.tgz", + "integrity": "sha512-gYWvgeGjEl+zmF8c+U1RNIKqe7sfQwIXeLXO5Os72TjDjCEtgpvGBvZ8dXlAuSS1m6B90Y1Uo6Bm36OGR/OtCA==", "dev": true, "requires": { "@types/d3-array": "*", @@ -19917,9 +19875,9 @@ "dev": true }, "@types/html-minifier-terser": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/@types/html-minifier-terser/-/html-minifier-terser-5.1.2.tgz", - "integrity": "sha512-h4lTMgMJctJybDp8CQrxTUiiYmedihHWkjnF/8Pxseu2S6Nlfcy8kwboQ8yejh456rP2yWoEVm1sS/FVsfM48w==", + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/@types/html-minifier-terser/-/html-minifier-terser-6.0.0.tgz", + "integrity": "sha512-NZwaaynfs1oIoLAV1vg18e7QMVDvw+6SQrdJc8w3BwUaoroVSf6EBj/Sk4PBWGxsq0dzhA2drbsuMC1/6C6KgQ==", "dev": true }, "@types/http-errors": { @@ -19999,9 +19957,9 @@ } }, "@types/lodash": { - "version": "4.14.175", - "resolved": "https://registry.npmjs.org/@types/lodash/-/lodash-4.14.175.tgz", - "integrity": "sha512-XmdEOrKQ8a1Y/yxQFOMbC47G/V2VDO1GvMRnl4O75M4GW/abC5tnfzadQYkqEveqRM1dEJGFFegfPNA2vvx2iw==", + "version": "4.14.176", + "resolved": "https://registry.npmjs.org/@types/lodash/-/lodash-4.14.176.tgz", + "integrity": "sha512-xZmuPTa3rlZoIbtDUyJKZQimJV3bxCmzMIO2c9Pz9afyDro6kr7R79GwcB6mRhuoPmV2p1Vb66WOJH7F886WKQ==", "dev": true }, "@types/magnet-uri": { @@ -20035,9 +19993,9 @@ "dev": true }, "@types/node": { - "version": "12.20.28", - "resolved": "https://registry.npmjs.org/@types/node/-/node-12.20.28.tgz", - "integrity": "sha512-cBw8gzxUPYX+/5lugXIPksioBSbE42k0fZ39p+4yRzfYjN6++eq9kAPdlY9qm+MXyfbk9EmvCYAYRn380sF46w==", + "version": "12.20.34", + "resolved": "https://registry.npmjs.org/@types/node/-/node-12.20.34.tgz", + "integrity": "sha512-+G6kIkmDOyWs7Co8M48lgyauuOlgZeRib64/DFBwYlY6ngwT7wgcF7ga1DsmZImUDfm2rE1jMnUhIEC/gdJ5rw==", "dev": true }, "@types/overlayscrollbars": { @@ -20127,9 +20085,9 @@ "dev": true }, "@types/react": { - "version": "17.0.27", - "resolved": "https://registry.npmjs.org/@types/react/-/react-17.0.27.tgz", - "integrity": "sha512-zgiJwtsggVGtr53MndV7jfiUESTqrbxOcBvwfe6KS/9bzaVPCTDieTWnFNecVNx6EAaapg5xsLLWFfHHR437AA==", + "version": "17.0.31", + "resolved": "https://registry.npmjs.org/@types/react/-/react-17.0.31.tgz", + "integrity": "sha512-MQSR5EL4JZtdWRvqDgz9kXhSDDoy2zMTYyg7UhP+FZ5ttUOocWyxiqFJiI57sUG0BtaEX7WDXYQlkCYkb3X9vQ==", "dev": true, "requires": { "@types/prop-types": "*", @@ -20138,18 +20096,18 @@ } }, "@types/react-dom": { - "version": "17.0.9", - "resolved": "https://registry.npmjs.org/@types/react-dom/-/react-dom-17.0.9.tgz", - "integrity": "sha512-wIvGxLfgpVDSAMH5utdL9Ngm5Owu0VsGmldro3ORLXV8CShrL8awVj06NuEXFQ5xyaYfdca7Sgbk/50Ri1GdPg==", + "version": "17.0.10", + "resolved": "https://registry.npmjs.org/@types/react-dom/-/react-dom-17.0.10.tgz", + "integrity": "sha512-8oz3NAUId2z/zQdFI09IMhQPNgIbiP8Lslhv39DIDamr846/0spjZK0vnrMak0iB8EKb9QFTTIdg2Wj2zH5a3g==", "dev": true, "requires": { "@types/react": "*" } }, "@types/react-measure": { - "version": "2.0.7", - "resolved": "https://registry.npmjs.org/@types/react-measure/-/react-measure-2.0.7.tgz", - "integrity": "sha512-BXIsnoC1lT58lwtUIAwVm8cEQZzmvL99VYshpLnIobOBgIIFfBqYZf/X3hdXnkwFKwc3SauYIQpZwPVF13EFCw==", + "version": "2.0.8", + "resolved": "https://registry.npmjs.org/@types/react-measure/-/react-measure-2.0.8.tgz", + "integrity": "sha512-Pu4/hQ/1AKVN6efoawtcM+l376WYOI8e1fiM6ir4pdLkHilDCkJLjUGvAm0mWKJ0GE6hzu55yCrcJ/xNyEdFwA==", "dev": true, "requires": { "@types/react": "*" @@ -20177,9 +20135,9 @@ } }, "@types/react-transition-group": { - "version": "4.4.3", - "resolved": "https://registry.npmjs.org/@types/react-transition-group/-/react-transition-group-4.4.3.tgz", - "integrity": "sha512-fUx5muOWSYP8Bw2BUQ9M9RK9+W1XBK/7FLJ8PTQpnpTEkn0ccyMffyEQvan4C3h53gHdx7KE5Qrxi/LnUGQtdg==", + "version": "4.4.4", + "resolved": "https://registry.npmjs.org/@types/react-transition-group/-/react-transition-group-4.4.4.tgz", + "integrity": "sha512-7gAPz7anVK5xzbeQW9wFBDg7G++aPLAFY0QaSMOou9rJZpbuI58WAuJrgu+qR92l61grlnCUe7AFX8KGahAgug==", "dev": true, "requires": { "@types/react": "*" @@ -20273,9 +20231,9 @@ } }, "@types/tar-stream": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/@types/tar-stream/-/tar-stream-2.2.1.tgz", - "integrity": "sha512-zhcfACZ4HavArMutfAB1/ApfSx44kNF2zyytU4mbO1dGCT/y9kL2IZwRDRyYYtBUxW6LRparZpLoX8i67b6IZw==", + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/@types/tar-stream/-/tar-stream-2.2.2.tgz", + "integrity": "sha512-1AX+Yt3icFuU6kxwmPakaiGrJUwG44MpuiqPg4dSolRFk6jmvs4b3IbUol9wKDLIgU76gevn3EwE8y/DkSJCZQ==", "dev": true, "requires": { "@types/node": "*" @@ -20341,6 +20299,17 @@ "@typescript-eslint/typescript-estree": "4.33.0", "eslint-scope": "^5.1.1", "eslint-utils": "^3.0.0" + }, + "dependencies": { + "eslint-utils": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-3.0.0.tgz", + "integrity": "sha512-uuQC43IGctw68pJA1RgbQS8/NP7rch6Cwd4j3ZBtgo4/8Flj4eGE7ZYSZRN3iq5pVUv6GPdW5Z1RFleo84uLDA==", + "dev": true, + "requires": { + "eslint-visitor-keys": "^2.0.0" + } + } } }, "@typescript-eslint/parser": { @@ -20764,16 +20733,16 @@ "dev": true }, "array-includes": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/array-includes/-/array-includes-3.1.3.tgz", - "integrity": "sha512-gcem1KlBU7c9rB+Rq8/3PPKsK2kjqeEBa3bD5kkQo4nYlOHQCJqIJFqBXDEfwaRuYTT4E+FxA9xez7Gf/e3Q7A==", + "version": "3.1.4", + "resolved": "https://registry.npmjs.org/array-includes/-/array-includes-3.1.4.tgz", + "integrity": "sha512-ZTNSQkmWumEbiHO2GF4GmWxYVTiQyJy2XOTa15sdQSrvKn7l+180egQMqlrMOUMCyLMD7pmyQe4mMDUT6Behrw==", "dev": true, "requires": { "call-bind": "^1.0.2", "define-properties": "^1.1.3", - "es-abstract": "^1.18.0-next.2", + "es-abstract": "^1.19.1", "get-intrinsic": "^1.1.1", - "is-string": "^1.0.5" + "is-string": "^1.0.7" } }, "array-union": { @@ -20783,14 +20752,14 @@ "dev": true }, "array.prototype.flat": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/array.prototype.flat/-/array.prototype.flat-1.2.4.tgz", - "integrity": "sha512-4470Xi3GAPAjZqFcljX2xzckv1qeKPizoNkiS0+O4IoPR2ZNpcjE0pkhdihlDouK+x6QOast26B4Q/O9DJnwSg==", + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/array.prototype.flat/-/array.prototype.flat-1.2.5.tgz", + "integrity": "sha512-KaYU+S+ndVqyUnignHftkwc58o3uVU1jzczILJ1tN2YaIZpFIKBiP/x/j97E5MVPsaCloPbqWLB/8qCTVvT2qg==", "dev": true, "requires": { - "call-bind": "^1.0.0", + "call-bind": "^1.0.2", "define-properties": "^1.1.3", - "es-abstract": "^1.18.0-next.1" + "es-abstract": "^1.19.0" } }, "array.prototype.flatmap": { @@ -20870,12 +20839,12 @@ "dev": true }, "axios": { - "version": "0.21.4", - "resolved": "https://registry.npmjs.org/axios/-/axios-0.21.4.tgz", - "integrity": "sha512-ut5vewkiu8jjGBdqpM44XxjuCjq9LAKeHVmoVfHVzy8eHgxxq8SbAVQNovDA8mVi05kP0Ea/n/UzcSHcTJQfNg==", + "version": "0.23.0", + "resolved": "https://registry.npmjs.org/axios/-/axios-0.23.0.tgz", + "integrity": "sha512-NmvAE4i0YAv5cKq8zlDoPd1VLKAqX5oLuZKs8xkJa4qi6RGn0uhCYFjWtHHC9EM/MwOwYWOs53W+V0aqEXq1sg==", "dev": true, "requires": { - "follow-redirects": "^1.14.0" + "follow-redirects": "^1.14.4" } }, "axobject-query": { @@ -20884,37 +20853,13 @@ "integrity": "sha512-Td525n+iPOOyUQIeBfcASuG6uJsDOITl7Mds5gFyerkWiX7qhUTdYUBlSgNMyVqtSJqwpt1kXGLdUt6SykLMRA==", "dev": true }, - "babel-eslint": { - "version": "10.1.0", - "resolved": "https://registry.npmjs.org/babel-eslint/-/babel-eslint-10.1.0.tgz", - "integrity": "sha512-ifWaTHQ0ce+448CYop8AdrQiBsGrnC+bMgfyKFdi6EsPLTAWG+QfyDeM6OH+FmWnKvEq5NnBMLvlBUPKQZoDSg==", - "dev": true, - "peer": true, - "requires": { - "@babel/code-frame": "^7.0.0", - "@babel/parser": "^7.7.0", - "@babel/traverse": "^7.7.0", - "@babel/types": "^7.7.0", - "eslint-visitor-keys": "^1.0.0", - "resolve": "^1.12.0" - }, - "dependencies": { - "eslint-visitor-keys": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz", - "integrity": "sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==", - "dev": true, - "peer": true - } - } - }, "babel-jest": { - "version": "27.2.5", - "resolved": "https://registry.npmjs.org/babel-jest/-/babel-jest-27.2.5.tgz", - "integrity": "sha512-GC9pWCcitBhSuF7H3zl0mftoKizlswaF0E3qi+rPL417wKkCB0d+Sjjb0OfXvxj7gWiBf497ldgRMii68Xz+2g==", + "version": "27.3.1", + "resolved": "https://registry.npmjs.org/babel-jest/-/babel-jest-27.3.1.tgz", + "integrity": "sha512-SjIF8hh/ir0peae2D6S6ZKRhUy7q/DnpH7k/V6fT4Bgs/LXXUztOpX4G2tCgq8mLo5HA9mN6NmlFMeYtKmIsTQ==", "dev": true, "requires": { - "@jest/transform": "^27.2.5", + "@jest/transform": "^27.3.1", "@jest/types": "^27.2.5", "@types/babel__core": "^7.1.14", "babel-plugin-istanbul": "^6.0.0", @@ -20925,9 +20870,9 @@ } }, "babel-loader": { - "version": "8.2.2", - "resolved": "https://registry.npmjs.org/babel-loader/-/babel-loader-8.2.2.tgz", - "integrity": "sha512-JvTd0/D889PQBtUXJ2PXaKU/pjZDMtHA9V2ecm+eNRmmBCMR09a+fmpGTNwnJtFmFl5Ei7Vy47LjBb+L0wQ99g==", + "version": "8.2.3", + "resolved": "https://registry.npmjs.org/babel-loader/-/babel-loader-8.2.3.tgz", + "integrity": "sha512-n4Zeta8NC3QAsuyiizu0GkmRcQ6clkV9WFUnUf1iXP//IeSKbWjofW3UHyZVwlOB4y039YQKefawyTn64Zwbuw==", "dev": true, "requires": { "find-cache-dir": "^3.3.1", @@ -21059,6 +21004,12 @@ "@babel/helper-define-polyfill-provider": "^0.2.2" } }, + "babel-plugin-transform-react-remove-prop-types": { + "version": "0.4.24", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-react-remove-prop-types/-/babel-plugin-transform-react-remove-prop-types-0.4.24.tgz", + "integrity": "sha512-eqj0hVcJUR57/Ug2zE1Yswsw4LhuqqHhD+8v120T1cl3kjg76QwtyBrdIk4WVwK+lAhBJVYCd/v+4nc4y+8JsA==", + "dev": true + }, "babel-preset-current-node-syntax": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/babel-preset-current-node-syntax/-/babel-preset-current-node-syntax-1.0.1.tgz", @@ -21089,6 +21040,43 @@ "babel-preset-current-node-syntax": "^1.0.0" } }, + "babel-preset-react-app": { + "version": "11.0.0-next.91", + "resolved": "https://registry.npmjs.org/babel-preset-react-app/-/babel-preset-react-app-11.0.0-next.91.tgz", + "integrity": "sha512-hr7SHwLCNjCzKmINQybKF84lwI4KrlC8fstNVO7lmsa1fZyXKqSqdY0lXMKcFOhfx7zw8kH1kLzQ1tx9H3GvHg==", + "dev": true, + "requires": { + "@babel/core": "^7.14.6", + "@babel/plugin-proposal-class-properties": "^7.14.5", + "@babel/plugin-proposal-decorators": "^7.14.5", + "@babel/plugin-proposal-nullish-coalescing-operator": "^7.14.5", + "@babel/plugin-proposal-numeric-separator": "^7.14.5", + "@babel/plugin-proposal-optional-chaining": "^7.14.5", + "@babel/plugin-proposal-private-methods": "^7.14.5", + "@babel/plugin-transform-flow-strip-types": "^7.14.5", + "@babel/plugin-transform-react-display-name": "^7.14.5", + "@babel/plugin-transform-runtime": "^7.14.5", + "@babel/preset-env": "^7.14.5", + "@babel/preset-react": "^7.14.5", + "@babel/preset-typescript": "^7.14.5", + "@babel/runtime": "^7.14.5", + "babel-plugin-macros": "^3.1.0", + "babel-plugin-transform-react-remove-prop-types": "^0.4.24" + }, + "dependencies": { + "babel-plugin-macros": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/babel-plugin-macros/-/babel-plugin-macros-3.1.0.tgz", + "integrity": "sha512-Cg7TFGpIr01vOQNODXOOaGz2NpCU5gl8x1qJFbb6hbZxR7XrcE2vtbAsTAbJ7/xwJtUuJEw8K8Zr/AE0LHlesg==", + "dev": true, + "requires": { + "@babel/runtime": "^7.12.5", + "cosmiconfig": "^7.0.0", + "resolve": "^1.19.0" + } + } + } + }, "balanced-match": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", @@ -21483,9 +21471,9 @@ "dev": true }, "clean-css": { - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/clean-css/-/clean-css-4.2.3.tgz", - "integrity": "sha512-VcMWDN54ZN/DS+g58HYL5/n4Zrqe8vHJpGA8KdgUXFU4fuP/aHNw8eld9SyEIyabIMJX/0RaY/fplOo5hYLSFA==", + "version": "5.2.2", + "resolved": "https://registry.npmjs.org/clean-css/-/clean-css-5.2.2.tgz", + "integrity": "sha512-/eR8ru5zyxKzpBLv9YZvMXgTSSQn7AdkMItMYynsFgGwTveCRVam9IUPFloE85B4vAIj05IuKmmEoV7/AQjT0w==", "dev": true, "requires": { "source-map": "~0.6.0" @@ -21868,9 +21856,9 @@ } }, "css-loader": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/css-loader/-/css-loader-6.3.0.tgz", - "integrity": "sha512-9NGvHOR+L6ps13Ilw/b216++Q8q+5RpJcVufCdW9S/9iCzs4KBDNa8qnA/n3FK/sSfWmH35PAIK/cfPi7LOSUg==", + "version": "6.4.0", + "resolved": "https://registry.npmjs.org/css-loader/-/css-loader-6.4.0.tgz", + "integrity": "sha512-Dlt6qfsxI/w1vU0r8qDd4BtMPxWqJeY5qQU7SmmZfvbpe6Xl18McO4GhyaMLns24Y2VNPiZwJPQ8JSbg4qvQLw==", "dev": true, "requires": { "icss-utils": "^5.1.0", @@ -22596,9 +22584,9 @@ } }, "es-abstract": { - "version": "1.18.6", - "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.18.6.tgz", - "integrity": "sha512-kAeIT4cku5eNLNuUKhlmtuk1/TRZvQoYccn6TO0cSVdf1kzB0T7+dYuVK9MWM7l+/53W2Q8M7N2c6MQvhXFcUQ==", + "version": "1.19.1", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.19.1.tgz", + "integrity": "sha512-2vJ6tjA/UfqLm2MPs7jxVybLoB8i1t1Jd9R3kISld20sIxPcTbLuggQOUxeWeAvIUkduv/CfMjuh4WmiXr2v9w==", "dev": true, "requires": { "call-bind": "^1.0.2", @@ -22612,7 +22600,9 @@ "is-callable": "^1.2.4", "is-negative-zero": "^2.0.1", "is-regex": "^1.1.4", + "is-shared-array-buffer": "^1.0.1", "is-string": "^1.0.7", + "is-weakref": "^1.0.1", "object-inspect": "^1.11.0", "object-keys": "^1.1.1", "object.assign": "^4.1.2", @@ -22856,12 +22846,43 @@ "requires": {} }, "eslint-config-react-app": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/eslint-config-react-app/-/eslint-config-react-app-6.0.0.tgz", - "integrity": "sha512-bpoAAC+YRfzq0dsTk+6v9aHm/uqnDwayNAXleMypGl6CpxI9oXXscVHo4fk3eJPIn+rsbtNetB4r/ZIidFIE8A==", + "version": "7.0.0-next.91", + "resolved": "https://registry.npmjs.org/eslint-config-react-app/-/eslint-config-react-app-7.0.0-next.91.tgz", + "integrity": "sha512-EzQYdNCC7i7JMhdpB3iza59cUOZmY6nxQ5TlU0HS1fXqfc02JnRLF6szk8XMQ08NpqEAs6kK4d3yeK9s0ofVoQ==", "dev": true, "requires": { - "confusing-browser-globals": "^1.0.10" + "@babel/core": "^7.14.2", + "@babel/eslint-parser": "^7.14.7", + "@rushstack/eslint-patch": "^1.0.6", + "@typescript-eslint/eslint-plugin": "^4.0.0", + "@typescript-eslint/parser": "^4.0.0", + "babel-preset-react-app": "11.0.0-next.91+1465357b", + "confusing-browser-globals": "2.0.0-next.91+1465357b", + "eslint-plugin-flowtype": "^5.2.0", + "eslint-plugin-import": "^2.22.0", + "eslint-plugin-jest": "^24.0.0", + "eslint-plugin-jsx-a11y": "^6.3.1", + "eslint-plugin-react": "^7.20.3", + "eslint-plugin-react-hooks": "^4.0.8", + "eslint-plugin-testing-library": "^3.9.0" + }, + "dependencies": { + "confusing-browser-globals": { + "version": "2.0.0-next.91", + "resolved": "https://registry.npmjs.org/confusing-browser-globals/-/confusing-browser-globals-2.0.0-next.91.tgz", + "integrity": "sha512-zeZBvlMaKyIzUNRWa/aMetboOK8fZv97qQOxfoH2UqUtaEwbWTAp9fgI+RrRQXq/GMnE6X+tkmgOUMyJJ8RMAw==", + "dev": true + }, + "eslint-plugin-flowtype": { + "version": "5.10.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-flowtype/-/eslint-plugin-flowtype-5.10.0.tgz", + "integrity": "sha512-vcz32f+7TP+kvTUyMXZmCnNujBQZDNmcqPImw8b9PZ+16w1Qdm6ryRuYZYVaG9xRqqmAPr2Cs9FAX5gN+x/bjw==", + "dev": true, + "requires": { + "lodash": "^4.17.15", + "string-natural-compare": "^3.0.1" + } + } } }, "eslint-import-resolver-node": { @@ -22886,9 +22907,9 @@ } }, "eslint-import-resolver-webpack": { - "version": "0.13.1", - "resolved": "https://registry.npmjs.org/eslint-import-resolver-webpack/-/eslint-import-resolver-webpack-0.13.1.tgz", - "integrity": "sha512-O/8mG6AHmaKYSMb4lWxiXPpaARxOJ4rMQEHJ8vTgjS1MXooJA3KPgBPPAdOPoV17v5ML5120qod5FBLM+DtgEw==", + "version": "0.13.2", + "resolved": "https://registry.npmjs.org/eslint-import-resolver-webpack/-/eslint-import-resolver-webpack-0.13.2.tgz", + "integrity": "sha512-XodIPyg1OgE2h5BDErz3WJoK7lawxKTJNhgPNafRST6csC/MZC+L5P6kKqsZGRInpbgc02s/WZMrb4uGJzcuRg==", "dev": true, "requires": { "array-find": "^1.0.0", @@ -22897,8 +22918,8 @@ "find-root": "^1.1.0", "has": "^1.0.3", "interpret": "^1.4.0", - "is-core-module": "^2.4.0", - "is-regex": "^1.1.3", + "is-core-module": "^2.7.0", + "is-regex": "^1.1.4", "lodash": "^4.17.21", "resolve": "^1.20.0", "semver": "^5.7.1" @@ -22922,12 +22943,13 @@ } }, "eslint-module-utils": { - "version": "2.6.2", - "resolved": "https://registry.npmjs.org/eslint-module-utils/-/eslint-module-utils-2.6.2.tgz", - "integrity": "sha512-QG8pcgThYOuqxupd06oYTZoNOGaUdTY1PqK+oS6ElF6vs4pBdk/aYxFVQQXzcrAqp9m7cl7lb2ubazX+g16k2Q==", + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/eslint-module-utils/-/eslint-module-utils-2.7.1.tgz", + "integrity": "sha512-fjoetBXQZq2tSTWZ9yWVl2KuFrTZZH3V+9iD1V1RfpDgxzJR+mPd/KZmMiA8gbPqdBzpNiEHOuT7IYEWxrH0zQ==", "dev": true, "requires": { "debug": "^3.2.7", + "find-up": "^2.1.0", "pkg-dir": "^2.0.0" }, "dependencies": { @@ -22939,60 +22961,6 @@ "requires": { "ms": "^2.1.1" } - } - } - }, - "eslint-plugin-flowtype": { - "version": "5.10.0", - "resolved": "https://registry.npmjs.org/eslint-plugin-flowtype/-/eslint-plugin-flowtype-5.10.0.tgz", - "integrity": "sha512-vcz32f+7TP+kvTUyMXZmCnNujBQZDNmcqPImw8b9PZ+16w1Qdm6ryRuYZYVaG9xRqqmAPr2Cs9FAX5gN+x/bjw==", - "dev": true, - "peer": true, - "requires": { - "lodash": "^4.17.15", - "string-natural-compare": "^3.0.1" - } - }, - "eslint-plugin-import": { - "version": "2.24.2", - "resolved": "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.24.2.tgz", - "integrity": "sha512-hNVtyhiEtZmpsabL4neEj+6M5DCLgpYyG9nzJY8lZQeQXEn5UPW1DpUdsMHMXsq98dbNm7nt1w9ZMSVpfJdi8Q==", - "dev": true, - "requires": { - "array-includes": "^3.1.3", - "array.prototype.flat": "^1.2.4", - "debug": "^2.6.9", - "doctrine": "^2.1.0", - "eslint-import-resolver-node": "^0.3.6", - "eslint-module-utils": "^2.6.2", - "find-up": "^2.0.0", - "has": "^1.0.3", - "is-core-module": "^2.6.0", - "minimatch": "^3.0.4", - "object.values": "^1.1.4", - "pkg-up": "^2.0.0", - "read-pkg-up": "^3.0.0", - "resolve": "^1.20.0", - "tsconfig-paths": "^3.11.0" - }, - "dependencies": { - "debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dev": true, - "requires": { - "ms": "2.0.0" - } - }, - "doctrine": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz", - "integrity": "sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==", - "dev": true, - "requires": { - "esutils": "^2.0.2" - } }, "find-up": { "version": "2.1.0", @@ -23013,12 +22981,6 @@ "path-exists": "^3.0.0" } }, - "ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", - "dev": true - }, "p-limit": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.3.0.tgz", @@ -23048,22 +23010,60 @@ "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=", "dev": true - }, - "pkg-up": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/pkg-up/-/pkg-up-2.0.0.tgz", - "integrity": "sha1-yBmscoBZpGHKscOImivjxJoATX8=", + } + } + }, + "eslint-plugin-import": { + "version": "2.25.2", + "resolved": "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.25.2.tgz", + "integrity": "sha512-qCwQr9TYfoBHOFcVGKY9C9unq05uOxxdklmBXLVvcwo68y5Hta6/GzCZEMx2zQiu0woKNEER0LE7ZgaOfBU14g==", + "dev": true, + "requires": { + "array-includes": "^3.1.4", + "array.prototype.flat": "^1.2.5", + "debug": "^2.6.9", + "doctrine": "^2.1.0", + "eslint-import-resolver-node": "^0.3.6", + "eslint-module-utils": "^2.7.0", + "has": "^1.0.3", + "is-core-module": "^2.7.0", + "is-glob": "^4.0.3", + "minimatch": "^3.0.4", + "object.values": "^1.1.5", + "resolve": "^1.20.0", + "tsconfig-paths": "^3.11.0" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", "dev": true, "requires": { - "find-up": "^2.1.0" + "ms": "2.0.0" } + }, + "doctrine": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz", + "integrity": "sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==", + "dev": true, + "requires": { + "esutils": "^2.0.2" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "dev": true } } }, "eslint-plugin-jest": { - "version": "24.5.2", - "resolved": "https://registry.npmjs.org/eslint-plugin-jest/-/eslint-plugin-jest-24.5.2.tgz", - "integrity": "sha512-lrI3sGAyZi513RRmP08sIW241Ti/zMnn/6wbE4ZBhb3M2pJ9ztaZMnSKSKKBUfotVdwqU8W1KtD8ao2/FR8DIg==", + "version": "24.7.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-jest/-/eslint-plugin-jest-24.7.0.tgz", + "integrity": "sha512-wUxdF2bAZiYSKBclsUMrYHH6WxiBreNjyDxbRv345TIvPeoCEgPNEn3Sa+ZrSqsf1Dl9SqqSREXMHExlMMu1DA==", "dev": true, "requires": { "@typescript-eslint/experimental-utils": "^4.0.1" @@ -23138,6 +23138,85 @@ "dev": true, "requires": {} }, + "eslint-plugin-testing-library": { + "version": "3.10.2", + "resolved": "https://registry.npmjs.org/eslint-plugin-testing-library/-/eslint-plugin-testing-library-3.10.2.tgz", + "integrity": "sha512-WAmOCt7EbF1XM8XfbCKAEzAPnShkNSwcIsAD2jHdsMUT9mZJPjLCG7pMzbcC8kK366NOuGip8HKLDC+Xk4yIdA==", + "dev": true, + "requires": { + "@typescript-eslint/experimental-utils": "^3.10.1" + }, + "dependencies": { + "@typescript-eslint/experimental-utils": { + "version": "3.10.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/experimental-utils/-/experimental-utils-3.10.1.tgz", + "integrity": "sha512-DewqIgscDzmAfd5nOGe4zm6Bl7PKtMG2Ad0KG8CUZAHlXfAKTF9Ol5PXhiMh39yRL2ChRH1cuuUGOcVyyrhQIw==", + "dev": true, + "requires": { + "@types/json-schema": "^7.0.3", + "@typescript-eslint/types": "3.10.1", + "@typescript-eslint/typescript-estree": "3.10.1", + "eslint-scope": "^5.0.0", + "eslint-utils": "^2.0.0" + } + }, + "@typescript-eslint/types": { + "version": "3.10.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-3.10.1.tgz", + "integrity": "sha512-+3+FCUJIahE9q0lDi1WleYzjCwJs5hIsbugIgnbB+dSCYUxl8L6PwmsyOPFZde2hc1DlTo/xnkOgiTLSyAbHiQ==", + "dev": true + }, + "@typescript-eslint/typescript-estree": { + "version": "3.10.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-3.10.1.tgz", + "integrity": "sha512-QbcXOuq6WYvnB3XPsZpIwztBoquEYLXh2MtwVU+kO8jgYCiv4G5xrSP/1wg4tkvrEE+esZVquIPX/dxPlePk1w==", + "dev": true, + "requires": { + "@typescript-eslint/types": "3.10.1", + "@typescript-eslint/visitor-keys": "3.10.1", + "debug": "^4.1.1", + "glob": "^7.1.6", + "is-glob": "^4.0.1", + "lodash": "^4.17.15", + "semver": "^7.3.2", + "tsutils": "^3.17.1" + } + }, + "@typescript-eslint/visitor-keys": { + "version": "3.10.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-3.10.1.tgz", + "integrity": "sha512-9JgC82AaQeglebjZMgYR5wgmfUdUc+EitGUUMW8u2nDckaeimzW+VsoLV6FoimPv2id3VQzfjwBxEMVz08ameQ==", + "dev": true, + "requires": { + "eslint-visitor-keys": "^1.1.0" + } + }, + "eslint-utils": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-2.1.0.tgz", + "integrity": "sha512-w94dQYoauyvlDc43XnGB8lU3Zt713vNChgt4EWwhXAP2XkBvndfxF0AgIqKOOasjPIPzj9JqgwkwbCYD0/V3Zg==", + "dev": true, + "requires": { + "eslint-visitor-keys": "^1.1.0" + } + }, + "eslint-visitor-keys": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz", + "integrity": "sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==", + "dev": true + }, + "semver": { + "version": "7.3.5", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz", + "integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==", + "dev": true, + "requires": { + "lru-cache": "^6.0.0" + } + } + } + }, "eslint-scope": { "version": "5.1.1", "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz", @@ -23156,15 +23235,6 @@ } } }, - "eslint-utils": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-3.0.0.tgz", - "integrity": "sha512-uuQC43IGctw68pJA1RgbQS8/NP7rch6Cwd4j3ZBtgo4/8Flj4eGE7ZYSZRN3iq5pVUv6GPdW5Z1RFleo84uLDA==", - "dev": true, - "requires": { - "eslint-visitor-keys": "^2.0.0" - } - }, "eslint-visitor-keys": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz", @@ -23293,16 +23363,16 @@ "dev": true }, "expect": { - "version": "27.2.5", - "resolved": "https://registry.npmjs.org/expect/-/expect-27.2.5.tgz", - "integrity": "sha512-ZrO0w7bo8BgGoP/bLz+HDCI+0Hfei9jUSZs5yI/Wyn9VkG9w8oJ7rHRgYj+MA7yqqFa0IwHA3flJzZtYugShJA==", + "version": "27.3.1", + "resolved": "https://registry.npmjs.org/expect/-/expect-27.3.1.tgz", + "integrity": "sha512-MrNXV2sL9iDRebWPGOGFdPQRl2eDQNu/uhxIMShjjx74T6kC6jFIkmQ6OqXDtevjGUkyB2IT56RzDBqXf/QPCg==", "dev": true, "requires": { "@jest/types": "^27.2.5", "ansi-styles": "^5.0.0", - "jest-get-type": "^27.0.6", - "jest-matcher-utils": "^27.2.5", - "jest-message-util": "^27.2.5", + "jest-get-type": "^27.3.1", + "jest-matcher-utils": "^27.3.1", + "jest-message-util": "^27.3.1", "jest-regex-util": "^27.0.6" }, "dependencies": { @@ -23370,9 +23440,9 @@ } }, "express-rate-limit": { - "version": "5.4.1", - "resolved": "https://registry.npmjs.org/express-rate-limit/-/express-rate-limit-5.4.1.tgz", - "integrity": "sha512-ZQh2h3qiu7wWdvWNYHznBhaOp2ZIXNnT4hl2Ff608STeWtCuJ251NzqQlk7mo5wnO2HmrydBYHuVA9Z3S3ZtXg==", + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/express-rate-limit/-/express-rate-limit-5.5.0.tgz", + "integrity": "sha512-/1mrKggjXMxd1/ghPub5N3d36u5VlK8KjbQFQLxYub09BWSSgSXMQbXgFiIW0BYxjM49YCj8bkihONZR2U4+mQ==", "dev": true }, "external-editor": { @@ -23910,9 +23980,9 @@ "dev": true }, "geoip-country": { - "version": "4.0.89", - "resolved": "https://registry.npmjs.org/geoip-country/-/geoip-country-4.0.89.tgz", - "integrity": "sha512-7QbzSuXfzsl6cQ6jdZW8eTgyKcf08NOBNc6Oli9ugjr2+cM4SvnmAP58JZ+KOXYom+W24pZ9lyNjC8NRA3bSFw==", + "version": "4.0.91", + "resolved": "https://registry.npmjs.org/geoip-country/-/geoip-country-4.0.91.tgz", + "integrity": "sha512-iYfqsWkYub3lVl8WXa9UAgAPC41J1UmlHW14LiIPjWD1D4nwuU6CFlrMHECs6S/4zAkEJH726SlCDsuWTHb1zA==", "requires": { "async": "^2.6.1", "colors": "^1.4.0", @@ -24187,12 +24257,6 @@ "react-is": "^16.7.0" } }, - "hosted-git-info": { - "version": "2.8.9", - "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.9.tgz", - "integrity": "sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==", - "dev": true - }, "hpack.js": { "version": "2.1.6", "resolved": "https://registry.npmjs.org/hpack.js/-/hpack.js-2.1.6.tgz", @@ -24253,36 +24317,36 @@ "dev": true }, "html-minifier-terser": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/html-minifier-terser/-/html-minifier-terser-5.1.1.tgz", - "integrity": "sha512-ZPr5MNObqnV/T9akshPKbVgyOqLmy+Bxo7juKCfTfnjNniTAMdy4hz21YQqoofMBJD2kdREaqPPdThoR78Tgxg==", + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/html-minifier-terser/-/html-minifier-terser-6.0.2.tgz", + "integrity": "sha512-AgYO3UGhMYQx2S/FBJT3EM0ZYcKmH6m9XL9c1v77BeK/tYJxGPxT1/AtsdUi4FcP8kZGmqqnItCcjFPcX9hk6A==", "dev": true, "requires": { - "camel-case": "^4.1.1", - "clean-css": "^4.2.3", - "commander": "^4.1.1", + "camel-case": "^4.1.2", + "clean-css": "^5.1.5", + "commander": "^8.1.0", "he": "^1.2.0", - "param-case": "^3.0.3", + "param-case": "^3.0.4", "relateurl": "^0.2.7", - "terser": "^4.6.3" + "terser": "^5.7.2" }, "dependencies": { "commander": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/commander/-/commander-4.1.1.tgz", - "integrity": "sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==", + "version": "8.3.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-8.3.0.tgz", + "integrity": "sha512-OkTL9umf+He2DZkUq8f8J9of7yL6RJKI24dVITBmNfZBmri9zYZQrKkuXiKhyfPSu8tUhnVBB1iKXevvnlR4Ww==", "dev": true } } }, "html-webpack-plugin": { - "version": "5.3.2", - "resolved": "https://registry.npmjs.org/html-webpack-plugin/-/html-webpack-plugin-5.3.2.tgz", - "integrity": "sha512-HvB33boVNCz2lTyBsSiMffsJ+m0YLIQ+pskblXgN9fnjS1BgEcuAfdInfXfGrkdXV406k9FiDi86eVCDBgJOyQ==", + "version": "5.4.0", + "resolved": "https://registry.npmjs.org/html-webpack-plugin/-/html-webpack-plugin-5.4.0.tgz", + "integrity": "sha512-cSUdckNOIqKc0nOrCJG7zkvzEIUcXjzEiVbKdEdIzW3BD5T4xPK6boV1mrTrPDZiL+aAr/j45eqbNL1akU2ZRA==", "dev": true, "requires": { - "@types/html-minifier-terser": "^5.0.0", - "html-minifier-terser": "^5.0.1", + "@types/html-minifier-terser": "^6.0.0", + "html-minifier-terser": "^6.0.2", "lodash": "^4.17.21", "pretty-error": "^3.0.4", "tapable": "^2.0.0" @@ -24707,19 +24771,10 @@ "integrity": "sha512-nsuwtxZfMX67Oryl9LCQ+upnC0Z0BgpwntpS89m1H/TLF0zNfzfLMV/9Wa/6MZsj0acpEjAO0KF1xT6ZdLl95w==", "dev": true }, - "is-ci": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-ci/-/is-ci-3.0.0.tgz", - "integrity": "sha512-kDXyttuLeslKAHYL/K28F2YkM3x5jvFPEw3yXbRptXydjD9rpLEz+C5K5iutY9ZiUu6AP41JdvRQwF4Iqs4ZCQ==", - "dev": true, - "requires": { - "ci-info": "^3.1.1" - } - }, "is-core-module": { - "version": "2.6.0", - "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.6.0.tgz", - "integrity": "sha512-wShG8vs60jKfPWpF2KZRaAtvt3a20OAn7+IJ6hLPECpSABLcKtFKTTI4ZtH5QcBruBHlq+WsdHWyz0BCZW7svQ==", + "version": "2.8.0", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.8.0.tgz", + "integrity": "sha512-vd15qHsaqrRL7dtH6QNuy0ndJmRDrS9HAM1CAiSifNUFv4x1a0CCVsj18hJ1mShxIG6T2i1sO78MkP56r0nYRw==", "dev": true, "requires": { "has": "^1.0.3" @@ -24771,9 +24826,9 @@ "dev": true }, "is-glob": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.1.tgz", - "integrity": "sha512-5G0tKtBTFImOqDnLB2hG6Bp2qcKEFduo4tZu9MT/H6NQv/ghhy30o55ufafxJ/LdH79LLs2Kfrn85TLKyA7BUg==", + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", + "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", "dev": true, "requires": { "is-extglob": "^2.1.1" @@ -24861,6 +24916,12 @@ "integrity": "sha512-AGOriNp96vNBd3HtU+RzFEc75FfR5ymiYv8E553I71SCeXBiMsVDUtdio1OEFvrPyLIQ9tVR5RxXIFe5PUFjMg==", "dev": true }, + "is-shared-array-buffer": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.1.tgz", + "integrity": "sha512-IU0NmyknYZN0rChcKhRO1X8LYz5Isj/Fsqh8NJOSf+N/hCOTwy29F32Ik7a+QszE63IdvmwdTPDd6cZ5pg4cwA==", + "dev": true + }, "is-stream": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", @@ -24897,6 +24958,15 @@ "integrity": "sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==", "dev": true }, + "is-weakref": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-weakref/-/is-weakref-1.0.1.tgz", + "integrity": "sha512-b2jKc2pQZjaeFYWEf7ScFj+Be1I+PXmlu572Q8coTXZ+LD/QQZ7ShPMst8h16riVgyXTQwUsFEl74mDvc/3MHQ==", + "dev": true, + "requires": { + "call-bind": "^1.0.0" + } + }, "is-wsl": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-2.2.0.tgz", @@ -24954,9 +25024,9 @@ } }, "istanbul-lib-source-maps": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/istanbul-lib-source-maps/-/istanbul-lib-source-maps-4.0.0.tgz", - "integrity": "sha512-c16LpFRkR8vQXyHZ5nLpY35JZtzj1PQY1iZmesUbf1FZHbIupcWfjgOXBY9YHkLEQ6puz1u4Dgj6qmU/DisrZg==", + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/istanbul-lib-source-maps/-/istanbul-lib-source-maps-4.0.1.tgz", + "integrity": "sha512-n3s8EwkdFIJCG3BPKBYvskgXGoy88ARzvegkitk60NxRdwltLOTaH7CUiMRXvwYorl0Q712iEjcWB+fK/MrWVw==", "dev": true, "requires": { "debug": "^4.1.1", @@ -24973,9 +25043,9 @@ } }, "istanbul-reports": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-3.0.3.tgz", - "integrity": "sha512-0i77ZFLsb9U3DHi22WzmIngVzfoyxxbQcZRqlF3KoKmCJGq9nhFHoGi8FqBztN2rE8w6hURnZghetn0xpkVb6A==", + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-3.0.5.tgz", + "integrity": "sha512-5+19PlhnGabNWB7kOFnuxT8H3T/iIyQzIbQMxXsURmmvKg86P2sbkrGOT77VnHw0Qr0gc2XzRaRfMZYYbSQCJQ==", "dev": true, "requires": { "html-escaper": "^2.0.0", @@ -24983,20 +25053,20 @@ } }, "jest": { - "version": "27.2.5", - "resolved": "https://registry.npmjs.org/jest/-/jest-27.2.5.tgz", - "integrity": "sha512-vDMzXcpQN4Ycaqu+vO7LX8pZwNNoKMhc+gSp6q1D8S6ftRk8gNW8cni3YFxknP95jxzQo23Lul0BI2FrWgnwYQ==", + "version": "27.3.1", + "resolved": "https://registry.npmjs.org/jest/-/jest-27.3.1.tgz", + "integrity": "sha512-U2AX0AgQGd5EzMsiZpYt8HyZ+nSVIh5ujQ9CPp9EQZJMjXIiSZpJNweZl0swatKRoqHWgGKM3zaSwm4Zaz87ng==", "dev": true, "requires": { - "@jest/core": "^27.2.5", + "@jest/core": "^27.3.1", "import-local": "^3.0.2", - "jest-cli": "^27.2.5" + "jest-cli": "^27.3.1" } }, "jest-changed-files": { - "version": "27.2.5", - "resolved": "https://registry.npmjs.org/jest-changed-files/-/jest-changed-files-27.2.5.tgz", - "integrity": "sha512-jfnNJzF89csUKRPKJ4MwZ1SH27wTmX2xiAIHUHrsb/OYd9Jbo4/SXxJ17/nnx6RIifpthk3Y+LEeOk+/dDeGdw==", + "version": "27.3.0", + "resolved": "https://registry.npmjs.org/jest-changed-files/-/jest-changed-files-27.3.0.tgz", + "integrity": "sha512-9DJs9garMHv4RhylUMZgbdCJ3+jHSkpL9aaVKp13xtXAD80qLTLrqcDZL1PHA9dYA0bCI86Nv2BhkLpLhrBcPg==", "dev": true, "requires": { "@jest/types": "^27.2.5", @@ -25005,48 +25075,48 @@ } }, "jest-circus": { - "version": "27.2.5", - "resolved": "https://registry.npmjs.org/jest-circus/-/jest-circus-27.2.5.tgz", - "integrity": "sha512-eyL9IcrAxm3Saq3rmajFCwpaxaRMGJ1KJs+7hlTDinXpJmeR3P02bheM3CYohE7UfwOBmrFMJHjgo/WPcLTM+Q==", + "version": "27.3.1", + "resolved": "https://registry.npmjs.org/jest-circus/-/jest-circus-27.3.1.tgz", + "integrity": "sha512-v1dsM9II6gvXokgqq6Yh2jHCpfg7ZqV4jWY66u7npz24JnhP3NHxI0sKT7+ZMQ7IrOWHYAaeEllOySbDbWsiXw==", "dev": true, "requires": { - "@jest/environment": "^27.2.5", - "@jest/test-result": "^27.2.5", + "@jest/environment": "^27.3.1", + "@jest/test-result": "^27.3.1", "@jest/types": "^27.2.5", "@types/node": "*", "chalk": "^4.0.0", "co": "^4.6.0", "dedent": "^0.7.0", - "expect": "^27.2.5", + "expect": "^27.3.1", "is-generator-fn": "^2.0.0", - "jest-each": "^27.2.5", - "jest-matcher-utils": "^27.2.5", - "jest-message-util": "^27.2.5", - "jest-runtime": "^27.2.5", - "jest-snapshot": "^27.2.5", - "jest-util": "^27.2.5", - "pretty-format": "^27.2.5", + "jest-each": "^27.3.1", + "jest-matcher-utils": "^27.3.1", + "jest-message-util": "^27.3.1", + "jest-runtime": "^27.3.1", + "jest-snapshot": "^27.3.1", + "jest-util": "^27.3.1", + "pretty-format": "^27.3.1", "slash": "^3.0.0", "stack-utils": "^2.0.3", "throat": "^6.0.1" } }, "jest-cli": { - "version": "27.2.5", - "resolved": "https://registry.npmjs.org/jest-cli/-/jest-cli-27.2.5.tgz", - "integrity": "sha512-XzfcOXi5WQrXqFYsDxq5RDOKY4FNIgBgvgf3ZBz4e/j5/aWep5KnsAYH5OFPMdX/TP/LFsYQMRH7kzJUMh6JKg==", + "version": "27.3.1", + "resolved": "https://registry.npmjs.org/jest-cli/-/jest-cli-27.3.1.tgz", + "integrity": "sha512-WHnCqpfK+6EvT62me6WVs8NhtbjAS4/6vZJnk7/2+oOr50cwAzG4Wxt6RXX0hu6m1169ZGMlhYYUNeKBXCph/Q==", "dev": true, "requires": { - "@jest/core": "^27.2.5", - "@jest/test-result": "^27.2.5", + "@jest/core": "^27.3.1", + "@jest/test-result": "^27.3.1", "@jest/types": "^27.2.5", "chalk": "^4.0.0", "exit": "^0.1.2", "graceful-fs": "^4.2.4", "import-local": "^3.0.2", - "jest-config": "^27.2.5", - "jest-util": "^27.2.5", - "jest-validate": "^27.2.5", + "jest-config": "^27.3.1", + "jest-util": "^27.3.1", + "jest-validate": "^27.3.1", "prompts": "^2.0.1", "yargs": "^16.2.0" }, @@ -25058,17 +25128,17 @@ "dev": true }, "jest-validate": { - "version": "27.2.5", - "resolved": "https://registry.npmjs.org/jest-validate/-/jest-validate-27.2.5.tgz", - "integrity": "sha512-XgYtjS89nhVe+UfkbLgcm+GgXKWgL80t9nTcNeejyO3t0Sj/yHE8BtIJqjZu9NXQksYbGImoQRXmQ1gP+Guffw==", + "version": "27.3.1", + "resolved": "https://registry.npmjs.org/jest-validate/-/jest-validate-27.3.1.tgz", + "integrity": "sha512-3H0XCHDFLA9uDII67Bwi1Vy7AqwA5HqEEjyy934lgVhtJ3eisw6ShOF1MDmRPspyikef5MyExvIm0/TuLzZ86Q==", "dev": true, "requires": { "@jest/types": "^27.2.5", "camelcase": "^6.2.0", "chalk": "^4.0.0", - "jest-get-type": "^27.0.6", + "jest-get-type": "^27.3.1", "leven": "^3.1.0", - "pretty-format": "^27.2.5" + "pretty-format": "^27.3.1" } }, "yargs": { @@ -25089,32 +25159,32 @@ } }, "jest-config": { - "version": "27.2.5", - "resolved": "https://registry.npmjs.org/jest-config/-/jest-config-27.2.5.tgz", - "integrity": "sha512-QdENtn9b5rIIYGlbDNEcgY9LDL5kcokJnXrp7x8AGjHob/XFqw1Z6p+gjfna2sUulQsQ3ce2Fvntnv+7fKYDhQ==", + "version": "27.3.1", + "resolved": "https://registry.npmjs.org/jest-config/-/jest-config-27.3.1.tgz", + "integrity": "sha512-KY8xOIbIACZ/vdYCKSopL44I0xboxC751IX+DXL2+Wx6DKNycyEfV3rryC3BPm5Uq/BBqDoMrKuqLEUNJmMKKg==", "dev": true, "requires": { "@babel/core": "^7.1.0", - "@jest/test-sequencer": "^27.2.5", + "@jest/test-sequencer": "^27.3.1", "@jest/types": "^27.2.5", - "babel-jest": "^27.2.5", + "babel-jest": "^27.3.1", "chalk": "^4.0.0", + "ci-info": "^3.2.0", "deepmerge": "^4.2.2", "glob": "^7.1.1", "graceful-fs": "^4.2.4", - "is-ci": "^3.0.0", - "jest-circus": "^27.2.5", - "jest-environment-jsdom": "^27.2.5", - "jest-environment-node": "^27.2.5", - "jest-get-type": "^27.0.6", - "jest-jasmine2": "^27.2.5", + "jest-circus": "^27.3.1", + "jest-environment-jsdom": "^27.3.1", + "jest-environment-node": "^27.3.1", + "jest-get-type": "^27.3.1", + "jest-jasmine2": "^27.3.1", "jest-regex-util": "^27.0.6", - "jest-resolve": "^27.2.5", - "jest-runner": "^27.2.5", - "jest-util": "^27.2.5", - "jest-validate": "^27.2.5", + "jest-resolve": "^27.3.1", + "jest-runner": "^27.3.1", + "jest-util": "^27.3.1", + "jest-validate": "^27.3.1", "micromatch": "^4.0.4", - "pretty-format": "^27.2.5" + "pretty-format": "^27.3.1" }, "dependencies": { "camelcase": { @@ -25124,17 +25194,17 @@ "dev": true }, "jest-validate": { - "version": "27.2.5", - "resolved": "https://registry.npmjs.org/jest-validate/-/jest-validate-27.2.5.tgz", - "integrity": "sha512-XgYtjS89nhVe+UfkbLgcm+GgXKWgL80t9nTcNeejyO3t0Sj/yHE8BtIJqjZu9NXQksYbGImoQRXmQ1gP+Guffw==", + "version": "27.3.1", + "resolved": "https://registry.npmjs.org/jest-validate/-/jest-validate-27.3.1.tgz", + "integrity": "sha512-3H0XCHDFLA9uDII67Bwi1Vy7AqwA5HqEEjyy934lgVhtJ3eisw6ShOF1MDmRPspyikef5MyExvIm0/TuLzZ86Q==", "dev": true, "requires": { "@jest/types": "^27.2.5", "camelcase": "^6.2.0", "chalk": "^4.0.0", - "jest-get-type": "^27.0.6", + "jest-get-type": "^27.3.1", "leven": "^3.1.0", - "pretty-format": "^27.2.5" + "pretty-format": "^27.3.1" } }, "micromatch": { @@ -25150,15 +25220,15 @@ } }, "jest-diff": { - "version": "27.2.5", - "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-27.2.5.tgz", - "integrity": "sha512-7gfwwyYkeslOOVQY4tVq5TaQa92mWfC9COsVYMNVYyJTOYAqbIkoD3twi5A+h+tAPtAelRxkqY6/xu+jwTr0dA==", + "version": "27.3.1", + "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-27.3.1.tgz", + "integrity": "sha512-PCeuAH4AWUo2O5+ksW4pL9v5xJAcIKPUPfIhZBcG1RKv/0+dvaWTQK1Nrau8d67dp65fOqbeMdoil+6PedyEPQ==", "dev": true, "requires": { "chalk": "^4.0.0", "diff-sequences": "^27.0.6", - "jest-get-type": "^27.0.6", - "pretty-format": "^27.2.5" + "jest-get-type": "^27.3.1", + "pretty-format": "^27.3.1" } }, "jest-docblock": { @@ -25171,57 +25241,57 @@ } }, "jest-each": { - "version": "27.2.5", - "resolved": "https://registry.npmjs.org/jest-each/-/jest-each-27.2.5.tgz", - "integrity": "sha512-HUPWIbJT0bXarRwKu/m7lYzqxR4GM5EhKOsu0z3t0SKtbFN6skQhpAUADM4qFShBXb9zoOuag5lcrR1x/WM+Ag==", + "version": "27.3.1", + "resolved": "https://registry.npmjs.org/jest-each/-/jest-each-27.3.1.tgz", + "integrity": "sha512-E4SwfzKJWYcvOYCjOxhZcxwL+AY0uFMvdCOwvzgutJiaiodFjkxQQDxHm8FQBeTqDnSmKsQWn7ldMRzTn2zJaQ==", "dev": true, "requires": { "@jest/types": "^27.2.5", "chalk": "^4.0.0", - "jest-get-type": "^27.0.6", - "jest-util": "^27.2.5", - "pretty-format": "^27.2.5" + "jest-get-type": "^27.3.1", + "jest-util": "^27.3.1", + "pretty-format": "^27.3.1" } }, "jest-environment-jsdom": { - "version": "27.2.5", - "resolved": "https://registry.npmjs.org/jest-environment-jsdom/-/jest-environment-jsdom-27.2.5.tgz", - "integrity": "sha512-QtRpOh/RQKuXniaWcoFE2ElwP6tQcyxHu0hlk32880g0KczdonCs5P1sk5+weu/OVzh5V4Bt1rXuQthI01mBLg==", + "version": "27.3.1", + "resolved": "https://registry.npmjs.org/jest-environment-jsdom/-/jest-environment-jsdom-27.3.1.tgz", + "integrity": "sha512-3MOy8qMzIkQlfb3W1TfrD7uZHj+xx8Olix5vMENkj5djPmRqndMaXtpnaZkxmxM+Qc3lo+yVzJjzuXbCcZjAlg==", "dev": true, "requires": { - "@jest/environment": "^27.2.5", - "@jest/fake-timers": "^27.2.5", + "@jest/environment": "^27.3.1", + "@jest/fake-timers": "^27.3.1", "@jest/types": "^27.2.5", "@types/node": "*", - "jest-mock": "^27.2.5", - "jest-util": "^27.2.5", + "jest-mock": "^27.3.0", + "jest-util": "^27.3.1", "jsdom": "^16.6.0" } }, "jest-environment-node": { - "version": "27.2.5", - "resolved": "https://registry.npmjs.org/jest-environment-node/-/jest-environment-node-27.2.5.tgz", - "integrity": "sha512-0o1LT4grm7iwrS8fIoLtwJxb/hoa3GsH7pP10P02Jpj7Mi4BXy65u46m89vEM2WfD1uFJQ2+dfDiWZNA2e6bJg==", + "version": "27.3.1", + "resolved": "https://registry.npmjs.org/jest-environment-node/-/jest-environment-node-27.3.1.tgz", + "integrity": "sha512-T89F/FgkE8waqrTSA7/ydMkcc52uYPgZZ6q8OaZgyiZkJb5QNNCF6oPZjH9IfPFfcc9uBWh1574N0kY0pSvTXw==", "dev": true, "requires": { - "@jest/environment": "^27.2.5", - "@jest/fake-timers": "^27.2.5", + "@jest/environment": "^27.3.1", + "@jest/fake-timers": "^27.3.1", "@jest/types": "^27.2.5", "@types/node": "*", - "jest-mock": "^27.2.5", - "jest-util": "^27.2.5" + "jest-mock": "^27.3.0", + "jest-util": "^27.3.1" } }, "jest-get-type": { - "version": "27.0.6", - "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-27.0.6.tgz", - "integrity": "sha512-XTkK5exIeUbbveehcSR8w0bhH+c0yloW/Wpl+9vZrjzztCPWrxhHwkIFpZzCt71oRBsgxmuUfxEqOYoZI2macg==", + "version": "27.3.1", + "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-27.3.1.tgz", + "integrity": "sha512-+Ilqi8hgHSAdhlQ3s12CAVNd8H96ZkQBfYoXmArzZnOfAtVAJEiPDBirjByEblvG/4LPJmkL+nBqPO3A1YJAEg==", "dev": true }, "jest-haste-map": { - "version": "27.2.5", - "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-27.2.5.tgz", - "integrity": "sha512-pzO+Gw2WLponaSi0ilpzYBE0kuVJstoXBX8YWyUebR8VaXuX4tzzn0Zp23c/WaETo7XYTGv2e8KdnpiskAFMhQ==", + "version": "27.3.1", + "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-27.3.1.tgz", + "integrity": "sha512-lYfNZIzwPccDJZIyk9Iz5iQMM/MH56NIIcGj7AFU1YyA4ewWFBl8z+YPJuSCRML/ee2cCt2y3W4K3VXPT6Nhzg==", "dev": true, "requires": { "@jest/types": "^27.2.5", @@ -25233,8 +25303,8 @@ "graceful-fs": "^4.2.4", "jest-regex-util": "^27.0.6", "jest-serializer": "^27.0.6", - "jest-util": "^27.2.5", - "jest-worker": "^27.2.5", + "jest-util": "^27.3.1", + "jest-worker": "^27.3.1", "micromatch": "^4.0.4", "walker": "^1.0.7" }, @@ -25252,57 +25322,57 @@ } }, "jest-jasmine2": { - "version": "27.2.5", - "resolved": "https://registry.npmjs.org/jest-jasmine2/-/jest-jasmine2-27.2.5.tgz", - "integrity": "sha512-hdxY9Cm/CjLqu2tXeAoQHPgA4vcqlweVXYOg1+S9FeFdznB9Rti+eEBKDDkmOy9iqr4Xfbq95OkC4NFbXXPCAQ==", + "version": "27.3.1", + "resolved": "https://registry.npmjs.org/jest-jasmine2/-/jest-jasmine2-27.3.1.tgz", + "integrity": "sha512-WK11ZUetDQaC09w4/j7o4FZDUIp+4iYWH/Lik34Pv7ukL+DuXFGdnmmi7dT58J2ZYKFB5r13GyE0z3NPeyJmsg==", "dev": true, "requires": { "@babel/traverse": "^7.1.0", - "@jest/environment": "^27.2.5", + "@jest/environment": "^27.3.1", "@jest/source-map": "^27.0.6", - "@jest/test-result": "^27.2.5", + "@jest/test-result": "^27.3.1", "@jest/types": "^27.2.5", "@types/node": "*", "chalk": "^4.0.0", "co": "^4.6.0", - "expect": "^27.2.5", + "expect": "^27.3.1", "is-generator-fn": "^2.0.0", - "jest-each": "^27.2.5", - "jest-matcher-utils": "^27.2.5", - "jest-message-util": "^27.2.5", - "jest-runtime": "^27.2.5", - "jest-snapshot": "^27.2.5", - "jest-util": "^27.2.5", - "pretty-format": "^27.2.5", + "jest-each": "^27.3.1", + "jest-matcher-utils": "^27.3.1", + "jest-message-util": "^27.3.1", + "jest-runtime": "^27.3.1", + "jest-snapshot": "^27.3.1", + "jest-util": "^27.3.1", + "pretty-format": "^27.3.1", "throat": "^6.0.1" } }, "jest-leak-detector": { - "version": "27.2.5", - "resolved": "https://registry.npmjs.org/jest-leak-detector/-/jest-leak-detector-27.2.5.tgz", - "integrity": "sha512-HYsi3GUR72bYhOGB5C5saF9sPdxGzSjX7soSQS+BqDRysc7sPeBwPbhbuT8DnOpijnKjgwWQ8JqvbmReYnt3aQ==", + "version": "27.3.1", + "resolved": "https://registry.npmjs.org/jest-leak-detector/-/jest-leak-detector-27.3.1.tgz", + "integrity": "sha512-78QstU9tXbaHzwlRlKmTpjP9k4Pvre5l0r8Spo4SbFFVy/4Abg9I6ZjHwjg2QyKEAMg020XcjP+UgLZIY50yEg==", "dev": true, "requires": { - "jest-get-type": "^27.0.6", - "pretty-format": "^27.2.5" + "jest-get-type": "^27.3.1", + "pretty-format": "^27.3.1" } }, "jest-matcher-utils": { - "version": "27.2.5", - "resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-27.2.5.tgz", - "integrity": "sha512-qNR/kh6bz0Dyv3m68Ck2g1fLW5KlSOUNcFQh87VXHZwWc/gY6XwnKofx76Qytz3x5LDWT09/2+yXndTkaG4aWg==", + "version": "27.3.1", + "resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-27.3.1.tgz", + "integrity": "sha512-hX8N7zXS4k+8bC1Aj0OWpGb7D3gIXxYvPNK1inP5xvE4ztbz3rc4AkI6jGVaerepBnfWB17FL5lWFJT3s7qo8w==", "dev": true, "requires": { "chalk": "^4.0.0", - "jest-diff": "^27.2.5", - "jest-get-type": "^27.0.6", - "pretty-format": "^27.2.5" + "jest-diff": "^27.3.1", + "jest-get-type": "^27.3.1", + "pretty-format": "^27.3.1" } }, "jest-message-util": { - "version": "27.2.5", - "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-27.2.5.tgz", - "integrity": "sha512-ggXSLoPfIYcbmZ8glgEJZ8b+e0Msw/iddRmgkoO7lDAr9SmI65IIfv7VnvTnV4FGnIIUIjzM+fHRHO5RBvyAbQ==", + "version": "27.3.1", + "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-27.3.1.tgz", + "integrity": "sha512-bh3JEmxsTZ/9rTm0jQrPElbY2+y48Rw2t47uMfByNyUVR+OfPh4anuyKsGqsNkXk/TI4JbLRZx+7p7Hdt6q1yg==", "dev": true, "requires": { "@babel/code-frame": "^7.12.13", @@ -25311,7 +25381,7 @@ "chalk": "^4.0.0", "graceful-fs": "^4.2.4", "micromatch": "^4.0.4", - "pretty-format": "^27.2.5", + "pretty-format": "^27.3.1", "slash": "^3.0.0", "stack-utils": "^2.0.3" }, @@ -25329,9 +25399,9 @@ } }, "jest-mock": { - "version": "27.2.5", - "resolved": "https://registry.npmjs.org/jest-mock/-/jest-mock-27.2.5.tgz", - "integrity": "sha512-HiMB3LqE9RzmeMzZARi2Bz3NoymxyP0gCid4y42ca1djffNtYFKgI220aC1VP1mUZ8rbpqZbHZOJ15093bZV/Q==", + "version": "27.3.0", + "resolved": "https://registry.npmjs.org/jest-mock/-/jest-mock-27.3.0.tgz", + "integrity": "sha512-ziZiLk0elZOQjD08bLkegBzv5hCABu/c8Ytx45nJKkysQwGaonvmTxwjLqEA4qGdasq9o2I8/HtdGMNnVsMTGw==", "dev": true, "requires": { "@jest/types": "^27.2.5", @@ -25352,20 +25422,20 @@ "dev": true }, "jest-resolve": { - "version": "27.2.5", - "resolved": "https://registry.npmjs.org/jest-resolve/-/jest-resolve-27.2.5.tgz", - "integrity": "sha512-q5irwS3oS73SKy3+FM/HL2T7WJftrk9BRzrXF92f7net5HMlS7lJMg/ZwxLB4YohKqjSsdksEw7n/jvMxV7EKg==", + "version": "27.3.1", + "resolved": "https://registry.npmjs.org/jest-resolve/-/jest-resolve-27.3.1.tgz", + "integrity": "sha512-Dfzt25CFSPo3Y3GCbxynRBZzxq9AdyNN+x/v2IqYx6KVT5Z6me2Z/PsSGFSv3cOSUZqJ9pHxilao/I/m9FouLw==", "dev": true, "requires": { "@jest/types": "^27.2.5", "chalk": "^4.0.0", - "escalade": "^3.1.1", "graceful-fs": "^4.2.4", - "jest-haste-map": "^27.2.5", + "jest-haste-map": "^27.3.1", "jest-pnp-resolver": "^1.2.2", - "jest-util": "^27.2.5", - "jest-validate": "^27.2.5", + "jest-util": "^27.3.1", + "jest-validate": "^27.3.1", "resolve": "^1.20.0", + "resolve.exports": "^1.1.0", "slash": "^3.0.0" }, "dependencies": { @@ -25376,42 +25446,42 @@ "dev": true }, "jest-validate": { - "version": "27.2.5", - "resolved": "https://registry.npmjs.org/jest-validate/-/jest-validate-27.2.5.tgz", - "integrity": "sha512-XgYtjS89nhVe+UfkbLgcm+GgXKWgL80t9nTcNeejyO3t0Sj/yHE8BtIJqjZu9NXQksYbGImoQRXmQ1gP+Guffw==", + "version": "27.3.1", + "resolved": "https://registry.npmjs.org/jest-validate/-/jest-validate-27.3.1.tgz", + "integrity": "sha512-3H0XCHDFLA9uDII67Bwi1Vy7AqwA5HqEEjyy934lgVhtJ3eisw6ShOF1MDmRPspyikef5MyExvIm0/TuLzZ86Q==", "dev": true, "requires": { "@jest/types": "^27.2.5", "camelcase": "^6.2.0", "chalk": "^4.0.0", - "jest-get-type": "^27.0.6", + "jest-get-type": "^27.3.1", "leven": "^3.1.0", - "pretty-format": "^27.2.5" + "pretty-format": "^27.3.1" } } } }, "jest-resolve-dependencies": { - "version": "27.2.5", - "resolved": "https://registry.npmjs.org/jest-resolve-dependencies/-/jest-resolve-dependencies-27.2.5.tgz", - "integrity": "sha512-BSjefped31bcvvCh++/pN9ueqqN1n0+p8/58yScuWfklLm2tbPbS9d251vJhAy0ZI2pL/0IaGhOTJrs9Y4FJlg==", + "version": "27.3.1", + "resolved": "https://registry.npmjs.org/jest-resolve-dependencies/-/jest-resolve-dependencies-27.3.1.tgz", + "integrity": "sha512-X7iLzY8pCiYOnvYo2YrK3P9oSE8/3N2f4pUZMJ8IUcZnT81vlSonya1KTO9ZfKGuC+svE6FHK/XOb8SsoRUV1A==", "dev": true, "requires": { "@jest/types": "^27.2.5", "jest-regex-util": "^27.0.6", - "jest-snapshot": "^27.2.5" + "jest-snapshot": "^27.3.1" } }, "jest-runner": { - "version": "27.2.5", - "resolved": "https://registry.npmjs.org/jest-runner/-/jest-runner-27.2.5.tgz", - "integrity": "sha512-n41vw9RLg5TKAnEeJK9d6pGOsBOpwE89XBniK+AD1k26oIIy3V7ogM1scbDjSheji8MUPC9pNgCrZ/FHLVDNgg==", + "version": "27.3.1", + "resolved": "https://registry.npmjs.org/jest-runner/-/jest-runner-27.3.1.tgz", + "integrity": "sha512-r4W6kBn6sPr3TBwQNmqE94mPlYVn7fLBseeJfo4E2uCTmAyDFm2O5DYAQAFP7Q3YfiA/bMwg8TVsciP7k0xOww==", "dev": true, "requires": { - "@jest/console": "^27.2.5", - "@jest/environment": "^27.2.5", - "@jest/test-result": "^27.2.5", - "@jest/transform": "^27.2.5", + "@jest/console": "^27.3.1", + "@jest/environment": "^27.3.1", + "@jest/test-result": "^27.3.1", + "@jest/transform": "^27.3.1", "@jest/types": "^27.2.5", "@types/node": "*", "chalk": "^4.0.0", @@ -25419,32 +25489,31 @@ "exit": "^0.1.2", "graceful-fs": "^4.2.4", "jest-docblock": "^27.0.6", - "jest-environment-jsdom": "^27.2.5", - "jest-environment-node": "^27.2.5", - "jest-haste-map": "^27.2.5", - "jest-leak-detector": "^27.2.5", - "jest-message-util": "^27.2.5", - "jest-resolve": "^27.2.5", - "jest-runtime": "^27.2.5", - "jest-util": "^27.2.5", - "jest-worker": "^27.2.5", + "jest-environment-jsdom": "^27.3.1", + "jest-environment-node": "^27.3.1", + "jest-haste-map": "^27.3.1", + "jest-leak-detector": "^27.3.1", + "jest-message-util": "^27.3.1", + "jest-resolve": "^27.3.1", + "jest-runtime": "^27.3.1", + "jest-util": "^27.3.1", + "jest-worker": "^27.3.1", "source-map-support": "^0.5.6", "throat": "^6.0.1" } }, "jest-runtime": { - "version": "27.2.5", - "resolved": "https://registry.npmjs.org/jest-runtime/-/jest-runtime-27.2.5.tgz", - "integrity": "sha512-N0WRZ3QszKyZ3Dm27HTBbBuestsSd3Ud5ooVho47XZJ8aSKO/X1Ag8M1dNx9XzfGVRNdB/xCA3lz8MJwIzPLLA==", + "version": "27.3.1", + "resolved": "https://registry.npmjs.org/jest-runtime/-/jest-runtime-27.3.1.tgz", + "integrity": "sha512-qtO6VxPbS8umqhEDpjA4pqTkKQ1Hy4ZSi9mDVeE9Za7LKBo2LdW2jmT+Iod3XFaJqINikZQsn2wEi0j9wPRbLg==", "dev": true, "requires": { - "@jest/console": "^27.2.5", - "@jest/environment": "^27.2.5", - "@jest/fake-timers": "^27.2.5", - "@jest/globals": "^27.2.5", + "@jest/console": "^27.3.1", + "@jest/environment": "^27.3.1", + "@jest/globals": "^27.3.1", "@jest/source-map": "^27.0.6", - "@jest/test-result": "^27.2.5", - "@jest/transform": "^27.2.5", + "@jest/test-result": "^27.3.1", + "@jest/transform": "^27.3.1", "@jest/types": "^27.2.5", "@types/yargs": "^16.0.0", "chalk": "^4.0.0", @@ -25454,14 +25523,14 @@ "exit": "^0.1.2", "glob": "^7.1.3", "graceful-fs": "^4.2.4", - "jest-haste-map": "^27.2.5", - "jest-message-util": "^27.2.5", - "jest-mock": "^27.2.5", + "jest-haste-map": "^27.3.1", + "jest-message-util": "^27.3.1", + "jest-mock": "^27.3.0", "jest-regex-util": "^27.0.6", - "jest-resolve": "^27.2.5", - "jest-snapshot": "^27.2.5", - "jest-util": "^27.2.5", - "jest-validate": "^27.2.5", + "jest-resolve": "^27.3.1", + "jest-snapshot": "^27.3.1", + "jest-util": "^27.3.1", + "jest-validate": "^27.3.1", "slash": "^3.0.0", "strip-bom": "^4.0.0", "yargs": "^16.2.0" @@ -25474,17 +25543,17 @@ "dev": true }, "jest-validate": { - "version": "27.2.5", - "resolved": "https://registry.npmjs.org/jest-validate/-/jest-validate-27.2.5.tgz", - "integrity": "sha512-XgYtjS89nhVe+UfkbLgcm+GgXKWgL80t9nTcNeejyO3t0Sj/yHE8BtIJqjZu9NXQksYbGImoQRXmQ1gP+Guffw==", + "version": "27.3.1", + "resolved": "https://registry.npmjs.org/jest-validate/-/jest-validate-27.3.1.tgz", + "integrity": "sha512-3H0XCHDFLA9uDII67Bwi1Vy7AqwA5HqEEjyy934lgVhtJ3eisw6ShOF1MDmRPspyikef5MyExvIm0/TuLzZ86Q==", "dev": true, "requires": { "@jest/types": "^27.2.5", "camelcase": "^6.2.0", "chalk": "^4.0.0", - "jest-get-type": "^27.0.6", + "jest-get-type": "^27.3.1", "leven": "^3.1.0", - "pretty-format": "^27.2.5" + "pretty-format": "^27.3.1" } }, "yargs": { @@ -25515,9 +25584,9 @@ } }, "jest-snapshot": { - "version": "27.2.5", - "resolved": "https://registry.npmjs.org/jest-snapshot/-/jest-snapshot-27.2.5.tgz", - "integrity": "sha512-2/Jkn+VN6Abwz0llBltZaiJMnL8b1j5Bp/gRIxe9YR3FCEh9qp0TXVV0dcpTGZ8AcJV1SZGQkczewkI9LP5yGw==", + "version": "27.3.1", + "resolved": "https://registry.npmjs.org/jest-snapshot/-/jest-snapshot-27.3.1.tgz", + "integrity": "sha512-APZyBvSgQgOT0XumwfFu7X3G5elj6TGhCBLbBdn3R1IzYustPGPE38F51dBWMQ8hRXa9je0vAdeVDtqHLvB6lg==", "dev": true, "requires": { "@babel/core": "^7.7.2", @@ -25526,23 +25595,23 @@ "@babel/plugin-syntax-typescript": "^7.7.2", "@babel/traverse": "^7.7.2", "@babel/types": "^7.0.0", - "@jest/transform": "^27.2.5", + "@jest/transform": "^27.3.1", "@jest/types": "^27.2.5", "@types/babel__traverse": "^7.0.4", "@types/prettier": "^2.1.5", "babel-preset-current-node-syntax": "^1.0.0", "chalk": "^4.0.0", - "expect": "^27.2.5", + "expect": "^27.3.1", "graceful-fs": "^4.2.4", - "jest-diff": "^27.2.5", - "jest-get-type": "^27.0.6", - "jest-haste-map": "^27.2.5", - "jest-matcher-utils": "^27.2.5", - "jest-message-util": "^27.2.5", - "jest-resolve": "^27.2.5", - "jest-util": "^27.2.5", + "jest-diff": "^27.3.1", + "jest-get-type": "^27.3.1", + "jest-haste-map": "^27.3.1", + "jest-matcher-utils": "^27.3.1", + "jest-message-util": "^27.3.1", + "jest-resolve": "^27.3.1", + "jest-util": "^27.3.1", "natural-compare": "^1.4.0", - "pretty-format": "^27.2.5", + "pretty-format": "^27.3.1", "semver": "^7.3.2" }, "dependencies": { @@ -25558,16 +25627,16 @@ } }, "jest-util": { - "version": "27.2.5", - "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-27.2.5.tgz", - "integrity": "sha512-QRhDC6XxISntMzFRd/OQ6TGsjbzA5ONO0tlAj2ElHs155x1aEr0rkYJBEysG6H/gZVH3oGFzCdAB/GA8leh8NQ==", + "version": "27.3.1", + "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-27.3.1.tgz", + "integrity": "sha512-8fg+ifEH3GDryLQf/eKZck1DEs2YuVPBCMOaHQxVVLmQwl/CDhWzrvChTX4efLZxGrw+AA0mSXv78cyytBt/uw==", "dev": true, "requires": { "@jest/types": "^27.2.5", "@types/node": "*", "chalk": "^4.0.0", + "ci-info": "^3.2.0", "graceful-fs": "^4.2.4", - "is-ci": "^3.0.0", "picomatch": "^2.2.3" } }, @@ -25640,24 +25709,24 @@ } }, "jest-watcher": { - "version": "27.2.5", - "resolved": "https://registry.npmjs.org/jest-watcher/-/jest-watcher-27.2.5.tgz", - "integrity": "sha512-umV4qGozg2Dn6DTTtqAh9puPw+DGLK9AQas7+mWjiK8t0fWMpxKg8ZXReZw7L4C88DqorsGUiDgwHNZ+jkVrkQ==", + "version": "27.3.1", + "resolved": "https://registry.npmjs.org/jest-watcher/-/jest-watcher-27.3.1.tgz", + "integrity": "sha512-9/xbV6chABsGHWh9yPaAGYVVKurWoP3ZMCv6h+O1v9/+pkOroigs6WzZ0e9gLP/njokUwM7yQhr01LKJVMkaZA==", "dev": true, "requires": { - "@jest/test-result": "^27.2.5", + "@jest/test-result": "^27.3.1", "@jest/types": "^27.2.5", "@types/node": "*", "ansi-escapes": "^4.2.1", "chalk": "^4.0.0", - "jest-util": "^27.2.5", + "jest-util": "^27.3.1", "string-length": "^4.0.1" } }, "jest-worker": { - "version": "27.2.5", - "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-27.2.5.tgz", - "integrity": "sha512-HTjEPZtcNKZ4LnhSp02NEH4vE+5OpJ0EsOWYvGQpHgUMLngydESAAMH5Wd/asPf29+XUDQZszxpLg1BkIIA2aw==", + "version": "27.3.1", + "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-27.3.1.tgz", + "integrity": "sha512-ks3WCzsiZaOPJl/oMsDjaf0TRiSv7ctNgs0FqRr2nARsovz6AWWy4oLElwcquGSz692DzgZQrCLScPNs5YlC4g==", "dev": true, "requires": { "@types/node": "*", @@ -25959,42 +26028,6 @@ "uc.micro": "^1.0.1" } }, - "load-json-file": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-4.0.0.tgz", - "integrity": "sha1-L19Fq5HjMhYjT9U62rZo607AmTs=", - "dev": true, - "requires": { - "graceful-fs": "^4.1.2", - "parse-json": "^4.0.0", - "pify": "^3.0.0", - "strip-bom": "^3.0.0" - }, - "dependencies": { - "parse-json": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-4.0.0.tgz", - "integrity": "sha1-vjX1Qlvh9/bHRxhPmKeIy5lHfuA=", - "dev": true, - "requires": { - "error-ex": "^1.3.1", - "json-parse-better-errors": "^1.0.1" - } - }, - "pify": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", - "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=", - "dev": true - }, - "strip-bom": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", - "integrity": "sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM=", - "dev": true - } - } - }, "loader-runner": { "version": "4.2.0", "resolved": "https://registry.npmjs.org/loader-runner/-/loader-runner-4.2.0.tgz", @@ -26351,9 +26384,9 @@ } }, "mini-css-extract-plugin": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/mini-css-extract-plugin/-/mini-css-extract-plugin-2.4.2.tgz", - "integrity": "sha512-ZmqShkn79D36uerdED+9qdo1ZYG8C1YsWvXu0UMJxurZnSdgz7gQKO2EGv8T55MhDqG3DYmGtizZNpM/UbTlcA==", + "version": "2.4.3", + "resolved": "https://registry.npmjs.org/mini-css-extract-plugin/-/mini-css-extract-plugin-2.4.3.tgz", + "integrity": "sha512-zekavl9mZuGyk7COjsfFY/f655AX61EKE0AthXPrmDk+oZyjZ9WzO4WPjXnnO9xl8obK2kmM6rAQrBEmk+WK1g==", "dev": true, "requires": { "schema-utils": "^3.1.0" @@ -26398,15 +26431,15 @@ "dev": true }, "mobx": { - "version": "6.3.3", - "resolved": "https://registry.npmjs.org/mobx/-/mobx-6.3.3.tgz", - "integrity": "sha512-JoNU50rO6d1wHwKPJqKq4rmUMbYnI9CsJmBo+Cu4exBYenFvIN77LWrZENpzW6reZPADtXMmB1DicbDSfy8Clw==", + "version": "6.3.5", + "resolved": "https://registry.npmjs.org/mobx/-/mobx-6.3.5.tgz", + "integrity": "sha512-MeDfqtiSbhVoJgXqQsrJwvq2klj7Xk9pPdMThCdFiwFt33vgWJe82ATppPwVzQoz0AI3QpSSwQzcp3TBDK4syg==", "dev": true }, "mobx-react": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/mobx-react/-/mobx-react-7.2.0.tgz", - "integrity": "sha512-KHUjZ3HBmZlNnPd1M82jcdVsQRDlfym38zJhZEs33VxyVQTvL77hODCArq6+C1P1k/6erEeo2R7rpE7ZeOL7dg==", + "version": "7.2.1", + "resolved": "https://registry.npmjs.org/mobx-react/-/mobx-react-7.2.1.tgz", + "integrity": "sha512-LZS99KFLn75VWDXPdRJhILzVQ7qLcRjQbzkK+wVs0Qg4kWw5hOI2USp7tmu+9zP9KYsVBmKyx2k/8cTTBfsymw==", "dev": true, "requires": { "mobx-react-lite": "^3.2.0" @@ -26510,9 +26543,9 @@ } }, "nanoid": { - "version": "3.1.29", - "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.1.29.tgz", - "integrity": "sha512-dW2pUSGZ8ZnCFIlBIA31SV8huOGCHb6OwzVCc7A69rb/a+SgPBwfmLvK5TKQ3INPbRkcI8a/Owo0XbiTNH19wg==", + "version": "3.1.30", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.1.30.tgz", + "integrity": "sha512-zJpuPDwOv8D2zq2WRoMe1HsfZthVewpel9CAvTfc/2mBD1uUT/agc5f7GHGWXlYkFvi1mVxe4IjvP2HNrop7nQ==", "dev": true }, "natural-compare": { @@ -26591,26 +26624,6 @@ "integrity": "sha512-rB1DUFUNAN4Gn9keO2K1efO35IDK7yKHCdCaIMvFO7yUYmmZYeDjnGKle26G4rwj+LKRQpjyUUvMkPglwGCYNQ==", "dev": true }, - "normalize-package-data": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz", - "integrity": "sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==", - "dev": true, - "requires": { - "hosted-git-info": "^2.1.4", - "resolve": "^1.10.0", - "semver": "2 || 3 || 4 || 5", - "validate-npm-package-license": "^3.0.1" - }, - "dependencies": { - "semver": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", - "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", - "dev": true - } - } - }, "normalize-path": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", @@ -26727,14 +26740,14 @@ } }, "object.values": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/object.values/-/object.values-1.1.4.tgz", - "integrity": "sha512-TnGo7j4XSnKQoK3MfvkzqKCi0nVe/D9I9IjwTNYdb/fxYHpjrluHVOgw0AF6jrRFGMPHdfuidR09tIDiIvnaSg==", + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/object.values/-/object.values-1.1.5.tgz", + "integrity": "sha512-QUZRW0ilQ3PnPpbNtgdNV1PDbEqLIiSFB3l+EnGtBQ/8SUTLj1PZwtQHABZtLgwpJZTSZhuGLOGk57Drx2IvYg==", "dev": true, "requires": { "call-bind": "^1.0.2", "define-properties": "^1.1.3", - "es-abstract": "^1.18.2" + "es-abstract": "^1.19.1" } }, "obuf": { @@ -27248,14 +27261,22 @@ } }, "postcss": { - "version": "8.3.9", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.3.9.tgz", - "integrity": "sha512-f/ZFyAKh9Dnqytx5X62jgjhhzttjZS7hMsohcI7HEI5tjELX/HxCy3EFhsRxyzGvrzFF+82XPvCS8T9TFleVJw==", + "version": "8.3.11", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.3.11.tgz", + "integrity": "sha512-hCmlUAIlUiav8Xdqw3Io4LcpA1DOt7h3LSTAC4G6JGHFFaWzI6qvFt9oilvl8BmkbBRX1IhM90ZAmpk68zccQA==", "dev": true, "requires": { - "nanoid": "^3.1.28", - "picocolors": "^0.2.1", + "nanoid": "^3.1.30", + "picocolors": "^1.0.0", "source-map-js": "^0.6.2" + }, + "dependencies": { + "picocolors": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", + "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==", + "dev": true + } } }, "postcss-calc": { @@ -27318,9 +27339,9 @@ "requires": {} }, "postcss-loader": { - "version": "6.1.1", - "resolved": "https://registry.npmjs.org/postcss-loader/-/postcss-loader-6.1.1.tgz", - "integrity": "sha512-lBmJMvRh1D40dqpWKr9Rpygwxn8M74U9uaCSeYGNKLGInbk9mXBt1ultHf2dH9Ghk6Ue4UXlXWwGMH9QdUJ5ug==", + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/postcss-loader/-/postcss-loader-6.2.0.tgz", + "integrity": "sha512-H9hv447QjQJVDbHj3OUdciyAXY3v5+UDduzEytAlZCVHCpNAAg/mCSwhYYqZr9BiGYhmYspU8QXxZwiHTLn3yA==", "dev": true, "requires": { "cosmiconfig": "^7.0.0", @@ -27617,9 +27638,9 @@ } }, "pretty-format": { - "version": "27.2.5", - "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-27.2.5.tgz", - "integrity": "sha512-+nYn2z9GgicO9JiqmY25Xtq8SYfZ/5VCpEU3pppHHNAhd1y+ZXxmNPd1evmNcAd6Hz4iBV2kf0UpGth5A/VJ7g==", + "version": "27.3.1", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-27.3.1.tgz", + "integrity": "sha512-DR/c+pvFc52nLimLROYjnXPtolawm+uWDxr4FjuLDLUn+ktWnSN851KoHwHzzqq6rfCOjkzN8FLgDrSub6UDuA==", "dev": true, "requires": { "@jest/types": "^27.2.5", @@ -28185,95 +28206,6 @@ "memoize-one": ">=3.1.1 <6" } }, - "read-pkg": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-3.0.0.tgz", - "integrity": "sha1-nLxoaXj+5l0WwA4rGcI3/Pbjg4k=", - "dev": true, - "requires": { - "load-json-file": "^4.0.0", - "normalize-package-data": "^2.3.2", - "path-type": "^3.0.0" - }, - "dependencies": { - "path-type": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/path-type/-/path-type-3.0.0.tgz", - "integrity": "sha512-T2ZUsdZFHgA3u4e5PfPbjd7HDDpxPnQb5jN0SrDsjNSuVXHJqtwTnWqG0B1jZrgmJ/7lj1EmVIByWt1gxGkWvg==", - "dev": true, - "requires": { - "pify": "^3.0.0" - } - }, - "pify": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", - "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=", - "dev": true - } - } - }, - "read-pkg-up": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-3.0.0.tgz", - "integrity": "sha1-PtSWaF26D4/hGNBpHcUfSh/5bwc=", - "dev": true, - "requires": { - "find-up": "^2.0.0", - "read-pkg": "^3.0.0" - }, - "dependencies": { - "find-up": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz", - "integrity": "sha1-RdG35QbHF93UgndaK3eSCjwMV6c=", - "dev": true, - "requires": { - "locate-path": "^2.0.0" - } - }, - "locate-path": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz", - "integrity": "sha1-K1aLJl7slExtnA3pw9u7ygNUzY4=", - "dev": true, - "requires": { - "p-locate": "^2.0.0", - "path-exists": "^3.0.0" - } - }, - "p-limit": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.3.0.tgz", - "integrity": "sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q==", - "dev": true, - "requires": { - "p-try": "^1.0.0" - } - }, - "p-locate": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz", - "integrity": "sha1-IKAQOyIqcMj9OcwuWAaA893l7EM=", - "dev": true, - "requires": { - "p-limit": "^1.1.0" - } - }, - "p-try": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/p-try/-/p-try-1.0.0.tgz", - "integrity": "sha1-y8ec26+P1CKOE/Yh8rGiN8GyB7M=", - "dev": true - }, - "path-exists": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", - "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=", - "dev": true - } - } - }, "readable-stream": { "version": "3.6.0", "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", @@ -28494,6 +28426,12 @@ "integrity": "sha512-C7rARubxI8bXFNB/hqcp/4iUeIXJhJZvFPFPiSPRnhU5UPxzMFIl+2E6yY6c4k9giDJAhtV+enfA+G89N6Csng==", "dev": true }, + "resolve.exports": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/resolve.exports/-/resolve.exports-1.1.0.tgz", + "integrity": "sha512-J1l+Zxxp4XK3LUDZ9m60LRJF/mAe4z6a4xyabPHk7pvK5t35dACV32iIjJDFeWZFfZlO29w6SZ67knR0tHzJtQ==", + "dev": true + }, "ress": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/ress/-/ress-4.0.0.tgz", @@ -28599,18 +28537,18 @@ } }, "sass": { - "version": "1.42.1", - "resolved": "https://registry.npmjs.org/sass/-/sass-1.42.1.tgz", - "integrity": "sha512-/zvGoN8B7dspKc5mC6HlaygyCBRvnyzzgD5khiaCfglWztY99cYoiTUksVx11NlnemrcfH5CEaCpsUKoW0cQqg==", + "version": "1.43.3", + "resolved": "https://registry.npmjs.org/sass/-/sass-1.43.3.tgz", + "integrity": "sha512-BJnLngqWpMeS65UvlYYEuCb3/fLxDxhHtOB/gWPxs6NKrslTxGt3ZxwIvOe/0Jm4tWwM/+tIpE3wj4dLEhPDeQ==", "dev": true, "requires": { "chokidar": ">=3.0.0 <4.0.0" } }, "sass-loader": { - "version": "12.1.0", - "resolved": "https://registry.npmjs.org/sass-loader/-/sass-loader-12.1.0.tgz", - "integrity": "sha512-FVJZ9kxVRYNZTIe2xhw93n3xJNYZADr+q69/s98l9nTCrWASo+DR2Ot0s5xTKQDDEosUkatsGeHxcH4QBp5bSg==", + "version": "12.2.0", + "resolved": "https://registry.npmjs.org/sass-loader/-/sass-loader-12.2.0.tgz", + "integrity": "sha512-qducnp5vSV+8A8MZxuH6zV0MUg4MOVISScl2wDTCAn/2WJX+9Auxh92O/rnkdR2bvi5QxZBafnzkzRrWGZvm7w==", "dev": true, "requires": { "klona": "^2.0.4", @@ -28998,38 +28936,6 @@ "integrity": "sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA==", "dev": true }, - "spdx-correct": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.1.1.tgz", - "integrity": "sha512-cOYcUWwhCuHCXi49RhFRCyJEK3iPj1Ziz9DpViV3tbZOwXD49QzIN3MpOLJNxh2qwq2lJJZaKMVw9qNi4jTC0w==", - "dev": true, - "requires": { - "spdx-expression-parse": "^3.0.0", - "spdx-license-ids": "^3.0.0" - } - }, - "spdx-exceptions": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.3.0.tgz", - "integrity": "sha512-/tTrYOC7PPI1nUAgx34hUpqXuyJG+DTHJTnIULG4rDygi4xu/tfgmq1e1cIRwRzwZgo4NLySi+ricLkZkw4i5A==", - "dev": true - }, - "spdx-expression-parse": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz", - "integrity": "sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==", - "dev": true, - "requires": { - "spdx-exceptions": "^2.1.0", - "spdx-license-ids": "^3.0.0" - } - }, - "spdx-license-ids": { - "version": "3.0.10", - "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.10.tgz", - "integrity": "sha512-oie3/+gKf7QtpitB0LYLETe+k8SifzsX4KixvpOsbI6S0kRiRQ5MKOio8eMSAKQ17N06+wdEOXRiId+zOxo0hA==", - "dev": true - }, "spdy": { "version": "4.0.2", "resolved": "https://registry.npmjs.org/spdy/-/spdy-4.0.2.tgz", @@ -29187,8 +29093,7 @@ "version": "3.0.1", "resolved": "https://registry.npmjs.org/string-natural-compare/-/string-natural-compare-3.0.1.tgz", "integrity": "sha512-n3sPwynL1nwKi3WJ6AIsClwBMa0zTi54fn2oLU6ndfTSIO05xaznjSf15PcBZU6FNWbmN5Q6cxT4V5hGvB4taw==", - "dev": true, - "peer": true + "dev": true }, "string-width": { "version": "4.2.2", @@ -29273,9 +29178,9 @@ "dev": true }, "style-loader": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/style-loader/-/style-loader-3.3.0.tgz", - "integrity": "sha512-szANub7ksJtQioJYtpbWwh1hUl99uK15n5HDlikeCRil/zYMZgSxucHddyF/4A3qJMUiAjPhFowrrQuNMA7jwQ==", + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/style-loader/-/style-loader-3.3.1.tgz", + "integrity": "sha512-GPcQ+LDJbrcxHORTRes6Jy2sfvK2kS6hpSfI/fXhPt+spVzxF6LJ1dHLN9zIGmVaaP044YKaIatFaufENRiDoQ==", "dev": true, "requires": {} }, @@ -29485,14 +29390,14 @@ } }, "terser": { - "version": "4.8.0", - "resolved": "https://registry.npmjs.org/terser/-/terser-4.8.0.tgz", - "integrity": "sha512-EAPipTNeWsb/3wLPeup1tVPaXfIaU68xMnVdPafIL1TV05OhASArYyIfFvnvJCNrR2NIOvDVNNTFRa+Re2MWyw==", + "version": "5.9.0", + "resolved": "https://registry.npmjs.org/terser/-/terser-5.9.0.tgz", + "integrity": "sha512-h5hxa23sCdpzcye/7b8YqbE5OwKca/ni0RQz1uRX3tGh8haaGHqcuSqbGRybuAKNdntZ0mDgFNXPJ48xQ2RXKQ==", "dev": true, "requires": { "commander": "^2.20.0", - "source-map": "~0.6.1", - "source-map-support": "~0.5.12" + "source-map": "~0.7.2", + "source-map-support": "~0.5.20" }, "dependencies": { "commander": { @@ -29502,9 +29407,9 @@ "dev": true }, "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "version": "0.7.3", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.3.tgz", + "integrity": "sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ==", "dev": true } } @@ -29523,36 +29428,11 @@ "terser": "^5.7.2" }, "dependencies": { - "commander": { - "version": "2.20.3", - "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", - "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", - "dev": true - }, "source-map": { "version": "0.6.1", "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", "dev": true - }, - "terser": { - "version": "5.7.2", - "resolved": "https://registry.npmjs.org/terser/-/terser-5.7.2.tgz", - "integrity": "sha512-0Omye+RD4X7X69O0eql3lC4Heh/5iLj3ggxR/B5ketZLOtLiOqukUgjw3q4PDnNQbsrkKr3UMypqStQG3XKRvw==", - "dev": true, - "requires": { - "commander": "^2.20.0", - "source-map": "~0.7.2", - "source-map-support": "~0.5.19" - }, - "dependencies": { - "source-map": { - "version": "0.7.3", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.3.tgz", - "integrity": "sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ==", - "dev": true - } - } } } }, @@ -29628,18 +29508,18 @@ "dev": true }, "tldts": { - "version": "5.7.47", - "resolved": "https://registry.npmjs.org/tldts/-/tldts-5.7.47.tgz", - "integrity": "sha512-z7LKgaYkTKkbLdjM00d1DdqwyRZknnB132PBJMwJ5Wmr4KXH5VNAUqo33UO0XfAS+xgd4zndd+95L12bmz4Btg==", + "version": "5.7.49", + "resolved": "https://registry.npmjs.org/tldts/-/tldts-5.7.49.tgz", + "integrity": "sha512-AAS/2F3WiNrlD+PcSGiQzTui0BgsYDAxX/+jz8HB3EeyGjvz/y1LPpny8nCH9qt47sQQtAha5SiH7IIU7kVhzg==", "dev": true, "requires": { - "tldts-core": "^5.7.47" + "tldts-core": "^5.7.49" } }, "tldts-core": { - "version": "5.7.47", - "resolved": "https://registry.npmjs.org/tldts-core/-/tldts-core-5.7.47.tgz", - "integrity": "sha512-yPdz6a+xx+vp6LvlFw5oSrpfhuU5ORHZF+OXK1dx0IjYGjjYNLFkDQnjJ0CiHsmCQkZ2zTuEdIKUlGlZTXfLVA==", + "version": "5.7.49", + "resolved": "https://registry.npmjs.org/tldts-core/-/tldts-core-5.7.49.tgz", + "integrity": "sha512-ZwUJwp6gUnhCwH6K2xC5YJLnnzKrLrfIsGr9lWZH3DWwGmMVdWzOn4ZVBpTa8StP+H9Dxtk4UJYFiHtFL/qU3Q==", "dev": true }, "tmp": { @@ -29734,16 +29614,16 @@ "dev": true }, "ts-jest": { - "version": "27.0.5", - "resolved": "https://registry.npmjs.org/ts-jest/-/ts-jest-27.0.5.tgz", - "integrity": "sha512-lIJApzfTaSSbtlksfFNHkWOzLJuuSm4faFAfo5kvzOiRAuoN4/eKxVJ2zEAho8aecE04qX6K1pAzfH5QHL1/8w==", + "version": "27.0.7", + "resolved": "https://registry.npmjs.org/ts-jest/-/ts-jest-27.0.7.tgz", + "integrity": "sha512-O41shibMqzdafpuP+CkrOL7ykbmLh+FqQrXEmV9CydQ5JBk0Sj0uAEF5TNNe94fZWKm3yYvWa/IbyV4Yg1zK2Q==", "dev": true, "requires": { "bs-logger": "0.x", "fast-json-stable-stringify": "2.x", "jest-util": "^27.0.0", "json5": "2.x", - "lodash": "4.x", + "lodash.memoize": "4.x", "make-error": "1.x", "semver": "7.x", "yargs-parser": "20.x" @@ -29913,9 +29793,9 @@ } }, "typed-emitter": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/typed-emitter/-/typed-emitter-1.3.1.tgz", - "integrity": "sha512-2h7utWyXgd2R2u2IuL8B4yu1gqMxbgUj2VS/MGVbFhEVQNJKXoQQoS5CBMh+eW31zFeSmDfEQ3qQf4xy5SlPVQ==", + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/typed-emitter/-/typed-emitter-1.4.0.tgz", + "integrity": "sha512-weBmoo3HhpKGgLBOYwe8EB31CzDFuaK7CCL+axXhUYhn4jo6DSkHnbefboCF5i4DQ2aMFe0C/FdTWcPdObgHyg==", "dev": true }, "typedarray-to-buffer": { @@ -29928,9 +29808,9 @@ } }, "typescript": { - "version": "4.4.3", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.4.3.tgz", - "integrity": "sha512-4xfscpisVgqqDfPaJo5vkd+Qd/ItkoagnHpufr+i2QCHBsNYp+G7UAoyFl8aPtx879u38wPV65rZ8qbGZijalA==", + "version": "4.4.4", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.4.4.tgz", + "integrity": "sha512-DqGhF5IKoBl8WNf8C1gu8q0xZSInh9j1kJJMqT3a94w1JzVaBU4EXOSMrz9yDqMT0xt3selp83fuFMQ0uzv6qA==", "dev": true }, "uc.micro": { @@ -30024,17 +29904,6 @@ } } }, - "url-loader": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/url-loader/-/url-loader-4.1.1.tgz", - "integrity": "sha512-3BTV812+AVHHOJQO8O5MkWgZ5aosP7GnROJwvzLS9hWDj00lZ6Z0wNak423Lp9PBZN05N+Jk/N5Si8jRAlGyWA==", - "dev": true, - "requires": { - "loader-utils": "^2.0.0", - "mime-types": "^2.1.27", - "schema-utils": "^3.0.0" - } - }, "use-query-params": { "version": "1.2.3", "resolved": "https://registry.npmjs.org/use-query-params/-/use-query-params-1.2.3.tgz", @@ -30099,16 +29968,6 @@ } } }, - "validate-npm-package-license": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz", - "integrity": "sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==", - "dev": true, - "requires": { - "spdx-correct": "^3.0.0", - "spdx-expression-parse": "^3.0.0" - } - }, "value-equal": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/value-equal/-/value-equal-1.0.1.tgz", @@ -30189,9 +30048,9 @@ "dev": true }, "webpack": { - "version": "5.58.1", - "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.58.1.tgz", - "integrity": "sha512-4Z/dmbTU+VmkCb2XNgW7wkE5TfEcSooclprn/UEuVeAkwHhn07OcgUsyaKHGtCY/VobjnsYBlyhKeMLiSoOqPg==", + "version": "5.59.1", + "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.59.1.tgz", + "integrity": "sha512-I01IQV9K96FlpXX3V0L4nvd7gb0r7thfuu1IfT2P4uOHOA77nKARAKDYGe/tScSHKnffNIyQhLC8kRXzY4KEHQ==", "dev": true, "requires": { "@types/eslint-scope": "^3.7.0", @@ -30559,9 +30418,9 @@ "dev": true }, "zod": { - "version": "3.9.8", - "resolved": "https://registry.npmjs.org/zod/-/zod-3.9.8.tgz", - "integrity": "sha512-pTNhdJd45PPOBpdxO8x00Tv+HhknYGx3WdgFQndazp+G1Gd2Cxf81L5yMfCIIcd/SA3VqrcTv/G4bFcr+DsZhA==", + "version": "3.11.2", + "resolved": "https://registry.npmjs.org/zod/-/zod-3.11.2.tgz", + "integrity": "sha512-mMoCWuXKGvPyShq2B1XnsZ3h0Ft1ekXLSkMfPEboaeSxrOVg7xnLhPrTiVT16rQz4A8Nq69XuHZHbQ8Bpx74lg==", "dev": true } } diff --git a/package.json b/package.json index 6b9cf38e..8126ce57 100644 --- a/package.json +++ b/package.json @@ -66,7 +66,7 @@ "test:client": "FLOOD_OPTION_port=4200 start-server-and-test start 4200 'cypress run'" }, "dependencies": { - "geoip-country": "^4.0.89" + "geoip-country": "^4.0.91" }, "devDependencies": { "@babel/core": "^7.15.8", @@ -78,8 +78,8 @@ "@babel/preset-react": "^7.14.5", "@babel/preset-typescript": "^7.15.0", "@emotion/babel-plugin": "^11.3.0", - "@emotion/css": "^11.1.3", - "@emotion/react": "^11.4.1", + "@emotion/css": "^11.5.0", + "@emotion/react": "^11.5.0", "@lingui/loader": "^3.12.1", "@lingui/react": "^3.12.1", "@pmmmwh/react-refresh-webpack-plugin": "^0.5.1", @@ -89,7 +89,7 @@ "@types/content-disposition": "^0.5.4", "@types/cookie-parser": "^1.4.2", "@types/create-torrent": "^5.0.0", - "@types/d3": "^7.0.0", + "@types/d3": "^7.1.0", "@types/debug": "^4.1.7", "@types/express": "^4.17.13", "@types/express-rate-limit": "^5.1.3", @@ -98,29 +98,28 @@ "@types/http-errors": "^1.8.1", "@types/jest": "^27.0.2", "@types/jsonwebtoken": "^8.5.5", - "@types/lodash": "^4.14.175", + "@types/lodash": "^4.14.176", "@types/morgan": "^1.9.3", - "@types/node": "^12.20.28", + "@types/node": "^12.20.34", "@types/overlayscrollbars": "^1.12.1", "@types/parse-torrent": "^5.8.4", "@types/passport": "^1.0.7", "@types/passport-jwt": "^3.0.6", - "@types/react": "^17.0.27", - "@types/react-dom": "^17.0.9", - "@types/react-measure": "^2.0.7", + "@types/react": "^17.0.31", + "@types/react-dom": "^17.0.10", + "@types/react-measure": "^2.0.8", "@types/react-router-dom": "^5.3.1", - "@types/react-transition-group": "^4.4.3", + "@types/react-transition-group": "^4.4.4", "@types/react-window": "^1.8.5", "@types/spdy": "^3.4.5", "@types/supertest": "^2.0.11", "@types/tar-fs": "^2.0.1", - "@types/tar-stream": "^2.2.1", "@typescript-eslint/eslint-plugin": "^4.33.0", "@typescript-eslint/parser": "^4.33.0", "@vercel/ncc": "^0.31.1", "autoprefixer": "^10.3.7", - "axios": "^0.21.4", - "babel-loader": "^8.2.2", + "axios": "^0.23.0", + "babel-loader": "^8.2.3", "bencode": "^2.0.2", "body-parser": "^1.19.0", "case-sensitive-paths-webpack-plugin": "2.4.0", @@ -130,7 +129,7 @@ "content-disposition": "^0.5.3", "cookie-parser": "^1.4.5", "create-torrent": "^5.0.1", - "css-loader": "^6.3.0", + "css-loader": "^6.4.0", "css-minimizer-webpack-plugin": "^3.1.1", "d3-array": "^3.1.1", "d3-scale": "^4.0.2", @@ -141,16 +140,11 @@ "eslint-config-airbnb": "^18.2.1", "eslint-config-airbnb-typescript": "^14.0.1", "eslint-config-prettier": "^8.3.0", - "eslint-config-react-app": "^6.0.0", - "eslint-import-resolver-webpack": "^0.13.1", - "eslint-plugin-import": "^2.24.2", - "eslint-plugin-jest": "^24.5.2", - "eslint-plugin-jsx-a11y": "^6.4.1", - "eslint-plugin-react": "^7.26.1", - "eslint-plugin-react-hooks": "^4.2.0", + "eslint-config-react-app": "^7.0.0-next.91", + "eslint-import-resolver-webpack": "^0.13.2", "eslint-webpack-plugin": "^3.0.1", "express": "^4.17.1", - "express-rate-limit": "^5.4.1", + "express-rate-limit": "^5.5.0", "fast-json-patch": "^3.1.0", "fast-sort": "^3.0.3", "feedsub": "^0.7.7", @@ -160,15 +154,15 @@ "fs-extra": "^10.0.0", "get-user-locale": "^1.4.0", "hash-wasm": "^4.9.0", - "html-webpack-plugin": "^5.3.2", + "html-webpack-plugin": "^5.4.0", "http-errors": "^1.8.0", - "jest": "^27.2.5", + "jest": "^27.3.1", "js-file-download": "^0.4.12", "jsonwebtoken": "^8.5.1", "lodash": "^4.17.21", - "mini-css-extract-plugin": "^2.4.2", - "mobx": "^6.3.3", - "mobx-react": "^7.2.0", + "mini-css-extract-plugin": "^2.4.3", + "mobx": "^6.3.5", + "mobx-react": "^7.2.1", "morgan": "^1.10.0", "nedb-promises": "^5.0.1", "overlayscrollbars": "^1.13.1", @@ -177,8 +171,8 @@ "passport": "^0.5.0", "passport-jwt": "^4.0.0", "polished": "^4.1.3", - "postcss": "^8.3.9", - "postcss-loader": "^6.1.1", + "postcss": "^8.3.11", + "postcss-loader": "^6.2.0", "prettier": "^2.4.1", "promise": "^8.1.0", "query-string": "^6.14.1", @@ -200,29 +194,27 @@ "react-window": "^1.8.6", "ress": "^4.0.0", "sanitize-filename": "^1.6.3", - "sass": "^1.42.1", - "sass-loader": "^12.1.0", + "sass": "^1.43.3", + "sass-loader": "^12.2.0", "saxen": "^8.1.2", "source-map-loader": "^3.0.0", "spdy": "^4.0.2", - "style-loader": "^3.3.0", + "style-loader": "^3.3.1", "supertest": "^6.1.6", "tar-fs": "^2.1.1", - "tar-stream": "^2.2.0", "terser-webpack-plugin": "^5.2.4", - "tldts": "^5.7.47", - "ts-jest": "^27.0.5", + "tldts": "^5.7.49", + "ts-jest": "^27.0.7", "ts-node-dev": "^1.1.8", "tsconfig-paths": "^3.11.0", - "typed-emitter": "^1.3.1", - "typescript": "~4.4.3", - "url-loader": "^4.1.1", + "typed-emitter": "^1.4.0", + "typescript": "~4.4.4", "use-query-params": "^1.2.3", - "webpack": "^5.58.1", + "webpack": "^5.59.1", "webpack-dev-server": "^4.3.1", "webpackbar": "^5.0.0-3", "yargs": "^17.2.1", - "zod": "^3.9.8" + "zod": "^3.11.2" }, "engines": { "node": ">=12.0.0", diff --git a/server/routes/api/index.ts b/server/routes/api/index.ts index 6ec7dfbd..5e156040 100644 --- a/server/routes/api/index.ts +++ b/server/routes/api/index.ts @@ -9,7 +9,7 @@ import {contentTokenSchema} from '@shared/schema/api/torrents'; import type {FloodSettings} from '@shared/types/FloodSettings'; import type {HistorySnapshot} from '@shared/constants/historySnapshotTypes'; import type {NotificationFetchOptions, NotificationState} from '@shared/types/Notification'; -import type {SetFloodSettingsOptions} from '@shared/types/api/index'; +import type {DirectoryListQuery, DirectoryListResponse, SetFloodSettingsOptions} from '@shared/types/api/index'; import {accessDeniedError, isAllowedPath, sanitizePath} from '../../util/fileUtil'; import appendUserServices from '../../middleware/appendUserServices'; @@ -100,9 +100,9 @@ router.get('/activity-stream', eventStream, clientActivityStream); * @return {Error} 422 - invalid argument - application/json * @return {Error} 500 - other errors - application/json */ -router.get( +router.get( '/directory-list', - async (req, res): Promise> => { + async (req, res): Promise> => { const {path: inputPath} = req.query; if (typeof inputPath !== 'string' || !inputPath) { diff --git a/server/routes/api/torrents.ts b/server/routes/api/torrents.ts index 6effe57b..7898c2a2 100644 --- a/server/routes/api/torrents.ts +++ b/server/routes/api/torrents.ts @@ -907,13 +907,9 @@ router.get<{hash: string}>( 'mediainfo', torrentContentPaths, {maxBuffer: 1024 * 2000, timeout: 1000 * 10}, - (error, stdout, stderr) => { + (error, stdout) => { if (error) { - return res.status(500).json({message: error.message}); - } - - if (stderr) { - return res.status(500).json({message: stderr}); + return res.status(500).json({code: error.code, message: error.message}); } return res.status(200).json({output: stdout}); diff --git a/server/services/Transmission/clientRequestManager.ts b/server/services/Transmission/clientRequestManager.ts index 5079b405..fafefe48 100644 --- a/server/services/Transmission/clientRequestManager.ts +++ b/server/services/Transmission/clientRequestManager.ts @@ -18,49 +18,50 @@ import { TransmissionTorrentsSetLocationArguments, } from './types/TransmissionTorrentsMethods'; +type TransmissionRPCResponse = { + result: 'success'; + arguments: T; +} & { + result: string; +}; + class ClientRequestManager { private rpcURL: string; private authHeader: string; private sessionID?: Promise; async fetchSessionID(url = this.rpcURL, authHeader = this.authHeader): Promise { - return axios + let id: string | undefined = undefined; + + await axios .get(url, { headers: { Authorization: authHeader, }, }) - .then( - () => { - return undefined; - }, - (err: AxiosError) => { - if (err.response?.status === 409) { - return err.response?.headers['x-transmission-session-id']; - } + .catch((err: AxiosError) => { + if (err.response?.status !== 409) { throw err; - }, - ); + } + id = err.response?.headers['x-transmission-session-id']; + }); + + return id; } async updateSessionID(url = this.rpcURL, authHeader = this.authHeader): Promise { let authFailed = false; - this.sessionID = new Promise((resolve) => { - this.fetchSessionID(url, authHeader).then( - (sessionID) => { - resolve(sessionID); - }, - () => { - authFailed = true; - resolve(undefined); - }, - ); + this.sessionID = this.fetchSessionID(url, authHeader).catch(() => { + authFailed = true; + return undefined; }); await this.sessionID; - return authFailed ? Promise.reject(new Error()) : Promise.resolve(); + if (authFailed) { + throw new Error(); + } } async getRequestHeaders(): Promise> { @@ -74,18 +75,18 @@ class ClientRequestManager { async getSessionStats(): Promise { return axios - .post( + .post>( this.rpcURL, {method: 'session-stats'}, { headers: await this.getRequestHeaders(), }, ) - .then((res) => { - if (res.data.result !== 'success') { + .then(({data}) => { + if (data.result !== 'success') { throw new Error(); } - return res.data.arguments; + return data.arguments; }); } @@ -95,32 +96,32 @@ class ClientRequestManager { const sessionGetArguments: TransmissionSessionGetArguments = {fields}; return axios - .post( + .post>>( this.rpcURL, {method: 'session-get', arguments: sessionGetArguments}, { headers: await this.getRequestHeaders(), }, ) - .then((res) => { - if (res.data.result !== 'success') { + .then(({data}) => { + if (data.result !== 'success') { throw new Error(); } - return res.data.arguments; + return data.arguments; }); } async setSessionProperties(properties: TransmissionSessionSetArguments): Promise { return axios - .post( + .post( this.rpcURL, {method: 'session-set', arguments: properties}, { headers: await this.getRequestHeaders(), }, ) - .then((res) => { - if (res.data.result !== 'success') { + .then(({data}) => { + if (data.result !== 'success') { throw new Error(); } }); @@ -137,18 +138,18 @@ class ClientRequestManager { }; return axios - .post( + .post>}>>( this.rpcURL, {method: 'torrent-get', arguments: torrentsGetArguments}, { headers: await this.getRequestHeaders(), }, ) - .then((res) => { - if (res.data.result !== 'success' || res.data.arguments.torrents == null) { + .then(({data}) => { + if (data.result !== 'success' || data.arguments.torrents == null) { throw new Error(); } - return res.data.arguments.torrents; + return data.arguments.torrents; }); } @@ -156,32 +157,34 @@ class ClientRequestManager { args: TransmissionTorrentAddArguments, ): Promise> { return axios - .post( + .post< + TransmissionRPCResponse<{'torrent-added'?: Pick}> + >( this.rpcURL, {method: 'torrent-add', arguments: args}, { headers: await this.getRequestHeaders(), }, ) - .then((res) => { - if (res.data.result !== 'success') { + .then(({data}) => { + if (data.result !== 'success' || !data.arguments['torrent-added']) { throw new Error(); } - return res.data.arguments['torrent-added']; + return data.arguments['torrent-added']; }); } async reannounceTorrents(ids: TransmissionTorrentIDs): Promise { return axios - .post( + .post( this.rpcURL, {method: 'torrent-reannounce', arguments: {ids}}, { headers: await this.getRequestHeaders(), }, ) - .then((res) => { - if (res.data.result !== 'success') { + .then(({data}) => { + if (data.result !== 'success') { throw new Error(); } }); @@ -189,15 +192,15 @@ class ClientRequestManager { async setTorrentsProperties(args: TransmissionTorrentsSetArguments): Promise { return axios - .post( + .post( this.rpcURL, {method: 'torrent-set', arguments: args}, { headers: await this.getRequestHeaders(), }, ) - .then((res) => { - if (res.data.result !== 'success') { + .then(({data}) => { + if (data.result !== 'success') { throw new Error(); } }); @@ -205,15 +208,15 @@ class ClientRequestManager { async startTorrents(ids: TransmissionTorrentIDs): Promise { return axios - .post( + .post( this.rpcURL, {method: 'torrent-start-now', arguments: {ids}}, { headers: await this.getRequestHeaders(), }, ) - .then((res) => { - if (res.data.result !== 'success') { + .then(({data}) => { + if (data.result !== 'success') { throw new Error(); } }); @@ -221,15 +224,15 @@ class ClientRequestManager { async stopTorrents(ids: TransmissionTorrentIDs): Promise { return axios - .post( + .post( this.rpcURL, {method: 'torrent-stop', arguments: {ids}}, { headers: await this.getRequestHeaders(), }, ) - .then((res) => { - if (res.data.result !== 'success') { + .then(({data}) => { + if (data.result !== 'success') { throw new Error(); } }); @@ -237,15 +240,15 @@ class ClientRequestManager { async verifyTorrents(ids: TransmissionTorrentIDs): Promise { return axios - .post( + .post( this.rpcURL, {method: 'torrent-verify', arguments: {ids}}, { headers: await this.getRequestHeaders(), }, ) - .then((res) => { - if (res.data.result !== 'success') { + .then(({data}) => { + if (data.result !== 'success') { throw new Error(); } }); @@ -258,15 +261,15 @@ class ClientRequestManager { }; return axios - .post( + .post( this.rpcURL, {method: 'torrent-remove', arguments: removeTorrentsArguments}, { headers: await this.getRequestHeaders(), }, ) - .then((res) => { - if (res.data.result !== 'success') { + .then(({data}) => { + if (data.result !== 'success') { throw new Error(); } }); @@ -280,7 +283,7 @@ class ClientRequestManager { }; return axios - .post( + .post( this.rpcURL, { method: 'torrent-set-location', @@ -290,8 +293,8 @@ class ClientRequestManager { headers: await this.getRequestHeaders(), }, ) - .then((res) => { - if (res.data.result !== 'success') { + .then(({data}) => { + if (data.result !== 'success') { throw new Error(); } }); diff --git a/server/services/qBittorrent/clientRequestManager.ts b/server/services/qBittorrent/clientRequestManager.ts index ccc9c351..597abbb8 100644 --- a/server/services/qBittorrent/clientRequestManager.ts +++ b/server/services/qBittorrent/clientRequestManager.ts @@ -34,7 +34,7 @@ const EMPTY_SERVER_STATE = { class ClientRequestManager { private connectionSettings: QBittorrentConnectionSettings; private apiBase: string; - private authCookie?: Promise; + private authCookie: Promise = Promise.resolve(undefined); private isMainDataPending = false; private syncRids: { @@ -66,7 +66,7 @@ class ClientRequestManager { }, }) .then((res) => { - const cookies: Array = res.headers['set-cookie']; + const cookies = res.headers['set-cookie']; if (Array.isArray(cookies)) { return cookies.filter((cookie) => cookie.includes('SID='))[0]; @@ -79,35 +79,37 @@ class ClientRequestManager { async updateAuthCookie(connectionSettings?: QBittorrentConnectionSettings): Promise { let authFailed = false; - this.authCookie = new Promise((resolve) => { - this.authenticate(connectionSettings).then( - (authCookie) => { - resolve(authCookie); - }, - () => { - authFailed = true; - resolve(undefined); - }, - ); + this.authCookie = this.authenticate(connectionSettings).catch(() => { + authFailed = true; + return undefined; }); await this.authCookie; - return authFailed ? Promise.reject(new Error()) : Promise.resolve(); + if (authFailed) { + throw new Error(); + } + } + + async getRequestHeaders(): Promise> { + const Cookie = await this.authCookie; + return { + ...(Cookie == null ? {} : {Cookie}), + }; } async getAppPreferences(): Promise { return axios - .get(`${this.apiBase}/app/preferences`, { - headers: {Cookie: await this.authCookie}, + .get(`${this.apiBase}/app/preferences`, { + headers: await this.getRequestHeaders(), }) - .then((json) => json.data); + .then((res) => res.data); } async setAppPreferences(preferences: Partial): Promise { return axios .post(`${this.apiBase}/app/setPreferences`, `json=${JSON.stringify(preferences)}`, { - headers: {Cookie: await this.authCookie}, + headers: await this.getRequestHeaders(), }) .then(() => { // returns nothing @@ -116,55 +118,55 @@ class ClientRequestManager { async getTorrentInfos(): Promise { return axios - .get(`${this.apiBase}/torrents/info`, { - headers: {Cookie: await this.authCookie}, + .get(`${this.apiBase}/torrents/info`, { + headers: await this.getRequestHeaders(), }) - .then((json) => json.data); + .then((res) => res.data); } async getTorrentContents(hash: string): Promise { return axios - .get(`${this.apiBase}/torrents/files`, { + .get(`${this.apiBase}/torrents/files`, { params: { hash: hash.toLowerCase(), }, - headers: {Cookie: await this.authCookie}, + headers: await this.getRequestHeaders(), }) - .then((json) => json.data); + .then((res) => res.data); } async getTorrentProperties(hash: string): Promise { return axios - .get(`${this.apiBase}/torrents/properties`, { + .get(`${this.apiBase}/torrents/properties`, { params: { hash: hash.toLowerCase(), }, - headers: {Cookie: await this.authCookie}, + headers: await this.getRequestHeaders(), }) - .then((json) => json.data); + .then((res) => res.data); } async getTorrentTrackers(hash: string): Promise { return axios - .get(`${this.apiBase}/torrents/trackers`, { + .get(`${this.apiBase}/torrents/trackers`, { params: { hash: hash.toLowerCase(), }, - headers: {Cookie: await this.authCookie}, + headers: await this.getRequestHeaders(), }) - .then((json) => json.data); + .then((res) => res.data); } async getTransferInfo(): Promise { return axios - .get(`${this.apiBase}/transfer/info`, { - headers: {Cookie: await this.authCookie}, + .get(`${this.apiBase}/transfer/info`, { + headers: await this.getRequestHeaders(), }) - .then((json) => json.data); + .then((res) => res.data); } async syncMainData(): Promise { - const Cookie = await this.authCookie; + const headers = await this.getRequestHeaders(); if (this.isMainDataPending == false) { this.isMainDataPending = true; @@ -174,7 +176,7 @@ class ClientRequestManager { params: { rid, }, - headers: {Cookie}, + headers, }) .then(({data}) => { const { @@ -268,9 +270,9 @@ class ClientRequestManager { hash: hash.toLowerCase(), rid: 0, }, - headers: {Cookie: await this.authCookie}, + headers: await this.getRequestHeaders(), }) - .then(({data}) => data.peers as QBittorrentTorrentPeers); + .then(({data}) => data.peers); } async torrentsPause(hashes: Array): Promise { @@ -279,7 +281,7 @@ class ClientRequestManager { params: { hashes: hashes.join('|').toLowerCase(), }, - headers: {Cookie: await this.authCookie}, + headers: await this.getRequestHeaders(), }) .then(() => { // returns nothing @@ -292,7 +294,7 @@ class ClientRequestManager { params: { hashes: hashes.join('|').toLowerCase(), }, - headers: {Cookie: await this.authCookie}, + headers: await this.getRequestHeaders(), }) .then(() => { // returns nothing @@ -306,7 +308,7 @@ class ClientRequestManager { hashes: hashes.join('|').toLowerCase(), deleteFiles: deleteFiles ? 'true' : 'false', }, - headers: {Cookie: await this.authCookie}, + headers: await this.getRequestHeaders(), }) .then(() => { // returns nothing @@ -319,7 +321,7 @@ class ClientRequestManager { params: { hashes: hashes.join('|').toLowerCase(), }, - headers: {Cookie: await this.authCookie}, + headers: await this.getRequestHeaders(), }) .then(() => { // returns nothing @@ -333,7 +335,7 @@ class ClientRequestManager { hashes: hashes.join('|').toLowerCase(), location, }, - headers: {Cookie: await this.authCookie}, + headers: await this.getRequestHeaders(), }) .then(() => { // returns nothing @@ -346,7 +348,7 @@ class ClientRequestManager { params: { hashes: hashes.join('|').toLowerCase(), }, - headers: {Cookie: await this.authCookie}, + headers: await this.getRequestHeaders(), }) .then(() => { // returns nothing @@ -359,7 +361,7 @@ class ClientRequestManager { params: { hashes: hashes.join('|').toLowerCase(), }, - headers: {Cookie: await this.authCookie}, + headers: await this.getRequestHeaders(), }) .then(() => { // returns nothing @@ -426,7 +428,7 @@ class ClientRequestManager { hashes: hashes.join('|').toLowerCase(), tags: tags.join(','), }, - headers: {Cookie: await this.authCookie}, + headers: await this.getRequestHeaders(), }) .then(() => { // returns nothing @@ -440,7 +442,7 @@ class ClientRequestManager { hashes: hashes.join('|').toLowerCase(), tags: tags?.join(','), }, - headers: {Cookie: await this.authCookie}, + headers: await this.getRequestHeaders(), }) .then(() => { // returns nothing @@ -455,7 +457,7 @@ class ClientRequestManager { hash: hash.toLowerCase(), urls: urls.join('\n'), }, - headers: {Cookie: await this.authCookie}, + headers: await this.getRequestHeaders(), }) .then(() => { // returns nothing @@ -470,7 +472,7 @@ class ClientRequestManager { params: { hashes: hashes.join('|').toLowerCase(), }, - headers: {Cookie: await this.authCookie}, + headers: await this.getRequestHeaders(), }) .then(() => { // returns nothing @@ -486,7 +488,7 @@ class ClientRequestManager { hash: hash.toLowerCase(), urls: urls.join('|'), }, - headers: {Cookie: await this.authCookie}, + headers: await this.getRequestHeaders(), }) .then(() => { // returns nothing @@ -502,7 +504,7 @@ class ClientRequestManager { hashes: hashes.join('|').toLowerCase(), value: value ? 'true' : 'false', }, - headers: {Cookie: await this.authCookie}, + headers: await this.getRequestHeaders(), }) .then(() => { // returns nothing @@ -517,7 +519,7 @@ class ClientRequestManager { params: { hashes: hashes.join('|').toLowerCase(), }, - headers: {Cookie: await this.authCookie}, + headers: await this.getRequestHeaders(), }) .then(() => { // returns nothing @@ -533,7 +535,7 @@ class ClientRequestManager { id: ids.join('|'), priority, }, - headers: {Cookie: await this.authCookie}, + headers: await this.getRequestHeaders(), }) .then(() => { // returns nothing diff --git a/server/services/qBittorrent/types/QBittorrentSyncMethods.ts b/server/services/qBittorrent/types/QBittorrentSyncMethods.ts index 30562b87..8f5d296f 100644 --- a/server/services/qBittorrent/types/QBittorrentSyncMethods.ts +++ b/server/services/qBittorrent/types/QBittorrentSyncMethods.ts @@ -50,7 +50,7 @@ export type QBittorrentMainData = Required< export interface QBittorrentSyncTorrentPeers { rid: number; - peers?: { + peers: { [ip_and_port: string]: QBittorrentTorrentPeer; }; peers_removed?: string[]; diff --git a/server/util/fetchUtil.ts b/server/util/fetchUtil.ts index 6e650ee8..5d10e59f 100644 --- a/server/util/fetchUtil.ts +++ b/server/util/fetchUtil.ts @@ -1,4 +1,4 @@ -import axios, {AxiosError, AxiosResponse} from 'axios'; +import axios, {AxiosError} from 'axios'; import fs from 'fs'; import path from 'path'; @@ -26,7 +26,7 @@ export const fetchUrls = async ( } : undefined, }).then( - (res: AxiosResponse) => res.data, + (res) => res.data, (e: AxiosError) => console.error(e), ); diff --git a/shared/schema/api/auth.ts b/shared/schema/api/auth.ts index de84be4f..ab10e182 100644 --- a/shared/schema/api/auth.ts +++ b/shared/schema/api/auth.ts @@ -25,6 +25,12 @@ export interface AuthAuthenticationResponse { export const authRegistrationSchema = credentialsSchema; export type AuthRegistrationOptions = Required>; +// POST /api/auth/register - success response +export interface AuthRegistrationResponse { + username: string; + level: AccessLevel; +} + // PATCH /api/auth/users/{username} export const authUpdateUserSchema = credentialsSchema.partial(); export type AuthUpdateUserOptions = zodInfer; diff --git a/shared/types/api/index.ts b/shared/types/api/index.ts index bd467b03..ba038a35 100644 --- a/shared/types/api/index.ts +++ b/shared/types/api/index.ts @@ -2,3 +2,16 @@ import type {FloodSettings} from '../FloodSettings'; // PATCH /api/settings export type SetFloodSettingsOptions = Partial; + +// GET /api/directory-list +export interface DirectoryListQuery { + path: string; +} + +// GET /api/directory-list - success response +export interface DirectoryListResponse { + path: string; + separator: string; + directories: string[]; + files: string[]; +} diff --git a/shared/types/api/torrents.ts b/shared/types/api/torrents.ts index 3aad020e..2ee9b27f 100644 --- a/shared/types/api/torrents.ts +++ b/shared/types/api/torrents.ts @@ -104,3 +104,13 @@ export interface SetTorrentContentsPropertiesOptions { // Number representing priority priority: TorrentContentPriority; } + +// GET /api/torrents/{hash}/mediainfo - success response +export interface TorrentMediainfoResponse { + output: string; +} + +// POST /api/torrents/add-urls - success response +// POST /api/torrents/add-files - success response +// hashes of torrents added +export type TorrentAddResponse = string[];