diff --git a/.eslintrc.yml b/.eslintrc.yml
index 5ccead36c..cc4e73a73 100644
--- a/.eslintrc.yml
+++ b/.eslintrc.yml
@@ -88,6 +88,8 @@ overrides:
'jsx-a11y/label-has-associated-control': ['error', { 'assert': 'either' }]
'react/function-component-definition': ['error', { 'namedComponents': 'function-declaration' }]
'react/jsx-no-bind': off
+ 'no-await-in-loop': 'off'
+ 'react/jsx-no-useless-fragment': ['error', { allowExpressions: true }]
- files:
- app/**/*.test.*
extends:
diff --git a/app/assets/css/app.css b/app/assets/css/app.css
index 1d0294559..dbe881517 100644
--- a/app/assets/css/app.css
+++ b/app/assets/css/app.css
@@ -82,6 +82,13 @@ input[type='checkbox'] {
margin-top: -1px;
}
+.md-checkbox input[type='checkbox']:indeterminate + label:before {
+ content: '-';
+ align-content: center;
+ line-height: 16px;
+ text-align: center;
+}
+
a[ng-click] {
cursor: pointer;
}
@@ -890,3 +897,7 @@ json-tree .branch-preview {
opacity: 0.5;
cursor: not-allowed;
}
+
+.space-x-1 {
+ margin-left: 0.25rem;
+}
diff --git a/app/assets/css/index.js b/app/assets/css/index.js
index c48ded8c2..9cd17ecec 100644
--- a/app/assets/css/index.js
+++ b/app/assets/css/index.js
@@ -13,6 +13,7 @@ import 'angular-loading-bar/build/loading-bar.css';
import 'angular-moment-picker/dist/angular-moment-picker.min.css';
import 'angular-multiselect/isteven-multi-select.css';
import 'spinkit/spinkit.min.css';
+import '@reach/menu-button/styles.css';
import './rdash.css';
import './app.css';
diff --git a/app/docker/__module.js b/app/docker/__module.js
index a34a8e4cd..828862870 100644
--- a/app/docker/__module.js
+++ b/app/docker/__module.js
@@ -1,4 +1,8 @@
-angular.module('portainer.docker', ['portainer.app']).config([
+import angular from 'angular';
+
+import containersModule from './containers';
+
+angular.module('portainer.docker', ['portainer.app', containersModule]).config([
'$stateRegistryProvider',
function ($stateRegistryProvider) {
'use strict';
diff --git a/app/docker/components/container-quick-actions/ContainerQuickActions.module.css b/app/docker/components/container-quick-actions/ContainerQuickActions.module.css
new file mode 100644
index 000000000..dfc0a60d1
--- /dev/null
+++ b/app/docker/components/container-quick-actions/ContainerQuickActions.module.css
@@ -0,0 +1,3 @@
+.root {
+ display: inline-flex;
+}
diff --git a/app/docker/components/container-quick-actions/ContainerQuickActions.tsx b/app/docker/components/container-quick-actions/ContainerQuickActions.tsx
new file mode 100644
index 000000000..41e411bef
--- /dev/null
+++ b/app/docker/components/container-quick-actions/ContainerQuickActions.tsx
@@ -0,0 +1,140 @@
+import clsx from 'clsx';
+
+import { Authorized } from '@/portainer/hooks/useUser';
+import { Link } from '@/portainer/components/Link';
+import { react2angular } from '@/react-tools/react2angular';
+import { DockerContainerStatus } from '@/docker/containers/types';
+
+import styles from './ContainerQuickActions.module.css';
+
+interface QuickActionsState {
+ showQuickActionAttach: boolean;
+ showQuickActionExec: boolean;
+ showQuickActionInspect: boolean;
+ showQuickActionLogs: boolean;
+ showQuickActionStats: boolean;
+}
+
+interface Props {
+ taskId?: string;
+ containerId?: string;
+ nodeName: string;
+ state: QuickActionsState;
+ status: DockerContainerStatus;
+}
+
+export function ContainerQuickActions({
+ taskId,
+ containerId,
+ nodeName,
+ state,
+ status,
+}: Props) {
+ if (taskId) {
+ return ;
+ }
+
+ const isActive = ['starting', 'running', 'healthy', 'unhealthy'].includes(
+ status
+ );
+
+ return (
+
+ {state.showQuickActionLogs && (
+
+
+
+
+
+ )}
+
+ {state.showQuickActionInspect && (
+
+
+
+
+
+ )}
+
+ {state.showQuickActionStats && isActive && (
+
+
+
+
+
+ )}
+
+ {state.showQuickActionExec && isActive && (
+
+
+
+
+
+ )}
+
+ {state.showQuickActionAttach && isActive && (
+
+
+
+
+
+ )}
+
+ );
+}
+
+interface TaskProps {
+ taskId: string;
+ state: QuickActionsState;
+}
+
+function TaskQuickActions({ taskId, state }: TaskProps) {
+ return (
+
+ {state.showQuickActionLogs && (
+
+
+
+
+
+ )}
+
+ {state.showQuickActionInspect && (
+
+
+
+
+
+ )}
+
+ );
+}
+
+export const ContainerQuickActionsAngular = react2angular(
+ ContainerQuickActions,
+ ['taskId', 'containerId', 'nodeName', 'state', 'status']
+);
diff --git a/app/docker/components/container-quick-actions/containerQuickActions.html b/app/docker/components/container-quick-actions/containerQuickActions.html
deleted file mode 100644
index d4bbc55d1..000000000
--- a/app/docker/components/container-quick-actions/containerQuickActions.html
+++ /dev/null
@@ -1,65 +0,0 @@
-
diff --git a/app/docker/components/container-quick-actions/containerQuickActions.js b/app/docker/components/container-quick-actions/containerQuickActions.js
deleted file mode 100644
index 6f8631df7..000000000
--- a/app/docker/components/container-quick-actions/containerQuickActions.js
+++ /dev/null
@@ -1,10 +0,0 @@
-angular.module('portainer.docker').component('containerQuickActions', {
- templateUrl: './containerQuickActions.html',
- bindings: {
- containerId: '<',
- nodeName: '<',
- status: '<',
- state: '<',
- taskId: '<',
- },
-});
diff --git a/app/docker/components/container-quick-actions/index.ts b/app/docker/components/container-quick-actions/index.ts
new file mode 100644
index 000000000..2be542a63
--- /dev/null
+++ b/app/docker/components/container-quick-actions/index.ts
@@ -0,0 +1,7 @@
+import angular from 'angular';
+
+import { ContainerQuickActionsAngular } from './ContainerQuickActions';
+
+angular
+ .module('portainer.docker')
+ .component('containerQuickActions', ContainerQuickActionsAngular);
diff --git a/app/docker/components/datatables/containers-datatable/actions/containersDatatableActions.html b/app/docker/components/datatables/containers-datatable/actions/containersDatatableActions.html
deleted file mode 100644
index 9d9f8d9f8..000000000
--- a/app/docker/components/datatables/containers-datatable/actions/containersDatatableActions.html
+++ /dev/null
@@ -1,73 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/app/docker/components/datatables/containers-datatable/actions/containersDatatableActions.js b/app/docker/components/datatables/containers-datatable/actions/containersDatatableActions.js
deleted file mode 100644
index b6f83f273..000000000
--- a/app/docker/components/datatables/containers-datatable/actions/containersDatatableActions.js
+++ /dev/null
@@ -1,12 +0,0 @@
-angular.module('portainer.docker').component('containersDatatableActions', {
- templateUrl: './containersDatatableActions.html',
- controller: 'ContainersDatatableActionsController',
- bindings: {
- selectedItems: '=',
- selectedItemCount: '=',
- noStoppedItemsSelected: '=',
- noRunningItemsSelected: '=',
- noPausedItemsSelected: '=',
- showAddAction: '<',
- },
-});
diff --git a/app/docker/components/datatables/containers-datatable/actions/containersDatatableActionsController.js b/app/docker/components/datatables/containers-datatable/actions/containersDatatableActionsController.js
deleted file mode 100644
index 432df50f8..000000000
--- a/app/docker/components/datatables/containers-datatable/actions/containersDatatableActionsController.js
+++ /dev/null
@@ -1,112 +0,0 @@
-angular.module('portainer.docker').controller('ContainersDatatableActionsController', [
- '$state',
- 'ContainerService',
- 'ModalService',
- 'Notifications',
- 'HttpRequestHelper',
- function ($state, ContainerService, ModalService, Notifications, HttpRequestHelper) {
- this.startAction = function (selectedItems) {
- var successMessage = 'Container successfully started';
- var errorMessage = 'Unable to start container';
- executeActionOnContainerList(selectedItems, ContainerService.startContainer, successMessage, errorMessage);
- };
-
- this.stopAction = function (selectedItems) {
- var successMessage = 'Container successfully stopped';
- var errorMessage = 'Unable to stop container';
- executeActionOnContainerList(selectedItems, ContainerService.stopContainer, successMessage, errorMessage);
- };
-
- this.restartAction = function (selectedItems) {
- var successMessage = 'Container successfully restarted';
- var errorMessage = 'Unable to restart container';
- executeActionOnContainerList(selectedItems, ContainerService.restartContainer, successMessage, errorMessage);
- };
-
- this.killAction = function (selectedItems) {
- var successMessage = 'Container successfully killed';
- var errorMessage = 'Unable to kill container';
- executeActionOnContainerList(selectedItems, ContainerService.killContainer, successMessage, errorMessage);
- };
-
- this.pauseAction = function (selectedItems) {
- var successMessage = 'Container successfully paused';
- var errorMessage = 'Unable to pause container';
- executeActionOnContainerList(selectedItems, ContainerService.pauseContainer, successMessage, errorMessage);
- };
-
- this.resumeAction = function (selectedItems) {
- var successMessage = 'Container successfully resumed';
- var errorMessage = 'Unable to resume container';
- executeActionOnContainerList(selectedItems, ContainerService.resumeContainer, successMessage, errorMessage);
- };
-
- this.removeAction = function (selectedItems) {
- var isOneContainerRunning = false;
- for (var i = 0; i < selectedItems.length; i++) {
- var container = selectedItems[i];
- if (container.State === 'running') {
- isOneContainerRunning = true;
- break;
- }
- }
-
- var title = 'You are about to remove one or more container.';
- if (isOneContainerRunning) {
- title = 'You are about to remove one or more running container.';
- }
-
- ModalService.confirmContainerDeletion(title, function (result) {
- if (!result) {
- return;
- }
- var cleanVolumes = false;
- if (result[0]) {
- cleanVolumes = true;
- }
- removeSelectedContainers(selectedItems, cleanVolumes);
- });
- };
-
- function executeActionOnContainerList(containers, action, successMessage, errorMessage) {
- var actionCount = containers.length;
- angular.forEach(containers, function (container) {
- HttpRequestHelper.setPortainerAgentTargetHeader(container.NodeName);
- action(container.Id)
- .then(function success() {
- Notifications.success(successMessage, container.Names[0]);
- })
- .catch(function error(err) {
- errorMessage = errorMessage + ':' + container.Names[0];
- Notifications.error('Failure', err, errorMessage);
- })
- .finally(function final() {
- --actionCount;
- if (actionCount === 0) {
- $state.reload();
- }
- });
- });
- }
-
- function removeSelectedContainers(containers, cleanVolumes) {
- var actionCount = containers.length;
- angular.forEach(containers, function (container) {
- HttpRequestHelper.setPortainerAgentTargetHeader(container.NodeName);
- ContainerService.remove(container, cleanVolumes)
- .then(function success() {
- Notifications.success('Container successfully removed', container.Names[0]);
- })
- .catch(function error(err) {
- Notifications.error('Failure', err, 'Unable to remove container');
- })
- .finally(function final() {
- --actionCount;
- if (actionCount === 0) {
- $state.reload();
- }
- });
- });
- }
- },
-]);
diff --git a/app/docker/components/datatables/containers-datatable/containersDatatable.html b/app/docker/components/datatables/containers-datatable/containersDatatable.html
deleted file mode 100644
index e48177a49..000000000
--- a/app/docker/components/datatables/containers-datatable/containersDatatable.html
+++ /dev/null
@@ -1,312 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/app/docker/components/datatables/containers-datatable/containersDatatable.js b/app/docker/components/datatables/containers-datatable/containersDatatable.js
deleted file mode 100644
index e93050f81..000000000
--- a/app/docker/components/datatables/containers-datatable/containersDatatable.js
+++ /dev/null
@@ -1,18 +0,0 @@
-angular.module('portainer.docker').component('containersDatatable', {
- templateUrl: './containersDatatable.html',
- controller: 'ContainersDatatableController',
- bindings: {
- titleText: '@',
- titleIcon: '@',
- dataset: '<',
- tableKey: '@',
- orderBy: '@',
- reverseOrder: '<',
- showHostColumn: '<',
- showAddAction: '<',
- offlineMode: '<',
- refreshCallback: '<',
- notAutoFocus: '<',
- endpointPublicUrl: '<',
- },
-});
diff --git a/app/docker/components/datatables/containers-datatable/containersDatatableController.js b/app/docker/components/datatables/containers-datatable/containersDatatableController.js
deleted file mode 100644
index 1178078de..000000000
--- a/app/docker/components/datatables/containers-datatable/containersDatatableController.js
+++ /dev/null
@@ -1,210 +0,0 @@
-import _ from 'lodash-es';
-
-angular.module('portainer.docker').controller('ContainersDatatableController', [
- '$scope',
- '$controller',
- 'DatatableService',
- function ($scope, $controller, DatatableService) {
- angular.extend(this, $controller('GenericDatatableController', { $scope: $scope }));
-
- var ctrl = this;
-
- this.state = Object.assign(this.state, {
- noStoppedItemsSelected: true,
- noRunningItemsSelected: true,
- noPausedItemsSelected: true,
- });
-
- this.settings = Object.assign(this.settings, {
- truncateContainerName: true,
- containerNameTruncateSize: 32,
- showQuickActionStats: true,
- showQuickActionLogs: true,
- showQuickActionExec: true,
- showQuickActionInspect: true,
- showQuickActionAttach: false,
- });
-
- this.filters = {
- state: {
- open: false,
- enabled: false,
- values: [],
- },
- };
-
- this.columnVisibility = {
- columns: {
- state: {
- label: 'State',
- display: true,
- },
- actions: {
- label: 'Quick Actions',
- display: true,
- },
- stack: {
- label: 'Stack',
- display: true,
- },
- image: {
- label: 'Image',
- display: true,
- },
- created: {
- label: 'Created',
- display: true,
- },
- ip: {
- label: 'IP Address',
- display: true,
- },
- host: {
- label: 'Host',
- display: true,
- },
- ports: {
- label: 'Published Ports',
- display: true,
- },
- ownership: {
- label: 'Ownership',
- display: true,
- },
- },
- };
-
- this.allowSelection = function (item) {
- return !item.IsPortainer;
- };
-
- this.onColumnVisibilityChange = onColumnVisibilityChange.bind(this);
- function onColumnVisibilityChange(columns) {
- this.columnVisibility.columns = columns;
- DatatableService.setColumnVisibilitySettings(this.tableKey, this.columnVisibility);
- }
-
- this.onSelectionChanged = function () {
- this.updateSelectionState();
- };
-
- this.updateSelectionState = function () {
- this.state.noStoppedItemsSelected = true;
- this.state.noRunningItemsSelected = true;
- this.state.noPausedItemsSelected = true;
-
- for (var i = 0; i < this.dataset.length; i++) {
- var item = this.dataset[i];
- if (item.Checked) {
- this.updateSelectionStateBasedOnItemStatus(item);
- }
- }
- };
-
- this.updateSelectionStateBasedOnItemStatus = function (item) {
- if (item.Status === 'paused') {
- this.state.noPausedItemsSelected = false;
- } else if (['stopped', 'created'].indexOf(item.Status) !== -1) {
- this.state.noStoppedItemsSelected = false;
- } else if (['running', 'healthy', 'unhealthy', 'starting'].indexOf(item.Status) !== -1) {
- this.state.noRunningItemsSelected = false;
- }
- };
-
- this.applyFilters = function (value) {
- var container = value;
- var filters = ctrl.filters;
- for (var i = 0; i < filters.state.values.length; i++) {
- var filter = filters.state.values[i];
- if (container.Status === filter.label && filter.display) {
- return true;
- }
- }
- return false;
- };
-
- this.onStateFilterChange = function () {
- var filters = this.filters.state.values;
- var filtered = false;
- for (var i = 0; i < filters.length; i++) {
- var filter = filters[i];
- if (!filter.display) {
- filtered = true;
- }
- }
- this.filters.state.enabled = filtered;
- };
-
- this.onSettingsContainerNameTruncateChange = function () {
- if (this.settings.truncateContainerName) {
- this.settings.containerNameTruncateSize = 32;
- } else {
- this.settings.containerNameTruncateSize = 256;
- }
- DatatableService.setDataTableSettings(this.tableKey, this.settings);
- };
-
- this.onSettingsQuickActionChange = function () {
- DatatableService.setDataTableSettings(this.tableKey, this.settings);
- };
-
- this.prepareTableFromDataset = function () {
- var availableStateFilters = [];
- for (var i = 0; i < this.dataset.length; i++) {
- var item = this.dataset[i];
- availableStateFilters.push({ label: item.Status, display: true });
- }
- this.filters.state.values = _.uniqBy(availableStateFilters, 'label');
- };
-
- this.updateStoredFilters = function (storedFilters) {
- var datasetFilters = this.filters.state.values;
-
- for (var i = 0; i < datasetFilters.length; i++) {
- var filter = datasetFilters[i];
- var existingFilter = _.find(storedFilters, ['label', filter.label]);
- if (existingFilter && !existingFilter.display) {
- filter.display = existingFilter.display;
- this.filters.state.enabled = true;
- }
- }
- };
-
- this.$onInit = function () {
- this.setDefaults();
- this.prepareTableFromDataset();
-
- this.state.orderBy = this.orderBy;
- var storedOrder = DatatableService.getDataTableOrder(this.tableKey);
- if (storedOrder !== null) {
- this.state.reverseOrder = storedOrder.reverse;
- this.state.orderBy = storedOrder.orderBy;
- }
-
- var textFilter = DatatableService.getDataTableTextFilters(this.tableKey);
- if (textFilter !== null) {
- this.state.textFilter = textFilter;
- this.onTextFilterChange();
- }
-
- var storedFilters = DatatableService.getDataTableFilters(this.tableKey);
- if (storedFilters !== null) {
- this.filters = storedFilters;
- this.filters.state.open = false;
- this.updateStoredFilters(storedFilters.state.values);
- }
-
- var storedSettings = DatatableService.getDataTableSettings(this.tableKey);
- if (storedSettings !== null) {
- this.settings = storedSettings;
- this.settings.open = false;
- }
- this.onSettingsRepeaterChange();
-
- var storedColumnVisibility = DatatableService.getColumnVisibilitySettings(this.tableKey);
- if (storedColumnVisibility !== null) {
- this.columnVisibility = storedColumnVisibility;
- }
- };
- },
-]);
diff --git a/app/docker/containers/components/ContainersDatatable/ContainersDatatable.tsx b/app/docker/containers/components/ContainersDatatable/ContainersDatatable.tsx
new file mode 100644
index 000000000..d4183e21b
--- /dev/null
+++ b/app/docker/containers/components/ContainersDatatable/ContainersDatatable.tsx
@@ -0,0 +1,249 @@
+import { useEffect } from 'react';
+import {
+ useTable,
+ useSortBy,
+ useFilters,
+ useGlobalFilter,
+ usePagination,
+ Row,
+} from 'react-table';
+import { useRowSelectColumn } from '@lineup-lite/hooks';
+
+import { PaginationControls } from '@/portainer/components/pagination-controls';
+import {
+ QuickActionsSettings,
+ buildAction,
+} from '@/portainer/components/datatables/components/QuickActionsSettings';
+import {
+ Table,
+ TableActions,
+ TableContainer,
+ TableHeaderRow,
+ TableRow,
+ TableSettingsMenu,
+ TableTitle,
+ TableTitleActions,
+} from '@/portainer/components/datatables/components';
+import { multiple } from '@/portainer/components/datatables/components/filter-types';
+import { useTableSettings } from '@/portainer/components/datatables/components/useTableSettings';
+import { ColumnVisibilityMenu } from '@/portainer/components/datatables/components/ColumnVisibilityMenu';
+import { useRepeater } from '@/portainer/components/datatables/components/useRepeater';
+import { useDebounce } from '@/portainer/hooks/useDebounce';
+import {
+ useSearchBarContext,
+ SearchBar,
+} from '@/portainer/components/datatables/components/SearchBar';
+import type {
+ ContainersTableSettings,
+ DockerContainer,
+} from '@/docker/containers/types';
+import { useEnvironment } from '@/portainer/environments/useEnvironment';
+import { useRowSelect } from '@/portainer/components/datatables/components/useRowSelect';
+import { Checkbox } from '@/portainer/components/form-components/Checkbox';
+import { TableFooter } from '@/portainer/components/datatables/components/TableFooter';
+import { SelectedRowsCount } from '@/portainer/components/datatables/components/SelectedRowsCount';
+
+import { ContainersDatatableActions } from './ContainersDatatableActions';
+import { ContainersDatatableSettings } from './ContainersDatatableSettings';
+import { useColumns } from './columns';
+
+export interface ContainerTableProps {
+ isAddActionVisible: boolean;
+ dataset: DockerContainer[];
+ onRefresh(): Promise;
+ isHostColumnVisible: boolean;
+ autoFocusSearch: boolean;
+}
+
+export function ContainersDatatable({
+ isAddActionVisible,
+ dataset,
+ onRefresh,
+ isHostColumnVisible,
+ autoFocusSearch,
+}: ContainerTableProps) {
+ const { settings, setTableSettings } =
+ useTableSettings();
+ const [searchBarValue, setSearchBarValue] = useSearchBarContext();
+
+ const columns = useColumns();
+
+ const endpoint = useEnvironment();
+
+ useRepeater(settings.autoRefreshRate, onRefresh);
+
+ const {
+ getTableProps,
+ getTableBodyProps,
+ headerGroups,
+ page,
+ prepareRow,
+ selectedFlatRows,
+ allColumns,
+ gotoPage,
+ setPageSize,
+ setHiddenColumns,
+ toggleHideColumn,
+ setGlobalFilter,
+ state: { pageIndex, pageSize },
+ } = useTable(
+ {
+ defaultCanFilter: false,
+ columns,
+ data: dataset,
+ filterTypes: { multiple },
+ initialState: {
+ pageSize: settings.pageSize || 10,
+ hiddenColumns: settings.hiddenColumns,
+ sortBy: [settings.sortBy],
+ globalFilter: searchBarValue,
+ },
+ isRowSelectable(row: Row) {
+ return !row.original.IsPortainer;
+ },
+ selectCheckboxComponent: Checkbox,
+ },
+ useFilters,
+ useGlobalFilter,
+ useSortBy,
+ usePagination,
+ useRowSelect,
+ useRowSelectColumn
+ );
+
+ const debouncedSearchValue = useDebounce(searchBarValue);
+
+ useEffect(() => {
+ setGlobalFilter(debouncedSearchValue);
+ }, [debouncedSearchValue, setGlobalFilter]);
+
+ useEffect(() => {
+ toggleHideColumn('host', !isHostColumnVisible);
+ }, [toggleHideColumn, isHostColumnVisible]);
+
+ const columnsToHide = allColumns.filter((colInstance) => {
+ const columnDef = columns.find((c) => c.id === colInstance.id);
+ return columnDef?.canHide;
+ });
+
+ const actions = [
+ buildAction('logs', 'Logs'),
+ buildAction('inspect', 'Inspect'),
+ buildAction('stats', 'Stats'),
+ buildAction('exec', 'Console'),
+ buildAction('attach', 'Attach'),
+ ];
+
+ const tableProps = getTableProps();
+ const tbodyProps = getTableBodyProps();
+
+ return (
+
+
+
+
+
+ }
+ >
+
+
+
+
+
+
+ row.original)}
+ isAddActionVisible={isAddActionVisible}
+ endpointId={endpoint.Id}
+ />
+
+
+
+
+
+
+ {headerGroups.map((headerGroup) => {
+ const { key, className, role, style } =
+ headerGroup.getHeaderGroupProps();
+
+ return (
+
+ key={key}
+ className={className}
+ role={role}
+ style={style}
+ headers={headerGroup.headers}
+ onSortChange={handleSortChange}
+ />
+ );
+ })}
+
+
+ {page.map((row) => {
+ prepareRow(row);
+ const { key, className, role, style } = row.getRowProps();
+ return (
+
+ cells={row.cells}
+ key={key}
+ className={className}
+ role={role}
+ style={style}
+ />
+ );
+ })}
+
+
+
+
+
+ gotoPage(p - 1)}
+ totalCount={dataset.length}
+ onPageLimitChange={handlePageSizeChange}
+ />
+
+
+ );
+
+ function handlePageSizeChange(pageSize: number) {
+ setPageSize(pageSize);
+ setTableSettings((settings) => ({ ...settings, pageSize }));
+ }
+
+ function handleChangeColumnsVisibility(hiddenColumns: string[]) {
+ setHiddenColumns(hiddenColumns);
+ setTableSettings((settings) => ({ ...settings, hiddenColumns }));
+ }
+
+ function handleSearchBarChange(value: string) {
+ setSearchBarValue(value);
+ }
+
+ function handleSortChange(id: string, desc: boolean) {
+ setTableSettings((settings) => ({
+ ...settings,
+ sortBy: { id, desc },
+ }));
+ }
+}
diff --git a/app/docker/containers/components/ContainersDatatable/ContainersDatatableActions.tsx b/app/docker/containers/components/ContainersDatatable/ContainersDatatableActions.tsx
new file mode 100644
index 000000000..0c0679baf
--- /dev/null
+++ b/app/docker/containers/components/ContainersDatatable/ContainersDatatableActions.tsx
@@ -0,0 +1,288 @@
+import { useRouter } from '@uirouter/react';
+
+import * as notifications from '@/portainer/services/notifications';
+import { useAuthorizations, Authorized } from '@/portainer/hooks/useUser';
+import { Link } from '@/portainer/components/Link';
+import { confirmContainerDeletion } from '@/portainer/services/modal.service/prompt';
+import { setPortainerAgentTargetHeader } from '@/portainer/services/http-request.helper';
+import type { ContainerId, DockerContainer } from '@/docker/containers/types';
+import {
+ killContainer,
+ pauseContainer,
+ removeContainer,
+ restartContainer,
+ resumeContainer,
+ startContainer,
+ stopContainer,
+} from '@/docker/containers/containers.service';
+import type { EnvironmentId } from '@/portainer/environments/types';
+import { ButtonGroup, Button } from '@/portainer/components/Button';
+
+type ContainerServiceAction = (
+ endpointId: EnvironmentId,
+ containerId: ContainerId
+) => Promise;
+
+interface Props {
+ selectedItems: DockerContainer[];
+ isAddActionVisible: boolean;
+ endpointId: EnvironmentId;
+}
+
+export function ContainersDatatableActions({
+ selectedItems,
+ isAddActionVisible,
+ endpointId,
+}: Props) {
+ const selectedItemCount = selectedItems.length;
+ const hasPausedItemsSelected = selectedItems.some(
+ (item) => item.Status === 'paused'
+ );
+ const hasStoppedItemsSelected = selectedItems.some((item) =>
+ ['stopped', 'created'].includes(item.Status)
+ );
+ const hasRunningItemsSelected = selectedItems.some((item) =>
+ ['running', 'healthy', 'unhealthy', 'starting'].includes(item.Status)
+ );
+
+ const isAuthorized = useAuthorizations([
+ 'DockerContainerStart',
+ 'DockerContainerStop',
+ 'DockerContainerKill',
+ 'DockerContainerRestart',
+ 'DockerContainerPause',
+ 'DockerContainerUnpause',
+ 'DockerContainerDelete',
+ 'DockerContainerCreate',
+ ]);
+
+ const router = useRouter();
+
+ if (!isAuthorized) {
+ return null;
+ }
+
+ return (
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {isAddActionVisible && (
+
+
+
+
+
+ )}
+
+ );
+
+ function onStartClick(selectedItems: DockerContainer[]) {
+ const successMessage = 'Container successfully started';
+ const errorMessage = 'Unable to start container';
+ executeActionOnContainerList(
+ selectedItems,
+ startContainer,
+ successMessage,
+ errorMessage
+ );
+ }
+
+ function onStopClick(selectedItems: DockerContainer[]) {
+ const successMessage = 'Container successfully stopped';
+ const errorMessage = 'Unable to stop container';
+ executeActionOnContainerList(
+ selectedItems,
+ stopContainer,
+ successMessage,
+ errorMessage
+ );
+ }
+
+ function onRestartClick(selectedItems: DockerContainer[]) {
+ const successMessage = 'Container successfully restarted';
+ const errorMessage = 'Unable to restart container';
+ executeActionOnContainerList(
+ selectedItems,
+ restartContainer,
+ successMessage,
+ errorMessage
+ );
+ }
+
+ function onKillClick(selectedItems: DockerContainer[]) {
+ const successMessage = 'Container successfully killed';
+ const errorMessage = 'Unable to kill container';
+ executeActionOnContainerList(
+ selectedItems,
+ killContainer,
+ successMessage,
+ errorMessage
+ );
+ }
+
+ function onPauseClick(selectedItems: DockerContainer[]) {
+ const successMessage = 'Container successfully paused';
+ const errorMessage = 'Unable to pause container';
+ executeActionOnContainerList(
+ selectedItems,
+ pauseContainer,
+ successMessage,
+ errorMessage
+ );
+ }
+
+ function onResumeClick(selectedItems: DockerContainer[]) {
+ const successMessage = 'Container successfully resumed';
+ const errorMessage = 'Unable to resume container';
+ executeActionOnContainerList(
+ selectedItems,
+ resumeContainer,
+ successMessage,
+ errorMessage
+ );
+ }
+
+ function onRemoveClick(selectedItems: DockerContainer[]) {
+ const isOneContainerRunning = selectedItems.some(
+ (container) => container.Status === 'running'
+ );
+
+ const runningTitle = isOneContainerRunning ? 'running' : '';
+ const title = `You are about to remove one or more ${runningTitle} containers.`;
+
+ confirmContainerDeletion(title, (result: string[]) => {
+ if (!result) {
+ return;
+ }
+ const cleanVolumes = !!result[0];
+
+ removeSelectedContainers(selectedItems, cleanVolumes);
+ });
+ }
+
+ async function executeActionOnContainerList(
+ containers: DockerContainer[],
+ action: ContainerServiceAction,
+ successMessage: string,
+ errorMessage: string
+ ) {
+ for (let i = 0; i < containers.length; i += 1) {
+ const container = containers[i];
+ try {
+ setPortainerAgentTargetHeader(container.NodeName);
+ await action(endpointId, container.Id);
+ notifications.success(successMessage, container.Names[0]);
+ } catch (err) {
+ notifications.error(
+ 'Failure',
+ err as Error,
+ `${errorMessage}:${container.Names[0]}`
+ );
+ }
+ }
+
+ router.stateService.reload();
+ }
+
+ async function removeSelectedContainers(
+ containers: DockerContainer[],
+ cleanVolumes: boolean
+ ) {
+ for (let i = 0; i < containers.length; i += 1) {
+ const container = containers[i];
+ try {
+ setPortainerAgentTargetHeader(container.NodeName);
+ await removeContainer(endpointId, container, cleanVolumes);
+ notifications.success(
+ 'Container successfully removed',
+ container.Names[0]
+ );
+ } catch (err) {
+ notifications.error(
+ 'Failure',
+ err as Error,
+ 'Unable to remove container'
+ );
+ }
+ }
+
+ router.stateService.reload();
+ }
+}
diff --git a/app/docker/containers/components/ContainersDatatable/ContainersDatatableContainer.tsx b/app/docker/containers/components/ContainersDatatable/ContainersDatatableContainer.tsx
new file mode 100644
index 000000000..58dc99d7d
--- /dev/null
+++ b/app/docker/containers/components/ContainersDatatable/ContainersDatatableContainer.tsx
@@ -0,0 +1,52 @@
+import { react2angular } from '@/react-tools/react2angular';
+import { EnvironmentProvider } from '@/portainer/environments/useEnvironment';
+import { TableSettingsProvider } from '@/portainer/components/datatables/components/useTableSettings';
+import { SearchBarProvider } from '@/portainer/components/datatables/components/SearchBar';
+import type { Environment } from '@/portainer/environments/types';
+
+import {
+ ContainersDatatable,
+ ContainerTableProps,
+} from './ContainersDatatable';
+
+interface Props extends ContainerTableProps {
+ endpoint: Environment;
+}
+
+export function ContainersDatatableContainer({ endpoint, ...props }: Props) {
+ const defaultSettings = {
+ autoRefreshRate: 0,
+ truncateContainerName: 32,
+ hiddenQuickActions: [],
+ hiddenColumns: [],
+ pageSize: 10,
+ sortBy: { id: 'state', desc: false },
+ };
+
+ return (
+
+
+
+ {/* eslint-disable-next-line react/jsx-props-no-spreading */}
+
+
+
+
+ );
+}
+
+export const ContainersDatatableAngular = react2angular(
+ ContainersDatatableContainer,
+ [
+ 'endpoint',
+ 'isAddActionVisible',
+ 'containerService',
+ 'httpRequestHelper',
+ 'notifications',
+ 'modalService',
+ 'dataset',
+ 'onRefresh',
+ 'isHostColumnVisible',
+ 'autoFocusSearch',
+ ]
+);
diff --git a/app/docker/containers/components/ContainersDatatable/ContainersDatatableSettings.tsx b/app/docker/containers/components/ContainersDatatable/ContainersDatatableSettings.tsx
new file mode 100644
index 000000000..174c790b3
--- /dev/null
+++ b/app/docker/containers/components/ContainersDatatable/ContainersDatatableSettings.tsx
@@ -0,0 +1,35 @@
+import { TableSettingsMenuAutoRefresh } from '@/portainer/components/datatables/components/TableSettingsMenuAutoRefresh';
+import { useTableSettings } from '@/portainer/components/datatables/components/useTableSettings';
+import { Checkbox } from '@/portainer/components/form-components/Checkbox';
+import type { ContainersTableSettings } from '@/docker/containers/types';
+
+export function ContainersDatatableSettings() {
+ const { settings, setTableSettings } = useTableSettings<
+ ContainersTableSettings
+ >();
+
+ return (
+ <>
+ 0}
+ onChange={() =>
+ setTableSettings((settings) => ({
+ ...settings,
+ truncateContainerName: settings.truncateContainerName > 0 ? 0 : 32,
+ }))
+ }
+ />
+
+
+ >
+ );
+
+ function handleRefreshRateChange(autoRefreshRate: number) {
+ setTableSettings({ autoRefreshRate });
+ }
+}
diff --git a/app/docker/containers/components/ContainersDatatable/columns/created.tsx b/app/docker/containers/components/ContainersDatatable/columns/created.tsx
new file mode 100644
index 000000000..15469be36
--- /dev/null
+++ b/app/docker/containers/components/ContainersDatatable/columns/created.tsx
@@ -0,0 +1,14 @@
+import { Column } from 'react-table';
+
+import { isoDateFromTimestamp } from '@/portainer/filters/filters';
+import type { DockerContainer } from '@/docker/containers/types';
+
+export const created: Column = {
+ Header: 'Created',
+ accessor: 'Created',
+ id: 'created',
+ Cell: ({ value }) => isoDateFromTimestamp(value),
+ disableFilters: true,
+ canHide: true,
+ Filter: () => null,
+};
diff --git a/app/docker/containers/components/ContainersDatatable/columns/host.tsx b/app/docker/containers/components/ContainersDatatable/columns/host.tsx
new file mode 100644
index 000000000..c2ac71d34
--- /dev/null
+++ b/app/docker/containers/components/ContainersDatatable/columns/host.tsx
@@ -0,0 +1,13 @@
+import { Column } from 'react-table';
+
+import type { DockerContainer } from '@/docker/containers/types';
+
+export const host: Column = {
+ Header: 'Host',
+ accessor: (row) => row.NodeName || '-',
+ id: 'host',
+ disableFilters: true,
+ canHide: true,
+ sortType: 'string',
+ Filter: () => null,
+};
diff --git a/app/docker/containers/components/ContainersDatatable/columns/image.tsx b/app/docker/containers/components/ContainersDatatable/columns/image.tsx
new file mode 100644
index 000000000..f2c2a1622
--- /dev/null
+++ b/app/docker/containers/components/ContainersDatatable/columns/image.tsx
@@ -0,0 +1,51 @@
+import { Column } from 'react-table';
+import { useSref } from '@uirouter/react';
+
+import { useEnvironment } from '@/portainer/environments/useEnvironment';
+import { EnvironmentStatus } from '@/portainer/environments/types';
+import type { DockerContainer } from '@/docker/containers/types';
+
+export const image: Column = {
+ Header: 'Image',
+ accessor: 'Image',
+ id: 'image',
+ disableFilters: true,
+ Cell: ImageCell,
+ canHide: true,
+ sortType: 'string',
+ Filter: () => null,
+};
+
+interface Props {
+ value: string;
+}
+
+function ImageCell({ value: imageName }: Props) {
+ const endpoint = useEnvironment();
+ const offlineMode = endpoint.Status !== EnvironmentStatus.Up;
+
+ const shortImageName = trimSHASum(imageName);
+
+ const linkProps = useSref('docker.images.image', { id: imageName });
+ if (offlineMode) {
+ return shortImageName;
+ }
+
+ return (
+
+ {shortImageName}
+
+ );
+
+ function trimSHASum(imageName: string) {
+ if (!imageName) {
+ return '';
+ }
+
+ if (imageName.indexOf('sha256:') === 0) {
+ return imageName.substring(7, 19);
+ }
+
+ return imageName.split('@sha256')[0];
+ }
+}
diff --git a/app/docker/containers/components/ContainersDatatable/columns/index.tsx b/app/docker/containers/components/ContainersDatatable/columns/index.tsx
new file mode 100644
index 000000000..0366a6097
--- /dev/null
+++ b/app/docker/containers/components/ContainersDatatable/columns/index.tsx
@@ -0,0 +1,30 @@
+import { useMemo } from 'react';
+
+import { created } from './created';
+import { host } from './host';
+import { image } from './image';
+import { ip } from './ip';
+import { name } from './name';
+import { ownership } from './ownership';
+import { ports } from './ports';
+import { quickActions } from './quick-actions';
+import { stack } from './stack';
+import { state } from './state';
+
+export function useColumns() {
+ return useMemo(
+ () => [
+ name,
+ state,
+ quickActions,
+ stack,
+ image,
+ created,
+ ip,
+ host,
+ ports,
+ ownership,
+ ],
+ []
+ );
+}
diff --git a/app/docker/containers/components/ContainersDatatable/columns/ip.tsx b/app/docker/containers/components/ContainersDatatable/columns/ip.tsx
new file mode 100644
index 000000000..76371546f
--- /dev/null
+++ b/app/docker/containers/components/ContainersDatatable/columns/ip.tsx
@@ -0,0 +1,12 @@
+import { Column } from 'react-table';
+
+import type { DockerContainer } from '@/docker/containers/types';
+
+export const ip: Column = {
+ Header: 'IP Address',
+ accessor: (row) => row.IP || '-',
+ id: 'ip',
+ disableFilters: true,
+ canHide: true,
+ Filter: () => null,
+};
diff --git a/app/docker/containers/components/ContainersDatatable/columns/name.tsx b/app/docker/containers/components/ContainersDatatable/columns/name.tsx
new file mode 100644
index 000000000..21d1b68a2
--- /dev/null
+++ b/app/docker/containers/components/ContainersDatatable/columns/name.tsx
@@ -0,0 +1,54 @@
+import { CellProps, Column, TableInstance } from 'react-table';
+import _ from 'lodash-es';
+import { useSref } from '@uirouter/react';
+
+import { useEnvironment } from '@/portainer/environments/useEnvironment';
+import { useTableSettings } from '@/portainer/components/datatables/components/useTableSettings';
+import type {
+ ContainersTableSettings,
+ DockerContainer,
+} from '@/docker/containers/types';
+
+export const name: Column = {
+ Header: 'Name',
+ accessor: (row) => {
+ const name = row.Names[0];
+ return name.substring(1, name.length);
+ },
+ id: 'name',
+ Cell: NameCell,
+ disableFilters: true,
+ Filter: () => null,
+ canHide: true,
+ sortType: 'string',
+};
+
+export function NameCell({
+ value: name,
+ row: { original: container },
+}: CellProps) {
+ const { settings } = useTableSettings();
+ const truncate = settings.truncateContainerName;
+ const endpoint = useEnvironment();
+ const offlineMode = endpoint.Status !== 1;
+
+ const linkProps = useSref('docker.containers.container', {
+ id: container.Id,
+ nodeName: container.NodeName,
+ });
+
+ let shortName = name;
+ if (truncate > 0) {
+ shortName = _.truncate(name, { length: truncate });
+ }
+
+ if (offlineMode) {
+ return {shortName};
+ }
+
+ return (
+
+ {shortName}
+
+ );
+}
diff --git a/app/docker/containers/components/ContainersDatatable/columns/ownership.tsx b/app/docker/containers/components/ContainersDatatable/columns/ownership.tsx
new file mode 100644
index 000000000..21b451552
--- /dev/null
+++ b/app/docker/containers/components/ContainersDatatable/columns/ownership.tsx
@@ -0,0 +1,34 @@
+import { Column } from 'react-table';
+import clsx from 'clsx';
+
+import { ownershipIcon } from '@/portainer/filters/filters';
+import { ResourceControlOwnership } from '@/portainer/models/resourceControl/resourceControlOwnership';
+import type { DockerContainer } from '@/docker/containers/types';
+
+export const ownership: Column = {
+ Header: 'Ownership',
+ id: 'ownership',
+ accessor: (row) =>
+ row.ResourceControl?.Ownership || ResourceControlOwnership.ADMINISTRATORS,
+ Cell: OwnershipCell,
+ disableFilters: true,
+ canHide: true,
+ sortType: 'string',
+ Filter: () => null,
+};
+
+interface Props {
+ value: 'public' | 'private' | 'restricted' | 'administrators';
+}
+
+function OwnershipCell({ value }: Props) {
+ return (
+ <>
+
+ {value || ResourceControlOwnership.ADMINISTRATORS}
+ >
+ );
+}
diff --git a/app/docker/containers/components/ContainersDatatable/columns/ports.tsx b/app/docker/containers/components/ContainersDatatable/columns/ports.tsx
new file mode 100644
index 000000000..370528559
--- /dev/null
+++ b/app/docker/containers/components/ContainersDatatable/columns/ports.tsx
@@ -0,0 +1,41 @@
+import { Column } from 'react-table';
+import _ from 'lodash-es';
+
+import { useEnvironment } from '@/portainer/environments/useEnvironment';
+import type { DockerContainer, Port } from '@/docker/containers/types';
+
+export const ports: Column = {
+ Header: 'Published Ports',
+ accessor: 'Ports',
+ id: 'ports',
+ Cell: PortsCell,
+ disableSortBy: true,
+ disableFilters: true,
+ canHide: true,
+ Filter: () => null,
+};
+
+interface Props {
+ value: Port[];
+}
+
+function PortsCell({ value: ports }: Props) {
+ const { PublicURL: publicUrl } = useEnvironment();
+
+ if (ports.length === 0) {
+ return '-';
+ }
+
+ return _.uniqBy(ports, 'public').map((port) => (
+
+
+ {port.public}:{port.private}
+
+ ));
+}
diff --git a/app/docker/containers/components/ContainersDatatable/columns/quick-actions.tsx b/app/docker/containers/components/ContainersDatatable/columns/quick-actions.tsx
new file mode 100644
index 000000000..04921be12
--- /dev/null
+++ b/app/docker/containers/components/ContainersDatatable/columns/quick-actions.tsx
@@ -0,0 +1,70 @@
+import { CellProps, Column } from 'react-table';
+
+import { useTableSettings } from '@/portainer/components/datatables/components/useTableSettings';
+import { useEnvironment } from '@/portainer/environments/useEnvironment';
+import { useAuthorizations } from '@/portainer/hooks/useUser';
+import { ContainerQuickActions } from '@/docker/components/container-quick-actions/ContainerQuickActions';
+import type {
+ ContainersTableSettings,
+ DockerContainer,
+} from '@/docker/containers/types';
+import { EnvironmentStatus } from '@/portainer/environments/types';
+
+export const quickActions: Column = {
+ Header: 'Quick Actions',
+ id: 'actions',
+ Cell: QuickActionsCell,
+ disableFilters: true,
+ disableSortBy: true,
+ canHide: true,
+ sortType: 'string',
+ Filter: () => null,
+};
+
+function QuickActionsCell({
+ row: { original: container },
+}: CellProps) {
+ const endpoint = useEnvironment();
+ const offlineMode = endpoint.Status !== EnvironmentStatus.Up;
+
+ const { settings } = useTableSettings();
+
+ const { hiddenQuickActions = [] } = settings;
+
+ const wrapperState = {
+ showQuickActionAttach: !hiddenQuickActions.includes('attach'),
+ showQuickActionExec: !hiddenQuickActions.includes('exec'),
+ showQuickActionInspect: !hiddenQuickActions.includes('inspect'),
+ showQuickActionLogs: !hiddenQuickActions.includes('logs'),
+ showQuickActionStats: !hiddenQuickActions.includes('stats'),
+ };
+
+ const someOn =
+ wrapperState.showQuickActionAttach ||
+ wrapperState.showQuickActionExec ||
+ wrapperState.showQuickActionInspect ||
+ wrapperState.showQuickActionLogs ||
+ wrapperState.showQuickActionStats;
+
+ const isAuthorized = useAuthorizations([
+ 'DockerContainerStats',
+ 'DockerContainerLogs',
+ 'DockerExecStart',
+ 'DockerContainerInspect',
+ 'DockerTaskInspect',
+ 'DockerTaskLogs',
+ ]);
+
+ if (offlineMode || !someOn || !isAuthorized) {
+ return null;
+ }
+
+ return (
+
+ );
+}
diff --git a/app/docker/containers/components/ContainersDatatable/columns/stack.tsx b/app/docker/containers/components/ContainersDatatable/columns/stack.tsx
new file mode 100644
index 000000000..e16a8b817
--- /dev/null
+++ b/app/docker/containers/components/ContainersDatatable/columns/stack.tsx
@@ -0,0 +1,13 @@
+import { Column } from 'react-table';
+
+import type { DockerContainer } from '@/docker/containers/types';
+
+export const stack: Column = {
+ Header: 'Stack',
+ accessor: (row) => row.StackName || '-',
+ id: 'stack',
+ sortType: 'string',
+ disableFilters: true,
+ canHide: true,
+ Filter: () => null,
+};
diff --git a/app/docker/containers/components/ContainersDatatable/columns/state.tsx b/app/docker/containers/components/ContainersDatatable/columns/state.tsx
new file mode 100644
index 000000000..75421dafe
--- /dev/null
+++ b/app/docker/containers/components/ContainersDatatable/columns/state.tsx
@@ -0,0 +1,60 @@
+import { Column } from 'react-table';
+import clsx from 'clsx';
+import _ from 'lodash-es';
+
+import { DefaultFilter } from '@/portainer/components/datatables/components/Filter';
+import type {
+ DockerContainer,
+ DockerContainerStatus,
+} from '@/docker/containers/types';
+
+export const state: Column = {
+ Header: 'State',
+ accessor: 'Status',
+ id: 'state',
+ Cell: StatusCell,
+ sortType: 'string',
+ filter: 'multiple',
+ Filter: DefaultFilter,
+ canHide: true,
+};
+
+function StatusCell({ value: status }: { value: DockerContainerStatus }) {
+ const statusNormalized = _.toLower(status);
+ const hasHealthCheck = ['starting', 'healthy', 'unhealthy'].includes(
+ statusNormalized
+ );
+
+ const statusClassName = getClassName();
+
+ return (
+
+ {status}
+
+ );
+
+ function getClassName() {
+ if (includeString(['paused', 'starting', 'unhealthy'])) {
+ return 'warning';
+ }
+
+ if (includeString(['created'])) {
+ return 'info';
+ }
+
+ if (includeString(['stopped', 'dead', 'exited'])) {
+ return 'danger';
+ }
+
+ return 'success';
+
+ function includeString(values: DockerContainerStatus[]) {
+ return values.some((val) => statusNormalized.includes(val));
+ }
+ }
+}
diff --git a/app/docker/containers/containers.service.ts b/app/docker/containers/containers.service.ts
new file mode 100644
index 000000000..bce1ee41d
--- /dev/null
+++ b/app/docker/containers/containers.service.ts
@@ -0,0 +1,101 @@
+import { EnvironmentId } from '@/portainer/environments/types';
+import PortainerError from '@/portainer/error';
+import axios from '@/portainer/services/axios';
+
+import { genericHandler } from '../rest/response/handlers';
+
+import { ContainerId, DockerContainer } from './types';
+
+export async function startContainer(
+ endpointId: EnvironmentId,
+ id: ContainerId
+) {
+ await axios.post(
+ urlBuilder(endpointId, id, 'start'),
+ {},
+ { transformResponse: genericHandler }
+ );
+}
+
+export async function stopContainer(
+ endpointId: EnvironmentId,
+ id: ContainerId
+) {
+ await axios.post(urlBuilder(endpointId, id, 'stop'), {});
+}
+
+export async function restartContainer(
+ endpointId: EnvironmentId,
+ id: ContainerId
+) {
+ await axios.post(urlBuilder(endpointId, id, 'restart'), {});
+}
+
+export async function killContainer(
+ endpointId: EnvironmentId,
+ id: ContainerId
+) {
+ await axios.post(urlBuilder(endpointId, id, 'kill'), {});
+}
+
+export async function pauseContainer(
+ endpointId: EnvironmentId,
+ id: ContainerId
+) {
+ await axios.post(urlBuilder(endpointId, id, 'pause'), {});
+}
+
+export async function resumeContainer(
+ endpointId: EnvironmentId,
+ id: ContainerId
+) {
+ await axios.post(urlBuilder(endpointId, id, 'unpause'), {});
+}
+
+export async function renameContainer(
+ endpointId: EnvironmentId,
+ id: ContainerId,
+ name: string
+) {
+ await axios.post(
+ urlBuilder(endpointId, id, 'rename'),
+ {},
+ { params: { name }, transformResponse: genericHandler }
+ );
+}
+
+export async function removeContainer(
+ endpointId: EnvironmentId,
+ container: DockerContainer,
+ removeVolumes: boolean
+) {
+ try {
+ const { data } = await axios.delete(
+ urlBuilder(endpointId, container.Id),
+ {
+ params: { v: removeVolumes ? 1 : 0, force: true },
+ transformResponse: genericHandler,
+ }
+ );
+
+ if (data && data.message) {
+ throw new PortainerError(data.message);
+ }
+ } catch (e) {
+ throw new PortainerError('Unable to remove container', e as Error);
+ }
+}
+
+function urlBuilder(
+ endpointId: EnvironmentId,
+ id: ContainerId,
+ action?: string
+) {
+ const url = `/endpoints/${endpointId}/docker/containers/${id}`;
+
+ if (action) {
+ return `${url}/${action}`;
+ }
+
+ return url;
+}
diff --git a/app/docker/containers/index.ts b/app/docker/containers/index.ts
new file mode 100644
index 000000000..ae78ebc14
--- /dev/null
+++ b/app/docker/containers/index.ts
@@ -0,0 +1,7 @@
+import angular from 'angular';
+
+import { ContainersDatatableAngular } from './components/ContainersDatatable/ContainersDatatableContainer';
+
+export default angular
+ .module('portainer.docker.containers', [])
+ .component('containersDatatable', ContainersDatatableAngular).name;
diff --git a/app/docker/containers/types.ts b/app/docker/containers/types.ts
new file mode 100644
index 000000000..006f2dac2
--- /dev/null
+++ b/app/docker/containers/types.ts
@@ -0,0 +1,45 @@
+import { ResourceControlViewModel } from '@/portainer/models/resourceControl/resourceControl';
+
+export type DockerContainerStatus =
+ | 'paused'
+ | 'stopped'
+ | 'created'
+ | 'healthy'
+ | 'unhealthy'
+ | 'starting'
+ | 'running'
+ | 'dead'
+ | 'exited';
+
+export type QuickAction = 'attach' | 'exec' | 'inspect' | 'logs' | 'stats';
+
+export interface ContainersTableSettings {
+ hiddenQuickActions: QuickAction[];
+ hiddenColumns: string[];
+ truncateContainerName: number;
+ autoRefreshRate: number;
+ pageSize: number;
+ sortBy: { id: string; desc: boolean };
+}
+
+export interface Port {
+ host: string;
+ public: string;
+ private: string;
+}
+
+export type ContainerId = string;
+
+export type DockerContainer = {
+ IsPortainer: boolean;
+ Status: DockerContainerStatus;
+ NodeName: string;
+ Id: ContainerId;
+ IP: string;
+ Names: string[];
+ Created: string;
+ ResourceControl: ResourceControlViewModel;
+ Ports: Port[];
+ StackName?: string;
+ Image: string;
+};
diff --git a/app/docker/rest/container.js b/app/docker/rest/container.js
index 203d16201..f98409c91 100644
--- a/app/docker/rest/container.js
+++ b/app/docker/rest/container.js
@@ -24,26 +24,6 @@ angular.module('portainer.docker').factory('Container', [
method: 'GET',
params: { action: 'json' },
},
- stop: {
- method: 'POST',
- params: { id: '@id', action: 'stop' },
- },
- restart: {
- method: 'POST',
- params: { id: '@id', action: 'restart' },
- },
- kill: {
- method: 'POST',
- params: { id: '@id', action: 'kill' },
- },
- pause: {
- method: 'POST',
- params: { id: '@id', action: 'pause' },
- },
- unpause: {
- method: 'POST',
- params: { id: '@id', action: 'unpause' },
- },
logs: {
method: 'GET',
params: { id: '@id', action: 'logs' },
@@ -60,27 +40,12 @@ angular.module('portainer.docker').factory('Container', [
params: { id: '@id', action: 'top' },
ignoreLoadingBar: true,
},
- start: {
- method: 'POST',
- params: { id: '@id', action: 'start' },
- transformResponse: genericHandler,
- },
create: {
method: 'POST',
params: { action: 'create' },
transformResponse: genericHandler,
ignoreLoadingBar: true,
},
- remove: {
- method: 'DELETE',
- params: { id: '@id', v: '@v', force: '@force' },
- transformResponse: genericHandler,
- },
- rename: {
- method: 'POST',
- params: { id: '@id', action: 'rename', name: '@name' },
- transformResponse: genericHandler,
- },
exec: {
method: 'POST',
params: { id: '@id', action: 'exec' },
diff --git a/app/docker/services/containerService.js b/app/docker/services/containerService.js
index 78fc42a68..f4fc85378 100644
--- a/app/docker/services/containerService.js
+++ b/app/docker/services/containerService.js
@@ -1,232 +1,206 @@
+import angular from 'angular';
+import {
+ killContainer,
+ pauseContainer,
+ removeContainer,
+ renameContainer,
+ restartContainer,
+ resumeContainer,
+ startContainer,
+ stopContainer,
+} from '@/docker/containers/containers.service';
import { ContainerDetailsViewModel, ContainerStatsViewModel, ContainerViewModel } from '../models/container';
-angular.module('portainer.docker').factory('ContainerService', [
- '$q',
- 'Container',
- 'ResourceControlService',
- 'LogHelper',
- '$timeout',
- function ContainerServiceFactory($q, Container, ResourceControlService, LogHelper, $timeout) {
- 'use strict';
- var service = {};
+angular.module('portainer.docker').factory('ContainerService', ContainerServiceFactory);
- service.container = function (id) {
- var deferred = $q.defer();
+/* @ngInject */
+function ContainerServiceFactory($q, Container, LogHelper, $timeout, EndpointProvider) {
+ const service = {
+ killContainer: withEndpointId(killContainer),
+ pauseContainer: withEndpointId(pauseContainer),
+ renameContainer: withEndpointId(renameContainer),
+ restartContainer: withEndpointId(restartContainer),
+ resumeContainer: withEndpointId(resumeContainer),
+ startContainer: withEndpointId(startContainer),
+ stopContainer: withEndpointId(stopContainer),
+ remove: withEndpointId(removeContainer),
+ updateRestartPolicy,
+ updateLimits,
+ };
- Container.get({ id: id })
- .$promise.then(function success(data) {
- var container = new ContainerDetailsViewModel(data);
- deferred.resolve(container);
- })
- .catch(function error(err) {
- deferred.reject({ msg: 'Unable to retrieve container information', err: err });
+ service.container = function (id) {
+ var deferred = $q.defer();
+
+ Container.get({ id: id })
+ .$promise.then(function success(data) {
+ var container = new ContainerDetailsViewModel(data);
+ deferred.resolve(container);
+ })
+ .catch(function error(err) {
+ deferred.reject({ msg: 'Unable to retrieve container information', err: err });
+ });
+
+ return deferred.promise;
+ };
+
+ service.containers = function (all, filters) {
+ var deferred = $q.defer();
+ Container.query({ all: all, filters: filters })
+ .$promise.then(function success(data) {
+ var containers = data.map(function (item) {
+ return new ContainerViewModel(item);
});
+ deferred.resolve(containers);
+ })
+ .catch(function error(err) {
+ deferred.reject({ msg: 'Unable to retrieve containers', err: err });
+ });
- return deferred.promise;
- };
+ return deferred.promise;
+ };
- service.containers = function (all, filters) {
- var deferred = $q.defer();
- Container.query({ all: all, filters: filters })
- .$promise.then(function success(data) {
- var containers = data.map(function (item) {
- return new ContainerViewModel(item);
- });
- deferred.resolve(containers);
- })
- .catch(function error(err) {
- deferred.reject({ msg: 'Unable to retrieve containers', err: err });
- });
+ service.resizeTTY = function (id, width, height, timeout) {
+ var deferred = $q.defer();
- return deferred.promise;
- };
-
- service.resizeTTY = function (id, width, height, timeout) {
- var deferred = $q.defer();
-
- $timeout(function () {
- Container.resize({}, { id: id, height: height, width: width })
- .$promise.then(function success(data) {
- if (data.message) {
- deferred.reject({ msg: 'Unable to resize tty of container ' + id, err: data.message });
- } else {
- deferred.resolve(data);
- }
- })
- .catch(function error(err) {
- deferred.reject({ msg: 'Unable to resize tty of container ' + id, err: err });
- });
- }, timeout);
-
- return deferred.promise;
- };
-
- service.startContainer = function (id) {
- return Container.start({ id: id }, {}).$promise;
- };
-
- service.stopContainer = function (id) {
- return Container.stop({ id: id }, {}).$promise;
- };
-
- service.restartContainer = function (id) {
- return Container.restart({ id: id }, {}).$promise;
- };
-
- service.killContainer = function (id) {
- return Container.kill({ id: id }, {}).$promise;
- };
-
- service.pauseContainer = function (id) {
- return Container.pause({ id: id }, {}).$promise;
- };
-
- service.resumeContainer = function (id) {
- return Container.unpause({ id: id }, {}).$promise;
- };
-
- service.renameContainer = function (id, newContainerName) {
- return Container.rename({ id: id, name: newContainerName }, {}).$promise;
- };
-
- service.updateRestartPolicy = updateRestartPolicy;
- service.updateLimits = updateLimits;
-
- function updateRestartPolicy(id, restartPolicy, maximumRetryCounts) {
- return Container.update({ id: id }, { RestartPolicy: { Name: restartPolicy, MaximumRetryCount: maximumRetryCounts } }).$promise;
- }
-
- function updateLimits(id, config) {
- return Container.update(
- { id: id },
- {
- // MemorySwap: must be set
- // -1: non limits, 0: treated as unset(cause update error).
- MemoryReservation: config.HostConfig.MemoryReservation,
- Memory: config.HostConfig.Memory,
- MemorySwap: -1,
- NanoCpus: config.HostConfig.NanoCpus,
- }
- ).$promise;
- }
-
- service.createContainer = function (configuration) {
- var deferred = $q.defer();
- Container.create(configuration)
- .$promise.then(function success(data) {
- deferred.resolve(data);
- })
- .catch(function error(err) {
- deferred.reject({ msg: 'Unable to create container', err: err });
- });
- return deferred.promise;
- };
-
- service.createAndStartContainer = function (configuration) {
- var deferred = $q.defer();
- var container;
- service
- .createContainer(configuration)
- .then(function success(data) {
- container = data;
- return service.startContainer(container.Id);
- })
- .then(function success() {
- deferred.resolve(container);
- })
- .catch(function error(err) {
- deferred.reject(err);
- });
- return deferred.promise;
- };
-
- service.remove = function (container, removeVolumes) {
- var deferred = $q.defer();
-
- Container.remove({ id: container.Id, v: removeVolumes ? 1 : 0, force: true })
+ $timeout(function () {
+ Container.resize({}, { id: id, height: height, width: width })
.$promise.then(function success(data) {
if (data.message) {
- deferred.reject({ msg: data.message, err: data.message });
- } else {
- deferred.resolve();
- }
- })
- .catch(function error(err) {
- deferred.reject({ msg: 'Unable to remove container', err: err });
- });
-
- return deferred.promise;
- };
-
- service.createExec = function (execConfig) {
- var deferred = $q.defer();
-
- Container.exec({}, execConfig)
- .$promise.then(function success(data) {
- if (data.message) {
- deferred.reject({ msg: data.message, err: data.message });
+ deferred.reject({ msg: 'Unable to resize tty of container ' + id, err: data.message });
} else {
deferred.resolve(data);
}
})
.catch(function error(err) {
- deferred.reject(err);
+ deferred.reject({ msg: 'Unable to resize tty of container ' + id, err: err });
});
+ }, timeout);
- return deferred.promise;
+ return deferred.promise;
+ };
+
+ function updateRestartPolicy(id, restartPolicy, maximumRetryCounts) {
+ return Container.update({ id: id }, { RestartPolicy: { Name: restartPolicy, MaximumRetryCount: maximumRetryCounts } }).$promise;
+ }
+
+ function updateLimits(id, config) {
+ return Container.update(
+ { id: id },
+ {
+ // MemorySwap: must be set
+ // -1: non limits, 0: treated as unset(cause update error).
+ MemoryReservation: config.HostConfig.MemoryReservation,
+ Memory: config.HostConfig.Memory,
+ MemorySwap: -1,
+ NanoCpus: config.HostConfig.NanoCpus,
+ }
+ ).$promise;
+ }
+
+ service.createContainer = function (configuration) {
+ var deferred = $q.defer();
+ Container.create(configuration)
+ .$promise.then(function success(data) {
+ deferred.resolve(data);
+ })
+ .catch(function error(err) {
+ deferred.reject({ msg: 'Unable to create container', err: err });
+ });
+ return deferred.promise;
+ };
+
+ service.createAndStartContainer = function (configuration) {
+ var deferred = $q.defer();
+ var container;
+ service
+ .createContainer(configuration)
+ .then(function success(data) {
+ container = data;
+ return service.startContainer(container.Id);
+ })
+ .then(function success() {
+ deferred.resolve(container);
+ })
+ .catch(function error(err) {
+ deferred.reject(err);
+ });
+ return deferred.promise;
+ };
+
+ service.createExec = function (execConfig) {
+ var deferred = $q.defer();
+
+ Container.exec({}, execConfig)
+ .$promise.then(function success(data) {
+ if (data.message) {
+ deferred.reject({ msg: data.message, err: data.message });
+ } else {
+ deferred.resolve(data);
+ }
+ })
+ .catch(function error(err) {
+ deferred.reject(err);
+ });
+
+ return deferred.promise;
+ };
+
+ service.logs = function (id, stdout, stderr, timestamps, since, tail, stripHeaders) {
+ var deferred = $q.defer();
+
+ var parameters = {
+ id: id,
+ stdout: stdout || 0,
+ stderr: stderr || 0,
+ timestamps: timestamps || 0,
+ since: since || 0,
+ tail: tail || 'all',
};
- service.logs = function (id, stdout, stderr, timestamps, since, tail, stripHeaders) {
- var deferred = $q.defer();
+ Container.logs(parameters)
+ .$promise.then(function success(data) {
+ var logs = LogHelper.formatLogs(data.logs, stripHeaders);
+ deferred.resolve(logs);
+ })
+ .catch(function error(err) {
+ deferred.reject(err);
+ });
- var parameters = {
- id: id,
- stdout: stdout || 0,
- stderr: stderr || 0,
- timestamps: timestamps || 0,
- since: since || 0,
- tail: tail || 'all',
- };
+ return deferred.promise;
+ };
- Container.logs(parameters)
- .$promise.then(function success(data) {
- var logs = LogHelper.formatLogs(data.logs, stripHeaders);
- deferred.resolve(logs);
- })
- .catch(function error(err) {
- deferred.reject(err);
- });
+ service.containerStats = function (id) {
+ var deferred = $q.defer();
- return deferred.promise;
- };
+ Container.stats({ id: id })
+ .$promise.then(function success(data) {
+ var containerStats = new ContainerStatsViewModel(data);
+ deferred.resolve(containerStats);
+ })
+ .catch(function error(err) {
+ deferred.reject(err);
+ });
- service.containerStats = function (id) {
- var deferred = $q.defer();
+ return deferred.promise;
+ };
- Container.stats({ id: id })
- .$promise.then(function success(data) {
- var containerStats = new ContainerStatsViewModel(data);
- deferred.resolve(containerStats);
- })
- .catch(function error(err) {
- deferred.reject(err);
- });
+ service.containerTop = function (id) {
+ return Container.top({ id: id }).$promise;
+ };
- return deferred.promise;
- };
+ service.inspect = function (id) {
+ return Container.inspect({ id: id }).$promise;
+ };
- service.containerTop = function (id) {
- return Container.top({ id: id }).$promise;
- };
+ service.prune = function (filters) {
+ return Container.prune({ filters: filters }).$promise;
+ };
- service.inspect = function (id) {
- return Container.inspect({ id: id }).$promise;
- };
+ return service;
- service.prune = function (filters) {
- return Container.prune({ filters: filters }).$promise;
- };
+ function withEndpointId(func) {
+ const endpointId = EndpointProvider.endpointID();
- return service;
- },
-]);
+ return func.bind(null, endpointId);
+ }
+}
diff --git a/app/docker/views/containers/containers.html b/app/docker/views/containers/containers.html
index e31258211..73cdc8b3c 100644
--- a/app/docker/views/containers/containers.html
+++ b/app/docker/views/containers/containers.html
@@ -7,19 +7,15 @@
Containers
+
diff --git a/app/docker/views/containers/edit/containerController.js b/app/docker/views/containers/edit/containerController.js
index d3cc82f55..53c53a5ae 100644
--- a/app/docker/views/containers/edit/containerController.js
+++ b/app/docker/views/containers/edit/containerController.js
@@ -1,6 +1,7 @@
import moment from 'moment';
import _ from 'lodash-es';
import { PorImageRegistryModel } from 'Docker/models/porImageRegistry';
+import { confirmContainerDeletion } from '@/portainer/services/modal.service/prompt';
angular.module('portainer.docker').controller('ContainerController', [
'$q',
@@ -246,7 +247,8 @@ angular.module('portainer.docker').controller('ContainerController', [
if ($scope.container.State.Running) {
title = 'You are about to remove a running container.';
}
- ModalService.confirmContainerDeletion(title, function (result) {
+
+ confirmContainerDeletion(title, function (result) {
if (!result) {
return;
}
diff --git a/app/portainer/components/Button/ButtonGroup.tsx b/app/portainer/components/Button/ButtonGroup.tsx
index f807f28d8..9fd134d11 100644
--- a/app/portainer/components/Button/ButtonGroup.tsx
+++ b/app/portainer/components/Button/ButtonGroup.tsx
@@ -26,6 +26,6 @@ function sizeClass(size: Size | undefined) {
case 'large':
return 'btn-group-lg';
default:
- return 'btn-group-sm';
+ return '';
}
}
diff --git a/app/portainer/components/datatables/components/ColumnVisibilityMenu.tsx b/app/portainer/components/datatables/components/ColumnVisibilityMenu.tsx
new file mode 100644
index 000000000..051455117
--- /dev/null
+++ b/app/portainer/components/datatables/components/ColumnVisibilityMenu.tsx
@@ -0,0 +1,65 @@
+import clsx from 'clsx';
+import { Menu, MenuButton, MenuList } from '@reach/menu-button';
+import { ColumnInstance } from 'react-table';
+
+import { Checkbox } from '@/portainer/components/form-components/Checkbox';
+import type { DockerContainer } from '@/docker/containers/types';
+
+import { useTableContext } from './TableContainer';
+
+interface Props {
+ columns: ColumnInstance[];
+ onChange: (value: string[]) => void;
+ value: string[];
+}
+
+export function ColumnVisibilityMenu({ columns, onChange, value }: Props) {
+ useTableContext();
+
+ return (
+
+ );
+
+ function handleChangeColumnVisibility(colId: string, visible: boolean) {
+ if (visible) {
+ onChange(value.filter((id) => id !== colId));
+ return;
+ }
+
+ onChange([...value, colId]);
+ }
+}
diff --git a/app/portainer/components/datatables/components/Filter.tsx b/app/portainer/components/datatables/components/Filter.tsx
new file mode 100644
index 000000000..d31c62261
--- /dev/null
+++ b/app/portainer/components/datatables/components/Filter.tsx
@@ -0,0 +1,93 @@
+import clsx from 'clsx';
+import { useMemo } from 'react';
+import { Menu, MenuButton, MenuPopover } from '@reach/menu-button';
+import { ColumnInstance } from 'react-table';
+
+export function DefaultFilter({
+ column: { filterValue, setFilter, preFilteredRows, id },
+}: {
+ column: ColumnInstance;
+}) {
+ const options = useMemo(() => {
+ const options = new Set();
+ preFilteredRows.forEach((row) => {
+ options.add(row.values[id]);
+ });
+
+ return Array.from(options);
+ }, [id, preFilteredRows]);
+
+ return (
+
+ );
+}
+
+interface MultipleSelectionFilterProps {
+ options: string[];
+ value: string[];
+ filterKey: string;
+ onChange: (value: string[]) => void;
+}
+
+function MultipleSelectionFilter({
+ options,
+ value = [],
+ filterKey,
+ onChange,
+}: MultipleSelectionFilterProps) {
+ const enabled = value.length > 0;
+ return (
+
+
+
+ );
+
+ function handleChange(option: string) {
+ if (value.includes(option)) {
+ onChange(value.filter((o) => o !== option));
+
+ return;
+ }
+
+ onChange([...value, option]);
+ }
+}
diff --git a/app/portainer/components/datatables/components/QuickActionsSettings.tsx b/app/portainer/components/datatables/components/QuickActionsSettings.tsx
new file mode 100644
index 000000000..d5d34c4c4
--- /dev/null
+++ b/app/portainer/components/datatables/components/QuickActionsSettings.tsx
@@ -0,0 +1,49 @@
+import { Checkbox } from '@/portainer/components/form-components/Checkbox';
+
+import { useTableSettings } from './useTableSettings';
+
+export interface Action {
+ id: string;
+ label: string;
+}
+
+interface Props {
+ actions: Action[];
+}
+
+export interface QuickActionsSettingsType {
+ hiddenQuickActions: string[];
+}
+
+export function QuickActionsSettings({ actions }: Props) {
+ const { settings, setTableSettings } = useTableSettings<
+ QuickActionsSettingsType
+ >();
+
+ return (
+ <>
+ {actions.map(({ id, label }) => (
+ toggleAction(id, e.target.checked)}
+ />
+ ))}
+ >
+ );
+
+ function toggleAction(key: string, value: boolean) {
+ setTableSettings(({ hiddenQuickActions = [], ...settings }) => ({
+ ...settings,
+ hiddenQuickActions: value
+ ? hiddenQuickActions.filter((id) => id !== key)
+ : [...hiddenQuickActions, key],
+ }));
+ }
+}
+
+export function buildAction(id: string, label: string): Action {
+ return { id, label };
+}
diff --git a/app/portainer/components/datatables/components/SearchBar.tsx b/app/portainer/components/datatables/components/SearchBar.tsx
new file mode 100644
index 000000000..2c4f200f6
--- /dev/null
+++ b/app/portainer/components/datatables/components/SearchBar.tsx
@@ -0,0 +1,59 @@
+import { useContext, createContext, PropsWithChildren } from 'react';
+
+import { useLocalStorage } from '@/portainer/hooks/useLocalStorage';
+
+interface Props {
+ autoFocus: boolean;
+ value: string;
+ onChange(value: string): void;
+}
+
+export function SearchBar({ autoFocus, value, onChange }: Props) {
+ return (
+
+
+ onChange(e.target.value)}
+ placeholder="Search..."
+ />
+
+ );
+}
+
+const SearchBarContext = createContext<
+ [string, (value: string) => void] | null
+>(null);
+
+interface SearchBarProviderProps {
+ defaultValue?: string;
+}
+
+export function SearchBarProvider({
+ children,
+ defaultValue = '',
+}: PropsWithChildren) {
+ const [value, setValue] = useLocalStorage(
+ 'datatable_text_filter_containers',
+ defaultValue,
+ sessionStorage
+ );
+
+ return (
+
+ {children}
+
+ );
+}
+
+export function useSearchBarContext() {
+ const context = useContext(SearchBarContext);
+ if (context === null) {
+ throw new Error('should be used under SearchBarProvider');
+ }
+
+ return context;
+}
diff --git a/app/portainer/components/datatables/components/SelectedRowsCount.tsx b/app/portainer/components/datatables/components/SelectedRowsCount.tsx
new file mode 100644
index 000000000..50c983270
--- /dev/null
+++ b/app/portainer/components/datatables/components/SelectedRowsCount.tsx
@@ -0,0 +1,9 @@
+interface SelectedRowsCountProps {
+ value: number;
+}
+
+export function SelectedRowsCount({ value }: SelectedRowsCountProps) {
+ return value !== 0 ? (
+ {value} item(s) selected
+ ) : null;
+}
diff --git a/app/portainer/components/datatables/components/Table.tsx b/app/portainer/components/datatables/components/Table.tsx
new file mode 100644
index 000000000..b9c054b30
--- /dev/null
+++ b/app/portainer/components/datatables/components/Table.tsx
@@ -0,0 +1,29 @@
+import clsx from 'clsx';
+import { PropsWithChildren } from 'react';
+import { TableProps } from 'react-table';
+
+import { useTableContext } from './TableContainer';
+
+export function Table({
+ children,
+ className,
+ role,
+ style,
+}: PropsWithChildren) {
+ useTableContext();
+
+ return (
+
+ );
+}
diff --git a/app/portainer/components/datatables/components/TableActions.tsx b/app/portainer/components/datatables/components/TableActions.tsx
new file mode 100644
index 000000000..eedb0e4dd
--- /dev/null
+++ b/app/portainer/components/datatables/components/TableActions.tsx
@@ -0,0 +1,9 @@
+import { PropsWithChildren } from 'react';
+
+import { useTableContext } from './TableContainer';
+
+export function TableActions({ children }: PropsWithChildren) {
+ useTableContext();
+
+ return {children}
;
+}
diff --git a/app/portainer/components/datatables/components/TableContainer.tsx b/app/portainer/components/datatables/components/TableContainer.tsx
new file mode 100644
index 000000000..b9aef245f
--- /dev/null
+++ b/app/portainer/components/datatables/components/TableContainer.tsx
@@ -0,0 +1,25 @@
+import { createContext, PropsWithChildren, useContext } from 'react';
+
+import { Widget, WidgetBody } from '@/portainer/components/widget';
+
+const Context = createContext(null);
+
+export function useTableContext() {
+ const context = useContext(Context);
+
+ if (context == null) {
+ throw new Error('Should be nested inside a TableContainer component');
+ }
+}
+
+export function TableContainer({ children }: PropsWithChildren) {
+ return (
+
+
+
+ {children}
+
+
+
+ );
+}
diff --git a/app/portainer/components/datatables/components/TableFooter.tsx b/app/portainer/components/datatables/components/TableFooter.tsx
new file mode 100644
index 000000000..98d2d572f
--- /dev/null
+++ b/app/portainer/components/datatables/components/TableFooter.tsx
@@ -0,0 +1,9 @@
+import { PropsWithChildren } from 'react';
+
+import { useTableContext } from './TableContainer';
+
+export function TableFooter({ children }: PropsWithChildren) {
+ useTableContext();
+
+ return ;
+}
diff --git a/app/portainer/components/datatables/components/TableHeaderCell.module.css b/app/portainer/components/datatables/components/TableHeaderCell.module.css
new file mode 100644
index 000000000..8378bdcd2
--- /dev/null
+++ b/app/portainer/components/datatables/components/TableHeaderCell.module.css
@@ -0,0 +1,5 @@
+.sort-icon {
+ width: 1em;
+ height: 1em;
+ display: inline-block;
+}
diff --git a/app/portainer/components/datatables/components/TableHeaderCell.tsx b/app/portainer/components/datatables/components/TableHeaderCell.tsx
new file mode 100644
index 000000000..c9e35a090
--- /dev/null
+++ b/app/portainer/components/datatables/components/TableHeaderCell.tsx
@@ -0,0 +1,90 @@
+import clsx from 'clsx';
+import { PropsWithChildren, ReactNode } from 'react';
+import { TableHeaderProps } from 'react-table';
+
+import { Button } from '@/portainer/components/Button';
+
+import { useTableContext } from './TableContainer';
+import styles from './TableHeaderCell.module.css';
+
+interface Props {
+ canFilter: boolean;
+ canSort: boolean;
+ headerProps: TableHeaderProps;
+ isSorted: boolean;
+ isSortedDesc?: boolean;
+ onSortClick: (desc: boolean) => void;
+ render: () => ReactNode;
+ renderFilter: () => ReactNode;
+}
+
+export function TableHeaderCell({
+ headerProps: { className, role, style },
+ canSort,
+ render,
+ onSortClick,
+ isSorted,
+ isSortedDesc,
+ canFilter,
+ renderFilter,
+}: Props) {
+ useTableContext();
+
+ return (
+
+
+ {render()}
+
+ {canFilter ? renderFilter() : null}
+ |
+ );
+}
+
+interface SortWrapperProps {
+ canSort: boolean;
+ isSorted: boolean;
+ isSortedDesc?: boolean;
+ onClick: (desc: boolean) => void;
+}
+
+function SortWrapper({
+ canSort,
+ children,
+ onClick,
+ isSorted,
+ isSortedDesc,
+}: PropsWithChildren) {
+ if (!canSort) {
+ return <>{children}>;
+ }
+
+ return (
+
+ );
+}
diff --git a/app/portainer/components/datatables/components/TableHeaderRow.tsx b/app/portainer/components/datatables/components/TableHeaderRow.tsx
new file mode 100644
index 000000000..c0dcf7109
--- /dev/null
+++ b/app/portainer/components/datatables/components/TableHeaderRow.tsx
@@ -0,0 +1,46 @@
+import { HeaderGroup, TableHeaderProps } from 'react-table';
+
+import { useTableContext } from './TableContainer';
+import { TableHeaderCell } from './TableHeaderCell';
+
+interface Props = Record> {
+ headers: HeaderGroup[];
+ onSortChange(colId: string, desc: boolean): void;
+}
+
+export function TableHeaderRow<
+ D extends Record = Record
+>({
+ headers,
+ onSortChange,
+ className,
+ role,
+ style,
+}: Props & TableHeaderProps) {
+ useTableContext();
+
+ return (
+
+ {headers.map((column) => (
+ {
+ column.toggleSortBy(desc);
+ onSortChange(column.id, desc);
+ }}
+ isSorted={column.isSorted}
+ isSortedDesc={column.isSortedDesc}
+ render={() => column.render('Header')}
+ canFilter={!column.disableFilters}
+ renderFilter={() => column.render('Filter')}
+ />
+ ))}
+
+ );
+}
diff --git a/app/portainer/components/datatables/components/TableRow.tsx b/app/portainer/components/datatables/components/TableRow.tsx
new file mode 100644
index 000000000..a3c711ac6
--- /dev/null
+++ b/app/portainer/components/datatables/components/TableRow.tsx
@@ -0,0 +1,35 @@
+import { Cell, TableRowProps } from 'react-table';
+
+import { useTableContext } from './TableContainer';
+
+interface Props = Record>
+ extends TableRowProps {
+ cells: Cell[];
+}
+
+export function TableRow<
+ D extends Record = Record
+>({ cells, className, role, style }: Props) {
+ useTableContext();
+
+ return (
+
+ {cells.map((cell) => {
+ const cellProps = cell.getCellProps({
+ className: cell.className,
+ });
+
+ return (
+ |
+ {cell.render('Cell')}
+ |
+ );
+ })}
+
+ );
+}
diff --git a/app/portainer/components/datatables/components/TableSettingsMenu.tsx b/app/portainer/components/datatables/components/TableSettingsMenu.tsx
new file mode 100644
index 000000000..c82bc3b28
--- /dev/null
+++ b/app/portainer/components/datatables/components/TableSettingsMenu.tsx
@@ -0,0 +1,44 @@
+import clsx from 'clsx';
+import { Menu, MenuButton, MenuList } from '@reach/menu-button';
+import { PropsWithChildren, ReactNode } from 'react';
+
+import { useTableContext } from './TableContainer';
+
+interface Props {
+ quickActions: ReactNode;
+}
+
+export function TableSettingsMenu({
+ quickActions,
+ children,
+}: PropsWithChildren) {
+ useTableContext();
+
+ return (
+
+ );
+}
diff --git a/app/portainer/components/datatables/components/TableSettingsMenuAutoRefresh.module.css b/app/portainer/components/datatables/components/TableSettingsMenuAutoRefresh.module.css
new file mode 100644
index 000000000..415d20916
--- /dev/null
+++ b/app/portainer/components/datatables/components/TableSettingsMenuAutoRefresh.module.css
@@ -0,0 +1,9 @@
+.alert-visible {
+ opacity: 1;
+ transition: all 250ms linear;
+}
+
+.alert-hidden {
+ opacity: 0;
+ transition: all 250ms ease-out 2s;
+}
diff --git a/app/portainer/components/datatables/components/TableSettingsMenuAutoRefresh.tsx b/app/portainer/components/datatables/components/TableSettingsMenuAutoRefresh.tsx
new file mode 100644
index 000000000..e69276713
--- /dev/null
+++ b/app/portainer/components/datatables/components/TableSettingsMenuAutoRefresh.tsx
@@ -0,0 +1,65 @@
+import clsx from 'clsx';
+import { useState } from 'react';
+
+import { Checkbox } from '@/portainer/components/form-components/Checkbox';
+
+import styles from './TableSettingsMenuAutoRefresh.module.css';
+
+interface Props {
+ onChange(value: number): void;
+ value: number;
+}
+
+export function TableSettingsMenuAutoRefresh({ onChange, value }: Props) {
+ const [isCheckVisible, setIsCheckVisible] = useState(false);
+
+ const isEnabled = value > 0;
+
+ return (
+ <>
+ onChange(e.target.checked ? 10 : 0)}
+ />
+
+ {isEnabled && (
+
+
+
+ setIsCheckVisible(false)}
+ >
+
+
+
+ )}
+ >
+ );
+
+ function handleChange(value: string) {
+ onChange(Number(value));
+ setIsCheckVisible(true);
+ }
+}
diff --git a/app/portainer/components/datatables/components/TableTitle.tsx b/app/portainer/components/datatables/components/TableTitle.tsx
new file mode 100644
index 000000000..7f07ca41b
--- /dev/null
+++ b/app/portainer/components/datatables/components/TableTitle.tsx
@@ -0,0 +1,27 @@
+import clsx from 'clsx';
+import { PropsWithChildren } from 'react';
+
+import { useTableContext } from './TableContainer';
+
+interface Props {
+ icon: string;
+ label: string;
+}
+
+export function TableTitle({
+ icon,
+ label,
+ children,
+}: PropsWithChildren) {
+ useTableContext();
+
+ return (
+
+
+
+ {label}
+
+ {children}
+
+ );
+}
diff --git a/app/portainer/components/datatables/components/TableTitleActions.tsx b/app/portainer/components/datatables/components/TableTitleActions.tsx
new file mode 100644
index 000000000..b9135cdbc
--- /dev/null
+++ b/app/portainer/components/datatables/components/TableTitleActions.tsx
@@ -0,0 +1,9 @@
+import { PropsWithChildren } from 'react';
+
+import { useTableContext } from './TableContainer';
+
+export function TableTitleActions({ children }: PropsWithChildren) {
+ useTableContext();
+
+ return {children}
;
+}
diff --git a/app/portainer/components/datatables/components/filter-types.ts b/app/portainer/components/datatables/components/filter-types.ts
new file mode 100644
index 000000000..a38545eab
--- /dev/null
+++ b/app/portainer/components/datatables/components/filter-types.ts
@@ -0,0 +1,14 @@
+import { Row } from 'react-table';
+
+export function multiple<
+ D extends Record = Record
+>(rows: Row[], columnIds: string[], filterValue: string[] = []) {
+ if (filterValue.length === 0 || columnIds.length === 0) {
+ return rows;
+ }
+
+ return rows.filter((row) => {
+ const value = row.values[columnIds[0]];
+ return filterValue.includes(value);
+ });
+}
diff --git a/app/portainer/components/datatables/components/index.tsx b/app/portainer/components/datatables/components/index.tsx
new file mode 100644
index 000000000..1f32f2cb0
--- /dev/null
+++ b/app/portainer/components/datatables/components/index.tsx
@@ -0,0 +1,9 @@
+export { Table } from './Table';
+export { TableActions } from './TableActions';
+export { TableTitleActions } from './TableTitleActions';
+export { TableHeaderCell } from './TableHeaderCell';
+export { TableSettingsMenu } from './TableSettingsMenu';
+export { TableTitle } from './TableTitle';
+export { TableContainer } from './TableContainer';
+export { TableHeaderRow } from './TableHeaderRow';
+export { TableRow } from './TableRow';
diff --git a/app/portainer/components/datatables/components/useRepeater.ts b/app/portainer/components/datatables/components/useRepeater.ts
new file mode 100644
index 000000000..02c3a99ea
--- /dev/null
+++ b/app/portainer/components/datatables/components/useRepeater.ts
@@ -0,0 +1,42 @@
+import { useEffect, useCallback, useState } from 'react';
+
+export function useRepeater(
+ refreshRate: number,
+ onRefresh: () => Promise
+) {
+ const [intervalId, setIntervalId] = useState(null);
+
+ const stopRepeater = useCallback(() => {
+ if (!intervalId) {
+ return;
+ }
+
+ clearInterval(intervalId);
+ setIntervalId(null);
+ }, [intervalId]);
+
+ const startRepeater = useCallback(
+ (refreshRate) => {
+ if (intervalId) {
+ return;
+ }
+
+ setIntervalId(
+ setInterval(async () => {
+ await onRefresh();
+ }, refreshRate * 1000)
+ );
+ },
+ [intervalId]
+ );
+
+ useEffect(() => {
+ if (!refreshRate) {
+ stopRepeater();
+ } else {
+ startRepeater(refreshRate);
+ }
+
+ return stopRepeater;
+ }, [refreshRate, startRepeater, stopRepeater, intervalId]);
+}
diff --git a/app/portainer/components/datatables/components/useRowSelect.ts b/app/portainer/components/datatables/components/useRowSelect.ts
new file mode 100644
index 000000000..5c97c92e1
--- /dev/null
+++ b/app/portainer/components/datatables/components/useRowSelect.ts
@@ -0,0 +1,478 @@
+/* eslint no-param-reassign: ["error", { "props": false }] */
+import { ChangeEvent, useCallback, useMemo } from 'react';
+import {
+ actions,
+ makePropGetter,
+ ensurePluginOrder,
+ useGetLatest,
+ useMountedLayoutEffect,
+ Hooks,
+ TableInstance,
+ TableState,
+ ActionType,
+ ReducerTableState,
+ IdType,
+ Row,
+ PropGetter,
+ TableToggleRowsSelectedProps,
+ TableToggleAllRowsSelectedProps,
+} from 'react-table';
+
+type DefaultType = Record;
+
+interface UseRowSelectTableInstance
+ extends TableInstance {
+ isAllRowSelected: boolean;
+ selectSubRows: boolean;
+ getSubRows(row: Row): Row[];
+ isRowSelectable(row: Row): boolean;
+}
+
+const pluginName = 'useRowSelect';
+
+// Actions
+actions.resetSelectedRows = 'resetSelectedRows';
+actions.toggleAllRowsSelected = 'toggleAllRowsSelected';
+actions.toggleRowSelected = 'toggleRowSelected';
+actions.toggleAllPageRowsSelected = 'toggleAllPageRowsSelected';
+
+export function useRowSelect(hooks: Hooks) {
+ hooks.getToggleRowSelectedProps = [
+ defaultGetToggleRowSelectedProps as PropGetter<
+ D,
+ TableToggleRowsSelectedProps
+ >,
+ ];
+ hooks.getToggleAllRowsSelectedProps = [
+ defaultGetToggleAllRowsSelectedProps as PropGetter<
+ D,
+ TableToggleAllRowsSelectedProps
+ >,
+ ];
+ hooks.getToggleAllPageRowsSelectedProps = [
+ defaultGetToggleAllPageRowsSelectedProps as PropGetter<
+ D,
+ TableToggleAllRowsSelectedProps
+ >,
+ ];
+ hooks.stateReducers.push(
+ reducer as (
+ newState: TableState,
+ action: ActionType,
+ previousState?: TableState,
+ instance?: TableInstance
+ ) => ReducerTableState | undefined
+ );
+ hooks.useInstance.push(useInstance as (instance: TableInstance) => void);
+ hooks.prepareRow.push(prepareRow);
+}
+
+useRowSelect.pluginName = pluginName;
+
+function defaultGetToggleRowSelectedProps(
+ props: D,
+ { instance, row }: { instance: UseRowSelectTableInstance; row: Row }
+) {
+ const { manualRowSelectedKey = 'isSelected' } = instance;
+ let checked = false;
+
+ if (row.original && row.original[manualRowSelectedKey]) {
+ checked = true;
+ } else {
+ checked = row.isSelected;
+ }
+
+ return [
+ props,
+ {
+ onChange: (e: ChangeEvent) => {
+ row.toggleRowSelected(e.target.checked);
+ },
+ style: {
+ cursor: 'pointer',
+ },
+ checked,
+ title: 'Toggle Row Selected',
+ indeterminate: row.isSomeSelected,
+ disabled: !instance.isRowSelectable(row),
+ },
+ ];
+}
+
+function defaultGetToggleAllRowsSelectedProps(
+ props: D,
+ { instance }: { instance: UseRowSelectTableInstance }
+) {
+ return [
+ props,
+ {
+ onChange: (e: ChangeEvent) => {
+ instance.toggleAllRowsSelected(e.target.checked);
+ },
+ style: {
+ cursor: 'pointer',
+ },
+ checked: instance.isAllRowsSelected,
+ title: 'Toggle All Rows Selected',
+ indeterminate: Boolean(
+ !instance.isAllRowsSelected &&
+ Object.keys(instance.state.selectedRowIds).length
+ ),
+ },
+ ];
+}
+
+function defaultGetToggleAllPageRowsSelectedProps(
+ props: D,
+ { instance }: { instance: UseRowSelectTableInstance }
+) {
+ return [
+ props,
+ {
+ onChange(e: ChangeEvent) {
+ instance.toggleAllPageRowsSelected(e.target.checked);
+ },
+ style: {
+ cursor: 'pointer',
+ },
+ checked: instance.isAllPageRowsSelected,
+ title: 'Toggle All Current Page Rows Selected',
+ indeterminate: Boolean(
+ !instance.isAllPageRowsSelected &&
+ instance.page.some(({ id }) => instance.state.selectedRowIds[id])
+ ),
+ },
+ ];
+}
+
+function reducer>(
+ state: TableState,
+ action: ActionType,
+ _previousState?: TableState,
+ instance?: UseRowSelectTableInstance
+) {
+ if (action.type === actions.init) {
+ return {
+ ...state,
+ selectedRowIds: , boolean>>{},
+ };
+ }
+
+ if (action.type === actions.resetSelectedRows) {
+ return {
+ ...state,
+ selectedRowIds: instance?.initialState.selectedRowIds || {},
+ };
+ }
+
+ if (action.type === actions.toggleAllRowsSelected) {
+ const { value: setSelected } = action;
+
+ if (!instance) {
+ return state;
+ }
+
+ const {
+ isAllRowsSelected,
+ rowsById,
+ nonGroupedRowsById = rowsById,
+ isRowSelectable = defaultIsRowSelectable,
+ } = instance;
+
+ const selectAll =
+ typeof setSelected !== 'undefined' ? setSelected : !isAllRowsSelected;
+
+ // Only remove/add the rows that are visible on the screen
+ // Leave all the other rows that are selected alone.
+ const selectedRowIds = { ...state.selectedRowIds };
+
+ Object.keys(nonGroupedRowsById).forEach((rowId: IdType) => {
+ if (selectAll) {
+ const row = rowsById[rowId];
+ if (isRowSelectable(row)) {
+ selectedRowIds[rowId] = true;
+ }
+ } else {
+ delete selectedRowIds[rowId];
+ }
+ });
+
+ return {
+ ...state,
+ selectedRowIds,
+ };
+ }
+
+ if (action.type === actions.toggleRowSelected) {
+ if (!instance) {
+ return state;
+ }
+
+ const { id, value: setSelected } = action;
+ const {
+ rowsById,
+ selectSubRows = true,
+ getSubRows,
+ isRowSelectable = defaultIsRowSelectable,
+ } = instance;
+
+ const isSelected = state.selectedRowIds[id];
+ const shouldExist =
+ typeof setSelected !== 'undefined' ? setSelected : !isSelected;
+
+ if (isSelected === shouldExist) {
+ return state;
+ }
+
+ const newSelectedRowIds = { ...state.selectedRowIds };
+
+ // eslint-disable-next-line no-inner-declarations
+ function handleRowById(id: IdType) {
+ const row = rowsById[id];
+
+ if (!isRowSelectable(row)) {
+ return;
+ }
+
+ if (!row.isGrouped) {
+ if (shouldExist) {
+ newSelectedRowIds[id] = true;
+ } else {
+ delete newSelectedRowIds[id];
+ }
+ }
+
+ if (selectSubRows && getSubRows(row)) {
+ getSubRows(row).forEach((row) => handleRowById(row.id));
+ }
+ }
+
+ handleRowById(id);
+
+ return {
+ ...state,
+ selectedRowIds: newSelectedRowIds,
+ };
+ }
+
+ if (action.type === actions.toggleAllPageRowsSelected) {
+ if (!instance) {
+ return state;
+ }
+
+ const { value: setSelected } = action;
+ const {
+ page,
+ rowsById,
+ selectSubRows = true,
+ isAllPageRowsSelected,
+ getSubRows,
+ } = instance;
+
+ const selectAll =
+ typeof setSelected !== 'undefined' ? setSelected : !isAllPageRowsSelected;
+
+ const newSelectedRowIds = { ...state.selectedRowIds };
+
+ // eslint-disable-next-line no-inner-declarations
+ function handleRowById(id: IdType) {
+ const row = rowsById[id];
+
+ if (!row.isGrouped) {
+ if (selectAll) {
+ newSelectedRowIds[id] = true;
+ } else {
+ delete newSelectedRowIds[id];
+ }
+ }
+
+ if (selectSubRows && getSubRows(row)) {
+ getSubRows(row).forEach((row) => handleRowById(row.id));
+ }
+ }
+
+ page.forEach((row) => handleRowById(row.id));
+
+ return {
+ ...state,
+ selectedRowIds: newSelectedRowIds,
+ };
+ }
+ return state;
+}
+
+function useInstance>(
+ instance: UseRowSelectTableInstance
+) {
+ const {
+ data,
+ rows,
+ getHooks,
+ plugins,
+ rowsById,
+ nonGroupedRowsById = rowsById,
+ autoResetSelectedRows = true,
+ state: { selectedRowIds },
+ selectSubRows = true,
+ dispatch,
+ page,
+ getSubRows,
+ isRowSelectable,
+ } = instance;
+
+ ensurePluginOrder(
+ plugins,
+ ['useFilters', 'useGroupBy', 'useSortBy', 'useExpanded', 'usePagination'],
+ 'useRowSelect'
+ );
+
+ const selectedFlatRows = useMemo(() => {
+ const selectedFlatRows = >>[];
+
+ rows.forEach((row) => {
+ const isSelected = selectSubRows
+ ? getRowIsSelected(row, selectedRowIds, getSubRows)
+ : !!selectedRowIds[row.id];
+ row.isSelected = !!isSelected;
+ row.isSomeSelected = isSelected === null;
+
+ if (isSelected) {
+ selectedFlatRows.push(row);
+ }
+ });
+
+ return selectedFlatRows;
+ }, [rows, selectSubRows, selectedRowIds, getSubRows]);
+
+ let isAllRowsSelected = Boolean(
+ Object.keys(nonGroupedRowsById).length && Object.keys(selectedRowIds).length
+ );
+
+ let isAllPageRowsSelected = isAllRowsSelected;
+
+ if (isAllRowsSelected) {
+ if (
+ Object.keys(nonGroupedRowsById).some((id) => {
+ const row = rowsById[id];
+
+ return !selectedRowIds[id] && isRowSelectable(row);
+ })
+ ) {
+ isAllRowsSelected = false;
+ }
+ }
+
+ if (!isAllRowsSelected) {
+ if (
+ page &&
+ page.length &&
+ page.some(({ id }) => {
+ const row = rowsById[id];
+
+ return !selectedRowIds[id] && isRowSelectable(row);
+ })
+ ) {
+ isAllPageRowsSelected = false;
+ }
+ }
+
+ const getAutoResetSelectedRows = useGetLatest(autoResetSelectedRows);
+
+ useMountedLayoutEffect(() => {
+ if (getAutoResetSelectedRows()) {
+ dispatch({ type: actions.resetSelectedRows });
+ }
+ }, [dispatch, data]);
+
+ const toggleAllRowsSelected = useCallback(
+ (value) => dispatch({ type: actions.toggleAllRowsSelected, value }),
+ [dispatch]
+ );
+
+ const toggleAllPageRowsSelected = useCallback(
+ (value) => dispatch({ type: actions.toggleAllPageRowsSelected, value }),
+ [dispatch]
+ );
+
+ const toggleRowSelected = useCallback(
+ (id, value) => dispatch({ type: actions.toggleRowSelected, id, value }),
+ [dispatch]
+ );
+
+ const getInstance = useGetLatest(instance);
+
+ const getToggleAllRowsSelectedProps = makePropGetter(
+ getHooks().getToggleAllRowsSelectedProps,
+ { instance: getInstance() }
+ );
+
+ const getToggleAllPageRowsSelectedProps = makePropGetter(
+ getHooks().getToggleAllPageRowsSelectedProps,
+ { instance: getInstance() }
+ );
+
+ Object.assign(instance, {
+ selectedFlatRows,
+ isAllRowsSelected,
+ isAllPageRowsSelected,
+ toggleRowSelected,
+ toggleAllRowsSelected,
+ getToggleAllRowsSelectedProps,
+ getToggleAllPageRowsSelectedProps,
+ toggleAllPageRowsSelected,
+ });
+}
+
+function prepareRow>(
+ row: Row,
+ { instance }: { instance: TableInstance }
+) {
+ row.toggleRowSelected = (set) => instance.toggleRowSelected(row.id, set);
+
+ row.getToggleRowSelectedProps = makePropGetter(
+ instance.getHooks().getToggleRowSelectedProps,
+ { instance, row }
+ );
+}
+
+function getRowIsSelected>(
+ row: Row,
+ selectedRowIds: Record, boolean>,
+ getSubRows: (row: Row) => Array>
+) {
+ if (selectedRowIds[row.id]) {
+ return true;
+ }
+
+ const subRows = getSubRows(row);
+
+ if (subRows && subRows.length) {
+ let allChildrenSelected = true;
+ let someSelected = false;
+
+ subRows.forEach((subRow) => {
+ // Bail out early if we know both of these
+ if (someSelected && !allChildrenSelected) {
+ return;
+ }
+
+ if (getRowIsSelected(subRow, selectedRowIds, getSubRows)) {
+ someSelected = true;
+ } else {
+ allChildrenSelected = false;
+ }
+ });
+
+ if (allChildrenSelected) {
+ return true;
+ }
+
+ return someSelected ? null : false;
+ }
+
+ return false;
+}
+
+function defaultIsRowSelectable(row: Row) {
+ return !!row.original.disabled;
+}
diff --git a/app/portainer/components/datatables/components/useTableSettings.tsx b/app/portainer/components/datatables/components/useTableSettings.tsx
new file mode 100644
index 000000000..a2de1363f
--- /dev/null
+++ b/app/portainer/components/datatables/components/useTableSettings.tsx
@@ -0,0 +1,77 @@
+import { Context, createContext, ReactNode, useContext, useState } from 'react';
+
+import { useLocalStorage } from '@/portainer/hooks/useLocalStorage';
+
+export interface TableSettingsContextInterface {
+ settings: T;
+ setTableSettings(partialSettings: Partial): void;
+ setTableSettings(mutation: (settings: T) => T): void;
+}
+
+const TableSettingsContext = createContext
+> | null>(null);
+
+export function useTableSettings() {
+ const Context = getContextType();
+
+ const context = useContext(Context);
+
+ if (context === null) {
+ throw new Error('must be nested under TableSettingsProvider');
+ }
+
+ return context;
+}
+
+interface ProviderProps {
+ children: ReactNode;
+ defaults?: T;
+ storageKey: string;
+}
+
+export function TableSettingsProvider({
+ children,
+ defaults,
+ storageKey,
+}: ProviderProps) {
+ const Context = getContextType();
+
+ const [storage, setStorage] = useLocalStorage(
+ keyBuilder(storageKey),
+ defaults as T
+ );
+
+ const [settings, setTableSettings] = useState(storage);
+
+ return (
+
+ {children}
+
+ );
+
+ function handleChange(partialSettings: T): void;
+ function handleChange(mutation: (settings: T) => T): void;
+ function handleChange(mutation: T | ((settings: T) => T)): void {
+ setTableSettings((settings) => {
+ const newTableSettings =
+ mutation instanceof Function
+ ? mutation(settings)
+ : { ...settings, ...mutation };
+
+ setStorage(newTableSettings);
+
+ return newTableSettings;
+ });
+ }
+
+ function keyBuilder(key: string) {
+ return `datatable_TableSettings_${key}`;
+ }
+}
+
+function getContextType() {
+ return (TableSettingsContext as unknown) as Context<
+ TableSettingsContextInterface
+ >;
+}
diff --git a/app/portainer/components/datatables/datatable.css b/app/portainer/components/datatables/datatable.css
index c6ae521da..20179869d 100644
--- a/app/portainer/components/datatables/datatable.css
+++ b/app/portainer/components/datatables/datatable.css
@@ -126,6 +126,10 @@
color: #767676;
cursor: pointer;
font-size: 12px !important;
+ background: none;
+ border: none;
+ padding: 0;
+ margin: 0;
}
.widget .widget-body table thead th .filter-active {
@@ -252,3 +256,25 @@
transform: scale(0);
width: 8px;
}
+
+.table th.selection,
+.table td.selection {
+ width: 30px;
+}
+
+.table th button.sortable {
+ background: none;
+ border: none;
+ padding: 0;
+ margin: 0;
+ color: var(--text-link-color);
+}
+
+.table th button.sortable:hover .sortable-label {
+ text-decoration: underline;
+}
+
+.datatable .table-setting-menu-btn {
+ border: none;
+ background: none;
+}
diff --git a/app/portainer/components/form-components/Checkbox.tsx b/app/portainer/components/form-components/Checkbox.tsx
new file mode 100644
index 000000000..1bec896e2
--- /dev/null
+++ b/app/portainer/components/form-components/Checkbox.tsx
@@ -0,0 +1,57 @@
+import {
+ forwardRef,
+ useRef,
+ useEffect,
+ MutableRefObject,
+ ChangeEventHandler,
+ HTMLProps,
+} from 'react';
+
+interface Props extends HTMLProps {
+ checked?: boolean;
+ indeterminate?: boolean;
+ title?: string;
+ label?: string;
+ id: string;
+ className?: string;
+ role?: string;
+ onChange?: ChangeEventHandler;
+}
+
+export const Checkbox = forwardRef(
+ (
+ { indeterminate, title, label, id, checked, onChange, ...props }: Props,
+ ref
+ ) => {
+ const defaultRef = useRef(null);
+ let resolvedRef = ref as MutableRefObject;
+ if (!ref) {
+ resolvedRef = defaultRef;
+ }
+
+ useEffect(() => {
+ if (resolvedRef === null || resolvedRef.current === null) {
+ return;
+ }
+
+ if (typeof indeterminate !== 'undefined') {
+ resolvedRef.current.indeterminate = indeterminate;
+ }
+ }, [resolvedRef, indeterminate]);
+
+ return (
+
+
+
+
+ );
+ }
+);
diff --git a/app/portainer/components/pagination-controls/ItemsPerPageSelector.tsx b/app/portainer/components/pagination-controls/ItemsPerPageSelector.tsx
new file mode 100644
index 000000000..20ad2e0c9
--- /dev/null
+++ b/app/portainer/components/pagination-controls/ItemsPerPageSelector.tsx
@@ -0,0 +1,26 @@
+interface Props {
+ value: number;
+ onChange(value: number): void;
+ showAll: boolean;
+}
+
+export function ItemsPerPageSelector({ value, onChange, showAll }: Props) {
+ return (
+
+ Items per page
+
+
+ );
+}
diff --git a/app/portainer/components/pagination-controls/PageButton.tsx b/app/portainer/components/pagination-controls/PageButton.tsx
new file mode 100644
index 000000000..6c8080c7f
--- /dev/null
+++ b/app/portainer/components/pagination-controls/PageButton.tsx
@@ -0,0 +1,29 @@
+import clsx from 'clsx';
+import { ReactNode } from 'react';
+
+interface Props {
+ active?: boolean;
+ children: ReactNode;
+ disabled?: boolean;
+ onPageChange(page: number): void;
+ page: number | '...';
+}
+
+export function PageButton({
+ children,
+ page,
+ disabled,
+ active,
+ onPageChange,
+}: Props) {
+ return (
+
+
+
+ );
+}
diff --git a/app/portainer/components/pagination-controls/PageSelector.tsx b/app/portainer/components/pagination-controls/PageSelector.tsx
new file mode 100644
index 000000000..f298ec303
--- /dev/null
+++ b/app/portainer/components/pagination-controls/PageSelector.tsx
@@ -0,0 +1,87 @@
+import { generatePagesArray } from './generatePagesArray';
+import { PageButton } from './PageButton';
+
+interface Props {
+ boundaryLinks?: boolean;
+ currentPage: number;
+ directionLinks?: boolean;
+ itemsPerPage: number;
+ onPageChange(page: number): void;
+ totalCount: number;
+ maxSize: number;
+}
+
+export function PageSelector({
+ currentPage,
+ totalCount,
+ itemsPerPage,
+ onPageChange,
+ maxSize = 5,
+ directionLinks = true,
+ boundaryLinks = false,
+}: Props) {
+ const pages = generatePagesArray(
+ currentPage,
+ totalCount,
+ itemsPerPage,
+ maxSize
+ );
+ const last = pages[pages.length - 1];
+
+ if (pages.length <= 1) {
+ return null;
+ }
+
+ return (
+
+ {boundaryLinks ? (
+
+ «
+
+ ) : null}
+ {directionLinks ? (
+
+ ‹
+
+ ) : null}
+ {pages.map((pageNumber, index) => (
+
+ {pageNumber}
+
+ ))}
+
+ {directionLinks ? (
+
+ ›
+
+ ) : null}
+ {boundaryLinks ? (
+
+ »
+
+ ) : null}
+
+ );
+}
diff --git a/app/portainer/components/pagination-controls/PaginationControls.tsx b/app/portainer/components/pagination-controls/PaginationControls.tsx
new file mode 100644
index 000000000..83c9a0be4
--- /dev/null
+++ b/app/portainer/components/pagination-controls/PaginationControls.tsx
@@ -0,0 +1,46 @@
+import { ItemsPerPageSelector } from './ItemsPerPageSelector';
+import { PageSelector } from './PageSelector';
+
+interface Props {
+ onPageChange(page: number): void;
+ onPageLimitChange(value: number): void;
+ page: number;
+ pageLimit: number;
+ showAll: boolean;
+ totalCount: number;
+}
+
+export function PaginationControls({
+ pageLimit,
+ page,
+ onPageLimitChange,
+ showAll,
+ onPageChange,
+ totalCount,
+}: Props) {
+ return (
+
+ );
+
+ function handlePageLimitChange(value: number) {
+ onPageLimitChange(value);
+ onPageChange(1);
+ }
+}
diff --git a/app/portainer/components/pagination-controls/calculatePageNumber.ts b/app/portainer/components/pagination-controls/calculatePageNumber.ts
new file mode 100644
index 000000000..255729071
--- /dev/null
+++ b/app/portainer/components/pagination-controls/calculatePageNumber.ts
@@ -0,0 +1,37 @@
+/**
+ * Given the position in the sequence of pagination links, figure out what page number corresponds to that position.
+ *
+ * @param position
+ * @param currentPage
+ * @param paginationRange
+ * @param totalPages
+ */
+export function calculatePageNumber(
+ position: number,
+ currentPage: number,
+ paginationRange: number,
+ totalPages: number
+) {
+ const halfWay = Math.ceil(paginationRange / 2);
+ if (position === paginationRange) {
+ return totalPages;
+ }
+
+ if (position === 1) {
+ return position;
+ }
+
+ if (paginationRange < totalPages) {
+ if (totalPages - halfWay < currentPage) {
+ return totalPages - paginationRange + position;
+ }
+
+ if (halfWay < currentPage) {
+ return currentPage - halfWay + position;
+ }
+
+ return position;
+ }
+
+ return position;
+}
diff --git a/app/portainer/components/pagination-controls/generatePagesArray.ts b/app/portainer/components/pagination-controls/generatePagesArray.ts
new file mode 100644
index 000000000..6696be362
--- /dev/null
+++ b/app/portainer/components/pagination-controls/generatePagesArray.ts
@@ -0,0 +1,55 @@
+import { calculatePageNumber } from './calculatePageNumber';
+
+export /**
+ * Generate an array of page numbers (or the '...' string) which is used in an ng-repeat to generate the
+ * links used in pagination
+ *
+ * @param currentPage
+ * @param rowsPerPage
+ * @param paginationRange
+ * @param collectionLength
+ * @returns {Array}
+ */
+function generatePagesArray(
+ currentPage: number,
+ collectionLength: number,
+ rowsPerPage: number,
+ paginationRange: number
+): (number | '...')[] {
+ const pages: (number | '...')[] = [];
+ const totalPages = Math.ceil(collectionLength / rowsPerPage);
+ const halfWay = Math.ceil(paginationRange / 2);
+
+ let position;
+ if (currentPage <= halfWay) {
+ position = 'start';
+ } else if (totalPages - halfWay < currentPage) {
+ position = 'end';
+ } else {
+ position = 'middle';
+ }
+
+ const ellipsesNeeded = paginationRange < totalPages;
+
+ for (let i = 1; i <= totalPages && i <= paginationRange; i += 1) {
+ const pageNumber = calculatePageNumber(
+ i,
+ currentPage,
+ paginationRange,
+ totalPages
+ );
+
+ const openingEllipsesNeeded =
+ i === 2 && (position === 'middle' || position === 'end');
+ const closingEllipsesNeeded =
+ i === paginationRange - 1 &&
+ (position === 'middle' || position === 'start');
+ if (ellipsesNeeded && (openingEllipsesNeeded || closingEllipsesNeeded)) {
+ pages.push('...');
+ } else {
+ pages.push(pageNumber);
+ }
+ }
+
+ return pages;
+}
diff --git a/app/portainer/components/pagination-controls/index.ts b/app/portainer/components/pagination-controls/index.ts
new file mode 100644
index 000000000..73d59f358
--- /dev/null
+++ b/app/portainer/components/pagination-controls/index.ts
@@ -0,0 +1,3 @@
+import './pagination-controls.css';
+
+export { PaginationControls } from './PaginationControls';
diff --git a/app/portainer/components/pagination-controls/pagination-controls.css b/app/portainer/components/pagination-controls/pagination-controls.css
new file mode 100644
index 000000000..5bd7cf3e2
--- /dev/null
+++ b/app/portainer/components/pagination-controls/pagination-controls.css
@@ -0,0 +1,72 @@
+.pagination-controls {
+ margin-left: 10px;
+}
+
+.paginationControls form.form-inline {
+ display: flex;
+}
+
+.pagination > li:first-child > button {
+ margin-left: 0;
+ border-top-left-radius: 4px;
+ border-bottom-left-radius: 4px;
+}
+
+.pagination > .disabled > span,
+.pagination > .disabled > span:hover,
+.pagination > .disabled > span:focus,
+.pagination > .disabled > button,
+.pagination > .disabled > button:hover,
+.pagination > .disabled > button:focus,
+.pagination > .disabled > a,
+.pagination > .disabled > a:hover,
+.pagination > .disabled > a:focus {
+ color: var(--text-pagination-color);
+ background-color: var(--bg-pagination-color);
+ border-color: var(--border-pagination-color);
+}
+
+.pagination > li > button {
+ position: relative;
+ float: left;
+ padding: 6px 12px;
+ margin-left: -1px !important;
+ line-height: 1.42857143;
+ text-decoration: none;
+ border: 1px solid #ddd;
+}
+
+.pagination > li > a,
+.pagination > li > button,
+.pagination > li > span {
+ background-color: var(--bg-pagination-span-color);
+ border-color: var(--border-pagination-span-color);
+ color: var(--text-pagination-span-color);
+}
+
+.pagination > li > a:hover,
+.pagination > li > button:hover,
+.pagination > li > span:hover,
+.pagination > li > a:focus,
+.pagination > li > button:focus,
+.pagination > li > span:focus {
+ background-color: var(--bg-pagination-hover-color);
+ border-color: var(--border-pagination-hover-color);
+ color: var(--text-pagination-span-hover-color);
+}
+
+.pagination > .active > a,
+.pagination > .active > span,
+.pagination > .active > button,
+.pagination > .active > a:hover,
+.pagination > .active > span:hover,
+.pagination > .active > button:hover,
+.pagination > .active > a:focus,
+.pagination > .active > span:focus,
+.pagination > .active > button:focus {
+ z-index: 3;
+ color: #fff;
+ cursor: default;
+ background-color: var(--text-pagination-span-color);
+ border-color: var(--text-pagination-span-color);
+}
diff --git a/app/portainer/environments/types.ts b/app/portainer/environments/types.ts
new file mode 100644
index 000000000..4be0fa67e
--- /dev/null
+++ b/app/portainer/environments/types.ts
@@ -0,0 +1,12 @@
+export type EnvironmentId = number;
+
+export enum EnvironmentStatus {
+ Up = 1,
+ Down = 2,
+}
+
+export interface Environment {
+ Id: EnvironmentId;
+ Status: EnvironmentStatus;
+ PublicURL: string;
+}
diff --git a/app/portainer/environments/useEnvironment.tsx b/app/portainer/environments/useEnvironment.tsx
new file mode 100644
index 000000000..8565b7acb
--- /dev/null
+++ b/app/portainer/environments/useEnvironment.tsx
@@ -0,0 +1,27 @@
+import { createContext, ReactNode, useContext } from 'react';
+
+import type { Environment } from './types';
+
+const EnvironmentContext = createContext(null);
+
+export function useEnvironment() {
+ const context = useContext(EnvironmentContext);
+ if (context === null) {
+ throw new Error('must be nested under EnvironmentProvider');
+ }
+
+ return context;
+}
+
+interface Props {
+ children: ReactNode;
+ environment: Environment;
+}
+
+export function EnvironmentProvider({ children, environment }: Props) {
+ return (
+
+ {children}
+
+ );
+}
diff --git a/app/portainer/error.ts b/app/portainer/error.ts
index f0f6e2545..f99dc514a 100644
--- a/app/portainer/error.ts
+++ b/app/portainer/error.ts
@@ -5,4 +5,4 @@ export default class PortainerError extends Error {
super(msg);
this.err = err;
}
-}
\ No newline at end of file
+}
diff --git a/app/portainer/hooks/useDebounce.ts b/app/portainer/hooks/useDebounce.ts
new file mode 100644
index 000000000..f26df6d1a
--- /dev/null
+++ b/app/portainer/hooks/useDebounce.ts
@@ -0,0 +1,15 @@
+import { useEffect, useState } from 'react';
+
+export function useDebounce(value: T, delay = 500): T {
+ const [debouncedValue, setDebouncedValue] = useState(value);
+
+ useEffect(() => {
+ const timer = setTimeout(() => setDebouncedValue(value), delay);
+
+ return () => {
+ clearTimeout(timer);
+ };
+ }, [value, delay]);
+
+ return debouncedValue;
+}
diff --git a/app/portainer/hooks/useUser.tsx b/app/portainer/hooks/useUser.tsx
index 2a39e3392..bd1e070c4 100644
--- a/app/portainer/hooks/useUser.tsx
+++ b/app/portainer/hooks/useUser.tsx
@@ -71,13 +71,10 @@ interface AuthorizedProps {
children: ReactNode;
}
-export function Authorized({
- authorizations,
- children,
-}: AuthorizedProps): ReactNode {
+export function Authorized({ authorizations, children }: AuthorizedProps) {
const isAllowed = useAuthorizations(authorizations);
- return isAllowed ? children : null;
+ return isAllowed ? <>{children}> : null;
}
interface UserProviderProps {
diff --git a/app/react-table-config.d.ts b/app/react-table-config.d.ts
new file mode 100644
index 000000000..f40127e96
--- /dev/null
+++ b/app/react-table-config.d.ts
@@ -0,0 +1,156 @@
+import {
+ UseColumnOrderInstanceProps,
+ UseColumnOrderState,
+ UseExpandedHooks,
+ UseExpandedInstanceProps,
+ UseExpandedOptions,
+ UseExpandedRowProps,
+ UseExpandedState,
+ UseFiltersColumnOptions,
+ UseFiltersColumnProps,
+ UseFiltersInstanceProps,
+ UseFiltersOptions,
+ UseFiltersState,
+ UseGlobalFiltersColumnOptions,
+ UseGlobalFiltersInstanceProps,
+ UseGlobalFiltersOptions,
+ UseGlobalFiltersState,
+ UseGroupByCellProps,
+ UseGroupByColumnOptions,
+ UseGroupByColumnProps,
+ UseGroupByHooks,
+ UseGroupByInstanceProps,
+ UseGroupByOptions,
+ UseGroupByRowProps,
+ UseGroupByState,
+ UsePaginationInstanceProps,
+ UsePaginationOptions,
+ UsePaginationState,
+ UseResizeColumnsColumnOptions,
+ UseResizeColumnsColumnProps,
+ UseResizeColumnsOptions,
+ UseResizeColumnsState,
+ UseRowSelectHooks,
+ UseRowSelectInstanceProps,
+ UseRowSelectOptions,
+ UseRowSelectRowProps,
+ UseRowSelectState,
+ UseRowStateCellProps,
+ UseRowStateInstanceProps,
+ UseRowStateOptions,
+ UseRowStateRowProps,
+ UseRowStateState,
+ UseSortByColumnOptions,
+ UseSortByColumnProps,
+ UseSortByHooks,
+ UseSortByInstanceProps,
+ UseSortByOptions,
+ UseSortByState,
+} from 'react-table';
+import { UseSelectColumnTableOptions } from '@lineup-lite/hooks';
+
+declare module 'react-table' {
+ // take this file as-is, or comment out the sections that don't apply to your plugin configuration
+
+ export interface TableOptions>
+ extends UseExpandedOptions,
+ UseFiltersOptions,
+ UseGlobalFiltersOptions,
+ UseGroupByOptions,
+ UsePaginationOptions,
+ UseResizeColumnsOptions,
+ UseRowSelectOptions,
+ UseRowStateOptions,
+ UseSortByOptions,
+ UseSelectColumnTableOptions,
+ // note that having Record here allows you to add anything to the options, this matches the spirit of the
+ // underlying js library, but might be cleaner if it's replaced by a more specific type that matches your
+ // feature set, this is a safe default.
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
+ Record {}
+
+ export interface Hooks<
+ D extends Record = Record
+ >
+ extends UseExpandedHooks,
+ UseGroupByHooks,
+ UseRowSelectHooks,
+ UseSortByHooks {}
+
+ export interface TableInstance<
+ D extends Record = Record
+ >
+ extends UseColumnOrderInstanceProps,
+ UseExpandedInstanceProps,
+ UseFiltersInstanceProps,
+ UseGlobalFiltersInstanceProps,
+ UseGroupByInstanceProps,
+ UsePaginationInstanceProps,
+ UseRowSelectInstanceProps,
+ UseRowStateInstanceProps,
+ UseSortByInstanceProps {}
+
+ export interface TableState<
+ D extends Record = Record
+ >
+ extends UseColumnOrderState,
+ UseExpandedState,
+ UseFiltersState,
+ UseGlobalFiltersState,
+ UseGroupByState,
+ UsePaginationState,
+ UseResizeColumnsState,
+ UseRowSelectState,
+ UseRowStateState,
+ UseSortByState {}
+
+ export interface ColumnInterface<
+ D extends Record = Record
+ >
+ extends UseFiltersColumnOptions,
+ UseGlobalFiltersColumnOptions,
+ UseGroupByColumnOptions,
+ UseResizeColumnsColumnOptions,
+ UseSortByColumnOptions {
+ className?: string;
+ canHide?: boolean;
+ }
+
+ export interface ColumnInstance<
+ D extends Record = Record
+ >
+ extends UseFiltersColumnProps,
+ UseGroupByColumnProps,
+ UseResizeColumnsColumnProps,
+ UseSortByColumnProps {
+ className?: string;
+ }
+
+ export interface Cell<
+ D extends Record = Record,
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
+ V = any
+ >
+ extends UseTableCellProps,
+ UseGroupByCellProps,
+ UseRowStateCellProps {
+ className?: string;
+ }
+
+ export interface Row<
+ D extends Record = Record
+ >
+ extends UseExpandedRowProps,
+ UseGroupByRowProps,
+ UseRowSelectRowProps,
+ UseRowStateRowProps {}
+
+ export function makePropGetter(
+ hooks: Array,
+ ...meta: Record[]
+ ): PropGetter;
+
+ export interface TableToggleRowsSelectedProps {
+ disabled: boolean;
+ }
+}
diff --git a/package.json b/package.json
index bb65045e4..a92404f9c 100644
--- a/package.json
+++ b/package.json
@@ -66,8 +66,10 @@
"dependencies": {
"@aws-crypto/sha256-js": "^2.0.0",
"@fortawesome/fontawesome-free": "^5.15.4",
+ "@lineup-lite/hooks": "^1.6.0",
"@nxmix/tokenize-ansi": "^3.0.0",
"@open-amt-cloud-toolkit/ui-toolkit-react": "2.0.0",
+ "@reach/menu-button": "^0.16.1",
"@uirouter/angularjs": "1.0.11",
"@uirouter/react": "^1.0.7",
"@uirouter/react-hybrid": "^1.0.4",
@@ -114,7 +116,9 @@
"rc-slider": "^9.7.5",
"react": "^17.0.2",
"react-dom": "^17.0.2",
+ "react-is": "^17.0.2",
"react-select": "^5.2.1",
+ "react-table": "^7.7.0",
"react-tooltip": "^4.2.21",
"sanitize-html": "^2.5.3",
"spinkit": "^2.0.1",
@@ -152,6 +156,7 @@
"@types/lodash-es": "^4.17.5",
"@types/react": "^17.0.37",
"@types/react-dom": "^17.0.11",
+ "@types/react-table": "^7.7.6",
"@types/sanitize-html": "^2.5.0",
"@types/toastr": "^2.1.39",
"@typescript-eslint/eslint-plugin": "^5.7.0",
diff --git a/yarn.lock b/yarn.lock
index 2fd4e3d2b..04064f376 100644
--- a/yarn.lock
+++ b/yarn.lock
@@ -81,14 +81,14 @@
dependencies:
"@babel/highlight" "^7.10.4"
-"@babel/code-frame@^7.0.0", "@babel/code-frame@^7.10.4", "@babel/code-frame@^7.12.13", "@babel/code-frame@^7.16.0", "@babel/code-frame@^7.5.5", "@babel/code-frame@^7.8.3":
- version "7.16.0"
- resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.16.0.tgz#0dfc80309beec8411e65e706461c408b0bb9b431"
- integrity sha512-IF4EOMEV+bfYwOmNxGzSnjR2EmQod7f1UXOpZM3l4i4o4QNwzjtJAu/HxdjHq0aYBvdqMuQEY1eg0nqW9ZPORA==
+"@babel/code-frame@^7.0.0", "@babel/code-frame@^7.10.4", "@babel/code-frame@^7.12.13", "@babel/code-frame@^7.16.7", "@babel/code-frame@^7.5.5", "@babel/code-frame@^7.8.3":
+ version "7.16.7"
+ resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.16.7.tgz#44416b6bd7624b998f5b1af5d470856c40138789"
+ integrity sha512-iAXqUn8IIeBTNd72xsFlgaXHkMBMt6y4HJp1tIaK465CWLT/fG1aqB7ykr95gHHmlBdGbFeWWfyB4NJJ0nmeIg==
dependencies:
- "@babel/highlight" "^7.16.0"
+ "@babel/highlight" "^7.16.7"
-"@babel/compat-data@^7.13.11", "@babel/compat-data@^7.16.0", "@babel/compat-data@^7.16.4":
+"@babel/compat-data@^7.13.11", "@babel/compat-data@^7.16.4":
version "7.16.4"
resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.16.4.tgz#081d6bbc336ec5c2435c6346b2ae1fb98b5ac68e"
integrity sha512-1o/jo7D+kC9ZjHX5v+EHrdjl3PhxMrLSOTGsOdHJ+KL8HCaEK6ehrVL2RS6oHDZp+L7xLirLrPmQtEng769J/Q==
@@ -116,19 +116,19 @@
source-map "^0.5.0"
"@babel/core@^7.1.0", "@babel/core@^7.12.10", "@babel/core@^7.12.3", "@babel/core@^7.16.0", "@babel/core@^7.7.2", "@babel/core@^7.7.5":
- version "7.16.5"
- resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.16.5.tgz#924aa9e1ae56e1e55f7184c8bf073a50d8677f5c"
- integrity sha512-wUcenlLzuWMZ9Zt8S0KmFwGlH6QKRh3vsm/dhDA3CHkiTA45YuG1XkHRcNRl73EFPXDp/d5kVOU0/y7x2w6OaQ==
+ version "7.16.7"
+ resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.16.7.tgz#db990f931f6d40cb9b87a0dc7d2adc749f1dcbcf"
+ integrity sha512-aeLaqcqThRNZYmbMqtulsetOQZ/5gbR/dWruUCJcpas4Qoyy+QeagfDsPdMrqwsPRDNxJvBlRiZxxX7THO7qtA==
dependencies:
- "@babel/code-frame" "^7.16.0"
- "@babel/generator" "^7.16.5"
- "@babel/helper-compilation-targets" "^7.16.3"
- "@babel/helper-module-transforms" "^7.16.5"
- "@babel/helpers" "^7.16.5"
- "@babel/parser" "^7.16.5"
- "@babel/template" "^7.16.0"
- "@babel/traverse" "^7.16.5"
- "@babel/types" "^7.16.0"
+ "@babel/code-frame" "^7.16.7"
+ "@babel/generator" "^7.16.7"
+ "@babel/helper-compilation-targets" "^7.16.7"
+ "@babel/helper-module-transforms" "^7.16.7"
+ "@babel/helpers" "^7.16.7"
+ "@babel/parser" "^7.16.7"
+ "@babel/template" "^7.16.7"
+ "@babel/traverse" "^7.16.7"
+ "@babel/types" "^7.16.7"
convert-source-map "^1.7.0"
debug "^4.1.0"
gensync "^1.0.0-beta.2"
@@ -136,59 +136,59 @@
semver "^6.3.0"
source-map "^0.5.0"
-"@babel/generator@^7.12.11", "@babel/generator@^7.12.5", "@babel/generator@^7.16.5", "@babel/generator@^7.7.2":
- version "7.16.5"
- resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.16.5.tgz#26e1192eb8f78e0a3acaf3eede3c6fc96d22bedf"
- integrity sha512-kIvCdjZqcdKqoDbVVdt5R99icaRtrtYhYK/xux5qiWCBmfdvEYMFZ68QCrpE5cbFM1JsuArUNs1ZkuKtTtUcZA==
+"@babel/generator@^7.12.11", "@babel/generator@^7.12.5", "@babel/generator@^7.16.7", "@babel/generator@^7.7.2":
+ version "7.16.7"
+ resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.16.7.tgz#b42bf46a3079fa65e1544135f32e7958f048adbb"
+ integrity sha512-/ST3Sg8MLGY5HVYmrjOgL60ENux/HfO/CsUh7y4MalThufhE/Ff/6EibFDHi4jiDCaWfJKoqbE6oTh21c5hrRg==
dependencies:
- "@babel/types" "^7.16.0"
+ "@babel/types" "^7.16.7"
jsesc "^2.5.1"
source-map "^0.5.0"
-"@babel/helper-annotate-as-pure@^7.16.0":
- version "7.16.0"
- resolved "https://registry.yarnpkg.com/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.16.0.tgz#9a1f0ebcda53d9a2d00108c4ceace6a5d5f1f08d"
- integrity sha512-ItmYF9vR4zA8cByDocY05o0LGUkp1zhbTQOH1NFyl5xXEqlTJQCEJjieriw+aFpxo16swMxUnUiKS7a/r4vtHg==
+"@babel/helper-annotate-as-pure@^7.16.0", "@babel/helper-annotate-as-pure@^7.16.7":
+ version "7.16.7"
+ resolved "https://registry.yarnpkg.com/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.16.7.tgz#bb2339a7534a9c128e3102024c60760a3a7f3862"
+ integrity sha512-s6t2w/IPQVTAET1HitoowRGXooX8mCgtuP5195wD/QJPV6wYjpujCGF7JuMODVX2ZAJOf1GT6DT9MHEZvLOFSw==
dependencies:
- "@babel/types" "^7.16.0"
+ "@babel/types" "^7.16.7"
-"@babel/helper-builder-binary-assignment-operator-visitor@^7.16.5":
- version "7.16.5"
- resolved "https://registry.yarnpkg.com/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.16.5.tgz#a8429d064dce8207194b8bf05a70a9ea828746af"
- integrity sha512-3JEA9G5dmmnIWdzaT9d0NmFRgYnWUThLsDaL7982H0XqqWr56lRrsmwheXFMjR+TMl7QMBb6mzy9kvgr1lRLUA==
+"@babel/helper-builder-binary-assignment-operator-visitor@^7.16.7":
+ version "7.16.7"
+ resolved "https://registry.yarnpkg.com/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.16.7.tgz#38d138561ea207f0f69eb1626a418e4f7e6a580b"
+ integrity sha512-C6FdbRaxYjwVu/geKW4ZeQ0Q31AftgRcdSnZ5/jsH6BzCJbtvXvhpfkbkThYSuutZA7nCXpPR6AD9zd1dprMkA==
dependencies:
- "@babel/helper-explode-assignable-expression" "^7.16.0"
- "@babel/types" "^7.16.0"
+ "@babel/helper-explode-assignable-expression" "^7.16.7"
+ "@babel/types" "^7.16.7"
-"@babel/helper-compilation-targets@^7.13.0", "@babel/helper-compilation-targets@^7.16.3":
- version "7.16.3"
- resolved "https://registry.yarnpkg.com/@babel/helper-compilation-targets/-/helper-compilation-targets-7.16.3.tgz#5b480cd13f68363df6ec4dc8ac8e2da11363cbf0"
- integrity sha512-vKsoSQAyBmxS35JUOOt+07cLc6Nk/2ljLIHwmq2/NM6hdioUaqEXq/S+nXvbvXbZkNDlWOymPanJGOc4CBjSJA==
+"@babel/helper-compilation-targets@^7.13.0", "@babel/helper-compilation-targets@^7.16.7":
+ version "7.16.7"
+ resolved "https://registry.yarnpkg.com/@babel/helper-compilation-targets/-/helper-compilation-targets-7.16.7.tgz#06e66c5f299601e6c7da350049315e83209d551b"
+ integrity sha512-mGojBwIWcwGD6rfqgRXVlVYmPAv7eOpIemUG3dGnDdCY4Pae70ROij3XmfrH6Fa1h1aiDylpglbZyktfzyo/hA==
dependencies:
- "@babel/compat-data" "^7.16.0"
- "@babel/helper-validator-option" "^7.14.5"
+ "@babel/compat-data" "^7.16.4"
+ "@babel/helper-validator-option" "^7.16.7"
browserslist "^4.17.5"
semver "^6.3.0"
-"@babel/helper-create-class-features-plugin@^7.16.0", "@babel/helper-create-class-features-plugin@^7.16.5":
- version "7.16.5"
- resolved "https://registry.yarnpkg.com/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.16.5.tgz#5d1bcd096792c1ebec6249eebc6358eec55d0cad"
- integrity sha512-NEohnYA7mkB8L5JhU7BLwcBdU3j83IziR9aseMueWGeAjblbul3zzb8UvJ3a1zuBiqCMObzCJHFqKIQE6hTVmg==
+"@babel/helper-create-class-features-plugin@^7.16.7":
+ version "7.16.7"
+ resolved "https://registry.yarnpkg.com/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.16.7.tgz#9c5b34b53a01f2097daf10678d65135c1b9f84ba"
+ integrity sha512-kIFozAvVfK05DM4EVQYKK+zteWvY85BFdGBRQBytRyY3y+6PX0DkDOn/CZ3lEuczCfrCxEzwt0YtP/87YPTWSw==
dependencies:
- "@babel/helper-annotate-as-pure" "^7.16.0"
- "@babel/helper-environment-visitor" "^7.16.5"
- "@babel/helper-function-name" "^7.16.0"
- "@babel/helper-member-expression-to-functions" "^7.16.5"
- "@babel/helper-optimise-call-expression" "^7.16.0"
- "@babel/helper-replace-supers" "^7.16.5"
- "@babel/helper-split-export-declaration" "^7.16.0"
+ "@babel/helper-annotate-as-pure" "^7.16.7"
+ "@babel/helper-environment-visitor" "^7.16.7"
+ "@babel/helper-function-name" "^7.16.7"
+ "@babel/helper-member-expression-to-functions" "^7.16.7"
+ "@babel/helper-optimise-call-expression" "^7.16.7"
+ "@babel/helper-replace-supers" "^7.16.7"
+ "@babel/helper-split-export-declaration" "^7.16.7"
-"@babel/helper-create-regexp-features-plugin@^7.16.0":
- version "7.16.0"
- resolved "https://registry.yarnpkg.com/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.16.0.tgz#06b2348ce37fccc4f5e18dcd8d75053f2a7c44ff"
- integrity sha512-3DyG0zAFAZKcOp7aVr33ddwkxJ0Z0Jr5V99y3I690eYLpukJsJvAbzTy1ewoCqsML8SbIrjH14Jc/nSQ4TvNPA==
+"@babel/helper-create-regexp-features-plugin@^7.16.7":
+ version "7.16.7"
+ resolved "https://registry.yarnpkg.com/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.16.7.tgz#0cb82b9bac358eb73bfbd73985a776bfa6b14d48"
+ integrity sha512-fk5A6ymfp+O5+p2yCkXAu5Kyj6v0xh0RBeNcAkYUMDvvAAoxvSKXn+Jb37t/yWFiQVDFK1ELpUTD8/aLhCPu+g==
dependencies:
- "@babel/helper-annotate-as-pure" "^7.16.0"
+ "@babel/helper-annotate-as-pure" "^7.16.7"
regexpu-core "^4.7.1"
"@babel/helper-define-polyfill-provider@^0.1.5":
@@ -219,114 +219,114 @@
resolve "^1.14.2"
semver "^6.1.2"
-"@babel/helper-environment-visitor@^7.16.5":
- version "7.16.5"
- resolved "https://registry.yarnpkg.com/@babel/helper-environment-visitor/-/helper-environment-visitor-7.16.5.tgz#f6a7f38b3c6d8b07c88faea083c46c09ef5451b8"
- integrity sha512-ODQyc5AnxmZWm/R2W7fzhamOk1ey8gSguo5SGvF0zcB3uUzRpTRmM/jmLSm9bDMyPlvbyJ+PwPEK0BWIoZ9wjg==
+"@babel/helper-environment-visitor@^7.16.7":
+ version "7.16.7"
+ resolved "https://registry.yarnpkg.com/@babel/helper-environment-visitor/-/helper-environment-visitor-7.16.7.tgz#ff484094a839bde9d89cd63cba017d7aae80ecd7"
+ integrity sha512-SLLb0AAn6PkUeAfKJCCOl9e1R53pQlGAfc4y4XuMRZfqeMYLE0dM1LMhqbGAlGQY0lfw5/ohoYWAe9V1yibRag==
dependencies:
- "@babel/types" "^7.16.0"
+ "@babel/types" "^7.16.7"
-"@babel/helper-explode-assignable-expression@^7.16.0":
- version "7.16.0"
- resolved "https://registry.yarnpkg.com/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.16.0.tgz#753017337a15f46f9c09f674cff10cee9b9d7778"
- integrity sha512-Hk2SLxC9ZbcOhLpg/yMznzJ11W++lg5GMbxt1ev6TXUiJB0N42KPC+7w8a+eWGuqDnUYuwStJoZHM7RgmIOaGQ==
+"@babel/helper-explode-assignable-expression@^7.16.7":
+ version "7.16.7"
+ resolved "https://registry.yarnpkg.com/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.16.7.tgz#12a6d8522fdd834f194e868af6354e8650242b7a"
+ integrity sha512-KyUenhWMC8VrxzkGP0Jizjo4/Zx+1nNZhgocs+gLzyZyB8SHidhoq9KK/8Ato4anhwsivfkBLftky7gvzbZMtQ==
dependencies:
- "@babel/types" "^7.16.0"
+ "@babel/types" "^7.16.7"
-"@babel/helper-function-name@^7.16.0":
- version "7.16.0"
- resolved "https://registry.yarnpkg.com/@babel/helper-function-name/-/helper-function-name-7.16.0.tgz#b7dd0797d00bbfee4f07e9c4ea5b0e30c8bb1481"
- integrity sha512-BZh4mEk1xi2h4HFjWUXRQX5AEx4rvaZxHgax9gcjdLWdkjsY7MKt5p0otjsg5noXw+pB+clMCjw+aEVYADMjog==
+"@babel/helper-function-name@^7.16.7":
+ version "7.16.7"
+ resolved "https://registry.yarnpkg.com/@babel/helper-function-name/-/helper-function-name-7.16.7.tgz#f1ec51551fb1c8956bc8dd95f38523b6cf375f8f"
+ integrity sha512-QfDfEnIUyyBSR3HtrtGECuZ6DAyCkYFp7GHl75vFtTnn6pjKeK0T1DB5lLkFvBea8MdaiUABx3osbgLyInoejA==
dependencies:
- "@babel/helper-get-function-arity" "^7.16.0"
- "@babel/template" "^7.16.0"
- "@babel/types" "^7.16.0"
+ "@babel/helper-get-function-arity" "^7.16.7"
+ "@babel/template" "^7.16.7"
+ "@babel/types" "^7.16.7"
-"@babel/helper-get-function-arity@^7.16.0":
- version "7.16.0"
- resolved "https://registry.yarnpkg.com/@babel/helper-get-function-arity/-/helper-get-function-arity-7.16.0.tgz#0088c7486b29a9cb5d948b1a1de46db66e089cfa"
- integrity sha512-ASCquNcywC1NkYh/z7Cgp3w31YW8aojjYIlNg4VeJiHkqyP4AzIvr4qx7pYDb4/s8YcsZWqqOSxgkvjUz1kpDQ==
+"@babel/helper-get-function-arity@^7.16.7":
+ version "7.16.7"
+ resolved "https://registry.yarnpkg.com/@babel/helper-get-function-arity/-/helper-get-function-arity-7.16.7.tgz#ea08ac753117a669f1508ba06ebcc49156387419"
+ integrity sha512-flc+RLSOBXzNzVhcLu6ujeHUrD6tANAOU5ojrRx/as+tbzf8+stUCj7+IfRRoAbEZqj/ahXEMsjhOhgeZsrnTw==
dependencies:
- "@babel/types" "^7.16.0"
+ "@babel/types" "^7.16.7"
-"@babel/helper-hoist-variables@^7.16.0":
- version "7.16.0"
- resolved "https://registry.yarnpkg.com/@babel/helper-hoist-variables/-/helper-hoist-variables-7.16.0.tgz#4c9023c2f1def7e28ff46fc1dbcd36a39beaa81a"
- integrity sha512-1AZlpazjUR0EQZQv3sgRNfM9mEVWPK3M6vlalczA+EECcPz3XPh6VplbErL5UoMpChhSck5wAJHthlj1bYpcmg==
+"@babel/helper-hoist-variables@^7.16.7":
+ version "7.16.7"
+ resolved "https://registry.yarnpkg.com/@babel/helper-hoist-variables/-/helper-hoist-variables-7.16.7.tgz#86bcb19a77a509c7b77d0e22323ef588fa58c246"
+ integrity sha512-m04d/0Op34H5v7pbZw6pSKP7weA6lsMvfiIAMeIvkY/R4xQtBSMFEigu9QTZ2qB/9l22vsxtM8a+Q8CzD255fg==
dependencies:
- "@babel/types" "^7.16.0"
+ "@babel/types" "^7.16.7"
-"@babel/helper-member-expression-to-functions@^7.16.5":
- version "7.16.5"
- resolved "https://registry.yarnpkg.com/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.16.5.tgz#1bc9f7e87354e86f8879c67b316cb03d3dc2caab"
- integrity sha512-7fecSXq7ZrLE+TWshbGT+HyCLkxloWNhTbU2QM1NTI/tDqyf0oZiMcEfYtDuUDCo528EOlt39G1rftea4bRZIw==
+"@babel/helper-member-expression-to-functions@^7.16.7":
+ version "7.16.7"
+ resolved "https://registry.yarnpkg.com/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.16.7.tgz#42b9ca4b2b200123c3b7e726b0ae5153924905b0"
+ integrity sha512-VtJ/65tYiU/6AbMTDwyoXGPKHgTsfRarivm+YbB5uAzKUyuPjgZSgAFeG87FCigc7KNHu2Pegh1XIT3lXjvz3Q==
dependencies:
- "@babel/types" "^7.16.0"
+ "@babel/types" "^7.16.7"
-"@babel/helper-module-imports@^7.0.0", "@babel/helper-module-imports@^7.0.0-beta.49", "@babel/helper-module-imports@^7.12.13", "@babel/helper-module-imports@^7.16.0":
- version "7.16.0"
- resolved "https://registry.yarnpkg.com/@babel/helper-module-imports/-/helper-module-imports-7.16.0.tgz#90538e60b672ecf1b448f5f4f5433d37e79a3ec3"
- integrity sha512-kkH7sWzKPq0xt3H1n+ghb4xEMP8k0U7XV3kkB+ZGy69kDk2ySFW1qPi06sjKzFY3t1j6XbJSqr4mF9L7CYVyhg==
+"@babel/helper-module-imports@^7.0.0", "@babel/helper-module-imports@^7.0.0-beta.49", "@babel/helper-module-imports@^7.12.13", "@babel/helper-module-imports@^7.16.0", "@babel/helper-module-imports@^7.16.7":
+ version "7.16.7"
+ resolved "https://registry.yarnpkg.com/@babel/helper-module-imports/-/helper-module-imports-7.16.7.tgz#25612a8091a999704461c8a222d0efec5d091437"
+ integrity sha512-LVtS6TqjJHFc+nYeITRo6VLXve70xmq7wPhWTqDJusJEgGmkAACWwMiTNrvfoQo6hEhFwAIixNkvB0jPXDL8Wg==
dependencies:
- "@babel/types" "^7.16.0"
+ "@babel/types" "^7.16.7"
-"@babel/helper-module-transforms@^7.12.1", "@babel/helper-module-transforms@^7.16.5":
- version "7.16.5"
- resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.16.5.tgz#530ebf6ea87b500f60840578515adda2af470a29"
- integrity sha512-CkvMxgV4ZyyioElFwcuWnDCcNIeyqTkCm9BxXZi73RR1ozqlpboqsbGUNvRTflgZtFbbJ1v5Emvm+lkjMYY/LQ==
+"@babel/helper-module-transforms@^7.12.1", "@babel/helper-module-transforms@^7.16.7":
+ version "7.16.7"
+ resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.16.7.tgz#7665faeb721a01ca5327ddc6bba15a5cb34b6a41"
+ integrity sha512-gaqtLDxJEFCeQbYp9aLAefjhkKdjKcdh6DB7jniIGU3Pz52WAmP268zK0VgPz9hUNkMSYeH976K2/Y6yPadpng==
dependencies:
- "@babel/helper-environment-visitor" "^7.16.5"
- "@babel/helper-module-imports" "^7.16.0"
- "@babel/helper-simple-access" "^7.16.0"
- "@babel/helper-split-export-declaration" "^7.16.0"
- "@babel/helper-validator-identifier" "^7.15.7"
- "@babel/template" "^7.16.0"
- "@babel/traverse" "^7.16.5"
- "@babel/types" "^7.16.0"
+ "@babel/helper-environment-visitor" "^7.16.7"
+ "@babel/helper-module-imports" "^7.16.7"
+ "@babel/helper-simple-access" "^7.16.7"
+ "@babel/helper-split-export-declaration" "^7.16.7"
+ "@babel/helper-validator-identifier" "^7.16.7"
+ "@babel/template" "^7.16.7"
+ "@babel/traverse" "^7.16.7"
+ "@babel/types" "^7.16.7"
-"@babel/helper-optimise-call-expression@^7.16.0":
- version "7.16.0"
- resolved "https://registry.yarnpkg.com/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.16.0.tgz#cecdb145d70c54096b1564f8e9f10cd7d193b338"
- integrity sha512-SuI467Gi2V8fkofm2JPnZzB/SUuXoJA5zXe/xzyPP2M04686RzFKFHPK6HDVN6JvWBIEW8tt9hPR7fXdn2Lgpw==
+"@babel/helper-optimise-call-expression@^7.16.7":
+ version "7.16.7"
+ resolved "https://registry.yarnpkg.com/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.16.7.tgz#a34e3560605abbd31a18546bd2aad3e6d9a174f2"
+ integrity sha512-EtgBhg7rd/JcnpZFXpBy0ze1YRfdm7BnBX4uKMBd3ixa3RGAE002JZB66FJyNH7g0F38U05pXmA5P8cBh7z+1w==
dependencies:
- "@babel/types" "^7.16.0"
+ "@babel/types" "^7.16.7"
"@babel/helper-plugin-utils@7.10.4":
version "7.10.4"
resolved "https://registry.yarnpkg.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.10.4.tgz#2f75a831269d4f677de49986dff59927533cf375"
integrity sha512-O4KCvQA6lLiMU9l2eawBPMf1xPP8xPfB3iEQw150hOVTqj/rfXz0ThTb4HEzqQfs2Bmo5Ay8BzxfzVtBrr9dVg==
-"@babel/helper-plugin-utils@^7.0.0", "@babel/helper-plugin-utils@^7.10.4", "@babel/helper-plugin-utils@^7.12.13", "@babel/helper-plugin-utils@^7.13.0", "@babel/helper-plugin-utils@^7.14.5", "@babel/helper-plugin-utils@^7.16.5", "@babel/helper-plugin-utils@^7.8.0", "@babel/helper-plugin-utils@^7.8.3":
- version "7.16.5"
- resolved "https://registry.yarnpkg.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.16.5.tgz#afe37a45f39fce44a3d50a7958129ea5b1a5c074"
- integrity sha512-59KHWHXxVA9K4HNF4sbHCf+eJeFe0Te/ZFGqBT4OjXhrwvA04sGfaEGsVTdsjoszq0YTP49RC9UKe5g8uN2RwQ==
+"@babel/helper-plugin-utils@^7.0.0", "@babel/helper-plugin-utils@^7.10.4", "@babel/helper-plugin-utils@^7.12.13", "@babel/helper-plugin-utils@^7.13.0", "@babel/helper-plugin-utils@^7.14.5", "@babel/helper-plugin-utils@^7.16.7", "@babel/helper-plugin-utils@^7.8.0", "@babel/helper-plugin-utils@^7.8.3":
+ version "7.16.7"
+ resolved "https://registry.yarnpkg.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.16.7.tgz#aa3a8ab4c3cceff8e65eb9e73d87dc4ff320b2f5"
+ integrity sha512-Qg3Nk7ZxpgMrsox6HreY1ZNKdBq7K72tDSliA6dCl5f007jR4ne8iD5UzuNnCJH2xBf2BEEVGr+/OL6Gdp7RxA==
-"@babel/helper-remap-async-to-generator@^7.16.5":
- version "7.16.5"
- resolved "https://registry.yarnpkg.com/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.16.5.tgz#e706646dc4018942acb4b29f7e185bc246d65ac3"
- integrity sha512-X+aAJldyxrOmN9v3FKp+Hu1NO69VWgYgDGq6YDykwRPzxs5f2N+X988CBXS7EQahDU+Vpet5QYMqLk+nsp+Qxw==
+"@babel/helper-remap-async-to-generator@^7.16.7":
+ version "7.16.7"
+ resolved "https://registry.yarnpkg.com/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.16.7.tgz#5ce2416990d55eb6e099128338848ae8ffa58a9a"
+ integrity sha512-C3o117GnP/j/N2OWo+oepeWbFEKRfNaay+F1Eo5Mj3A1SRjyx+qaFhm23nlipub7Cjv2azdUUiDH+VlpdwUFRg==
dependencies:
- "@babel/helper-annotate-as-pure" "^7.16.0"
- "@babel/helper-wrap-function" "^7.16.5"
- "@babel/types" "^7.16.0"
+ "@babel/helper-annotate-as-pure" "^7.16.7"
+ "@babel/helper-wrap-function" "^7.16.7"
+ "@babel/types" "^7.16.7"
-"@babel/helper-replace-supers@^7.16.5":
- version "7.16.5"
- resolved "https://registry.yarnpkg.com/@babel/helper-replace-supers/-/helper-replace-supers-7.16.5.tgz#96d3988bd0ab0a2d22c88c6198c3d3234ca25326"
- integrity sha512-ao3seGVa/FZCMCCNDuBcqnBFSbdr8N2EW35mzojx3TwfIbdPmNK+JV6+2d5bR0Z71W5ocLnQp9en/cTF7pBJiQ==
+"@babel/helper-replace-supers@^7.16.7":
+ version "7.16.7"
+ resolved "https://registry.yarnpkg.com/@babel/helper-replace-supers/-/helper-replace-supers-7.16.7.tgz#e9f5f5f32ac90429c1a4bdec0f231ef0c2838ab1"
+ integrity sha512-y9vsWilTNaVnVh6xiJfABzsNpgDPKev9HnAgz6Gb1p6UUwf9NepdlsV7VXGCftJM+jqD5f7JIEubcpLjZj5dBw==
dependencies:
- "@babel/helper-environment-visitor" "^7.16.5"
- "@babel/helper-member-expression-to-functions" "^7.16.5"
- "@babel/helper-optimise-call-expression" "^7.16.0"
- "@babel/traverse" "^7.16.5"
- "@babel/types" "^7.16.0"
+ "@babel/helper-environment-visitor" "^7.16.7"
+ "@babel/helper-member-expression-to-functions" "^7.16.7"
+ "@babel/helper-optimise-call-expression" "^7.16.7"
+ "@babel/traverse" "^7.16.7"
+ "@babel/types" "^7.16.7"
-"@babel/helper-simple-access@^7.16.0":
- version "7.16.0"
- resolved "https://registry.yarnpkg.com/@babel/helper-simple-access/-/helper-simple-access-7.16.0.tgz#21d6a27620e383e37534cf6c10bba019a6f90517"
- integrity sha512-o1rjBT/gppAqKsYfUdfHq5Rk03lMQrkPHG1OWzHWpLgVXRH4HnMM9Et9CVdIqwkCQlobnGHEJMsgWP/jE1zUiw==
+"@babel/helper-simple-access@^7.16.7":
+ version "7.16.7"
+ resolved "https://registry.yarnpkg.com/@babel/helper-simple-access/-/helper-simple-access-7.16.7.tgz#d656654b9ea08dbb9659b69d61063ccd343ff0f7"
+ integrity sha512-ZIzHVyoeLMvXMN/vok/a4LWRy8G2v205mNP0XOuf9XRLyX5/u9CnVulUtDgUTama3lT+bf/UqucuZjqiGuTS1g==
dependencies:
- "@babel/types" "^7.16.0"
+ "@babel/types" "^7.16.7"
"@babel/helper-skip-transparent-expression-wrappers@^7.16.0":
version "7.16.0"
@@ -335,161 +335,161 @@
dependencies:
"@babel/types" "^7.16.0"
-"@babel/helper-split-export-declaration@^7.16.0":
- version "7.16.0"
- resolved "https://registry.yarnpkg.com/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.16.0.tgz#29672f43663e936df370aaeb22beddb3baec7438"
- integrity sha512-0YMMRpuDFNGTHNRiiqJX19GjNXA4H0E8jZ2ibccfSxaCogbm3am5WN/2nQNj0YnQwGWM1J06GOcQ2qnh3+0paw==
+"@babel/helper-split-export-declaration@^7.16.7":
+ version "7.16.7"
+ resolved "https://registry.yarnpkg.com/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.16.7.tgz#0b648c0c42da9d3920d85ad585f2778620b8726b"
+ integrity sha512-xbWoy/PFoxSWazIToT9Sif+jJTlrMcndIsaOKvTA6u7QEo7ilkRZpjew18/W3c7nm8fXdUDXh02VXTbZ0pGDNw==
dependencies:
- "@babel/types" "^7.16.0"
+ "@babel/types" "^7.16.7"
-"@babel/helper-validator-identifier@^7.15.7":
- version "7.15.7"
- resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.15.7.tgz#220df993bfe904a4a6b02ab4f3385a5ebf6e2389"
- integrity sha512-K4JvCtQqad9OY2+yTU8w+E82ywk/fe+ELNlt1G8z3bVGlZfn/hOcQQsUhGhW/N+tb3fxK800wLtKOE/aM0m72w==
+"@babel/helper-validator-identifier@^7.16.7":
+ version "7.16.7"
+ resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.16.7.tgz#e8c602438c4a8195751243da9031d1607d247cad"
+ integrity sha512-hsEnFemeiW4D08A5gUAZxLBTXpZ39P+a+DGDsHw1yxqyQ/jzFEnxf5uTEGp+3bzAbNOxU1paTgYS4ECU/IgfDw==
-"@babel/helper-validator-option@^7.14.5":
- version "7.14.5"
- resolved "https://registry.yarnpkg.com/@babel/helper-validator-option/-/helper-validator-option-7.14.5.tgz#6e72a1fff18d5dfcb878e1e62f1a021c4b72d5a3"
- integrity sha512-OX8D5eeX4XwcroVW45NMvoYaIuFI+GQpA2a8Gi+X/U/cDUIRsV37qQfF905F0htTRCREQIB4KqPeaveRJUl3Ow==
+"@babel/helper-validator-option@^7.16.7":
+ version "7.16.7"
+ resolved "https://registry.yarnpkg.com/@babel/helper-validator-option/-/helper-validator-option-7.16.7.tgz#b203ce62ce5fe153899b617c08957de860de4d23"
+ integrity sha512-TRtenOuRUVo9oIQGPC5G9DgK4743cdxvtOw0weQNpZXaS16SCBi5MNjZF8vba3ETURjZpTbVn7Vvcf2eAwFozQ==
-"@babel/helper-wrap-function@^7.16.5":
- version "7.16.5"
- resolved "https://registry.yarnpkg.com/@babel/helper-wrap-function/-/helper-wrap-function-7.16.5.tgz#0158fca6f6d0889c3fee8a6ed6e5e07b9b54e41f"
- integrity sha512-2J2pmLBqUqVdJw78U0KPNdeE2qeuIyKoG4mKV7wAq3mc4jJG282UgjZw4ZYDnqiWQuS3Y3IYdF/AQ6CpyBV3VA==
+"@babel/helper-wrap-function@^7.16.7":
+ version "7.16.7"
+ resolved "https://registry.yarnpkg.com/@babel/helper-wrap-function/-/helper-wrap-function-7.16.7.tgz#8ddf9eaa770ed43de4bc3687f3f3b0d6d5ecf014"
+ integrity sha512-7a9sABeVwcunnztZZ7WTgSw6jVYLzM1wua0Z4HIXm9S3/HC96WKQTkFgGEaj5W06SHHihPJ6Le6HzS5cGOQMNw==
dependencies:
- "@babel/helper-function-name" "^7.16.0"
- "@babel/template" "^7.16.0"
- "@babel/traverse" "^7.16.5"
- "@babel/types" "^7.16.0"
+ "@babel/helper-function-name" "^7.16.7"
+ "@babel/template" "^7.16.7"
+ "@babel/traverse" "^7.16.7"
+ "@babel/types" "^7.16.7"
-"@babel/helpers@^7.12.5", "@babel/helpers@^7.16.5":
- version "7.16.5"
- resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.16.5.tgz#29a052d4b827846dd76ece16f565b9634c554ebd"
- integrity sha512-TLgi6Lh71vvMZGEkFuIxzaPsyeYCHQ5jJOOX1f0xXn0uciFuE8cEk0wyBquMcCxBXZ5BJhE2aUB7pnWTD150Tw==
+"@babel/helpers@^7.12.5", "@babel/helpers@^7.16.7":
+ version "7.16.7"
+ resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.16.7.tgz#7e3504d708d50344112767c3542fc5e357fffefc"
+ integrity sha512-9ZDoqtfY7AuEOt3cxchfii6C7GDyyMBffktR5B2jvWv8u2+efwvpnVKXMWzNehqy68tKgAfSwfdw/lWpthS2bw==
dependencies:
- "@babel/template" "^7.16.0"
- "@babel/traverse" "^7.16.5"
- "@babel/types" "^7.16.0"
+ "@babel/template" "^7.16.7"
+ "@babel/traverse" "^7.16.7"
+ "@babel/types" "^7.16.7"
-"@babel/highlight@^7.10.4", "@babel/highlight@^7.16.0":
- version "7.16.0"
- resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.16.0.tgz#6ceb32b2ca4b8f5f361fb7fd821e3fddf4a1725a"
- integrity sha512-t8MH41kUQylBtu2+4IQA3atqevA2lRgqA2wyVB/YiWmsDSuylZZuXOUy9ric30hfzauEFfdsuk/eXTRrGrfd0g==
+"@babel/highlight@^7.10.4", "@babel/highlight@^7.16.7":
+ version "7.16.7"
+ resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.16.7.tgz#81a01d7d675046f0d96f82450d9d9578bdfd6b0b"
+ integrity sha512-aKpPMfLvGO3Q97V0qhw/V2SWNWlwfJknuwAunU7wZLSfrM4xTBvg7E5opUVi1kJTBKihE38CPg4nBiqX83PWYw==
dependencies:
- "@babel/helper-validator-identifier" "^7.15.7"
+ "@babel/helper-validator-identifier" "^7.16.7"
chalk "^2.0.0"
js-tokens "^4.0.0"
-"@babel/parser@^7.1.0", "@babel/parser@^7.12.11", "@babel/parser@^7.12.7", "@babel/parser@^7.14.7", "@babel/parser@^7.16.0", "@babel/parser@^7.16.5", "@babel/parser@^7.7.2":
- version "7.16.6"
- resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.16.6.tgz#8f194828193e8fa79166f34a4b4e52f3e769a314"
- integrity sha512-Gr86ujcNuPDnNOY8mi383Hvi8IYrJVJYuf3XcuBM/Dgd+bINn/7tHqsj+tKkoreMbmGsFLsltI/JJd8fOFWGDQ==
+"@babel/parser@^7.1.0", "@babel/parser@^7.12.11", "@babel/parser@^7.12.7", "@babel/parser@^7.14.7", "@babel/parser@^7.16.7", "@babel/parser@^7.7.2":
+ version "7.16.7"
+ resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.16.7.tgz#d372dda9c89fcec340a82630a9f533f2fe15877e"
+ integrity sha512-sR4eaSrnM7BV7QPzGfEX5paG/6wrZM3I0HDzfIAK06ESvo9oy3xBuVBxE3MbQaKNhvg8g/ixjMWo2CGpzpHsDA==
-"@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@^7.16.2":
- version "7.16.2"
- resolved "https://registry.yarnpkg.com/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/-/plugin-bugfix-safari-id-destructuring-collision-in-function-expression-7.16.2.tgz#2977fca9b212db153c195674e57cfab807733183"
- integrity sha512-h37CvpLSf8gb2lIJ2CgC3t+EjFbi0t8qS7LCS1xcJIlEXE4czlofwaW7W1HA8zpgOCzI9C1nmoqNR1zWkk0pQg==
+"@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@^7.16.7":
+ version "7.16.7"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/-/plugin-bugfix-safari-id-destructuring-collision-in-function-expression-7.16.7.tgz#4eda6d6c2a0aa79c70fa7b6da67763dfe2141050"
+ integrity sha512-anv/DObl7waiGEnC24O9zqL0pSuI9hljihqiDuFHC8d7/bjr/4RLGPWuc8rYOff/QPzbEPSkzG8wGG9aDuhHRg==
dependencies:
- "@babel/helper-plugin-utils" "^7.14.5"
+ "@babel/helper-plugin-utils" "^7.16.7"
-"@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@^7.16.0":
- version "7.16.0"
- resolved "https://registry.yarnpkg.com/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.16.0.tgz#358972eaab006f5eb0826183b0c93cbcaf13e1e2"
- integrity sha512-4tcFwwicpWTrpl9qjf7UsoosaArgImF85AxqCRZlgc3IQDvkUHjJpruXAL58Wmj+T6fypWTC/BakfEkwIL/pwA==
+"@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@^7.16.7":
+ version "7.16.7"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.16.7.tgz#cc001234dfc139ac45f6bcf801866198c8c72ff9"
+ integrity sha512-di8vUHRdf+4aJ7ltXhaDbPoszdkh59AQtJM5soLsuHpQJdFQZOA4uGj0V2u/CZ8bJ/u8ULDL5yq6FO/bCXnKHw==
dependencies:
- "@babel/helper-plugin-utils" "^7.14.5"
+ "@babel/helper-plugin-utils" "^7.16.7"
"@babel/helper-skip-transparent-expression-wrappers" "^7.16.0"
- "@babel/plugin-proposal-optional-chaining" "^7.16.0"
+ "@babel/plugin-proposal-optional-chaining" "^7.16.7"
-"@babel/plugin-proposal-async-generator-functions@^7.16.5":
- version "7.16.5"
- resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.16.5.tgz#fd3bd7e0d98404a3d4cbca15a72d533f8c9a2f67"
- integrity sha512-C/FX+3HNLV6sz7AqbTQqEo1L9/kfrKjxcVtgyBCmvIgOjvuBVUWooDoi7trsLxOzCEo5FccjRvKHkfDsJFZlfA==
+"@babel/plugin-proposal-async-generator-functions@^7.16.7":
+ version "7.16.7"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.16.7.tgz#739adc1212a9e4892de440cd7dfffb06172df78d"
+ integrity sha512-TTXBT3A5c11eqRzaC6beO6rlFT3Mo9C2e8eB44tTr52ESXSK2CIc2fOp1ynpAwQA8HhBMho+WXhMHWlAe3xkpw==
dependencies:
- "@babel/helper-plugin-utils" "^7.16.5"
- "@babel/helper-remap-async-to-generator" "^7.16.5"
+ "@babel/helper-plugin-utils" "^7.16.7"
+ "@babel/helper-remap-async-to-generator" "^7.16.7"
"@babel/plugin-syntax-async-generators" "^7.8.4"
-"@babel/plugin-proposal-class-properties@^7.12.1", "@babel/plugin-proposal-class-properties@^7.16.5":
- version "7.16.5"
- resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.16.5.tgz#3269f44b89122110f6339806e05d43d84106468a"
- integrity sha512-pJD3HjgRv83s5dv1sTnDbZOaTjghKEz8KUn1Kbh2eAIRhGuyQ1XSeI4xVXU3UlIEVA3DAyIdxqT1eRn7Wcn55A==
+"@babel/plugin-proposal-class-properties@^7.12.1", "@babel/plugin-proposal-class-properties@^7.16.7":
+ version "7.16.7"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.16.7.tgz#925cad7b3b1a2fcea7e59ecc8eb5954f961f91b0"
+ integrity sha512-IobU0Xme31ewjYOShSIqd/ZGM/r/cuOz2z0MDbNrhF5FW+ZVgi0f2lyeoj9KFPDOAqsYxmLWZte1WOwlvY9aww==
dependencies:
- "@babel/helper-create-class-features-plugin" "^7.16.5"
- "@babel/helper-plugin-utils" "^7.16.5"
+ "@babel/helper-create-class-features-plugin" "^7.16.7"
+ "@babel/helper-plugin-utils" "^7.16.7"
-"@babel/plugin-proposal-class-static-block@^7.16.5":
- version "7.16.5"
- resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-class-static-block/-/plugin-proposal-class-static-block-7.16.5.tgz#df58ab015a7d3b0963aafc8f20792dcd834952a9"
- integrity sha512-EEFzuLZcm/rNJ8Q5krK+FRKdVkd6FjfzT9tuSZql9sQn64K0hHA2KLJ0DqVot9/iV6+SsuadC5yI39zWnm+nmQ==
+"@babel/plugin-proposal-class-static-block@^7.16.7":
+ version "7.16.7"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-class-static-block/-/plugin-proposal-class-static-block-7.16.7.tgz#712357570b612106ef5426d13dc433ce0f200c2a"
+ integrity sha512-dgqJJrcZoG/4CkMopzhPJjGxsIe9A8RlkQLnL/Vhhx8AA9ZuaRwGSlscSh42hazc7WSrya/IK7mTeoF0DP9tEw==
dependencies:
- "@babel/helper-create-class-features-plugin" "^7.16.5"
- "@babel/helper-plugin-utils" "^7.16.5"
+ "@babel/helper-create-class-features-plugin" "^7.16.7"
+ "@babel/helper-plugin-utils" "^7.16.7"
"@babel/plugin-syntax-class-static-block" "^7.14.5"
"@babel/plugin-proposal-decorators@^7.12.12":
- version "7.16.5"
- resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-decorators/-/plugin-proposal-decorators-7.16.5.tgz#4617420d3685078dfab8f68f859dca1448bbb3c7"
- integrity sha512-XAiZll5oCdp2Dd2RbXA3LVPlFyIRhhcQy+G34p9ePpl6mjFkbqHAYHovyw2j5mqUrlBf0/+MtOIJ3JGYtz8qaw==
+ version "7.16.7"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-decorators/-/plugin-proposal-decorators-7.16.7.tgz#922907d2e3e327f5b07d2246bcfc0bd438f360d2"
+ integrity sha512-DoEpnuXK14XV9btI1k8tzNGCutMclpj4yru8aXKoHlVmbO1s+2A+g2+h4JhcjrxkFJqzbymnLG6j/niOf3iFXQ==
dependencies:
- "@babel/helper-create-class-features-plugin" "^7.16.5"
- "@babel/helper-plugin-utils" "^7.16.5"
- "@babel/plugin-syntax-decorators" "^7.16.5"
+ "@babel/helper-create-class-features-plugin" "^7.16.7"
+ "@babel/helper-plugin-utils" "^7.16.7"
+ "@babel/plugin-syntax-decorators" "^7.16.7"
-"@babel/plugin-proposal-dynamic-import@^7.16.5":
- version "7.16.5"
- resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-dynamic-import/-/plugin-proposal-dynamic-import-7.16.5.tgz#2e0d19d5702db4dcb9bc846200ca02f2e9d60e9e"
- integrity sha512-P05/SJZTTvHz79LNYTF8ff5xXge0kk5sIIWAypcWgX4BTRUgyHc8wRxJ/Hk+mU0KXldgOOslKaeqnhthcDJCJQ==
+"@babel/plugin-proposal-dynamic-import@^7.16.7":
+ version "7.16.7"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-dynamic-import/-/plugin-proposal-dynamic-import-7.16.7.tgz#c19c897eaa46b27634a00fee9fb7d829158704b2"
+ integrity sha512-I8SW9Ho3/8DRSdmDdH3gORdyUuYnk1m4cMxUAdu5oy4n3OfN8flDEH+d60iG7dUfi0KkYwSvoalHzzdRzpWHTg==
dependencies:
- "@babel/helper-plugin-utils" "^7.16.5"
+ "@babel/helper-plugin-utils" "^7.16.7"
"@babel/plugin-syntax-dynamic-import" "^7.8.3"
"@babel/plugin-proposal-export-default-from@^7.12.1":
- version "7.16.5"
- resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-export-default-from/-/plugin-proposal-export-default-from-7.16.5.tgz#8771249ffc9c06c9eb27342cf5c072a83c6d3811"
- integrity sha512-pU4aCS+AzGjDD/6LnwSmeelmtqfMSjzQxs7+/AS673bYsshK1XZm9eth6OkgivVscQM8XdkVYhrb6tPFVTBVHA==
+ version "7.16.7"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-export-default-from/-/plugin-proposal-export-default-from-7.16.7.tgz#a40ab158ca55627b71c5513f03d3469026a9e929"
+ integrity sha512-+cENpW1rgIjExn+o5c8Jw/4BuH4eGKKYvkMB8/0ZxFQ9mC0t4z09VsPIwNg6waF69QYC81zxGeAsREGuqQoKeg==
dependencies:
- "@babel/helper-plugin-utils" "^7.16.5"
- "@babel/plugin-syntax-export-default-from" "^7.16.5"
+ "@babel/helper-plugin-utils" "^7.16.7"
+ "@babel/plugin-syntax-export-default-from" "^7.16.7"
-"@babel/plugin-proposal-export-namespace-from@^7.16.5":
- version "7.16.5"
- resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-export-namespace-from/-/plugin-proposal-export-namespace-from-7.16.5.tgz#3b4dd28378d1da2fea33e97b9f25d1c2f5bf1ac9"
- integrity sha512-i+sltzEShH1vsVydvNaTRsgvq2vZsfyrd7K7vPLUU/KgS0D5yZMe6uipM0+izminnkKrEfdUnz7CxMRb6oHZWw==
+"@babel/plugin-proposal-export-namespace-from@^7.16.7":
+ version "7.16.7"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-export-namespace-from/-/plugin-proposal-export-namespace-from-7.16.7.tgz#09de09df18445a5786a305681423ae63507a6163"
+ integrity sha512-ZxdtqDXLRGBL64ocZcs7ovt71L3jhC1RGSyR996svrCi3PYqHNkb3SwPJCs8RIzD86s+WPpt2S73+EHCGO+NUA==
dependencies:
- "@babel/helper-plugin-utils" "^7.16.5"
+ "@babel/helper-plugin-utils" "^7.16.7"
"@babel/plugin-syntax-export-namespace-from" "^7.8.3"
-"@babel/plugin-proposal-json-strings@^7.16.5":
- version "7.16.5"
- resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.16.5.tgz#1e726930fca139caab6b084d232a9270d9d16f9c"
- integrity sha512-QQJueTFa0y9E4qHANqIvMsuxM/qcLQmKttBACtPCQzGUEizsXDACGonlPiSwynHfOa3vNw0FPMVvQzbuXwh4SQ==
+"@babel/plugin-proposal-json-strings@^7.16.7":
+ version "7.16.7"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.16.7.tgz#9732cb1d17d9a2626a08c5be25186c195b6fa6e8"
+ integrity sha512-lNZ3EEggsGY78JavgbHsK9u5P3pQaW7k4axlgFLYkMd7UBsiNahCITShLjNQschPyjtO6dADrL24757IdhBrsQ==
dependencies:
- "@babel/helper-plugin-utils" "^7.16.5"
+ "@babel/helper-plugin-utils" "^7.16.7"
"@babel/plugin-syntax-json-strings" "^7.8.3"
-"@babel/plugin-proposal-logical-assignment-operators@^7.16.5":
- version "7.16.5"
- resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-logical-assignment-operators/-/plugin-proposal-logical-assignment-operators-7.16.5.tgz#df1f2e4b5a0ec07abf061d2c18e53abc237d3ef5"
- integrity sha512-xqibl7ISO2vjuQM+MzR3rkd0zfNWltk7n9QhaD8ghMmMceVguYrNDt7MikRyj4J4v3QehpnrU8RYLnC7z/gZLA==
+"@babel/plugin-proposal-logical-assignment-operators@^7.16.7":
+ version "7.16.7"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-logical-assignment-operators/-/plugin-proposal-logical-assignment-operators-7.16.7.tgz#be23c0ba74deec1922e639832904be0bea73cdea"
+ integrity sha512-K3XzyZJGQCr00+EtYtrDjmwX7o7PLK6U9bi1nCwkQioRFVUv6dJoxbQjtWVtP+bCPy82bONBKG8NPyQ4+i6yjg==
dependencies:
- "@babel/helper-plugin-utils" "^7.16.5"
+ "@babel/helper-plugin-utils" "^7.16.7"
"@babel/plugin-syntax-logical-assignment-operators" "^7.10.4"
-"@babel/plugin-proposal-nullish-coalescing-operator@^7.12.1", "@babel/plugin-proposal-nullish-coalescing-operator@^7.16.5":
- version "7.16.5"
- resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.16.5.tgz#652555bfeeeee2d2104058c6225dc6f75e2d0f07"
- integrity sha512-YwMsTp/oOviSBhrjwi0vzCUycseCYwoXnLiXIL3YNjHSMBHicGTz7GjVU/IGgz4DtOEXBdCNG72pvCX22ehfqg==
+"@babel/plugin-proposal-nullish-coalescing-operator@^7.12.1", "@babel/plugin-proposal-nullish-coalescing-operator@^7.16.7":
+ version "7.16.7"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.16.7.tgz#141fc20b6857e59459d430c850a0011e36561d99"
+ integrity sha512-aUOrYU3EVtjf62jQrCj63pYZ7k6vns2h/DQvHPWGmsJRYzWXZ6/AsfgpiRy6XiuIDADhJzP2Q9MwSMKauBQ+UQ==
dependencies:
- "@babel/helper-plugin-utils" "^7.16.5"
+ "@babel/helper-plugin-utils" "^7.16.7"
"@babel/plugin-syntax-nullish-coalescing-operator" "^7.8.3"
-"@babel/plugin-proposal-numeric-separator@^7.16.5":
- version "7.16.5"
- resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-numeric-separator/-/plugin-proposal-numeric-separator-7.16.5.tgz#edcb6379b6cf4570be64c45965d8da7a2debf039"
- integrity sha512-DvB9l/TcsCRvsIV9v4jxR/jVP45cslTVC0PMVHvaJhhNuhn2Y1SOhCSFlPK777qLB5wb8rVDaNoqMTyOqtY5Iw==
+"@babel/plugin-proposal-numeric-separator@^7.16.7":
+ version "7.16.7"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-numeric-separator/-/plugin-proposal-numeric-separator-7.16.7.tgz#d6b69f4af63fb38b6ca2558442a7fb191236eba9"
+ integrity sha512-vQgPMknOIgiuVqbokToyXbkY/OmmjAzr/0lhSIbG/KmnzXPGwW/AdhdKpi+O4X/VkWiWjnkKOBiqJrTaC98VKw==
dependencies:
- "@babel/helper-plugin-utils" "^7.16.5"
+ "@babel/helper-plugin-utils" "^7.16.7"
"@babel/plugin-syntax-numeric-separator" "^7.10.4"
"@babel/plugin-proposal-object-rest-spread@7.12.1":
@@ -501,59 +501,59 @@
"@babel/plugin-syntax-object-rest-spread" "^7.8.0"
"@babel/plugin-transform-parameters" "^7.12.1"
-"@babel/plugin-proposal-object-rest-spread@^7.12.1", "@babel/plugin-proposal-object-rest-spread@^7.16.5":
- version "7.16.5"
- resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.16.5.tgz#f30f80dacf7bc1404bf67f99c8d9c01665e830ad"
- integrity sha512-UEd6KpChoyPhCoE840KRHOlGhEZFutdPDMGj+0I56yuTTOaT51GzmnEl/0uT41fB/vD2nT+Pci2KjezyE3HmUw==
+"@babel/plugin-proposal-object-rest-spread@^7.12.1", "@babel/plugin-proposal-object-rest-spread@^7.16.7":
+ version "7.16.7"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.16.7.tgz#94593ef1ddf37021a25bdcb5754c4a8d534b01d8"
+ integrity sha512-3O0Y4+dw94HA86qSg9IHfyPktgR7q3gpNVAeiKQd+8jBKFaU5NQS1Yatgo4wY+UFNuLjvxcSmzcsHqrhgTyBUA==
dependencies:
"@babel/compat-data" "^7.16.4"
- "@babel/helper-compilation-targets" "^7.16.3"
- "@babel/helper-plugin-utils" "^7.16.5"
+ "@babel/helper-compilation-targets" "^7.16.7"
+ "@babel/helper-plugin-utils" "^7.16.7"
"@babel/plugin-syntax-object-rest-spread" "^7.8.3"
- "@babel/plugin-transform-parameters" "^7.16.5"
+ "@babel/plugin-transform-parameters" "^7.16.7"
-"@babel/plugin-proposal-optional-catch-binding@^7.16.5":
- version "7.16.5"
- resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.16.5.tgz#1a5405765cf589a11a33a1fd75b2baef7d48b74e"
- integrity sha512-ihCMxY1Iljmx4bWy/PIMJGXN4NS4oUj1MKynwO07kiKms23pNvIn1DMB92DNB2R0EA882sw0VXIelYGdtF7xEQ==
+"@babel/plugin-proposal-optional-catch-binding@^7.16.7":
+ version "7.16.7"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.16.7.tgz#c623a430674ffc4ab732fd0a0ae7722b67cb74cf"
+ integrity sha512-eMOH/L4OvWSZAE1VkHbr1vckLG1WUcHGJSLqqQwl2GaUqG6QjddvrOaTUMNYiv77H5IKPMZ9U9P7EaHwvAShfA==
dependencies:
- "@babel/helper-plugin-utils" "^7.16.5"
+ "@babel/helper-plugin-utils" "^7.16.7"
"@babel/plugin-syntax-optional-catch-binding" "^7.8.3"
-"@babel/plugin-proposal-optional-chaining@^7.12.7", "@babel/plugin-proposal-optional-chaining@^7.16.0", "@babel/plugin-proposal-optional-chaining@^7.16.5":
- version "7.16.5"
- resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.16.5.tgz#a5fa61056194d5059366c0009cb9a9e66ed75c1f"
- integrity sha512-kzdHgnaXRonttiTfKYnSVafbWngPPr2qKw9BWYBESl91W54e+9R5pP70LtWxV56g0f05f/SQrwHYkfvbwcdQ/A==
+"@babel/plugin-proposal-optional-chaining@^7.12.7", "@babel/plugin-proposal-optional-chaining@^7.16.7":
+ version "7.16.7"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.16.7.tgz#7cd629564724816c0e8a969535551f943c64c39a"
+ integrity sha512-eC3xy+ZrUcBtP7x+sq62Q/HYd674pPTb/77XZMb5wbDPGWIdUbSr4Agr052+zaUPSb+gGRnjxXfKFvx5iMJ+DA==
dependencies:
- "@babel/helper-plugin-utils" "^7.16.5"
+ "@babel/helper-plugin-utils" "^7.16.7"
"@babel/helper-skip-transparent-expression-wrappers" "^7.16.0"
"@babel/plugin-syntax-optional-chaining" "^7.8.3"
-"@babel/plugin-proposal-private-methods@^7.12.1", "@babel/plugin-proposal-private-methods@^7.16.5":
- version "7.16.5"
- resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-private-methods/-/plugin-proposal-private-methods-7.16.5.tgz#2086f7d78c1b0c712d49b5c3fbc2d1ca21a7ee12"
- integrity sha512-+yFMO4BGT3sgzXo+lrq7orX5mAZt57DwUK6seqII6AcJnJOIhBJ8pzKH47/ql/d426uQ7YhN8DpUFirQzqYSUA==
+"@babel/plugin-proposal-private-methods@^7.12.1", "@babel/plugin-proposal-private-methods@^7.16.7":
+ version "7.16.7"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-private-methods/-/plugin-proposal-private-methods-7.16.7.tgz#e418e3aa6f86edd6d327ce84eff188e479f571e0"
+ integrity sha512-7twV3pzhrRxSwHeIvFE6coPgvo+exNDOiGUMg39o2LiLo1Y+4aKpfkcLGcg1UHonzorCt7SNXnoMyCnnIOA8Sw==
dependencies:
- "@babel/helper-create-class-features-plugin" "^7.16.5"
- "@babel/helper-plugin-utils" "^7.16.5"
+ "@babel/helper-create-class-features-plugin" "^7.16.7"
+ "@babel/helper-plugin-utils" "^7.16.7"
-"@babel/plugin-proposal-private-property-in-object@^7.16.5":
- version "7.16.5"
- resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-private-property-in-object/-/plugin-proposal-private-property-in-object-7.16.5.tgz#a42d4b56005db3d405b12841309dbca647e7a21b"
- integrity sha512-+YGh5Wbw0NH3y/E5YMu6ci5qTDmAEVNoZ3I54aB6nVEOZ5BQ7QJlwKq5pYVucQilMByGn/bvX0af+uNaPRCabA==
+"@babel/plugin-proposal-private-property-in-object@^7.16.7":
+ version "7.16.7"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-private-property-in-object/-/plugin-proposal-private-property-in-object-7.16.7.tgz#b0b8cef543c2c3d57e59e2c611994861d46a3fce"
+ integrity sha512-rMQkjcOFbm+ufe3bTZLyOfsOUOxyvLXZJCTARhJr+8UMSoZmqTe1K1BgkFcrW37rAchWg57yI69ORxiWvUINuQ==
dependencies:
- "@babel/helper-annotate-as-pure" "^7.16.0"
- "@babel/helper-create-class-features-plugin" "^7.16.5"
- "@babel/helper-plugin-utils" "^7.16.5"
+ "@babel/helper-annotate-as-pure" "^7.16.7"
+ "@babel/helper-create-class-features-plugin" "^7.16.7"
+ "@babel/helper-plugin-utils" "^7.16.7"
"@babel/plugin-syntax-private-property-in-object" "^7.14.5"
-"@babel/plugin-proposal-unicode-property-regex@^7.16.5", "@babel/plugin-proposal-unicode-property-regex@^7.4.4":
- version "7.16.5"
- resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.16.5.tgz#35fe753afa7c572f322bd068ff3377bde0f37080"
- integrity sha512-s5sKtlKQyFSatt781HQwv1hoM5BQ9qRH30r+dK56OLDsHmV74mzwJNX7R1yMuE7VZKG5O6q/gmOGSAO6ikTudg==
+"@babel/plugin-proposal-unicode-property-regex@^7.16.7", "@babel/plugin-proposal-unicode-property-regex@^7.4.4":
+ version "7.16.7"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.16.7.tgz#635d18eb10c6214210ffc5ff4932552de08188a2"
+ integrity sha512-QRK0YI/40VLhNVGIjRNAAQkEHws0cswSdFFjpFyt943YmJIU1da9uW63Iu6NFV6CxTZW5eTDCrwZUstBWgp/Rg==
dependencies:
- "@babel/helper-create-regexp-features-plugin" "^7.16.0"
- "@babel/helper-plugin-utils" "^7.16.5"
+ "@babel/helper-create-regexp-features-plugin" "^7.16.7"
+ "@babel/helper-plugin-utils" "^7.16.7"
"@babel/plugin-syntax-async-generators@^7.8.4":
version "7.8.4"
@@ -583,12 +583,12 @@
dependencies:
"@babel/helper-plugin-utils" "^7.14.5"
-"@babel/plugin-syntax-decorators@^7.16.5":
- version "7.16.5"
- resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-decorators/-/plugin-syntax-decorators-7.16.5.tgz#8d397dee482716a79f1a22314f0b4770a5b67427"
- integrity sha512-3CbYTXfflvyy8O819uhZcZSMedZG4J8yS/NLTc/8T24M9ke1GssTGvg8VZu3Yn2LU5IyQSv1CmPq0a9JWHXJwg==
+"@babel/plugin-syntax-decorators@^7.16.7":
+ version "7.16.7"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-decorators/-/plugin-syntax-decorators-7.16.7.tgz#f66a0199f16de7c1ef5192160ccf5d069739e3d3"
+ integrity sha512-vQ+PxL+srA7g6Rx6I1e15m55gftknl2X8GCUW1JTlkTaXZLJOS0UcaY0eK9jYT7IYf4awn6qwyghVHLDz1WyMw==
dependencies:
- "@babel/helper-plugin-utils" "^7.16.5"
+ "@babel/helper-plugin-utils" "^7.16.7"
"@babel/plugin-syntax-dynamic-import@^7.8.3":
version "7.8.3"
@@ -597,12 +597,12 @@
dependencies:
"@babel/helper-plugin-utils" "^7.8.0"
-"@babel/plugin-syntax-export-default-from@^7.16.5":
- version "7.16.5"
- resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-export-default-from/-/plugin-syntax-export-default-from-7.16.5.tgz#bfc148b007cba23cd2ce2f3c16df223afb44ab30"
- integrity sha512-tvY55nhq4mSG9WbM7IZcLIhdc5jzIZu0PQKJHtZ16+dF7oBxKbqV/Z0e9ta2zaLMvUjH+3rJv1hbZ0+lpXzuFQ==
+"@babel/plugin-syntax-export-default-from@^7.16.7":
+ version "7.16.7"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-export-default-from/-/plugin-syntax-export-default-from-7.16.7.tgz#fa89cf13b60de2c3f79acdc2b52a21174c6de060"
+ integrity sha512-4C3E4NsrLOgftKaTYTULhHsuQrGv3FHrBzOMDiS7UYKIpgGBkAdawg4h+EI8zPeK9M0fiIIh72hIwsI24K7MbA==
dependencies:
- "@babel/helper-plugin-utils" "^7.16.5"
+ "@babel/helper-plugin-utils" "^7.16.7"
"@babel/plugin-syntax-export-namespace-from@^7.8.3":
version "7.8.3"
@@ -611,12 +611,12 @@
dependencies:
"@babel/helper-plugin-utils" "^7.8.3"
-"@babel/plugin-syntax-flow@^7.16.5":
- version "7.16.5"
- resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-flow/-/plugin-syntax-flow-7.16.5.tgz#ca0d85e12d71b825b4e9fd1f8d29b64acdf1b46e"
- integrity sha512-Nrx+7EAJx1BieBQseZa2pavVH2Rp7hADK2xn7coYqVbWRu9C2OFizYcsKo6TrrqJkJl+qF/+Qqzrk/+XDu4GnA==
+"@babel/plugin-syntax-flow@^7.16.7":
+ version "7.16.7"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-flow/-/plugin-syntax-flow-7.16.7.tgz#202b147e5892b8452bbb0bb269c7ed2539ab8832"
+ integrity sha512-UDo3YGQO0jH6ytzVwgSLv9i/CzMcUjbKenL67dTrAZPPv6GFAtDhe6jqnvmoKzC/7htNTohhos+onPtDMqJwaQ==
dependencies:
- "@babel/helper-plugin-utils" "^7.16.5"
+ "@babel/helper-plugin-utils" "^7.16.7"
"@babel/plugin-syntax-import-meta@^7.8.3":
version "7.10.4"
@@ -639,12 +639,12 @@
dependencies:
"@babel/helper-plugin-utils" "^7.10.4"
-"@babel/plugin-syntax-jsx@^7.16.5":
- version "7.16.5"
- resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.16.5.tgz#bf255d252f78bc8b77a17cadc37d1aa5b8ed4394"
- integrity sha512-42OGssv9NPk4QHKVgIHlzeLgPOW5rGgfV5jzG90AhcXXIv6hu/eqj63w4VgvRxdvZY3AlYeDgPiSJ3BqAd1Y6Q==
+"@babel/plugin-syntax-jsx@^7.16.7":
+ version "7.16.7"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.16.7.tgz#50b6571d13f764266a113d77c82b4a6508bbe665"
+ integrity sha512-Esxmk7YjA8QysKeT3VhTXvF6y77f/a91SIs4pWb4H2eWGQkCKFgQaG6hdoEVZtGsrAcb2K5BW66XsOErD4WU3Q==
dependencies:
- "@babel/helper-plugin-utils" "^7.16.5"
+ "@babel/helper-plugin-utils" "^7.16.7"
"@babel/plugin-syntax-logical-assignment-operators@^7.10.4", "@babel/plugin-syntax-logical-assignment-operators@^7.8.3":
version "7.10.4"
@@ -702,338 +702,339 @@
dependencies:
"@babel/helper-plugin-utils" "^7.14.5"
-"@babel/plugin-syntax-typescript@^7.16.0", "@babel/plugin-syntax-typescript@^7.7.2":
- version "7.16.5"
- resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.16.5.tgz#f47a33e4eee38554f00fb6b2f894fa1f5649b0b3"
- integrity sha512-/d4//lZ1Vqb4mZ5xTep3dDK888j7BGM/iKqBmndBaoYAFPlPKrGU608VVBz5JeyAb6YQDjRu1UKqj86UhwWVgw==
+"@babel/plugin-syntax-typescript@^7.16.7", "@babel/plugin-syntax-typescript@^7.7.2":
+ version "7.16.7"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.16.7.tgz#39c9b55ee153151990fb038651d58d3fd03f98f8"
+ integrity sha512-YhUIJHHGkqPgEcMYkPCKTyGUdoGKWtopIycQyjJH8OjvRgOYsXsaKehLVPScKJWAULPxMa4N1vCe6szREFlZ7A==
dependencies:
- "@babel/helper-plugin-utils" "^7.16.5"
+ "@babel/helper-plugin-utils" "^7.16.7"
-"@babel/plugin-transform-arrow-functions@^7.12.1", "@babel/plugin-transform-arrow-functions@^7.16.5":
- version "7.16.5"
- resolved "https://registry.yarnpkg.com/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.16.5.tgz#04c18944dd55397b521d9d7511e791acea7acf2d"
- integrity sha512-8bTHiiZyMOyfZFULjsCnYOWG059FVMes0iljEHSfARhNgFfpsqE92OrCffv3veSw9rwMkYcFe9bj0ZoXU2IGtQ==
+"@babel/plugin-transform-arrow-functions@^7.12.1", "@babel/plugin-transform-arrow-functions@^7.16.7":
+ version "7.16.7"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.16.7.tgz#44125e653d94b98db76369de9c396dc14bef4154"
+ integrity sha512-9ffkFFMbvzTvv+7dTp/66xvZAWASuPD5Tl9LK3Z9vhOmANo6j94rik+5YMBt4CwHVMWLWpMsriIc2zsa3WW3xQ==
dependencies:
- "@babel/helper-plugin-utils" "^7.16.5"
+ "@babel/helper-plugin-utils" "^7.16.7"
-"@babel/plugin-transform-async-to-generator@^7.16.5":
- version "7.16.5"
- resolved "https://registry.yarnpkg.com/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.16.5.tgz#89c9b501e65bb14c4579a6ce9563f859de9b34e4"
- integrity sha512-TMXgfioJnkXU+XRoj7P2ED7rUm5jbnDWwlCuFVTpQboMfbSya5WrmubNBAMlk7KXvywpo8rd8WuYZkis1o2H8w==
+"@babel/plugin-transform-async-to-generator@^7.16.7":
+ version "7.16.7"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.16.7.tgz#646e1262ac341b587ff5449844d4492dbb10ac4b"
+ integrity sha512-pFEfjnK4DfXCfAlA5I98BYdDJD8NltMzx19gt6DAmfE+2lXRfPUoa0/5SUjT4+TDE1W/rcxU/1lgN55vpAjjdg==
dependencies:
- "@babel/helper-module-imports" "^7.16.0"
- "@babel/helper-plugin-utils" "^7.16.5"
- "@babel/helper-remap-async-to-generator" "^7.16.5"
+ "@babel/helper-module-imports" "^7.16.7"
+ "@babel/helper-plugin-utils" "^7.16.7"
+ "@babel/helper-remap-async-to-generator" "^7.16.7"
-"@babel/plugin-transform-block-scoped-functions@^7.16.5":
- version "7.16.5"
- resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.16.5.tgz#af087494e1c387574260b7ee9b58cdb5a4e9b0b0"
- integrity sha512-BxmIyKLjUGksJ99+hJyL/HIxLIGnLKtw772zYDER7UuycDZ+Xvzs98ZQw6NGgM2ss4/hlFAaGiZmMNKvValEjw==
+"@babel/plugin-transform-block-scoped-functions@^7.16.7":
+ version "7.16.7"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.16.7.tgz#4d0d57d9632ef6062cdf354bb717102ee042a620"
+ integrity sha512-JUuzlzmF40Z9cXyytcbZEZKckgrQzChbQJw/5PuEHYeqzCsvebDx0K0jWnIIVcmmDOAVctCgnYs0pMcrYj2zJg==
dependencies:
- "@babel/helper-plugin-utils" "^7.16.5"
+ "@babel/helper-plugin-utils" "^7.16.7"
-"@babel/plugin-transform-block-scoping@^7.12.12", "@babel/plugin-transform-block-scoping@^7.16.5":
- version "7.16.5"
- resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.16.5.tgz#b91f254fe53e210eabe4dd0c40f71c0ed253c5e7"
- integrity sha512-JxjSPNZSiOtmxjX7PBRBeRJTUKTyJ607YUYeT0QJCNdsedOe+/rXITjP08eG8xUpsLfPirgzdCFN+h0w6RI+pQ==
+"@babel/plugin-transform-block-scoping@^7.12.12", "@babel/plugin-transform-block-scoping@^7.16.7":
+ version "7.16.7"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.16.7.tgz#f50664ab99ddeaee5bc681b8f3a6ea9d72ab4f87"
+ integrity sha512-ObZev2nxVAYA4bhyusELdo9hb3H+A56bxH3FZMbEImZFiEDYVHXQSJ1hQKFlDnlt8G9bBrCZ5ZpURZUrV4G5qQ==
dependencies:
- "@babel/helper-plugin-utils" "^7.16.5"
+ "@babel/helper-plugin-utils" "^7.16.7"
-"@babel/plugin-transform-classes@^7.12.1", "@babel/plugin-transform-classes@^7.16.5":
- version "7.16.5"
- resolved "https://registry.yarnpkg.com/@babel/plugin-transform-classes/-/plugin-transform-classes-7.16.5.tgz#6acf2ec7adb50fb2f3194dcd2909dbd056dcf216"
- integrity sha512-DzJ1vYf/7TaCYy57J3SJ9rV+JEuvmlnvvyvYKFbk5u46oQbBvuB9/0w+YsVsxkOv8zVWKpDmUoj4T5ILHoXevA==
+"@babel/plugin-transform-classes@^7.12.1", "@babel/plugin-transform-classes@^7.16.7":
+ version "7.16.7"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-classes/-/plugin-transform-classes-7.16.7.tgz#8f4b9562850cd973de3b498f1218796eb181ce00"
+ integrity sha512-WY7og38SFAGYRe64BrjKf8OrE6ulEHtr5jEYaZMwox9KebgqPi67Zqz8K53EKk1fFEJgm96r32rkKZ3qA2nCWQ==
dependencies:
- "@babel/helper-annotate-as-pure" "^7.16.0"
- "@babel/helper-environment-visitor" "^7.16.5"
- "@babel/helper-function-name" "^7.16.0"
- "@babel/helper-optimise-call-expression" "^7.16.0"
- "@babel/helper-plugin-utils" "^7.16.5"
- "@babel/helper-replace-supers" "^7.16.5"
- "@babel/helper-split-export-declaration" "^7.16.0"
+ "@babel/helper-annotate-as-pure" "^7.16.7"
+ "@babel/helper-environment-visitor" "^7.16.7"
+ "@babel/helper-function-name" "^7.16.7"
+ "@babel/helper-optimise-call-expression" "^7.16.7"
+ "@babel/helper-plugin-utils" "^7.16.7"
+ "@babel/helper-replace-supers" "^7.16.7"
+ "@babel/helper-split-export-declaration" "^7.16.7"
globals "^11.1.0"
-"@babel/plugin-transform-computed-properties@^7.16.5":
- version "7.16.5"
- resolved "https://registry.yarnpkg.com/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.16.5.tgz#2af91ebf0cceccfcc701281ada7cfba40a9b322a"
- integrity sha512-n1+O7xtU5lSLraRzX88CNcpl7vtGdPakKzww74bVwpAIRgz9JVLJJpOLb0uYqcOaXVM0TL6X0RVeIJGD2CnCkg==
+"@babel/plugin-transform-computed-properties@^7.16.7":
+ version "7.16.7"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.16.7.tgz#66dee12e46f61d2aae7a73710f591eb3df616470"
+ integrity sha512-gN72G9bcmenVILj//sv1zLNaPyYcOzUho2lIJBMh/iakJ9ygCo/hEF9cpGb61SCMEDxbbyBoVQxrt+bWKu5KGw==
dependencies:
- "@babel/helper-plugin-utils" "^7.16.5"
+ "@babel/helper-plugin-utils" "^7.16.7"
-"@babel/plugin-transform-destructuring@^7.12.1", "@babel/plugin-transform-destructuring@^7.16.5":
- version "7.16.5"
- resolved "https://registry.yarnpkg.com/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.16.5.tgz#89ebc87499ac4a81b897af53bb5d3eed261bd568"
- integrity sha512-GuRVAsjq+c9YPK6NeTkRLWyQskDC099XkBSVO+6QzbnOnH2d/4mBVXYStaPrZD3dFRfg00I6BFJ9Atsjfs8mlg==
+"@babel/plugin-transform-destructuring@^7.12.1", "@babel/plugin-transform-destructuring@^7.16.7":
+ version "7.16.7"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.16.7.tgz#ca9588ae2d63978a4c29d3f33282d8603f618e23"
+ integrity sha512-VqAwhTHBnu5xBVDCvrvqJbtLUa++qZaWC0Fgr2mqokBlulZARGyIvZDoqbPlPaKImQ9dKAcCzbv+ul//uqu70A==
dependencies:
- "@babel/helper-plugin-utils" "^7.16.5"
+ "@babel/helper-plugin-utils" "^7.16.7"
-"@babel/plugin-transform-dotall-regex@^7.16.5", "@babel/plugin-transform-dotall-regex@^7.4.4":
- version "7.16.5"
- resolved "https://registry.yarnpkg.com/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.16.5.tgz#b40739c00b6686820653536d6d143e311de67936"
- integrity sha512-iQiEMt8Q4/5aRGHpGVK2Zc7a6mx7qEAO7qehgSug3SDImnuMzgmm/wtJALXaz25zUj1PmnNHtShjFgk4PDx4nw==
+"@babel/plugin-transform-dotall-regex@^7.16.7", "@babel/plugin-transform-dotall-regex@^7.4.4":
+ version "7.16.7"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.16.7.tgz#6b2d67686fab15fb6a7fd4bd895d5982cfc81241"
+ integrity sha512-Lyttaao2SjZF6Pf4vk1dVKv8YypMpomAbygW+mU5cYP3S5cWTfCJjG8xV6CFdzGFlfWK81IjL9viiTvpb6G7gQ==
dependencies:
- "@babel/helper-create-regexp-features-plugin" "^7.16.0"
- "@babel/helper-plugin-utils" "^7.16.5"
+ "@babel/helper-create-regexp-features-plugin" "^7.16.7"
+ "@babel/helper-plugin-utils" "^7.16.7"
-"@babel/plugin-transform-duplicate-keys@^7.16.5":
- version "7.16.5"
- resolved "https://registry.yarnpkg.com/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.16.5.tgz#2450f2742325412b746d7d005227f5e8973b512a"
- integrity sha512-81tijpDg2a6I1Yhj4aWY1l3O1J4Cg/Pd7LfvuaH2VVInAkXtzibz9+zSPdUM1WvuUi128ksstAP0hM5w48vQgg==
+"@babel/plugin-transform-duplicate-keys@^7.16.7":
+ version "7.16.7"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.16.7.tgz#2207e9ca8f82a0d36a5a67b6536e7ef8b08823c9"
+ integrity sha512-03DvpbRfvWIXyK0/6QiR1KMTWeT6OcQ7tbhjrXyFS02kjuX/mu5Bvnh5SDSWHxyawit2g5aWhKwI86EE7GUnTw==
dependencies:
- "@babel/helper-plugin-utils" "^7.16.5"
+ "@babel/helper-plugin-utils" "^7.16.7"
-"@babel/plugin-transform-exponentiation-operator@^7.16.5":
- version "7.16.5"
- resolved "https://registry.yarnpkg.com/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.16.5.tgz#36e261fa1ab643cfaf30eeab38e00ed1a76081e2"
- integrity sha512-12rba2HwemQPa7BLIKCzm1pT2/RuQHtSFHdNl41cFiC6oi4tcrp7gjB07pxQvFpcADojQywSjblQth6gJyE6CA==
+"@babel/plugin-transform-exponentiation-operator@^7.16.7":
+ version "7.16.7"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.16.7.tgz#efa9862ef97e9e9e5f653f6ddc7b665e8536fe9b"
+ integrity sha512-8UYLSlyLgRixQvlYH3J2ekXFHDFLQutdy7FfFAMm3CPZ6q9wHCwnUyiXpQCe3gVVnQlHc5nsuiEVziteRNTXEA==
dependencies:
- "@babel/helper-builder-binary-assignment-operator-visitor" "^7.16.5"
- "@babel/helper-plugin-utils" "^7.16.5"
+ "@babel/helper-builder-binary-assignment-operator-visitor" "^7.16.7"
+ "@babel/helper-plugin-utils" "^7.16.7"
-"@babel/plugin-transform-flow-strip-types@^7.16.5":
- version "7.16.5"
- resolved "https://registry.yarnpkg.com/@babel/plugin-transform-flow-strip-types/-/plugin-transform-flow-strip-types-7.16.5.tgz#8ceb65ab6ca4a349e04d1887e2470a5bfe8f046f"
- integrity sha512-skE02E/MptkZdBS4HwoRhjWXqeKQj0BWKEAPfPC+8R4/f6bjQqQ9Nftv/+HkxWwnVxh/E2NV9TNfzLN5H/oiBw==
+"@babel/plugin-transform-flow-strip-types@^7.16.7":
+ version "7.16.7"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-flow-strip-types/-/plugin-transform-flow-strip-types-7.16.7.tgz#291fb140c78dabbf87f2427e7c7c332b126964b8"
+ integrity sha512-mzmCq3cNsDpZZu9FADYYyfZJIOrSONmHcop2XEKPdBNMa4PDC4eEvcOvzZaCNcjKu72v0XQlA5y1g58aLRXdYg==
dependencies:
- "@babel/helper-plugin-utils" "^7.16.5"
- "@babel/plugin-syntax-flow" "^7.16.5"
+ "@babel/helper-plugin-utils" "^7.16.7"
+ "@babel/plugin-syntax-flow" "^7.16.7"
-"@babel/plugin-transform-for-of@^7.12.1", "@babel/plugin-transform-for-of@^7.16.5":
- version "7.16.5"
- resolved "https://registry.yarnpkg.com/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.16.5.tgz#9b544059c6ca11d565457c0ff1f08e13ce225261"
- integrity sha512-+DpCAJFPAvViR17PIMi9x2AE34dll5wNlXO43wagAX2YcRGgEVHCNFC4azG85b4YyyFarvkc/iD5NPrz4Oneqw==
+"@babel/plugin-transform-for-of@^7.12.1", "@babel/plugin-transform-for-of@^7.16.7":
+ version "7.16.7"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.16.7.tgz#649d639d4617dff502a9a158c479b3b556728d8c"
+ integrity sha512-/QZm9W92Ptpw7sjI9Nx1mbcsWz33+l8kuMIQnDwgQBG5s3fAfQvkRjQ7NqXhtNcKOnPkdICmUHyCaWW06HCsqg==
dependencies:
- "@babel/helper-plugin-utils" "^7.16.5"
+ "@babel/helper-plugin-utils" "^7.16.7"
-"@babel/plugin-transform-function-name@^7.16.5":
- version "7.16.5"
- resolved "https://registry.yarnpkg.com/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.16.5.tgz#6896ebb6a5538a75d6a4086a277752f655a7bd15"
- integrity sha512-Fuec/KPSpVLbGo6z1RPw4EE1X+z9gZk1uQmnYy7v4xr4TO9p41v1AoUuXEtyqAI7H+xNJYSICzRqZBhDEkd3kQ==
+"@babel/plugin-transform-function-name@^7.16.7":
+ version "7.16.7"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.16.7.tgz#5ab34375c64d61d083d7d2f05c38d90b97ec65cf"
+ integrity sha512-SU/C68YVwTRxqWj5kgsbKINakGag0KTgq9f2iZEXdStoAbOzLHEBRYzImmA6yFo8YZhJVflvXmIHUO7GWHmxxA==
dependencies:
- "@babel/helper-function-name" "^7.16.0"
- "@babel/helper-plugin-utils" "^7.16.5"
+ "@babel/helper-compilation-targets" "^7.16.7"
+ "@babel/helper-function-name" "^7.16.7"
+ "@babel/helper-plugin-utils" "^7.16.7"
-"@babel/plugin-transform-literals@^7.16.5":
- version "7.16.5"
- resolved "https://registry.yarnpkg.com/@babel/plugin-transform-literals/-/plugin-transform-literals-7.16.5.tgz#af392b90e3edb2bd6dc316844cbfd6b9e009d320"
- integrity sha512-B1j9C/IfvshnPcklsc93AVLTrNVa69iSqztylZH6qnmiAsDDOmmjEYqOm3Ts2lGSgTSywnBNiqC949VdD0/gfw==
+"@babel/plugin-transform-literals@^7.16.7":
+ version "7.16.7"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-literals/-/plugin-transform-literals-7.16.7.tgz#254c9618c5ff749e87cb0c0cef1a0a050c0bdab1"
+ integrity sha512-6tH8RTpTWI0s2sV6uq3e/C9wPo4PTqqZps4uF0kzQ9/xPLFQtipynvmT1g/dOfEJ+0EQsHhkQ/zyRId8J2b8zQ==
dependencies:
- "@babel/helper-plugin-utils" "^7.16.5"
+ "@babel/helper-plugin-utils" "^7.16.7"
-"@babel/plugin-transform-member-expression-literals@^7.16.5":
- version "7.16.5"
- resolved "https://registry.yarnpkg.com/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.16.5.tgz#4bd6ecdc11932361631097b779ca5c7570146dd5"
- integrity sha512-d57i3vPHWgIde/9Y8W/xSFUndhvhZN5Wu2TjRrN1MVz5KzdUihKnfDVlfP1U7mS5DNj/WHHhaE4/tTi4hIyHwQ==
+"@babel/plugin-transform-member-expression-literals@^7.16.7":
+ version "7.16.7"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.16.7.tgz#6e5dcf906ef8a098e630149d14c867dd28f92384"
+ integrity sha512-mBruRMbktKQwbxaJof32LT9KLy2f3gH+27a5XSuXo6h7R3vqltl0PgZ80C8ZMKw98Bf8bqt6BEVi3svOh2PzMw==
dependencies:
- "@babel/helper-plugin-utils" "^7.16.5"
+ "@babel/helper-plugin-utils" "^7.16.7"
-"@babel/plugin-transform-modules-amd@^7.16.5":
- version "7.16.5"
- resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.16.5.tgz#92c0a3e83f642cb7e75fada9ab497c12c2616527"
- integrity sha512-oHI15S/hdJuSCfnwIz+4lm6wu/wBn7oJ8+QrkzPPwSFGXk8kgdI/AIKcbR/XnD1nQVMg/i6eNaXpszbGuwYDRQ==
+"@babel/plugin-transform-modules-amd@^7.16.7":
+ version "7.16.7"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.16.7.tgz#b28d323016a7daaae8609781d1f8c9da42b13186"
+ integrity sha512-KaaEtgBL7FKYwjJ/teH63oAmE3lP34N3kshz8mm4VMAw7U3PxjVwwUmxEFksbgsNUaO3wId9R2AVQYSEGRa2+g==
dependencies:
- "@babel/helper-module-transforms" "^7.16.5"
- "@babel/helper-plugin-utils" "^7.16.5"
+ "@babel/helper-module-transforms" "^7.16.7"
+ "@babel/helper-plugin-utils" "^7.16.7"
babel-plugin-dynamic-import-node "^2.3.3"
-"@babel/plugin-transform-modules-commonjs@^7.16.5":
- version "7.16.5"
- resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.16.5.tgz#4ee03b089536f076b2773196529d27c32b9d7bde"
- integrity sha512-ABhUkxvoQyqhCWyb8xXtfwqNMJD7tx+irIRnUh6lmyFud7Jln1WzONXKlax1fg/ey178EXbs4bSGNd6PngO+SQ==
+"@babel/plugin-transform-modules-commonjs@^7.16.7":
+ version "7.16.7"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.16.7.tgz#fd119e6a433c527d368425b45df361e1e95d3c1a"
+ integrity sha512-h2RP2kE7He1ZWKyAlanMZrAbdv+Acw1pA8dQZhE025WJZE2z0xzFADAinXA9fxd5bn7JnM+SdOGcndGx1ARs9w==
dependencies:
- "@babel/helper-module-transforms" "^7.16.5"
- "@babel/helper-plugin-utils" "^7.16.5"
- "@babel/helper-simple-access" "^7.16.0"
+ "@babel/helper-module-transforms" "^7.16.7"
+ "@babel/helper-plugin-utils" "^7.16.7"
+ "@babel/helper-simple-access" "^7.16.7"
babel-plugin-dynamic-import-node "^2.3.3"
-"@babel/plugin-transform-modules-systemjs@^7.16.5":
- version "7.16.5"
- resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.16.5.tgz#07078ba2e3cc94fbdd06836e355c246e98ad006b"
- integrity sha512-53gmLdScNN28XpjEVIm7LbWnD/b/TpbwKbLk6KV4KqC9WyU6rq1jnNmVG6UgAdQZVVGZVoik3DqHNxk4/EvrjA==
+"@babel/plugin-transform-modules-systemjs@^7.16.7":
+ version "7.16.7"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.16.7.tgz#887cefaef88e684d29558c2b13ee0563e287c2d7"
+ integrity sha512-DuK5E3k+QQmnOqBR9UkusByy5WZWGRxfzV529s9nPra1GE7olmxfqO2FHobEOYSPIjPBTr4p66YDcjQnt8cBmw==
dependencies:
- "@babel/helper-hoist-variables" "^7.16.0"
- "@babel/helper-module-transforms" "^7.16.5"
- "@babel/helper-plugin-utils" "^7.16.5"
- "@babel/helper-validator-identifier" "^7.15.7"
+ "@babel/helper-hoist-variables" "^7.16.7"
+ "@babel/helper-module-transforms" "^7.16.7"
+ "@babel/helper-plugin-utils" "^7.16.7"
+ "@babel/helper-validator-identifier" "^7.16.7"
babel-plugin-dynamic-import-node "^2.3.3"
-"@babel/plugin-transform-modules-umd@^7.16.5":
- version "7.16.5"
- resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.16.5.tgz#caa9c53d636fb4e3c99fd35a4c9ba5e5cd7e002e"
- integrity sha512-qTFnpxHMoenNHkS3VoWRdwrcJ3FhX567GvDA3hRZKF0Dj8Fmg0UzySZp3AP2mShl/bzcywb/UWAMQIjA1bhXvw==
+"@babel/plugin-transform-modules-umd@^7.16.7":
+ version "7.16.7"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.16.7.tgz#23dad479fa585283dbd22215bff12719171e7618"
+ integrity sha512-EMh7uolsC8O4xhudF2F6wedbSHm1HHZ0C6aJ7K67zcDNidMzVcxWdGr+htW9n21klm+bOn+Rx4CBsAntZd3rEQ==
dependencies:
- "@babel/helper-module-transforms" "^7.16.5"
- "@babel/helper-plugin-utils" "^7.16.5"
+ "@babel/helper-module-transforms" "^7.16.7"
+ "@babel/helper-plugin-utils" "^7.16.7"
-"@babel/plugin-transform-named-capturing-groups-regex@^7.16.5":
- version "7.16.5"
- resolved "https://registry.yarnpkg.com/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.16.5.tgz#4afd8cdee377ce3568f4e8a9ee67539b69886a3c"
- integrity sha512-/wqGDgvFUeKELW6ex6QB7dLVRkd5ehjw34tpXu1nhKC0sFfmaLabIswnpf8JgDyV2NeDmZiwoOb0rAmxciNfjA==
+"@babel/plugin-transform-named-capturing-groups-regex@^7.16.7":
+ version "7.16.7"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.16.7.tgz#749d90d94e73cf62c60a0cc8d6b94d29305a81f2"
+ integrity sha512-kFy35VwmwIQwCjwrAQhl3+c/kr292i4KdLPKp5lPH03Ltc51qnFlIADoyPxc/6Naz3ok3WdYKg+KK6AH+D4utg==
dependencies:
- "@babel/helper-create-regexp-features-plugin" "^7.16.0"
+ "@babel/helper-create-regexp-features-plugin" "^7.16.7"
-"@babel/plugin-transform-new-target@^7.16.5":
- version "7.16.5"
- resolved "https://registry.yarnpkg.com/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.16.5.tgz#759ea9d6fbbc20796056a5d89d13977626384416"
- integrity sha512-ZaIrnXF08ZC8jnKR4/5g7YakGVL6go6V9ql6Jl3ecO8PQaQqFE74CuM384kezju7Z9nGCCA20BqZaR1tJ/WvHg==
+"@babel/plugin-transform-new-target@^7.16.7":
+ version "7.16.7"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.16.7.tgz#9967d89a5c243818e0800fdad89db22c5f514244"
+ integrity sha512-xiLDzWNMfKoGOpc6t3U+etCE2yRnn3SM09BXqWPIZOBpL2gvVrBWUKnsJx0K/ADi5F5YC5f8APFfWrz25TdlGg==
dependencies:
- "@babel/helper-plugin-utils" "^7.16.5"
+ "@babel/helper-plugin-utils" "^7.16.7"
-"@babel/plugin-transform-object-super@^7.16.5":
- version "7.16.5"
- resolved "https://registry.yarnpkg.com/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.16.5.tgz#8ccd9a1bcd3e7732ff8aa1702d067d8cd70ce380"
- integrity sha512-tded+yZEXuxt9Jdtkc1RraW1zMF/GalVxaVVxh41IYwirdRgyAxxxCKZ9XB7LxZqmsjfjALxupNE1MIz9KH+Zg==
+"@babel/plugin-transform-object-super@^7.16.7":
+ version "7.16.7"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.16.7.tgz#ac359cf8d32cf4354d27a46867999490b6c32a94"
+ integrity sha512-14J1feiQVWaGvRxj2WjyMuXS2jsBkgB3MdSN5HuC2G5nRspa5RK9COcs82Pwy5BuGcjb+fYaUj94mYcOj7rCvw==
dependencies:
- "@babel/helper-plugin-utils" "^7.16.5"
- "@babel/helper-replace-supers" "^7.16.5"
+ "@babel/helper-plugin-utils" "^7.16.7"
+ "@babel/helper-replace-supers" "^7.16.7"
-"@babel/plugin-transform-parameters@^7.12.1", "@babel/plugin-transform-parameters@^7.16.5":
- version "7.16.5"
- resolved "https://registry.yarnpkg.com/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.16.5.tgz#4fc74b18a89638bd90aeec44a11793ecbe031dde"
- integrity sha512-B3O6AL5oPop1jAVg8CV+haeUte9oFuY85zu0jwnRNZZi3tVAbJriu5tag/oaO2kGaQM/7q7aGPBlTI5/sr9enA==
+"@babel/plugin-transform-parameters@^7.12.1", "@babel/plugin-transform-parameters@^7.16.7":
+ version "7.16.7"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.16.7.tgz#a1721f55b99b736511cb7e0152f61f17688f331f"
+ integrity sha512-AT3MufQ7zZEhU2hwOA11axBnExW0Lszu4RL/tAlUJBuNoRak+wehQW8h6KcXOcgjY42fHtDxswuMhMjFEuv/aw==
dependencies:
- "@babel/helper-plugin-utils" "^7.16.5"
+ "@babel/helper-plugin-utils" "^7.16.7"
-"@babel/plugin-transform-property-literals@^7.16.5":
- version "7.16.5"
- resolved "https://registry.yarnpkg.com/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.16.5.tgz#58f1465a7202a2bb2e6b003905212dd7a79abe3f"
- integrity sha512-+IRcVW71VdF9pEH/2R/Apab4a19LVvdVsr/gEeotH00vSDVlKD+XgfSIw+cgGWsjDB/ziqGv/pGoQZBIiQVXHg==
+"@babel/plugin-transform-property-literals@^7.16.7":
+ version "7.16.7"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.16.7.tgz#2dadac85155436f22c696c4827730e0fe1057a55"
+ integrity sha512-z4FGr9NMGdoIl1RqavCqGG+ZuYjfZ/hkCIeuH6Do7tXmSm0ls11nYVSJqFEUOSJbDab5wC6lRE/w6YjVcr6Hqw==
dependencies:
- "@babel/helper-plugin-utils" "^7.16.5"
+ "@babel/helper-plugin-utils" "^7.16.7"
-"@babel/plugin-transform-react-display-name@^7.16.5":
- version "7.16.5"
- resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-display-name/-/plugin-transform-react-display-name-7.16.5.tgz#d5e910327d7931fb9f8f9b6c6999473ceae5a286"
- integrity sha512-dHYCOnzSsXFz8UcdNQIHGvg94qPL/teF7CCiCEMRxmA1G2p5Mq4JnKVowCDxYfiQ9D7RstaAp9kwaSI+sXbnhw==
+"@babel/plugin-transform-react-display-name@^7.16.7":
+ version "7.16.7"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-display-name/-/plugin-transform-react-display-name-7.16.7.tgz#7b6d40d232f4c0f550ea348593db3b21e2404340"
+ integrity sha512-qgIg8BcZgd0G/Cz916D5+9kqX0c7nPZyXaP8R2tLNN5tkyIZdG5fEwBrxwplzSnjC1jvQmyMNVwUCZPcbGY7Pg==
dependencies:
- "@babel/helper-plugin-utils" "^7.16.5"
+ "@babel/helper-plugin-utils" "^7.16.7"
-"@babel/plugin-transform-react-jsx-development@^7.16.5":
- version "7.16.5"
- resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx-development/-/plugin-transform-react-jsx-development-7.16.5.tgz#87da9204c275ffb57f45d192a1120cf104bc1e86"
- integrity sha512-uQSLacMZSGLCxOw20dzo1dmLlKkd+DsayoV54q3MHXhbqgPzoiGerZQgNPl/Ro8/OcXV2ugfnkx+rxdS0sN5Uw==
+"@babel/plugin-transform-react-jsx-development@^7.16.7":
+ version "7.16.7"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx-development/-/plugin-transform-react-jsx-development-7.16.7.tgz#43a00724a3ed2557ed3f276a01a929e6686ac7b8"
+ integrity sha512-RMvQWvpla+xy6MlBpPlrKZCMRs2AGiHOGHY3xRwl0pEeim348dDyxeH4xBsMPbIMhujeq7ihE702eM2Ew0Wo+A==
dependencies:
- "@babel/plugin-transform-react-jsx" "^7.16.5"
+ "@babel/plugin-transform-react-jsx" "^7.16.7"
-"@babel/plugin-transform-react-jsx@^7.12.12", "@babel/plugin-transform-react-jsx@^7.16.5":
- version "7.16.5"
- resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.16.5.tgz#5298aedc5f81e02b1cb702e597e8d6a346675765"
- integrity sha512-+arLIz1d7kmwX0fKxTxbnoeG85ONSnLpvdODa4P3pc1sS7CV1hfmtYWufkW/oYsPnkDrEeQFxhUWcFnrXW7jQQ==
+"@babel/plugin-transform-react-jsx@^7.12.12", "@babel/plugin-transform-react-jsx@^7.16.7":
+ version "7.16.7"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.16.7.tgz#86a6a220552afd0e4e1f0388a68a372be7add0d4"
+ integrity sha512-8D16ye66fxiE8m890w0BpPpngG9o9OVBBy0gH2E+2AR7qMR2ZpTYJEqLxAsoroenMId0p/wMW+Blc0meDgu0Ag==
dependencies:
- "@babel/helper-annotate-as-pure" "^7.16.0"
- "@babel/helper-module-imports" "^7.16.0"
- "@babel/helper-plugin-utils" "^7.16.5"
- "@babel/plugin-syntax-jsx" "^7.16.5"
- "@babel/types" "^7.16.0"
+ "@babel/helper-annotate-as-pure" "^7.16.7"
+ "@babel/helper-module-imports" "^7.16.7"
+ "@babel/helper-plugin-utils" "^7.16.7"
+ "@babel/plugin-syntax-jsx" "^7.16.7"
+ "@babel/types" "^7.16.7"
-"@babel/plugin-transform-react-pure-annotations@^7.16.5":
- version "7.16.5"
- resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-pure-annotations/-/plugin-transform-react-pure-annotations-7.16.5.tgz#6535d0fe67c7a3a26c5105f92c8cbcbe844cd94b"
- integrity sha512-0nYU30hCxnCVCbRjSy9ahlhWZ2Sn6khbY4FqR91W+2RbSqkWEbVu2gXh45EqNy4Bq7sRU+H4i0/6YKwOSzh16A==
+"@babel/plugin-transform-react-pure-annotations@^7.16.7":
+ version "7.16.7"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-pure-annotations/-/plugin-transform-react-pure-annotations-7.16.7.tgz#232bfd2f12eb551d6d7d01d13fe3f86b45eb9c67"
+ integrity sha512-hs71ToC97k3QWxswh2ElzMFABXHvGiJ01IB1TbYQDGeWRKWz/MPUTh5jGExdHvosYKpnJW5Pm3S4+TA3FyX+GA==
dependencies:
- "@babel/helper-annotate-as-pure" "^7.16.0"
- "@babel/helper-plugin-utils" "^7.16.5"
+ "@babel/helper-annotate-as-pure" "^7.16.7"
+ "@babel/helper-plugin-utils" "^7.16.7"
-"@babel/plugin-transform-regenerator@^7.16.5":
- version "7.16.5"
- resolved "https://registry.yarnpkg.com/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.16.5.tgz#704cc6d8dd3dd4758267621ab7b36375238cef13"
- integrity sha512-2z+it2eVWU8TtQQRauvGUqZwLy4+7rTfo6wO4npr+fvvN1SW30ZF3O/ZRCNmTuu4F5MIP8OJhXAhRV5QMJOuYg==
+"@babel/plugin-transform-regenerator@^7.16.7":
+ version "7.16.7"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.16.7.tgz#9e7576dc476cb89ccc5096fff7af659243b4adeb"
+ integrity sha512-mF7jOgGYCkSJagJ6XCujSQg+6xC1M77/03K2oBmVJWoFGNUtnVJO4WHKJk3dnPC8HCcj4xBQP1Egm8DWh3Pb3Q==
dependencies:
regenerator-transform "^0.14.2"
-"@babel/plugin-transform-reserved-words@^7.16.5":
- version "7.16.5"
- resolved "https://registry.yarnpkg.com/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.16.5.tgz#db95e98799675e193dc2b47d3e72a7c0651d0c30"
- integrity sha512-aIB16u8lNcf7drkhXJRoggOxSTUAuihTSTfAcpynowGJOZiGf+Yvi7RuTwFzVYSYPmWyARsPqUGoZWWWxLiknw==
+"@babel/plugin-transform-reserved-words@^7.16.7":
+ version "7.16.7"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.16.7.tgz#1d798e078f7c5958eec952059c460b220a63f586"
+ integrity sha512-KQzzDnZ9hWQBjwi5lpY5v9shmm6IVG0U9pB18zvMu2i4H90xpT4gmqwPYsn8rObiadYe2M0gmgsiOIF5A/2rtg==
dependencies:
- "@babel/helper-plugin-utils" "^7.16.5"
+ "@babel/helper-plugin-utils" "^7.16.7"
-"@babel/plugin-transform-shorthand-properties@^7.12.1", "@babel/plugin-transform-shorthand-properties@^7.16.5":
- version "7.16.5"
- resolved "https://registry.yarnpkg.com/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.16.5.tgz#ccb60b1a23b799f5b9a14d97c5bc81025ffd96d7"
- integrity sha512-ZbuWVcY+MAXJuuW7qDoCwoxDUNClfZxoo7/4swVbOW1s/qYLOMHlm9YRWMsxMFuLs44eXsv4op1vAaBaBaDMVg==
+"@babel/plugin-transform-shorthand-properties@^7.12.1", "@babel/plugin-transform-shorthand-properties@^7.16.7":
+ version "7.16.7"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.16.7.tgz#e8549ae4afcf8382f711794c0c7b6b934c5fbd2a"
+ integrity sha512-hah2+FEnoRoATdIb05IOXf+4GzXYTq75TVhIn1PewihbpyrNWUt2JbudKQOETWw6QpLe+AIUpJ5MVLYTQbeeUg==
dependencies:
- "@babel/helper-plugin-utils" "^7.16.5"
+ "@babel/helper-plugin-utils" "^7.16.7"
-"@babel/plugin-transform-spread@^7.12.1", "@babel/plugin-transform-spread@^7.16.5":
- version "7.16.5"
- resolved "https://registry.yarnpkg.com/@babel/plugin-transform-spread/-/plugin-transform-spread-7.16.5.tgz#912b06cff482c233025d3e69cf56d3e8fa166c29"
- integrity sha512-5d6l/cnG7Lw4tGHEoga4xSkYp1euP7LAtrah1h1PgJ3JY7yNsjybsxQAnVK4JbtReZ/8z6ASVmd3QhYYKLaKZw==
+"@babel/plugin-transform-spread@^7.12.1", "@babel/plugin-transform-spread@^7.16.7":
+ version "7.16.7"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-spread/-/plugin-transform-spread-7.16.7.tgz#a303e2122f9f12e0105daeedd0f30fb197d8ff44"
+ integrity sha512-+pjJpgAngb53L0iaA5gU/1MLXJIfXcYepLgXB3esVRf4fqmj8f2cxM3/FKaHsZms08hFQJkFccEWuIpm429TXg==
dependencies:
- "@babel/helper-plugin-utils" "^7.16.5"
+ "@babel/helper-plugin-utils" "^7.16.7"
"@babel/helper-skip-transparent-expression-wrappers" "^7.16.0"
-"@babel/plugin-transform-sticky-regex@^7.16.5":
- version "7.16.5"
- resolved "https://registry.yarnpkg.com/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.16.5.tgz#593579bb2b5a8adfbe02cb43823275d9098f75f9"
- integrity sha512-usYsuO1ID2LXxzuUxifgWtJemP7wL2uZtyrTVM4PKqsmJycdS4U4mGovL5xXkfUheds10Dd2PjoQLXw6zCsCbg==
+"@babel/plugin-transform-sticky-regex@^7.16.7":
+ version "7.16.7"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.16.7.tgz#c84741d4f4a38072b9a1e2e3fd56d359552e8660"
+ integrity sha512-NJa0Bd/87QV5NZZzTuZG5BPJjLYadeSZ9fO6oOUoL4iQx+9EEuw/eEM92SrsT19Yc2jgB1u1hsjqDtH02c3Drw==
dependencies:
- "@babel/helper-plugin-utils" "^7.16.5"
+ "@babel/helper-plugin-utils" "^7.16.7"
-"@babel/plugin-transform-template-literals@^7.12.1", "@babel/plugin-transform-template-literals@^7.16.5":
- version "7.16.5"
- resolved "https://registry.yarnpkg.com/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.16.5.tgz#343651385fd9923f5aa2275ca352c5d9183e1773"
- integrity sha512-gnyKy9RyFhkovex4BjKWL3BVYzUDG6zC0gba7VMLbQoDuqMfJ1SDXs8k/XK41Mmt1Hyp4qNAvGFb9hKzdCqBRQ==
+"@babel/plugin-transform-template-literals@^7.12.1", "@babel/plugin-transform-template-literals@^7.16.7":
+ version "7.16.7"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.16.7.tgz#f3d1c45d28967c8e80f53666fc9c3e50618217ab"
+ integrity sha512-VwbkDDUeenlIjmfNeDX/V0aWrQH2QiVyJtwymVQSzItFDTpxfyJh3EVaQiS0rIN/CqbLGr0VcGmuwyTdZtdIsA==
dependencies:
- "@babel/helper-plugin-utils" "^7.16.5"
+ "@babel/helper-plugin-utils" "^7.16.7"
-"@babel/plugin-transform-typeof-symbol@^7.16.5":
- version "7.16.5"
- resolved "https://registry.yarnpkg.com/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.16.5.tgz#a1d1bf2c71573fe30965d0e4cd6a3291202e20ed"
- integrity sha512-ldxCkW180qbrvyCVDzAUZqB0TAeF8W/vGJoRcaf75awm6By+PxfJKvuqVAnq8N9wz5Xa6mSpM19OfVKKVmGHSQ==
+"@babel/plugin-transform-typeof-symbol@^7.16.7":
+ version "7.16.7"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.16.7.tgz#9cdbe622582c21368bd482b660ba87d5545d4f7e"
+ integrity sha512-p2rOixCKRJzpg9JB4gjnG4gjWkWa89ZoYUnl9snJ1cWIcTH/hvxZqfO+WjG6T8DRBpctEol5jw1O5rA8gkCokQ==
dependencies:
- "@babel/helper-plugin-utils" "^7.16.5"
+ "@babel/helper-plugin-utils" "^7.16.7"
-"@babel/plugin-transform-typescript@^7.16.1":
- version "7.16.1"
- resolved "https://registry.yarnpkg.com/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.16.1.tgz#cc0670b2822b0338355bc1b3d2246a42b8166409"
- integrity sha512-NO4XoryBng06jjw/qWEU2LhcLJr1tWkhpMam/H4eas/CDKMX/b2/Ylb6EI256Y7+FVPCawwSM1rrJNOpDiz+Lg==
+"@babel/plugin-transform-typescript@^7.16.7":
+ version "7.16.7"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.16.7.tgz#33f8c2c890fbfdc4ef82446e9abb8de8211a3ff3"
+ integrity sha512-Hzx1lvBtOCWuCEwMmYOfpQpO7joFeXLgoPuzZZBtTxXqSqUGUubvFGZv2ygo1tB5Bp9q6PXV3H0E/kf7KM0RLA==
dependencies:
- "@babel/helper-create-class-features-plugin" "^7.16.0"
- "@babel/helper-plugin-utils" "^7.14.5"
- "@babel/plugin-syntax-typescript" "^7.16.0"
+ "@babel/helper-create-class-features-plugin" "^7.16.7"
+ "@babel/helper-plugin-utils" "^7.16.7"
+ "@babel/plugin-syntax-typescript" "^7.16.7"
-"@babel/plugin-transform-unicode-escapes@^7.16.5":
- version "7.16.5"
- resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.16.5.tgz#80507c225af49b4f4ee647e2a0ce53d2eeff9e85"
- integrity sha512-shiCBHTIIChGLdyojsKQjoAyB8MBwat25lKM7MJjbe1hE0bgIppD+LX9afr41lLHOhqceqeWl4FkLp+Bgn9o1Q==
+"@babel/plugin-transform-unicode-escapes@^7.16.7":
+ version "7.16.7"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.16.7.tgz#da8717de7b3287a2c6d659750c964f302b31ece3"
+ integrity sha512-TAV5IGahIz3yZ9/Hfv35TV2xEm+kaBDaZQCn2S/hG9/CZ0DktxJv9eKfPc7yYCvOYR4JGx1h8C+jcSOvgaaI/Q==
dependencies:
- "@babel/helper-plugin-utils" "^7.16.5"
+ "@babel/helper-plugin-utils" "^7.16.7"
-"@babel/plugin-transform-unicode-regex@^7.16.5":
- version "7.16.5"
- resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.16.5.tgz#ac84d6a1def947d71ffb832426aa53b83d7ed49e"
- integrity sha512-GTJ4IW012tiPEMMubd7sD07iU9O/LOo8Q/oU4xNhcaq0Xn8+6TcUQaHtC8YxySo1T+ErQ8RaWogIEeFhKGNPzw==
+"@babel/plugin-transform-unicode-regex@^7.16.7":
+ version "7.16.7"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.16.7.tgz#0f7aa4a501198976e25e82702574c34cfebe9ef2"
+ integrity sha512-oC5tYYKw56HO75KZVLQ+R/Nl3Hro9kf8iG0hXoaHP7tjAyCpvqBiSNe6vGrZni1Z6MggmUOC6A7VP7AVmw225Q==
dependencies:
- "@babel/helper-create-regexp-features-plugin" "^7.16.0"
- "@babel/helper-plugin-utils" "^7.16.5"
+ "@babel/helper-create-regexp-features-plugin" "^7.16.7"
+ "@babel/helper-plugin-utils" "^7.16.7"
"@babel/preset-env@^7.12.11", "@babel/preset-env@^7.16.4":
- version "7.16.5"
- resolved "https://registry.yarnpkg.com/@babel/preset-env/-/preset-env-7.16.5.tgz#2e94d922f4a890979af04ffeb6a6b4e44ba90847"
- integrity sha512-MiJJW5pwsktG61NDxpZ4oJ1CKxM1ncam9bzRtx9g40/WkLRkxFP6mhpkYV0/DxcciqoiHicx291+eUQrXb/SfQ==
+ version "7.16.7"
+ resolved "https://registry.yarnpkg.com/@babel/preset-env/-/preset-env-7.16.7.tgz#c491088856d0b3177822a2bf06cb74d76327aa56"
+ integrity sha512-urX3Cee4aOZbRWOSa3mKPk0aqDikfILuo+C7qq7HY0InylGNZ1fekq9jmlr3pLWwZHF4yD7heQooc2Pow2KMyQ==
dependencies:
"@babel/compat-data" "^7.16.4"
- "@babel/helper-compilation-targets" "^7.16.3"
- "@babel/helper-plugin-utils" "^7.16.5"
- "@babel/helper-validator-option" "^7.14.5"
- "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression" "^7.16.2"
- "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining" "^7.16.0"
- "@babel/plugin-proposal-async-generator-functions" "^7.16.5"
- "@babel/plugin-proposal-class-properties" "^7.16.5"
- "@babel/plugin-proposal-class-static-block" "^7.16.5"
- "@babel/plugin-proposal-dynamic-import" "^7.16.5"
- "@babel/plugin-proposal-export-namespace-from" "^7.16.5"
- "@babel/plugin-proposal-json-strings" "^7.16.5"
- "@babel/plugin-proposal-logical-assignment-operators" "^7.16.5"
- "@babel/plugin-proposal-nullish-coalescing-operator" "^7.16.5"
- "@babel/plugin-proposal-numeric-separator" "^7.16.5"
- "@babel/plugin-proposal-object-rest-spread" "^7.16.5"
- "@babel/plugin-proposal-optional-catch-binding" "^7.16.5"
- "@babel/plugin-proposal-optional-chaining" "^7.16.5"
- "@babel/plugin-proposal-private-methods" "^7.16.5"
- "@babel/plugin-proposal-private-property-in-object" "^7.16.5"
- "@babel/plugin-proposal-unicode-property-regex" "^7.16.5"
+ "@babel/helper-compilation-targets" "^7.16.7"
+ "@babel/helper-plugin-utils" "^7.16.7"
+ "@babel/helper-validator-option" "^7.16.7"
+ "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression" "^7.16.7"
+ "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining" "^7.16.7"
+ "@babel/plugin-proposal-async-generator-functions" "^7.16.7"
+ "@babel/plugin-proposal-class-properties" "^7.16.7"
+ "@babel/plugin-proposal-class-static-block" "^7.16.7"
+ "@babel/plugin-proposal-dynamic-import" "^7.16.7"
+ "@babel/plugin-proposal-export-namespace-from" "^7.16.7"
+ "@babel/plugin-proposal-json-strings" "^7.16.7"
+ "@babel/plugin-proposal-logical-assignment-operators" "^7.16.7"
+ "@babel/plugin-proposal-nullish-coalescing-operator" "^7.16.7"
+ "@babel/plugin-proposal-numeric-separator" "^7.16.7"
+ "@babel/plugin-proposal-object-rest-spread" "^7.16.7"
+ "@babel/plugin-proposal-optional-catch-binding" "^7.16.7"
+ "@babel/plugin-proposal-optional-chaining" "^7.16.7"
+ "@babel/plugin-proposal-private-methods" "^7.16.7"
+ "@babel/plugin-proposal-private-property-in-object" "^7.16.7"
+ "@babel/plugin-proposal-unicode-property-regex" "^7.16.7"
"@babel/plugin-syntax-async-generators" "^7.8.4"
"@babel/plugin-syntax-class-properties" "^7.12.13"
"@babel/plugin-syntax-class-static-block" "^7.14.5"
@@ -1048,40 +1049,40 @@
"@babel/plugin-syntax-optional-chaining" "^7.8.3"
"@babel/plugin-syntax-private-property-in-object" "^7.14.5"
"@babel/plugin-syntax-top-level-await" "^7.14.5"
- "@babel/plugin-transform-arrow-functions" "^7.16.5"
- "@babel/plugin-transform-async-to-generator" "^7.16.5"
- "@babel/plugin-transform-block-scoped-functions" "^7.16.5"
- "@babel/plugin-transform-block-scoping" "^7.16.5"
- "@babel/plugin-transform-classes" "^7.16.5"
- "@babel/plugin-transform-computed-properties" "^7.16.5"
- "@babel/plugin-transform-destructuring" "^7.16.5"
- "@babel/plugin-transform-dotall-regex" "^7.16.5"
- "@babel/plugin-transform-duplicate-keys" "^7.16.5"
- "@babel/plugin-transform-exponentiation-operator" "^7.16.5"
- "@babel/plugin-transform-for-of" "^7.16.5"
- "@babel/plugin-transform-function-name" "^7.16.5"
- "@babel/plugin-transform-literals" "^7.16.5"
- "@babel/plugin-transform-member-expression-literals" "^7.16.5"
- "@babel/plugin-transform-modules-amd" "^7.16.5"
- "@babel/plugin-transform-modules-commonjs" "^7.16.5"
- "@babel/plugin-transform-modules-systemjs" "^7.16.5"
- "@babel/plugin-transform-modules-umd" "^7.16.5"
- "@babel/plugin-transform-named-capturing-groups-regex" "^7.16.5"
- "@babel/plugin-transform-new-target" "^7.16.5"
- "@babel/plugin-transform-object-super" "^7.16.5"
- "@babel/plugin-transform-parameters" "^7.16.5"
- "@babel/plugin-transform-property-literals" "^7.16.5"
- "@babel/plugin-transform-regenerator" "^7.16.5"
- "@babel/plugin-transform-reserved-words" "^7.16.5"
- "@babel/plugin-transform-shorthand-properties" "^7.16.5"
- "@babel/plugin-transform-spread" "^7.16.5"
- "@babel/plugin-transform-sticky-regex" "^7.16.5"
- "@babel/plugin-transform-template-literals" "^7.16.5"
- "@babel/plugin-transform-typeof-symbol" "^7.16.5"
- "@babel/plugin-transform-unicode-escapes" "^7.16.5"
- "@babel/plugin-transform-unicode-regex" "^7.16.5"
+ "@babel/plugin-transform-arrow-functions" "^7.16.7"
+ "@babel/plugin-transform-async-to-generator" "^7.16.7"
+ "@babel/plugin-transform-block-scoped-functions" "^7.16.7"
+ "@babel/plugin-transform-block-scoping" "^7.16.7"
+ "@babel/plugin-transform-classes" "^7.16.7"
+ "@babel/plugin-transform-computed-properties" "^7.16.7"
+ "@babel/plugin-transform-destructuring" "^7.16.7"
+ "@babel/plugin-transform-dotall-regex" "^7.16.7"
+ "@babel/plugin-transform-duplicate-keys" "^7.16.7"
+ "@babel/plugin-transform-exponentiation-operator" "^7.16.7"
+ "@babel/plugin-transform-for-of" "^7.16.7"
+ "@babel/plugin-transform-function-name" "^7.16.7"
+ "@babel/plugin-transform-literals" "^7.16.7"
+ "@babel/plugin-transform-member-expression-literals" "^7.16.7"
+ "@babel/plugin-transform-modules-amd" "^7.16.7"
+ "@babel/plugin-transform-modules-commonjs" "^7.16.7"
+ "@babel/plugin-transform-modules-systemjs" "^7.16.7"
+ "@babel/plugin-transform-modules-umd" "^7.16.7"
+ "@babel/plugin-transform-named-capturing-groups-regex" "^7.16.7"
+ "@babel/plugin-transform-new-target" "^7.16.7"
+ "@babel/plugin-transform-object-super" "^7.16.7"
+ "@babel/plugin-transform-parameters" "^7.16.7"
+ "@babel/plugin-transform-property-literals" "^7.16.7"
+ "@babel/plugin-transform-regenerator" "^7.16.7"
+ "@babel/plugin-transform-reserved-words" "^7.16.7"
+ "@babel/plugin-transform-shorthand-properties" "^7.16.7"
+ "@babel/plugin-transform-spread" "^7.16.7"
+ "@babel/plugin-transform-sticky-regex" "^7.16.7"
+ "@babel/plugin-transform-template-literals" "^7.16.7"
+ "@babel/plugin-transform-typeof-symbol" "^7.16.7"
+ "@babel/plugin-transform-unicode-escapes" "^7.16.7"
+ "@babel/plugin-transform-unicode-regex" "^7.16.7"
"@babel/preset-modules" "^0.1.5"
- "@babel/types" "^7.16.0"
+ "@babel/types" "^7.16.7"
babel-plugin-polyfill-corejs2 "^0.3.0"
babel-plugin-polyfill-corejs3 "^0.4.0"
babel-plugin-polyfill-regenerator "^0.3.0"
@@ -1089,13 +1090,13 @@
semver "^6.3.0"
"@babel/preset-flow@^7.12.1":
- version "7.16.5"
- resolved "https://registry.yarnpkg.com/@babel/preset-flow/-/preset-flow-7.16.5.tgz#fed36ad84ed09f6df41a37b372d3933fc58d0885"
- integrity sha512-rmC6Nznp4V55N4Zfec87jwd14TdREqwKVJFM/6Z2wTwoeZQr56czjaPRCezqzqc8TsHF7aLP1oczjadIQ058gw==
+ version "7.16.7"
+ resolved "https://registry.yarnpkg.com/@babel/preset-flow/-/preset-flow-7.16.7.tgz#7fd831323ab25eeba6e4b77a589f680e30581cbd"
+ integrity sha512-6ceP7IyZdUYQ3wUVqyRSQXztd1YmFHWI4Xv11MIqAlE4WqxBSd/FZ61V9k+TS5Gd4mkHOtQtPp9ymRpxH4y1Ug==
dependencies:
- "@babel/helper-plugin-utils" "^7.16.5"
- "@babel/helper-validator-option" "^7.14.5"
- "@babel/plugin-transform-flow-strip-types" "^7.16.5"
+ "@babel/helper-plugin-utils" "^7.16.7"
+ "@babel/helper-validator-option" "^7.16.7"
+ "@babel/plugin-transform-flow-strip-types" "^7.16.7"
"@babel/preset-modules@^0.1.5":
version "0.1.5"
@@ -1109,30 +1110,30 @@
esutils "^2.0.2"
"@babel/preset-react@^7.12.10", "@babel/preset-react@^7.16.0":
- version "7.16.5"
- resolved "https://registry.yarnpkg.com/@babel/preset-react/-/preset-react-7.16.5.tgz#09df3b7a6522cb3e6682dc89b4dfebb97d22031b"
- integrity sha512-3kzUOQeaxY/2vhPDS7CX/KGEGu/1bOYGvdRDJ2U5yjEz5o5jmIeTPLoiQBPGjfhPascLuW5OlMiPzwOOuB6txg==
+ version "7.16.7"
+ resolved "https://registry.yarnpkg.com/@babel/preset-react/-/preset-react-7.16.7.tgz#4c18150491edc69c183ff818f9f2aecbe5d93852"
+ integrity sha512-fWpyI8UM/HE6DfPBzD8LnhQ/OcH8AgTaqcqP2nGOXEUV+VKBR5JRN9hCk9ai+zQQ57vtm9oWeXguBCPNUjytgA==
dependencies:
- "@babel/helper-plugin-utils" "^7.16.5"
- "@babel/helper-validator-option" "^7.14.5"
- "@babel/plugin-transform-react-display-name" "^7.16.5"
- "@babel/plugin-transform-react-jsx" "^7.16.5"
- "@babel/plugin-transform-react-jsx-development" "^7.16.5"
- "@babel/plugin-transform-react-pure-annotations" "^7.16.5"
+ "@babel/helper-plugin-utils" "^7.16.7"
+ "@babel/helper-validator-option" "^7.16.7"
+ "@babel/plugin-transform-react-display-name" "^7.16.7"
+ "@babel/plugin-transform-react-jsx" "^7.16.7"
+ "@babel/plugin-transform-react-jsx-development" "^7.16.7"
+ "@babel/plugin-transform-react-pure-annotations" "^7.16.7"
"@babel/preset-typescript@^7.12.7", "@babel/preset-typescript@^7.16.0":
- version "7.16.5"
- resolved "https://registry.yarnpkg.com/@babel/preset-typescript/-/preset-typescript-7.16.5.tgz#b86a5b0ae739ba741347d2f58c52f52e63cf1ba1"
- integrity sha512-lmAWRoJ9iOSvs3DqOndQpj8XqXkzaiQs50VG/zESiI9D3eoZhGriU675xNCr0UwvsuXrhMAGvyk1w+EVWF3u8Q==
+ version "7.16.7"
+ resolved "https://registry.yarnpkg.com/@babel/preset-typescript/-/preset-typescript-7.16.7.tgz#ab114d68bb2020afc069cd51b37ff98a046a70b9"
+ integrity sha512-WbVEmgXdIyvzB77AQjGBEyYPZx+8tTsO50XtfozQrkW8QB2rLJpH2lgx0TRw5EJrBxOZQ+wCcyPVQvS8tjEHpQ==
dependencies:
- "@babel/helper-plugin-utils" "^7.16.5"
- "@babel/helper-validator-option" "^7.14.5"
- "@babel/plugin-transform-typescript" "^7.16.1"
+ "@babel/helper-plugin-utils" "^7.16.7"
+ "@babel/helper-validator-option" "^7.16.7"
+ "@babel/plugin-transform-typescript" "^7.16.7"
"@babel/register@^7.12.1":
- version "7.16.5"
- resolved "https://registry.yarnpkg.com/@babel/register/-/register-7.16.5.tgz#657d28b7ca68190de8f6159245b5ed1cfa181640"
- integrity sha512-NpluD+cToBiZiDsG3y9rtIcqDyivsahpaM9csfyfiq1qQWduSmihUZ+ruIqqSDGjZKZMJfgAElo9x2YWlOQuRw==
+ version "7.16.7"
+ resolved "https://registry.yarnpkg.com/@babel/register/-/register-7.16.7.tgz#e7b3a6015d1646677538672106bdb3a0b4a07657"
+ integrity sha512-Ft+cuxorVxFj4RrPDs9TbJNE7ZbuJTyazUC6jLWRvBQT/qIDZPMe7MHgjlrA+11+XDLh+I0Pnx7sxPp4LRhzcA==
dependencies:
clone-deep "^4.0.1"
find-cache-dir "^2.0.0"
@@ -1141,51 +1142,51 @@
source-map-support "^0.5.16"
"@babel/runtime-corejs3@^7.10.2", "@babel/runtime-corejs3@^7.9.2":
- version "7.16.5"
- resolved "https://registry.yarnpkg.com/@babel/runtime-corejs3/-/runtime-corejs3-7.16.5.tgz#9057d879720c136193f0440bc400088212a74894"
- integrity sha512-F1pMwvTiUNSAM8mc45kccMQxj31x3y3P+tA/X8hKNWp3/hUsxdGxZ3D3H8JIkxtfA8qGkaBTKvcmvStaYseAFw==
+ version "7.16.7"
+ resolved "https://registry.yarnpkg.com/@babel/runtime-corejs3/-/runtime-corejs3-7.16.7.tgz#a762745fe8b4d61a26444a9151e6586d36044dde"
+ integrity sha512-MiYR1yk8+TW/CpOD0CyX7ve9ffWTKqLk/L6pk8TPl0R8pNi+1pFY8fH9yET55KlvukQ4PAWfXsGr2YHVjcI4Pw==
dependencies:
core-js-pure "^3.19.0"
regenerator-runtime "^0.13.4"
"@babel/runtime@^7.0.0", "@babel/runtime@^7.10.1", "@babel/runtime@^7.10.2", "@babel/runtime@^7.11.1", "@babel/runtime@^7.11.2", "@babel/runtime@^7.12.0", "@babel/runtime@^7.12.5", "@babel/runtime@^7.13.10", "@babel/runtime@^7.14.0", "@babel/runtime@^7.14.5", "@babel/runtime@^7.14.6", "@babel/runtime@^7.14.8", "@babel/runtime@^7.15.4", "@babel/runtime@^7.16.3", "@babel/runtime@^7.3.1", "@babel/runtime@^7.5.0", "@babel/runtime@^7.5.5", "@babel/runtime@^7.6.2", "@babel/runtime@^7.7.2", "@babel/runtime@^7.7.6", "@babel/runtime@^7.8.4", "@babel/runtime@^7.8.7", "@babel/runtime@^7.9.2":
- version "7.16.5"
- resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.16.5.tgz#7f3e34bf8bdbbadf03fbb7b1ea0d929569c9487a"
- integrity sha512-TXWihFIS3Pyv5hzR7j6ihmeLkZfrXGxAr5UfSl8CHf+6q/wpiYDkUau0czckpYG8QmnCIuPpdLtuA9VmuGGyMA==
+ version "7.16.7"
+ resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.16.7.tgz#03ff99f64106588c9c403c6ecb8c3bafbbdff1fa"
+ integrity sha512-9E9FJowqAsytyOY6LG+1KuueckRL+aQW+mKvXRXnuFGyRAyepJPmEo9vgMfXUA6O9u3IeEdv9MAkppFcaQwogQ==
dependencies:
regenerator-runtime "^0.13.4"
-"@babel/template@^7.12.7", "@babel/template@^7.16.0", "@babel/template@^7.3.3":
- version "7.16.0"
- resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.16.0.tgz#d16a35ebf4cd74e202083356fab21dd89363ddd6"
- integrity sha512-MnZdpFD/ZdYhXwiunMqqgyZyucaYsbL0IrjoGjaVhGilz+x8YB++kRfygSOIj1yOtWKPlx7NBp+9I1RQSgsd5A==
+"@babel/template@^7.12.7", "@babel/template@^7.16.7", "@babel/template@^7.3.3":
+ version "7.16.7"
+ resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.16.7.tgz#8d126c8701fde4d66b264b3eba3d96f07666d155"
+ integrity sha512-I8j/x8kHUrbYRTUxXrrMbfCa7jxkE7tZre39x3kjr9hvI82cK1FfqLygotcWN5kdPGWcLdWMHpSBavse5tWw3w==
dependencies:
- "@babel/code-frame" "^7.16.0"
- "@babel/parser" "^7.16.0"
- "@babel/types" "^7.16.0"
+ "@babel/code-frame" "^7.16.7"
+ "@babel/parser" "^7.16.7"
+ "@babel/types" "^7.16.7"
-"@babel/traverse@^7.1.0", "@babel/traverse@^7.1.6", "@babel/traverse@^7.12.11", "@babel/traverse@^7.12.9", "@babel/traverse@^7.13.0", "@babel/traverse@^7.16.5", "@babel/traverse@^7.4.5", "@babel/traverse@^7.7.2":
- version "7.16.5"
- resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.16.5.tgz#d7d400a8229c714a59b87624fc67b0f1fbd4b2b3"
- integrity sha512-FOCODAzqUMROikDYLYxl4nmwiLlu85rNqBML/A5hKRVXG2LV8d0iMqgPzdYTcIpjZEBB7D6UDU9vxRZiriASdQ==
+"@babel/traverse@^7.1.0", "@babel/traverse@^7.1.6", "@babel/traverse@^7.12.11", "@babel/traverse@^7.12.9", "@babel/traverse@^7.13.0", "@babel/traverse@^7.16.7", "@babel/traverse@^7.4.5", "@babel/traverse@^7.7.2":
+ version "7.16.7"
+ resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.16.7.tgz#dac01236a72c2560073658dd1a285fe4e0865d76"
+ integrity sha512-8KWJPIb8c2VvY8AJrydh6+fVRo2ODx1wYBU2398xJVq0JomuLBZmVQzLPBblJgHIGYG4znCpUZUZ0Pt2vdmVYQ==
dependencies:
- "@babel/code-frame" "^7.16.0"
- "@babel/generator" "^7.16.5"
- "@babel/helper-environment-visitor" "^7.16.5"
- "@babel/helper-function-name" "^7.16.0"
- "@babel/helper-hoist-variables" "^7.16.0"
- "@babel/helper-split-export-declaration" "^7.16.0"
- "@babel/parser" "^7.16.5"
- "@babel/types" "^7.16.0"
+ "@babel/code-frame" "^7.16.7"
+ "@babel/generator" "^7.16.7"
+ "@babel/helper-environment-visitor" "^7.16.7"
+ "@babel/helper-function-name" "^7.16.7"
+ "@babel/helper-hoist-variables" "^7.16.7"
+ "@babel/helper-split-export-declaration" "^7.16.7"
+ "@babel/parser" "^7.16.7"
+ "@babel/types" "^7.16.7"
debug "^4.1.0"
globals "^11.1.0"
-"@babel/types@^7.0.0", "@babel/types@^7.0.0-beta.49", "@babel/types@^7.12.11", "@babel/types@^7.12.7", "@babel/types@^7.16.0", "@babel/types@^7.2.0", "@babel/types@^7.3.0", "@babel/types@^7.3.3", "@babel/types@^7.4.4":
- version "7.16.0"
- resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.16.0.tgz#db3b313804f96aadd0b776c4823e127ad67289ba"
- integrity sha512-PJgg/k3SdLsGb3hhisFvtLOw5ts113klrpLuIPtCJIU+BB24fqq6lf8RWqKJEjzqXR9AEH1rIb5XTqwBHB+kQg==
+"@babel/types@^7.0.0", "@babel/types@^7.0.0-beta.49", "@babel/types@^7.12.11", "@babel/types@^7.12.7", "@babel/types@^7.16.0", "@babel/types@^7.16.7", "@babel/types@^7.2.0", "@babel/types@^7.3.0", "@babel/types@^7.3.3", "@babel/types@^7.4.4":
+ version "7.16.7"
+ resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.16.7.tgz#4ed19d51f840ed4bd5645be6ce40775fecf03159"
+ integrity sha512-E8HuV7FO9qLpx6OtoGfUQ2cjIYnbFwvZWYBS+87EwtdMvmUPJSwykpovFB+8insbpF0uJcpr8KMUi64XZntZcg==
dependencies:
- "@babel/helper-validator-identifier" "^7.15.7"
+ "@babel/helper-validator-identifier" "^7.16.7"
to-fast-properties "^2.0.0"
"@base2/pretty-print-object@1.0.1":
@@ -1696,6 +1697,21 @@
resolved "https://registry.yarnpkg.com/@jsdevtools/ono/-/ono-7.1.3.tgz#9df03bbd7c696a5c58885c34aa06da41c8543796"
integrity sha512-4JQNk+3mVzK3xh2rqd6RB4J46qUR19azEHBneZyTZM+c456qOrbbM/5xcR8huNCCcbVt7+UmizG6GuUvPvKUYg==
+"@lineup-lite/components@~1.6.0":
+ version "1.6.0"
+ resolved "https://registry.yarnpkg.com/@lineup-lite/components/-/components-1.6.0.tgz#e1a9d368e1c3851f312a3e667e8f3eda52d9f0fc"
+ integrity sha512-DVif6MrAYBYLok5pUGtWBoVRxyCvb6ZOmGrLm3B4wxdo1lh2Gw8Io7cCsXfat2BdUsbtCJwUh9e+NbaqDWGNGA==
+ dependencies:
+ "@sgratzl/boxplots" "^1.2.2"
+
+"@lineup-lite/hooks@^1.6.0":
+ version "1.6.0"
+ resolved "https://registry.yarnpkg.com/@lineup-lite/hooks/-/hooks-1.6.0.tgz#d4e7fbb6912b88e5bd31d98c52f183f11424f48d"
+ integrity sha512-PWWN9/va4TaCwx6wcE98swaCk385YQr7Bjgl7mnRvYNfP7m3JlHk7gASBQXNl6FLJrs98uyTOW032+OZwBYu5A==
+ dependencies:
+ "@lineup-lite/components" "~1.6.0"
+ date-fns "^2.21.3"
+
"@mdx-js/loader@^1.6.22":
version "1.6.22"
resolved "https://registry.yarnpkg.com/@mdx-js/loader/-/loader-1.6.22.tgz#d9e8fe7f8185ff13c9c8639c048b123e30d322c4"
@@ -1824,9 +1840,9 @@
ws "^7.5.0"
"@pmmmwh/react-refresh-webpack-plugin@^0.5.1":
- version "0.5.3"
- resolved "https://registry.yarnpkg.com/@pmmmwh/react-refresh-webpack-plugin/-/react-refresh-webpack-plugin-0.5.3.tgz#b8f0e035f6df71b5c4126cb98de29f65188b9e7b"
- integrity sha512-OoTnFb8XEYaOuMNhVDsLRnAO6MCYHNs1g6d8pBcHhDFsi1P3lPbq/IklwtbAx9cG0W4J9KswxZtwGnejrnxp+g==
+ version "0.5.4"
+ resolved "https://registry.yarnpkg.com/@pmmmwh/react-refresh-webpack-plugin/-/react-refresh-webpack-plugin-0.5.4.tgz#df0d0d855fc527db48aac93c218a0bf4ada41f99"
+ integrity sha512-zZbZeHQDnoTlt2AF+diQT0wsSXpvWiaIOZwBRdltNFhG1+I3ozyaw7U/nBiUwyJ0D+zwdXp0E3bWOl38Ag2BMw==
dependencies:
ansi-html-community "^0.0.8"
common-path-prefix "^3.0.0"
@@ -1848,6 +1864,94 @@
resolved "https://registry.yarnpkg.com/@popperjs/core/-/core-2.11.0.tgz#6734f8ebc106a0860dff7f92bf90df193f0935d7"
integrity sha512-zrsUxjLOKAzdewIDRWy9nsV1GQsKBCWaGwsZQlCgr6/q+vjyZhFgqedLfFBuI9anTPEUT4APq9Mu0SZBTzIcGQ==
+"@reach/auto-id@0.16.0":
+ version "0.16.0"
+ resolved "https://registry.yarnpkg.com/@reach/auto-id/-/auto-id-0.16.0.tgz#dfabc3227844e8c04f8e6e45203a8e14a8edbaed"
+ integrity sha512-5ssbeP5bCkM39uVsfQCwBBL+KT8YColdnMN5/Eto6Rj7929ql95R3HZUOkKIvj7mgPtEb60BLQxd1P3o6cjbmg==
+ dependencies:
+ "@reach/utils" "0.16.0"
+ tslib "^2.3.0"
+
+"@reach/descendants@0.16.1":
+ version "0.16.1"
+ resolved "https://registry.yarnpkg.com/@reach/descendants/-/descendants-0.16.1.tgz#fa3d89c0503565369707f32985d87eef61985d9f"
+ integrity sha512-3WZgRnD9O4EORKE31rrduJDiPFNMOjUkATx0zl192ZxMq3qITe4tUj70pS5IbJl/+v9zk78JwyQLvA1pL7XAPA==
+ dependencies:
+ "@reach/utils" "0.16.0"
+ tslib "^2.3.0"
+
+"@reach/dropdown@0.16.2":
+ version "0.16.2"
+ resolved "https://registry.yarnpkg.com/@reach/dropdown/-/dropdown-0.16.2.tgz#4aa7df0f716cb448d01bc020d54df595303d5fa6"
+ integrity sha512-l4nNiX6iUpMdHQNbZMhgW5APtw0AUwJuRnkqE93vkjvdtrYl/sNJy1Jr6cGG7TrZIABLSOsfwbXU3C+qwJ3ftQ==
+ dependencies:
+ "@reach/auto-id" "0.16.0"
+ "@reach/descendants" "0.16.1"
+ "@reach/popover" "0.16.2"
+ "@reach/utils" "0.16.0"
+ tslib "^2.3.0"
+
+"@reach/menu-button@^0.16.1":
+ version "0.16.2"
+ resolved "https://registry.yarnpkg.com/@reach/menu-button/-/menu-button-0.16.2.tgz#664e33e70de431f88abf1f8537c48b1b6ce87e88"
+ integrity sha512-p4n6tFVaJZHJZEznHWy0YH2Xr3I+W7tsQWAT72PqKGT+uryGRdtgEQqi76f/8cRaw/00ueazBk5lwLG7UKGFaA==
+ dependencies:
+ "@reach/dropdown" "0.16.2"
+ "@reach/popover" "0.16.2"
+ "@reach/utils" "0.16.0"
+ prop-types "^15.7.2"
+ tiny-warning "^1.0.3"
+ tslib "^2.3.0"
+
+"@reach/observe-rect@1.2.0":
+ version "1.2.0"
+ resolved "https://registry.yarnpkg.com/@reach/observe-rect/-/observe-rect-1.2.0.tgz#d7a6013b8aafcc64c778a0ccb83355a11204d3b2"
+ integrity sha512-Ba7HmkFgfQxZqqaeIWWkNK0rEhpxVQHIoVyW1YDSkGsGIXzcaW4deC8B0pZrNSSyLTdIk7y+5olKt5+g0GmFIQ==
+
+"@reach/popover@0.16.2":
+ version "0.16.2"
+ resolved "https://registry.yarnpkg.com/@reach/popover/-/popover-0.16.2.tgz#71d7af3002ca49d791476b22dee1840dd1719c19"
+ integrity sha512-IwkRrHM7Vt33BEkSXneovymJv7oIToOfTDwRKpuYEB/BWYMAuNfbsRL7KVe6MjkgchDeQzAk24cYY1ztQj5HQQ==
+ dependencies:
+ "@reach/portal" "0.16.2"
+ "@reach/rect" "0.16.0"
+ "@reach/utils" "0.16.0"
+ tabbable "^4.0.0"
+ tslib "^2.3.0"
+
+"@reach/portal@0.16.2":
+ version "0.16.2"
+ resolved "https://registry.yarnpkg.com/@reach/portal/-/portal-0.16.2.tgz#ca83696215ee03acc2bb25a5ae5d8793eaaf2f64"
+ integrity sha512-9ur/yxNkuVYTIjAcfi46LdKUvH0uYZPfEp4usWcpt6PIp+WDF57F/5deMe/uGi/B/nfDweQu8VVwuMVrCb97JQ==
+ dependencies:
+ "@reach/utils" "0.16.0"
+ tiny-warning "^1.0.3"
+ tslib "^2.3.0"
+
+"@reach/rect@0.16.0":
+ version "0.16.0"
+ resolved "https://registry.yarnpkg.com/@reach/rect/-/rect-0.16.0.tgz#78cf6acefe2e83d3957fa84f938f6e1fc5700f16"
+ integrity sha512-/qO9jQDzpOCdrSxVPR6l674mRHNTqfEjkaxZHluwJ/2qGUtYsA0GSZiF/+wX/yOWeBif1ycxJDa6HusAMJZC5Q==
+ dependencies:
+ "@reach/observe-rect" "1.2.0"
+ "@reach/utils" "0.16.0"
+ prop-types "^15.7.2"
+ tiny-warning "^1.0.3"
+ tslib "^2.3.0"
+
+"@reach/utils@0.16.0":
+ version "0.16.0"
+ resolved "https://registry.yarnpkg.com/@reach/utils/-/utils-0.16.0.tgz#5b0777cf16a7cab1ddd4728d5d02762df0ba84ce"
+ integrity sha512-PCggBet3qaQmwFNcmQ/GqHSefadAFyNCUekq9RrWoaU9hh/S4iaFgf2MBMdM47eQj5i/Bk0Mm07cP/XPFlkN+Q==
+ dependencies:
+ tiny-warning "^1.0.3"
+ tslib "^2.3.0"
+
+"@sgratzl/boxplots@^1.2.2":
+ version "1.3.0"
+ resolved "https://registry.yarnpkg.com/@sgratzl/boxplots/-/boxplots-1.3.0.tgz#c9063d98e33a15f880cf4bd3531be71497e2a94e"
+ integrity sha512-2BRWv+WOH58pwzSgP50buoXgxQic+4auz3BF0wiIUXS8D3QGkdBNgsNdQO1754Tm/0uEwly0R3WaCiGnoYWcmA==
+
"@simbathesailor/use-what-changed@^2.0.0":
version "2.0.0"
resolved "https://registry.yarnpkg.com/@simbathesailor/use-what-changed/-/use-what-changed-2.0.0.tgz#7f82d78f92c8588b5fadd702065dde93bd781403"
@@ -2873,9 +2977,9 @@
integrity sha512-RbzJvlNzmRq5c3O09UipeuXno4tA1FE6ikOjxZK0tuxVv3412l64l5t1W5pj4+rJq9vpkm/kwiR07aZXnsKPxw==
"@types/angular@^1.8.3":
- version "1.8.3"
- resolved "https://registry.yarnpkg.com/@types/angular/-/angular-1.8.3.tgz#97602244b685113ce9dc27823471b67d28f5ba3e"
- integrity sha512-vgc5Z+TD07DT7NEUjFm6XMp0kEbGXIa95XmOL5IiHXR9LdrJpcdDh3jl1nCuZbWyzFn5/1OqtMfomcnA1sUFXQ==
+ version "1.8.4"
+ resolved "https://registry.yarnpkg.com/@types/angular/-/angular-1.8.4.tgz#a2cc163e508389c51d4c4119ebff6b9395cec472"
+ integrity sha512-wPS/ncJWhyxJsndsW1B6Ta8D4mi97x1yItSu+rkLDytU3oRIh2CFAjMuJceYwFAh9+DIohndWM0QBA9OU2Hv0g==
"@types/aria-query@^4.2.0":
version "4.2.2"
@@ -2883,9 +2987,9 @@
integrity sha512-HnYpAE1Y6kRyKM/XkEuiRQhTHvkzMBurTHnpFLYLBGPIylZNPs9jJcuOOYWxPLJCSEtmZT0Y8rHDokKN7rRTig==
"@types/babel__core@^7.0.0", "@types/babel__core@^7.1.14":
- version "7.1.17"
- resolved "https://registry.yarnpkg.com/@types/babel__core/-/babel__core-7.1.17.tgz#f50ac9d20d64153b510578d84f9643f9a3afbe64"
- integrity sha512-6zzkezS9QEIL8yCBvXWxPTJPNuMeECJVxSOhxNY/jfq9LxOTHivaYTqr37n9LknWWRTIkzqH2UilS5QFvfa90A==
+ version "7.1.18"
+ resolved "https://registry.yarnpkg.com/@types/babel__core/-/babel__core-7.1.18.tgz#1a29abcc411a9c05e2094c98f9a1b7da6cdf49f8"
+ integrity sha512-S7unDjm/C7z2A2R9NzfKCK1I+BAALDtxEmsJBwlB3EzNfb929ykjL++1CK9LO++EIp2fQrC8O+BwjKvz6UeDyQ==
dependencies:
"@babel/parser" "^7.1.0"
"@babel/types" "^7.0.0"
@@ -2894,9 +2998,9 @@
"@types/babel__traverse" "*"
"@types/babel__generator@*":
- version "7.6.3"
- resolved "https://registry.yarnpkg.com/@types/babel__generator/-/babel__generator-7.6.3.tgz#f456b4b2ce79137f768aa130d2423d2f0ccfaba5"
- integrity sha512-/GWCmzJWqV7diQW54smJZzWbSFf4QYtF71WCKhcx6Ru/tFyQIY2eiiITcCAeuPbNSvT9YCGkVMqqvSk2Z0mXiA==
+ version "7.6.4"
+ resolved "https://registry.yarnpkg.com/@types/babel__generator/-/babel__generator-7.6.4.tgz#1f20ce4c5b1990b37900b63f050182d28c2439b7"
+ integrity sha512-tFkciB9j2K755yrTALxD44McOrk+gfpIpvC3sxHjRawj6PfnQxrse4Clq5y/Rq+G3mrBurMax/lG8Qn2t9mSsg==
dependencies:
"@babel/types" "^7.0.0"
@@ -2915,6 +3019,21 @@
dependencies:
"@babel/types" "^7.3.0"
+"@types/body-parser@*":
+ version "1.19.2"
+ resolved "https://registry.yarnpkg.com/@types/body-parser/-/body-parser-1.19.2.tgz#aea2059e28b7658639081347ac4fab3de166e6f0"
+ integrity sha512-ALYone6pm6QmwZoAgeyNksccT9Q4AWZQ6PvfwR37GT6r6FWUPguq6sUmNGSMV2Wr761oQoBxwGGa6DR5o1DC9g==
+ dependencies:
+ "@types/connect" "*"
+ "@types/node" "*"
+
+"@types/bonjour@^3.5.9":
+ version "3.5.10"
+ resolved "https://registry.yarnpkg.com/@types/bonjour/-/bonjour-3.5.10.tgz#0f6aadfe00ea414edc86f5d106357cda9701e275"
+ integrity sha512-p7ienRMiS41Nu2/igbJxxLDWrSZ0WxM8UQgCeO9KhoVF7cOVFkrKsiDr1EsJIla8vV3oEEjGcz11jc5yimhzZw==
+ dependencies:
+ "@types/node" "*"
+
"@types/bootbox@^5.2.2":
version "5.2.3"
resolved "https://registry.yarnpkg.com/@types/bootbox/-/bootbox-5.2.3.tgz#86aa918eb4df2499631887bb7b6b23f0195a751d"
@@ -2934,6 +3053,21 @@
resolved "https://registry.yarnpkg.com/@types/color-name/-/color-name-1.1.1.tgz#1c1261bbeaa10a8055bbc5d8ab84b7b2afc846a0"
integrity sha512-rr+OQyAjxze7GgWrSaJwydHStIhHq2lvY3BOC2Mj7KnzI7XK0Uw1TOOdI9lDoajEbSWLiYgoo4f1R51erQfhPQ==
+"@types/connect-history-api-fallback@^1.3.5":
+ version "1.3.5"
+ resolved "https://registry.yarnpkg.com/@types/connect-history-api-fallback/-/connect-history-api-fallback-1.3.5.tgz#d1f7a8a09d0ed5a57aee5ae9c18ab9b803205dae"
+ integrity sha512-h8QJa8xSb1WD4fpKBDcATDNGXghFj6/3GRWG6dhmRcu0RX1Ubasur2Uvx5aeEwlf0MwblEC2bMzzMQntxnw/Cw==
+ dependencies:
+ "@types/express-serve-static-core" "*"
+ "@types/node" "*"
+
+"@types/connect@*":
+ version "3.4.35"
+ resolved "https://registry.yarnpkg.com/@types/connect/-/connect-3.4.35.tgz#5fcf6ae445e4021d1fc2219a4873cc73a3bb2ad1"
+ integrity sha512-cdeYyv4KWoEgpBISTxWvqYsVy444DOqehiF3fM3ne10AmJ62RSyNkUnxMJXHQWRQQX2eR94m5y1IZyDwBjV9FQ==
+ dependencies:
+ "@types/node" "*"
+
"@types/eslint-scope@^3.7.0":
version "3.7.2"
resolved "https://registry.yarnpkg.com/@types/eslint-scope/-/eslint-scope-3.7.2.tgz#11e96a868c67acf65bf6f11d10bb89ea71d5e473"
@@ -2963,6 +3097,25 @@
resolved "https://registry.yarnpkg.com/@types/estree/-/estree-0.0.50.tgz#1e0caa9364d3fccd2931c3ed96fdbeaa5d4cca83"
integrity sha512-C6N5s2ZFtuZRj54k2/zyRhNDjJwwcViAM3Nbm8zjBpbqAdZ00mr0CFxvSKeO8Y/e03WVFLpQMdHYVfUd6SB+Hw==
+"@types/express-serve-static-core@*", "@types/express-serve-static-core@^4.17.18":
+ version "4.17.27"
+ resolved "https://registry.yarnpkg.com/@types/express-serve-static-core/-/express-serve-static-core-4.17.27.tgz#7a776191e47295d2a05962ecbb3a4ce97e38b401"
+ integrity sha512-e/sVallzUTPdyOTiqi8O8pMdBBphscvI6E4JYaKlja4Lm+zh7UFSSdW5VMkRbhDtmrONqOUHOXRguPsDckzxNA==
+ dependencies:
+ "@types/node" "*"
+ "@types/qs" "*"
+ "@types/range-parser" "*"
+
+"@types/express@*":
+ version "4.17.13"
+ resolved "https://registry.yarnpkg.com/@types/express/-/express-4.17.13.tgz#a76e2995728999bab51a33fabce1d705a3709034"
+ integrity sha512-6bSZTPaTIACxn48l50SR+axgrqm6qXFIxrdAKaG6PaJk3+zuUr35hBlgT7vOmJcum+OEaIBLtHV/qloEAFITeA==
+ dependencies:
+ "@types/body-parser" "*"
+ "@types/express-serve-static-core" "^4.17.18"
+ "@types/qs" "*"
+ "@types/serve-static" "*"
+
"@types/fined@*":
version "1.1.3"
resolved "https://registry.yarnpkg.com/@types/fined/-/fined-1.1.3.tgz#83f03e8f0a8d3673dfcafb18fce3571f6250e1bc"
@@ -3028,9 +3181,9 @@
integrity sha512-A79HEEiwXTFtfY+Bcbo58M2GRYzCr9itHWzbzHVFNEYCcoU/MMGwYYf721gBrnhpj1s6RGVVha/IgNFnR0Iw/Q==
"@types/istanbul-lib-coverage@*", "@types/istanbul-lib-coverage@^2.0.0", "@types/istanbul-lib-coverage@^2.0.1":
- version "2.0.3"
- resolved "https://registry.yarnpkg.com/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.3.tgz#4ba8ddb720221f432e443bd5f9117fd22cfd4762"
- integrity sha512-sz7iLqvVUg1gIedBOvlkxPlc8/uVzyS5OwGz1cKjXzkl3FpL3al0crU8YGU1WoHkxn0Wxbw5tyi6hvzJKNzFsw==
+ version "2.0.4"
+ resolved "https://registry.yarnpkg.com/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.4.tgz#8467d4b3c087805d63580480890791277ce35c44"
+ integrity sha512-z/QT1XN4K4KYuslS23k62yDIDLwLFkzxOuMplDtObz0+y7VqJCaO2o+SPwHCvLFZh7xazvvoor2tA/hPz9ee7g==
"@types/istanbul-lib-report@*":
version "3.0.0"
@@ -3047,17 +3200,17 @@
"@types/istanbul-lib-report" "*"
"@types/jest@*", "@types/jest@^27.0.3":
- version "27.0.3"
- resolved "https://registry.yarnpkg.com/@types/jest/-/jest-27.0.3.tgz#0cf9dfe9009e467f70a342f0f94ead19842a783a"
- integrity sha512-cmmwv9t7gBYt7hNKH5Spu7Kuu/DotGa+Ff+JGRKZ4db5eh8PnKS4LuebJ3YLUoyOyIHraTGyULn23YtEAm0VSg==
+ version "27.4.0"
+ resolved "https://registry.yarnpkg.com/@types/jest/-/jest-27.4.0.tgz#037ab8b872067cae842a320841693080f9cb84ed"
+ integrity sha512-gHl8XuC1RZ8H2j5sHv/JqsaxXkDDM9iDOgu0Wp8sjs4u/snb2PVehyWXJPr+ORA0RPpgw231mnutWI1+0hgjIQ==
dependencies:
jest-diff "^27.0.0"
pretty-format "^27.0.0"
"@types/jquery@*", "@types/jquery@^3.5.10":
- version "3.5.10"
- resolved "https://registry.yarnpkg.com/@types/jquery/-/jquery-3.5.10.tgz#9da289f3ec452acd8f7f0375e9e2faad71ebdfe1"
- integrity sha512-w2qT5DFikh5TXrW/aOaCvCP8g2MMAfPXo3oeHR9v7dRuAZhu38PUWEkYrL4e9VRTcgZE4yER21AHndgpq2QPTQ==
+ version "3.5.11"
+ resolved "https://registry.yarnpkg.com/@types/jquery/-/jquery-3.5.11.tgz#fb2a255e8376779e89a10ddd04bfc1a93398f861"
+ integrity sha512-lYZGdfOtUa0XFjIATQgiogqeTY5PNNMOmp3Jq48ghmJALL8t/IqABRqlEwdHfuUdA8iIE1uGD1HoI4a7Tiy6OA==
dependencies:
"@types/sizzle" "*"
@@ -3099,6 +3252,11 @@
dependencies:
"@types/unist" "*"
+"@types/mime@^1":
+ version "1.3.2"
+ resolved "https://registry.yarnpkg.com/@types/mime/-/mime-1.3.2.tgz#93e25bf9ee75fe0fd80b594bc4feb0e862111b5a"
+ integrity sha512-YATxVxgRqNH6nHEIsvg6k2Boc1JHI9ZbH5iWFFv/MTkchz3b1ieGDa5T0a9RznNdI0KhVbdbWSN+KWWrQZRxTw==
+
"@types/minimatch@*":
version "3.0.5"
resolved "https://registry.yarnpkg.com/@types/minimatch/-/minimatch-3.0.5.tgz#1001cc5e6a3704b83c236027e77f2f58ea010f40"
@@ -3113,14 +3271,14 @@
form-data "^3.0.0"
"@types/node@*":
- version "17.0.2"
- resolved "https://registry.yarnpkg.com/@types/node/-/node-17.0.2.tgz#a4c07d47ff737e8ee7e586fe636ff0e1ddff070a"
- integrity sha512-JepeIUPFDARgIs0zD/SKPgFsJEAF0X5/qO80llx59gOxFTboS9Amv3S+QfB7lqBId5sFXJ99BN0J6zFRvL9dDA==
+ version "17.0.7"
+ resolved "https://registry.yarnpkg.com/@types/node/-/node-17.0.7.tgz#4a53d8332bb65a45470a2f9e2611f1ced637a5cb"
+ integrity sha512-1QUk+WAUD4t8iR+Oj+UgI8oJa6yyxaB8a8pHaC8uqM6RrS1qbL7bf3Pwl5rHv0psm2CuDErgho6v5N+G+5fwtQ==
"@types/node@^14.0.10", "@types/node@^14.14.31":
- version "14.18.2"
- resolved "https://registry.yarnpkg.com/@types/node/-/node-14.18.2.tgz#00fe4d1686d5f6cf3a2f2e9a0eef42594d06abfc"
- integrity sha512-fqtSN5xn/bBzDxMT77C1rJg6CsH/R49E7qsGuvdPJa20HtV5zSTuLJPNfnlyVH3wauKnkHdLggTVkOW/xP9oQg==
+ version "14.18.4"
+ resolved "https://registry.yarnpkg.com/@types/node/-/node-14.18.4.tgz#b722d6c91f156d9359aeb20f2d7d06337b15c603"
+ integrity sha512-swe3lD4izOJWHuxvsZdDFRq6S9i6koJsXOnQKYekhSO5JTizMVirUFgY/bUsaOJQj8oSD4oxmRYPBM/0b6jpdw==
"@types/normalize-package-data@^2.4.0":
version "2.4.1"
@@ -3128,9 +3286,9 @@
integrity sha512-Gj7cI7z+98M282Tqmp2K5EIsoouUEzbBJhQQzDE3jSIRk6r9gsz0oUokqIUR4u1R3dMHo0pDHM7sNOHyhulypw==
"@types/npmlog@^4.1.2":
- version "4.1.3"
- resolved "https://registry.yarnpkg.com/@types/npmlog/-/npmlog-4.1.3.tgz#9c24b49a97e25cf15a890ff404764080d7942132"
- integrity sha512-1TcL7YDYCtnHmLhTWbum+IIwLlvpaHoEKS2KNIngEwLzwgDeHaebaEHHbQp8IqzNQ9IYiboLKUjAf7MZqG63+w==
+ version "4.1.4"
+ resolved "https://registry.yarnpkg.com/@types/npmlog/-/npmlog-4.1.4.tgz#30eb872153c7ead3e8688c476054ddca004115f6"
+ integrity sha512-WKG4gTr8przEZBiJ5r3s8ZIAoMXNbOgQ+j/d5O4X3x6kZJRLNvyUJuUK/KoG3+8BaOHPhp2m7WC6JKKeovDSzQ==
"@types/overlayscrollbars@^1.12.0":
version "1.12.1"
@@ -3167,11 +3325,16 @@
resolved "https://registry.yarnpkg.com/@types/q/-/q-1.5.5.tgz#75a2a8e7d8ab4b230414505d92335d1dcb53a6df"
integrity sha512-L28j2FcJfSZOnL1WBjDYp2vUHCeIFlyYI/53EwD/rKUBQ7MtUUfbQWiyKJGpcnv4/WgrhWsFKrcPstcAt/J0tQ==
-"@types/qs@^6.9.5":
+"@types/qs@*", "@types/qs@^6.9.5":
version "6.9.7"
resolved "https://registry.yarnpkg.com/@types/qs/-/qs-6.9.7.tgz#63bb7d067db107cc1e457c303bc25d511febf6cb"
integrity sha512-FGa1F62FT09qcrueBA6qYTrJPVDzah9a+493+o2PCXsesWHIn27G98TsSMs3WPNbZIEj4+VJf6saSFpvD+3Zsw==
+"@types/range-parser@*":
+ version "1.2.4"
+ resolved "https://registry.yarnpkg.com/@types/range-parser/-/range-parser-1.2.4.tgz#cd667bcfdd025213aafb7ca5915a932590acdcdc"
+ integrity sha512-EEhsLsD6UsDM1yFhAvy0Cjr6VwmpMWqFBCb9w07wVugF7w9nfajxLuVmngTIpgS6svCnm6Vaw+MZhoDCKnOfsw==
+
"@types/react-dom@^17.0.11":
version "17.0.11"
resolved "https://registry.yarnpkg.com/@types/react-dom/-/react-dom-17.0.11.tgz#e1eadc3c5e86bdb5f7684e00274ae228e7bcc466"
@@ -3186,6 +3349,13 @@
dependencies:
"@types/react" "*"
+"@types/react-table@^7.7.6":
+ version "7.7.9"
+ resolved "https://registry.yarnpkg.com/@types/react-table/-/react-table-7.7.9.tgz#ea82875775fc6ee71a28408dcc039396ae067c92"
+ integrity sha512-ejP/J20Zlj9VmuLh73YgYkW2xOSFTW39G43rPH93M4mYWdMmqv66lCCr+axZpkdtlNLGjvMG2CwzT4S6abaeGQ==
+ dependencies:
+ "@types/react" "*"
+
"@types/react-transition-group@^4.4.0":
version "4.4.4"
resolved "https://registry.yarnpkg.com/@types/react-transition-group/-/react-transition-group-4.4.4.tgz#acd4cceaa2be6b757db61ed7b432e103242d163e"
@@ -3194,9 +3364,9 @@
"@types/react" "*"
"@types/react@*", "@types/react@^17.0.37":
- version "17.0.37"
- resolved "https://registry.yarnpkg.com/@types/react/-/react-17.0.37.tgz#6884d0aa402605935c397ae689deed115caad959"
- integrity sha512-2FS1oTqBGcH/s0E+CjrCCR9+JMpsu9b69RTFO+40ua43ZqP5MmQ4iUde/dMjWR909KxZwmOQIFq6AV6NjEG5xg==
+ version "17.0.38"
+ resolved "https://registry.yarnpkg.com/@types/react/-/react-17.0.38.tgz#f24249fefd89357d5fa71f739a686b8d7c7202bd"
+ integrity sha512-SI92X1IA+FMnP3qM5m4QReluXzhcmovhZnLNm3pyeQlooi02qI7sLiepEYqT678uNiyc25XfCqxREFpy3W7YhQ==
dependencies:
"@types/prop-types" "*"
"@types/scheduler" "*"
@@ -3208,9 +3378,9 @@
integrity sha512-xoDlM2S4ortawSWORYqsdU+2rxdh4LRW9ytc3zmT37RIKQh6IHyKwwtKhKis9ah8ol07DCkZxPt8BBvPjC6v4g==
"@types/sanitize-html@^2.5.0":
- version "2.6.0"
- resolved "https://registry.yarnpkg.com/@types/sanitize-html/-/sanitize-html-2.6.0.tgz#442f845a6cd793d3b1bcb54b4b1905947b409526"
- integrity sha512-5F2j1f2NITsZQPrGmrw4AH5Wfud81aqvUTNC7a1SrE8aa6fKyKVVX5FZxoRQYrBdqIDluyQGfkkj97faUqq7sw==
+ version "2.6.1"
+ resolved "https://registry.yarnpkg.com/@types/sanitize-html/-/sanitize-html-2.6.1.tgz#970193524df719f716c5bcf8db579859c446cd17"
+ integrity sha512-+JLlZdJkIHdgvlFnMorJeLv5WIORNcI+jHsAoPBWMnhGx5Rbz/D1QN5D4qvmoA7fooDlEVy6zlioWSgqbU0KeQ==
dependencies:
htmlparser2 "^6.0.0"
@@ -3219,6 +3389,21 @@
resolved "https://registry.yarnpkg.com/@types/scheduler/-/scheduler-0.16.2.tgz#1a62f89525723dde24ba1b01b092bf5df8ad4d39"
integrity sha512-hppQEBDmlwhFAXKJX2KnWLYu5yMfi91yazPb2l+lbJiwW+wdo1gNeRA+3RgNSO39WYX2euey41KEwnqesU2Jew==
+"@types/serve-index@^1.9.1":
+ version "1.9.1"
+ resolved "https://registry.yarnpkg.com/@types/serve-index/-/serve-index-1.9.1.tgz#1b5e85370a192c01ec6cec4735cf2917337a6278"
+ integrity sha512-d/Hs3nWDxNL2xAczmOVZNj92YZCS6RGxfBPjKzuu/XirCgXdpKEb88dYNbrYGint6IVWLNP+yonwVAuRC0T2Dg==
+ dependencies:
+ "@types/express" "*"
+
+"@types/serve-static@*":
+ version "1.13.10"
+ resolved "https://registry.yarnpkg.com/@types/serve-static/-/serve-static-1.13.10.tgz#f5e0ce8797d2d7cc5ebeda48a52c96c4fa47a8d9"
+ integrity sha512-nCkHGI4w7ZgAdNkrEu0bv+4xNV/XDqW+DydknebMOQwkpDGx8G+HTlj7R7ABI8i8nKxVw0wtKPi1D+lPOkh4YQ==
+ dependencies:
+ "@types/mime" "^1"
+ "@types/node" "*"
+
"@types/sinonjs__fake-timers@^6.0.2":
version "6.0.4"
resolved "https://registry.yarnpkg.com/@types/sinonjs__fake-timers/-/sinonjs__fake-timers-6.0.4.tgz#0ecc1b9259b76598ef01942f547904ce61a6a77d"
@@ -3229,6 +3414,13 @@
resolved "https://registry.yarnpkg.com/@types/sizzle/-/sizzle-2.3.3.tgz#ff5e2f1902969d305225a047c8a0fd5c915cebef"
integrity sha512-JYM8x9EGF163bEyhdJBpR2QX1R5naCJHC8ucJylJ3w9/CVBaskdQ8WqBf8MmQrd1kRvp/a4TS8HJ+bxzR7ZJYQ==
+"@types/sockjs@^0.3.33":
+ version "0.3.33"
+ resolved "https://registry.yarnpkg.com/@types/sockjs/-/sockjs-0.3.33.tgz#570d3a0b99ac995360e3136fd6045113b1bd236f"
+ integrity sha512-f0KEEe05NvUnat+boPTZ0dgaLZ4SfSouXUgv5noUiefG2ajgKjmETo9ZJyuqsl7dfl2aHlLJUiki6B4ZYldiiw==
+ dependencies:
+ "@types/node" "*"
+
"@types/source-list-map@*":
version "0.1.2"
resolved "https://registry.yarnpkg.com/@types/source-list-map/-/source-list-map-0.1.2.tgz#0078836063ffaf17412349bba364087e0ac02ec9"
@@ -3303,6 +3495,13 @@
anymatch "^3.0.0"
source-map "^0.6.0"
+"@types/ws@^8.2.2":
+ version "8.2.2"
+ resolved "https://registry.yarnpkg.com/@types/ws/-/ws-8.2.2.tgz#7c5be4decb19500ae6b3d563043cd407bf366c21"
+ integrity sha512-NOn5eIcgWLOo6qW8AcuLZ7G8PycXu0xTxxkS6Q18VWFxgPUSOwV0pBj2a/4viNZVu25i7RIB7GttdkAIUUXOOg==
+ dependencies:
+ "@types/node" "*"
+
"@types/yargs-parser@*":
version "20.2.1"
resolved "https://registry.yarnpkg.com/@types/yargs-parser/-/yargs-parser-20.2.1.tgz#3b9ce2489919d9e4fea439b76916abc34b2df129"
@@ -3330,12 +3529,13 @@
"@types/node" "*"
"@typescript-eslint/eslint-plugin@^5.7.0":
- version "5.8.0"
- resolved "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.8.0.tgz#52cd9305ceef98a5333f9492d519e6c6c7fe7d43"
- integrity sha512-spu1UW7QuBn0nJ6+psnfCc3iVoQAifjKORgBngKOmC8U/1tbe2YJMzYQqDGYB4JCss7L8+RM2kKLb1B1Aw9BNA==
+ version "5.9.0"
+ resolved "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.9.0.tgz#382182d5cb062f52aac54434cfc47c28898c8006"
+ integrity sha512-qT4lr2jysDQBQOPsCCvpPUZHjbABoTJW8V9ZzIYKHMfppJtpdtzszDYsldwhFxlhvrp7aCHeXD1Lb9M1zhwWwQ==
dependencies:
- "@typescript-eslint/experimental-utils" "5.8.0"
- "@typescript-eslint/scope-manager" "5.8.0"
+ "@typescript-eslint/experimental-utils" "5.9.0"
+ "@typescript-eslint/scope-manager" "5.9.0"
+ "@typescript-eslint/type-utils" "5.9.0"
debug "^4.3.2"
functional-red-black-tree "^1.0.1"
ignore "^5.1.8"
@@ -3343,60 +3543,69 @@
semver "^7.3.5"
tsutils "^3.21.0"
-"@typescript-eslint/experimental-utils@5.8.0", "@typescript-eslint/experimental-utils@^5.0.0", "@typescript-eslint/experimental-utils@^5.3.0":
- version "5.8.0"
- resolved "https://registry.yarnpkg.com/@typescript-eslint/experimental-utils/-/experimental-utils-5.8.0.tgz#0916ffe98d34b3c95e3652efa0cace61a7b25728"
- integrity sha512-KN5FvNH71bhZ8fKtL+lhW7bjm7cxs1nt+hrDZWIqb6ViCffQcWyLunGrgvISgkRojIDcXIsH+xlFfI4RCDA0xA==
+"@typescript-eslint/experimental-utils@5.9.0", "@typescript-eslint/experimental-utils@^5.0.0", "@typescript-eslint/experimental-utils@^5.3.0":
+ version "5.9.0"
+ resolved "https://registry.yarnpkg.com/@typescript-eslint/experimental-utils/-/experimental-utils-5.9.0.tgz#652762d37d6565ef07af285021b8347b6c79a827"
+ integrity sha512-ZnLVjBrf26dn7ElyaSKa6uDhqwvAi4jBBmHK1VxuFGPRAxhdi18ubQYSGA7SRiFiES3q9JiBOBHEBStOFkwD2g==
dependencies:
"@types/json-schema" "^7.0.9"
- "@typescript-eslint/scope-manager" "5.8.0"
- "@typescript-eslint/types" "5.8.0"
- "@typescript-eslint/typescript-estree" "5.8.0"
+ "@typescript-eslint/scope-manager" "5.9.0"
+ "@typescript-eslint/types" "5.9.0"
+ "@typescript-eslint/typescript-estree" "5.9.0"
eslint-scope "^5.1.1"
eslint-utils "^3.0.0"
"@typescript-eslint/parser@^5.7.0":
- version "5.8.0"
- resolved "https://registry.yarnpkg.com/@typescript-eslint/parser/-/parser-5.8.0.tgz#b39970b21c1d7bc4a6018507fb29b380328d2587"
- integrity sha512-Gleacp/ZhRtJRYs5/T8KQR3pAQjQI89Dn/k+OzyCKOsLiZH2/Vh60cFBTnFsHNI6WAD+lNUo/xGZ4NeA5u0Ipw==
+ version "5.9.0"
+ resolved "https://registry.yarnpkg.com/@typescript-eslint/parser/-/parser-5.9.0.tgz#fdbb08767a4caa6ca6ccfed5f9ffe9387f0c7d97"
+ integrity sha512-/6pOPz8yAxEt4PLzgbFRDpZmHnXCeZgPDrh/1DaVKOjvn/UPMlWhbx/gA96xRi2JxY1kBl2AmwVbyROUqys5xQ==
dependencies:
- "@typescript-eslint/scope-manager" "5.8.0"
- "@typescript-eslint/types" "5.8.0"
- "@typescript-eslint/typescript-estree" "5.8.0"
+ "@typescript-eslint/scope-manager" "5.9.0"
+ "@typescript-eslint/types" "5.9.0"
+ "@typescript-eslint/typescript-estree" "5.9.0"
debug "^4.3.2"
-"@typescript-eslint/scope-manager@5.8.0":
- version "5.8.0"
- resolved "https://registry.yarnpkg.com/@typescript-eslint/scope-manager/-/scope-manager-5.8.0.tgz#2371095b4fa4c7be6a80b380f4e1b49c715e16f4"
- integrity sha512-x82CYJsLOjPCDuFFEbS6e7K1QEWj7u5Wk1alw8A+gnJiYwNnDJk0ib6PCegbaPMjrfBvFKa7SxE3EOnnIQz2Gg==
+"@typescript-eslint/scope-manager@5.9.0":
+ version "5.9.0"
+ resolved "https://registry.yarnpkg.com/@typescript-eslint/scope-manager/-/scope-manager-5.9.0.tgz#02dfef920290c1dcd7b1999455a3eaae7a1a3117"
+ integrity sha512-DKtdIL49Qxk2a8icF6whRk7uThuVz4A6TCXfjdJSwOsf+9ree7vgQWcx0KOyCdk0i9ETX666p4aMhrRhxhUkyg==
dependencies:
- "@typescript-eslint/types" "5.8.0"
- "@typescript-eslint/visitor-keys" "5.8.0"
+ "@typescript-eslint/types" "5.9.0"
+ "@typescript-eslint/visitor-keys" "5.9.0"
-"@typescript-eslint/types@5.8.0":
- version "5.8.0"
- resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-5.8.0.tgz#e7fa74ec35d9dbe3560d039d3d8734986c3971e0"
- integrity sha512-LdCYOqeqZWqCMOmwFnum6YfW9F3nKuxJiR84CdIRN5nfHJ7gyvGpXWqL/AaW0k3Po0+wm93ARAsOdzlZDPCcXg==
-
-"@typescript-eslint/typescript-estree@5.8.0":
- version "5.8.0"
- resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-5.8.0.tgz#900469ba9d5a37f4482b014ecce4a5dbb86cb4dd"
- integrity sha512-srfeZ3URdEcUsSLbkOFqS7WoxOqn8JNil2NSLO9O+I2/Uyc85+UlfpEvQHIpj5dVts7KKOZnftoJD/Fdv0L7nQ==
+"@typescript-eslint/type-utils@5.9.0":
+ version "5.9.0"
+ resolved "https://registry.yarnpkg.com/@typescript-eslint/type-utils/-/type-utils-5.9.0.tgz#fd5963ead04bc9b7af9c3a8e534d8d39f1ce5f93"
+ integrity sha512-uVCb9dJXpBrK1071ri5aEW7ZHdDHAiqEjYznF3HSSvAJXyrkxGOw2Ejibz/q6BXdT8lea8CMI0CzKNFTNI6TEQ==
dependencies:
- "@typescript-eslint/types" "5.8.0"
- "@typescript-eslint/visitor-keys" "5.8.0"
+ "@typescript-eslint/experimental-utils" "5.9.0"
+ debug "^4.3.2"
+ tsutils "^3.21.0"
+
+"@typescript-eslint/types@5.9.0":
+ version "5.9.0"
+ resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-5.9.0.tgz#e5619803e39d24a03b3369506df196355736e1a3"
+ integrity sha512-mWp6/b56Umo1rwyGCk8fPIzb9Migo8YOniBGPAQDNC6C52SeyNGN4gsVwQTAR+RS2L5xyajON4hOLwAGwPtUwg==
+
+"@typescript-eslint/typescript-estree@5.9.0":
+ version "5.9.0"
+ resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-5.9.0.tgz#0e5c6f03f982931abbfbc3c1b9df5fbf92a3490f"
+ integrity sha512-kxo3xL2mB7XmiVZcECbaDwYCt3qFXz99tBSuVJR4L/sR7CJ+UNAPrYILILktGj1ppfZ/jNt/cWYbziJUlHl1Pw==
+ dependencies:
+ "@typescript-eslint/types" "5.9.0"
+ "@typescript-eslint/visitor-keys" "5.9.0"
debug "^4.3.2"
globby "^11.0.4"
is-glob "^4.0.3"
semver "^7.3.5"
tsutils "^3.21.0"
-"@typescript-eslint/visitor-keys@5.8.0":
- version "5.8.0"
- resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-5.8.0.tgz#22d4ed96fe2451135299239feedb9fe1dcec780c"
- integrity sha512-+HDIGOEMnqbxdAHegxvnOqESUH6RWFRR2b8qxP1W9CZnnYh4Usz6MBL+2KMAgPk/P0o9c1HqnYtwzVH6GTIqug==
+"@typescript-eslint/visitor-keys@5.9.0":
+ version "5.9.0"
+ resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-5.9.0.tgz#7585677732365e9d27f1878150fab3922784a1a6"
+ integrity sha512-6zq0mb7LV0ThExKlecvpfepiB+XEtFv/bzx7/jKSgyXTFD7qjmSu1FoiS0x3OZaiS+UIXpH2vd9O89f02RCtgw==
dependencies:
- "@typescript-eslint/types" "5.8.0"
+ "@typescript-eslint/types" "5.9.0"
eslint-visitor-keys "^3.0.0"
"@uirouter/angularjs@1.0.11", "@uirouter/angularjs@1.0.29":
@@ -3800,10 +4009,10 @@ acorn@^7.1.1, acorn@^7.4.1:
resolved "https://registry.yarnpkg.com/acorn/-/acorn-7.4.1.tgz#feaed255973d2e77555b83dbc08851a6c63520fa"
integrity sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==
-acorn@^8.0.4, acorn@^8.2.4, acorn@^8.4.1, acorn@^8.6.0:
- version "8.6.0"
- resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.6.0.tgz#e3692ba0eb1a0c83eaa4f37f5fa7368dd7142895"
- integrity sha512-U1riIR+lBSNi3IbxtaHOIKdH8sLFv3NYfNv8sg7ZsNhcfl4HF2++BfqqrNAxoCLQW1iiylOj76ecnaUxz+z9yw==
+acorn@^8.0.4, acorn@^8.2.4, acorn@^8.4.1, acorn@^8.7.0:
+ version "8.7.0"
+ resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.7.0.tgz#90951fde0f8f09df93549481e5fc141445b791cf"
+ integrity sha512-V/LGr1APy+PXIwKebEWrkZPwoeoF+w1jiOBUmuxuiUIaOHtob8Qc9BTrYo7VuI5fR8tqsy+buA2WFooR5olqvQ==
address@1.1.2, address@^1.0.1:
version "1.1.2"
@@ -5082,9 +5291,9 @@ bytes@3.1.1:
integrity sha512-dWe4nWO/ruEOY7HkUJ5gFt1DCFV9zPRoJr8pV0/ASQermOZjtq8jMjOprC0Kd10GLN+l7xaUPvxzJFWtxGu8Fg==
c8@^7.6.0:
- version "7.10.0"
- resolved "https://registry.yarnpkg.com/c8/-/c8-7.10.0.tgz#c539ebb15d246b03b0c887165982c49293958a73"
- integrity sha512-OAwfC5+emvA6R7pkYFVBTOtI5ruf9DahffGmIqUc9l6wEh0h7iAFP6dt/V9Ioqlr2zW5avX9U9/w1I4alTRHkA==
+ version "7.11.0"
+ resolved "https://registry.yarnpkg.com/c8/-/c8-7.11.0.tgz#b3ab4e9e03295a102c47ce11d4ef6d735d9a9ac9"
+ integrity sha512-XqPyj1uvlHMr+Y1IeRndC2X5P7iJzJlEJwBpCdBbq2JocXOgJfr+JVfJkyNMGROke5LfKrhSFXGFXnwnRJAUJw==
dependencies:
"@bcoe/v8-coverage" "^0.2.3"
"@istanbuljs/schema" "^0.1.2"
@@ -5240,9 +5449,9 @@ camelcase@^5.0.0, camelcase@^5.3.1:
integrity sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==
camelcase@^6.2.0:
- version "6.2.1"
- resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-6.2.1.tgz#250fd350cfd555d0d2160b1d51510eaf8326e86e"
- integrity sha512-tVI4q5jjFV5CavAU8DXfza/TJcZutVKo/5Foskmsqcm0MsL91moHvwiGNnqaa2o6PF/7yT5ikDRcVcl8Rj6LCA==
+ version "6.3.0"
+ resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-6.3.0.tgz#5685b95eb209ac9c0c177467778c9c84df58ba9a"
+ integrity sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==
camelize@^1.0.0:
version "1.0.0"
@@ -5260,9 +5469,9 @@ caniuse-api@^3.0.0:
lodash.uniq "^4.5.0"
caniuse-lite@^1.0.0, caniuse-lite@^1.0.30000792, caniuse-lite@^1.0.30000805, caniuse-lite@^1.0.30001109, caniuse-lite@^1.0.30001125, caniuse-lite@^1.0.30001286:
- version "1.0.30001291"
- resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001291.tgz#08a8d2cfea0b2cf2e1d94dd795942d0daef6108c"
- integrity sha512-roMV5V0HNGgJ88s42eE70sstqGW/gwFndosYrikHthw98N5tLnOTxFqMLQjZVRxTWFlJ4rn+MsgXrR7MDPY4jA==
+ version "1.0.30001296"
+ resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001296.tgz#d99f0f3bee66544800b93d261c4be55a35f1cec8"
+ integrity sha512-WfrtPEoNSoeATDlf4y3QvkwiELl9GyPLISV5GejTbbQRtQx4LhsXmc9IQ6XCL2d7UxCyEzToEZNMeqR79OUw8Q==
capture-exit@^2.0.0:
version "2.0.0"
@@ -5955,22 +6164,22 @@ copy-to-clipboard@^3.3.1:
toggle-selection "^1.0.6"
core-js-compat@^3.18.0, core-js-compat@^3.19.1, core-js-compat@^3.8.1:
- version "3.20.0"
- resolved "https://registry.yarnpkg.com/core-js-compat/-/core-js-compat-3.20.0.tgz#fd704640c5a213816b6d10ec0192756111e2c9d1"
- integrity sha512-relrah5h+sslXssTTOkvqcC/6RURifB0W5yhYBdBkaPYa5/2KBMiog3XiD+s3TwEHWxInWVv4Jx2/Lw0vng+IQ==
+ version "3.20.2"
+ resolved "https://registry.yarnpkg.com/core-js-compat/-/core-js-compat-3.20.2.tgz#d1ff6936c7330959b46b2e08b122a8b14e26140b"
+ integrity sha512-qZEzVQ+5Qh6cROaTPFLNS4lkvQ6mBzE3R6A6EEpssj7Zr2egMHgsy4XapdifqJDGC9CBiNv7s+ejI96rLNQFdg==
dependencies:
browserslist "^4.19.1"
semver "7.0.0"
core-js-pure@^3.19.0, core-js-pure@^3.8.1, core-js-pure@^3.8.2:
- version "3.20.0"
- resolved "https://registry.yarnpkg.com/core-js-pure/-/core-js-pure-3.20.0.tgz#7253feccf8bb05b72c153ddccdbe391ddbffbe03"
- integrity sha512-qsrbIwWSEEYOM7z616jAVgwhuDDtPLwZSpUsU3vyUkHYqKTf/uwOJBZg2V7lMurYWkpVlaVOxBrfX0Q3ppvjfg==
+ version "3.20.2"
+ resolved "https://registry.yarnpkg.com/core-js-pure/-/core-js-pure-3.20.2.tgz#5d263565f0e34ceeeccdc4422fae3e84ca6b8c0f"
+ integrity sha512-CmWHvSKn2vNL6p6StNp1EmMIfVY/pqn3JLAjfZQ8WZGPOlGoO92EkX9/Mk81i6GxvoPXjUqEQnpM3rJ5QxxIOg==
core-js@^3.0.4, core-js@^3.19.3, core-js@^3.6.5, core-js@^3.8.2:
- version "3.20.0"
- resolved "https://registry.yarnpkg.com/core-js/-/core-js-3.20.0.tgz#1c5ac07986b8d15473ab192e45a2e115a4a95b79"
- integrity sha512-KjbKU7UEfg4YPpskMtMXPhUKn7m/1OdTHTVjy09ScR2LVaoUXe8Jh0UdvN2EKUR6iKTJph52SJP95mAB0MnVLQ==
+ version "3.20.2"
+ resolved "https://registry.yarnpkg.com/core-js/-/core-js-3.20.2.tgz#46468d8601eafc8b266bd2dd6bf9dee622779581"
+ integrity sha512-nuqhq11DcOAbFBV4zCbKeGbKQsUDRqTX0oqx7AttUBuqe3h20ixsE039QHelbL6P4h+9kytVqyEtyZ6gsiwEYw==
core-util-is@1.0.2:
version "1.0.2"
@@ -6169,9 +6378,9 @@ css-select@^2.0.0:
nth-check "^1.0.2"
css-select@^4.1.3:
- version "4.2.0"
- resolved "https://registry.yarnpkg.com/css-select/-/css-select-4.2.0.tgz#ab28276d3afb00cc05e818bd33eb030f14f57895"
- integrity sha512-6YVG6hsH9yIb/si3Th/is8Pex7qnVHO6t7q7U6TIUnkQASGbS8tnUDBftnPynLNnuUl/r2+PTd0ekiiq7R0zJw==
+ version "4.2.1"
+ resolved "https://registry.yarnpkg.com/css-select/-/css-select-4.2.1.tgz#9e665d6ae4c7f9d65dbe69d0316e3221fb274cdd"
+ integrity sha512-/aUslKhzkTNCQUB2qTX84lVmfia9NyjP3WpDGtj/WxhwBzWBYUV3DgUpurHTme8UTPcPlAD1DJ+b0nN/t50zDQ==
dependencies:
boolbase "^1.0.0"
css-what "^5.1.0"
@@ -6422,6 +6631,11 @@ data-urls@^2.0.0:
whatwg-mimetype "^2.3.0"
whatwg-url "^8.0.0"
+date-fns@^2.21.3:
+ version "2.28.0"
+ resolved "https://registry.yarnpkg.com/date-fns/-/date-fns-2.28.0.tgz#9570d656f5fc13143e50c975a3b6bbeb46cd08b2"
+ integrity sha512-8d35hViGYx/QH0icHYCeLmsLmMUheMmTyV9Fcm6gvNwdw31yXXH+O85sOBJ+OLnLQMKZowvpKb6FgMIQjcpvQw==
+
dateformat@~3.0.3:
version "3.0.3"
resolved "https://registry.yarnpkg.com/dateformat/-/dateformat-3.0.3.tgz#a6e37499a4d9a9cf85ef5872044d62901c9889ae"
@@ -6971,9 +7185,9 @@ ee-first@1.1.1:
integrity sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0=
electron-to-chromium@^1.3.30, electron-to-chromium@^1.3.564, electron-to-chromium@^1.4.17:
- version "1.4.25"
- resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.4.25.tgz#ce95e6678f8c6893ae892c7e95a5000e83f1957f"
- integrity sha512-bTwub9Y/76EiNmfaiJih+hAy6xn7Ns95S4KvI2NuKNOz8TEEKKQUu44xuy0PYMudjM9zdjKRS1bitsUvHTfuUg==
+ version "1.4.33"
+ resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.4.33.tgz#1fe18961becb51c7db8ec739c655ef1b93d9349e"
+ integrity sha512-OVK1Ad3pHnmuXPhEfq85X8vUKr1UPNHryBnbKnyLcAfh8dPwoFjoDhDlP5KpPJIiymvSucZs48UBrE1250IxOw==
element-resize-detector@^1.2.2:
version "1.2.4"
@@ -7174,9 +7388,9 @@ es5-ext@^0.10.35, es5-ext@^0.10.46, es5-ext@^0.10.50, es5-ext@~0.10.14:
next-tick "~1.0.0"
es5-shim@^4.5.13:
- version "4.6.2"
- resolved "https://registry.yarnpkg.com/es5-shim/-/es5-shim-4.6.2.tgz#827cdd0c6fb5beb26fd368d65430e8b5eaeba942"
- integrity sha512-n0XTVMGps+Deyr38jtqKPR5F5hb9owYeRQcKJW39eFvzUk/u/9Ww315werRzbiNMnHCUw/YHDPBphTlEnzdi+A==
+ version "4.6.4"
+ resolved "https://registry.yarnpkg.com/es5-shim/-/es5-shim-4.6.4.tgz#10ce5f06c7bccfdd60b4e08edf95c7e2fbc1dc2a"
+ integrity sha512-Z0f7OUYZ8JfqT12d3Tgh2ErxIH5Shaz97GE8qyDG9quxb2Hmh2vvFHlOFjx6lzyD0CRgvJfnNYcisjdbRp7MPw==
es6-iterator@^2.0.3, es6-iterator@~2.0.1, es6-iterator@~2.0.3:
version "2.0.3"
@@ -7319,9 +7533,9 @@ eslint-config-airbnb-typescript@^16.1.0:
eslint-config-airbnb-base "^15.0.0"
eslint-config-airbnb@^19.0.2:
- version "19.0.2"
- resolved "https://registry.yarnpkg.com/eslint-config-airbnb/-/eslint-config-airbnb-19.0.2.tgz#3a1681e39b68cc6abeae58300014ed5d5706b625"
- integrity sha512-4v5DEMVSl043LaCT+gsxPcoiIk0iYG5zxJKKjIy80H/D//2E0vtuOBWkb0CBDxjF+y26yQzspIXYuY6wMmt9Cw==
+ version "19.0.4"
+ resolved "https://registry.yarnpkg.com/eslint-config-airbnb/-/eslint-config-airbnb-19.0.4.tgz#84d4c3490ad70a0ffa571138ebcdea6ab085fdc3"
+ integrity sha512-T75QYQVQX57jiNgpF9r1KegMICE94VYwoFQyMGhrvc+lB8YF2E/M/PYDaQe1AJcWaEgqLE+ErXV1Og/+6Vyzew==
dependencies:
eslint-config-airbnb-base "^15.0.0"
object.assign "^4.1.2"
@@ -7345,14 +7559,13 @@ eslint-import-resolver-node@^0.3.6:
debug "^3.2.7"
resolve "^1.20.0"
-eslint-module-utils@^2.7.1:
- version "2.7.1"
- resolved "https://registry.yarnpkg.com/eslint-module-utils/-/eslint-module-utils-2.7.1.tgz#b435001c9f8dd4ab7f6d0efcae4b9696d4c24b7c"
- integrity sha512-fjoetBXQZq2tSTWZ9yWVl2KuFrTZZH3V+9iD1V1RfpDgxzJR+mPd/KZmMiA8gbPqdBzpNiEHOuT7IYEWxrH0zQ==
+eslint-module-utils@^2.7.2:
+ version "2.7.2"
+ resolved "https://registry.yarnpkg.com/eslint-module-utils/-/eslint-module-utils-2.7.2.tgz#1d0aa455dcf41052339b63cada8ab5fd57577129"
+ integrity sha512-zquepFnWCY2ISMFwD/DqzaM++H+7PDzOpUvotJWm/y1BAFt5R4oeULgdrTejKqLkz7MA/tgstsUMNYc7wNdTrg==
dependencies:
debug "^3.2.7"
find-up "^2.1.0"
- pkg-dir "^2.0.0"
eslint-plugin-eslint-comments@^3.2.0:
version "3.2.0"
@@ -7363,28 +7576,28 @@ eslint-plugin-eslint-comments@^3.2.0:
ignore "^5.0.5"
eslint-plugin-import@^2.25.3:
- version "2.25.3"
- resolved "https://registry.yarnpkg.com/eslint-plugin-import/-/eslint-plugin-import-2.25.3.tgz#a554b5f66e08fb4f6dc99221866e57cfff824766"
- integrity sha512-RzAVbby+72IB3iOEL8clzPLzL3wpDrlwjsTBAQXgyp5SeTqqY+0bFubwuo+y/HLhNZcXV4XqTBO4LGsfyHIDXg==
+ version "2.25.4"
+ resolved "https://registry.yarnpkg.com/eslint-plugin-import/-/eslint-plugin-import-2.25.4.tgz#322f3f916a4e9e991ac7af32032c25ce313209f1"
+ integrity sha512-/KJBASVFxpu0xg1kIBn9AUa8hQVnszpwgE7Ld0lKAlx7Ie87yzEzCgSkekt+le/YVhiaosO4Y14GDAOc41nfxA==
dependencies:
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.1"
+ eslint-module-utils "^2.7.2"
has "^1.0.3"
is-core-module "^2.8.0"
is-glob "^4.0.3"
minimatch "^3.0.4"
object.values "^1.1.5"
resolve "^1.20.0"
- tsconfig-paths "^3.11.0"
+ tsconfig-paths "^3.12.0"
eslint-plugin-jest@^25.3.0:
- version "25.3.0"
- resolved "https://registry.yarnpkg.com/eslint-plugin-jest/-/eslint-plugin-jest-25.3.0.tgz#6c04bbf13624a75684a05391a825b58e2e291950"
- integrity sha512-79WQtuBsTN1S8Y9+7euBYwxIOia/k7ykkl9OCBHL3xuww5ecursHy/D8GCIlvzHVWv85gOkS5Kv6Sh7RxOgK1Q==
+ version "25.3.4"
+ resolved "https://registry.yarnpkg.com/eslint-plugin-jest/-/eslint-plugin-jest-25.3.4.tgz#2031dfe495be1463330f8b80096ddc91f8e6387f"
+ integrity sha512-CCnwG71wvabmwq/qkz0HWIqBHQxw6pXB1uqt24dxqJ9WB34pVg49bL1sjXphlJHgTMWGhBjN1PicdyxDxrfP5A==
dependencies:
"@typescript-eslint/experimental-utils" "^5.0.0"
@@ -7417,9 +7630,9 @@ eslint-plugin-react-hooks@^4.3.0:
integrity sha512-XslZy0LnMn+84NEG9jSGR6eGqaZB3133L8xewQo3fQagbQuGt7a63gf+P1NGKZavEYEC3UXaWEAA/AqDkuN6xA==
eslint-plugin-react@^7.27.1:
- version "7.27.1"
- resolved "https://registry.yarnpkg.com/eslint-plugin-react/-/eslint-plugin-react-7.27.1.tgz#469202442506616f77a854d91babaae1ec174b45"
- integrity sha512-meyunDjMMYeWr/4EBLTV1op3iSG3mjT/pz5gti38UzfM4OPpNc2m0t2xvKCOMU5D6FSdd34BIMFOvQbW+i8GAA==
+ version "7.28.0"
+ resolved "https://registry.yarnpkg.com/eslint-plugin-react/-/eslint-plugin-react-7.28.0.tgz#8f3ff450677571a659ce76efc6d80b6a525adbdf"
+ integrity sha512-IOlFIRHzWfEQQKcAD4iyYDndHwTQiCMcJVJjxempf203jnNLUnW34AXLrV33+nEXoifJE2ZEGmcjKPL8957eSw==
dependencies:
array-includes "^3.1.4"
array.prototype.flatmap "^1.2.5"
@@ -7539,9 +7752,9 @@ eslint@^3.0.0:
user-home "^2.0.0"
eslint@^8.4.1:
- version "8.5.0"
- resolved "https://registry.yarnpkg.com/eslint/-/eslint-8.5.0.tgz#ddd2c1afd8f412036f87ae2a063d2aa296d3175f"
- integrity sha512-tVGSkgNbOfiHyVte8bCM8OmX+xG9PzVG/B4UCF60zx7j61WIVY/AqJECDgpLD4DbbESD0e174gOg3ZlrX15GDg==
+ version "8.6.0"
+ resolved "https://registry.yarnpkg.com/eslint/-/eslint-8.6.0.tgz#4318c6a31c5584838c1a2e940c478190f58d558e"
+ integrity sha512-UvxdOJ7mXFlw7iuHZA4jmzPaUqIw54mZrv+XPYKNbKdLR0et4rf60lIZUU9kiNtnzzMzGWxMV+tQ7uG7JG8DPw==
dependencies:
"@eslint/eslintrc" "^1.0.5"
"@humanwhocodes/config-array" "^0.9.2"
@@ -7555,7 +7768,7 @@ eslint@^8.4.1:
eslint-scope "^7.1.0"
eslint-utils "^3.0.0"
eslint-visitor-keys "^3.1.0"
- espree "^9.2.0"
+ espree "^9.3.0"
esquery "^1.4.0"
esutils "^2.0.2"
fast-deep-equal "^3.1.3"
@@ -7590,12 +7803,12 @@ espree@^3.4.0:
acorn "^5.5.0"
acorn-jsx "^3.0.0"
-espree@^9.2.0:
- version "9.2.0"
- resolved "https://registry.yarnpkg.com/espree/-/espree-9.2.0.tgz#c50814e01611c2d0f8bd4daa83c369eabba80dbc"
- integrity sha512-oP3utRkynpZWF/F2x/HZJ+AGtnIclaR7z1pYPxy7NYM2fSO6LgK/Rkny8anRSPK/VwEA1eqm2squui0T7ZMOBg==
+espree@^9.2.0, espree@^9.3.0:
+ version "9.3.0"
+ resolved "https://registry.yarnpkg.com/espree/-/espree-9.3.0.tgz#c1240d79183b72aaee6ccfa5a90bc9111df085a8"
+ integrity sha512-d/5nCsb0JcqsSEeQzFZ8DH1RmxPcglRWh24EFTlUEmCKoehXGdpsx0RkHDubqUI8LSAIKMQp4r9SzQ3n+sm4HQ==
dependencies:
- acorn "^8.6.0"
+ acorn "^8.7.0"
acorn-jsx "^5.3.1"
eslint-visitor-keys "^3.1.0"
@@ -9511,7 +9724,7 @@ iconv-lite@0.4.24, iconv-lite@^0.4.24, iconv-lite@~0.4.13:
dependencies:
safer-buffer ">= 2.1.2 < 3"
-iconv-lite@^0.6.2:
+iconv-lite@^0.6.3:
version "0.6.3"
resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.6.3.tgz#a52f80bf38da1952eb5c681790719871a1a72501"
integrity sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==
@@ -10334,9 +10547,9 @@ istanbul-lib-source-maps@^4.0.0:
source-map "^0.6.1"
istanbul-reports@^3.0.2:
- version "3.1.1"
- resolved "https://registry.yarnpkg.com/istanbul-reports/-/istanbul-reports-3.1.1.tgz#7085857f17d2441053c6ce5c3b8fdf6882289397"
- integrity sha512-q1kvhAXWSsXfMjCdNHNPKZZv94OlspKnoGv+R9RGbnqOOQ0VbNfLFgQDVgi7hHenKsndGq3/o0OBdzDXthWcNw==
+ version "3.1.3"
+ resolved "https://registry.yarnpkg.com/istanbul-reports/-/istanbul-reports-3.1.3.tgz#4bcae3103b94518117930d51283690960b50d3c2"
+ integrity sha512-x9LtDVtfm/t1GFiLl3NffC7hz+I1ragvgX1P/Lg1NlIagifZDKUkuuaAxH/qpwj2IuEfD8G2Bs/UKp+sZ/pKkg==
dependencies:
html-escaper "^2.0.0"
istanbul-lib-report "^3.0.0"
@@ -11155,9 +11368,9 @@ lines-and-columns@^1.1.6:
integrity sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==
lint-staged@>=10:
- version "12.1.3"
- resolved "https://registry.yarnpkg.com/lint-staged/-/lint-staged-12.1.3.tgz#a16e885c0a5e77de9cf559724d29a10348670e68"
- integrity sha512-ajapdkaFxx+MVhvq6xQRg9zCnCLz49iQLJZP7+w8XaA3U4B35Z9xJJGq9vxmWo73QTvJLG+N2NxhjWiSexbAWQ==
+ version "12.1.5"
+ resolved "https://registry.yarnpkg.com/lint-staged/-/lint-staged-12.1.5.tgz#e05582fc39aed5cb13b9dd1dfb8330407246d809"
+ integrity sha512-WyKb+0sNKDTd1LwwAfTBPp0XmdaKkAOEbg4oHE4Kq2+oQVchg/VAcjVQtSqZih1izNsTURjc2EkhG/syRQUXdA==
dependencies:
cli-truncate "^3.1.0"
colorette "^2.0.16"
@@ -11174,16 +11387,16 @@ lint-staged@>=10:
yaml "^1.10.2"
listr2@^3.13.5, listr2@^3.8.3:
- version "3.13.5"
- resolved "https://registry.yarnpkg.com/listr2/-/listr2-3.13.5.tgz#105a813f2eb2329c4aae27373a281d610ee4985f"
- integrity sha512-3n8heFQDSk+NcwBn3CgxEibZGaRzx+pC64n3YjpMD1qguV4nWus3Al+Oo3KooqFKTQEJ1v7MmnbnyyNspgx3NA==
+ version "3.14.0"
+ resolved "https://registry.yarnpkg.com/listr2/-/listr2-3.14.0.tgz#23101cc62e1375fd5836b248276d1d2b51fdbe9e"
+ integrity sha512-TyWI8G99GX9GjE54cJ+RrNMcIFBfwMPxc3XTFiAYGN4s10hWROGtOg7+O6u6LE3mNkyld7RSLE6nrKBvTfcs3g==
dependencies:
cli-truncate "^2.1.0"
colorette "^2.0.16"
log-update "^4.0.0"
p-map "^4.0.0"
rfdc "^1.3.0"
- rxjs "^7.4.0"
+ rxjs "^7.5.1"
through "^2.3.8"
wrap-ansi "^7.0.0"
@@ -11568,9 +11781,9 @@ mem@^8.1.1:
mimic-fn "^3.1.0"
memfs@^3.1.2, memfs@^3.2.2:
- version "3.4.0"
- resolved "https://registry.yarnpkg.com/memfs/-/memfs-3.4.0.tgz#8bc12062b973be6b295d4340595736a656f0a257"
- integrity sha512-o/RfP0J1d03YwsAxyHxAYs2kyJp55AFkMazlFAZFR2I2IXkxiUTXRabJ6RmNNCQ83LAD2jy52Khj0m3OffpNdA==
+ version "3.4.1"
+ resolved "https://registry.yarnpkg.com/memfs/-/memfs-3.4.1.tgz#b78092f466a0dce054d63d39275b24c71d3f1305"
+ integrity sha512-1c9VPVvW5P7I85c35zAdEr1TD5+F11IToIHIlrVIcflfnzPkJa0ZoYEoEdYDP8KgPFoSZ/opDrUsAoZWym3mtw==
dependencies:
fs-monkey "1.0.3"
@@ -12840,7 +13053,7 @@ path-key@^3.0.0, path-key@^3.1.0:
resolved "https://registry.yarnpkg.com/path-key/-/path-key-3.1.1.tgz#581f6ade658cbba65a0d3380de7753295054f375"
integrity sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==
-path-parse@^1.0.6:
+path-parse@^1.0.6, path-parse@^1.0.7:
version "1.0.7"
resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.7.tgz#fbc114b60ca42b30d9daf5858e4bd68bbedb6735"
integrity sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==
@@ -12906,9 +13119,9 @@ picocolors@^1.0.0:
integrity sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==
picomatch@^2.0.4, picomatch@^2.2.1, picomatch@^2.2.3, picomatch@^2.3.0:
- version "2.3.0"
- resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.3.0.tgz#f1f061de8f6a4bf022892e2d128234fb98302972"
- integrity sha512-lY1Q/PiJGC2zOv/z391WOTD+Z02bCgsFfvxoXXf6h7kv9o+WmsmzYqrAwY63sNgOxE4xEdq0WyUnXfKeBrSvYw==
+ version "2.3.1"
+ resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.3.1.tgz#3ba3833733646d9d3e4995946c1365a67fb07a42"
+ integrity sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==
pify@^2.0.0, pify@^2.2.0, pify@^2.3.0:
version "2.3.0"
@@ -12942,13 +13155,6 @@ pirates@^4.0.0, pirates@^4.0.1:
resolved "https://registry.yarnpkg.com/pirates/-/pirates-4.0.4.tgz#07df81e61028e402735cdd49db701e4885b4e6e6"
integrity sha512-ZIrVPH+A52Dw84R0L3/VS9Op04PuQ2SEoJL6bkshmiTic/HldyW9Tf7oH5mhJZBK7NmDx27vSMrYEXPXclpDKw==
-pkg-dir@^2.0.0:
- version "2.0.0"
- resolved "https://registry.yarnpkg.com/pkg-dir/-/pkg-dir-2.0.0.tgz#f6d5d1109e19d63edf428e0bd57e12777615334b"
- integrity sha1-9tXREJ4Z1j7fQo4L1X4Sd3YVM0s=
- dependencies:
- find-up "^2.1.0"
-
pkg-dir@^3.0.0:
version "3.0.0"
resolved "https://registry.yarnpkg.com/pkg-dir/-/pkg-dir-3.0.0.tgz#2749020f239ed990881b1f71210d51eb6523bea3"
@@ -13320,9 +13526,9 @@ postcss-selector-parser@^3.0.0:
uniq "^1.0.1"
postcss-selector-parser@^6.0.2, postcss-selector-parser@^6.0.4:
- version "6.0.7"
- resolved "https://registry.yarnpkg.com/postcss-selector-parser/-/postcss-selector-parser-6.0.7.tgz#48404830a635113a71fd79397de8209ed05a66fc"
- integrity sha512-U+b/Deoi4I/UmE6KOVPpnhS7I7AYdKbhGcat+qTQ27gycvaACvNEw11ba6RrkwVmDVRW7sigWgLj4/KbbJjeDA==
+ version "6.0.8"
+ resolved "https://registry.yarnpkg.com/postcss-selector-parser/-/postcss-selector-parser-6.0.8.tgz#f023ed7a9ea736cd7ef70342996e8e78645a7914"
+ integrity sha512-D5PG53d209Z1Uhcc0qAZ5U3t5HagH3cxu+WLZ22jt3gLUpXM4eXXfiO14jiDWST3NNooX/E8wISfOhZ9eIjGTQ==
dependencies:
cssesc "^3.0.0"
util-deprecate "^1.0.2"
@@ -13515,13 +13721,13 @@ prompts@^2.0.1, prompts@^2.4.0:
sisteransi "^1.0.5"
prop-types@^15.0.0, prop-types@^15.6.0, prop-types@^15.6.1, prop-types@^15.6.2, prop-types@^15.7.2:
- version "15.7.2"
- resolved "https://registry.yarnpkg.com/prop-types/-/prop-types-15.7.2.tgz#52c41e75b8c87e72b9d9360e0206b99dcbffa6c5"
- integrity sha512-8QQikdH7//R2vurIJSutZ1smHYTcLpRWEOlHnzcWHmBYrOGUysKwSsrC89BCiFj3CbrfJ/nXFdJepOVrY1GCHQ==
+ version "15.8.0"
+ resolved "https://registry.yarnpkg.com/prop-types/-/prop-types-15.8.0.tgz#d237e624c45a9846e469f5f31117f970017ff588"
+ integrity sha512-fDGekdaHh65eI3lMi5OnErU6a8Ighg2KjcjQxO7m8VHyWjcPyj5kiOgV1LQDOOOgVy3+5FgjXvdSSX7B8/5/4g==
dependencies:
loose-envify "^1.4.0"
object-assign "^4.1.1"
- react-is "^16.8.1"
+ react-is "^16.13.1"
property-expr@^2.0.4:
version "2.0.4"
@@ -13869,9 +14075,9 @@ react-helmet-async@^1.0.7:
shallowequal "^1.1.0"
react-i18next@^11.11.4:
- version "11.15.1"
- resolved "https://registry.yarnpkg.com/react-i18next/-/react-i18next-11.15.1.tgz#1dec5f2bf2cf7bc5043e9fcb391c9d6e24bb9bfe"
- integrity sha512-lnje1uKu5XeM5MLvfbt1oygF+nEIZnpOM4Iu8bkx5ECD4XRYgi3SJDmolrp0EDxDHeK2GgFb+vEEK0hsZ9sjeA==
+ version "11.15.3"
+ resolved "https://registry.yarnpkg.com/react-i18next/-/react-i18next-11.15.3.tgz#7608fb3cacc02ac75a62fc2d68b579f140b198dd"
+ integrity sha512-RSUEM4So3Tu2JHV0JsZ5Yje+4nz66YViMfPZoywxOy0xyn3L7tE2CHvJ7Y9LUsrTU7vGmZ5bwb8PpjnkatdIxg==
dependencies:
"@babel/runtime" "^7.14.5"
html-escaper "^2.0.2"
@@ -13891,7 +14097,7 @@ react-is@17.0.2, "react-is@^16.12.0 || ^17.0.0", react-is@^17.0.1, react-is@^17.
resolved "https://registry.yarnpkg.com/react-is/-/react-is-17.0.2.tgz#e691d4a8e9c789365655539ab372762b0efb54f0"
integrity sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w==
-react-is@^16.12.0, react-is@^16.7.0, react-is@^16.8.1:
+react-is@^16.12.0, react-is@^16.13.1, react-is@^16.7.0:
version "16.13.1"
resolved "https://registry.yarnpkg.com/react-is/-/react-is-16.13.1.tgz#789729a4dc36de2999dc156dd6c1d9c18cea56a4"
integrity sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==
@@ -13914,9 +14120,9 @@ react-popper@^2.2.4:
warning "^4.0.2"
react-query@^3.34.3:
- version "3.34.5"
- resolved "https://registry.yarnpkg.com/react-query/-/react-query-3.34.5.tgz#a145c02f58088c5c83c91697cece50e89b4dbfd8"
- integrity sha512-qk1hYo+y90LGY5W4kNEYT5yCk8gyL1fVTMoRZfzBTaSdaZWOcdvij36MmkhIqiPdXoEt5pBvX2ejokazwq8haw==
+ version "3.34.7"
+ resolved "https://registry.yarnpkg.com/react-query/-/react-query-3.34.7.tgz#e3d71318f510ea354794cd188b351bb57f577cb9"
+ integrity sha512-Q8+H2DgpoZdGUpwW2Z9WAbSrIE+yOdZiCUokHjlniOOmlcsfqNLgvHF5i7rtuCmlw3hv5OAhtpS7e97/DvgpWw==
dependencies:
"@babel/runtime" "^7.5.5"
broadcast-channel "^3.4.1"
@@ -13984,6 +14190,11 @@ react-syntax-highlighter@^13.5.3:
prismjs "^1.21.0"
refractor "^3.1.0"
+react-table@^7.7.0:
+ version "7.7.0"
+ resolved "https://registry.yarnpkg.com/react-table/-/react-table-7.7.0.tgz#e2ce14d7fe3a559f7444e9ecfe8231ea8373f912"
+ integrity sha512-jBlj70iBwOTvvImsU9t01LjFjy4sXEtclBovl3mTiqjz23Reu0DKnRza4zlLtOPACx6j2/7MrQIthIK1Wi+LIA==
+
react-test-renderer@^17.0.2:
version "17.0.2"
resolved "https://registry.yarnpkg.com/react-test-renderer/-/react-test-renderer-17.0.2.tgz#4cd4ae5ef1ad5670fc0ef776e8cc7e1231d9866c"
@@ -14440,12 +14651,13 @@ resolve.exports@^1.1.0:
integrity sha512-J1l+Zxxp4XK3LUDZ9m60LRJF/mAe4z6a4xyabPHk7pvK5t35dACV32iIjJDFeWZFfZlO29w6SZ67knR0tHzJtQ==
resolve@^1.1.6, resolve@^1.1.7, resolve@^1.10.0, resolve@^1.12.0, resolve@^1.14.2, resolve@^1.19.0, resolve@^1.20.0, resolve@^1.3.2, resolve@^1.9.0:
- version "1.20.0"
- resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.20.0.tgz#629a013fb3f70755d6f0b7935cc1c2c5378b1975"
- integrity sha512-wENBPt4ySzg4ybFQW2TT1zMQucPK95HSh/nq2CFTZVOGut2+pQvSsgtda4d26YrYcr067wjbmzOG8byDPBX63A==
+ version "1.21.0"
+ resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.21.0.tgz#b51adc97f3472e6a5cf4444d34bc9d6b9037591f"
+ integrity sha512-3wCbTpk5WJlyE4mSOtDLhqQmGFi0/TD9VPwmiolnk8U0wRgMEktqCXd3vy5buTO3tljvalNvKrjHEfrd2WpEKA==
dependencies:
- is-core-module "^2.2.0"
- path-parse "^1.0.6"
+ is-core-module "^2.8.0"
+ path-parse "^1.0.7"
+ supports-preserve-symlinks-flag "^1.0.0"
resolve@^2.0.0-next.3:
version "2.0.0-next.3"
@@ -14581,12 +14793,12 @@ rxjs@^6.4.0, rxjs@^6.6.0:
dependencies:
tslib "^1.9.0"
-rxjs@^7.4.0:
- version "7.4.0"
- resolved "https://registry.yarnpkg.com/rxjs/-/rxjs-7.4.0.tgz#a12a44d7eebf016f5ff2441b87f28c9a51cebc68"
- integrity sha512-7SQDi7xeTMCJpqViXh8gL/lebcwlp3d831F05+9B44A4B0WfsEwUQHR64gsH1kvJ+Ep/J9K2+n1hVl1CsGN23w==
+rxjs@^7.5.1:
+ version "7.5.1"
+ resolved "https://registry.yarnpkg.com/rxjs/-/rxjs-7.5.1.tgz#af73df343cbcab37628197f43ea0c8256f54b157"
+ integrity sha512-KExVEeZWxMZnZhUZtsJcFwz8IvPvgu4G2Z2QyqjZQzUGr32KDYuSxrEYO4w3tFFNbfLozcrKUTvTPi+E9ywJkQ==
dependencies:
- tslib "~2.1.0"
+ tslib "^2.1.0"
safe-buffer@5.1.1:
version "5.1.1"
@@ -14648,9 +14860,9 @@ sanitize-html@^2.5.3:
postcss "^8.3.11"
sass@^1.36.0:
- version "1.45.1"
- resolved "https://registry.yarnpkg.com/sass/-/sass-1.45.1.tgz#fa03951f924d1ba5762949567eaf660e608a1ab0"
- integrity sha512-pwPRiq29UR0o4X3fiQyCtrESldXvUQAAE0QmcJTpsI4kuHHcLzZ54M1oNBVIXybQv8QF2zfkpFcTxp8ta97dUA==
+ version "1.45.2"
+ resolved "https://registry.yarnpkg.com/sass/-/sass-1.45.2.tgz#130b428c1692201cfa181139835d6fc378a33323"
+ integrity sha512-cKfs+F9AMPAFlbbTXNsbGvg3y58nV0mXA3E94jqaySKcC8Kq3/8983zVKQ0TLMUrHw7hF9Tnd3Bz9z5Xgtrl9g==
dependencies:
chokidar ">=3.0.0 <4.0.0"
immutable "^4.0.0"
@@ -15119,19 +15331,14 @@ source-list-map@^2.0.0:
resolved "https://registry.yarnpkg.com/source-map-js/-/source-map-js-1.0.1.tgz#a1741c131e3c77d048252adfa24e23b908670caf"
integrity sha512-4+TN2b3tqOCd/kaGRJ/sTYA0tR0mdXx26ipdolxcwtJVqEnqNYvlCAt1q3ypy4QMlYus+Zh34RNtYLoq2oQ4IA==
-source-map-js@^0.6.2:
- version "0.6.2"
- resolved "https://registry.yarnpkg.com/source-map-js/-/source-map-js-0.6.2.tgz#0bb5de631b41cfbda6cfba8bd05a80efdfd2385e"
- integrity sha512-/3GptzWzu0+0MBQFrDKzw/DvvMTUORvgY6k6jd/VS6iCR4RDTKWH6v6WPwQoUO8667uQEf9Oe38DxAYWY5F/Ug==
-
source-map-loader@^3.0.0:
- version "3.0.0"
- resolved "https://registry.yarnpkg.com/source-map-loader/-/source-map-loader-3.0.0.tgz#f2a04ee2808ad01c774dea6b7d2639839f3b3049"
- integrity sha512-GKGWqWvYr04M7tn8dryIWvb0s8YM41z82iQv01yBtIylgxax0CwvSy6gc2Y02iuXwEfGWRlMicH0nvms9UZphw==
+ version "3.0.1"
+ resolved "https://registry.yarnpkg.com/source-map-loader/-/source-map-loader-3.0.1.tgz#9ae5edc7c2d42570934be4c95d1ccc6352eba52d"
+ integrity sha512-Vp1UsfyPvgujKQzi4pyDiTOnE3E4H+yHvkVRN3c/9PJmQS4CQJExvcDvaX/D+RV+xQben9HJ56jMJS3CgUeWyA==
dependencies:
abab "^2.0.5"
- iconv-lite "^0.6.2"
- source-map-js "^0.6.2"
+ iconv-lite "^0.6.3"
+ source-map-js "^1.0.1"
source-map-resolve@^0.5.0:
version "0.5.3"
@@ -15673,6 +15880,11 @@ supports-hyperlinks@^2.0.0:
has-flag "^4.0.0"
supports-color "^7.0.0"
+supports-preserve-symlinks-flag@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz#6eda4bd344a3c94aea376d4cc31bc77311039e09"
+ integrity sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==
+
svgo@^1.0.0:
version "1.3.2"
resolved "https://registry.yarnpkg.com/svgo/-/svgo-1.3.2.tgz#b6dc511c063346c9e415b81e43401145b96d4167"
@@ -15737,6 +15949,11 @@ synchronous-promise@^2.0.15:
resolved "https://registry.yarnpkg.com/synchronous-promise/-/synchronous-promise-2.0.15.tgz#07ca1822b9de0001f5ff73595f3d08c4f720eb8e"
integrity sha512-k8uzYIkIVwmT+TcglpdN50pS2y1BDcUnBPK9iJeGu0Pl1lOI8pD6wtzgw91Pjpe+RxtTncw32tLxs/R0yNL2Mg==
+tabbable@^4.0.0:
+ version "4.0.0"
+ resolved "https://registry.yarnpkg.com/tabbable/-/tabbable-4.0.0.tgz#5bff1d1135df1482cf0f0206434f15eadbeb9261"
+ integrity sha512-H1XoH1URcBOa/rZZWxLxHCtOdVUEev+9vo5YdYhC9tCY4wnybX+VQrCYuy9ubkg69fCBxCONJOSLGfw0DWMffQ==
+
table@^3.7.8:
version "3.8.3"
resolved "https://registry.yarnpkg.com/table/-/table-3.8.3.tgz#2bbc542f0fda9861a755d3947fefd8b3f513855f"
@@ -15929,7 +16146,7 @@ timsort@^0.3.0:
resolved "https://registry.yarnpkg.com/timsort/-/timsort-0.3.0.tgz#405411a8e7e6339fe64db9a234de11dc31e02bd4"
integrity sha1-QFQRqOfmM5/mTbmiNN4R3DHgK9Q=
-tiny-warning@^1.0.2:
+tiny-warning@^1.0.2, tiny-warning@^1.0.3:
version "1.0.3"
resolved "https://registry.yarnpkg.com/tiny-warning/-/tiny-warning-1.0.3.tgz#94a30db453df4c643d0fd566060d60a875d84754"
integrity sha512-lBN9zLN/oAf68o3zNXYrdCt1kP8WsiGW8Oo2ka41b2IM5JL/S1CTyX1rW0mb/zSuJun0ZUrDxx4sqvYS2FWzPA==
@@ -16089,11 +16306,6 @@ ts-dedent@^2.0.0:
resolved "https://registry.yarnpkg.com/ts-dedent/-/ts-dedent-2.2.0.tgz#39e4bd297cd036292ae2394eb3412be63f563bb5"
integrity sha512-q5W7tVM71e2xjHZTlgfTDoPF/SmqKG5hddq9SzR49CH2hayqRKJtQ4mtRlSxKaJlR/+9rEM+mnBHf7I2/BQcpQ==
-ts-essentials@^2.0.3:
- version "2.0.12"
- resolved "https://registry.yarnpkg.com/ts-essentials/-/ts-essentials-2.0.12.tgz#c9303f3d74f75fa7528c3d49b80e089ab09d8745"
- integrity sha512-3IVX4nI6B5cc31/GFFE+i8ey/N2eA0CZDbo6n0yrz0zDX8ZJ8djmU1p+XRz7G3is0F3bB3pu2pAroFdAWQKU3w==
-
ts-pnp@^1.1.6:
version "1.2.0"
resolved "https://registry.yarnpkg.com/ts-pnp/-/ts-pnp-1.2.0.tgz#a500ad084b0798f1c3071af391e65912c86bca92"
@@ -16108,7 +16320,7 @@ tsconfig-paths-webpack-plugin@^3.5.2:
enhanced-resolve "^5.7.0"
tsconfig-paths "^3.9.0"
-tsconfig-paths@^3.11.0, tsconfig-paths@^3.9.0:
+tsconfig-paths@^3.12.0, tsconfig-paths@^3.9.0:
version "3.12.0"
resolved "https://registry.yarnpkg.com/tsconfig-paths/-/tsconfig-paths-3.12.0.tgz#19769aca6ee8f6a1a341e38c8fa45dd9fb18899b"
integrity sha512-e5adrnOYT6zqVnWqZu7i/BQ3BnhzvGbjEjejFXO20lKIKpwTaupkCPgEfv4GZK1IBciJUEhYs3J3p75FdaTFVg==
@@ -16123,16 +16335,11 @@ tslib@^1.10.0, tslib@^1.11.1, tslib@^1.8.1, tslib@^1.9.0:
resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.14.1.tgz#cf2d38bdc34a134bcaf1091c41f6619e2f672d00"
integrity sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==
-tslib@^2.0.0, tslib@^2.0.1, tslib@^2.0.3, tslib@^2.3.0:
+tslib@^2.0.0, tslib@^2.0.1, tslib@^2.0.3, tslib@^2.1.0, tslib@^2.3.0:
version "2.3.1"
resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.3.1.tgz#e8a335add5ceae51aa261d32a490158ef042ef01"
integrity sha512-77EbyPPpMz+FRFRuAFlWMtmgUWGe9UOG2Z25NqCwiIjRhOf5iKGuzSe5P2w1laq+FkRy4p+PCuVkJSGkzTEKVw==
-tslib@~2.1.0:
- version "2.1.0"
- resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.1.0.tgz#da60860f1c2ecaa5703ab7d39bc05b6bf988b97a"
- integrity sha512-hcVC3wYEziELGGmEEXue7D75zbwIIVUMWAVbHItGPx0ziyXxrOMQx4rQEVEV45Ut/1IotuEvwqPopzIOkDMf0A==
-
tsutils@^3.21.0:
version "3.21.0"
resolved "https://registry.yarnpkg.com/tsutils/-/tsutils-3.21.0.tgz#b48717d394cea6c1e096983eed58e9d61715b623"
@@ -16508,11 +16715,9 @@ url@^0.11.0:
querystring "0.2.0"
use-composed-ref@^1.0.0:
- version "1.1.0"
- resolved "https://registry.yarnpkg.com/use-composed-ref/-/use-composed-ref-1.1.0.tgz#9220e4e94a97b7b02d7d27eaeab0b37034438bbc"
- integrity sha512-my1lNHGWsSDAhhVAT4MKs6IjBUtG6ZG11uUqexPH9PptiIZDQOzaF4f5tEbJ2+7qvNbtXNBbU3SfmN+fXlWDhg==
- dependencies:
- ts-essentials "^2.0.3"
+ version "1.2.1"
+ resolved "https://registry.yarnpkg.com/use-composed-ref/-/use-composed-ref-1.2.1.tgz#9bdcb5ccd894289105da2325e1210079f56bf849"
+ integrity sha512-6+X1FLlIcjvFMAeAD/hcxDT8tmyrWnbSPMU0EnxQuDLIxokuFzWliXBiYZuGIx+mrAMLBw0WFfCkaPw8ebzAhw==
use-isomorphic-layout-effect@^1.0.0:
version "1.1.1"
@@ -16860,7 +17065,7 @@ webpack-dev-middleware@^4.1.0:
range-parser "^1.2.1"
schema-utils "^3.0.0"
-webpack-dev-middleware@^5.2.1:
+webpack-dev-middleware@^5.3.0:
version "5.3.0"
resolved "https://registry.yarnpkg.com/webpack-dev-middleware/-/webpack-dev-middleware-5.3.0.tgz#8fc02dba6e72e1d373eca361623d84610f27be7c"
integrity sha512-MouJz+rXAm9B1OTOYaJnn6rtD/lWZPy2ufQCH3BPs8Rloh/Du6Jze4p7AeLYHkVi0giJnYLaSGDC7S+GM9arhg==
@@ -16872,10 +17077,15 @@ webpack-dev-middleware@^5.2.1:
schema-utils "^4.0.0"
webpack-dev-server@^4.6.0:
- version "4.6.0"
- resolved "https://registry.yarnpkg.com/webpack-dev-server/-/webpack-dev-server-4.6.0.tgz#e8648601c440172d9b6f248d28db98bed335315a"
- integrity sha512-oojcBIKvx3Ya7qs1/AVWHDgmP1Xml8rGsEBnSobxU/UJSX1xP1GPM3MwsAnDzvqcVmVki8tV7lbcsjEjk0PtYg==
+ version "4.7.2"
+ resolved "https://registry.yarnpkg.com/webpack-dev-server/-/webpack-dev-server-4.7.2.tgz#324b79046491f2cf0b9d9e275381198c8246b380"
+ integrity sha512-s6yEOSfPpB6g1T2+C5ZOUt5cQOMhjI98IVmmvMNb5cdiqHoxSUfACISHqU/wZy+q4ar/A9jW0pbNj7sa50XRVA==
dependencies:
+ "@types/bonjour" "^3.5.9"
+ "@types/connect-history-api-fallback" "^1.3.5"
+ "@types/serve-index" "^1.9.1"
+ "@types/sockjs" "^0.3.33"
+ "@types/ws" "^8.2.2"
ansi-html-community "^0.0.8"
bonjour "^3.5.0"
chokidar "^3.5.2"
@@ -16898,8 +17108,7 @@ webpack-dev-server@^4.6.0:
sockjs "^0.3.21"
spdy "^4.0.2"
strip-ansi "^7.0.0"
- url "^0.11.0"
- webpack-dev-middleware "^5.2.1"
+ webpack-dev-middleware "^5.3.0"
ws "^8.1.0"
webpack-filter-warnings-plugin@^1.2.1:
@@ -17233,9 +17442,9 @@ xterm@^3.8.0:
integrity sha512-DVmQ8jlEtL+WbBKUZuMxHMBgK/yeIZwkXB81bH+MGaKKnJGYwA+770hzhXPfwEIokK9On9YIFPRleVp/5G7z9g==
xterm@^4.13.0:
- version "4.15.0"
- resolved "https://registry.yarnpkg.com/xterm/-/xterm-4.15.0.tgz#e52038507eba7e0d36d47f81e29fe548c82b9561"
- integrity sha512-Ik1GoSq1yqKZQ2LF37RPS01kX9t4TP8gpamUYblD09yvWX5mEYuMK4CcqH6+plgiNEZduhTz/UrcaWs97gOlOw==
+ version "4.16.0"
+ resolved "https://registry.yarnpkg.com/xterm/-/xterm-4.16.0.tgz#af25223c72917438842121e1bcd1b60ffd7e8476"
+ integrity sha512-nAbuigL9CYkI075mdfqpnB8cHZNKxENCj1CQ9Tm5gSvWkMtkanmRN2mkHGjSaET1/3+X9BqISFFo7Pd2mXVjiQ==
y18n@^4.0.0:
version "4.0.3"
@@ -17311,9 +17520,9 @@ yargs@^16.2.0:
yargs-parser "^20.2.2"
yargs@^17.0.1:
- version "17.3.0"
- resolved "https://registry.yarnpkg.com/yargs/-/yargs-17.3.0.tgz#295c4ffd0eef148ef3e48f7a2e0f58d0e4f26b1c"
- integrity sha512-GQl1pWyDoGptFPJx9b9L6kmR33TGusZvXIZUT+BOz9f7X2L94oeAskFYLEg/FkhV06zZPBYLvLZRWeYId29lew==
+ version "17.3.1"
+ resolved "https://registry.yarnpkg.com/yargs/-/yargs-17.3.1.tgz#da56b28f32e2fd45aefb402ed9c26f42be4c07b9"
+ integrity sha512-WUANQeVgjLbNsEmGk20f+nlHgOqzRFpiGWVaBrYGYIGANIIu3lWjoyi0fNlFmJkvfhCZ6BXINe7/W2O2bV4iaA==
dependencies:
cliui "^7.0.2"
escalade "^3.1.1"