mirror of
https://github.com/zhigang1992/react-navigation.git
synced 2026-02-12 17:31:06 +08:00
refactor: migrate project to TypeScript (#161)
This commit is contained in:
@@ -21,8 +21,8 @@ jobs:
|
||||
- v1-dependencies-example-{{ checksum "example/package.json" }}
|
||||
- v1-dependencies-example-
|
||||
- run: |
|
||||
yarn install
|
||||
yarn install --cwd example
|
||||
yarn install --frozen-lockfile
|
||||
yarn install --frozen-lockfile --cwd example
|
||||
- save_cache:
|
||||
key: v1-dependencies-{{ checksum "package.json" }}
|
||||
paths: node_modules
|
||||
@@ -32,20 +32,29 @@ jobs:
|
||||
- persist_to_workspace:
|
||||
root: .
|
||||
paths: .
|
||||
lint-and-flow:
|
||||
lint-and-typecheck:
|
||||
<<: *defaults
|
||||
steps:
|
||||
- attach_workspace:
|
||||
at: ~/project
|
||||
- run: |
|
||||
yarn lint
|
||||
yarn flow check
|
||||
yarn typescript
|
||||
unit-tests:
|
||||
<<: *defaults
|
||||
steps:
|
||||
- attach_workspace:
|
||||
at: ~/project
|
||||
- run: yarn test -- --coverage
|
||||
- store_artifacts:
|
||||
path: coverage
|
||||
destination: coverage
|
||||
|
||||
workflows:
|
||||
version: 2
|
||||
build-and-test:
|
||||
jobs:
|
||||
- install-dependencies
|
||||
- lint-and-flow:
|
||||
- lint-and-typecheck:
|
||||
requires:
|
||||
- install-dependencies
|
||||
|
||||
@@ -1,3 +1,6 @@
|
||||
node_modules/
|
||||
flow-typed/
|
||||
dist/
|
||||
|
||||
# generated by bob
|
||||
lib/
|
||||
|
||||
4
packages/tabs/.gitignore
vendored
4
packages/tabs/.gitignore
vendored
@@ -7,7 +7,6 @@
|
||||
|
||||
# VSCode
|
||||
.vscode/
|
||||
tsconfig.json
|
||||
jsconfig.json
|
||||
|
||||
# Xcode
|
||||
@@ -51,3 +50,6 @@ android/keystores/debug.keystore
|
||||
|
||||
# Build
|
||||
dist/
|
||||
|
||||
# generated by bob
|
||||
lib/
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
{
|
||||
"expo": {
|
||||
"name": "React Navigation Tabs Example",
|
||||
"description": "Demonstrates the various capabilities of react-navigation-tabs: https://github.com/react-navigation/react-navigation-tabs",
|
||||
"description": "Demonstrates the various capabilities of react-navigation-tabs: https://github.com/react-navigation/tabs",
|
||||
"slug": "react-navigation-tabs-demos",
|
||||
"sdkVersion": "33.0.0",
|
||||
"version": "1.0.0",
|
||||
|
||||
@@ -10,8 +10,8 @@
|
||||
"main": "App.js",
|
||||
"dependencies": {
|
||||
"@expo/vector-icons": "^10.0.0",
|
||||
"@react-navigation/core": "3.5.0-alpha.7",
|
||||
"@react-navigation/native": "^3.6.0-alpha.1",
|
||||
"@react-navigation/core": "3.5.0",
|
||||
"@react-navigation/native": "^3.6.2",
|
||||
"expo": "^33.0.7",
|
||||
"expo-asset": "^6.0.0",
|
||||
"expo-constants": "~5.0.1",
|
||||
@@ -19,8 +19,8 @@
|
||||
"react-native": "https://github.com/expo/react-native/archive/sdk-33.0.0.tar.gz",
|
||||
"react-native-safe-area-view": "^0.13.1",
|
||||
"react-native-screens": "1.0.0-alpha.22",
|
||||
"react-native-tab-view": "^1.2.0",
|
||||
"react-navigation-stack": "1.4.0-alpha.0"
|
||||
"react-native-tab-view": "^2.10.0",
|
||||
"react-navigation-stack": "1.5.3"
|
||||
},
|
||||
"devDependencies": {
|
||||
"babel-plugin-module-resolver": "^3.2.0",
|
||||
@@ -29,7 +29,7 @@
|
||||
},
|
||||
"resolutions": {
|
||||
"**/hoist-non-react-statics": "2.5.0",
|
||||
"**/react-native-tab-view": "1.2.0",
|
||||
"**/react-native-tab-view": "2.10.0",
|
||||
"**/prop-types": "15.6.1"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -902,17 +902,17 @@
|
||||
resolved "https://registry.yarnpkg.com/@react-native-community/netinfo/-/netinfo-2.0.10.tgz#d28a446352e75754b78509557988359133cdbcca"
|
||||
integrity sha512-NrIzyLe0eSbhgMnHl2QdSEhaA7yXh6p9jzMomfUa//hoTXE+xbObGDdiWWSQm2bnXnZJg8XCU3AB9qzvqcuLnA==
|
||||
|
||||
"@react-navigation/core@3.5.0-alpha.7":
|
||||
version "3.5.0-alpha.7"
|
||||
resolved "https://registry.yarnpkg.com/@react-navigation/core/-/core-3.5.0-alpha.7.tgz#97fa67bff84e6398b15b857045b6f0b6614cd65a"
|
||||
integrity sha512-mVq9eaNLb+cuytrgdaNHaG4t7Nrgc7G1uPB7rBhNDQqzy5XWvhdJnK6D5yi3mv1z9AvB2I556ffKHWM9TSf09g==
|
||||
"@react-navigation/core@3.5.0":
|
||||
version "3.5.0"
|
||||
resolved "https://registry.yarnpkg.com/@react-navigation/core/-/core-3.5.0.tgz#73d1a12448e2bd71855e0080b95a7f51ede0cd9e"
|
||||
integrity sha512-NLm24lA51R8o8c+iFnwtN9elqRzm4OJ8f1qPBCUNIYW1sb8M5yCD53vRP0fRcPFpr/6Xzs2TJMsWnnebwFp0Rw==
|
||||
dependencies:
|
||||
hoist-non-react-statics "^3.3.0"
|
||||
path-to-regexp "^1.7.0"
|
||||
query-string "^6.4.2"
|
||||
react-is "^16.8.6"
|
||||
|
||||
"@react-navigation/native@^3.6.0-alpha.1":
|
||||
"@react-navigation/native@^3.6.2":
|
||||
version "3.6.2"
|
||||
resolved "https://registry.yarnpkg.com/@react-navigation/native/-/native-3.6.2.tgz#3634697b6350cc5189657ae4551f2d52b57fbbf0"
|
||||
integrity sha512-Cybeou6N82ZeRmgnGlu+wzlV3z5BZQR2dmYaNFV1TNLUGHqtvv8E7oNw9uYcz9Ox5LFbiX+FdNTn2d6ZPlK0kg==
|
||||
@@ -4541,12 +4541,10 @@ react-native-tab-view@1.2.0:
|
||||
dependencies:
|
||||
prop-types "^15.6.1"
|
||||
|
||||
react-native-tab-view@^1.2.0:
|
||||
version "1.4.1"
|
||||
resolved "https://registry.yarnpkg.com/react-native-tab-view/-/react-native-tab-view-1.4.1.tgz#f113cd87485808f0c991abec937f70fa380478b9"
|
||||
integrity sha512-Bke8KkDcDhvB/z0AS7MnQKMD2p6Kwfc1rSKlMOvg9CC5CnClQ2QEnhPSbwegKDYhUkBI92iH/BYy7hNSm5kbUQ==
|
||||
dependencies:
|
||||
prop-types "^15.6.1"
|
||||
react-native-tab-view@^2.10.0:
|
||||
version "2.10.0"
|
||||
resolved "https://registry.yarnpkg.com/react-native-tab-view/-/react-native-tab-view-2.10.0.tgz#5e249e5650502010013449ffd4e5edc18a95364b"
|
||||
integrity sha512-qgexVz5eO4yaFjdkmn/sURXgVvaBo6pZD/q1eoca96SbPVbaH3WzVhF3bRUfeTHwZkXwznFTpS3JURqIFU8vQA==
|
||||
|
||||
react-native-view-shot@2.6.0:
|
||||
version "2.6.0"
|
||||
@@ -4616,10 +4614,10 @@ react-native-webview@5.8.1:
|
||||
xmldoc "^0.4.0"
|
||||
yargs "^9.0.0"
|
||||
|
||||
react-navigation-stack@1.4.0-alpha.0:
|
||||
version "1.4.0-alpha.0"
|
||||
resolved "https://registry.yarnpkg.com/react-navigation-stack/-/react-navigation-stack-1.4.0-alpha.0.tgz#795c7813de71cd7123ddee7483f931abc105bf12"
|
||||
integrity sha512-ke9MHr07vcv6tteMgvXA8LkdvBq0Lb63aNwNrgjFtEnjIj7nASOnDGlU8emDt6wEhziXYoOQ83TUuyKqc7sP6g==
|
||||
react-navigation-stack@1.5.3:
|
||||
version "1.5.3"
|
||||
resolved "https://registry.yarnpkg.com/react-navigation-stack/-/react-navigation-stack-1.5.3.tgz#cdc9f5a6dbdc55509a15f60d765722573dec1997"
|
||||
integrity sha512-MQcwDVbZUYsTtDJb5cFOSm+K+e7KpUCoROaGoUOR+JHWE3uuaJ3pd/Nu+32a57J98TNBf4qq0+2TPJWl6z6IBg==
|
||||
dependencies:
|
||||
prop-types "^15.7.2"
|
||||
|
||||
|
||||
@@ -2,17 +2,22 @@
|
||||
"name": "react-navigation-tabs",
|
||||
"version": "2.4.0",
|
||||
"description": "Tab Navigation components for React Navigation",
|
||||
"main": "src/index.js",
|
||||
"main": "lib/commonjs/index.js",
|
||||
"module": "lib/module/index.js",
|
||||
"react-native": "lib/module/index.js",
|
||||
"types": "lib/typescript/index.d.ts",
|
||||
"files": [
|
||||
"src/"
|
||||
"src",
|
||||
"lib"
|
||||
],
|
||||
"scripts": {
|
||||
"test": "jest",
|
||||
"flow": "flow",
|
||||
"lint": "eslint .",
|
||||
"typescript": "tsc --noEmit",
|
||||
"lint": "eslint --ext .js,.ts,.tsx .",
|
||||
"bootstrap": "yarn && yarn --cwd example",
|
||||
"example": "yarn --cwd example",
|
||||
"release": "yarn release-it"
|
||||
"release": "yarn release-it",
|
||||
"prepare": "bob build"
|
||||
},
|
||||
"keywords": [
|
||||
"react-native-component",
|
||||
@@ -38,11 +43,16 @@
|
||||
"dependencies": {
|
||||
"hoist-non-react-statics": "^3.3.0",
|
||||
"react-lifecycles-compat": "^3.0.4",
|
||||
"react-native-safe-area-view": "^0.14.6",
|
||||
"react-native-tab-view": "^2.9.0"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@commitlint/config-conventional": "^7.5.0",
|
||||
"@expo/vector-icons": "^10.0.1",
|
||||
"@react-native-community/bob": "^0.6.1",
|
||||
"@types/hoist-non-react-statics": "^3.3.1",
|
||||
"@types/react": "^16.8.17",
|
||||
"@types/react-native": "^0.57.57",
|
||||
"babel-jest": "^24.5.0",
|
||||
"commitlint": "^7.5.2",
|
||||
"conventional-changelog-cli": "^2.0.12",
|
||||
@@ -50,23 +60,23 @@
|
||||
"enzyme-adapter-react-16": "^1.11.2",
|
||||
"enzyme-to-json": "^3.2.2",
|
||||
"eslint": "^5.16.0",
|
||||
"eslint-config-satya164": "^2.3.5",
|
||||
"eslint-config-satya164": "^2.4.1",
|
||||
"eslint-plugin-react-native-globals": "^0.1.0",
|
||||
"flow-bin": "~0.78.0",
|
||||
"husky": "^1.3.1",
|
||||
"jest": "^24.5.0",
|
||||
"prettier": "^1.8.2",
|
||||
"prettier": "^1.17.1",
|
||||
"react": "16.5.0",
|
||||
"react-dom": "16.5.0",
|
||||
"react-native": "~0.57.1",
|
||||
"react-native-reanimated": "^1.0.0-alpha.12",
|
||||
"react-navigation": "^3.3.2",
|
||||
"react-test-renderer": "16.5.0",
|
||||
"release-it": "^10.3.1"
|
||||
"release-it": "^10.3.1",
|
||||
"typescript": "^3.5.2"
|
||||
},
|
||||
"peerDependencies": {
|
||||
"@react-navigation/core": "^3.4.0",
|
||||
"@react-navigation/native": "^3.0.0",
|
||||
"react": "*",
|
||||
"react-native": "*",
|
||||
"react-native-gesture-handler": "^1.0.0",
|
||||
@@ -85,10 +95,20 @@
|
||||
"<rootDir>/__setup__/enzyme.js"
|
||||
],
|
||||
"modulePathIgnorePatterns": [
|
||||
"<rootDir>/example/node_modules"
|
||||
"<rootDir>/example/node_modules",
|
||||
"<rootDir>/lib/"
|
||||
],
|
||||
"snapshotSerializers": [
|
||||
"enzyme-to-json/serializer"
|
||||
]
|
||||
},
|
||||
"@react-native-community/bob": {
|
||||
"source": "src",
|
||||
"output": "lib",
|
||||
"targets": [
|
||||
"commonjs",
|
||||
"module",
|
||||
"typescript"
|
||||
]
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,31 +0,0 @@
|
||||
/* @flow */
|
||||
/* eslint-disable import/no-commonjs */
|
||||
|
||||
module.exports = {
|
||||
/**
|
||||
* Navigators
|
||||
*/
|
||||
get createBottomTabNavigator() {
|
||||
return require('./navigators/createBottomTabNavigator').default;
|
||||
},
|
||||
get createMaterialTopTabNavigator() {
|
||||
return require('./navigators/createMaterialTopTabNavigator').default;
|
||||
},
|
||||
|
||||
/**
|
||||
* Views
|
||||
*/
|
||||
get BottomTabBar() {
|
||||
return require('./views/BottomTabBar').default;
|
||||
},
|
||||
get MaterialTopTabBar() {
|
||||
return require('./views/MaterialTopTabBar').default;
|
||||
},
|
||||
|
||||
/**
|
||||
* Utils
|
||||
*/
|
||||
get createTabNavigator() {
|
||||
return require('./utils/createTabNavigator').default;
|
||||
},
|
||||
};
|
||||
20
packages/tabs/src/index.tsx
Normal file
20
packages/tabs/src/index.tsx
Normal file
@@ -0,0 +1,20 @@
|
||||
/**
|
||||
* Navigators
|
||||
*/
|
||||
export {
|
||||
default as createBottomTabNavigator,
|
||||
} from './navigators/createBottomTabNavigator';
|
||||
export {
|
||||
default as createMaterialTopTabNavigator,
|
||||
} from './navigators/createMaterialTopTabNavigator';
|
||||
|
||||
/**
|
||||
* Views
|
||||
*/
|
||||
export { default as BottomTabBar } from './views/BottomTabBar';
|
||||
export { default as MaterialTopTabBar } from './views/MaterialTopTabBar';
|
||||
|
||||
/**
|
||||
* Utils
|
||||
*/
|
||||
export { default as createTabNavigator } from './utils/createTabNavigator';
|
||||
@@ -1,37 +1,59 @@
|
||||
/* @flow */
|
||||
|
||||
import * as React from 'react';
|
||||
import { View, StyleSheet } from 'react-native';
|
||||
import {
|
||||
View,
|
||||
StyleSheet,
|
||||
AccessibilityRole,
|
||||
AccessibilityState,
|
||||
} from 'react-native';
|
||||
|
||||
// eslint-disable-next-line import/no-unresolved
|
||||
import { ScreenContainer } from 'react-native-screens';
|
||||
|
||||
import createTabNavigator, {
|
||||
type InjectedProps,
|
||||
NavigationViewProps,
|
||||
} from '../utils/createTabNavigator';
|
||||
import BottomTabBar, { type TabBarOptions } from '../views/BottomTabBar';
|
||||
import BottomTabBar from '../views/BottomTabBar';
|
||||
import ResourceSavingScene from '../views/ResourceSavingScene';
|
||||
import {
|
||||
NavigationProp,
|
||||
Route,
|
||||
SceneDescriptor,
|
||||
NavigationBottomTabOptions,
|
||||
BottomTabBarOptions,
|
||||
} from '../types';
|
||||
|
||||
type Props = InjectedProps & {
|
||||
getAccessibilityRole: (props: { route: any }) => string,
|
||||
getAccessibilityStates: (props: { route: any }) => string[],
|
||||
lazy?: boolean,
|
||||
tabBarComponent?: React.ComponentType<*>,
|
||||
tabBarOptions?: TabBarOptions,
|
||||
type Props = NavigationViewProps & {
|
||||
getAccessibilityRole: (props: {
|
||||
route: Route;
|
||||
}) => AccessibilityRole | undefined;
|
||||
getAccessibilityStates: (props: {
|
||||
route: Route;
|
||||
focused: boolean;
|
||||
}) => AccessibilityState[];
|
||||
lazy?: boolean;
|
||||
tabBarComponent?: React.ComponentType<any>;
|
||||
tabBarOptions?: BottomTabBarOptions;
|
||||
navigation: NavigationProp;
|
||||
descriptors: { [key: string]: SceneDescriptor<NavigationBottomTabOptions> };
|
||||
screenProps?: unknown;
|
||||
};
|
||||
|
||||
type State = {
|
||||
loaded: number[],
|
||||
loaded: number[];
|
||||
};
|
||||
|
||||
class TabNavigationView extends React.PureComponent<Props, State> {
|
||||
static defaultProps = {
|
||||
lazy: true,
|
||||
getAccessibilityRole: () => 'button',
|
||||
getAccessibilityStates: ({ focused }) => (focused ? ['selected'] : []),
|
||||
getAccessibilityRole: (): AccessibilityRole => 'button',
|
||||
getAccessibilityStates: ({
|
||||
focused,
|
||||
}: {
|
||||
focused: boolean;
|
||||
}): AccessibilityState[] => (focused ? ['selected'] : []),
|
||||
};
|
||||
|
||||
static getDerivedStateFromProps(nextProps, prevState) {
|
||||
static getDerivedStateFromProps(nextProps: Props, prevState: State) {
|
||||
const { index } = nextProps.navigation.state;
|
||||
|
||||
return {
|
||||
@@ -46,7 +68,7 @@ class TabNavigationView extends React.PureComponent<Props, State> {
|
||||
loaded: [this.props.navigation.state.index],
|
||||
};
|
||||
|
||||
_getButtonComponent = ({ route }) => {
|
||||
_getButtonComponent = ({ route }: { route: Route }) => {
|
||||
const { descriptors } = this.props;
|
||||
const descriptor = descriptors[route.key];
|
||||
const options = descriptor.options;
|
||||
@@ -55,7 +77,7 @@ class TabNavigationView extends React.PureComponent<Props, State> {
|
||||
return options.tabBarButtonComponent;
|
||||
}
|
||||
|
||||
return null;
|
||||
return undefined;
|
||||
};
|
||||
|
||||
_renderTabBar = () => {
|
||||
@@ -154,4 +176,6 @@ const styles = StyleSheet.create({
|
||||
},
|
||||
});
|
||||
|
||||
export default createTabNavigator(TabNavigationView);
|
||||
export default createTabNavigator<NavigationBottomTabOptions, Props>(
|
||||
TabNavigationView
|
||||
);
|
||||
@@ -1,40 +1,44 @@
|
||||
/* @flow */
|
||||
|
||||
import * as React from 'react';
|
||||
import { TabView } from 'react-native-tab-view';
|
||||
import type { ViewStyleProp } from 'react-native/Libraries/StyleSheet/StyleSheet';
|
||||
import { StyleProp, ViewStyle } from 'react-native';
|
||||
import { TabView, SceneRendererProps } from 'react-native-tab-view';
|
||||
import createTabNavigator, {
|
||||
type InjectedProps,
|
||||
NavigationViewProps,
|
||||
} from '../utils/createTabNavigator';
|
||||
import MaterialTopTabBar, {
|
||||
type TabBarOptions,
|
||||
} from '../views/MaterialTopTabBar';
|
||||
import MaterialTopTabBar from '../views/MaterialTopTabBar';
|
||||
import {
|
||||
NavigationProp,
|
||||
SceneDescriptor,
|
||||
NavigationMaterialTabOptions,
|
||||
MaterialTabBarOptions,
|
||||
} from '../types';
|
||||
|
||||
type Route = {
|
||||
key: string,
|
||||
routeName: string,
|
||||
key: string;
|
||||
routeName: string;
|
||||
};
|
||||
|
||||
type Props = {|
|
||||
...InjectedProps,
|
||||
keyboardDismissMode?: 'none' | 'on-drag',
|
||||
swipeEnabled?: boolean,
|
||||
swipeDistanceThreshold?: number,
|
||||
swipeVelocityThreshold?: number,
|
||||
onSwipeStart?: () => mixed,
|
||||
onSwipeEnd?: () => mixed,
|
||||
initialLayout?: { width?: number, height?: number },
|
||||
lazy?: boolean,
|
||||
lazyPlaceholderComponent?: React.ComponentType<{ route: Route }>,
|
||||
tabBarComponent?: React.ComponentType<*>,
|
||||
tabBarOptions?: TabBarOptions,
|
||||
tabBarPosition?: 'top' | 'bottom',
|
||||
sceneContainerStyle?: ViewStyleProp,
|
||||
style?: ViewStyleProp,
|
||||
|};
|
||||
type Props = NavigationViewProps & {
|
||||
keyboardDismissMode?: 'none' | 'on-drag';
|
||||
swipeEnabled?: boolean;
|
||||
swipeDistanceThreshold?: number;
|
||||
swipeVelocityThreshold?: number;
|
||||
onSwipeStart?: () => void;
|
||||
onSwipeEnd?: () => void;
|
||||
initialLayout?: { width?: number; height?: number };
|
||||
lazy?: boolean;
|
||||
lazyPlaceholderComponent?: React.ComponentType<{ route: Route }>;
|
||||
tabBarComponent?: React.ComponentType<any>;
|
||||
tabBarOptions?: MaterialTabBarOptions;
|
||||
tabBarPosition?: 'top' | 'bottom';
|
||||
sceneContainerStyle?: StyleProp<ViewStyle>;
|
||||
style?: StyleProp<ViewStyle>;
|
||||
navigation: NavigationProp;
|
||||
descriptors: { [key: string]: SceneDescriptor<NavigationMaterialTabOptions> };
|
||||
screenProps?: unknown;
|
||||
};
|
||||
|
||||
class MaterialTabView extends React.PureComponent<Props> {
|
||||
_renderLazyPlaceholder = props => {
|
||||
_renderLazyPlaceholder = (props: { route: Route }) => {
|
||||
const { lazyPlaceholderComponent: LazyPlaceholder } = this.props;
|
||||
|
||||
if (LazyPlaceholder != null) {
|
||||
@@ -44,7 +48,7 @@ class MaterialTabView extends React.PureComponent<Props> {
|
||||
return null;
|
||||
};
|
||||
|
||||
_renderTabBar = props => {
|
||||
_renderTabBar = (props: SceneRendererProps) => {
|
||||
const { state } = this.props.navigation;
|
||||
const route = state.routes[state.index];
|
||||
const { descriptors } = this.props;
|
||||
@@ -91,7 +95,7 @@ class MaterialTabView extends React.PureComponent<Props> {
|
||||
|
||||
render() {
|
||||
const {
|
||||
/* eslint-disable no-unused-vars */
|
||||
/* eslint-disable @typescript-eslint/no-unused-vars */
|
||||
getLabelText,
|
||||
getAccessibilityLabel,
|
||||
getTestID,
|
||||
@@ -102,7 +106,7 @@ class MaterialTabView extends React.PureComponent<Props> {
|
||||
lazyPlaceholderComponent,
|
||||
tabBarComponent,
|
||||
tabBarOptions,
|
||||
/* eslint-enable no-unused-vars */
|
||||
/* eslint-enable @typescript-eslint/no-unused-vars */
|
||||
navigation,
|
||||
descriptors,
|
||||
...rest
|
||||
@@ -135,4 +139,6 @@ class MaterialTabView extends React.PureComponent<Props> {
|
||||
}
|
||||
}
|
||||
|
||||
export default createTabNavigator(MaterialTabView);
|
||||
export default createTabNavigator<NavigationMaterialTabOptions, Props>(
|
||||
MaterialTabView
|
||||
);
|
||||
210
packages/tabs/src/types.tsx
Normal file
210
packages/tabs/src/types.tsx
Normal file
@@ -0,0 +1,210 @@
|
||||
import * as React from 'react';
|
||||
import {
|
||||
AccessibilityRole,
|
||||
AccessibilityState,
|
||||
StyleProp,
|
||||
TextStyle,
|
||||
ViewStyle,
|
||||
} from 'react-native';
|
||||
import SafeAreaView from 'react-native-safe-area-view';
|
||||
import Animated from 'react-native-reanimated';
|
||||
|
||||
export type Route = {
|
||||
key: string;
|
||||
routeName: string;
|
||||
} & (NavigationState | undefined);
|
||||
|
||||
export type NavigationEventName =
|
||||
| 'willFocus'
|
||||
| 'didFocus'
|
||||
| 'willBlur'
|
||||
| 'didBlur';
|
||||
|
||||
export type NavigationState = {
|
||||
key: string;
|
||||
index: number;
|
||||
routes: Route[];
|
||||
isTransitioning?: boolean;
|
||||
params?: { [key: string]: unknown };
|
||||
};
|
||||
|
||||
export type NavigationProp<RouteName = string, Params = object> = {
|
||||
emit(eventName: string): void;
|
||||
navigate(routeName: RouteName): void;
|
||||
goBack(): void;
|
||||
goBack(key: string | null): void;
|
||||
addListener: (
|
||||
event: NavigationEventName,
|
||||
callback: () => void
|
||||
) => { remove: () => void };
|
||||
isFocused(): boolean;
|
||||
state: NavigationState;
|
||||
setParams(params: Params): void;
|
||||
getParam(): Params;
|
||||
dispatch(action: { type: string }): void;
|
||||
dangerouslyGetParent(): NavigationProp | undefined;
|
||||
};
|
||||
|
||||
export type ThemedColor =
|
||||
| string
|
||||
| {
|
||||
light: string;
|
||||
dark: string;
|
||||
};
|
||||
|
||||
export type Orientation = 'horizontal' | 'vertical';
|
||||
|
||||
export type LabelPosition = 'beside-icon' | 'below-icon';
|
||||
|
||||
export type BottomTabBarOptions = {
|
||||
keyboardHidesTabBar?: boolean;
|
||||
activeTintColor?: ThemedColor;
|
||||
inactiveTintColor?: ThemedColor;
|
||||
activeBackgroundColor?: ThemedColor;
|
||||
inactiveBackgroundColor?: ThemedColor;
|
||||
allowFontScaling?: boolean;
|
||||
showLabel?: boolean;
|
||||
showIcon?: boolean;
|
||||
labelStyle?: StyleProp<TextStyle>;
|
||||
tabStyle?: StyleProp<ViewStyle>;
|
||||
labelPosition?:
|
||||
| LabelPosition
|
||||
| ((options: { deviceOrientation: Orientation }) => LabelPosition);
|
||||
adaptive?: boolean;
|
||||
style?: StyleProp<ViewStyle>;
|
||||
};
|
||||
|
||||
export type BottomTabBarProps = BottomTabBarOptions & {
|
||||
navigation: NavigationProp;
|
||||
onTabPress: (props: { route: Route }) => void;
|
||||
onTabLongPress: (props: { route: Route }) => void;
|
||||
getAccessibilityLabel: (props: { route: Route }) => string | undefined;
|
||||
getAccessibilityRole: (props: {
|
||||
route: Route;
|
||||
}) => AccessibilityRole | undefined;
|
||||
getAccessibilityStates: (props: {
|
||||
route: Route;
|
||||
focused: boolean;
|
||||
}) => AccessibilityState[];
|
||||
getButtonComponent: (props: {
|
||||
route: Route;
|
||||
}) => React.ComponentType<any> | undefined;
|
||||
getLabelText: (props: {
|
||||
route: Route;
|
||||
}) =>
|
||||
| ((scene: {
|
||||
focused: boolean;
|
||||
tintColor?: string;
|
||||
orientation?: 'horizontal' | 'vertical';
|
||||
}) => string | undefined)
|
||||
| string
|
||||
| undefined;
|
||||
getTestID: (props: { route: Route }) => string | undefined;
|
||||
renderIcon: (props: {
|
||||
route: Route;
|
||||
focused: boolean;
|
||||
tintColor?: string;
|
||||
horizontal?: boolean;
|
||||
}) => React.ReactNode;
|
||||
dimensions: { width: number; height: number };
|
||||
isLandscape: boolean;
|
||||
safeAreaInset?: React.ComponentProps<typeof SafeAreaView>['forceInset'];
|
||||
jumpTo: (key: string) => void;
|
||||
screenProps: unknown;
|
||||
};
|
||||
|
||||
export type MaterialTabBarOptions = {
|
||||
activeTintColor?: string;
|
||||
allowFontScaling?: boolean;
|
||||
bounces?: boolean;
|
||||
inactiveTintColor?: string;
|
||||
pressColor?: string;
|
||||
pressOpacity?: number;
|
||||
scrollEnabled?: boolean;
|
||||
showIcon?: boolean;
|
||||
showLabel?: boolean;
|
||||
upperCaseLabel?: boolean;
|
||||
tabStyle?: StyleProp<ViewStyle>;
|
||||
indicatorStyle?: StyleProp<ViewStyle>;
|
||||
iconStyle?: StyleProp<ViewStyle>;
|
||||
labelStyle?: StyleProp<TextStyle>;
|
||||
contentContainerStyle?: StyleProp<ViewStyle>;
|
||||
style?: StyleProp<ViewStyle>;
|
||||
};
|
||||
|
||||
export type MaterialTabBarProps = MaterialTabBarOptions & {
|
||||
layout: {
|
||||
width: number;
|
||||
height: number;
|
||||
};
|
||||
position: Animated.Node<number>;
|
||||
jumpTo: (key: string) => void;
|
||||
getLabelText: (scene: {
|
||||
route: Route;
|
||||
}) =>
|
||||
| ((scene: { focused: boolean; tintColor: string }) => string | undefined)
|
||||
| string
|
||||
| undefined;
|
||||
getAccessible?: (scene: { route: Route }) => boolean | undefined;
|
||||
getAccessibilityLabel: (scene: { route: Route }) => string | undefined;
|
||||
getTestID: (scene: { route: Route }) => string | undefined;
|
||||
renderIcon: (scene: {
|
||||
route: Route;
|
||||
focused: boolean;
|
||||
tintColor: string;
|
||||
horizontal?: boolean;
|
||||
}) => React.ReactNode;
|
||||
renderBadge?: (scene: { route: Route }) => React.ReactNode;
|
||||
onTabPress?: (scene: { route: Route }) => void;
|
||||
onTabLongPress?: (scene: { route: Route }) => void;
|
||||
tabBarPosition?: 'top' | 'bottom';
|
||||
screenProps: unknown;
|
||||
navigation: NavigationProp;
|
||||
};
|
||||
|
||||
export type NavigationCommonTabOptions = {
|
||||
title?: string;
|
||||
tabBarLabel?: React.ReactNode;
|
||||
tabBarVisible?: boolean;
|
||||
tabBarAccessibilityLabel?: string;
|
||||
tabBarTestID?: string;
|
||||
tabBarIcon?:
|
||||
| React.ReactNode
|
||||
| ((props: {
|
||||
focused: boolean;
|
||||
tintColor?: string;
|
||||
horizontal?: boolean;
|
||||
}) => React.ReactNode);
|
||||
tabBarOnPress?: (props: {
|
||||
navigation: NavigationProp;
|
||||
defaultHandler: () => void;
|
||||
}) => void;
|
||||
tabBarOnLongPress?: (props: {
|
||||
navigation: NavigationProp;
|
||||
defaultHandler: () => void;
|
||||
}) => void;
|
||||
};
|
||||
|
||||
export type NavigationBottomTabOptions = NavigationCommonTabOptions & {
|
||||
tabBarButtonComponent?: React.ComponentType<BottomTabBarProps>;
|
||||
};
|
||||
|
||||
export type NavigationMaterialTabOptions = NavigationCommonTabOptions & {
|
||||
tabBarButtonComponent?: React.ComponentType<any>;
|
||||
swipeEnabled?: boolean | ((state: NavigationState) => boolean);
|
||||
};
|
||||
|
||||
export type SceneDescriptor<Options extends NavigationCommonTabOptions> = {
|
||||
key: string;
|
||||
options: Options;
|
||||
navigation: NavigationProp;
|
||||
getComponent(): React.ComponentType;
|
||||
};
|
||||
|
||||
export type Screen<
|
||||
Options extends NavigationCommonTabOptions
|
||||
> = React.ComponentType<any> & {
|
||||
navigationOptions?: Options & {
|
||||
[key: string]: any;
|
||||
};
|
||||
};
|
||||
@@ -1,5 +1,3 @@
|
||||
/* @flow */
|
||||
|
||||
import * as React from 'react';
|
||||
import {
|
||||
TabRouter,
|
||||
@@ -8,29 +6,68 @@ import {
|
||||
createNavigator,
|
||||
SwitchActions,
|
||||
} from '@react-navigation/core';
|
||||
import {
|
||||
NavigationProp,
|
||||
SceneDescriptor,
|
||||
Route,
|
||||
Screen,
|
||||
NavigationCommonTabOptions,
|
||||
} from '../types';
|
||||
|
||||
export type InjectedProps = {|
|
||||
getLabelText: (props: { route: any }) => any,
|
||||
getAccessibilityLabel: (props: { route: any }) => string,
|
||||
getTestID: (props: { route: any }) => string,
|
||||
renderIcon: (props: {
|
||||
route: any,
|
||||
focused: boolean,
|
||||
tintColor: string,
|
||||
horizontal?: boolean,
|
||||
}) => React.Node,
|
||||
renderScene: (props: { route: any }) => ?React.Node,
|
||||
onIndexChange: (index: number) => any,
|
||||
onTabPress: (props: { route: any }) => mixed,
|
||||
onTabLongPress: (props: { route: any }) => mixed,
|
||||
navigation: any,
|
||||
descriptors: any,
|
||||
screenProps?: any,
|
||||
|};
|
||||
type RouteConfig<Options> = {
|
||||
[key: string]:
|
||||
| Screen<Options>
|
||||
| ({ screen: Screen<Options> } | { getScreen(): Screen<Options> }) & {
|
||||
path?: string;
|
||||
navigationOptions?:
|
||||
| Options
|
||||
| ((options: { navigation: NavigationProp }) => Options);
|
||||
};
|
||||
};
|
||||
|
||||
export default function createTabNavigator(TabView: React.ComponentType<*>) {
|
||||
class NavigationView extends React.Component<*, *> {
|
||||
_renderScene = ({ route }) => {
|
||||
type CommonProps<Options> = {
|
||||
navigation: NavigationProp;
|
||||
descriptors: { [key: string]: SceneDescriptor<Options> };
|
||||
screenProps?: unknown;
|
||||
};
|
||||
|
||||
type ExtraProps = {
|
||||
navigationConfig: any;
|
||||
};
|
||||
|
||||
export type RenderIconProps = {
|
||||
route: Route;
|
||||
focused: boolean;
|
||||
tintColor?: string;
|
||||
horizontal?: boolean;
|
||||
};
|
||||
|
||||
export type NavigationViewProps = {
|
||||
getLabelText: (props: { route: Route }) => string | undefined;
|
||||
getAccessibilityLabel: (props: { route: Route }) => string | undefined;
|
||||
getTestID: (props: { route: Route }) => string | undefined;
|
||||
renderIcon: (props: RenderIconProps) => React.ReactNode;
|
||||
renderScene: (props: { route: Route }) => React.ReactNode;
|
||||
onIndexChange: (index: number) => void;
|
||||
onTabPress: (props: { route: Route }) => void;
|
||||
onTabLongPress: (props: { route: Route }) => void;
|
||||
};
|
||||
|
||||
export default function createTabNavigator<
|
||||
Options extends NavigationCommonTabOptions,
|
||||
Props extends NavigationViewProps & CommonProps<Options>
|
||||
>(
|
||||
TabView: React.ComponentType<Props>
|
||||
): (
|
||||
routes: RouteConfig<Options>,
|
||||
config: Options
|
||||
) => React.ComponentType<
|
||||
Pick<Props, Exclude<keyof Props, keyof NavigationViewProps>> & ExtraProps
|
||||
> {
|
||||
class NavigationView extends React.Component<
|
||||
Pick<Props, Exclude<keyof Props, keyof NavigationViewProps>> & ExtraProps
|
||||
> {
|
||||
_renderScene = ({ route }: { route: { key: string } }) => {
|
||||
const { screenProps, descriptors } = this.props;
|
||||
const descriptor = descriptors[route.key];
|
||||
const TabComponent = descriptor.getComponent();
|
||||
@@ -43,7 +80,12 @@ export default function createTabNavigator(TabView: React.ComponentType<*>) {
|
||||
);
|
||||
};
|
||||
|
||||
_renderIcon = ({ route, focused, tintColor, horizontal = false }) => {
|
||||
_renderIcon = ({
|
||||
route,
|
||||
focused,
|
||||
tintColor,
|
||||
horizontal = false,
|
||||
}: RenderIconProps) => {
|
||||
const { descriptors } = this.props;
|
||||
const descriptor = descriptors[route.key];
|
||||
const options = descriptor.options;
|
||||
@@ -57,7 +99,7 @@ export default function createTabNavigator(TabView: React.ComponentType<*>) {
|
||||
return null;
|
||||
};
|
||||
|
||||
_getLabelText = ({ route }) => {
|
||||
_getLabelText = ({ route }: { route: Route }) => {
|
||||
const { descriptors } = this.props;
|
||||
const descriptor = descriptors[route.key];
|
||||
const options = descriptor.options;
|
||||
@@ -73,7 +115,7 @@ export default function createTabNavigator(TabView: React.ComponentType<*>) {
|
||||
return route.routeName;
|
||||
};
|
||||
|
||||
_getAccessibilityLabel = ({ route }) => {
|
||||
_getAccessibilityLabel = ({ route }: { route: Route }) => {
|
||||
const { descriptors } = this.props;
|
||||
const descriptor = descriptors[route.key];
|
||||
const options = descriptor.options;
|
||||
@@ -90,9 +132,11 @@ export default function createTabNavigator(TabView: React.ComponentType<*>) {
|
||||
routes.length
|
||||
}`;
|
||||
}
|
||||
|
||||
return undefined;
|
||||
};
|
||||
|
||||
_getTestID = ({ route }) => {
|
||||
_getTestID = ({ route }: { route: Route }) => {
|
||||
const { descriptors } = this.props;
|
||||
const descriptor = descriptors[route.key];
|
||||
const options = descriptor.options;
|
||||
@@ -100,7 +144,13 @@ export default function createTabNavigator(TabView: React.ComponentType<*>) {
|
||||
return options.tabBarTestID;
|
||||
};
|
||||
|
||||
_makeDefaultHandler = ({ route, navigation }) => () => {
|
||||
_makeDefaultHandler = ({
|
||||
route,
|
||||
navigation,
|
||||
}: {
|
||||
route: Route;
|
||||
navigation: NavigationProp;
|
||||
}) => () => {
|
||||
if (navigation.isFocused()) {
|
||||
if (route.hasOwnProperty('index') && route.index > 0) {
|
||||
// If current tab has a nested navigator, pop to top
|
||||
@@ -113,7 +163,7 @@ export default function createTabNavigator(TabView: React.ComponentType<*>) {
|
||||
}
|
||||
};
|
||||
|
||||
_handleTabPress = ({ route }) => {
|
||||
_handleTabPress = ({ route }: { route: Route }) => {
|
||||
this._isTabPress = true;
|
||||
|
||||
// After tab press, handleIndexChange will be called synchronously
|
||||
@@ -133,7 +183,7 @@ export default function createTabNavigator(TabView: React.ComponentType<*>) {
|
||||
}
|
||||
};
|
||||
|
||||
_handleTabLongPress = ({ route }) => {
|
||||
_handleTabLongPress = ({ route }: { route: Route }) => {
|
||||
const { descriptors } = this.props;
|
||||
const descriptor = descriptors[route.key];
|
||||
const { navigation, options } = descriptor;
|
||||
@@ -147,7 +197,7 @@ export default function createTabNavigator(TabView: React.ComponentType<*>) {
|
||||
}
|
||||
};
|
||||
|
||||
_handleIndexChange = index => {
|
||||
_handleIndexChange = (index: number) => {
|
||||
if (this._isTabPress) {
|
||||
this._isTabPress = false;
|
||||
return;
|
||||
@@ -156,14 +206,13 @@ export default function createTabNavigator(TabView: React.ComponentType<*>) {
|
||||
this._jumpTo(this.props.navigation.state.routes[index].routeName);
|
||||
};
|
||||
|
||||
_jumpTo = routeName => {
|
||||
_jumpTo = (routeName: string) => {
|
||||
const { navigation } = this.props;
|
||||
|
||||
navigation.dispatch(
|
||||
SwitchActions.jumpTo({
|
||||
routeName,
|
||||
key: navigation.state.key,
|
||||
preserveFocus: true,
|
||||
})
|
||||
);
|
||||
};
|
||||
@@ -171,12 +220,17 @@ export default function createTabNavigator(TabView: React.ComponentType<*>) {
|
||||
_isTabPress: boolean = false;
|
||||
|
||||
render() {
|
||||
const { descriptors, navigation, screenProps } = this.props;
|
||||
const {
|
||||
descriptors,
|
||||
navigation,
|
||||
screenProps,
|
||||
navigationConfig,
|
||||
} = this.props;
|
||||
const { state } = navigation;
|
||||
const route = state.routes[state.index];
|
||||
const descriptor = descriptors[route.key];
|
||||
const options = {
|
||||
...this.props.navigationConfig,
|
||||
...navigationConfig,
|
||||
...descriptor.options,
|
||||
};
|
||||
|
||||
@@ -199,8 +253,8 @@ export default function createTabNavigator(TabView: React.ComponentType<*>) {
|
||||
}
|
||||
}
|
||||
|
||||
return (routes: *, config: * = {}) => {
|
||||
const router = TabRouter(routes, config);
|
||||
return createNavigator(NavigationView, router, config);
|
||||
return (routes: RouteConfig<Options>, config: Partial<Options> = {}) => {
|
||||
const router = TabRouter(routes, config as any);
|
||||
return createNavigator(NavigationView, router, config as any);
|
||||
};
|
||||
}
|
||||
@@ -1,10 +1,23 @@
|
||||
import * as React from 'react';
|
||||
import { Dimensions } from 'react-native';
|
||||
import { Dimensions, ScaledSize } from 'react-native';
|
||||
import hoistNonReactStatic from 'hoist-non-react-statics';
|
||||
|
||||
export const isOrientationLandscape = ({ width, height }) => width > height;
|
||||
type DimensionsType = {
|
||||
width: number;
|
||||
height: number;
|
||||
};
|
||||
|
||||
export default function withDimensions(WrappedComponent) {
|
||||
type InjectedProps = {
|
||||
dimensions: DimensionsType;
|
||||
isLandscape: boolean;
|
||||
};
|
||||
|
||||
export const isOrientationLandscape = ({ width, height }: DimensionsType) =>
|
||||
width > height;
|
||||
|
||||
export default function withDimensions<Props extends InjectedProps>(
|
||||
WrappedComponent: React.ComponentType<Props>
|
||||
): React.ComponentType<Pick<Props, Exclude<keyof Props, keyof InjectedProps>>> {
|
||||
const { width, height } = Dimensions.get('window');
|
||||
|
||||
class EnhancedComponent extends React.Component {
|
||||
@@ -23,15 +36,17 @@ export default function withDimensions(WrappedComponent) {
|
||||
Dimensions.removeEventListener('change', this.handleOrientationChange);
|
||||
}
|
||||
|
||||
handleOrientationChange = ({ window }) => {
|
||||
handleOrientationChange = ({ window }: { window: ScaledSize }) => {
|
||||
const isLandscape = isOrientationLandscape(window);
|
||||
this.setState({ isLandscape });
|
||||
};
|
||||
|
||||
render() {
|
||||
// @ts-ignore
|
||||
return <WrappedComponent {...this.props} {...this.state} />;
|
||||
}
|
||||
}
|
||||
|
||||
// @ts-ignore
|
||||
return hoistNonReactStatic(EnhancedComponent, WrappedComponent);
|
||||
}
|
||||
@@ -1,5 +1,3 @@
|
||||
/* @flow */
|
||||
|
||||
import React from 'react';
|
||||
import {
|
||||
Animated,
|
||||
@@ -8,69 +6,32 @@ import {
|
||||
View,
|
||||
Keyboard,
|
||||
Platform,
|
||||
LayoutChangeEvent,
|
||||
} from 'react-native';
|
||||
import SafeAreaView from 'react-native-safe-area-view';
|
||||
import { ThemeColors, ThemeContext } from '@react-navigation/core';
|
||||
import { SafeAreaView } from '@react-navigation/native';
|
||||
|
||||
import CrossFadeIcon from './CrossFadeIcon';
|
||||
import withDimensions from '../utils/withDimensions';
|
||||
|
||||
type Orientation = 'horizontal' | 'vertical';
|
||||
type Position = 'beside-icon' | 'below-icon';
|
||||
type LabelPosition =
|
||||
| Position
|
||||
| ((options: { deviceOrientation: Orientation }) => Position);
|
||||
|
||||
export type ThemedColor = {
|
||||
light: string,
|
||||
dark: string,
|
||||
};
|
||||
|
||||
export type TabBarOptions = {
|
||||
keyboardHidesTabBar: boolean,
|
||||
activeTintColor?: string | ThemedColor,
|
||||
inactiveTintColor?: string | ThemedColor,
|
||||
activeBackgroundColor?: string | ThemedColor,
|
||||
inactiveBackgroundColor?: string | ThemedColor,
|
||||
allowFontScaling: boolean,
|
||||
showLabel: boolean,
|
||||
showIcon: boolean,
|
||||
labelStyle: any,
|
||||
tabStyle: any,
|
||||
labelPosition?: LabelPosition,
|
||||
adaptive?: boolean,
|
||||
style: any,
|
||||
};
|
||||
|
||||
type Props = TabBarOptions & {
|
||||
navigation: any,
|
||||
onTabPress: any,
|
||||
onTabLongPress: any,
|
||||
getAccessibilityLabel: (props: { route: any }) => string,
|
||||
getAccessibilityRole: (props: { route: any }) => string,
|
||||
getAccessibilityStates: (props: { route: any }) => string[],
|
||||
getButtonComponent: ({ route: any }) => any,
|
||||
getLabelText: ({ route: any }) => any,
|
||||
getTestID: (props: { route: any }) => string,
|
||||
renderIcon: any,
|
||||
dimensions: { width: number, height: number },
|
||||
isLandscape: boolean,
|
||||
safeAreaInset: { top: string, right: string, bottom: string, left: string },
|
||||
};
|
||||
import { Route, BottomTabBarProps } from '../types';
|
||||
|
||||
type State = {
|
||||
layout: { height: number, width: number },
|
||||
keyboard: boolean,
|
||||
visible: Animated.Value,
|
||||
layout: { height: number; width: number };
|
||||
keyboard: boolean;
|
||||
visible: Animated.Value;
|
||||
};
|
||||
|
||||
const majorVersion = parseInt(Platform.Version, 10);
|
||||
const majorVersion = parseInt(Platform.Version as string, 10);
|
||||
const isIos = Platform.OS === 'ios';
|
||||
const isIOS11 = majorVersion >= 11 && isIos;
|
||||
|
||||
const DEFAULT_MAX_TAB_ITEM_WIDTH = 125;
|
||||
|
||||
class TouchableWithoutFeedbackWrapper extends React.Component<*> {
|
||||
class TouchableWithoutFeedbackWrapper extends React.Component<
|
||||
React.ComponentProps<typeof TouchableWithoutFeedback> & {
|
||||
children: React.ReactNode;
|
||||
}
|
||||
> {
|
||||
render() {
|
||||
const {
|
||||
onPress,
|
||||
@@ -98,9 +59,7 @@ class TouchableWithoutFeedbackWrapper extends React.Component<*> {
|
||||
}
|
||||
}
|
||||
|
||||
class TabBarBottom extends React.Component<Props, State> {
|
||||
static contextType = ThemeContext;
|
||||
|
||||
class TabBarBottom extends React.Component<BottomTabBarProps, State> {
|
||||
static defaultProps = {
|
||||
keyboardHidesTabBar: true,
|
||||
activeTintColor: {
|
||||
@@ -117,9 +76,13 @@ class TabBarBottom extends React.Component<Props, State> {
|
||||
showIcon: true,
|
||||
allowFontScaling: true,
|
||||
adaptive: isIOS11,
|
||||
safeAreaInset: { bottom: 'always', top: 'never' },
|
||||
safeAreaInset: { bottom: 'always', top: 'never' } as React.ComponentProps<
|
||||
typeof SafeAreaView
|
||||
>['forceInset'],
|
||||
};
|
||||
|
||||
static contextType = ThemeContext;
|
||||
|
||||
state = {
|
||||
layout: { height: 0, width: 0 },
|
||||
keyboard: false,
|
||||
@@ -146,6 +109,9 @@ class TabBarBottom extends React.Component<Props, State> {
|
||||
}
|
||||
}
|
||||
|
||||
// @ts-ignore
|
||||
context: 'light' | 'dark';
|
||||
|
||||
_handleKeyboardShow = () =>
|
||||
this.setState({ keyboard: true }, () =>
|
||||
Animated.timing(this.state.visible, {
|
||||
@@ -164,7 +130,7 @@ class TabBarBottom extends React.Component<Props, State> {
|
||||
this.setState({ keyboard: false });
|
||||
});
|
||||
|
||||
_handleLayout = e => {
|
||||
_handleLayout = (e: LayoutChangeEvent) => {
|
||||
const { layout } = this.state;
|
||||
const { height, width } = e.nativeEvent.layout;
|
||||
|
||||
@@ -224,7 +190,7 @@ class TabBarBottom extends React.Component<Props, State> {
|
||||
return inactiveBackgroundColor[this.context];
|
||||
};
|
||||
|
||||
_renderLabel = ({ route, focused }) => {
|
||||
_renderLabel = ({ route, focused }: { route: Route; focused: boolean }) => {
|
||||
const { labelStyle, showLabel, showIcon, allowFontScaling } = this.props;
|
||||
|
||||
if (showLabel === false) {
|
||||
@@ -256,7 +222,6 @@ class TabBarBottom extends React.Component<Props, State> {
|
||||
|
||||
if (typeof label === 'function') {
|
||||
return label({
|
||||
route,
|
||||
focused,
|
||||
tintColor,
|
||||
orientation: horizontal ? 'horizontal' : 'vertical',
|
||||
@@ -266,8 +231,9 @@ class TabBarBottom extends React.Component<Props, State> {
|
||||
return label;
|
||||
};
|
||||
|
||||
_renderIcon = ({ route, focused }) => {
|
||||
const { navigation, renderIcon, showIcon, showLabel } = this.props;
|
||||
_renderIcon = ({ route, focused }: { route: Route; focused: boolean }) => {
|
||||
const { renderIcon, showIcon, showLabel } = this.props;
|
||||
|
||||
if (showIcon === false) {
|
||||
return null;
|
||||
}
|
||||
@@ -283,7 +249,6 @@ class TabBarBottom extends React.Component<Props, State> {
|
||||
<CrossFadeIcon
|
||||
route={route}
|
||||
horizontal={horizontal}
|
||||
navigation={navigation}
|
||||
activeOpacity={activeOpacity}
|
||||
inactiveOpacity={inactiveOpacity}
|
||||
activeTintColor={activeTintColor}
|
||||
@@ -327,6 +292,7 @@ class TabBarBottom extends React.Component<Props, State> {
|
||||
return false;
|
||||
}
|
||||
|
||||
// @ts-ignore
|
||||
if (Platform.isPad) {
|
||||
let maxTabItemWidth = DEFAULT_MAX_TAB_ITEM_WIDTH;
|
||||
|
||||
@@ -366,6 +332,7 @@ class TabBarBottom extends React.Component<Props, State> {
|
||||
const tabBarStyle = [
|
||||
styles.tabBar,
|
||||
isDark ? styles.tabBarDark : styles.tabBarLight,
|
||||
// @ts-ignore
|
||||
this._shouldUseHorizontalLabels() && !Platform.isPad
|
||||
? styles.tabBarCompact
|
||||
: styles.tabBarRegular,
|
||||
@@ -501,6 +468,7 @@ const styles = StyleSheet.create({
|
||||
flex: 1,
|
||||
},
|
||||
iconWithExplicitHeight: {
|
||||
// @ts-ignore
|
||||
height: Platform.isPad ? DEFAULT_HEIGHT : COMPACT_HEIGHT,
|
||||
},
|
||||
label: {
|
||||
@@ -1,18 +1,22 @@
|
||||
/* @flow */
|
||||
|
||||
import React from 'react';
|
||||
import { View, StyleSheet } from 'react-native';
|
||||
import { View, StyleSheet, StyleProp, ViewStyle } from 'react-native';
|
||||
import Animated from 'react-native-reanimated';
|
||||
import { Route } from '../types';
|
||||
|
||||
type Props = {
|
||||
route: any,
|
||||
horizontal?: boolean,
|
||||
activeOpacity: any,
|
||||
inactiveOpacity: any,
|
||||
activeTintColor: any,
|
||||
inactiveTintColor: any,
|
||||
renderIcon: any,
|
||||
style: any,
|
||||
route: Route;
|
||||
horizontal?: boolean;
|
||||
activeOpacity: number;
|
||||
inactiveOpacity: number;
|
||||
activeTintColor?: string;
|
||||
inactiveTintColor?: string;
|
||||
renderIcon: (props: {
|
||||
route: Route;
|
||||
focused: boolean;
|
||||
tintColor?: string;
|
||||
horizontal?: boolean;
|
||||
}) => React.ReactNode;
|
||||
style: StyleProp<ViewStyle>;
|
||||
};
|
||||
|
||||
export default class TabBarIcon extends React.Component<Props> {
|
||||
@@ -1,68 +1,14 @@
|
||||
/* @flow */
|
||||
|
||||
import * as React from 'react';
|
||||
import { View, StyleSheet } from 'react-native';
|
||||
import { TabBar } from 'react-native-tab-view';
|
||||
import Animated from 'react-native-reanimated';
|
||||
import type {
|
||||
ViewStyleProp,
|
||||
TextStyleProp,
|
||||
} from 'react-native/Libraries/StyleSheet/StyleSheet';
|
||||
import { MaterialTabBarProps, Route } from '../types';
|
||||
|
||||
type Route = {
|
||||
key: string,
|
||||
routeName: string,
|
||||
};
|
||||
type Scene = { route: Route; focused: boolean; color: string };
|
||||
|
||||
type Layout = {|
|
||||
width: number,
|
||||
height: number,
|
||||
|};
|
||||
|
||||
export type TabBarOptions = {|
|
||||
activeTintColor?: string,
|
||||
allowFontScaling?: boolean,
|
||||
bounces?: boolean,
|
||||
inactiveTintColor?: string,
|
||||
pressColor?: string,
|
||||
pressOpacity?: number,
|
||||
scrollEnabled?: boolean,
|
||||
showIcon?: boolean,
|
||||
showLabel?: boolean,
|
||||
upperCaseLabel?: boolean,
|
||||
tabStyle?: ViewStyleProp,
|
||||
indicatorStyle?: ViewStyleProp,
|
||||
iconStyle?: any,
|
||||
labelStyle?: TextStyleProp,
|
||||
contentContainerStyle?: ViewStyleProp,
|
||||
style?: ViewStyleProp,
|
||||
|};
|
||||
|
||||
type Props = {|
|
||||
...TabBarOptions,
|
||||
layout: Layout,
|
||||
position: Animated.Node<number>,
|
||||
jumpTo: (key: string) => void,
|
||||
getLabelText: (scene: { route: Route }) => ?string,
|
||||
getAccessible?: (scene: { route: Route }) => ?boolean,
|
||||
getAccessibilityLabel: (scene: { route: Route }) => ?string,
|
||||
getTestID: (scene: { route: Route }) => ?string,
|
||||
renderIcon: (scene: {
|
||||
route: Route,
|
||||
focused: boolean,
|
||||
tintColor: string,
|
||||
horizontal?: boolean,
|
||||
}) => React.Node,
|
||||
renderBadge?: (scene: { route: Route }) => React.Node,
|
||||
onTabPress?: (scene: { route: Route }) => mixed,
|
||||
onTabLongPress?: (scene: { route: Route }) => mixed,
|
||||
tabBarPosition: 'top' | 'bottom',
|
||||
navigationState: any,
|
||||
screenProps: any,
|
||||
navigation: any,
|
||||
|};
|
||||
|
||||
export default class TabBarTop extends React.PureComponent<Props> {
|
||||
export default class TabBarTop extends React.PureComponent<
|
||||
MaterialTabBarProps
|
||||
> {
|
||||
static defaultProps = {
|
||||
activeTintColor: 'rgba(255, 255, 255, 1)',
|
||||
inactiveTintColor: 'rgba(255, 255, 255, 0.7)',
|
||||
@@ -72,7 +18,7 @@ export default class TabBarTop extends React.PureComponent<Props> {
|
||||
allowFontScaling: true,
|
||||
};
|
||||
|
||||
_renderLabel = ({ route, focused, color }) => {
|
||||
_renderLabel = ({ route, focused, color }: Scene) => {
|
||||
const {
|
||||
showLabel,
|
||||
upperCaseLabel,
|
||||
@@ -104,7 +50,7 @@ export default class TabBarTop extends React.PureComponent<Props> {
|
||||
return label;
|
||||
};
|
||||
|
||||
_renderIcon = ({ route, focused, color }) => {
|
||||
_renderIcon = ({ route, focused, color }: Scene) => {
|
||||
const { renderIcon, showIcon, iconStyle } = this.props;
|
||||
|
||||
if (showIcon === false) {
|
||||
@@ -127,7 +73,7 @@ export default class TabBarTop extends React.PureComponent<Props> {
|
||||
navigation,
|
||||
activeTintColor,
|
||||
inactiveTintColor,
|
||||
/* eslint-disable no-unused-vars */
|
||||
/* eslint-disable @typescript-eslint/no-unused-vars */
|
||||
renderIcon,
|
||||
getLabelText,
|
||||
allowFontScaling,
|
||||
@@ -135,10 +81,9 @@ export default class TabBarTop extends React.PureComponent<Props> {
|
||||
showIcon,
|
||||
upperCaseLabel,
|
||||
tabBarPosition,
|
||||
navigationState,
|
||||
screenProps,
|
||||
iconStyle,
|
||||
/* eslint-enable no-unused-vars */
|
||||
/* eslint-enable @typescript-eslint/no-unused-vars */
|
||||
...rest
|
||||
} = this.props;
|
||||
|
||||
@@ -1,5 +1,3 @@
|
||||
/* @flow */
|
||||
|
||||
import * as React from 'react';
|
||||
import { Platform, StyleSheet, View } from 'react-native';
|
||||
|
||||
@@ -7,9 +5,9 @@ import { Platform, StyleSheet, View } from 'react-native';
|
||||
import { Screen, screensEnabled } from 'react-native-screens';
|
||||
|
||||
type Props = {
|
||||
isVisible: boolean,
|
||||
children: React.Node,
|
||||
style?: any,
|
||||
isVisible: boolean;
|
||||
children: React.ReactNode;
|
||||
style?: any;
|
||||
};
|
||||
|
||||
const FAR_FAR_AWAY = 3000; // this should be big enough to move the whole view out of its container
|
||||
@@ -18,6 +16,7 @@ export default class ResourceSavingScene extends React.Component<Props> {
|
||||
render() {
|
||||
if (screensEnabled && screensEnabled()) {
|
||||
const { isVisible, ...rest } = this.props;
|
||||
// @ts-ignore
|
||||
return <Screen active={isVisible ? 1 : 0} {...rest} />;
|
||||
}
|
||||
|
||||
22
packages/tabs/tsconfig.json
Normal file
22
packages/tabs/tsconfig.json
Normal file
@@ -0,0 +1,22 @@
|
||||
{
|
||||
"compilerOptions": {
|
||||
"allowUnreachableCode": false,
|
||||
"allowUnusedLabels": false,
|
||||
"esModuleInterop": true,
|
||||
"forceConsistentCasingInFileNames": true,
|
||||
"jsx": "react",
|
||||
"lib": ["esnext"],
|
||||
"module": "esnext",
|
||||
"moduleResolution": "node",
|
||||
"noFallthroughCasesInSwitch": true,
|
||||
"noImplicitReturns": true,
|
||||
"noImplicitUseStrict": false,
|
||||
"noStrictGenericChecks": false,
|
||||
"noUnusedLocals": true,
|
||||
"noUnusedParameters": true,
|
||||
"resolveJsonModule": true,
|
||||
"skipLibCheck": true,
|
||||
"strict": true,
|
||||
"target": "esnext"
|
||||
}
|
||||
}
|
||||
58
packages/tabs/types/@react-navigation/core.d.ts
vendored
Normal file
58
packages/tabs/types/@react-navigation/core.d.ts
vendored
Normal file
@@ -0,0 +1,58 @@
|
||||
declare module '@react-navigation/core' {
|
||||
import * as React from 'react';
|
||||
|
||||
export type ThemeType = {
|
||||
header: string;
|
||||
headerBorder: string;
|
||||
};
|
||||
|
||||
export const ThemeContext: React.Context<'light' | 'dark'>;
|
||||
|
||||
export const ThemeColors: {
|
||||
light: ThemeType;
|
||||
dark: ThemeType;
|
||||
};
|
||||
|
||||
export const StackActions: {
|
||||
completeTransition<T extends { key?: string } | undefined>(
|
||||
options?: T
|
||||
): { type: string } & T;
|
||||
popToTop(options: { key: string }): { type: string };
|
||||
};
|
||||
|
||||
export const SwitchActions: {
|
||||
jumpTo(payload: {
|
||||
routeName: string;
|
||||
key: string;
|
||||
params?: object;
|
||||
}): { type: string } & payload;
|
||||
};
|
||||
|
||||
export const NavigationActions: {
|
||||
back(payload: { key: string; immediate?: boolean }): { type: string };
|
||||
};
|
||||
|
||||
export const NavigationProvider: React.ComponentType<{
|
||||
value: object;
|
||||
}>;
|
||||
|
||||
export const SceneView: React.ComponentType<{
|
||||
screenProps: unknown;
|
||||
navigation: object;
|
||||
component: React.ComponentType<any>;
|
||||
}>;
|
||||
|
||||
export function createNavigator<Props extends {}>(
|
||||
view: React.ComponentType<Props>,
|
||||
router: any,
|
||||
config: object
|
||||
): React.ComponentType<Props>;
|
||||
|
||||
export function withNavigation<Props extends { navigation: object }>(
|
||||
Comp: React.ComponentType<Props>
|
||||
): React.ComponentType<Pick<Props, Exclude<keyof Props, 'navigation'>>>;
|
||||
|
||||
export function StackRouter(routes: object, config: object): unknown;
|
||||
|
||||
export function TabRouter(routes: object, config: object): unknown;
|
||||
}
|
||||
32
packages/tabs/types/@react-navigation/native.d.ts
vendored
Normal file
32
packages/tabs/types/@react-navigation/native.d.ts
vendored
Normal file
@@ -0,0 +1,32 @@
|
||||
declare module '@react-navigation/native' {
|
||||
import { ComponentType } from 'react';
|
||||
import { StyleProp, ViewStyle, ViewProps } from 'react-native';
|
||||
|
||||
export function createAppContainer<Props>(
|
||||
Comp: React.ComponentType<Props>
|
||||
): React.ComponentType<Props>;
|
||||
|
||||
export function withOrientation<Props extends { isLandscape: boolean }>(
|
||||
Comp: React.ComponentType<Props>
|
||||
): React.ComponentType<Pick<Props, Exclude<keyof Props, 'isLandscape'>>>;
|
||||
|
||||
export function createKeyboardAwareNavigator<Props>(
|
||||
Comp: React.ComponentType<Props>,
|
||||
stackConfig: object
|
||||
): React.ComponentType<Props>;
|
||||
|
||||
export type SafeAreaViewForceInsetValue = 'always' | 'never';
|
||||
|
||||
export const SafeAreaView: ComponentType<
|
||||
ViewProps & {
|
||||
forceInset?: {
|
||||
top?: SafeAreaViewForceInsetValue;
|
||||
bottom?: SafeAreaViewForceInsetValue;
|
||||
left?: SafeAreaViewForceInsetValue;
|
||||
right?: SafeAreaViewForceInsetValue;
|
||||
horizontal?: SafeAreaViewForceInsetValue;
|
||||
vertical?: SafeAreaViewForceInsetValue;
|
||||
};
|
||||
}
|
||||
>;
|
||||
}
|
||||
@@ -49,6 +49,26 @@
|
||||
semver "^5.4.1"
|
||||
source-map "^0.5.0"
|
||||
|
||||
"@babel/core@^7.4.0":
|
||||
version "7.4.4"
|
||||
resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.4.4.tgz#84055750b05fcd50f9915a826b44fa347a825250"
|
||||
integrity sha512-lQgGX3FPRgbz2SKmhMtYgJvVzGZrmjaF4apZ2bLwofAKiSjxU0drPh4S/VasyYXwaTs+A1gvQ45BN8SQJzHsQQ==
|
||||
dependencies:
|
||||
"@babel/code-frame" "^7.0.0"
|
||||
"@babel/generator" "^7.4.4"
|
||||
"@babel/helpers" "^7.4.4"
|
||||
"@babel/parser" "^7.4.4"
|
||||
"@babel/template" "^7.4.4"
|
||||
"@babel/traverse" "^7.4.4"
|
||||
"@babel/types" "^7.4.4"
|
||||
convert-source-map "^1.1.0"
|
||||
debug "^4.1.0"
|
||||
json5 "^2.1.0"
|
||||
lodash "^4.17.11"
|
||||
resolve "^1.3.2"
|
||||
semver "^5.4.1"
|
||||
source-map "^0.5.0"
|
||||
|
||||
"@babel/generator@^7.0.0", "@babel/generator@^7.1.3", "@babel/generator@^7.3.4":
|
||||
version "7.3.4"
|
||||
resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.3.4.tgz#9aa48c1989257877a9d971296e5b73bfe72e446e"
|
||||
@@ -71,6 +91,17 @@
|
||||
source-map "^0.5.0"
|
||||
trim-right "^1.0.1"
|
||||
|
||||
"@babel/generator@^7.4.4":
|
||||
version "7.4.4"
|
||||
resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.4.4.tgz#174a215eb843fc392c7edcaabeaa873de6e8f041"
|
||||
integrity sha512-53UOLK6TVNqKxf7RUh8NE851EHRxOOeVXKbK2bivdb+iziMyk03Sr4eaE9OELCbyZAAafAKPDwF2TPUES5QbxQ==
|
||||
dependencies:
|
||||
"@babel/types" "^7.4.4"
|
||||
jsesc "^2.5.1"
|
||||
lodash "^4.17.11"
|
||||
source-map "^0.5.0"
|
||||
trim-right "^1.0.1"
|
||||
|
||||
"@babel/helper-annotate-as-pure@^7.0.0":
|
||||
version "7.0.0"
|
||||
resolved "https://registry.yarnpkg.com/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.0.0.tgz#323d39dd0b50e10c7c06ca7d7638e6864d8c5c32"
|
||||
@@ -243,6 +274,13 @@
|
||||
dependencies:
|
||||
"@babel/types" "^7.4.0"
|
||||
|
||||
"@babel/helper-split-export-declaration@^7.4.4":
|
||||
version "7.4.4"
|
||||
resolved "https://registry.yarnpkg.com/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.4.4.tgz#ff94894a340be78f53f06af038b205c49d993677"
|
||||
integrity sha512-Ro/XkzLf3JFITkW6b+hNxzZ1n5OQ80NvIUdmHspih1XAhtN3vPTuUFT4eQnela+2MaZ5ulH+iyP513KJrxbN7Q==
|
||||
dependencies:
|
||||
"@babel/types" "^7.4.4"
|
||||
|
||||
"@babel/helper-wrap-function@^7.1.0":
|
||||
version "7.2.0"
|
||||
resolved "https://registry.yarnpkg.com/@babel/helper-wrap-function/-/helper-wrap-function-7.2.0.tgz#c4e0012445769e2815b55296ead43a958549f6fa"
|
||||
@@ -271,6 +309,15 @@
|
||||
"@babel/traverse" "^7.4.0"
|
||||
"@babel/types" "^7.4.0"
|
||||
|
||||
"@babel/helpers@^7.4.4":
|
||||
version "7.4.4"
|
||||
resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.4.4.tgz#868b0ef59c1dd4e78744562d5ce1b59c89f2f2a5"
|
||||
integrity sha512-igczbR/0SeuPR8RFfC7tGrbdTbFL3QTvH6D+Z6zNxnTe//GyqmtHmDkzrqDmyZ3eSwPqB/LhyKoU5DXsp+Vp2A==
|
||||
dependencies:
|
||||
"@babel/template" "^7.4.4"
|
||||
"@babel/traverse" "^7.4.4"
|
||||
"@babel/types" "^7.4.4"
|
||||
|
||||
"@babel/highlight@^7.0.0":
|
||||
version "7.0.0"
|
||||
resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.0.0.tgz#f710c38c8d458e6dd9a201afb637fcb781ce99e4"
|
||||
@@ -290,6 +337,11 @@
|
||||
resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.4.2.tgz#b4521a400cb5a871eab3890787b4bc1326d38d91"
|
||||
integrity sha512-9fJTDipQFvlfSVdD/JBtkiY0br9BtfvW2R8wo6CX/Ej2eMuV0gWPk1M67Mt3eggQvBqYW1FCEk8BN7WvGm/g5g==
|
||||
|
||||
"@babel/parser@^7.4.4":
|
||||
version "7.4.4"
|
||||
resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.4.4.tgz#5977129431b8fe33471730d255ce8654ae1250b6"
|
||||
integrity sha512-5pCS4mOsL+ANsFZGdvNLybx4wtqAZJ0MJjMHxvzI3bvIsz6sQvzW8XX92EYIkiPtIvcfG3Aj+Ir5VNyjnZhP7w==
|
||||
|
||||
"@babel/plugin-external-helpers@^7.0.0":
|
||||
version "7.2.0"
|
||||
resolved "https://registry.yarnpkg.com/@babel/plugin-external-helpers/-/plugin-external-helpers-7.2.0.tgz#7f4cb7dee651cd380d2034847d914288467a6be4"
|
||||
@@ -708,6 +760,15 @@
|
||||
"@babel/parser" "^7.4.0"
|
||||
"@babel/types" "^7.4.0"
|
||||
|
||||
"@babel/template@^7.4.4":
|
||||
version "7.4.4"
|
||||
resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.4.4.tgz#f4b88d1225689a08f5bc3a17483545be9e4ed237"
|
||||
integrity sha512-CiGzLN9KgAvgZsnivND7rkA+AeJ9JB0ciPOD4U59GKbQP2iQl+olF1l76kJOupqidozfZ32ghwBEJDhnk9MEcw==
|
||||
dependencies:
|
||||
"@babel/code-frame" "^7.0.0"
|
||||
"@babel/parser" "^7.4.4"
|
||||
"@babel/types" "^7.4.4"
|
||||
|
||||
"@babel/traverse@^7.0.0", "@babel/traverse@^7.1.5", "@babel/traverse@^7.3.4":
|
||||
version "7.3.4"
|
||||
resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.3.4.tgz#1330aab72234f8dea091b08c4f8b9d05c7119e06"
|
||||
@@ -753,6 +814,21 @@
|
||||
globals "^11.1.0"
|
||||
lodash "^4.17.11"
|
||||
|
||||
"@babel/traverse@^7.4.4":
|
||||
version "7.4.4"
|
||||
resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.4.4.tgz#0776f038f6d78361860b6823887d4f3937133fe8"
|
||||
integrity sha512-Gw6qqkw/e6AGzlyj9KnkabJX7VcubqPtkUQVAwkc0wUMldr3A/hezNB3Rc5eIvId95iSGkGIOe5hh1kMKf951A==
|
||||
dependencies:
|
||||
"@babel/code-frame" "^7.0.0"
|
||||
"@babel/generator" "^7.4.4"
|
||||
"@babel/helper-function-name" "^7.1.0"
|
||||
"@babel/helper-split-export-declaration" "^7.4.4"
|
||||
"@babel/parser" "^7.4.4"
|
||||
"@babel/types" "^7.4.4"
|
||||
debug "^4.1.0"
|
||||
globals "^11.1.0"
|
||||
lodash "^4.17.11"
|
||||
|
||||
"@babel/types@^7.0.0":
|
||||
version "7.1.3"
|
||||
resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.1.3.tgz#3a767004567060c2f40fca49a304712c525ee37d"
|
||||
@@ -780,6 +856,15 @@
|
||||
lodash "^4.17.11"
|
||||
to-fast-properties "^2.0.0"
|
||||
|
||||
"@babel/types@^7.4.4":
|
||||
version "7.4.4"
|
||||
resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.4.4.tgz#8db9e9a629bb7c29370009b4b779ed93fe57d5f0"
|
||||
integrity sha512-dOllgYdnEFOebhkKCjzSVFqw/PmmB8pH6RGOWkY4GsboQNd47b1fBThBSwlHAq9alF9vc1M3+6oqR47R50L0tQ==
|
||||
dependencies:
|
||||
esutils "^2.0.2"
|
||||
lodash "^4.17.11"
|
||||
to-fast-properties "^2.0.0"
|
||||
|
||||
"@cnakazawa/watch@^1.0.3":
|
||||
version "1.0.3"
|
||||
resolved "https://registry.yarnpkg.com/@cnakazawa/watch/-/watch-1.0.3.tgz#099139eaec7ebf07a27c1786a3ff64f39464d2ef"
|
||||
@@ -1122,6 +1207,24 @@
|
||||
universal-user-agent "^2.0.0"
|
||||
url-template "^2.0.8"
|
||||
|
||||
"@react-native-community/bob@^0.6.1":
|
||||
version "0.6.1"
|
||||
resolved "https://registry.yarnpkg.com/@react-native-community/bob/-/bob-0.6.1.tgz#dddee0f5d622e2479b2e13a3dd15241c8eaee5c9"
|
||||
integrity sha512-DD7zWZVLifUQhbA3H2OAhPqyW3aqZJ15FUqb7ztZfwWyUwbLfz+K4wyUzfLPRG718vyau56lBWa0jsXgpCqF5g==
|
||||
dependencies:
|
||||
"@babel/core" "^7.4.0"
|
||||
chalk "^2.4.2"
|
||||
cosmiconfig "^5.2.0"
|
||||
del "^4.1.0"
|
||||
fs-extra "^7.0.1"
|
||||
glob "^7.1.3"
|
||||
inquirer "^6.2.2"
|
||||
is-git-dirty "^1.0.0"
|
||||
metro-react-native-babel-preset "^0.53.1"
|
||||
yargs "^13.2.2"
|
||||
optionalDependencies:
|
||||
jetifier "^1.0.0-beta04.2"
|
||||
|
||||
"@react-navigation/core@3.1.1":
|
||||
version "3.1.1"
|
||||
resolved "https://registry.yarnpkg.com/@react-navigation/core/-/core-3.1.1.tgz#badf449ac7d2ae65b0f5aa1bf63a87e7888458d3"
|
||||
@@ -1203,6 +1306,14 @@
|
||||
"@types/minimatch" "*"
|
||||
"@types/node" "*"
|
||||
|
||||
"@types/hoist-non-react-statics@^3.3.1":
|
||||
version "3.3.1"
|
||||
resolved "https://registry.yarnpkg.com/@types/hoist-non-react-statics/-/hoist-non-react-statics-3.3.1.tgz#1124aafe5118cb591977aeb1ceaaed1070eb039f"
|
||||
integrity sha512-iMIqiko6ooLrTh1joXodJK5X9xeEALT1kM5G3ZLhD3hszxBdIEd5C75U834D9mLcINgD4OyZf5uQXjkuYydWvA==
|
||||
dependencies:
|
||||
"@types/react" "*"
|
||||
hoist-non-react-statics "^3.3.0"
|
||||
|
||||
"@types/istanbul-lib-coverage@^1.1.0":
|
||||
version "1.1.0"
|
||||
resolved "https://registry.yarnpkg.com/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-1.1.0.tgz#2cc2ca41051498382b43157c8227fea60363f94a"
|
||||
@@ -1218,6 +1329,27 @@
|
||||
resolved "https://registry.yarnpkg.com/@types/node/-/node-11.10.0.tgz#08eeb736ae678ccf9ca0922063f3a08795894ede"
|
||||
integrity sha512-6Mb9+PPq9UzRpQrlPzZAbhEvodWDTnsIakddUAtSDpKYF6eu5zAdW31n8x7UZStvqGnDC7dCJnvU188ylv/Ytw==
|
||||
|
||||
"@types/prop-types@*":
|
||||
version "15.7.1"
|
||||
resolved "https://registry.yarnpkg.com/@types/prop-types/-/prop-types-15.7.1.tgz#f1a11e7babb0c3cad68100be381d1e064c68f1f6"
|
||||
integrity sha512-CFzn9idOEpHrgdw8JsoTkaDDyRWk1jrzIV8djzcgpq0y9tG4B4lFT+Nxh52DVpDXV+n4+NPNv7M1Dj5uMp6XFg==
|
||||
|
||||
"@types/react-native@^0.57.57":
|
||||
version "0.57.57"
|
||||
resolved "https://registry.yarnpkg.com/@types/react-native/-/react-native-0.57.57.tgz#4b59068acf6e542ac8e1e02e8a639b47e3e02c02"
|
||||
integrity sha512-OZyBlMyMeU3gXAmc1nnJhlWGihWUOiVR5Tj0y4TAA0rkKKHJwuNPPba6aaFmEaNcoZ9ejc3G30H+dneDOqICdg==
|
||||
dependencies:
|
||||
"@types/prop-types" "*"
|
||||
"@types/react" "*"
|
||||
|
||||
"@types/react@*", "@types/react@^16.8.17":
|
||||
version "16.8.17"
|
||||
resolved "https://registry.yarnpkg.com/@types/react/-/react-16.8.17.tgz#f287b76a5badb93bc9aa3f54521a3eb53d6c2374"
|
||||
integrity sha512-pln3mgc6VfkNg92WXODul/ONo140huK9OMsx62GlBlZ2lvjNK86PQJhYMPLO1i66aF5O9OPyZefogvNltBIszA==
|
||||
dependencies:
|
||||
"@types/prop-types" "*"
|
||||
csstype "^2.2.0"
|
||||
|
||||
"@types/stack-utils@^1.0.1":
|
||||
version "1.0.1"
|
||||
resolved "https://registry.yarnpkg.com/@types/stack-utils/-/stack-utils-1.0.1.tgz#0a851d3bd96498fa25c33ab7278ed3bd65f06c3e"
|
||||
@@ -1228,29 +1360,40 @@
|
||||
resolved "https://registry.yarnpkg.com/@types/yargs/-/yargs-12.0.10.tgz#17a8ec65cd8e88f51b418ceb271af18d3137df67"
|
||||
integrity sha512-WsVzTPshvCSbHThUduGGxbmnwcpkgSctHGHTqzWyFg4lYAuV5qXlyFPOsP3OWqCINfmg/8VXP+zJaa4OxEsBQQ==
|
||||
|
||||
"@typescript-eslint/eslint-plugin@^1.5.0":
|
||||
version "1.5.0"
|
||||
resolved "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-1.5.0.tgz#85c509bcfc2eb35f37958fa677379c80b7a8f66f"
|
||||
integrity sha512-TZ5HRDFz6CswqBUviPX8EfS+iOoGbclYroZKT3GWGYiGScX0qo6QjHc5uuM7JN920voP2zgCkHgF5SDEVlCtjQ==
|
||||
"@typescript-eslint/eslint-plugin@^1.6.0":
|
||||
version "1.9.0"
|
||||
resolved "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-1.9.0.tgz#29d73006811bf2563b88891ceeff1c5ea9c8d9c6"
|
||||
integrity sha512-FOgfBorxjlBGpDIw+0LaZIXRX6GEEUfzj8LXwaQIUCp+gDOvkI+1WgugJ7SmWiISqK9Vj5r8S7NDKO/LB+6X9A==
|
||||
dependencies:
|
||||
"@typescript-eslint/parser" "1.5.0"
|
||||
"@typescript-eslint/typescript-estree" "1.5.0"
|
||||
"@typescript-eslint/experimental-utils" "1.9.0"
|
||||
"@typescript-eslint/parser" "1.9.0"
|
||||
eslint-utils "^1.3.1"
|
||||
functional-red-black-tree "^1.0.1"
|
||||
regexpp "^2.0.1"
|
||||
requireindex "^1.2.0"
|
||||
tsutils "^3.7.0"
|
||||
|
||||
"@typescript-eslint/parser@1.5.0", "@typescript-eslint/parser@^1.5.0":
|
||||
version "1.5.0"
|
||||
resolved "https://registry.yarnpkg.com/@typescript-eslint/parser/-/parser-1.5.0.tgz#a96114d195dff2a49534e4c4850fb676f905a072"
|
||||
integrity sha512-pRWTnJrnxuT0ragdY26hZL+bxqDd4liMlftpH2CBlMPryOIOb1J+MdZuw6R4tIu6bWVdwbHKPTs+Q34LuGvfGw==
|
||||
"@typescript-eslint/experimental-utils@1.9.0":
|
||||
version "1.9.0"
|
||||
resolved "https://registry.yarnpkg.com/@typescript-eslint/experimental-utils/-/experimental-utils-1.9.0.tgz#a92777d0c92d7bc8627abd7cdb06cdbcaf2b39e8"
|
||||
integrity sha512-1s2dY9XxBwtS9IlSnRIlzqILPyeMly5tz1bfAmQ84Ul687xBBve5YsH5A5EKeIcGurYYqY2w6RkHETXIwnwV0A==
|
||||
dependencies:
|
||||
"@typescript-eslint/typescript-estree" "1.5.0"
|
||||
"@typescript-eslint/typescript-estree" "1.9.0"
|
||||
|
||||
"@typescript-eslint/parser@1.9.0", "@typescript-eslint/parser@^1.6.0":
|
||||
version "1.9.0"
|
||||
resolved "https://registry.yarnpkg.com/@typescript-eslint/parser/-/parser-1.9.0.tgz#5796cbfcb9a3a5757aeb671c1ac88d7a94a95962"
|
||||
integrity sha512-CWgC1XrQ34H/+LwAU7vY5xteZDkNqeAkeidEpJnJgkKu0yqQ3ZhQ7S+dI6MX4vmmM1TKRbOrKuXc6W0fIHhdbA==
|
||||
dependencies:
|
||||
"@typescript-eslint/experimental-utils" "1.9.0"
|
||||
"@typescript-eslint/typescript-estree" "1.9.0"
|
||||
eslint-scope "^4.0.0"
|
||||
eslint-visitor-keys "^1.0.0"
|
||||
|
||||
"@typescript-eslint/typescript-estree@1.5.0":
|
||||
version "1.5.0"
|
||||
resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-1.5.0.tgz#986b356ecdf5a0c3bc9889d221802149cf5dbd4e"
|
||||
integrity sha512-XqR14d4BcYgxcrpxIwcee7UEjncl9emKc/MgkeUfIk2u85KlsGYyaxC7Zxjmb17JtWERk/NaO+KnBsqgpIXzwA==
|
||||
"@typescript-eslint/typescript-estree@1.9.0":
|
||||
version "1.9.0"
|
||||
resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-1.9.0.tgz#5d6d49be936e96fb0f859673480f89b070a5dd9b"
|
||||
integrity sha512-7Eg0TEQpCkTsEwsl1lIzd6i7L3pJLQFWesV08dS87bNz0NeSjbL78gNAP1xCKaCejkds4PhpLnZkaAjx9SU8OA==
|
||||
dependencies:
|
||||
lodash.unescape "4.0.1"
|
||||
semver "5.5.0"
|
||||
@@ -1539,7 +1682,7 @@ array-slice@^0.2.3:
|
||||
resolved "https://registry.yarnpkg.com/array-slice/-/array-slice-0.2.3.tgz#dd3cfb80ed7973a75117cdac69b0b99ec86186f5"
|
||||
integrity sha1-3Tz7gO15c6dRF82sabC5nshhhvU=
|
||||
|
||||
array-union@^1.0.2:
|
||||
array-union@^1.0.1, array-union@^1.0.2:
|
||||
version "1.0.2"
|
||||
resolved "https://registry.yarnpkg.com/array-union/-/array-union-1.0.2.tgz#9a34410e4f4e3da23dea375be5be70f24778ec39"
|
||||
integrity sha1-mjRBDk9OPaI96jdb5b5w8kd47Dk=
|
||||
@@ -2158,6 +2301,15 @@ cliui@^4.0.0:
|
||||
strip-ansi "^4.0.0"
|
||||
wrap-ansi "^2.0.0"
|
||||
|
||||
cliui@^5.0.0:
|
||||
version "5.0.0"
|
||||
resolved "https://registry.yarnpkg.com/cliui/-/cliui-5.0.0.tgz#deefcfdb2e800784aa34f46fa08e06851c7bbbc5"
|
||||
integrity sha512-PYeGSEmmHM6zvoef2w8TPzlrnNpXIjTipYK780YswmIP9vjxmd6Y2a3CB2Ks6/AU8NHjZugXvo8w3oWM2qnwXA==
|
||||
dependencies:
|
||||
string-width "^3.1.0"
|
||||
strip-ansi "^5.2.0"
|
||||
wrap-ansi "^5.1.0"
|
||||
|
||||
clone-response@^1.0.2:
|
||||
version "1.0.2"
|
||||
resolved "https://registry.yarnpkg.com/clone-response/-/clone-response-1.0.2.tgz#d1dc973920314df67fbeb94223b4ee350239e96b"
|
||||
@@ -2560,6 +2712,16 @@ cosmiconfig@^5.0.5, cosmiconfig@^5.0.7:
|
||||
lodash.get "^4.4.2"
|
||||
parse-json "^4.0.0"
|
||||
|
||||
cosmiconfig@^5.2.0:
|
||||
version "5.2.1"
|
||||
resolved "https://registry.yarnpkg.com/cosmiconfig/-/cosmiconfig-5.2.1.tgz#040f726809c591e77a17c0a3626ca45b4f168b1a"
|
||||
integrity sha512-H65gsXo1SKjf8zmrJ67eJk8aIRKV5ff2D4uKZIBZShbhGSpEmsQOPW/SKMKYhSTrqR7ufy6RP69rPogdaPh/kA==
|
||||
dependencies:
|
||||
import-fresh "^2.0.0"
|
||||
is-directory "^0.3.1"
|
||||
js-yaml "^3.13.1"
|
||||
parse-json "^4.0.0"
|
||||
|
||||
cp-file@^6.1.0:
|
||||
version "6.1.0"
|
||||
resolved "https://registry.yarnpkg.com/cp-file/-/cp-file-6.1.0.tgz#b48d2d80577d4c5025c68eb597a38093c1dc9ccf"
|
||||
@@ -2657,6 +2819,11 @@ cssstyle@^1.0.0:
|
||||
dependencies:
|
||||
cssom "0.3.x"
|
||||
|
||||
csstype@^2.2.0:
|
||||
version "2.6.4"
|
||||
resolved "https://registry.yarnpkg.com/csstype/-/csstype-2.6.4.tgz#d585a6062096e324e7187f80e04f92bd0f00e37f"
|
||||
integrity sha512-lAJUJP3M6HxFXbqtGRc0iZrdyeN+WzOWeY0q/VnFzI+kqVrYIzC7bWlKqCW7oCIdzoPkvfp82EVvrTlQ8zsWQg==
|
||||
|
||||
currently-unhandled@^0.4.1:
|
||||
version "0.4.1"
|
||||
resolved "https://registry.yarnpkg.com/currently-unhandled/-/currently-unhandled-0.4.1.tgz#988df33feab191ef799a61369dd76c17adf957ea"
|
||||
@@ -2801,6 +2968,19 @@ define-property@^2.0.2:
|
||||
is-descriptor "^1.0.2"
|
||||
isobject "^3.0.1"
|
||||
|
||||
del@^4.1.0:
|
||||
version "4.1.1"
|
||||
resolved "https://registry.yarnpkg.com/del/-/del-4.1.1.tgz#9e8f117222ea44a31ff3a156c049b99052a9f0b4"
|
||||
integrity sha512-QwGuEUouP2kVwQenAsOof5Fv8K9t3D8Ca8NxcXKrIpEHjTXK5J2nXLdP+ALI1cgv8wj7KuwBhTwBkOZSJKM5XQ==
|
||||
dependencies:
|
||||
"@types/glob" "^7.1.1"
|
||||
globby "^6.1.0"
|
||||
is-path-cwd "^2.0.0"
|
||||
is-path-in-cwd "^2.0.0"
|
||||
p-map "^2.0.0"
|
||||
pify "^4.0.1"
|
||||
rimraf "^2.6.3"
|
||||
|
||||
delayed-stream@~1.0.0:
|
||||
version "1.0.0"
|
||||
resolved "https://registry.yarnpkg.com/delayed-stream/-/delayed-stream-1.0.0.tgz#df3ae199acadfb7d440aaae0b29e2272b24ec619"
|
||||
@@ -3130,25 +3310,25 @@ eslint-config-prettier@^4.1.0:
|
||||
dependencies:
|
||||
get-stdin "^6.0.0"
|
||||
|
||||
eslint-config-satya164@^2.3.5:
|
||||
version "2.3.5"
|
||||
resolved "https://registry.yarnpkg.com/eslint-config-satya164/-/eslint-config-satya164-2.3.5.tgz#b5397699edef5c37c74ff27afd2e9cbe3f80cb6e"
|
||||
integrity sha512-2ESncdSG2PMqa3+/eAqwTZArHtwvh7kpZNQ/mP03QDUNMYW8lx03vjcFzXTN9KvJpbVfrfaoXzyPMwwbkeDysw==
|
||||
eslint-config-satya164@^2.4.1:
|
||||
version "2.4.1"
|
||||
resolved "https://registry.yarnpkg.com/eslint-config-satya164/-/eslint-config-satya164-2.4.1.tgz#139909a590d4503197d501051deef9aa67768990"
|
||||
integrity sha512-i9fqMDq4XywgRrcYdaPwmv/i+FtGI1FTXz9yKb4JktlWnU555cxmryFDknNJJj9cL06RR5a/O5hnJSoLksGWbQ==
|
||||
dependencies:
|
||||
"@typescript-eslint/eslint-plugin" "^1.5.0"
|
||||
"@typescript-eslint/parser" "^1.5.0"
|
||||
"@typescript-eslint/eslint-plugin" "^1.6.0"
|
||||
"@typescript-eslint/parser" "^1.6.0"
|
||||
babel-eslint "^10.0.1"
|
||||
eslint-config-prettier "^4.1.0"
|
||||
eslint-plugin-babel "^5.3.0"
|
||||
eslint-plugin-eslint-comments "^3.1.1"
|
||||
eslint-plugin-flowtype "^3.4.2"
|
||||
eslint-plugin-flowtype "^3.6.1"
|
||||
eslint-plugin-import "^2.16.0"
|
||||
eslint-plugin-jest "^22.4.1"
|
||||
eslint-plugin-json "^1.4.0"
|
||||
eslint-plugin-markdown "^1.0.0"
|
||||
eslint-plugin-prettier "^3.0.1"
|
||||
eslint-plugin-react "^7.12.4"
|
||||
eslint-plugin-react-hooks "^1.5.1"
|
||||
eslint-plugin-react-hooks "^1.6.0"
|
||||
eslint-plugin-react-native "^3.6.0"
|
||||
|
||||
eslint-import-resolver-node@^0.3.2:
|
||||
@@ -3182,10 +3362,10 @@ eslint-plugin-eslint-comments@^3.1.1:
|
||||
escape-string-regexp "^1.0.5"
|
||||
ignore "^5.0.5"
|
||||
|
||||
eslint-plugin-flowtype@^3.4.2:
|
||||
version "3.4.2"
|
||||
resolved "https://registry.yarnpkg.com/eslint-plugin-flowtype/-/eslint-plugin-flowtype-3.4.2.tgz#55475e10b05fd714d60bceebbbed596cb8706b16"
|
||||
integrity sha512-sv6O6fiN3dIwhU4qRxfcyIpbKGVvsxwIQ6vgBLudpQKjH1rEyEFEOjGzGEUBTQP9J8LdTZm37OjiqZ0ZeFOa6g==
|
||||
eslint-plugin-flowtype@^3.6.1:
|
||||
version "3.9.0"
|
||||
resolved "https://registry.yarnpkg.com/eslint-plugin-flowtype/-/eslint-plugin-flowtype-3.9.0.tgz#031949e2685e9e8658a1166e1cac3163313c3e0d"
|
||||
integrity sha512-g5CMBJx0dagvOOYLo0ws5Y4+Ma8BBDtgQU+AkjL3W0z8LJUsGL2avY2/bsTZS69qzEA+G7qWKleI1aZp6QNBBw==
|
||||
dependencies:
|
||||
lodash "^4.17.11"
|
||||
|
||||
@@ -3233,7 +3413,7 @@ eslint-plugin-prettier@^3.0.1:
|
||||
dependencies:
|
||||
prettier-linter-helpers "^1.0.0"
|
||||
|
||||
eslint-plugin-react-hooks@^1.5.1:
|
||||
eslint-plugin-react-hooks@^1.6.0:
|
||||
version "1.6.0"
|
||||
resolved "https://registry.yarnpkg.com/eslint-plugin-react-hooks/-/eslint-plugin-react-hooks-1.6.0.tgz#348efcda8fb426399ac7b8609607c7b4025a6f5f"
|
||||
integrity sha512-lHBVRIaz5ibnIgNG07JNiAuBUeKhEf8l4etNx5vfAEwqQ5tcuK3jV9yjmopPgQDagQb7HwIuQVsE3IVcGrRnag==
|
||||
@@ -3419,6 +3599,19 @@ execa@^0.10.0:
|
||||
signal-exit "^3.0.0"
|
||||
strip-eof "^1.0.0"
|
||||
|
||||
execa@^0.6.1:
|
||||
version "0.6.3"
|
||||
resolved "https://registry.yarnpkg.com/execa/-/execa-0.6.3.tgz#57b69a594f081759c69e5370f0d17b9cb11658fe"
|
||||
integrity sha1-V7aaWU8IF1nGnlNw8NF7nLEWWP4=
|
||||
dependencies:
|
||||
cross-spawn "^5.0.1"
|
||||
get-stream "^3.0.0"
|
||||
is-stream "^1.1.0"
|
||||
npm-run-path "^2.0.0"
|
||||
p-finally "^1.0.0"
|
||||
signal-exit "^3.0.0"
|
||||
strip-eof "^1.0.0"
|
||||
|
||||
execa@^0.7.0:
|
||||
version "0.7.0"
|
||||
resolved "https://registry.yarnpkg.com/execa/-/execa-0.7.0.tgz#944becd34cc41ee32a63a9faf27ad5a65fc59777"
|
||||
@@ -3827,6 +4020,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.yarnpkg.com/fs-extra/-/fs-extra-7.0.1.tgz#4f189c44aa123b895f722804f55ea23eadc348e9"
|
||||
integrity sha512-YJDaCJZEnBmcbw13fvdAM9AwNOJwOzrE4pqMqBq5nFiEqXUqHwlK4B+3pUw6JNvfSPtX05xFHtYy/1ni01eGCw==
|
||||
dependencies:
|
||||
graceful-fs "^4.1.2"
|
||||
jsonfile "^4.0.0"
|
||||
universalify "^0.1.0"
|
||||
|
||||
fs-minipass@^1.2.5:
|
||||
version "1.2.5"
|
||||
resolved "https://registry.yarnpkg.com/fs-minipass/-/fs-minipass-1.2.5.tgz#06c277218454ec288df77ada54a03b8702aacb9d"
|
||||
@@ -3896,6 +4098,11 @@ get-caller-file@^1.0.1:
|
||||
resolved "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-1.0.3.tgz#f978fa4c90d1dfe7ff2d6beda2a515e713bdcf4a"
|
||||
integrity sha512-3t6rVToeoZfYSGd8YoLFR2DJkiQrIiUrGcjvFX2mDw3bn6k2OtwHN0TNCLbBO+w8qTvimhDkv+LSscbJY1vE6w==
|
||||
|
||||
get-caller-file@^2.0.1:
|
||||
version "2.0.5"
|
||||
resolved "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-2.0.5.tgz#4f94412a82db32f36e3b0b9741f8a97feb031f7e"
|
||||
integrity sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==
|
||||
|
||||
get-pkg-repo@^1.0.0:
|
||||
version "1.4.0"
|
||||
resolved "https://registry.yarnpkg.com/get-pkg-repo/-/get-pkg-repo-1.4.0.tgz#c73b489c06d80cc5536c2c853f9e05232056972d"
|
||||
@@ -4080,6 +4287,17 @@ globby@9.1.0:
|
||||
pify "^4.0.1"
|
||||
slash "^2.0.0"
|
||||
|
||||
globby@^6.1.0:
|
||||
version "6.1.0"
|
||||
resolved "https://registry.yarnpkg.com/globby/-/globby-6.1.0.tgz#f5a6d70e8395e21c858fb0489d64df02424d506c"
|
||||
integrity sha1-9abXDoOV4hyFj7BInWTfAkJNUGw=
|
||||
dependencies:
|
||||
array-union "^1.0.1"
|
||||
glob "^7.0.3"
|
||||
object-assign "^4.0.1"
|
||||
pify "^2.0.0"
|
||||
pinkie-promise "^2.0.0"
|
||||
|
||||
globby@^9.1.0:
|
||||
version "9.2.0"
|
||||
resolved "https://registry.yarnpkg.com/globby/-/globby-9.2.0.tgz#fd029a706c703d29bdd170f4b6db3a3f7a7cb63d"
|
||||
@@ -4640,6 +4858,22 @@ is-generator-fn@^2.0.0:
|
||||
resolved "https://registry.yarnpkg.com/is-generator-fn/-/is-generator-fn-2.0.0.tgz#038c31b774709641bda678b1f06a4e3227c10b3e"
|
||||
integrity sha512-elzyIdM7iKoFHzcrndIqjYomImhxrFRnGP3galODoII4TB9gI7mZ+FnlLQmmjf27SxHS2gKEeyhX5/+YRS6H9g==
|
||||
|
||||
is-git-dirty@^1.0.0:
|
||||
version "1.0.0"
|
||||
resolved "https://registry.yarnpkg.com/is-git-dirty/-/is-git-dirty-1.0.0.tgz#cd58f329ea826bd4d5388f1ef90459fe947e3b96"
|
||||
integrity sha512-Qg7kqQ99B++ucplBiYvSahvPxQD63979CMv3TSJ66ZjjjulkPh4InXPAf//ZO1cq7W4d+pjGdObwS2LvXnldTQ==
|
||||
dependencies:
|
||||
execa "^0.10.0"
|
||||
is-git-repository "^1.1.1"
|
||||
|
||||
is-git-repository@^1.1.1:
|
||||
version "1.1.1"
|
||||
resolved "https://registry.yarnpkg.com/is-git-repository/-/is-git-repository-1.1.1.tgz#c68e4b7a806422349aaec488973a90558d7e9be0"
|
||||
integrity sha1-xo5LeoBkIjSarsSIlzqQVY1+m+A=
|
||||
dependencies:
|
||||
execa "^0.6.1"
|
||||
path-is-absolute "^1.0.1"
|
||||
|
||||
is-glob@^2.0.0, is-glob@^2.0.1:
|
||||
version "2.0.1"
|
||||
resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-2.0.1.tgz#d096f926a3ded5600f3fdfd91198cb0888c2d863"
|
||||
@@ -4708,6 +4942,18 @@ is-obj@^1.0.0:
|
||||
resolved "https://registry.yarnpkg.com/is-obj/-/is-obj-1.0.1.tgz#3e4729ac1f5fde025cd7d83a896dab9f4f67db0f"
|
||||
integrity sha1-PkcprB9f3gJc19g6iW2rn09n2w8=
|
||||
|
||||
is-path-cwd@^2.0.0:
|
||||
version "2.1.0"
|
||||
resolved "https://registry.yarnpkg.com/is-path-cwd/-/is-path-cwd-2.1.0.tgz#2e0c7e463ff5b7a0eb60852d851a6809347a124c"
|
||||
integrity sha512-Sc5j3/YnM8tDeyCsVeKlm/0p95075DyLmDEIkSgQ7mXkrOX+uTCtmQFm0CYzVyJwcCCmO3k8qfJt17SxQwB5Zw==
|
||||
|
||||
is-path-in-cwd@^2.0.0:
|
||||
version "2.1.0"
|
||||
resolved "https://registry.yarnpkg.com/is-path-in-cwd/-/is-path-in-cwd-2.1.0.tgz#bfe2dca26c69f397265a4009963602935a053acb"
|
||||
integrity sha512-rNocXHgipO+rvnP6dk3zI20RpOtrAM/kzbB258Uw5BWr3TpXi861yzjo16Dn4hUox07iw5AyeMLHWsujkjzvRQ==
|
||||
dependencies:
|
||||
is-path-inside "^2.1.0"
|
||||
|
||||
is-path-inside@^1.0.0:
|
||||
version "1.0.1"
|
||||
resolved "https://registry.yarnpkg.com/is-path-inside/-/is-path-inside-1.0.1.tgz#8ef5b7de50437a3fdca6b4e865ef7aa55cb48036"
|
||||
@@ -4715,6 +4961,13 @@ is-path-inside@^1.0.0:
|
||||
dependencies:
|
||||
path-is-inside "^1.0.1"
|
||||
|
||||
is-path-inside@^2.1.0:
|
||||
version "2.1.0"
|
||||
resolved "https://registry.yarnpkg.com/is-path-inside/-/is-path-inside-2.1.0.tgz#7c9810587d659a40d27bcdb4d5616eab059494b2"
|
||||
integrity sha512-wiyhTzfDWsvwAW53OBWF5zuvaOGlZ6PwYxAbPVDhpm+gM09xKQGjBq/8uYN12aDvMxnAnq3dxTyoSoRNmg5YFg==
|
||||
dependencies:
|
||||
path-is-inside "^1.0.2"
|
||||
|
||||
is-plain-obj@^1.1.0:
|
||||
version "1.1.0"
|
||||
resolved "https://registry.yarnpkg.com/is-plain-obj/-/is-plain-obj-1.1.0.tgz#71a50c8429dfca773c92a390a4a03b39fcd51d3e"
|
||||
@@ -5319,6 +5572,11 @@ jest@^24.5.0:
|
||||
import-local "^2.0.0"
|
||||
jest-cli "^24.5.0"
|
||||
|
||||
jetifier@^1.0.0-beta04.2:
|
||||
version "1.6.1"
|
||||
resolved "https://registry.yarnpkg.com/jetifier/-/jetifier-1.6.1.tgz#4aa50dd35c5f6893c35c2278c53972852fd0e877"
|
||||
integrity sha512-EF55MQWvFRaTA8LwHW15N4qnYm2a1Crg95YcVI7cTTzS9iNkBFgJ/f+o0OeJ62U1Laidrq/WG7HkYKoGwwPRRQ==
|
||||
|
||||
"js-tokens@^3.0.0 || ^4.0.0", js-tokens@^4.0.0:
|
||||
version "4.0.0"
|
||||
resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-4.0.0.tgz#19203fb59991df98e3a287050d4647cdeaf32499"
|
||||
@@ -5332,6 +5590,14 @@ js-yaml@^3.12.0, js-yaml@^3.13.0:
|
||||
argparse "^1.0.7"
|
||||
esprima "^4.0.0"
|
||||
|
||||
js-yaml@^3.13.1:
|
||||
version "3.13.1"
|
||||
resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.13.1.tgz#aff151b30bfdfa8e49e05da22e7415e9dfa37847"
|
||||
integrity sha512-YfbcO7jXDdyj0DGxYVSlSeQNHbD7XPWvrVWeVUujrQEoZzWJIRrCPoyk6kL6IAjAG2IolMK4T0hNUe0HOUs5Jw==
|
||||
dependencies:
|
||||
argparse "^1.0.7"
|
||||
esprima "^4.0.0"
|
||||
|
||||
js-yaml@^3.9.0:
|
||||
version "3.12.2"
|
||||
resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.12.2.tgz#ef1d067c5a9d9cb65bd72f285b5d8105c77f14fc"
|
||||
@@ -5443,6 +5709,13 @@ jsonfile@^2.1.0:
|
||||
optionalDependencies:
|
||||
graceful-fs "^4.1.6"
|
||||
|
||||
jsonfile@^4.0.0:
|
||||
version "4.0.0"
|
||||
resolved "https://registry.yarnpkg.com/jsonfile/-/jsonfile-4.0.0.tgz#8771aae0799b64076b76640fca058f9c10e33ecb"
|
||||
integrity sha1-h3Gq4HmbZAdrdmQPygWPnBDjPss=
|
||||
optionalDependencies:
|
||||
graceful-fs "^4.1.6"
|
||||
|
||||
jsonify@~0.0.0:
|
||||
version "0.0.0"
|
||||
resolved "https://registry.yarnpkg.com/jsonify/-/jsonify-0.0.0.tgz#2c74b6ee41d93ca51b7b5aaee8f503631d252a73"
|
||||
@@ -5894,6 +6167,13 @@ metro-babel7-plugin-react-transform@0.48.5:
|
||||
dependencies:
|
||||
"@babel/helper-module-imports" "^7.0.0"
|
||||
|
||||
metro-babel7-plugin-react-transform@0.53.1:
|
||||
version "0.53.1"
|
||||
resolved "https://registry.yarnpkg.com/metro-babel7-plugin-react-transform/-/metro-babel7-plugin-react-transform-0.53.1.tgz#9ad31e5c84f5003333a6a3cf79f2d093cd3b2ddc"
|
||||
integrity sha512-98lEpTu7mox/7QurxVuLnbjrGDdayjpS2Z1T4vkLcP+mBxzloKJuTRnmtyWC8cNlx9qjimHGDlqtNY78rQ8rsA==
|
||||
dependencies:
|
||||
"@babel/helper-module-imports" "^7.0.0"
|
||||
|
||||
metro-cache@0.48.5:
|
||||
version "0.48.5"
|
||||
resolved "https://registry.yarnpkg.com/metro-cache/-/metro-cache-0.48.5.tgz#5ab3ad13c9df527f4196f0de096a3d496db97a6b"
|
||||
@@ -5978,6 +6258,48 @@ metro-react-native-babel-preset@0.48.5:
|
||||
metro-babel7-plugin-react-transform "0.48.5"
|
||||
react-transform-hmr "^1.0.4"
|
||||
|
||||
metro-react-native-babel-preset@^0.53.1:
|
||||
version "0.53.1"
|
||||
resolved "https://registry.yarnpkg.com/metro-react-native-babel-preset/-/metro-react-native-babel-preset-0.53.1.tgz#6cd9e41a1b9a6e210e71ef2adf114219b4eaf2ec"
|
||||
integrity sha512-Uf8EGL8kIPhDkoSdAAysNPxPQclUS2R1QC4cwnc8bkk2f6yqGn+1CorfiY9AaqlLEth5mKQqdtRYFDTFfB9QyA==
|
||||
dependencies:
|
||||
"@babel/plugin-proposal-class-properties" "^7.0.0"
|
||||
"@babel/plugin-proposal-export-default-from" "^7.0.0"
|
||||
"@babel/plugin-proposal-nullish-coalescing-operator" "^7.0.0"
|
||||
"@babel/plugin-proposal-object-rest-spread" "^7.0.0"
|
||||
"@babel/plugin-proposal-optional-catch-binding" "^7.0.0"
|
||||
"@babel/plugin-proposal-optional-chaining" "^7.0.0"
|
||||
"@babel/plugin-syntax-dynamic-import" "^7.0.0"
|
||||
"@babel/plugin-syntax-export-default-from" "^7.0.0"
|
||||
"@babel/plugin-syntax-flow" "^7.2.0"
|
||||
"@babel/plugin-transform-arrow-functions" "^7.0.0"
|
||||
"@babel/plugin-transform-block-scoping" "^7.0.0"
|
||||
"@babel/plugin-transform-classes" "^7.0.0"
|
||||
"@babel/plugin-transform-computed-properties" "^7.0.0"
|
||||
"@babel/plugin-transform-destructuring" "^7.0.0"
|
||||
"@babel/plugin-transform-exponentiation-operator" "^7.0.0"
|
||||
"@babel/plugin-transform-flow-strip-types" "^7.0.0"
|
||||
"@babel/plugin-transform-for-of" "^7.0.0"
|
||||
"@babel/plugin-transform-function-name" "^7.0.0"
|
||||
"@babel/plugin-transform-literals" "^7.0.0"
|
||||
"@babel/plugin-transform-modules-commonjs" "^7.0.0"
|
||||
"@babel/plugin-transform-object-assign" "^7.0.0"
|
||||
"@babel/plugin-transform-parameters" "^7.0.0"
|
||||
"@babel/plugin-transform-react-display-name" "^7.0.0"
|
||||
"@babel/plugin-transform-react-jsx" "^7.0.0"
|
||||
"@babel/plugin-transform-react-jsx-source" "^7.0.0"
|
||||
"@babel/plugin-transform-regenerator" "^7.0.0"
|
||||
"@babel/plugin-transform-runtime" "^7.0.0"
|
||||
"@babel/plugin-transform-shorthand-properties" "^7.0.0"
|
||||
"@babel/plugin-transform-spread" "^7.0.0"
|
||||
"@babel/plugin-transform-sticky-regex" "^7.0.0"
|
||||
"@babel/plugin-transform-template-literals" "^7.0.0"
|
||||
"@babel/plugin-transform-typescript" "^7.0.0"
|
||||
"@babel/plugin-transform-unicode-regex" "^7.0.0"
|
||||
"@babel/template" "^7.0.0"
|
||||
metro-babel7-plugin-react-transform "0.53.1"
|
||||
react-transform-hmr "^1.0.4"
|
||||
|
||||
metro-resolver@0.48.5:
|
||||
version "0.48.5"
|
||||
resolved "https://registry.yarnpkg.com/metro-resolver/-/metro-resolver-0.48.5.tgz#d2ff84afab13ec3962685953ebd03d878e1f4c36"
|
||||
@@ -6633,7 +6955,7 @@ os-locale@^2.0.0:
|
||||
lcid "^1.0.0"
|
||||
mem "^1.1.0"
|
||||
|
||||
os-locale@^3.0.0:
|
||||
os-locale@^3.0.0, os-locale@^3.1.0:
|
||||
version "3.1.0"
|
||||
resolved "https://registry.yarnpkg.com/os-locale/-/os-locale-3.1.0.tgz#a802a6ee17f24c10483ab9935719cef4ed16bf1a"
|
||||
integrity sha512-Z8l3R4wYWM40/52Z+S265okfFj8Kt2cC2MKY+xNi3kFs+XGI7WXu/I309QQQYbRW4ijiZ+yxs9pqEhJh0DqW3Q==
|
||||
@@ -6718,6 +7040,11 @@ p-locate@^3.0.0:
|
||||
dependencies:
|
||||
p-limit "^2.0.0"
|
||||
|
||||
p-map@^2.0.0:
|
||||
version "2.1.0"
|
||||
resolved "https://registry.yarnpkg.com/p-map/-/p-map-2.1.0.tgz#310928feef9c9ecc65b68b17693018a665cea175"
|
||||
integrity sha512-y3b8Kpd8OAN444hxfBbFfj1FY/RjtTd8tzYwhUqNYXx0fXx2iX4maP4Qr6qhIKbQXI02wTLAda4fYUbDagTUFw==
|
||||
|
||||
p-reduce@^1.0.0:
|
||||
version "1.0.0"
|
||||
resolved "https://registry.yarnpkg.com/p-reduce/-/p-reduce-1.0.0.tgz#18c2b0dd936a4690a529f8231f58a0fdb6a47dfa"
|
||||
@@ -6854,7 +7181,7 @@ path-exists@^3.0.0:
|
||||
resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-3.0.0.tgz#ce0ebeaa5f78cb18925ea7d810d7b59b010fd515"
|
||||
integrity sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=
|
||||
|
||||
path-is-absolute@^1.0.0:
|
||||
path-is-absolute@^1.0.0, path-is-absolute@^1.0.1:
|
||||
version "1.0.1"
|
||||
resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f"
|
||||
integrity sha1-F0uSaHNVNP+8es5r9TpanhtcX18=
|
||||
@@ -7030,10 +7357,10 @@ prettier-linter-helpers@^1.0.0:
|
||||
dependencies:
|
||||
fast-diff "^1.1.2"
|
||||
|
||||
prettier@^1.8.2:
|
||||
version "1.16.4"
|
||||
resolved "https://registry.yarnpkg.com/prettier/-/prettier-1.16.4.tgz#73e37e73e018ad2db9c76742e2647e21790c9717"
|
||||
integrity sha512-ZzWuos7TI5CKUeQAtFd6Zhm2s6EpAD/ZLApIhsF9pRvRtM1RFo61dM/4MSRUA0SuLugA/zgrZD8m0BaY46Og7g==
|
||||
prettier@^1.17.1:
|
||||
version "1.17.1"
|
||||
resolved "https://registry.yarnpkg.com/prettier/-/prettier-1.17.1.tgz#ed64b4e93e370cb8a25b9ef7fef3e4fd1c0995db"
|
||||
integrity sha512-TzGRNvuUSmPgwivDqkZ9tM/qTGW9hqDKWOE9YHiyQdixlKbv7kvEqsmDPrcHJTKwthU774TQwZXVtaQ/mMsvjg==
|
||||
|
||||
pretty-format@^23.4.1:
|
||||
version "23.6.0"
|
||||
@@ -7274,6 +7601,13 @@ react-native-safe-area-view@^0.13.0:
|
||||
dependencies:
|
||||
hoist-non-react-statics "^2.3.1"
|
||||
|
||||
react-native-safe-area-view@^0.14.6:
|
||||
version "0.14.6"
|
||||
resolved "https://registry.yarnpkg.com/react-native-safe-area-view/-/react-native-safe-area-view-0.14.6.tgz#9a9d37d9f8f3887d60c4076eae7b5d2319539446"
|
||||
integrity sha512-dbzuvaeHFV1VBpyMaC0gtJ2BqFt6ls/405A0t78YN1sXiTrVr3ki86Ysct8mzifWqLdvWzcWagE5wfMtdxnqoA==
|
||||
dependencies:
|
||||
hoist-non-react-statics "^2.3.1"
|
||||
|
||||
"react-native-screens@^1.0.0 || ^1.0.0-alpha":
|
||||
version "1.0.0-alpha.22"
|
||||
resolved "https://registry.yarnpkg.com/react-native-screens/-/react-native-screens-1.0.0-alpha.22.tgz#7a120377b52aa9bbb94d0b8541a014026be9289b"
|
||||
@@ -7784,6 +8118,11 @@ require-main-filename@^1.0.1:
|
||||
resolved "https://registry.yarnpkg.com/require-main-filename/-/require-main-filename-1.0.1.tgz#97f717b69d48784f5f526a6c5aa8ffdda055a4d1"
|
||||
integrity sha1-l/cXtp1IeE9fUmpsWqj/3aBVpNE=
|
||||
|
||||
require-main-filename@^2.0.0:
|
||||
version "2.0.0"
|
||||
resolved "https://registry.yarnpkg.com/require-main-filename/-/require-main-filename-2.0.0.tgz#d0b329ecc7cc0f61649f62215be69af54aa8989b"
|
||||
integrity sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==
|
||||
|
||||
requireindex@^1.2.0:
|
||||
version "1.2.0"
|
||||
resolved "https://registry.yarnpkg.com/requireindex/-/requireindex-1.2.0.tgz#3463cdb22ee151902635aa6c9535d4de9c2ef1ef"
|
||||
@@ -7867,7 +8206,7 @@ retry@0.12.0:
|
||||
resolved "https://registry.yarnpkg.com/retry/-/retry-0.12.0.tgz#1b42a6266a21f07421d1b0b54b7dc167b01c013b"
|
||||
integrity sha1-G0KmJmoh8HQh0bC1S33BZ7AcATs=
|
||||
|
||||
rimraf@2.6.3, rimraf@^2.5.2, rimraf@^2.5.4, rimraf@^2.6.1, rimraf@^2.6.2:
|
||||
rimraf@2.6.3, rimraf@^2.5.2, rimraf@^2.5.4, rimraf@^2.6.1, rimraf@^2.6.2, rimraf@^2.6.3:
|
||||
version "2.6.3"
|
||||
resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.6.3.tgz#b2d104fe0d8fb27cf9e0a1cda8262dd3833c6cab"
|
||||
integrity sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA==
|
||||
@@ -8388,7 +8727,7 @@ string-width@^1.0.1:
|
||||
is-fullwidth-code-point "^2.0.0"
|
||||
strip-ansi "^4.0.0"
|
||||
|
||||
string-width@^3.0.0:
|
||||
string-width@^3.0.0, string-width@^3.1.0:
|
||||
version "3.1.0"
|
||||
resolved "https://registry.yarnpkg.com/string-width/-/string-width-3.1.0.tgz#22767be21b62af1081574306f69ac51b62203961"
|
||||
integrity sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==
|
||||
@@ -8441,7 +8780,7 @@ strip-ansi@^5.0.0:
|
||||
dependencies:
|
||||
ansi-regex "^4.0.0"
|
||||
|
||||
strip-ansi@^5.1.0:
|
||||
strip-ansi@^5.1.0, strip-ansi@^5.2.0:
|
||||
version "5.2.0"
|
||||
resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-5.2.0.tgz#8c9a536feb6afc962bdfa5b104a5091c1ad9c0ae"
|
||||
integrity sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==
|
||||
@@ -8741,6 +9080,11 @@ typedarray@^0.0.6:
|
||||
resolved "https://registry.yarnpkg.com/typedarray/-/typedarray-0.0.6.tgz#867ac74e3864187b1d3d47d996a78ec5c8830777"
|
||||
integrity sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c=
|
||||
|
||||
typescript@^3.5.2:
|
||||
version "3.5.2"
|
||||
resolved "https://registry.yarnpkg.com/typescript/-/typescript-3.5.2.tgz#a09e1dc69bc9551cadf17dba10ee42cf55e5d56c"
|
||||
integrity sha512-7KxJovlYhTX5RaRbUdkAXN1KUZ8PwWlTzQdHV6xNqvuFOs7+WBo10TQUqT19Q/Jz2hk5v9TQDIhyLhhJY4p5AA==
|
||||
|
||||
ua-parser-js@^0.7.18:
|
||||
version "0.7.19"
|
||||
resolved "https://registry.yarnpkg.com/ua-parser-js/-/ua-parser-js-0.7.19.tgz#94151be4c0a7fb1d001af7022fdaca4642659e4b"
|
||||
@@ -8870,6 +9214,11 @@ universal-user-agent@^2.0.0, universal-user-agent@^2.0.1:
|
||||
dependencies:
|
||||
os-name "^3.0.0"
|
||||
|
||||
universalify@^0.1.0:
|
||||
version "0.1.2"
|
||||
resolved "https://registry.yarnpkg.com/universalify/-/universalify-0.1.2.tgz#b646f69be3942dabcecc9d6639c80dc105efaa66"
|
||||
integrity sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==
|
||||
|
||||
unpipe@~1.0.0:
|
||||
version "1.0.0"
|
||||
resolved "https://registry.yarnpkg.com/unpipe/-/unpipe-1.0.0.tgz#b2bf4ee8514aae6165b4817829d21b2ef49904ec"
|
||||
@@ -9170,6 +9519,15 @@ wrap-ansi@^2.0.0:
|
||||
string-width "^1.0.1"
|
||||
strip-ansi "^3.0.1"
|
||||
|
||||
wrap-ansi@^5.1.0:
|
||||
version "5.1.0"
|
||||
resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-5.1.0.tgz#1fd1f67235d5b6d0fee781056001bfb694c03b09"
|
||||
integrity sha512-QC1/iN/2/RPVJ5jYK8BGttj5z83LmSKmvbvrXPNCLZSEb32KKVDJDl/MOt2N01qU2H/FkzEa9PKto1BqDjtd7Q==
|
||||
dependencies:
|
||||
ansi-styles "^3.2.0"
|
||||
string-width "^3.0.0"
|
||||
strip-ansi "^5.0.0"
|
||||
|
||||
wrappy@1:
|
||||
version "1.0.2"
|
||||
resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f"
|
||||
@@ -9293,7 +9651,7 @@ y18n@^3.2.1:
|
||||
resolved "https://registry.yarnpkg.com/y18n/-/y18n-3.2.1.tgz#6d15fba884c08679c0d77e88e7759e811e07fa41"
|
||||
integrity sha1-bRX7qITAhnnA136I53WegR4H+kE=
|
||||
|
||||
"y18n@^3.2.1 || ^4.0.0":
|
||||
"y18n@^3.2.1 || ^4.0.0", y18n@^4.0.0:
|
||||
version "4.0.0"
|
||||
resolved "https://registry.yarnpkg.com/y18n/-/y18n-4.0.0.tgz#95ef94f85ecc81d007c264e190a120f0a3c8566b"
|
||||
integrity sha512-r9S/ZyXu/Xu9q1tYlpsLIsa3EeLXXk0VwlxqTcFRfg9EhMW+17kbt9G0NrgCmhGb5vT2hyhJZLfDGx+7+5Uj/w==
|
||||
@@ -9331,6 +9689,14 @@ yargs-parser@^11.1.1:
|
||||
camelcase "^5.0.0"
|
||||
decamelize "^1.2.0"
|
||||
|
||||
yargs-parser@^13.1.0:
|
||||
version "13.1.0"
|
||||
resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-13.1.0.tgz#7016b6dd03e28e1418a510e258be4bff5a31138f"
|
||||
integrity sha512-Yq+32PrijHRri0vVKQEm+ys8mbqWjLiwQkMFNXEENutzLPP0bE4Lcd4iA3OQY5HF+GD3xXxf0MEHb8E4/SA3AA==
|
||||
dependencies:
|
||||
camelcase "^5.0.0"
|
||||
decamelize "^1.2.0"
|
||||
|
||||
yargs-parser@^7.0.0:
|
||||
version "7.0.0"
|
||||
resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-7.0.0.tgz#8d0ac42f16ea55debd332caf4c4038b3e3f5dfd9"
|
||||
@@ -9356,6 +9722,23 @@ yargs@^12.0.2:
|
||||
y18n "^3.2.1 || ^4.0.0"
|
||||
yargs-parser "^11.1.1"
|
||||
|
||||
yargs@^13.2.2:
|
||||
version "13.2.4"
|
||||
resolved "https://registry.yarnpkg.com/yargs/-/yargs-13.2.4.tgz#0b562b794016eb9651b98bd37acf364aa5d6dc83"
|
||||
integrity sha512-HG/DWAJa1PAnHT9JAhNa8AbAv3FPaiLzioSjCcmuXXhP8MlpHO5vwls4g4j6n30Z74GVQj8Xa62dWVx1QCGklg==
|
||||
dependencies:
|
||||
cliui "^5.0.0"
|
||||
find-up "^3.0.0"
|
||||
get-caller-file "^2.0.1"
|
||||
os-locale "^3.1.0"
|
||||
require-directory "^2.1.1"
|
||||
require-main-filename "^2.0.0"
|
||||
set-blocking "^2.0.0"
|
||||
string-width "^3.0.0"
|
||||
which-module "^2.0.0"
|
||||
y18n "^4.0.0"
|
||||
yargs-parser "^13.1.0"
|
||||
|
||||
yargs@^9.0.0:
|
||||
version "9.0.1"
|
||||
resolved "https://registry.yarnpkg.com/yargs/-/yargs-9.0.1.tgz#52acc23feecac34042078ee78c0c007f5085db4c"
|
||||
|
||||
Reference in New Issue
Block a user