Phecda

feat: add RNCWebView

... ... @@ -4,6 +4,7 @@
"parser": "@typescript-eslint/parser",
"plugins": ["@typescript-eslint"],
"rules": {
"@typescript-eslint/no-unused-vars": "off"
"@typescript-eslint/no-unused-vars": "off",
"no-console": "warn"
}
}
... ...
... ... @@ -235,6 +235,8 @@ PODS:
- React-jsinspector (0.62.1)
- react-native-safe-area-context (0.7.3):
- React
- react-native-webview (9.1.1):
- React
- React-RCTActionSheet (0.62.1):
- React-Core/RCTActionSheetHeaders (= 0.62.1)
- React-RCTAnimation (0.62.1):
... ... @@ -294,6 +296,8 @@ PODS:
- React-cxxreact (= 0.62.1)
- React-jsi (= 0.62.1)
- ReactCommon/callinvoker (= 0.62.1)
- ReactNativeART (1.2.0):
- React
- ReactNativeDarkMode (0.2.2):
- React
- RNCMaskedView (0.1.7):
... ... @@ -335,6 +339,7 @@ DEPENDENCIES:
- React-jsiexecutor (from `../node_modules/react-native/ReactCommon/jsiexecutor`)
- React-jsinspector (from `../node_modules/react-native/ReactCommon/jsinspector`)
- react-native-safe-area-context (from `../node_modules/react-native-safe-area-context`)
- react-native-webview (from `../node_modules/react-native-webview`)
- React-RCTActionSheet (from `../node_modules/react-native/Libraries/ActionSheetIOS`)
- React-RCTAnimation (from `../node_modules/react-native/Libraries/NativeAnimation`)
- React-RCTBlob (from `../node_modules/react-native/Libraries/Blob`)
... ... @@ -346,6 +351,7 @@ DEPENDENCIES:
- React-RCTVibration (from `../node_modules/react-native/Libraries/Vibration`)
- ReactCommon/callinvoker (from `../node_modules/react-native/ReactCommon`)
- ReactCommon/turbomodule/core (from `../node_modules/react-native/ReactCommon`)
- "ReactNativeART (from `../node_modules/@react-native-community/art`)"
- ReactNativeDarkMode (from `../node_modules/react-native-dark-mode`)
- "RNCMaskedView (from `../node_modules/@react-native-community/masked-view`)"
- RNDeviceInfo (from `../node_modules/react-native-device-info`)
... ... @@ -401,6 +407,8 @@ EXTERNAL SOURCES:
:path: "../node_modules/react-native/ReactCommon/jsinspector"
react-native-safe-area-context:
:path: "../node_modules/react-native-safe-area-context"
react-native-webview:
:path: "../node_modules/react-native-webview"
React-RCTActionSheet:
:path: "../node_modules/react-native/Libraries/ActionSheetIOS"
React-RCTAnimation:
... ... @@ -421,6 +429,8 @@ EXTERNAL SOURCES:
:path: "../node_modules/react-native/Libraries/Vibration"
ReactCommon:
:path: "../node_modules/react-native/ReactCommon"
ReactNativeART:
:path: "../node_modules/@react-native-community/art"
ReactNativeDarkMode:
:path: "../node_modules/react-native-dark-mode"
RNCMaskedView:
... ... @@ -465,6 +475,7 @@ SPEC CHECKSUMS:
React-jsiexecutor: e9698dee4fd43ceb44832baf15d5745f455b0157
React-jsinspector: f74a62727e5604119abd4a1eda52c0a12144bcd5
react-native-safe-area-context: e200d4433aba6b7e60b52da5f37af11f7a0b0392
react-native-webview: 0633fd7861a9bd7a80bacaee7da763c3afc248fa
React-RCTActionSheet: af8f28dd82fec89b8fe29637b8c779829e016a88
React-RCTAnimation: 0d21fff7c20fb8ee41de5f2ebb63221127febd96
React-RCTBlob: 9496bd93130b22069bfbc5d35e98653dae7c35c6
... ... @@ -475,6 +486,7 @@ SPEC CHECKSUMS:
React-RCTText: 239e040f401505001327a109f9188a4e6dad1bd2
React-RCTVibration: 072c3b427dd29e730c2ee5bfc509cf5054741a50
ReactCommon: 3585806280c51d5c2c0d3aa5a99014c3badb629d
ReactNativeART: 78edc68dd4a1e675338cd0cd113319cf3a65f2ab
ReactNativeDarkMode: 0178ffca3b10f6a7c9f49d6f9810232b328fa949
RNCMaskedView: 76c40a1d41c3e2535df09246a2b5487f04de0814
RNDeviceInfo: 6a3d16fce033f6979c4a6a41e62244d183e8c765
... ...
... ... @@ -11,7 +11,10 @@
"commit": "git-cz"
},
"dependencies": {
"@huse/boolean": "^1.0.2",
"@huse/immer": "^1.0.2",
"@huse/previous-value": "^1.0.1",
"@react-native-community/art": "^1.2.0",
"@react-native-community/masked-view": "^0.1.7",
"@react-navigation/bottom-tabs": "^5.2.5",
"@react-navigation/drawer": "^5.4.0",
... ... @@ -24,11 +27,14 @@
"react-native-device-info": "^5.5.4",
"react-native-elements": "^1.2.7",
"react-native-gesture-handler": "^1.6.1",
"react-native-progress": "^4.1.2",
"react-native-reanimated": "^1.7.1",
"react-native-safe-area-context": "^0.7.3",
"react-native-screens": "^2.4.0",
"react-native-tab-view": "^2.13.0",
"react-native-vector-icons": "^6.6.0"
"react-native-vector-icons": "^6.6.0",
"react-native-webview": "9.1.1",
"url-parse": "^1.4.7"
},
"devDependencies": {
"@babel/core": "^7.6.2",
... ... @@ -39,6 +45,7 @@
"@types/jest": "^24.0.24",
"@types/react-native": "^0.62.0",
"@types/react-test-renderer": "16.9.2",
"@types/url-parse": "^1.4.3",
"@typescript-eslint/eslint-plugin": "^2.27.0",
"@typescript-eslint/parser": "^2.27.0",
"@welldone-software/why-did-you-render": "^4.0.7",
... ...
... ... @@ -16,6 +16,8 @@ import DesignList from './DesignList';
import { useDarkMode } from 'react-native-dark-mode';
import { themeForNav } from '../design';
import RNDeviceInfoList from './RNDeviceInfo';
import WebviewScreen from './WebviewScreen';
import { Platform } from 'react-native';
const MainTab = createBottomTabNavigator<MainTabParamList>();
... ... @@ -74,7 +76,7 @@ const Home = () => {
const MainStack = createStackNavigator<MainStackParamList>();
export default () => {
const Container = () => {
const inDarkMode = useDarkMode();
return (
<NavigationContainer
... ... @@ -96,7 +98,17 @@ export default () => {
name="RNDeviceInfoList"
component={RNDeviceInfoList}
/>
<MainStack.Screen
name="WebviewScreen"
component={WebviewScreen}
options={({ navigation, route }) => ({
// FIXME: https://github.com/react-native-community/react-native-webview/issues/575#issuecomment-587267906
animationEnabled: Platform.OS === 'ios',
})}
/>
</MainStack.Navigator>
</NavigationContainer>
);
};
export default Container;
... ...
... ... @@ -48,6 +48,15 @@ const SystemInfo = ({
onPress={() => navigation.navigate('RNDeviceInfoList')}
chevron
/>
<Divider />
<ListItem
title={'RNCWebview'}
onPress={() =>
navigation.navigate('WebviewScreen', {
uri: 'https://www.baidu.com',
})
}
/>
</Card>
</BGScroll>
);
... ...
import React, { useCallback } from 'react';
import RNCWebView, { WebViewNavigation } from 'react-native-webview';
import { WebviewState, WebviewActions, webActions } from './reducer';
import {
WebViewProgressEvent,
WebViewErrorEvent,
OnShouldStartLoadWithRequest,
} from 'react-native-webview/lib/WebViewTypes';
import ErrorView from './ErrorView';
import { Linking } from 'react-native';
const Body = React.forwardRef<
RNCWebView,
{
state: WebviewState;
dispatch: React.Dispatch<WebviewActions>;
initialUrl: string;
}
>(({ state, dispatch, initialUrl }, ref) => {
const onNavigationStateChange = useCallback(
(s: WebViewNavigation) => {
dispatch(webActions.changeNavigationState(s));
},
[dispatch]
);
const onLoadProgress = useCallback(
(s: WebViewProgressEvent) => {
dispatch(webActions.onLoadProgress(s.nativeEvent));
},
[dispatch]
);
const onError = useCallback(
(s: WebViewErrorEvent) => {
dispatch(webActions.onLoadError(s.nativeEvent));
},
[dispatch]
);
const shouldRequest: OnShouldStartLoadWithRequest = useCallback(
(request) => {
const { url } = request;
if (url.startsWith('http') || url === 'about:blank') {
return true;
} else {
dispatch(webActions.changeNavigationState(request));
Linking.canOpenURL(url)
.then((canOpen) => {
if (canOpen) {
return Linking.openURL(url);
}
})
.catch(() => {});
return false;
}
},
[dispatch]
);
return (
<RNCWebView
ref={ref}
source={{ uri: initialUrl }}
onNavigationStateChange={onNavigationStateChange}
onLoadProgress={onLoadProgress}
onError={onError}
onShouldStartLoadWithRequest={shouldRequest}
renderError={(_, code, description) => (
<ErrorView code={code} description={description} />
)}
/>
);
});
export default Body;
... ...
import React from 'react';
import { SafeAreaView, Text, StyleSheet } from 'react-native';
import MaterialCommunityIcons from 'react-native-vector-icons/MaterialCommunityIcons';
import {
DynamicStyleSheet,
useDynamicStyleSheet,
useDynamicValue,
} from 'react-native-dark-mode';
import { colorPreset } from '../../design';
const dynamicStyles = new DynamicStyleSheet({
background: {
backgroundColor: colorPreset.backgroundColor.secondary,
...StyleSheet.absoluteFillObject,
alignItems: 'center',
justifyContent: 'center',
padding: 20,
},
errorCode: {
color: colorPreset.labelColor.primary,
},
description: {
color: colorPreset.labelColor.primary,
},
});
export default function ErrorView({
code,
description,
}: {
code: number;
description: string;
}) {
const styles = useDynamicStyleSheet(dynamicStyles);
const redColor = useDynamicValue(colorPreset.rainbow.red);
return (
<SafeAreaView style={styles.background}>
<MaterialCommunityIcons
name={'close-circle'}
size={60}
color={redColor}
/>
<Text style={styles.errorCode}>{code}</Text>
<Text style={styles.description}>{description}</Text>
</SafeAreaView>
);
}
... ...
import React, {
useState,
useCallback,
useEffect,
useLayoutEffect,
} from 'react';
import URL from 'url-parse';
import { useToggle } from '@huse/boolean';
import RNCWebview from 'react-native-webview';
import {
DynamicStyleSheet,
useDynamicStyleSheet,
useDynamicValue,
} from 'react-native-dark-mode';
import MaterialCommunityIcons from 'react-native-vector-icons/MaterialCommunityIcons';
import * as Progress from 'react-native-progress';
import {
Platform,
SafeAreaView,
View,
Text,
TouchableOpacity,
StyleSheet,
Animated,
TextInput,
NativeSyntheticEvent,
TextInputSubmitEditingEventData,
LayoutAnimation,
} from 'react-native';
import { colorPreset } from '../../design';
import { WebviewState, WebviewActions, webActions } from './reducer';
const dynamicStyles = new DynamicStyleSheet({
headerContainer: {
backgroundColor: colorPreset.backgroundColor.primary,
borderBottomWidth: StyleSheet.hairlineWidth,
borderBottomColor: colorPreset.separator.opaque,
},
containerStyle: {
backgroundColor: colorPreset.backgroundColor.secondary,
borderRadius: 10,
margin: 10,
...Platform.select({
ios: {
height: 36,
marginTop: 4,
},
android: {
height: 36,
},
}),
overflow: 'hidden',
},
labelContainer: {
flexDirection: 'row',
flex: 1,
alignItems: 'center',
},
hostLabel: {
color: colorPreset.labelColor.primary,
flex: 1,
textAlign: 'center',
fontSize: 17,
},
refreshButton: {
width: 36,
height: 36,
justifyContent: 'center',
alignItems: 'center',
},
inputContainerStyle: {
backgroundColor: colorPreset.backgroundColor.secondary,
},
inputStyle: {
flex: 1,
paddingHorizontal: 16,
},
progressBar: {
position: 'absolute',
left: 0,
right: 0,
bottom: 0,
height: 2,
},
});
interface Props {
state: WebviewState;
dispatch: React.Dispatch<WebviewActions>;
webview: React.RefObject<RNCWebview>;
}
// EXPERIMENT
function WebviewHeader({ state, dispatch, webview }: Props) {
const [uri, setUri] = useState<URL>();
const [focused, toggleFocused] = useToggle(false);
const progressBarOpacity = new Animated.Value(1);
const { url, progress, loading } = state;
useEffect(() => {
const newUrl = new URL(url);
setUri(newUrl);
}, [url]);
useEffect(() => {
if (progress === 1) {
Animated.timing(progressBarOpacity, {
toValue: 0,
useNativeDriver: true,
duration: 1000,
}).start();
}
}, [progress, progressBarOpacity]);
const onSubmitEditing = useCallback(
(e: NativeSyntheticEvent<TextInputSubmitEditingEventData>) => {
toggleFocused();
dispatch(webActions.loadText(e.nativeEvent.text));
},
[toggleFocused, dispatch]
);
const onPressLoading = useCallback(() => {
if (loading) {
webview.current?.stopLoading();
} else {
webview.current?.reload();
}
}, [loading, webview]);
useLayoutEffect(() => {
LayoutAnimation.configureNext(LayoutAnimation.Presets.easeInEaseOut);
}, [focused]);
const styles = useDynamicStyleSheet(dynamicStyles);
const redColor = useDynamicValue(colorPreset.rainbow.red);
const greenColor = useDynamicValue(colorPreset.rainbow.green);
const primaryLabelColor = useDynamicValue(colorPreset.labelColor.primary);
return (
<SafeAreaView style={styles.headerContainer}>
<View style={styles.containerStyle}>
{focused ? (
<View style={styles.labelContainer}>
<TextInput
defaultValue={url}
onSubmitEditing={onSubmitEditing}
style={styles.inputStyle}
underlineColorAndroid="transparent"
textContentType="URL"
selectTextOnFocus
keyboardType="url"
returnKeyType="go"
autoCapitalize="none"
autoCorrect={false}
autoFocus
onBlur={(e) => {
toggleFocused();
}}
clearButtonMode="while-editing"
/>
</View>
) : (
<TouchableOpacity
activeOpacity={1}
onPress={toggleFocused}
style={styles.labelContainer}
>
<View style={styles.refreshButton}>
<MaterialCommunityIcons
name={
uri?.protocol === 'https:'
? 'shield-outline'
: 'shield-off-outline'
}
color={uri?.protocol === 'https:' ? greenColor : redColor}
size={20}
/>
</View>
<Text style={styles.hostLabel}>
{uri?.hostname.replace(/^www\./, '')}
</Text>
<TouchableOpacity
onPress={onPressLoading}
style={styles.refreshButton}
>
<MaterialCommunityIcons
name={loading ? 'close' : 'refresh'}
color={primaryLabelColor}
size={20}
/>
</TouchableOpacity>
<Animated.View
style={[{ opacity: progressBarOpacity }, styles.progressBar]}
>
<Progress.Bar
progress={progress}
borderWidth={0}
borderRadius={0}
width={null}
useNativeDriver
/>
</Animated.View>
</TouchableOpacity>
)}
</View>
</SafeAreaView>
);
}
export default WebviewHeader;
... ...
import React, { useEffect, useMemo, useState, useRef } from 'react';
import { Animated, StyleSheet } from 'react-native';
import * as Progress from 'react-native-progress';
const styles = StyleSheet.create({
progressBar: {
position: 'absolute',
left: 0,
right: 0,
top: 0,
height: 1,
},
});
export default function ProgressBar({
progress,
loading,
}: {
progress: number;
loading: boolean;
}) {
const progressBarOpacity = useRef(new Animated.Value(1)).current;
useEffect(() => {
if (!loading) {
Animated.timing(progressBarOpacity, {
toValue: 0,
useNativeDriver: true,
duration: 1000,
}).start();
} else {
progressBarOpacity.setValue(1);
}
}, [loading, progressBarOpacity]);
return (
<Animated.View
style={[{ opacity: progressBarOpacity }, styles.progressBar]}
>
<Progress.Bar
progress={progress}
borderWidth={0}
borderRadius={0}
width={null}
height={4}
useNativeDriver
/>
</Animated.View>
);
}
... ...
import React, { useCallback } from 'react';
import { SafeAreaView, TouchableOpacity, StyleSheet, View } from 'react-native';
import RNCWebview from 'react-native-webview';
import EvilIcons from 'react-native-vector-icons/EvilIcons';
import { WebviewState, WebviewActions } from './reducer';
import {
DynamicStyleSheet,
useDynamicStyleSheet,
useDynamicValue,
} from 'react-native-dark-mode';
import { colorPreset } from '../../design';
interface Props {
state: WebviewState;
dispatch: React.Dispatch<WebviewActions>;
webview: React.RefObject<RNCWebview>;
}
const dynamicStyles = new DynamicStyleSheet({
background: {
backgroundColor: colorPreset.backgroundColor.primary,
borderTopWidth: StyleSheet.hairlineWidth,
borderTopColor: colorPreset.separator.opaque,
},
container: {
height: 44,
flexDirection: 'row',
justifyContent: 'space-evenly',
},
button: {
width: 44,
height: 44,
justifyContent: 'center',
alignItems: 'center',
},
});
const Toolbar = ({ state, webview }: Props) => {
const { canGoBack, canGoForward, loading } = state;
const styles = useDynamicStyleSheet(dynamicStyles);
const primaryLabelColor = useDynamicValue(colorPreset.labelColor.primary);
const secondaryLabelColor = useDynamicValue(colorPreset.labelColor.tertiary);
const onPressLoading = useCallback(() => {
if (loading) {
webview.current?.stopLoading();
} else {
webview.current?.reload();
}
}, [loading, webview]);
return (
<SafeAreaView style={styles.background}>
<View style={styles.container}>
<TouchableOpacity
style={styles.button}
disabled={!canGoBack}
onPress={() => webview.current?.goBack()}
>
<EvilIcons
name="chevron-left"
size={40}
color={canGoBack ? primaryLabelColor : secondaryLabelColor}
/>
</TouchableOpacity>
<TouchableOpacity
style={styles.button}
disabled={!canGoForward}
onPress={() => webview.current?.goForward()}
>
<EvilIcons
name="chevron-right"
size={40}
color={canGoForward ? primaryLabelColor : secondaryLabelColor}
/>
</TouchableOpacity>
<TouchableOpacity style={styles.button} onPress={onPressLoading}>
<EvilIcons
name={loading ? 'close' : 'refresh'}
size={40}
color={primaryLabelColor}
/>
</TouchableOpacity>
</View>
</SafeAreaView>
);
};
export default Toolbar;
... ...
import React, { useRef, useEffect, useReducer } from 'react';
import { useImmerReducer } from '@huse/immer';
import RNCWebview from 'react-native-webview';
import { reducer, defaultState, webActions, WebviewActions } from './reducer';
import { BGView } from '../../component/View';
import Header from './Header';
import Body from './Body';
import { MainStackScreenProps } from '../../type/Navigation';
import Toolbar from './Toolbar';
import ProgressBar from './ProgressBar';
const WebviewScreen = ({
navigation,
route,
}: MainStackScreenProps<'WebviewScreen'>) => {
const paramUri = route.params?.uri ?? 'https://about:blank';
const [state, dispatch] = useImmerReducer(reducer, {
...defaultState,
url: paramUri,
});
const webview = useRef<RNCWebview>(null);
return (
<BGView>
<Body
initialUrl={paramUri}
state={state}
dispatch={dispatch}
ref={webview}
/>
<ProgressBar progress={state.progress} loading={state.loading} />
<Toolbar state={state} dispatch={dispatch} webview={webview} />
</BGView>
);
};
export default WebviewScreen;
... ...
import React, { Reducer } from 'react';
import { WebViewNavigation } from 'react-native-webview';
import { ImmerReducer } from '@huse/immer';
import {
WebViewError,
WebViewProgressEvent,
WebViewNativeProgressEvent,
WebViewNativeEvent,
} from 'react-native-webview/lib/WebViewTypes';
export type WebviewActionTypes =
| 'ChangeNavigationState'
| 'OnLoadError'
| 'OnLoadProgress'
| 'LoadText';
type PayloadAction<Type extends WebviewActionTypes, Payload> = {
type: Type;
payload: Payload;
};
export type WebviewActions =
| PayloadAction<'ChangeNavigationState', WebViewNavigation>
| PayloadAction<'LoadText', string>
| PayloadAction<'OnLoadError', WebViewError>
| PayloadAction<'OnLoadProgress', WebViewNativeProgressEvent>;
type PayloadOf<
A extends { type: string; payload: any },
T extends string
> = A extends {
type: T;
payload: infer R;
}
? R
: never;
const createAction = <
T extends WebviewActionTypes,
P extends PayloadOf<WebviewActions, T>
>(
type: T
) => (payload: P) => ({
type,
payload,
});
export const webActions = {
changeNavigationState: createAction('ChangeNavigationState'),
onLoadError: createAction('OnLoadError'),
onLoadProgress: createAction('OnLoadProgress'),
loadText: createAction('LoadText'),
};
export type WebviewState = WebViewNativeEvent & {
domain?: string;
code?: number;
description?: string;
progress: number;
};
export const defaultState: WebviewState = {
canGoBack: false,
canGoForward: false,
url: 'https://about:blank',
title: '',
lockIdentifier: 0,
loading: false,
progress: 0,
};
export const reducer: ImmerReducer<WebviewState, WebviewActions> = (
state,
action
) => {
switch (action.type) {
case 'ChangeNavigationState':
case 'OnLoadProgress':
case 'OnLoadError':
return { ...state, ...action.payload };
case 'LoadText':
state.url = action.payload;
break;
}
};
... ...
... ... @@ -10,6 +10,7 @@ export type MainTabParamList = {
export type MainStackParamList = {
MainTab: undefined;
RNDeviceInfoList: undefined;
WebviewScreen: { uri: string } | undefined;
};
export type MainTabScreenProps<RouteName extends keyof MainTabParamList> = {
... ...
... ... @@ -841,6 +841,27 @@
dependencies:
"@hapi/hoek" "^8.3.0"
"@huse/boolean@^1.0.2":
version "1.0.2"
resolved "https://registry.npm.taobao.org/@huse/boolean/download/@huse/boolean-1.0.2.tgz#139cfe12703ad76dbc7a67c92a82d853d7e0ff89"
integrity sha1-E5z+EnA61228emfJKoLYU9fg/4k=
dependencies:
"@huse/methods" "^1.1.1"
"@huse/immer@^1.0.2":
version "1.0.2"
resolved "https://registry.npm.taobao.org/@huse/immer/download/@huse/immer-1.0.2.tgz#e1bad0884284864c4ea1694377c9dc91aa7741ca"
integrity sha1-4brQiEKEhkxOoWlDd8nckap3Qco=
dependencies:
immer "^6.0.1"
"@huse/methods@^1.1.1":
version "1.1.1"
resolved "https://registry.npm.taobao.org/@huse/methods/download/@huse/methods-1.1.1.tgz#9e1d417cdff5a068319ac1b2282b1fd784015f58"
integrity sha1-nh1BfN/1oGgxmsGyKCsf14QBX1g=
dependencies:
"@huse/immer" "^1.0.2"
"@huse/previous-value@^1.0.1":
version "1.0.1"
resolved "https://registry.npm.taobao.org/@huse/previous-value/download/@huse/previous-value-1.0.1.tgz#77807e59b26e2cd86ebb6aac295163a71bbf1099"
... ... @@ -1016,6 +1037,15 @@
mkdirp "^0.5.1"
rimraf "^2.5.2"
"@react-native-community/art@^1.1.2", "@react-native-community/art@^1.2.0":
version "1.2.0"
resolved "https://registry.npm.taobao.org/@react-native-community/art/download/@react-native-community/art-1.2.0.tgz#386d95393f6042d9006f9d4bc6063fb898794460"
integrity sha1-OG2VOT9gQtkAb51LxgY/uJh5RGA=
dependencies:
art "^0.10.3"
invariant "^2.2.4"
prop-types "^15.7.2"
"@react-native-community/cli-debugger-ui@^4.2.1":
version "4.2.1"
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"
... ... @@ -1334,6 +1364,11 @@
resolved "https://registry.npm.taobao.org/@types/stack-utils/download/@types/stack-utils-1.0.1.tgz#0a851d3bd96498fa25c33ab7278ed3bd65f06c3e"
integrity sha1-CoUdO9lkmPolwzq3J47TvWXwbD4=
"@types/url-parse@^1.4.3":
version "1.4.3"
resolved "https://registry.npm.taobao.org/@types/url-parse/download/@types/url-parse-1.4.3.tgz#fba49d90f834951cb000a674efee3d6f20968329"
integrity sha1-+6SdkPg0lRywAKZ07+49byCWgyk=
"@types/yargs-parser@*":
version "15.0.0"
resolved "https://registry.npm.taobao.org/@types/yargs-parser/download/@types/yargs-parser-15.0.0.tgz?cache=0&sync_timestamp=1580844965117&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40types%2Fyargs-parser%2Fdownload%2F%40types%2Fyargs-parser-15.0.0.tgz#cb3f9f741869e20cce330ffbeb9271590483882d"
... ... @@ -1685,6 +1720,11 @@ arrify@^1.0.1:
resolved "https://registry.npm.taobao.org/arrify/download/arrify-1.0.1.tgz#898508da2226f380df904728456849c1501a4b0d"
integrity sha1-iYUI2iIm84DfkEcoRWhJwVAaSw0=
art@^0.10.3:
version "0.10.3"
resolved "https://registry.npm.taobao.org/art/download/art-0.10.3.tgz#b01d84a968ccce6208df55a733838c96caeeaea2"
integrity sha1-sB2EqWjMzmII31WnM4OMlsrurqI=
asap@~2.0.3:
version "2.0.6"
resolved "https://registry.npm.taobao.org/asap/download/asap-2.0.6.tgz#e50347611d7e690943208bbdafebcbc2fb866d46"
... ... @@ -1707,6 +1747,13 @@ assign-symbols@^1.0.0:
resolved "https://registry.npm.taobao.org/assign-symbols/download/assign-symbols-1.0.0.tgz#59667f41fadd4f20ccbc2bb96b8d4f7f78ec0367"
integrity sha1-WWZ/QfrdTyDMvCu5a41Pf3jsA2c=
assign@>=0.1.7:
version "0.1.7"
resolved "https://registry.npm.taobao.org/assign/download/assign-0.1.7.tgz#e63bfe3a887b8630913c27663e4cc9bff1ddd25f"
integrity sha1-5jv+Ooh7hjCRPCdmPkzJv/Hd0l8=
dependencies:
fusing "0.4.x"
astral-regex@^1.0.0:
version "1.0.0"
resolved "https://registry.npm.taobao.org/astral-regex/download/astral-regex-1.0.0.tgz#6c8c3fb827dd43ee3918f27b82782ab7658a6fd9"
... ... @@ -1717,6 +1764,11 @@ async-limiter@~1.0.0:
resolved "https://registry.npm.taobao.org/async-limiter/download/async-limiter-1.0.1.tgz#dd379e94f0db8310b08291f9d64c3209766617fd"
integrity sha1-3TeelPDbgxCwgpH51kwyCXZmF/0=
async@0.6.x:
version "0.6.2"
resolved "https://registry.npm.taobao.org/async/download/async-0.6.2.tgz#41fd038a3812c0a8bc1842ecf08ba63eb0392bef"
integrity sha1-Qf0DijgSwKi8GELs8IumPrA5K+8=
async@^2.4.0:
version "2.6.3"
resolved "https://registry.npm.taobao.org/async/download/async-2.6.3.tgz#d72625e2344a3656e3a3ad4fa749fa83299d82ff"
... ... @@ -1856,6 +1908,13 @@ babel-runtime@^6.23.0, babel-runtime@^6.26.0:
core-js "^2.4.0"
regenerator-runtime "^0.11.0"
back@1.0.x:
version "1.0.2"
resolved "https://registry.npm.taobao.org/back/download/back-1.0.2.tgz#a93f5e6ce69729984d5901a2bb16e3b01a4d6369"
integrity sha1-qT9ebOaXKZhNWQGiuxbjsBpNY2k=
dependencies:
xtend "^4.0.0"
balanced-match@^1.0.0:
version "1.0.0"
resolved "https://registry.npm.taobao.org/balanced-match/download/balanced-match-1.0.0.tgz#89b4d199ab2bee49de164ea02b89ce462d71b767"
... ... @@ -1962,7 +2021,7 @@ bser@2.1.1:
dependencies:
node-int64 "^0.4.0"
buffer-crc32@^0.2.13:
buffer-crc32@^0.2.13, buffer-crc32@~0.2.3:
version "0.2.13"
resolved "https://registry.npm.taobao.org/buffer-crc32/download/buffer-crc32-0.2.13.tgz#0d333e3f00eac50aa1454abd30ef8c2a5d9a7242"
integrity sha1-DTM+PwDqxQqhRUq9MO+MKl2ackI=
... ... @@ -2200,6 +2259,11 @@ collection-visit@^1.0.0:
map-visit "^1.0.0"
object-visit "^1.0.0"
color-convert@^0.5.0:
version "0.5.3"
resolved "https://registry.npm.taobao.org/color-convert/download/color-convert-0.5.3.tgz#bdb6c69ce660fadffe0b0007cc447e1b9f7282bd"
integrity sha1-vbbGnOZg+t/+CwAHzER+G59ygr0=
color-convert@^1.9.0, color-convert@^1.9.1:
version "1.9.3"
resolved "https://registry.npm.taobao.org/color-convert/download/color-convert-1.9.3.tgz#bb71850690e1f136567de629d2d5471deda4c1e8"
... ... @@ -2224,6 +2288,13 @@ color-name@^1.0.0, color-name@~1.1.4:
resolved "https://registry.npm.taobao.org/color-name/download/color-name-1.1.4.tgz#c2a09a87acbde69543de6f63fa3995c826c536a2"
integrity sha1-wqCah6y95pVD3m9j+jmVyCbFNqI=
color-string@^0.3.0:
version "0.3.0"
resolved "https://registry.npm.taobao.org/color-string/download/color-string-0.3.0.tgz#27d46fb67025c5c2fa25993bfbf579e47841b991"
integrity sha1-J9RvtnAlxcL6JZk7+/V55HhBuZE=
dependencies:
color-name "^1.0.0"
color-string@^1.5.2:
version "1.5.3"
resolved "https://registry.npm.taobao.org/color-string/download/color-string-1.5.3.tgz#c9bbc5f01b58b5492f3d6857459cb6590ce204cc"
... ... @@ -2237,6 +2308,14 @@ color-support@^1.1.3:
resolved "https://registry.npm.taobao.org/color-support/download/color-support-1.1.3.tgz#93834379a1cc9a0c61f82f52f0d04322251bd5a2"
integrity sha1-k4NDeaHMmgxh+C9S8NBDIiUb1aI=
color@0.8.x:
version "0.8.0"
resolved "https://registry.npm.taobao.org/color/download/color-0.8.0.tgz#890c07c3fd4e649537638911cf691e5458b6fca5"
integrity sha1-iQwHw/1OZJU3Y4kRz2keVFi2/KU=
dependencies:
color-convert "^0.5.0"
color-string "^0.3.0"
color@^3.1.0, color@^3.1.2:
version "3.1.2"
resolved "https://registry.npm.taobao.org/color/download/color-3.1.2.tgz#68148e7f85d41ad7649c5fa8c8106f098d229e10"
... ... @@ -2250,6 +2329,19 @@ colorette@^1.0.7:
resolved "https://registry.npm.taobao.org/colorette/download/colorette-1.1.0.tgz#1f943e5a357fac10b4e0f5aaef3b14cdc1af6ec7"
integrity sha1-H5Q+WjV/rBC04PWq7zsUzcGvbsc=
colornames@0.0.2:
version "0.0.2"
resolved "https://registry.npm.taobao.org/colornames/download/colornames-0.0.2.tgz#d811fd6c84f59029499a8ac4436202935b92be31"
integrity sha1-2BH9bIT1kClJmorEQ2ICk1uSvjE=
colorspace@1.0.x:
version "1.0.1"
resolved "https://registry.npm.taobao.org/colorspace/download/colorspace-1.0.1.tgz#c99c796ed31128b9876a52e1ee5ee03a4a719749"
integrity sha1-yZx5btMRKLmHalLh7l7gOkpxl0k=
dependencies:
color "0.8.x"
text-hex "0.0.x"
combined-stream@^1.0.6, combined-stream@~1.0.6:
version "1.0.8"
resolved "https://registry.npm.taobao.org/combined-stream/download/combined-stream-1.0.8.tgz#c3d45a8b34fd730631a110a8a2520682b31d5a7f"
... ... @@ -2346,7 +2438,7 @@ concat-map@0.0.1:
resolved "https://registry.npm.taobao.org/concat-map/download/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b"
integrity sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=
concat-stream@^1.6.0:
concat-stream@^1.6.0, concat-stream@^1.6.2:
version "1.6.2"
resolved "https://registry.npm.taobao.org/concat-stream/download/concat-stream-1.6.2.tgz#904bdf194cd3122fc675c77fc4ac3d4ff0fd1a34"
integrity sha1-kEvfGUzTEi/Gdcd/xKw9T/D9GjQ=
... ... @@ -2755,7 +2847,17 @@ debounce@^1.2.0:
resolved "https://registry.npm.taobao.org/debounce/download/debounce-1.2.0.tgz#44a540abc0ea9943018dc0eaa95cce87f65cd131"
integrity sha1-RKVAq8DqmUMBjcDqqVzOh/Zc0TE=
debug@2.6.9, debug@^2.2.0, debug@^2.3.3:
debug@0.7.x:
version "0.7.4"
resolved "https://registry.npm.taobao.org/debug/download/debug-0.7.4.tgz#06e1ea8082c2cb14e39806e22e2f6f757f92af39"
integrity sha1-BuHqgILCyxTjmAbiLi9vdX+Srzk=
debug@0.8.x:
version "0.8.1"
resolved "https://registry.npm.taobao.org/debug/download/debug-0.8.1.tgz#20ff4d26f5e422cb68a1bacbbb61039ad8c1c130"
integrity sha1-IP9NJvXkIstoobrLu2EDmtjBwTA=
debug@2.6.9, debug@^2.2.0, debug@^2.3.3, debug@^2.6.9:
version "2.6.9"
resolved "https://registry.npm.taobao.org/debug/download/debug-2.6.9.tgz#5d128515df134ff327e90a4c93f4e077a536341f"
integrity sha1-XRKFFd8TT/Mn6QpMk/Tgd6U2NB8=
... ... @@ -2878,6 +2980,15 @@ detect-newline@^2.1.0:
resolved "https://registry.npm.taobao.org/detect-newline/download/detect-newline-2.1.0.tgz#f41f1c10be4b00e87b5f13da680759f2c5bfd3e2"
integrity sha1-9B8cEL5LAOh7XxPaaAdZ8sW/0+I=
diagnostics@1.0.x:
version "1.0.1"
resolved "https://registry.npm.taobao.org/diagnostics/download/diagnostics-1.0.1.tgz#accdb080c82bb25d0dd73430a9e6a87fbb431541"
integrity sha1-rM2wgMgrsl0N1zQwqeaof7tDFUE=
dependencies:
colorspace "1.0.x"
enabled "1.0.x"
kuler "0.0.x"
diff-sequences@^24.9.0:
version "24.9.0"
resolved "https://registry.npm.taobao.org/diff-sequences/download/diff-sequences-24.9.0.tgz#5715d6244e2aa65f48bba0bc972db0b0b11e95b5"
... ... @@ -2937,6 +3048,16 @@ elegant-spinner@^1.0.1:
resolved "https://registry.npm.taobao.org/elegant-spinner/download/elegant-spinner-1.0.1.tgz#db043521c95d7e303fd8f345bedc3349cfb0729e"
integrity sha1-2wQ1IcldfjA/2PNFvtwzSc+wcp4=
emits@1.0.x:
version "1.0.2"
resolved "https://registry.npm.taobao.org/emits/download/emits-1.0.2.tgz#db20ec6668325071c313441e30cfe2a69ea73859"
integrity sha1-2yDsZmgyUHHDE0QeMM/ipp6nOFk=
emits@3.0.x:
version "3.0.0"
resolved "https://registry.npm.taobao.org/emits/download/emits-3.0.0.tgz#32752bba95e1707b219562384ab9bb8b1fd62f70"
integrity sha1-MnUrupXhcHshlWI4Srm7ix/WL3A=
emoji-regex@^7.0.1:
version "7.0.3"
resolved "https://registry.npm.taobao.org/emoji-regex/download/emoji-regex-7.0.3.tgz#933a04052860c85e83c122479c4748a8e4c72156"
... ... @@ -2947,6 +3068,13 @@ emoji-regex@^8.0.0:
resolved "https://registry.npm.taobao.org/emoji-regex/download/emoji-regex-8.0.0.tgz#e818fd69ce5ccfcb404594f842963bf53164cc37"
integrity sha1-6Bj9ac5cz8tARZT4QpY79TFkzDc=
enabled@1.0.x:
version "1.0.2"
resolved "https://registry.npm.taobao.org/enabled/download/enabled-1.0.2.tgz#965f6513d2c2d1c5f4652b64a2e3396467fc2f93"
integrity sha1-ll9lE9LC0cX0ZStkouM5ZGf8L5M=
dependencies:
env-variable "0.0.x"
encodeurl@~1.0.2:
version "1.0.2"
resolved "https://registry.npm.taobao.org/encodeurl/download/encodeurl-1.0.2.tgz#ad3ff4c86ec2d029322f5a02c3a9a606c95b3f59"
... ... @@ -2966,6 +3094,11 @@ end-of-stream@^1.1.0:
dependencies:
once "^1.4.0"
env-variable@0.0.x:
version "0.0.6"
resolved "https://registry.npm.taobao.org/env-variable/download/env-variable-0.0.6.tgz#74ab20b3786c545b62b4a4813ab8cf22726c9808"
integrity sha1-dKsgs3hsVFtitKSBOrjPInJsmAg=
envinfo@^7.1.0:
version "7.5.0"
resolved "https://registry.npm.taobao.org/envinfo/download/envinfo-7.5.0.tgz#91410bb6db262fb4f1409bd506e9ff57e91023f4"
... ... @@ -3017,16 +3150,16 @@ escape-html@~1.0.3:
resolved "https://registry.npm.taobao.org/escape-html/download/escape-html-1.0.3.tgz#0258eae4d3d0c0974de1c169188ef0051d1d1988"
integrity sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg=
escape-string-regexp@2.0.0, escape-string-regexp@^2.0.0:
version "2.0.0"
resolved "https://registry.npm.taobao.org/escape-string-regexp/download/escape-string-regexp-2.0.0.tgz#a30304e99daa32e23b2fd20f51babd07cffca344"
integrity sha1-owME6Z2qMuI7L9IPUbq9B8/8o0Q=
escape-string-regexp@^1.0.2, escape-string-regexp@^1.0.5:
version "1.0.5"
resolved "https://registry.npm.taobao.org/escape-string-regexp/download/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4"
integrity sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=
escape-string-regexp@^2.0.0:
version "2.0.0"
resolved "https://registry.npm.taobao.org/escape-string-regexp/download/escape-string-regexp-2.0.0.tgz#a30304e99daa32e23b2fd20f51babd07cffca344"
integrity sha1-owME6Z2qMuI7L9IPUbq9B8/8o0Q=
escodegen@^1.9.1:
version "1.14.1"
resolved "https://registry.npm.taobao.org/escodegen/download/escodegen-1.14.1.tgz?cache=0&sync_timestamp=1580955044375&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fescodegen%2Fdownload%2Fescodegen-1.14.1.tgz#ba01d0c8278b5e95a9a45350142026659027a457"
... ... @@ -3238,6 +3371,11 @@ event-target-shim@^5.0.0, event-target-shim@^5.0.1:
resolved "https://registry.npm.taobao.org/event-target-shim/download/event-target-shim-5.0.1.tgz#5d4d3ebdf9583d63a5333ce2deb7480ab2b05789"
integrity sha1-XU0+vflYPWOlMzzi3rdICrKwV4k=
eventemitter3@1.2.x:
version "1.2.0"
resolved "https://registry.npm.taobao.org/eventemitter3/download/eventemitter3-1.2.0.tgz#1c86991d816ad1e504750e73874224ecf3bec508"
integrity sha1-HIaZHYFq0eUEdQ5zh0Ik7PO+xQg=
eventemitter3@^3.0.0:
version "3.1.2"
resolved "https://registry.npm.taobao.org/eventemitter3/download/eventemitter3-3.1.2.tgz#2d3d48f9c346698fce83a85d7d664e98535df6e7"
... ... @@ -3346,6 +3484,11 @@ extend@~3.0.2:
resolved "https://registry.npm.taobao.org/extend/download/extend-3.0.2.tgz#f8b1136b4071fbd8eb140aff858b1019ec2915fa"
integrity sha1-+LETa0Bx+9jrFAr/hYsQGewpFfo=
extendible@0.1.x:
version "0.1.1"
resolved "https://registry.npm.taobao.org/extendible/download/extendible-0.1.1.tgz#e2a37ed87129fb4f9533e8a8d7506230a539c905"
integrity sha1-4qN+2HEp+0+VM+io11BiMKU5yQU=
external-editor@^2.0.4:
version "2.2.0"
resolved "https://registry.npm.taobao.org/external-editor/download/external-editor-2.2.0.tgz#045511cfd8d133f3846673d1047c154e214ad3d5"
... ... @@ -3378,6 +3521,21 @@ extglob@^2.0.4:
snapdragon "^0.8.1"
to-regex "^3.0.1"
extract-github@0.0.x:
version "0.0.5"
resolved "https://registry.npm.taobao.org/extract-github/download/extract-github-0.0.5.tgz#f542536db8c19b983a3bec9db96d2ef2a5ff1a86"
integrity sha1-9UJTbbjBm5g6O+yduW0u8qX/GoY=
extract-zip@^1.6.7:
version "1.7.0"
resolved "https://registry.npm.taobao.org/extract-zip/download/extract-zip-1.7.0.tgz#556cc3ae9df7f452c493a0cfb51cc30277940927"
integrity sha1-VWzDrp339FLEk6DPtRzDAneUCSc=
dependencies:
concat-stream "^1.6.2"
debug "^2.6.9"
mkdirp "^0.5.4"
yauzl "^2.10.0"
extsprintf@1.3.0:
version "1.3.0"
resolved "https://registry.npm.taobao.org/extsprintf/download/extsprintf-1.3.0.tgz#96918440e3041a7a414f8c52e3c574eb3c3e1e05"
... ... @@ -3473,6 +3631,13 @@ fbjs@^1.0.0:
setimmediate "^1.0.5"
ua-parser-js "^0.7.18"
fd-slicer@~1.1.0:
version "1.1.0"
resolved "https://registry.npm.taobao.org/fd-slicer/download/fd-slicer-1.1.0.tgz#25c7c89cb1f9077f8891bbe61d8f390eae256f1e"
integrity sha1-JcfInLH5B3+IkbvmHY85Dq4lbx4=
dependencies:
pend "~1.2.0"
figures@3.1.0:
version "3.1.0"
resolved "https://registry.npm.taobao.org/figures/download/figures-3.1.0.tgz?cache=0&sync_timestamp=1581865349068&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Ffigures%2Fdownload%2Ffigures-3.1.0.tgz#4b198dd07d8d71530642864af2d45dd9e459c4ec"
... ... @@ -3683,6 +3848,15 @@ fs-extra@^1.0.0:
jsonfile "^2.1.0"
klaw "^1.0.0"
fs-extra@^7.0.1:
version "7.0.1"
resolved "https://registry.npm.taobao.org/fs-extra/download/fs-extra-7.0.1.tgz#4f189c44aa123b895f722804f55ea23eadc348e9"
integrity sha1-TxicRKoSO4lfcigE9V6iPq3DSOk=
dependencies:
graceful-fs "^4.1.2"
jsonfile "^4.0.0"
universalify "^0.1.0"
fs.realpath@^1.0.0:
version "1.0.0"
resolved "https://registry.npm.taobao.org/fs.realpath/download/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f"
... ... @@ -3706,6 +3880,29 @@ functional-red-black-tree@^1.0.1:
resolved "https://registry.npm.taobao.org/functional-red-black-tree/download/functional-red-black-tree-1.0.1.tgz#1b0ab3bd553b2a0d6399d29c0e3ea0b252078327"
integrity sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc=
fusing@0.2.x:
version "0.2.3"
resolved "https://registry.npm.taobao.org/fusing/download/fusing-0.2.3.tgz#d0eefaf985d2bafded44af8b185316f6e429e1db"
integrity sha1-0O76+YXSuv3tRK+LGFMW9uQp4ds=
dependencies:
predefine "0.1.x"
fusing@0.4.x:
version "0.4.0"
resolved "https://registry.npm.taobao.org/fusing/download/fusing-0.4.0.tgz#c99068f54ca3e11dc0118902152abf367aba4a4d"
integrity sha1-yZBo9Uyj4R3AEYkCFSq/Nnq6Sk0=
dependencies:
emits "1.0.x"
predefine "0.1.x"
fusing@1.0.x:
version "1.0.0"
resolved "https://registry.npm.taobao.org/fusing/download/fusing-1.0.0.tgz#550c15d76af9265778aa051ece44d4000a098d45"
integrity sha1-VQwV12r5Jld4qgUezkTUAAoJjUU=
dependencies:
emits "3.0.x"
predefine "0.1.x"
gensync@^1.0.0-beta.1:
version "1.0.0-beta.1"
resolved "https://registry.npm.taobao.org/gensync/download/gensync-1.0.0-beta.1.tgz#58f4361ff987e5ff6e1e7a210827aa371eaac269"
... ... @@ -3823,6 +4020,15 @@ gitconfiglocal@^1.0.0:
dependencies:
ini "^1.3.2"
githulk@0.0.x:
version "0.0.7"
resolved "https://registry.npm.taobao.org/githulk/download/githulk-0.0.7.tgz#d96ca29f0ec43117c538e521d663566ea84b4eff"
integrity sha1-2Wyinw7EMRfFOOUh1mNWbqhLTv8=
dependencies:
debug "0.7.x"
extract-github "0.0.x"
mana "0.1.x"
glob-parent@^5.0.0:
version "5.1.1"
resolved "https://registry.npm.taobao.org/glob-parent/download/glob-parent-5.1.1.tgz#b6c1ef417c4e5663ea498f1c45afac6916bbc229"
... ... @@ -4099,6 +4305,11 @@ image-size@^0.6.0:
resolved "https://registry.npm.taobao.org/image-size/download/image-size-0.6.3.tgz#e7e5c65bb534bd7cdcedd6cb5166272a85f75fb2"
integrity sha1-5+XGW7U0vXzc7dbLUWYnKoX3X7I=
immer@^6.0.1:
version "6.0.3"
resolved "https://registry.npm.taobao.org/immer/download/immer-6.0.3.tgz?cache=0&sync_timestamp=1585688720113&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fimmer%2Fdownload%2Fimmer-6.0.3.tgz#94d5051cd724668160a900d66d85ec02816f29bd"
integrity sha1-lNUFHNckZoFgqQDWbYXsAoFvKb0=
import-fresh@^2.0.0:
version "2.0.0"
resolved "https://registry.npm.taobao.org/import-fresh/download/import-fresh-2.0.0.tgz#d81355c15612d386c61f9ddd3922d4304822a546"
... ... @@ -4230,7 +4441,7 @@ interpret@^1.0.0:
resolved "https://registry.npm.taobao.org/interpret/download/interpret-1.2.0.tgz#d5061a6224be58e8083985f5014d844359576296"
integrity sha1-1QYaYiS+WOgIOYX1AU2EQ1lXYpY=
invariant@^2.2.4:
invariant@2.2.4, invariant@^2.2.4:
version "2.2.4"
resolved "https://registry.npm.taobao.org/invariant/download/invariant-2.2.4.tgz#610f3c92c9359ce1db616e538008d23ff35158e6"
integrity sha1-YQ88ksk1nOHbYW5TgAjSP/NRWOY=
... ... @@ -5109,6 +5320,13 @@ kleur@^3.0.3:
resolved "https://registry.npm.taobao.org/kleur/download/kleur-3.0.3.tgz#a79c9ecc86ee1ce3fa6206d1216c501f147fc07e"
integrity sha1-p5yezIbuHOP6YgbRIWxQHxR/wH4=
kuler@0.0.x:
version "0.0.0"
resolved "https://registry.npm.taobao.org/kuler/download/kuler-0.0.0.tgz#b66bb46b934e550f59d818848e0abba4f7f5553c"
integrity sha1-tmu0a5NOVQ9Z2BiEjgq7pPf1VTw=
dependencies:
colornames "0.0.2"
lcid@^2.0.0:
version "2.0.0"
resolved "https://registry.npm.taobao.org/lcid/download/lcid-2.0.0.tgz#6ef5d2df60e52f82eb228a4c373e8d1f397253cf"
... ... @@ -5134,6 +5352,17 @@ levn@^0.3.0, levn@~0.3.0:
prelude-ls "~1.1.2"
type-check "~0.3.2"
licenses@0.0.x:
version "0.0.20"
resolved "https://registry.npm.taobao.org/licenses/download/licenses-0.0.20.tgz#f18a57b26a78eaf28a873e2a378a33e81f59d136"
integrity sha1-8YpXsmp46vKKhz4qN4oz6B9Z0TY=
dependencies:
async "0.6.x"
debug "0.8.x"
fusing "0.2.x"
githulk "0.0.x"
npm-registry "0.1.x"
lines-and-columns@^1.1.6:
version "1.1.6"
resolved "https://registry.npm.taobao.org/lines-and-columns/download/lines-and-columns-1.1.6.tgz#1c00c743b433cd0a4e80758f7b64a57440d9ff00"
... ... @@ -5373,6 +5602,19 @@ makeerror@1.0.x:
dependencies:
tmpl "1.0.x"
mana@0.1.x:
version "0.1.41"
resolved "https://registry.npm.taobao.org/mana/download/mana-0.1.41.tgz#7cb13f73218668654229635c4fc5b17e26f93b7d"
integrity sha1-fLE/cyGGaGVCKWNcT8Wxfib5O30=
dependencies:
assign ">=0.1.7"
back "1.0.x"
diagnostics "1.0.x"
eventemitter3 "1.2.x"
fusing "1.0.x"
millisecond "0.1.x"
request "2.x.x"
map-age-cleaner@^0.1.1:
version "0.1.3"
resolved "https://registry.npm.taobao.org/map-age-cleaner/download/map-age-cleaner-0.1.3.tgz#7d583a7306434c055fe474b0f45078e6e1b4b92a"
... ... @@ -5722,6 +5964,11 @@ micromatch@^4.0.2:
braces "^3.0.1"
picomatch "^2.0.5"
millisecond@0.1.x:
version "0.1.2"
resolved "https://registry.npm.taobao.org/millisecond/download/millisecond-0.1.2.tgz#6cc5ad386241cab8e78aff964f87028eec92dac5"
integrity sha1-bMWtOGJByrjniv+WT4cCjuyS2sU=
mime-db@1.43.0, "mime-db@>= 1.43.0 < 2":
version "1.43.0"
resolved "https://registry.npm.taobao.org/mime-db/download/mime-db-1.43.0.tgz?cache=0&sync_timestamp=1578281104943&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fmime-db%2Fdownload%2Fmime-db-1.43.0.tgz#0a12e0502650e473d735535050e7c8f4eb4fae58"
... ... @@ -5799,7 +6046,7 @@ mixin-deep@^1.2.0:
for-in "^1.0.2"
is-extendable "^1.0.1"
mkdirp@^0.5.1:
mkdirp@^0.5.1, mkdirp@^0.5.4:
version "0.5.5"
resolved "https://registry.npm.taobao.org/mkdirp/download/mkdirp-0.5.5.tgz#d91cefd62d1436ca0f41620e251288d420099def"
integrity sha1-2Rzv1i0UNsoPQWIOJRKI1CAJne8=
... ... @@ -5944,6 +6191,17 @@ normalize-path@^3.0.0:
resolved "https://registry.npm.taobao.org/normalize-path/download/normalize-path-3.0.0.tgz#0dcd69ff23a1c9b11fd0978316644a0388216a65"
integrity sha1-Dc1p/yOhybEf0JeDFmRKA4ghamU=
npm-registry@0.1.x, npm-registry@^0.1.13:
version "0.1.13"
resolved "https://registry.npm.taobao.org/npm-registry/download/npm-registry-0.1.13.tgz#9e5d8b2fdfc1ab5990d47f7debbe231d79a9e822"
integrity sha1-nl2LL9/Bq1mQ1H99674jHXmp6CI=
dependencies:
debug "0.8.x"
extract-github "0.0.x"
licenses "0.0.x"
mana "0.1.x"
semver "2.2.x"
npm-run-path@^2.0.0:
version "2.0.2"
resolved "https://registry.npm.taobao.org/npm-run-path/download/npm-run-path-2.0.2.tgz#35a9232dfa35d7067b4cb2ddf2357b1871536c5f"
... ... @@ -6364,6 +6622,11 @@ path-type@^4.0.0:
resolved "https://registry.npm.taobao.org/path-type/download/path-type-4.0.0.tgz#84ed01c0a7ba380afe09d90a8c180dcd9d03043b"
integrity sha1-hO0BwKe6OAr+CdkKjBgNzZ0DBDs=
pend@~1.2.0:
version "1.2.0"
resolved "https://registry.npm.taobao.org/pend/download/pend-1.2.0.tgz#7a57eb550a6783f9115331fcf4663d5c8e007a50"
integrity sha1-elfrVQpng/kRUzH89GY9XI4AelA=
performance-now@^2.1.0:
version "2.1.0"
resolved "https://registry.npm.taobao.org/performance-now/download/performance-now-2.1.0.tgz#6309f4e0e5fa913ec1c69307ae364b4b377c9e7b"
... ... @@ -6459,6 +6722,13 @@ posix-character-classes@^0.1.0:
resolved "https://registry.npm.taobao.org/posix-character-classes/download/posix-character-classes-0.1.1.tgz#01eac0fe3b5af71a2a6c02feabb8c1fef7e00eab"
integrity sha1-AerA/jta9xoqbAL+q7jB/vfgDqs=
predefine@0.1.x:
version "0.1.2"
resolved "https://registry.npm.taobao.org/predefine/download/predefine-0.1.2.tgz#2aa92b4496bc1f8554e43a45f76bfbe50d33d37f"
integrity sha1-KqkrRJa8H4VU5DpF92v75Q0z038=
dependencies:
extendible "0.1.x"
prelude-ls@~1.1.2:
version "1.1.2"
resolved "https://registry.npm.taobao.org/prelude-ls/download/prelude-ls-1.1.2.tgz#21932a549f5e52ffd9a827f570e04be62a97da54"
... ... @@ -6518,7 +6788,7 @@ promise@^7.1.1:
dependencies:
asap "~2.0.3"
prompts@^2.0.1:
prompts@^2.0.1, prompts@^2.3.0:
version "2.3.2"
resolved "https://registry.npm.taobao.org/prompts/download/prompts-2.3.2.tgz?cache=0&sync_timestamp=1584535655273&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fprompts%2Fdownload%2Fprompts-2.3.2.tgz#480572d89ecf39566d2bd3fe2c9fccb7c4c0b068"
integrity sha1-SAVy2J7POVZtK9P+LJ/Mt8TAsGg=
... ... @@ -6577,6 +6847,11 @@ query-string@^6.11.1:
split-on-first "^1.0.0"
strict-uri-encode "^2.0.0"
querystringify@^2.1.1:
version "2.1.1"
resolved "https://registry.npm.taobao.org/querystringify/download/querystringify-2.1.1.tgz#60e5a5fd64a7f8bfa4d2ab2ed6fdf4c85bad154e"
integrity sha1-YOWl/WSn+L+k0qsu1v30yFutFU4=
quick-lru@^1.0.0:
version "1.1.0"
resolved "https://registry.npm.taobao.org/quick-lru/download/quick-lru-1.1.0.tgz?cache=0&sync_timestamp=1586159910337&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fquick-lru%2Fdownload%2Fquick-lru-1.1.0.tgz#4360b17c61136ad38078397ff11416e186dcfbb8"
... ... @@ -6645,6 +6920,14 @@ react-native-iphone-x-helper@^1.2.1:
resolved "https://registry.npm.taobao.org/react-native-iphone-x-helper/download/react-native-iphone-x-helper-1.2.1.tgz#645e2ffbbb49e80844bb4cbbe34a126fda1e6772"
integrity sha1-ZF4v+7tJ6AhEu0y740oSb9oeZ3I=
react-native-progress@^4.1.2:
version "4.1.2"
resolved "https://registry.npm.taobao.org/react-native-progress/download/react-native-progress-4.1.2.tgz#ffb2264ddfeba409c730e36a9791bb7bbe07a00d"
integrity sha1-/7ImTd/rpAnHMONql5G7e74HoA0=
dependencies:
"@react-native-community/art" "^1.1.2"
prop-types "^15.7.2"
react-native-ratings@^6.3.0:
version "6.5.0"
resolved "https://registry.npm.taobao.org/react-native-ratings/download/react-native-ratings-6.5.0.tgz#a1606ccba3c5b54eec8e6cfa4765a45cf0e4ab8d"
... ... @@ -6691,6 +6974,15 @@ react-native-vector-icons@^6.6.0:
prop-types "^15.6.2"
yargs "^13.2.2"
react-native-webview@9.1.1:
version "9.1.1"
resolved "https://registry.npm.taobao.org/react-native-webview/download/react-native-webview-9.1.1.tgz#8a83da99650093aee192506704084f850face482"
integrity sha1-ioPamWUAk67hklBnBAhPhQ+s5II=
dependencies:
escape-string-regexp "2.0.0"
invariant "2.2.4"
rnpm-plugin-windows "^0.5.1-0"
react-native@0.62.1:
version "0.62.1"
resolved "https://registry.npm.taobao.org/react-native/download/react-native-0.62.1.tgz#fd0324bedf4c3237c928de582c29403f1e46ea80"
... ... @@ -6969,7 +7261,7 @@ request-promise-native@^1.0.5:
stealthy-require "^1.1.1"
tough-cookie "^2.3.3"
request@^2.87.0:
request@2.x.x, request@^2.87.0, request@^2.88.0:
version "2.88.2"
resolved "https://registry.npm.taobao.org/request/download/request-2.88.2.tgz#d73c918731cb5a87da047e207234146f664d12b3"
integrity sha1-1zyRhzHLWofaBH4gcjQUb2ZNErM=
... ... @@ -7010,6 +7302,11 @@ require-main-filename@^2.0.0:
resolved "https://registry.npm.taobao.org/require-main-filename/download/require-main-filename-2.0.0.tgz#d0b329ecc7cc0f61649f62215be69af54aa8989b"
integrity sha1-0LMp7MfMD2Fkn2IhW+aa9UqomJs=
requires-port@^1.0.0:
version "1.0.0"
resolved "https://registry.npm.taobao.org/requires-port/download/requires-port-1.0.0.tgz#925d2601d39ac485e091cf0da5c6e694dc3dcaff"
integrity sha1-kl0mAdOaxIXgkc8NpcbmlNw9yv8=
resolve-cwd@^2.0.0:
version "2.0.0"
resolved "https://registry.npm.taobao.org/resolve-cwd/download/resolve-cwd-2.0.0.tgz#00a9f7387556e27038eae232caa372a6a59b665a"
... ... @@ -7109,6 +7406,20 @@ rimraf@~2.2.6:
resolved "https://registry.npm.taobao.org/rimraf/download/rimraf-2.2.8.tgz?cache=0&sync_timestamp=1581229865753&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Frimraf%2Fdownload%2Frimraf-2.2.8.tgz#e439be2aaee327321952730f99a8929e4fc50582"
integrity sha1-5Dm+Kq7jJzIZUnMPmaiSnk/FBYI=
rnpm-plugin-windows@^0.5.1-0:
version "0.5.1-0"
resolved "https://registry.npm.taobao.org/rnpm-plugin-windows/download/rnpm-plugin-windows-0.5.1-0.tgz#9ffdd38653c6024c538a98a1046a37625d56eddb"
integrity sha1-n/3ThlPGAkxTipihBGo3Yl1W7ds=
dependencies:
chalk "^1.1.3"
extract-zip "^1.6.7"
fs-extra "^7.0.1"
npm-registry "^0.1.13"
prompts "^2.3.0"
request "^2.88.0"
semver "^6.1.1"
valid-url "^1.0.9"
rsvp@^4.8.4:
version "4.8.5"
resolved "https://registry.npm.taobao.org/rsvp/download/rsvp-4.8.5.tgz#c8f155311d167f68f21e168df71ec5b083113734"
... ... @@ -7212,7 +7523,12 @@ semver-regex@^2.0.0:
resolved "https://registry.npm.taobao.org/semver/download/semver-5.7.1.tgz#a954f931aeba508d307bbf069eff0c01c96116f7"
integrity sha1-qVT5Ma66UI0we78Gnv8MAclhFvc=
semver@6.3.0, semver@^6.0.0, semver@^6.1.2, semver@^6.2.0, semver@^6.3.0:
semver@2.2.x:
version "2.2.1"
resolved "https://registry.npm.taobao.org/semver/download/semver-2.2.1.tgz?cache=0&sync_timestamp=1586534511518&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fsemver%2Fdownload%2Fsemver-2.2.1.tgz#7941182b3ffcc580bff1c17942acdf7951c0d213"
integrity sha1-eUEYKz/8xYC/8cF5QqzfeVHA0hM=
semver@6.3.0, semver@^6.0.0, semver@^6.1.1, semver@^6.1.2, semver@^6.2.0, semver@^6.3.0:
version "6.3.0"
resolved "https://registry.npm.taobao.org/semver/download/semver-6.3.0.tgz#ee0a64c8af5e8ceea67687b133761e1becbd1d3d"
integrity sha1-7gpkyK9ejO6mdoexM3YeG+y9HT0=
... ... @@ -7872,6 +8188,11 @@ text-extensions@^1.0.0:
resolved "https://registry.npm.taobao.org/text-extensions/download/text-extensions-1.9.0.tgz?cache=0&sync_timestamp=1581859528571&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Ftext-extensions%2Fdownload%2Ftext-extensions-1.9.0.tgz#1853e45fee39c945ce6f6c36b2d659b5aabc2a26"
integrity sha1-GFPkX+45yUXOb2w2stZZtaq8KiY=
text-hex@0.0.x:
version "0.0.0"
resolved "https://registry.npm.taobao.org/text-hex/download/text-hex-0.0.0.tgz#578fbc85a6a92636e42dd17b41d0218cce9eb2b3"
integrity sha1-V4+8haapJjbkLdF7QdAhjM6esrM=
text-table@^0.2.0:
version "0.2.0"
resolved "https://registry.npm.taobao.org/text-table/download/text-table-0.2.0.tgz#7f5ee823ae805207c00af2df4a84ec3fcfa570b4"
... ... @@ -8141,6 +8462,14 @@ urix@^0.1.0:
resolved "https://registry.npm.taobao.org/urix/download/urix-0.1.0.tgz#da937f7a62e21fec1fd18d49b35c2935067a6c72"
integrity sha1-2pN/emLiH+wf0Y1Js1wpNQZ6bHI=
url-parse@^1.4.7:
version "1.4.7"
resolved "https://registry.npm.taobao.org/url-parse/download/url-parse-1.4.7.tgz#a8a83535e8c00a316e403a5db4ac1b9b853ae278"
integrity sha1-qKg1NejACjFuQDpdtKwbm4U64ng=
dependencies:
querystringify "^2.1.1"
requires-port "^1.0.0"
use-subscription@^1.0.0, use-subscription@^1.4.0:
version "1.4.1"
resolved "https://registry.npm.taobao.org/use-subscription/download/use-subscription-1.4.1.tgz#edcbcc220f1adb2dd4fa0b2f61b6cc308e620069"
... ... @@ -8183,6 +8512,11 @@ v8-compile-cache@^2.0.3:
resolved "https://registry.npm.taobao.org/v8-compile-cache/download/v8-compile-cache-2.1.0.tgz#e14de37b31a6d194f5690d67efc4e7f6fc6ab30e"
integrity sha1-4U3jezGm0ZT1aQ1n78Tn9vxqsw4=
valid-url@^1.0.9:
version "1.0.9"
resolved "https://registry.npm.taobao.org/valid-url/download/valid-url-1.0.9.tgz#1c14479b40f1397a75782f115e4086447433a200"
integrity sha1-HBRHm0DxOXp1eC8RXkCGRHQzogA=
validate-npm-package-license@^3.0.1:
version "3.0.4"
resolved "https://registry.npm.taobao.org/validate-npm-package-license/download/validate-npm-package-license-3.0.4.tgz#fc91f6b9c7ba15c857f4cb2c5defeec39d4f410a"
... ... @@ -8431,7 +8765,7 @@ xregexp@^4.3.0:
dependencies:
"@babel/runtime-corejs3" "^7.8.3"
xtend@~4.0.1:
xtend@^4.0.0, xtend@~4.0.1:
version "4.0.2"
resolved "https://registry.npm.taobao.org/xtend/download/xtend-4.0.2.tgz#bb72779f5fa465186b1f438f674fa347fdb5db54"
integrity sha1-u3J3n1+kZRhrH0OPZ0+jR/2121Q=
... ... @@ -8559,3 +8893,11 @@ yargs@^14.2.0:
which-module "^2.0.0"
y18n "^4.0.0"
yargs-parser "^15.0.1"
yauzl@^2.10.0:
version "2.10.0"
resolved "https://registry.npm.taobao.org/yauzl/download/yauzl-2.10.0.tgz#c7eb17c93e112cb1086fa6d8e51fb0667b79a5f9"
integrity sha1-x+sXyT4RLLEIb6bY5R+wZnt5pfk=
dependencies:
buffer-crc32 "~0.2.3"
fd-slicer "~1.1.0"
... ...