mirror of
https://github.com/elastic/kibana.git
synced 2025-04-23 17:28:26 -04:00
Bump redux (4.2.0), reselect (4.1.6), @reduxjs/toolkit (1.7.2), redux-thunk (2.4.1) and immer (9.0.15) (#138818)
* Upgrade Redux to 4.2.0 and Reselect to 4.1.6 * Fix typing in timelines TypedUseSelectorHook * Upgrade reduxjs-toolkit and fix types * Upgrade more dependencies and fix types * [CI] Auto-commit changed files from 'node scripts/eslint --no-cache --fix' * Undo unnecessary type fixes * Add renovate.json config for redux * Add caret to @reduxjs/toolkit version * Update package.json Co-authored-by: Patryk Kopyciński <contact@patrykkopycinski.com> * Update package.json Co-authored-by: Patryk Kopyciński <contact@patrykkopycinski.com> * Update package.json Co-authored-by: Patryk Kopyciński <contact@patrykkopycinski.com> * yarn bootstrap * Ts-ignore failing types in presentation_util redux_embeddables * Downgrade @reduxjs/toolkit to 1.7.2 * Undo ts-ignores in redux-embeddables * Remove CombinedState comment * Rebase onto main Co-authored-by: kibanamachine <42973632+kibanamachine@users.noreply.github.com> Co-authored-by: Patryk Kopyciński <contact@patrykkopycinski.com>
This commit is contained in:
parent
583c11bc47
commit
9307cacf7d
16 changed files with 148 additions and 122 deletions
10
package.json
10
package.json
|
@ -364,7 +364,7 @@
|
|||
"@opentelemetry/resources": "^1.4.0",
|
||||
"@opentelemetry/sdk-metrics-base": "^0.30.0",
|
||||
"@opentelemetry/semantic-conventions": "^1.4.0",
|
||||
"@reduxjs/toolkit": "^1.6.1",
|
||||
"@reduxjs/toolkit": "1.7.2",
|
||||
"@slack/webhook": "^5.0.4",
|
||||
"@tanstack/react-query": "^4.2.1",
|
||||
"@tanstack/react-query-devtools": "^4.2.1",
|
||||
|
@ -443,7 +443,7 @@
|
|||
"https-proxy-agent": "^5.0.0",
|
||||
"i18n-iso-countries": "^4.3.1",
|
||||
"icalendar": "0.7.1",
|
||||
"immer": "^9.0.6",
|
||||
"immer": "^9.0.15",
|
||||
"inquirer": "^7.3.3",
|
||||
"intl": "^1.2.5",
|
||||
"intl-format-cache": "^2.1.0",
|
||||
|
@ -544,18 +544,18 @@
|
|||
"react-visibility-sensor": "^5.1.1",
|
||||
"recompose": "^0.30.0",
|
||||
"reduce-reducers": "^1.0.4",
|
||||
"redux": "^4.1.0",
|
||||
"redux": "^4.2.0",
|
||||
"redux-actions": "^2.6.5",
|
||||
"redux-devtools-extension": "^2.13.8",
|
||||
"redux-logger": "^3.0.6",
|
||||
"redux-observable": "2.0.0",
|
||||
"redux-saga": "^1.1.3",
|
||||
"redux-thunk": "^2.3.0",
|
||||
"redux-thunk": "^2.4.1",
|
||||
"redux-thunks": "^1.0.0",
|
||||
"remark-parse": "^8.0.3",
|
||||
"remark-stringify": "^8.0.3",
|
||||
"require-in-the-middle": "^5.1.0",
|
||||
"reselect": "^4.0.0",
|
||||
"reselect": "^4.1.6",
|
||||
"resize-observer-polyfill": "^1.5.1",
|
||||
"rison-node": "1.0.2",
|
||||
"rrule": "2.6.4",
|
||||
|
|
|
@ -108,7 +108,6 @@ TYPES_DEPS = [
|
|||
"@npm//@types/prettier",
|
||||
"@npm//@types/react",
|
||||
"@npm//@types/react-dom",
|
||||
"@npm//@types/react-redux",
|
||||
"@npm//@types/react-router-dom",
|
||||
"@npm//@types/semver",
|
||||
"@npm//@types/xml2js",
|
||||
|
|
|
@ -121,7 +121,6 @@ TYPES_DEPS = [
|
|||
"@npm//@types/node",
|
||||
"@npm//@types/prettier",
|
||||
"@npm//@types/react-dom",
|
||||
"@npm//@types/react-redux",
|
||||
"@npm//@types/react-router-dom",
|
||||
"@npm//@types/semver",
|
||||
"@npm//@types/supertest",
|
||||
|
|
|
@ -191,6 +191,22 @@
|
|||
"matchBaseBranches": ["main"],
|
||||
"labels": ["release_note:skip", "backport:skip", "ci:all-cypress-suites"],
|
||||
"enabled": true
|
||||
},
|
||||
{
|
||||
"groupName": "redux",
|
||||
"packageNames": ["redux", "react-redux"],
|
||||
"reviewers":[
|
||||
"team:enterprise-search-frontend",
|
||||
"team:kibana-presentation",
|
||||
"team:kibana-data-discovery",
|
||||
"team:platform-deployment-management",
|
||||
"team:infra-monitoring-ui",
|
||||
"team:kibana-gis",
|
||||
"team:security-solution"
|
||||
],
|
||||
"matchBaseBranches": ["main"],
|
||||
"labels": ["release_note:skip", "backport:skip", "ci:all-cypress-suites"],
|
||||
"enabled": true
|
||||
}
|
||||
]
|
||||
}
|
||||
|
|
|
@ -22,7 +22,7 @@ import type { ManagementPluginState } from '../../management';
|
|||
import type { UsersPluginState } from '../../users/store';
|
||||
import type { GlobalUrlParam } from './global_url_param';
|
||||
|
||||
export type StoreState = HostsPluginState &
|
||||
export type State = HostsPluginState &
|
||||
UsersPluginState &
|
||||
NetworkPluginState &
|
||||
UsersPluginState &
|
||||
|
@ -34,13 +34,6 @@ export type StoreState = HostsPluginState &
|
|||
sourcerer: SourcererState;
|
||||
globalUrlParam: GlobalUrlParam;
|
||||
};
|
||||
/**
|
||||
* The redux `State` type for the Security App.
|
||||
* We use `CombinedState` to wrap our shape because we create our reducer using `combineReducers`.
|
||||
* `combineReducers` returns a type wrapped in `CombinedState`.
|
||||
* `CombinedState` is required for redux to know what keys to make optional when preloaded state into a store.
|
||||
*/
|
||||
export type State = CombinedState<StoreState>;
|
||||
|
||||
/**
|
||||
* like redux's `MiddlewareAPI` but `getState` returns an `Immutable` version of
|
||||
|
|
|
@ -174,7 +174,7 @@ export const showView: (state: EndpointState) => EndpointIndexUIQueryParams['sho
|
|||
* Returns the Host Status which is connected the fleet agent
|
||||
*/
|
||||
export const hostStatusInfo: (state: Immutable<EndpointState>) => HostStatus = createSelector(
|
||||
(state) => state.hostStatus,
|
||||
(state: Immutable<EndpointState>) => state.hostStatus,
|
||||
(hostStatus) => {
|
||||
return hostStatus ? hostStatus : HostStatus.UNHEALTHY;
|
||||
}
|
||||
|
@ -184,7 +184,7 @@ export const hostStatusInfo: (state: Immutable<EndpointState>) => HostStatus = c
|
|||
* Returns the Policy Response overall status
|
||||
*/
|
||||
export const policyResponseStatus: (state: Immutable<EndpointState>) => string = createSelector(
|
||||
(state) => state.policyResponse,
|
||||
(state: Immutable<EndpointState>) => state.policyResponse,
|
||||
(policyResponse) => {
|
||||
return (policyResponse && policyResponse?.Endpoint?.policy?.applied?.status) || '';
|
||||
}
|
||||
|
|
|
@ -105,7 +105,7 @@ export const license = (state: Immutable<PolicyDetailsState>) => {
|
|||
|
||||
/** Returns the policyId from the url */
|
||||
export const policyIdFromParams: (state: Immutable<PolicyDetailsState>) => string = createSelector(
|
||||
(state) => state.location,
|
||||
(state: Immutable<PolicyDetailsState>) => state.location,
|
||||
(location: PolicyDetailsState['location']) => {
|
||||
return (
|
||||
matchPath<ManagementRoutePolicyDetailsParams>(location?.pathname ?? '', {
|
||||
|
|
|
@ -62,9 +62,7 @@ export const useNetworkTls = ({
|
|||
type,
|
||||
}: UseNetworkTls): [boolean, NetworkTlsArgs] => {
|
||||
const getTlsSelector = useMemo(() => networkSelectors.tlsSelector(), []);
|
||||
const { activePage, limit, sort } = useDeepEqualSelector((state) =>
|
||||
getTlsSelector(state, type, flowTarget)
|
||||
);
|
||||
const { activePage, limit, sort } = useDeepEqualSelector((state) => getTlsSelector(state, type));
|
||||
|
||||
const [networkTlsRequest, setNetworkTlsRequest] = useState<NetworkTlsRequestOptions | null>(null);
|
||||
|
||||
|
|
|
@ -64,8 +64,8 @@ function animationIsActive(animation: CameraAnimationState, time: number): boole
|
|||
*
|
||||
*/
|
||||
export const scale: (state: CameraState) => (time: number) => Vector2 = createSelector(
|
||||
(state) => state.scalingFactor,
|
||||
(state) => state.animation,
|
||||
(state: CameraState) => state.scalingFactor,
|
||||
(state: CameraState) => state.animation,
|
||||
(scalingFactor, animation) => {
|
||||
const scaleNotCountingAnimation = scaleFromScalingFactor(scalingFactor);
|
||||
/**
|
||||
|
@ -277,7 +277,7 @@ export const scale: (state: CameraState) => (time: number) => Vector2 = createSe
|
|||
*/
|
||||
export const clippingPlanes: (state: CameraState) => (time: number) => ClippingPlanes =
|
||||
createSelector(
|
||||
(state) => state.rasterSize,
|
||||
(state: CameraState) => state.rasterSize,
|
||||
scale,
|
||||
(rasterSize, scaleAtTime) =>
|
||||
/**
|
||||
|
@ -305,7 +305,7 @@ export const clippingPlanes: (state: CameraState) => (time: number) => ClippingP
|
|||
* Whether or not the camera is animating, at a given time.
|
||||
*/
|
||||
export const isAnimating: (state: CameraState) => (time: number) => boolean = createSelector(
|
||||
(state) => state.animation,
|
||||
(state: CameraState) => state.animation,
|
||||
(animation) => (time) => {
|
||||
return animation !== undefined && animationIsActive(animation, time);
|
||||
}
|
||||
|
@ -324,10 +324,10 @@ export const isAnimating: (state: CameraState) => (time: number) => boolean = cr
|
|||
* We could update the translation as the user moved the mouse but floating point drift (round-off error) could occur.
|
||||
*/
|
||||
export const translation: (state: CameraState) => (time: number) => Vector2 = createSelector(
|
||||
(state) => state.panning,
|
||||
(state) => state.translationNotCountingCurrentPanning,
|
||||
(state: CameraState) => state.panning,
|
||||
(state: CameraState) => state.translationNotCountingCurrentPanning,
|
||||
scale,
|
||||
(state) => state.animation,
|
||||
(state: CameraState) => state.animation,
|
||||
(panning, translationNotCountingCurrentPanning, scaleAtTime, animation) => {
|
||||
/**
|
||||
* Memoizing this for object reference equality.
|
||||
|
|
|
@ -554,28 +554,9 @@ export const nodesAndEdgelines: (state: DataState) => (
|
|||
processNodePositions: visibleProcessNodePositions,
|
||||
connectingEdgeLineSegments,
|
||||
};
|
||||
}, aaBBEqualityCheck);
|
||||
}, aabbModel.isEqual);
|
||||
});
|
||||
|
||||
function isAABBType(value: unknown): value is AABB {
|
||||
const castValue = value as AABB;
|
||||
return castValue.maximum !== undefined && castValue.minimum !== undefined;
|
||||
}
|
||||
|
||||
/**
|
||||
* This is needed to avoid the TS error that is caused by using aabbModel.isEqual directly. Ideally we could
|
||||
* just pass that function instead of having to check the type of the parameters. It might be worth doing a PR to
|
||||
* the reselect library to correct the type.
|
||||
*/
|
||||
function aaBBEqualityCheck<T>(a: T, b: T, index: number): boolean {
|
||||
if (isAABBType(a) && isAABBType(b)) {
|
||||
return aabbModel.isEqual(a, b);
|
||||
} else {
|
||||
// this is equivalent to the default equality check for defaultMemoize
|
||||
return a === b;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* If there is a pending request that's for a entity ID that doesn't matche the `entityID`, then we should cancel it.
|
||||
*/
|
||||
|
|
|
@ -9,7 +9,13 @@ import { createSelector, defaultMemoize } from 'reselect';
|
|||
import * as cameraSelectors from './camera/selectors';
|
||||
import * as dataSelectors from './data/selectors';
|
||||
import * as uiSelectors from './ui/selectors';
|
||||
import type { ResolverState, IsometricTaxiLayout, DataState } from '../types';
|
||||
import type {
|
||||
ResolverState,
|
||||
IsometricTaxiLayout,
|
||||
DataState,
|
||||
VisibleEntites,
|
||||
NodeData,
|
||||
} from '../types';
|
||||
import type { EventStats } from '../../../common/endpoint/types';
|
||||
import * as nodeModel from '../../../common/endpoint/models/node';
|
||||
|
||||
|
@ -211,14 +217,9 @@ export const statsTotalForNode = composeSelectors(
|
|||
export const visibleNodesAndEdgeLines = createSelector(
|
||||
nodesAndEdgelines,
|
||||
boundingBox,
|
||||
function (
|
||||
/* eslint-disable @typescript-eslint/no-shadow */
|
||||
nodesAndEdgelines,
|
||||
boundingBox
|
||||
/* eslint-enable @typescript-eslint/no-shadow */
|
||||
) {
|
||||
function (nodesAndEdgelinesFn, boundingBoxFn) {
|
||||
// `boundingBox` and `nodesAndEdgelines` are each memoized.
|
||||
return (time: number) => nodesAndEdgelines(boundingBox(time));
|
||||
return (time: number) => nodesAndEdgelinesFn(boundingBoxFn(time));
|
||||
}
|
||||
);
|
||||
|
||||
|
@ -240,12 +241,13 @@ export const originID: (state: ResolverState) => string | undefined = composeSel
|
|||
* Takes a nodeID (aka entity_id) and returns the node ID of the node that aria should 'flowto' or null
|
||||
* If the node has a flowto candidate that is currently visible, that will be returned, otherwise null.
|
||||
*/
|
||||
export const ariaFlowtoNodeID: (
|
||||
state: ResolverState
|
||||
) => (time: number) => (nodeID: string) => string | null = createSelector(
|
||||
export const ariaFlowtoNodeID = createSelector(
|
||||
visibleNodesAndEdgeLines,
|
||||
composeSelectors(dataStateSelector, dataSelectors.ariaFlowtoCandidate),
|
||||
(visibleNodesAndEdgeLinesAtTime, ariaFlowtoCandidate) => {
|
||||
function (
|
||||
visibleNodesAndEdgeLinesAtTime: (time: number) => VisibleEntites,
|
||||
ariaFlowtoCandidate: (nodeId: string) => string | null
|
||||
) {
|
||||
return defaultMemoize((time: number) => {
|
||||
// get the visible nodes at `time`
|
||||
const { processNodePositions } = visibleNodesAndEdgeLinesAtTime(time);
|
||||
|
@ -361,7 +363,10 @@ export const newIDsToRequest: (state: ResolverState) => (time: number) => Set<st
|
|||
createSelector(
|
||||
composeSelectors(dataStateSelector, (dataState: DataState) => dataState.nodeData),
|
||||
visibleNodesAndEdgeLines,
|
||||
function (nodeData, visibleNodesAndEdgeLinesAtTime) {
|
||||
function (
|
||||
nodeData: Map<string, NodeData> | undefined,
|
||||
visibleNodesAndEdgeLinesAtTime: (time: number) => VisibleEntites
|
||||
) {
|
||||
return defaultMemoize((time: number) => {
|
||||
const { processNodePositions: nodesInView } = visibleNodesAndEdgeLinesAtTime(time);
|
||||
|
||||
|
|
|
@ -7,16 +7,30 @@
|
|||
|
||||
import { combineReducers } from '@reduxjs/toolkit';
|
||||
|
||||
import { syntheticsMonitorReducer } from './monitor_summary/synthetics_montior_reducer';
|
||||
import { monitorStatusReducer } from './monitor_summary';
|
||||
import { uiReducer } from './ui';
|
||||
import { indexStatusReducer } from './index_status';
|
||||
import { syntheticsEnablementReducer } from './synthetics_enablement';
|
||||
import { monitorListReducer } from './monitor_list';
|
||||
import { serviceLocationsReducer } from './service_locations';
|
||||
import { monitorOverviewReducer } from './overview';
|
||||
import {
|
||||
syntheticsMonitorReducer,
|
||||
SyntheticsMonitorState,
|
||||
} from './monitor_summary/synthetics_montior_reducer';
|
||||
import { monitorStatusReducer, MonitorSummaryState } from './monitor_summary';
|
||||
import { uiReducer, UiState } from './ui';
|
||||
import { indexStatusReducer, IndexStatusState } from './index_status';
|
||||
import { syntheticsEnablementReducer, SyntheticsEnablementState } from './synthetics_enablement';
|
||||
import { monitorListReducer, MonitorListState } from './monitor_list';
|
||||
import { serviceLocationsReducer, ServiceLocationsState } from './service_locations';
|
||||
import { monitorOverviewReducer, MonitorOverviewState } from './overview';
|
||||
|
||||
export const rootReducer = combineReducers({
|
||||
export interface SyntheticsAppState {
|
||||
ui: UiState;
|
||||
indexStatus: IndexStatusState;
|
||||
syntheticsEnablement: SyntheticsEnablementState;
|
||||
monitorList: MonitorListState;
|
||||
serviceLocations: ServiceLocationsState;
|
||||
monitorStatus: MonitorSummaryState;
|
||||
syntheticsMonitor: SyntheticsMonitorState;
|
||||
overview: MonitorOverviewState;
|
||||
}
|
||||
|
||||
export const rootReducer = combineReducers<SyntheticsAppState>({
|
||||
ui: uiReducer,
|
||||
indexStatus: indexStatusReducer,
|
||||
syntheticsEnablement: syntheticsEnablementReducer,
|
||||
|
@ -26,5 +40,3 @@ export const rootReducer = combineReducers({
|
|||
syntheticsMonitor: syntheticsMonitorReducer,
|
||||
overview: monitorOverviewReducer,
|
||||
});
|
||||
|
||||
export type SyntheticsAppState = ReturnType<typeof rootReducer>;
|
||||
|
|
|
@ -11,9 +11,9 @@ import { composeWithDevTools } from 'redux-devtools-extension';
|
|||
import createSagaMiddleware from 'redux-saga';
|
||||
import { Storage } from '@kbn/kibana-utils-plugin/public';
|
||||
import { rootEffect } from './effects';
|
||||
import { rootReducer } from './reducers';
|
||||
import { rootReducer, RootState } from './reducers';
|
||||
|
||||
export type AppState = ReturnType<typeof rootReducer>;
|
||||
export type AppState = RootState;
|
||||
|
||||
const sagaMW = createSagaMiddleware();
|
||||
|
||||
|
|
|
@ -6,27 +6,50 @@
|
|||
*/
|
||||
|
||||
import { combineReducers } from 'redux';
|
||||
import { agentPoliciesReducer } from '../private_locations';
|
||||
import { monitorReducer } from './monitor';
|
||||
import { uiReducer } from './ui';
|
||||
import { monitorStatusReducer } from './monitor_status';
|
||||
import { monitorListReducer } from './monitor_list';
|
||||
import { dynamicSettingsReducer } from './dynamic_settings';
|
||||
import { pingReducer } from './ping';
|
||||
import { pingListReducer } from './ping_list';
|
||||
import { monitorDurationReducer } from './monitor_duration';
|
||||
import { indexStatusReducer } from './index_status';
|
||||
import { mlJobsReducer } from './ml_anomaly';
|
||||
import { certificatesReducer } from '../certificates/certificates';
|
||||
import { agentPoliciesReducer, AgentPoliciesState } from '../private_locations';
|
||||
import { monitorReducer, MonitorState } from './monitor';
|
||||
import { uiReducer, UiState } from './ui';
|
||||
import { monitorStatusReducer, MonitorStatusState } from './monitor_status';
|
||||
import { monitorListReducer, MonitorList } from './monitor_list';
|
||||
import { dynamicSettingsReducer, DynamicSettingsState } from './dynamic_settings';
|
||||
import { pingReducer, PingState } from './ping';
|
||||
import { pingListReducer, PingListState } from './ping_list';
|
||||
import { monitorDurationReducer, MonitorDuration } from './monitor_duration';
|
||||
import { indexStatusReducer, IndexStatusState } from './index_status';
|
||||
import { mlJobsReducer, MLJobState } from './ml_anomaly';
|
||||
import { certificatesReducer, CertificatesState } from '../certificates/certificates';
|
||||
import { selectedFiltersReducer } from './selected_filters';
|
||||
import { alertsReducer } from '../alerts/alerts';
|
||||
import { journeyReducer } from './journey';
|
||||
import { networkEventsReducer } from './network_events';
|
||||
import { syntheticsReducer } from './synthetics';
|
||||
import { monitorManagementListReducer } from './monitor_management';
|
||||
import { testNowRunsReducer } from './test_now_runs';
|
||||
import { SelectedFilters } from '../actions/selected_filters';
|
||||
import { alertsReducer, AlertState } from '../alerts/alerts';
|
||||
import { JourneyKVP, journeyReducer } from './journey';
|
||||
import { networkEventsReducer, NetworkEventsState } from './network_events';
|
||||
import { syntheticsReducer, SyntheticsReducerState } from './synthetics';
|
||||
import { monitorManagementListReducer, MonitorManagementList } from './monitor_management';
|
||||
import { testNowRunsReducer, TestNowRunsState } from './test_now_runs';
|
||||
|
||||
export const rootReducer = combineReducers({
|
||||
export interface RootState {
|
||||
monitor: MonitorState;
|
||||
ui: UiState;
|
||||
monitorList: MonitorList;
|
||||
monitorManagementList: MonitorManagementList;
|
||||
monitorStatus: MonitorStatusState;
|
||||
dynamicSettings: DynamicSettingsState;
|
||||
ping: PingState;
|
||||
pingList: PingListState;
|
||||
ml: MLJobState;
|
||||
monitorDuration: MonitorDuration;
|
||||
indexStatus: IndexStatusState;
|
||||
certificates: CertificatesState;
|
||||
selectedFilters: SelectedFilters | null;
|
||||
alerts: AlertState;
|
||||
journeys: JourneyKVP;
|
||||
networkEvents: NetworkEventsState;
|
||||
synthetics: SyntheticsReducerState;
|
||||
testNowRuns: TestNowRunsState;
|
||||
agentPolicies: AgentPoliciesState;
|
||||
}
|
||||
|
||||
export const rootReducer = combineReducers<RootState>({
|
||||
monitor: monitorReducer,
|
||||
ui: uiReducer,
|
||||
monitorList: monitorListReducer,
|
||||
|
|
|
@ -8,7 +8,7 @@
|
|||
import { shallowEqual, useSelector } from 'react-redux';
|
||||
import deepEqual from 'fast-deep-equal';
|
||||
|
||||
export type TypedUseSelectorHook = <TSelected, TState = unknown>(
|
||||
export type TypedUseSelectorHook = <TSelected, TState extends Record<string, unknown>>(
|
||||
selector: (state: TState) => TSelected,
|
||||
equalityFn?: (left: TSelected, right: TSelected) => boolean
|
||||
) => TSelected;
|
||||
|
|
56
yarn.lock
56
yarn.lock
|
@ -4636,15 +4636,15 @@
|
|||
resolved "https://registry.yarnpkg.com/@redux-saga/types/-/types-1.1.0.tgz#0e81ce56b4883b4b2a3001ebe1ab298b84237204"
|
||||
integrity sha512-afmTuJrylUU/0OtqzaRkbyYFFNgCF73Bvel/sw90pvGrWIZ+vyoIJqA6eMSoA6+nb443kTmulmBtC9NerXboNg==
|
||||
|
||||
"@reduxjs/toolkit@^1.6.1":
|
||||
version "1.6.1"
|
||||
resolved "https://registry.yarnpkg.com/@reduxjs/toolkit/-/toolkit-1.6.1.tgz#7bc83b47352a663bf28db01e79d17ba54b98ade9"
|
||||
integrity sha512-pa3nqclCJaZPAyBhruQtiRwtTjottRrVJqziVZcWzI73i6L3miLTtUyWfauwv08HWtiXLx1xGyGt+yLFfW/d0A==
|
||||
"@reduxjs/toolkit@1.7.2":
|
||||
version "1.7.2"
|
||||
resolved "https://registry.yarnpkg.com/@reduxjs/toolkit/-/toolkit-1.7.2.tgz#b428aaef92582379464f9de698dbb71957eafb02"
|
||||
integrity sha512-wwr3//Ar8ZhM9bS58O+HCIaMlR4Y6SNHfuszz9hKnQuFIKvwaL3Kmjo6fpDKUOjo4Lv54Yi299ed8rofCJ/Vjw==
|
||||
dependencies:
|
||||
immer "^9.0.1"
|
||||
redux "^4.1.0"
|
||||
redux-thunk "^2.3.0"
|
||||
reselect "^4.0.0"
|
||||
immer "^9.0.7"
|
||||
redux "^4.1.2"
|
||||
redux-thunk "^2.4.1"
|
||||
reselect "^4.1.5"
|
||||
|
||||
"@samverschueren/stream-to-observable@^0.3.0":
|
||||
version "0.3.0"
|
||||
|
@ -16829,10 +16829,10 @@ immediate@~3.0.5:
|
|||
resolved "https://registry.yarnpkg.com/immediate/-/immediate-3.0.6.tgz#9db1dbd0faf8de6fbe0f5dd5e56bb606280de69b"
|
||||
integrity sha1-nbHb0Pr43m++D13V5Wu2BigN5ps=
|
||||
|
||||
immer@^9.0.1, immer@^9.0.6:
|
||||
version "9.0.6"
|
||||
resolved "https://registry.yarnpkg.com/immer/-/immer-9.0.6.tgz#7a96bf2674d06c8143e327cbf73539388ddf1a73"
|
||||
integrity sha512-G95ivKpy+EvVAnAab4fVa4YGYn24J1SpEktnJX7JJ45Bd7xqME/SCplFzYFmTbrkwZbQ4xJK1xMTUYBkN6pWsQ==
|
||||
immer@^9.0.15, immer@^9.0.7:
|
||||
version "9.0.15"
|
||||
resolved "https://registry.yarnpkg.com/immer/-/immer-9.0.15.tgz#0b9169e5b1d22137aba7d43f8a81a495dd1b62dc"
|
||||
integrity sha512-2eB/sswms9AEUSkOm4SbV5Y7Vmt/bKRwByd52jfLkW4OLYeaTP3EEiJ9agqU0O/tq6Dk62Zfj+TJSqfm1rLVGQ==
|
||||
|
||||
import-fresh@^2.0.0:
|
||||
version "2.0.0"
|
||||
|
@ -20935,7 +20935,7 @@ oauth-sign@~0.9.0:
|
|||
object-assign@4.X, object-assign@^4, object-assign@^4.0.1, object-assign@^4.1.0, object-assign@^4.1.1:
|
||||
version "4.1.1"
|
||||
resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863"
|
||||
integrity sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=
|
||||
integrity sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==
|
||||
|
||||
object-assign@^3.0.0:
|
||||
version "3.0.0"
|
||||
|
@ -23853,20 +23853,20 @@ redux-saga@^1.1.3:
|
|||
dependencies:
|
||||
"@redux-saga/core" "^1.1.3"
|
||||
|
||||
redux-thunk@^2.3.0:
|
||||
version "2.3.0"
|
||||
resolved "https://registry.yarnpkg.com/redux-thunk/-/redux-thunk-2.3.0.tgz#51c2c19a185ed5187aaa9a2d08b666d0d6467622"
|
||||
integrity sha512-km6dclyFnmcvxhAcrQV2AkZmPQjzPDjgVlQtR0EQjxZPyJ0BnMf3in1ryuR8A2qU0HldVRfxYXbFSKlI3N7Slw==
|
||||
redux-thunk@^2.4.1:
|
||||
version "2.4.1"
|
||||
resolved "https://registry.yarnpkg.com/redux-thunk/-/redux-thunk-2.4.1.tgz#0dd8042cf47868f4b29699941de03c9301a75714"
|
||||
integrity sha512-OOYGNY5Jy2TWvTL1KgAlVy6dcx3siPJ1wTq741EPyUKfn6W6nChdICjZwCd0p8AZBs5kWpZlbkXW2nE/zjUa+Q==
|
||||
|
||||
redux-thunks@^1.0.0:
|
||||
version "1.0.0"
|
||||
resolved "https://registry.yarnpkg.com/redux-thunks/-/redux-thunks-1.0.0.tgz#56e03b86d281a2664c884ab05c543d9ab1673658"
|
||||
integrity sha1-VuA7htKBomZMiEqwXFQ9mrFnNlg=
|
||||
|
||||
redux@^4.0.0, redux@^4.0.4, redux@^4.1.0:
|
||||
version "4.1.1"
|
||||
resolved "https://registry.yarnpkg.com/redux/-/redux-4.1.1.tgz#76f1c439bb42043f985fbd9bf21990e60bd67f47"
|
||||
integrity sha512-hZQZdDEM25UY2P493kPYuKqviVwZ58lEmGQNeQ+gXa+U0gYPUBf7NKYazbe3m+bs/DzM/ahN12DbF+NG8i0CWw==
|
||||
redux@^4.0.0, redux@^4.0.4, redux@^4.1.2, redux@^4.2.0:
|
||||
version "4.2.0"
|
||||
resolved "https://registry.yarnpkg.com/redux/-/redux-4.2.0.tgz#46f10d6e29b6666df758780437651eeb2b969f13"
|
||||
integrity sha512-oSBmcKKIuIR4ME29/AeNUnl5L+hvBq7OaJWzaptTQJAntaPvxIJqfnjbaEiCzzaIz+XmVILfqAM3Ob0aXLPfjA==
|
||||
dependencies:
|
||||
"@babel/runtime" "^7.9.2"
|
||||
|
||||
|
@ -23912,9 +23912,9 @@ regenerator-runtime@^0.11.0:
|
|||
integrity sha512-MguG95oij0fC3QV3URf4V2SDYGJhJnJGqvIIgdECeODCT98wSWDAJ94SSuVpYQUoTcGUIL6L4yNB7j1DFFHSBg==
|
||||
|
||||
regenerator-runtime@^0.13.1, regenerator-runtime@^0.13.4, regenerator-runtime@^0.13.7:
|
||||
version "0.13.7"
|
||||
resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.13.7.tgz#cac2dacc8a1ea675feaabaeb8ae833898ae46f55"
|
||||
integrity sha512-a54FxoJDIr27pgf7IgeQGxmqUNYrcV338lf/6gH456HZ/PhX+5BcwHXG9ajESmwe6WRO0tAzRUrRmNONWgkrew==
|
||||
version "0.13.9"
|
||||
resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.13.9.tgz#8925742a98ffd90814988d7566ad30ca3b263b52"
|
||||
integrity sha512-p3VT+cOEgxFsRRA9X4lkI1E+k2/CtnKtU4gcxyaCUreilL/vqI6CdZ3wxVUx3UOUg+gnUOQQcRI7BmSI656MYA==
|
||||
|
||||
regenerator-transform@^0.15.0:
|
||||
version "0.15.0"
|
||||
|
@ -24313,10 +24313,10 @@ requires-port@^1.0.0:
|
|||
resolved "https://registry.yarnpkg.com/requires-port/-/requires-port-1.0.0.tgz#925d2601d39ac485e091cf0da5c6e694dc3dcaff"
|
||||
integrity sha1-kl0mAdOaxIXgkc8NpcbmlNw9yv8=
|
||||
|
||||
reselect@^4.0.0:
|
||||
version "4.0.0"
|
||||
resolved "https://registry.yarnpkg.com/reselect/-/reselect-4.0.0.tgz#f2529830e5d3d0e021408b246a206ef4ea4437f7"
|
||||
integrity sha512-qUgANli03jjAyGlnbYVAV5vvnOmJnODyABz51RdBN7M4WaVu8mecZWgyQNkG8Yqe3KRGRt0l4K4B3XVEULC4CA==
|
||||
reselect@^4.0.0, reselect@^4.1.5, reselect@^4.1.6:
|
||||
version "4.1.6"
|
||||
resolved "https://registry.yarnpkg.com/reselect/-/reselect-4.1.6.tgz#19ca2d3d0b35373a74dc1c98692cdaffb6602656"
|
||||
integrity sha512-ZovIuXqto7elwnxyXbBtCPo9YFEr3uJqj2rRbcOOog1bmu2Ag85M4hixSwFWyaBMKXNgvPaJ9OSu9SkBPIeJHQ==
|
||||
|
||||
resize-observer-polyfill@^1.5.1:
|
||||
version "1.5.1"
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue