Showing
10 changed files
with
155 additions
and
91 deletions
| @@ -13,6 +13,13 @@ import { DarkModeProvider } from 'react-native-dark-mode'; | @@ -13,6 +13,13 @@ import { DarkModeProvider } from 'react-native-dark-mode'; | ||
| 13 | import { enableScreens } from 'react-native-screens'; | 13 | import { enableScreens } from 'react-native-screens'; |
| 14 | import AppNavigationContainer from './src/screen/AppNavigationContainer'; | 14 | import AppNavigationContainer from './src/screen/AppNavigationContainer'; |
| 15 | 15 | ||
| 16 | +if (__DEV__) { | ||
| 17 | + const whyDidYouRender = require('@welldone-software/why-did-you-render'); | ||
| 18 | + whyDidYouRender(React, { | ||
| 19 | + trackAllPureComponents: false, | ||
| 20 | + }); | ||
| 21 | +} | ||
| 22 | + | ||
| 16 | enableScreens(); | 23 | enableScreens(); |
| 17 | 24 | ||
| 18 | const App = () => { | 25 | const App = () => { |
| @@ -11,6 +11,7 @@ | @@ -11,6 +11,7 @@ | ||
| 11 | "commit": "git-cz" | 11 | "commit": "git-cz" |
| 12 | }, | 12 | }, |
| 13 | "dependencies": { | 13 | "dependencies": { |
| 14 | + "@huse/previous-value": "^1.0.1", | ||
| 14 | "@react-native-community/masked-view": "^0.1.7", | 15 | "@react-native-community/masked-view": "^0.1.7", |
| 15 | "@react-navigation/bottom-tabs": "^5.2.5", | 16 | "@react-navigation/bottom-tabs": "^5.2.5", |
| 16 | "@react-navigation/drawer": "^5.4.0", | 17 | "@react-navigation/drawer": "^5.4.0", |
| @@ -40,6 +41,7 @@ | @@ -40,6 +41,7 @@ | ||
| 40 | "@types/react-test-renderer": "16.9.2", | 41 | "@types/react-test-renderer": "16.9.2", |
| 41 | "@typescript-eslint/eslint-plugin": "^2.27.0", | 42 | "@typescript-eslint/eslint-plugin": "^2.27.0", |
| 42 | "@typescript-eslint/parser": "^2.27.0", | 43 | "@typescript-eslint/parser": "^2.27.0", |
| 44 | + "@welldone-software/why-did-you-render": "^4.0.7", | ||
| 43 | "babel-jest": "^24.9.0", | 45 | "babel-jest": "^24.9.0", |
| 44 | "commitizen": "^4.0.3", | 46 | "commitizen": "^4.0.3", |
| 45 | "cz-conventional-changelog": "^3.1.0", | 47 | "cz-conventional-changelog": "^3.1.0", |
| @@ -9,12 +9,15 @@ import { | @@ -9,12 +9,15 @@ import { | ||
| 9 | SectionListProps, | 9 | SectionListProps, |
| 10 | ScrollViewProps, | 10 | ScrollViewProps, |
| 11 | ScrollView, | 11 | ScrollView, |
| 12 | + StyleSheet, | ||
| 12 | } from 'react-native'; | 13 | } from 'react-native'; |
| 14 | +import { useOriginalCopy } from '@huse/previous-value'; | ||
| 13 | import { colorPreset } from '../../design'; | 15 | import { colorPreset } from '../../design'; |
| 14 | import { | 16 | import { |
| 15 | DynamicStyleSheet, | 17 | DynamicStyleSheet, |
| 16 | useDynamicStyleSheet, | 18 | useDynamicStyleSheet, |
| 17 | } from 'react-native-dark-mode'; | 19 | } from 'react-native-dark-mode'; |
| 20 | +import { useSafeArea } from 'react-native-safe-area-context'; | ||
| 18 | 21 | ||
| 19 | const dynamicStyles = new DynamicStyleSheet({ | 22 | const dynamicStyles = new DynamicStyleSheet({ |
| 20 | background: { | 23 | background: { |
| @@ -31,6 +34,18 @@ type BackgroundProps<Props> = PropsWithChildren<Props> & { | @@ -31,6 +34,18 @@ type BackgroundProps<Props> = PropsWithChildren<Props> & { | ||
| 31 | white?: boolean; | 34 | white?: boolean; |
| 32 | }; | 35 | }; |
| 33 | 36 | ||
| 37 | +function useSafeContentContainerStyle( | ||
| 38 | + contentContainerStyle: ScrollViewProps['contentContainerStyle'] | ||
| 39 | +) { | ||
| 40 | + const { left, right } = useSafeArea(); | ||
| 41 | + const calculated = StyleSheet.compose(contentContainerStyle, { | ||
| 42 | + paddingLeft: left, | ||
| 43 | + paddingRight: right, | ||
| 44 | + }); | ||
| 45 | + const originValue = useOriginalCopy(calculated); | ||
| 46 | + return originValue; | ||
| 47 | +} | ||
| 48 | + | ||
| 34 | export const BGView = ({ | 49 | export const BGView = ({ |
| 35 | style, | 50 | style, |
| 36 | white, | 51 | white, |
| @@ -62,13 +77,16 @@ export const BGSafe = ({ | @@ -62,13 +77,16 @@ export const BGSafe = ({ | ||
| 62 | export const BGScroll = ({ | 77 | export const BGScroll = ({ |
| 63 | style, | 78 | style, |
| 64 | white, | 79 | white, |
| 80 | + contentContainerStyle, | ||
| 65 | ...props | 81 | ...props |
| 66 | }: BackgroundProps<ScrollViewProps>) => { | 82 | }: BackgroundProps<ScrollViewProps>) => { |
| 67 | const styles = useDynamicStyleSheet(dynamicStyles); | 83 | const styles = useDynamicStyleSheet(dynamicStyles); |
| 84 | + const safeContentStyle = useSafeContentContainerStyle(contentContainerStyle); | ||
| 68 | return ( | 85 | return ( |
| 69 | <ScrollView | 86 | <ScrollView |
| 70 | style={[white ? styles.whiteBackground : styles.background, style]} | 87 | style={[white ? styles.whiteBackground : styles.background, style]} |
| 71 | contentInsetAdjustmentBehavior="automatic" | 88 | contentInsetAdjustmentBehavior="automatic" |
| 89 | + contentContainerStyle={safeContentStyle} | ||
| 72 | {...props} | 90 | {...props} |
| 73 | /> | 91 | /> |
| 74 | ); | 92 | ); |
| @@ -77,13 +95,16 @@ export const BGScroll = ({ | @@ -77,13 +95,16 @@ export const BGScroll = ({ | ||
| 77 | export const BGList = <T extends any>({ | 95 | export const BGList = <T extends any>({ |
| 78 | style, | 96 | style, |
| 79 | white, | 97 | white, |
| 98 | + contentContainerStyle, | ||
| 80 | ...props | 99 | ...props |
| 81 | }: BackgroundProps<FlatListProps<T>>) => { | 100 | }: BackgroundProps<FlatListProps<T>>) => { |
| 82 | const styles = useDynamicStyleSheet(dynamicStyles); | 101 | const styles = useDynamicStyleSheet(dynamicStyles); |
| 102 | + const safeContentStyle = useSafeContentContainerStyle(contentContainerStyle); | ||
| 83 | return ( | 103 | return ( |
| 84 | <FlatList | 104 | <FlatList |
| 85 | style={[white ? styles.whiteBackground : styles.background, style]} | 105 | style={[white ? styles.whiteBackground : styles.background, style]} |
| 86 | contentInsetAdjustmentBehavior="automatic" | 106 | contentInsetAdjustmentBehavior="automatic" |
| 107 | + contentContainerStyle={safeContentStyle} | ||
| 87 | keyExtractor={(_, i) => i.toString()} | 108 | keyExtractor={(_, i) => i.toString()} |
| 88 | {...props} | 109 | {...props} |
| 89 | /> | 110 | /> |
| @@ -34,3 +34,15 @@ export const groupedBackgroundColor = { | @@ -34,3 +34,15 @@ export const groupedBackgroundColor = { | ||
| 34 | secondary: new DynamicValue('#FFFFFF', '#1C1C1E'), | 34 | secondary: new DynamicValue('#FFFFFF', '#1C1C1E'), |
| 35 | tertiary: new DynamicValue('#F2F2F7', '#2C2C2E'), | 35 | tertiary: new DynamicValue('#F2F2F7', '#2C2C2E'), |
| 36 | }; | 36 | }; |
| 37 | + | ||
| 38 | +export const rainbow = { | ||
| 39 | + blue: new DynamicValue('rgb(0,122,255)', 'rgb(10,132,255)'), | ||
| 40 | + green: new DynamicValue('rgb(52,199,89)', 'rgb(48,209,88)'), | ||
| 41 | + indigo: new DynamicValue('rgb(88,86,214)', 'rgb(94,92,230)'), | ||
| 42 | + orange: new DynamicValue('rgb(255,149,0)', 'rgb(255,159,10)'), | ||
| 43 | + pink: new DynamicValue('rgb(255,45,85)', 'rgb(255,55,95)'), | ||
| 44 | + purple: new DynamicValue('rgb(175,82,222)', 'rgb(191,90,242)'), | ||
| 45 | + red: new DynamicValue('rgb(255,59,48)', 'rgb(255,69,58)'), | ||
| 46 | + teal: new DynamicValue('rgb(90,200,250)', 'rgb(100,210,255)'), | ||
| 47 | + yellow: new DynamicValue('rgb(255,204,0)', 'rgb(255,214,10)'), | ||
| 48 | +}; |
src/design/themeForReactNavigation.ts
0 → 100644
| 1 | +import { DefaultTheme } from '@react-navigation/native'; | ||
| 2 | +import { rainbow } from './color'; | ||
| 3 | + | ||
| 4 | +type Theme = typeof DefaultTheme; | ||
| 5 | + | ||
| 6 | +export const light: Theme = { | ||
| 7 | + dark: false, | ||
| 8 | + colors: { | ||
| 9 | + primary: rainbow.teal.light, | ||
| 10 | + background: 'rgb(242, 242, 242)', | ||
| 11 | + card: 'rgb(255, 255, 255)', | ||
| 12 | + text: 'rgb(28, 28, 30)', | ||
| 13 | + border: 'rgb(224, 224, 224)', | ||
| 14 | + }, | ||
| 15 | +}; | ||
| 16 | + | ||
| 17 | +export const dark: Theme = { | ||
| 18 | + dark: true, | ||
| 19 | + colors: { | ||
| 20 | + primary: rainbow.teal.dark, | ||
| 21 | + background: 'rgb(1, 1, 1)', | ||
| 22 | + card: 'rgb(18, 18, 18)', | ||
| 23 | + text: 'rgb(229, 229, 231)', | ||
| 24 | + border: 'rgb(39, 39, 41)', | ||
| 25 | + }, | ||
| 26 | +}; |
| @@ -13,10 +13,9 @@ import Ionicons from 'react-native-vector-icons/Ionicons'; | @@ -13,10 +13,9 @@ import Ionicons from 'react-native-vector-icons/Ionicons'; | ||
| 13 | import { MainTabParamList, MainStackParamList } from '../type/Navigation'; | 13 | import { MainTabParamList, MainStackParamList } from '../type/Navigation'; |
| 14 | import SystemInfo from './SystemInfo'; | 14 | import SystemInfo from './SystemInfo'; |
| 15 | import DesignList from './DesignList'; | 15 | import DesignList from './DesignList'; |
| 16 | -import { useDynamicValue } from 'react-native-dark-mode'; | 16 | +import { useDarkMode } from 'react-native-dark-mode'; |
| 17 | -import { colorPreset } from '../design'; | 17 | +import { themeForNav } from '../design'; |
| 18 | import RNDeviceInfoList from './RNDeviceInfo'; | 18 | import RNDeviceInfoList from './RNDeviceInfo'; |
| 19 | -import { StyleSheet } from 'react-native'; | ||
| 20 | 19 | ||
| 21 | const MainTab = createBottomTabNavigator<MainTabParamList>(); | 20 | const MainTab = createBottomTabNavigator<MainTabParamList>(); |
| 22 | 21 | ||
| @@ -33,9 +32,6 @@ function getTabHeader( | @@ -33,9 +32,6 @@ function getTabHeader( | ||
| 33 | } | 32 | } |
| 34 | 33 | ||
| 35 | const Home = () => { | 34 | const Home = () => { |
| 36 | - const backgroundColor = useDynamicValue(colorPreset.backgroundColor.primary); | ||
| 37 | - const tintColor = useDynamicValue(colorPreset.linkColor); | ||
| 38 | - const opaqueSeparator = useDynamicValue(colorPreset.separator.opaque); | ||
| 39 | return ( | 35 | return ( |
| 40 | <MainTab.Navigator | 36 | <MainTab.Navigator |
| 41 | screenOptions={({ route }) => { | 37 | screenOptions={({ route }) => { |
| @@ -69,13 +65,6 @@ const Home = () => { | @@ -69,13 +65,6 @@ const Home = () => { | ||
| 69 | }, | 65 | }, |
| 70 | }; | 66 | }; |
| 71 | }} | 67 | }} |
| 72 | - tabBarOptions={{ | ||
| 73 | - activeTintColor: tintColor, | ||
| 74 | - style: { | ||
| 75 | - backgroundColor: backgroundColor, | ||
| 76 | - borderTopColor: opaqueSeparator, | ||
| 77 | - }, | ||
| 78 | - }} | ||
| 79 | > | 68 | > |
| 80 | <MainTab.Screen name="SystemInfo" component={SystemInfo} /> | 69 | <MainTab.Screen name="SystemInfo" component={SystemInfo} /> |
| 81 | <MainTab.Screen name="DesignList" component={DesignList} /> | 70 | <MainTab.Screen name="DesignList" component={DesignList} /> |
| @@ -86,20 +75,13 @@ const Home = () => { | @@ -86,20 +75,13 @@ const Home = () => { | ||
| 86 | const MainStack = createStackNavigator<MainStackParamList>(); | 75 | const MainStack = createStackNavigator<MainStackParamList>(); |
| 87 | 76 | ||
| 88 | export default () => { | 77 | export default () => { |
| 89 | - const backgroundColor = useDynamicValue(colorPreset.backgroundColor.primary); | 78 | + const inDarkMode = useDarkMode(); |
| 90 | - const primaryLabelColor = useDynamicValue(colorPreset.labelColor.primary); | ||
| 91 | - const opaqueSeparator = useDynamicValue(colorPreset.separator.opaque); | ||
| 92 | return ( | 79 | return ( |
| 93 | - <NavigationContainer> | 80 | + <NavigationContainer |
| 81 | + theme={inDarkMode ? themeForNav.dark : themeForNav.light} | ||
| 82 | + > | ||
| 94 | <MainStack.Navigator | 83 | <MainStack.Navigator |
| 95 | screenOptions={{ | 84 | screenOptions={{ |
| 96 | - headerStyle: { | ||
| 97 | - backgroundColor, | ||
| 98 | - shadowOffset: { width: 0, height: 0 }, | ||
| 99 | - borderBottomColor: opaqueSeparator, | ||
| 100 | - borderBottomWidth: StyleSheet.hairlineWidth, | ||
| 101 | - }, | ||
| 102 | - headerTintColor: primaryLabelColor, | ||
| 103 | headerStyleInterpolator: HeaderStyleInterpolators.forUIKit, | 85 | headerStyleInterpolator: HeaderStyleInterpolators.forUIKit, |
| 104 | }} | 86 | }} |
| 105 | > | 87 | > |
| 1 | import React from 'react'; | 1 | import React from 'react'; |
| 2 | import { Text, View, StyleSheet } from 'react-native'; | 2 | import { Text, View, StyleSheet } from 'react-native'; |
| 3 | -import { BGScroll } from '../component/View/background'; | 3 | +import { BGScroll, BGSection } from '../component/View/background'; |
| 4 | import { colorPreset } from '../design'; | 4 | import { colorPreset } from '../design'; |
| 5 | import { | 5 | import { |
| 6 | useDynamicStyleSheet, | 6 | useDynamicStyleSheet, |
| 7 | useDynamicValue, | 7 | useDynamicValue, |
| 8 | DynamicStyleSheet, | 8 | DynamicStyleSheet, |
| 9 | useDarkMode, | 9 | useDarkMode, |
| 10 | + useDarkModeContext, | ||
| 10 | } from 'react-native-dark-mode'; | 11 | } from 'react-native-dark-mode'; |
| 12 | +import { ListItem, Divider, Card } from '../component/View'; | ||
| 11 | 13 | ||
| 12 | const dynamicStyles = new DynamicStyleSheet({ | 14 | const dynamicStyles = new DynamicStyleSheet({ |
| 13 | - primaryLabel: { color: colorPreset.labelColor.primary }, | 15 | + rightSquare: { width: 40, height: 40 }, |
| 14 | - secondaryLabel: { color: colorPreset.labelColor.secondary }, | ||
| 15 | - tertiaryLabel: { color: colorPreset.labelColor.tertiary }, | ||
| 16 | - quaternaryLabel: { color: colorPreset.labelColor.quaternary }, | ||
| 17 | - central: { justifyContent: 'center', alignItems: 'center' }, | ||
| 18 | - primaryBG: { | ||
| 19 | - backgroundColor: colorPreset.backgroundColor.primary, | ||
| 20 | - borderWidth: StyleSheet.hairlineWidth, | ||
| 21 | - borderColor: colorPreset.separator.opaque, | ||
| 22 | - width: 240, | ||
| 23 | - height: 100, | ||
| 24 | - }, | ||
| 25 | - secondaryBG: { | ||
| 26 | - backgroundColor: colorPreset.backgroundColor.secondary, | ||
| 27 | - width: 200, | ||
| 28 | - height: 80, | ||
| 29 | - }, | ||
| 30 | - tertiaryBG: { | ||
| 31 | - backgroundColor: colorPreset.backgroundColor.tertiary, | ||
| 32 | - width: 160, | ||
| 33 | - height: 60, | ||
| 34 | - }, | ||
| 35 | - primaryGroupedBG: { | ||
| 36 | - backgroundColor: colorPreset.groupedBackgroundColor.primary, | ||
| 37 | - borderWidth: StyleSheet.hairlineWidth, | ||
| 38 | - borderColor: colorPreset.separator.opaque, | ||
| 39 | - width: 240, | ||
| 40 | - height: 100, | ||
| 41 | - }, | ||
| 42 | - secondaryGroupedBG: { | ||
| 43 | - backgroundColor: colorPreset.groupedBackgroundColor.secondary, | ||
| 44 | - width: 200, | ||
| 45 | - height: 80, | ||
| 46 | - }, | ||
| 47 | - tertiaryGroupedBG: { | ||
| 48 | - backgroundColor: colorPreset.groupedBackgroundColor.tertiary, | ||
| 49 | - width: 160, | ||
| 50 | - height: 60, | ||
| 51 | - }, | ||
| 52 | }); | 16 | }); |
| 17 | +const { labelColor, rainbow } = colorPreset; | ||
| 53 | 18 | ||
| 54 | -export default () => { | 19 | +const DesignList = () => { |
| 55 | const styles = useDynamicStyleSheet(dynamicStyles); | 20 | const styles = useDynamicStyleSheet(dynamicStyles); |
| 56 | - const inDarkMode = useDarkMode(); | 21 | + const currentMode = useDarkModeContext(); |
| 57 | return ( | 22 | return ( |
| 58 | <BGScroll> | 23 | <BGScroll> |
| 59 | - <Text style={styles.primaryLabel}>Primary Label</Text> | 24 | + <Card round> |
| 60 | - <Text style={styles.secondaryLabel}>Secondary Label</Text> | 25 | + {Object.keys(labelColor).map((name) => { |
| 61 | - <Text style={styles.tertiaryLabel}>Tertiary Label</Text> | 26 | + return ( |
| 62 | - <Text style={styles.quaternaryLabel}>Quaternary Label</Text> | 27 | + <ListItem |
| 63 | - <View style={[styles.primaryBG, styles.central]}> | 28 | + title={name} |
| 64 | - <View style={[styles.secondaryBG, styles.central]}> | 29 | + key={name} |
| 65 | - <View style={[styles.tertiaryBG, styles.central]}> | 30 | + titleStyle={{ |
| 66 | - <Text style={styles.primaryLabel}>Background</Text> | 31 | + color: labelColor[name as keyof typeof labelColor][currentMode], |
| 67 | - </View> | 32 | + }} |
| 68 | - </View> | 33 | + /> |
| 69 | - </View> | 34 | + ); |
| 70 | - <View style={[styles.primaryGroupedBG, styles.central]}> | 35 | + })} |
| 71 | - <View style={[styles.secondaryGroupedBG, styles.central]}> | 36 | + </Card> |
| 72 | - <View style={[styles.tertiaryGroupedBG, styles.central]}> | 37 | + <Card round> |
| 73 | - <Text style={styles.primaryLabel}> | 38 | + {Object.keys(rainbow).map((name) => { |
| 74 | - {'Grouped Background' + | 39 | + const color = rainbow[name as keyof typeof rainbow]; |
| 75 | - (inDarkMode ? ', same as background in dark mode' : '')} | 40 | + return ( |
| 76 | - </Text> | 41 | + <ListItem |
| 77 | - </View> | 42 | + title={name} |
| 78 | - </View> | 43 | + key={name} |
| 79 | - </View> | 44 | + titleStyle={{ |
| 45 | + color: color[currentMode], | ||
| 46 | + }} | ||
| 47 | + rightElement={ | ||
| 48 | + <> | ||
| 49 | + <View | ||
| 50 | + style={[ | ||
| 51 | + styles.rightSquare, | ||
| 52 | + { backgroundColor: color.light }, | ||
| 53 | + ]} | ||
| 54 | + /> | ||
| 55 | + <View | ||
| 56 | + style={[ | ||
| 57 | + styles.rightSquare, | ||
| 58 | + { backgroundColor: color.dark }, | ||
| 59 | + ]} | ||
| 60 | + /> | ||
| 61 | + </> | ||
| 62 | + } | ||
| 63 | + /> | ||
| 64 | + ); | ||
| 65 | + })} | ||
| 66 | + </Card> | ||
| 80 | </BGScroll> | 67 | </BGScroll> |
| 81 | ); | 68 | ); |
| 82 | }; | 69 | }; |
| 70 | +DesignList.whyDidYouRender = true; | ||
| 71 | +export default DesignList; |
| @@ -6,7 +6,10 @@ import { MainTabScreenProps } from '../type/Navigation'; | @@ -6,7 +6,10 @@ import { MainTabScreenProps } from '../type/Navigation'; | ||
| 6 | 6 | ||
| 7 | declare var global: { HermesInternal: null | {} }; | 7 | declare var global: { HermesInternal: null | {} }; |
| 8 | 8 | ||
| 9 | -export default ({ navigation, route }: MainTabScreenProps<'SystemInfo'>) => { | 9 | +const SystemInfo = ({ |
| 10 | + navigation, | ||
| 11 | + route, | ||
| 12 | +}: MainTabScreenProps<'SystemInfo'>) => { | ||
| 10 | const { width, height, fontScale, scale } = useWindowDimensions(); | 13 | const { width, height, fontScale, scale } = useWindowDimensions(); |
| 11 | return ( | 14 | return ( |
| 12 | <BGScroll white> | 15 | <BGScroll white> |
| @@ -49,3 +52,5 @@ export default ({ navigation, route }: MainTabScreenProps<'SystemInfo'>) => { | @@ -49,3 +52,5 @@ export default ({ navigation, route }: MainTabScreenProps<'SystemInfo'>) => { | ||
| 49 | </BGScroll> | 52 | </BGScroll> |
| 50 | ); | 53 | ); |
| 51 | }; | 54 | }; |
| 55 | + | ||
| 56 | +export default SystemInfo; |
| @@ -841,6 +841,14 @@ | @@ -841,6 +841,14 @@ | ||
| 841 | dependencies: | 841 | dependencies: |
| 842 | "@hapi/hoek" "^8.3.0" | 842 | "@hapi/hoek" "^8.3.0" |
| 843 | 843 | ||
| 844 | +"@huse/previous-value@^1.0.1": | ||
| 845 | + version "1.0.1" | ||
| 846 | + resolved "https://registry.npm.taobao.org/@huse/previous-value/download/@huse/previous-value-1.0.1.tgz#77807e59b26e2cd86ebb6aac295163a71bbf1099" | ||
| 847 | + integrity sha1-d4B+WbJuLNhuu2qsKVFjpxu/EJk= | ||
| 848 | + dependencies: | ||
| 849 | + fast-deep-equal "^3.1.1" | ||
| 850 | + shallowequal "^1.1.0" | ||
| 851 | + | ||
| 844 | "@jest/console@^24.7.1", "@jest/console@^24.9.0": | 852 | "@jest/console@^24.7.1", "@jest/console@^24.9.0": |
| 845 | version "24.9.0" | 853 | version "24.9.0" |
| 846 | resolved "https://registry.npm.taobao.org/@jest/console/download/@jest/console-24.9.0.tgz?cache=0&sync_timestamp=1585823724080&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40jest%2Fconsole%2Fdownload%2F%40jest%2Fconsole-24.9.0.tgz#79b1bc06fb74a8cfb01cbdedf945584b1b9707f0" | 854 | resolved "https://registry.npm.taobao.org/@jest/console/download/@jest/console-24.9.0.tgz?cache=0&sync_timestamp=1585823724080&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40jest%2Fconsole%2Fdownload%2F%40jest%2Fconsole-24.9.0.tgz#79b1bc06fb74a8cfb01cbdedf945584b1b9707f0" |
| @@ -1388,6 +1396,13 @@ | @@ -1388,6 +1396,13 @@ | ||
| 1388 | semver "^6.3.0" | 1396 | semver "^6.3.0" |
| 1389 | tsutils "^3.17.1" | 1397 | tsutils "^3.17.1" |
| 1390 | 1398 | ||
| 1399 | +"@welldone-software/why-did-you-render@^4.0.7": | ||
| 1400 | + version "4.0.7" | ||
| 1401 | + resolved "https://registry.npm.taobao.org/@welldone-software/why-did-you-render/download/@welldone-software/why-did-you-render-4.0.7.tgz#13c81eef665a34911c029dff821b23cd2495567b" | ||
| 1402 | + integrity sha1-E8ge72ZaNJEcAp3/ghsjzSSVVns= | ||
| 1403 | + dependencies: | ||
| 1404 | + lodash "^4" | ||
| 1405 | + | ||
| 1391 | JSONStream@^1.0.4: | 1406 | JSONStream@^1.0.4: |
| 1392 | version "1.3.5" | 1407 | version "1.3.5" |
| 1393 | resolved "https://registry.npm.taobao.org/JSONStream/download/JSONStream-1.3.5.tgz#3208c1f08d3a4d99261ab64f92302bc15e111ca0" | 1408 | resolved "https://registry.npm.taobao.org/JSONStream/download/JSONStream-1.3.5.tgz#3208c1f08d3a4d99261ab64f92302bc15e111ca0" |
| @@ -5271,7 +5286,7 @@ lodash.throttle@^4.1.1: | @@ -5271,7 +5286,7 @@ lodash.throttle@^4.1.1: | ||
| 5271 | resolved "https://registry.npm.taobao.org/lodash.throttle/download/lodash.throttle-4.1.1.tgz#c23e91b710242ac70c37f1e1cda9274cc39bf2f4" | 5286 | resolved "https://registry.npm.taobao.org/lodash.throttle/download/lodash.throttle-4.1.1.tgz#c23e91b710242ac70c37f1e1cda9274cc39bf2f4" |
| 5272 | integrity sha1-wj6RtxAkKscMN/HhzaknTMOb8vQ= | 5287 | integrity sha1-wj6RtxAkKscMN/HhzaknTMOb8vQ= |
| 5273 | 5288 | ||
| 5274 | -lodash@4.17.15, lodash@^4.0.0, lodash@^4.17.10, lodash@^4.17.11, lodash@^4.17.12, lodash@^4.17.13, lodash@^4.17.14, lodash@^4.17.15, lodash@^4.17.4, lodash@^4.2.1, lodash@^4.3.0: | 5289 | +lodash@4.17.15, lodash@^4, lodash@^4.0.0, lodash@^4.17.10, lodash@^4.17.11, lodash@^4.17.12, lodash@^4.17.13, lodash@^4.17.14, lodash@^4.17.15, lodash@^4.17.4, lodash@^4.2.1, lodash@^4.3.0: |
| 5275 | version "4.17.15" | 5290 | version "4.17.15" |
| 5276 | resolved "https://registry.npm.taobao.org/lodash/download/lodash-4.17.15.tgz?cache=0&sync_timestamp=1571657272199&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Flodash%2Fdownload%2Flodash-4.17.15.tgz#b447f6670a0455bbfeedd11392eff330ea097548" | 5291 | resolved "https://registry.npm.taobao.org/lodash/download/lodash-4.17.15.tgz?cache=0&sync_timestamp=1571657272199&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Flodash%2Fdownload%2Flodash-4.17.15.tgz#b447f6670a0455bbfeedd11392eff330ea097548" |
| 5277 | integrity sha1-tEf2ZwoEVbv+7dETku/zMOoJdUg= | 5292 | integrity sha1-tEf2ZwoEVbv+7dETku/zMOoJdUg= |
| @@ -7261,6 +7276,11 @@ setprototypeof@1.1.1: | @@ -7261,6 +7276,11 @@ setprototypeof@1.1.1: | ||
| 7261 | resolved "https://registry.npm.taobao.org/setprototypeof/download/setprototypeof-1.1.1.tgz#7e95acb24aa92f5885e0abef5ba131330d4ae683" | 7276 | resolved "https://registry.npm.taobao.org/setprototypeof/download/setprototypeof-1.1.1.tgz#7e95acb24aa92f5885e0abef5ba131330d4ae683" |
| 7262 | integrity sha1-fpWsskqpL1iF4KvvW6ExMw1K5oM= | 7277 | integrity sha1-fpWsskqpL1iF4KvvW6ExMw1K5oM= |
| 7263 | 7278 | ||
| 7279 | +shallowequal@^1.1.0: | ||
| 7280 | + version "1.1.0" | ||
| 7281 | + resolved "https://registry.npm.taobao.org/shallowequal/download/shallowequal-1.1.0.tgz#188d521de95b9087404fd4dcb68b13df0ae4e7f8" | ||
| 7282 | + integrity sha1-GI1SHelbkIdAT9TctosT3wrk5/g= | ||
| 7283 | + | ||
| 7264 | shebang-command@^1.2.0: | 7284 | shebang-command@^1.2.0: |
| 7265 | version "1.2.0" | 7285 | version "1.2.0" |
| 7266 | resolved "https://registry.npm.taobao.org/shebang-command/download/shebang-command-1.2.0.tgz#44aac65b695b03398968c39f363fee5deafdf1ea" | 7286 | resolved "https://registry.npm.taobao.org/shebang-command/download/shebang-command-1.2.0.tgz#44aac65b695b03398968c39f363fee5deafdf1ea" |
-
Please register or login to post a comment