Phecda

feat: add Redux toolchain except saga

1 -/**  
2 - * Sample React Native App  
3 - * https://github.com/facebook/react-native  
4 - *  
5 - * Generated with the TypeScript template  
6 - * https://github.com/react-native-community/react-native-template-typescript  
7 - *  
8 - * @format  
9 - */  
10 -  
11 import React from 'react'; 1 import React from 'react';
  2 +import { Provider as ReduxProvider } from 'react-redux';
  3 +import { PersistGate } from 'redux-persist/integration/react';
12 import { DarkModeProvider } from 'react-native-dark-mode'; 4 import { DarkModeProvider } from 'react-native-dark-mode';
13 import { enableScreens } from 'react-native-screens'; 5 import { enableScreens } from 'react-native-screens';
14 import { enableES5 } from 'immer'; 6 import { enableES5 } from 'immer';
15 import AppNavigationContainer from './src/screen/AppNavigationContainer'; 7 import AppNavigationContainer from './src/screen/AppNavigationContainer';
16 import { I18NProvider } from './src/i18n'; 8 import { I18NProvider } from './src/i18n';
17 import { Platform } from 'react-native'; 9 import { Platform } from 'react-native';
  10 +import { store, persistor } from './src/store';
18 11
19 declare var global: { HermesInternal: null | {} }; 12 declare var global: { HermesInternal: null | {} };
20 if (Platform.OS === 'android' && global.HermesInternal) { 13 if (Platform.OS === 'android' && global.HermesInternal) {
@@ -33,11 +26,15 @@ enableScreens(); @@ -33,11 +26,15 @@ enableScreens();
33 26
34 const App = () => { 27 const App = () => {
35 return ( 28 return (
  29 + <ReduxProvider store={store}>
  30 + <PersistGate persistor={persistor}>
36 <I18NProvider> 31 <I18NProvider>
37 <DarkModeProvider> 32 <DarkModeProvider>
38 <AppNavigationContainer /> 33 <AppNavigationContainer />
39 </DarkModeProvider> 34 </DarkModeProvider>
40 </I18NProvider> 35 </I18NProvider>
  36 + </PersistGate>
  37 + </ReduxProvider>
41 ); 38 );
42 }; 39 };
43 40
@@ -318,6 +318,8 @@ PODS: @@ -318,6 +318,8 @@ PODS:
318 - React 318 - React
319 - ReactNativeDarkMode (0.2.2): 319 - ReactNativeDarkMode (0.2.2):
320 - React 320 - React
  321 + - RNCAsyncStorage (1.9.0):
  322 + - React
321 - RNCMaskedView (0.1.7): 323 - RNCMaskedView (0.1.7):
322 - React 324 - React
323 - RNDeviceInfo (5.5.4): 325 - RNDeviceInfo (5.5.4):
@@ -395,6 +397,7 @@ DEPENDENCIES: @@ -395,6 +397,7 @@ DEPENDENCIES:
395 - ReactCommon/turbomodule/core (from `../node_modules/react-native/ReactCommon`) 397 - ReactCommon/turbomodule/core (from `../node_modules/react-native/ReactCommon`)
396 - "ReactNativeART (from `../node_modules/@react-native-community/art`)" 398 - "ReactNativeART (from `../node_modules/@react-native-community/art`)"
397 - ReactNativeDarkMode (from `../node_modules/react-native-dark-mode`) 399 - ReactNativeDarkMode (from `../node_modules/react-native-dark-mode`)
  400 + - "RNCAsyncStorage (from `../node_modules/@react-native-community/async-storage`)"
398 - "RNCMaskedView (from `../node_modules/@react-native-community/masked-view`)" 401 - "RNCMaskedView (from `../node_modules/@react-native-community/masked-view`)"
399 - RNDeviceInfo (from `../node_modules/react-native-device-info`) 402 - RNDeviceInfo (from `../node_modules/react-native-device-info`)
400 - RNGestureHandler (from `../node_modules/react-native-gesture-handler`) 403 - RNGestureHandler (from `../node_modules/react-native-gesture-handler`)
@@ -493,6 +496,8 @@ EXTERNAL SOURCES: @@ -493,6 +496,8 @@ EXTERNAL SOURCES:
493 :path: "../node_modules/@react-native-community/art" 496 :path: "../node_modules/@react-native-community/art"
494 ReactNativeDarkMode: 497 ReactNativeDarkMode:
495 :path: "../node_modules/react-native-dark-mode" 498 :path: "../node_modules/react-native-dark-mode"
  499 + RNCAsyncStorage:
  500 + :path: "../node_modules/@react-native-community/async-storage"
496 RNCMaskedView: 501 RNCMaskedView:
497 :path: "../node_modules/@react-native-community/masked-view" 502 :path: "../node_modules/@react-native-community/masked-view"
498 RNDeviceInfo: 503 RNDeviceInfo:
@@ -564,6 +569,7 @@ SPEC CHECKSUMS: @@ -564,6 +569,7 @@ SPEC CHECKSUMS:
564 ReactCommon: 3585806280c51d5c2c0d3aa5a99014c3badb629d 569 ReactCommon: 3585806280c51d5c2c0d3aa5a99014c3badb629d
565 ReactNativeART: 78edc68dd4a1e675338cd0cd113319cf3a65f2ab 570 ReactNativeART: 78edc68dd4a1e675338cd0cd113319cf3a65f2ab
566 ReactNativeDarkMode: 0178ffca3b10f6a7c9f49d6f9810232b328fa949 571 ReactNativeDarkMode: 0178ffca3b10f6a7c9f49d6f9810232b328fa949
  572 + RNCAsyncStorage: 453cd7c335ec9ba3b877e27d02238956b76f3268
567 RNCMaskedView: 76c40a1d41c3e2535df09246a2b5487f04de0814 573 RNCMaskedView: 76c40a1d41c3e2535df09246a2b5487f04de0814
568 RNDeviceInfo: 6a3d16fce033f6979c4a6a41e62244d183e8c765 574 RNDeviceInfo: 6a3d16fce033f6979c4a6a41e62244d183e8c765
569 RNGestureHandler: 8f09cd560f8d533eb36da5a6c5a843af9f056b38 575 RNGestureHandler: 8f09cd560f8d533eb36da5a6c5a843af9f056b38
@@ -16,6 +16,7 @@ @@ -16,6 +16,7 @@
16 "@huse/previous-value": "^1.0.1", 16 "@huse/previous-value": "^1.0.1",
17 "@phecdas/react-native-code": "^1.0.0-1", 17 "@phecdas/react-native-code": "^1.0.0-1",
18 "@react-native-community/art": "^1.2.0", 18 "@react-native-community/art": "^1.2.0",
  19 + "@react-native-community/async-storage": "^1.9.0",
19 "@react-native-community/masked-view": "^0.1.7", 20 "@react-native-community/masked-view": "^0.1.7",
20 "@react-native-community/netinfo": "^5.7.1", 21 "@react-native-community/netinfo": "^5.7.1",
21 "@react-navigation/bottom-tabs": "^5.2.5", 22 "@react-navigation/bottom-tabs": "^5.2.5",
@@ -43,6 +44,11 @@ @@ -43,6 +44,11 @@
43 "react-native-tab-view": "^2.13.0", 44 "react-native-tab-view": "^2.13.0",
44 "react-native-vector-icons": "^6.6.0", 45 "react-native-vector-icons": "^6.6.0",
45 "react-native-webview": "9.1.1", 46 "react-native-webview": "9.1.1",
  47 + "react-redux": "^7.2.0",
  48 + "redux": "^4.0.5",
  49 + "redux-logger": "^3.0.6",
  50 + "redux-persist": "^6.0.0",
  51 + "typesafe-actions": "^5.1.0",
46 "url-parse": "^1.4.7" 52 "url-parse": "^1.4.7"
47 }, 53 },
48 "devDependencies": { 54 "devDependencies": {
@@ -53,7 +59,9 @@ @@ -53,7 +59,9 @@
53 "@react-native-community/eslint-config": "^1.0.0", 59 "@react-native-community/eslint-config": "^1.0.0",
54 "@types/jest": "^24.0.24", 60 "@types/jest": "^24.0.24",
55 "@types/react-native": "^0.62.0", 61 "@types/react-native": "^0.62.0",
  62 + "@types/react-redux": "^7.1.7",
56 "@types/react-test-renderer": "16.9.2", 63 "@types/react-test-renderer": "16.9.2",
  64 + "@types/redux-logger": "^3.0.7",
57 "@types/url-parse": "^1.4.3", 65 "@types/url-parse": "^1.4.3",
58 "@typescript-eslint/eslint-plugin": "^2.27.0", 66 "@typescript-eslint/eslint-plugin": "^2.27.0",
59 "@typescript-eslint/parser": "^2.27.0", 67 "@typescript-eslint/parser": "^2.27.0",
  1 +import Types from 'local-types';
  2 +import { createStore, applyMiddleware } from 'redux';
  3 +import rootReducer from './rootReducer';
  4 +import { persistStore, persistReducer, PersistConfig } from 'redux-persist';
  5 +import AsyncStorage from '@react-native-community/async-storage';
  6 +import logger from 'redux-logger';
  7 +
  8 +const persistConfig: PersistConfig<Types.RootState> = {
  9 + storage: AsyncStorage,
  10 + key: 'root',
  11 +};
  12 +
  13 +const persistedReducer = persistReducer(persistConfig, rootReducer);
  14 +
  15 +export const store = createStore(persistedReducer, applyMiddleware(logger));
  16 +
  17 +export const persistor = persistStore(store);
  1 +import { useSelector, useDispatch } from 'react-redux';
  2 +import Types from 'local-types';
  3 +import { Dispatch } from 'redux';
  4 +
  5 +type ReduxStateKey = keyof Types.RootState;
  6 +export function useReduxState<K extends ReduxStateKey>(
  7 + key: K
  8 +): Types.RootState[K] {
  9 + return useSelector((state: Types.RootState) => state[key]);
  10 +}
  11 +
  12 +/**
  13 + * 获取 dispatch 对象
  14 + *
  15 + * @example
  16 + * const dispatch = useReduxDispatch();
  17 + * dispatch(rootActions.userActions.onUpdateUserInfo({ nickname: 'test' }));
  18 + */
  19 +export function useReduxDispatch() {
  20 + return useDispatch<Dispatch<Types.RootAction>>();
  21 +}
  1 +export * from './configureStore';
  2 +
  3 +import rootActions from './rootActions';
  4 +export { rootActions };
  5 +
  6 +import Types from 'local-types';
  7 +export type ApplicationState = Types.RootState;
  1 +import * as userActions from './user/action';
  2 +
  3 +export default { userActions };
  1 +import { combineReducers } from 'redux';
  2 +import user from './user/reducer';
  3 +
  4 +export default combineReducers({
  5 + user,
  6 +});
  1 +import { StateType, ActionType } from 'typesafe-actions';
  2 +
  3 +declare module 'local-types' {
  4 + export type Store = StateType<typeof import('./configureStore').store>;
  5 + export type RootAction = ActionType<typeof import('./rootActions').default>;
  6 + export type RootState = StateType<typeof import('./rootReducer').default>;
  7 +}
  8 +
  9 +declare module 'typesafe-actions' {
  10 + interface Types {
  11 + RootAction: ActionType<typeof import('./rootActions').default>;
  12 + }
  13 +}
  1 +import { createAction } from 'typesafe-actions';
  2 +import { UserActionTypes, User } from './types';
  3 +
  4 +export const setToken = createAction(UserActionTypes.SET_TOKEN)<string>();
  5 +
  6 +export const setCurrentUser = createAction(UserActionTypes.SET_CURRENT)<User>();
  7 +
  8 +export const addUser = createAction(UserActionTypes.ADD_USER)<User>();
  1 +import produce from 'immer';
  2 +import Types from 'local-types';
  3 +import { UserState, UserActionTypes } from './types';
  4 +import { Reducer } from 'typesafe-actions';
  5 +
  6 +const initialState: UserState = { list: [] };
  7 +
  8 +const reducer: Reducer<UserState, Types.RootAction> = (
  9 + state = initialState,
  10 + action
  11 +) =>
  12 + produce(state, draft => {
  13 + switch (action.type) {
  14 + case UserActionTypes.ADD_USER:
  15 + draft.list.splice(0, 0, action.payload);
  16 + break;
  17 + case UserActionTypes.SET_CURRENT:
  18 + draft.current = action.payload;
  19 + break;
  20 + case UserActionTypes.SET_TOKEN:
  21 + draft.token = action.payload;
  22 + }
  23 + });
  24 +
  25 +export default reducer;
  1 +export interface User {
  2 + name: string;
  3 +}
  4 +
  5 +export enum UserActionTypes {
  6 + SET_TOKEN = '@@user/SET_TOKEN',
  7 + SET_CURRENT = '@@user/SET_CURRENT',
  8 + ADD_USER = '@@user/ADD_USER',
  9 +}
  10 +
  11 +export interface UserState {
  12 + current?: User;
  13 + token?: string;
  14 + list: User[];
  15 +}
  1 +declare module 'local-types';
  2 +
1 declare type NVPair<V = string> = { name: string; value: V }; 3 declare type NVPair<V = string> = { name: string; value: V };
2 4
3 declare type PromiseResult<T extends Promise<any>> = T extends Promise<infer U> 5 declare type PromiseResult<T extends Promise<any>> = T extends Promise<infer U>
@@ -624,7 +624,7 @@ @@ -624,7 +624,7 @@
624 core-js-pure "^3.0.0" 624 core-js-pure "^3.0.0"
625 regenerator-runtime "^0.13.4" 625 regenerator-runtime "^0.13.4"
626 626
627 -"@babel/runtime@^7.0.0", "@babel/runtime@^7.6.2", "@babel/runtime@^7.8.4", "@babel/runtime@^7.8.7": 627 +"@babel/runtime@^7.0.0", "@babel/runtime@^7.5.5", "@babel/runtime@^7.6.2", "@babel/runtime@^7.8.4", "@babel/runtime@^7.8.7":
628 version "7.9.2" 628 version "7.9.2"
629 resolved "https://registry.npm.taobao.org/@babel/runtime/download/@babel/runtime-7.9.2.tgz#d90df0583a3a252f09aaa619665367bae518db06" 629 resolved "https://registry.npm.taobao.org/@babel/runtime/download/@babel/runtime-7.9.2.tgz#d90df0583a3a252f09aaa619665367bae518db06"
630 integrity sha1-2Q3wWDo6JS8JqqYZZlNnuuUY2wY= 630 integrity sha1-2Q3wWDo6JS8JqqYZZlNnuuUY2wY=
@@ -1054,6 +1054,13 @@ @@ -1054,6 +1054,13 @@
1054 invariant "^2.2.4" 1054 invariant "^2.2.4"
1055 prop-types "^15.7.2" 1055 prop-types "^15.7.2"
1056 1056
  1057 +"@react-native-community/async-storage@^1.9.0":
  1058 + version "1.9.0"
  1059 + resolved "https://registry.npm.taobao.org/@react-native-community/async-storage/download/@react-native-community/async-storage-1.9.0.tgz?cache=0&sync_timestamp=1585815408575&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40react-native-community%2Fasync-storage%2Fdownload%2F%40react-native-community%2Fasync-storage-1.9.0.tgz#af26a8879bd2987970fbbe81a9623851d29a56f1"
  1060 + integrity sha1-ryaoh5vSmHlw+76BqWI4UdKaVvE=
  1061 + dependencies:
  1062 + deep-assign "^3.0.0"
  1063 +
1057 "@react-native-community/cli-debugger-ui@^4.2.1": 1064 "@react-native-community/cli-debugger-ui@^4.2.1":
1058 version "4.2.1" 1065 version "4.2.1"
1059 resolved "https://registry.npm.taobao.org/@react-native-community/cli-debugger-ui/download/@react-native-community/cli-debugger-ui-4.2.1.tgz?cache=0&sync_timestamp=1582652910092&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40react-native-community%2Fcli-debugger-ui%2Fdownload%2F%40react-native-community%2Fcli-debugger-ui-4.2.1.tgz#da22aa1cf8d04fe1aa2759873916473e81c4450b" 1066 resolved "https://registry.npm.taobao.org/@react-native-community/cli-debugger-ui/download/@react-native-community/cli-debugger-ui-4.2.1.tgz?cache=0&sync_timestamp=1582652910092&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40react-native-community%2Fcli-debugger-ui%2Fdownload%2F%40react-native-community%2Fcli-debugger-ui-4.2.1.tgz#da22aa1cf8d04fe1aa2759873916473e81c4450b"
@@ -1300,6 +1307,14 @@ @@ -1300,6 +1307,14 @@
1300 resolved "https://registry.npm.taobao.org/@types/hammerjs/download/@types/hammerjs-2.0.36.tgz#17ce0a235e9ffbcdcdf5095646b374c2bf615a4c" 1307 resolved "https://registry.npm.taobao.org/@types/hammerjs/download/@types/hammerjs-2.0.36.tgz#17ce0a235e9ffbcdcdf5095646b374c2bf615a4c"
1301 integrity sha1-F84KI16f+83N9QlWRrN0wr9hWkw= 1308 integrity sha1-F84KI16f+83N9QlWRrN0wr9hWkw=
1302 1309
  1310 +"@types/hoist-non-react-statics@^3.3.0":
  1311 + version "3.3.1"
  1312 + resolved "https://registry.npm.taobao.org/@types/hoist-non-react-statics/download/@types/hoist-non-react-statics-3.3.1.tgz#1124aafe5118cb591977aeb1ceaaed1070eb039f"
  1313 + integrity sha1-ESSq/lEYy1kZd66xzqrtEHDrA58=
  1314 + dependencies:
  1315 + "@types/react" "*"
  1316 + hoist-non-react-statics "^3.3.0"
  1317 +
1303 "@types/istanbul-lib-coverage@*", "@types/istanbul-lib-coverage@^2.0.0": 1318 "@types/istanbul-lib-coverage@*", "@types/istanbul-lib-coverage@^2.0.0":
1304 version "2.0.1" 1319 version "2.0.1"
1305 resolved "https://registry.npm.taobao.org/@types/istanbul-lib-coverage/download/@types/istanbul-lib-coverage-2.0.1.tgz#42995b446db9a48a11a07ec083499a860e9138ff" 1320 resolved "https://registry.npm.taobao.org/@types/istanbul-lib-coverage/download/@types/istanbul-lib-coverage-2.0.1.tgz#42995b446db9a48a11a07ec083499a860e9138ff"
@@ -1357,6 +1372,16 @@ @@ -1357,6 +1372,16 @@
1357 dependencies: 1372 dependencies:
1358 "@types/react" "*" 1373 "@types/react" "*"
1359 1374
  1375 +"@types/react-redux@^7.1.7":
  1376 + version "7.1.7"
  1377 + resolved "https://registry.npm.taobao.org/@types/react-redux/download/@types/react-redux-7.1.7.tgz?cache=0&sync_timestamp=1580865748465&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40types%2Freact-redux%2Fdownload%2F%40types%2Freact-redux-7.1.7.tgz#12a0c529aba660696947384a059c5c6e08185c7a"
  1378 + integrity sha1-EqDFKaumYGlpRzhKBZxcbggYXHo=
  1379 + dependencies:
  1380 + "@types/hoist-non-react-statics" "^3.3.0"
  1381 + "@types/react" "*"
  1382 + hoist-non-react-statics "^3.3.0"
  1383 + redux "^4.0.0"
  1384 +
1360 "@types/react-test-renderer@16.9.2": 1385 "@types/react-test-renderer@16.9.2":
1361 version "16.9.2" 1386 version "16.9.2"
1362 resolved "https://registry.npm.taobao.org/@types/react-test-renderer/download/@types/react-test-renderer-16.9.2.tgz#e1c408831e8183e5ad748fdece02214a7c2ab6c5" 1387 resolved "https://registry.npm.taobao.org/@types/react-test-renderer/download/@types/react-test-renderer-16.9.2.tgz#e1c408831e8183e5ad748fdece02214a7c2ab6c5"
@@ -1372,6 +1397,13 @@ @@ -1372,6 +1397,13 @@
1372 "@types/prop-types" "*" 1397 "@types/prop-types" "*"
1373 csstype "^2.2.0" 1398 csstype "^2.2.0"
1374 1399
  1400 +"@types/redux-logger@^3.0.7":
  1401 + version "3.0.7"
  1402 + resolved "https://registry.npm.taobao.org/@types/redux-logger/download/@types/redux-logger-3.0.7.tgz#163f6f6865c69c21d56f9356dc8d741718ec0db0"
  1403 + integrity sha1-Fj9vaGXGnCHVb5NW3I10FxjsDbA=
  1404 + dependencies:
  1405 + redux "^3.6.0"
  1406 +
1375 "@types/stack-utils@^1.0.1": 1407 "@types/stack-utils@^1.0.1":
1376 version "1.0.1" 1408 version "1.0.1"
1377 resolved "https://registry.npm.taobao.org/@types/stack-utils/download/@types/stack-utils-1.0.1.tgz#0a851d3bd96498fa25c33ab7278ed3bd65f06c3e" 1409 resolved "https://registry.npm.taobao.org/@types/stack-utils/download/@types/stack-utils-1.0.1.tgz#0a851d3bd96498fa25c33ab7278ed3bd65f06c3e"
@@ -2961,6 +2993,18 @@ dedent@0.7.0, dedent@^0.7.0: @@ -2961,6 +2993,18 @@ dedent@0.7.0, dedent@^0.7.0:
2961 resolved "https://registry.npm.taobao.org/dedent/download/dedent-0.7.0.tgz#2495ddbaf6eb874abb0e1be9df22d2e5a544326c" 2993 resolved "https://registry.npm.taobao.org/dedent/download/dedent-0.7.0.tgz#2495ddbaf6eb874abb0e1be9df22d2e5a544326c"
2962 integrity sha1-JJXduvbrh0q7Dhvp3yLS5aVEMmw= 2994 integrity sha1-JJXduvbrh0q7Dhvp3yLS5aVEMmw=
2963 2995
  2996 +deep-assign@^3.0.0:
  2997 + version "3.0.0"
  2998 + resolved "https://registry.npm.taobao.org/deep-assign/download/deep-assign-3.0.0.tgz#c8e4c4d401cba25550a2f0f486a2e75bc5f219a2"
  2999 + integrity sha1-yOTE1AHLolVQovD0hqLnW8XyGaI=
  3000 + dependencies:
  3001 + is-obj "^1.0.0"
  3002 +
  3003 +deep-diff@^0.3.5:
  3004 + version "0.3.8"
  3005 + resolved "https://registry.npm.taobao.org/deep-diff/download/deep-diff-0.3.8.tgz#c01de63efb0eec9798801d40c7e0dae25b582c84"
  3006 + integrity sha1-wB3mPvsO7JeYgB1Ax+Da4ltYLIQ=
  3007 +
2964 deep-is@~0.1.3: 3008 deep-is@~0.1.3:
2965 version "0.1.3" 3009 version "0.1.3"
2966 resolved "https://registry.npm.taobao.org/deep-is/download/deep-is-0.1.3.tgz#b369d6fb5dbc13eecf524f91b070feedc357cf34" 3010 resolved "https://registry.npm.taobao.org/deep-is/download/deep-is-0.1.3.tgz#b369d6fb5dbc13eecf524f91b070feedc357cf34"
@@ -4314,7 +4358,7 @@ hoist-non-react-statics@^2.3.1: @@ -4314,7 +4358,7 @@ hoist-non-react-statics@^2.3.1:
4314 resolved "https://registry.npm.taobao.org/hoist-non-react-statics/download/hoist-non-react-statics-2.5.5.tgz#c5903cf409c0dfd908f388e619d86b9c1174cb47" 4358 resolved "https://registry.npm.taobao.org/hoist-non-react-statics/download/hoist-non-react-statics-2.5.5.tgz#c5903cf409c0dfd908f388e619d86b9c1174cb47"
4315 integrity sha1-xZA89AnA39kI84jmGdhrnBF0y0c= 4359 integrity sha1-xZA89AnA39kI84jmGdhrnBF0y0c=
4316 4360
4317 -hoist-non-react-statics@^3.1.0: 4361 +hoist-non-react-statics@^3.1.0, hoist-non-react-statics@^3.3.0:
4318 version "3.3.2" 4362 version "3.3.2"
4319 resolved "https://registry.npm.taobao.org/hoist-non-react-statics/download/hoist-non-react-statics-3.3.2.tgz#ece0acaf71d62c2969c2ec59feff42a4b1a85b45" 4363 resolved "https://registry.npm.taobao.org/hoist-non-react-statics/download/hoist-non-react-statics-3.3.2.tgz#ece0acaf71d62c2969c2ec59feff42a4b1a85b45"
4320 integrity sha1-7OCsr3HWLClpwuxZ/v9CpLGoW0U= 4364 integrity sha1-7OCsr3HWLClpwuxZ/v9CpLGoW0U=
@@ -5593,6 +5637,11 @@ locate-path@^5.0.0: @@ -5593,6 +5637,11 @@ locate-path@^5.0.0:
5593 dependencies: 5637 dependencies:
5594 p-locate "^4.1.0" 5638 p-locate "^4.1.0"
5595 5639
  5640 +lodash-es@^4.2.1:
  5641 + version "4.17.15"
  5642 + resolved "https://registry.npm.taobao.org/lodash-es/download/lodash-es-4.17.15.tgz#21bd96839354412f23d7a10340e5eac6ee455d78"
  5643 + integrity sha1-Ib2Wg5NUQS8j16EDQOXqxu5FXXg=
  5644 +
5596 lodash._reinterpolate@^3.0.0: 5645 lodash._reinterpolate@^3.0.0:
5597 version "3.0.0" 5646 version "3.0.0"
5598 resolved "https://registry.npm.taobao.org/lodash._reinterpolate/download/lodash._reinterpolate-3.0.0.tgz#0ccf2d89166af03b3663c796538b75ac6e114d9d" 5647 resolved "https://registry.npm.taobao.org/lodash._reinterpolate/download/lodash._reinterpolate-3.0.0.tgz#0ccf2d89166af03b3663c796538b75ac6e114d9d"
@@ -7018,7 +7067,7 @@ react-devtools-core@^4.0.6: @@ -7018,7 +7067,7 @@ react-devtools-core@^4.0.6:
7018 shell-quote "^1.6.1" 7067 shell-quote "^1.6.1"
7019 ws "^7" 7068 ws "^7"
7020 7069
7021 -react-is@^16.12.0, react-is@^16.13.0, react-is@^16.7.0, react-is@^16.8.1, react-is@^16.8.4, react-is@^16.8.6: 7070 +react-is@^16.12.0, react-is@^16.13.0, react-is@^16.7.0, react-is@^16.8.1, react-is@^16.8.4, react-is@^16.8.6, react-is@^16.9.0:
7022 version "16.13.1" 7071 version "16.13.1"
7023 resolved "https://registry.npm.taobao.org/react-is/download/react-is-16.13.1.tgz#789729a4dc36de2999dc156dd6c1d9c18cea56a4" 7072 resolved "https://registry.npm.taobao.org/react-is/download/react-is-16.13.1.tgz#789729a4dc36de2999dc156dd6c1d9c18cea56a4"
7024 integrity sha1-eJcppNw23imZ3BVt1sHZwYzqVqQ= 7073 integrity sha1-eJcppNw23imZ3BVt1sHZwYzqVqQ=
@@ -7202,6 +7251,17 @@ react-native@0.62.1: @@ -7202,6 +7251,17 @@ react-native@0.62.1:
7202 use-subscription "^1.0.0" 7251 use-subscription "^1.0.0"
7203 whatwg-fetch "^3.0.0" 7252 whatwg-fetch "^3.0.0"
7204 7253
  7254 +react-redux@^7.2.0:
  7255 + version "7.2.0"
  7256 + resolved "https://registry.npm.taobao.org/react-redux/download/react-redux-7.2.0.tgz?cache=0&sync_timestamp=1581997590604&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Freact-redux%2Fdownload%2Freact-redux-7.2.0.tgz#f970f62192b3981642fec46fd0db18a074fe879d"
  7257 + integrity sha1-+XD2IZKzmBZC/sRv0NsYoHT+h50=
  7258 + dependencies:
  7259 + "@babel/runtime" "^7.5.5"
  7260 + hoist-non-react-statics "^3.3.0"
  7261 + loose-envify "^1.4.0"
  7262 + prop-types "^15.7.2"
  7263 + react-is "^16.9.0"
  7264 +
7205 react-refresh@^0.4.0: 7265 react-refresh@^0.4.0:
7206 version "0.4.2" 7266 version "0.4.2"
7207 resolved "https://registry.npm.taobao.org/react-refresh/download/react-refresh-0.4.2.tgz#54a277a6caaac2803d88f1d6f13c1dcfbd81e334" 7267 resolved "https://registry.npm.taobao.org/react-refresh/download/react-refresh-0.4.2.tgz#54a277a6caaac2803d88f1d6f13c1dcfbd81e334"
@@ -7320,6 +7380,36 @@ redent@^2.0.0: @@ -7320,6 +7380,36 @@ redent@^2.0.0:
7320 indent-string "^3.0.0" 7380 indent-string "^3.0.0"
7321 strip-indent "^2.0.0" 7381 strip-indent "^2.0.0"
7322 7382
  7383 +redux-logger@^3.0.6:
  7384 + version "3.0.6"
  7385 + resolved "https://registry.npm.taobao.org/redux-logger/download/redux-logger-3.0.6.tgz#f7555966f3098f3c88604c449cf0baf5778274bf"
  7386 + integrity sha1-91VZZvMJjzyIYExEnPC69XeCdL8=
  7387 + dependencies:
  7388 + deep-diff "^0.3.5"
  7389 +
  7390 +redux-persist@^6.0.0:
  7391 + version "6.0.0"
  7392 + resolved "https://registry.npm.taobao.org/redux-persist/download/redux-persist-6.0.0.tgz#b4d2972f9859597c130d40d4b146fecdab51b3a8"
  7393 + integrity sha1-tNKXL5hZWXwTDUDUsUb+zatRs6g=
  7394 +
  7395 +redux@^3.6.0:
  7396 + version "3.7.2"
  7397 + resolved "https://registry.npm.taobao.org/redux/download/redux-3.7.2.tgz#06b73123215901d25d065be342eb026bc1c8537b"
  7398 + integrity sha1-BrcxIyFZAdJdBlvjQusCa8HIU3s=
  7399 + dependencies:
  7400 + lodash "^4.2.1"
  7401 + lodash-es "^4.2.1"
  7402 + loose-envify "^1.1.0"
  7403 + symbol-observable "^1.0.3"
  7404 +
  7405 +redux@^4.0.0, redux@^4.0.5:
  7406 + version "4.0.5"
  7407 + resolved "https://registry.npm.taobao.org/redux/download/redux-4.0.5.tgz#4db5de5816e17891de8a80c424232d06f051d93f"
  7408 + integrity sha1-TbXeWBbheJHeioDEJCMtBvBR2T8=
  7409 + dependencies:
  7410 + loose-envify "^1.4.0"
  7411 + symbol-observable "^1.2.0"
  7412 +
7323 regenerate-unicode-properties@^8.2.0: 7413 regenerate-unicode-properties@^8.2.0:
7324 version "8.2.0" 7414 version "8.2.0"
7325 resolved "https://registry.npm.taobao.org/regenerate-unicode-properties/download/regenerate-unicode-properties-8.2.0.tgz#e5de7111d655e7ba60c057dbe9ff37c87e65cdec" 7415 resolved "https://registry.npm.taobao.org/regenerate-unicode-properties/download/regenerate-unicode-properties-8.2.0.tgz#e5de7111d655e7ba60c057dbe9ff37c87e65cdec"
@@ -8327,7 +8417,7 @@ symbol-observable@1.0.1: @@ -8327,7 +8417,7 @@ symbol-observable@1.0.1:
8327 resolved "https://registry.npm.taobao.org/symbol-observable/download/symbol-observable-1.0.1.tgz#8340fc4702c3122df5d22288f88283f513d3fdd4" 8417 resolved "https://registry.npm.taobao.org/symbol-observable/download/symbol-observable-1.0.1.tgz#8340fc4702c3122df5d22288f88283f513d3fdd4"
8328 integrity sha1-g0D8RwLDEi310iKI+IKD9RPT/dQ= 8418 integrity sha1-g0D8RwLDEi310iKI+IKD9RPT/dQ=
8329 8419
8330 -symbol-observable@^1.1.0: 8420 +symbol-observable@^1.0.3, symbol-observable@^1.1.0, symbol-observable@^1.2.0:
8331 version "1.2.0" 8421 version "1.2.0"
8332 resolved "https://registry.npm.taobao.org/symbol-observable/download/symbol-observable-1.2.0.tgz#c22688aed4eab3cdc2dfeacbb561660560a00804" 8422 resolved "https://registry.npm.taobao.org/symbol-observable/download/symbol-observable-1.2.0.tgz#c22688aed4eab3cdc2dfeacbb561660560a00804"
8333 integrity sha1-wiaIrtTqs83C3+rLtWFmBWCgCAQ= 8423 integrity sha1-wiaIrtTqs83C3+rLtWFmBWCgCAQ=
@@ -8550,6 +8640,11 @@ typedarray@^0.0.6: @@ -8550,6 +8640,11 @@ typedarray@^0.0.6:
8550 resolved "https://registry.npm.taobao.org/typedarray/download/typedarray-0.0.6.tgz#867ac74e3864187b1d3d47d996a78ec5c8830777" 8640 resolved "https://registry.npm.taobao.org/typedarray/download/typedarray-0.0.6.tgz#867ac74e3864187b1d3d47d996a78ec5c8830777"
8551 integrity sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c= 8641 integrity sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c=
8552 8642
  8643 +typesafe-actions@^5.1.0:
  8644 + version "5.1.0"
  8645 + resolved "https://registry.npm.taobao.org/typesafe-actions/download/typesafe-actions-5.1.0.tgz#9afe8b1e6a323af1fd59e6a57b11b7dd6623d2f1"
  8646 + integrity sha1-mv6LHmoyOvH9WealexG33WYj0vE=
  8647 +
8553 typescript@^3.8.3: 8648 typescript@^3.8.3:
8554 version "3.8.3" 8649 version "3.8.3"
8555 resolved "https://registry.npm.taobao.org/typescript/download/typescript-3.8.3.tgz?cache=0&sync_timestamp=1586164975599&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Ftypescript%2Fdownload%2Ftypescript-3.8.3.tgz#409eb8544ea0335711205869ec458ab109ee1061" 8650 resolved "https://registry.npm.taobao.org/typescript/download/typescript-3.8.3.tgz?cache=0&sync_timestamp=1586164975599&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Ftypescript%2Fdownload%2Ftypescript-3.8.3.tgz#409eb8544ea0335711205869ec458ab109ee1061"