From bc1f6170fbe817426219e3b26c8a7ed2163aef33 Mon Sep 17 00:00:00 2001 From: Mike Grabowski Date: Fri, 14 Apr 2017 14:08:52 +0200 Subject: [PATCH] Upgrade `babel-plugin-flow-prop-types` (#1045) * Fix build * Latest version fixes Header * Fix propTypes from react-native leaking to web context * Update todo notice --- packages/react-navigation/.babelrc | 1 - packages/react-navigation/package.json | 2 +- .../react-navigation/src/TypeDefinition.js | 37 ++++---- .../react-navigation/src/views/CardStack.js | 4 +- .../src/views/CardStackTransitioner.js | 6 +- packages/react-navigation/src/views/Header.js | 25 ++---- .../src/views/TabView/TabBarIcon.js | 1 - .../src/views/TabView/TabBarTop.js | 1 - .../react-navigation/website/package.json | 1 + .../react-navigation/website/scripts/build.js | 1 + packages/react-navigation/website/yarn.lock | 86 +++---------------- packages/react-navigation/yarn.lock | 10 +-- 12 files changed, 51 insertions(+), 124 deletions(-) diff --git a/packages/react-navigation/.babelrc b/packages/react-navigation/.babelrc index 9066cadc..01c62e30 100644 --- a/packages/react-navigation/.babelrc +++ b/packages/react-navigation/.babelrc @@ -1,5 +1,4 @@ { - "presets": ["react-native"], "env": { // For RN example development "development": { diff --git a/packages/react-navigation/package.json b/packages/react-navigation/package.json index 84a2222e..c6cd6700 100644 --- a/packages/react-navigation/package.json +++ b/packages/react-navigation/package.json @@ -42,7 +42,7 @@ "babel-core": "^6.24.0", "babel-eslint": "^7.0.0", "babel-jest": "^19.0.0", - "babel-plugin-flow-react-proptypes": "^1.0.0", + "babel-plugin-flow-react-proptypes": "grabbou/babel-plugin-flow-react-proptypes#release", "babel-preset-es2015": "^6.24.0", "babel-preset-react": "^6.23.0", "babel-preset-react-native": "^1.9.0", diff --git a/packages/react-navigation/src/TypeDefinition.js b/packages/react-navigation/src/TypeDefinition.js index 1324b73e..c0ba6585 100644 --- a/packages/react-navigation/src/TypeDefinition.js +++ b/packages/react-navigation/src/TypeDefinition.js @@ -2,14 +2,17 @@ import React from 'react'; -import { - Animated, -} from 'react-native'; +// @todo when we split types into common, native and web, +// we can properly change Animated.Value to its real value +type AnimatedValue = *; -import type { - HeaderMode, - HeaderProps, -} from './views/Header'; +export type HeaderMode = 'float' | 'screen' | 'none'; + +export type HeaderProps = NavigationSceneRendererProps & { + mode: HeaderMode, + router: NavigationRouter, + getScreenDetails: NavigationScene => NavigationScreenDetails, +}; /** * NavigationState is a tree of routes for a single navigator, where each child @@ -204,9 +207,11 @@ export type NavigationStackViewConfig = { export type NavigationStackScreenOptions = NavigationScreenOptions & { headerTitle?: string | React.Element<*>, headerTitleStyle?: Style, - headerLeft?: string | React.Element<*>, + headerTintColor?: string, + headerLeft?: React.Element<*>, headerBackTitle?: string, - headerRight?: string | React.Element<*>, + headerPressColorAndroid?: string, + headerRight?: React.Element<*>, headerStyle?: Style, headerVisible?: boolean, gesturesEnabled?: boolean, @@ -308,11 +313,11 @@ export type NavigationNavigatorProps = { export type NavigationGestureDirection = 'horizontal' | 'vertical'; export type NavigationLayout = { - height: Animated.Value, + height: AnimatedValue, initHeight: number, initWidth: number, isMeasured: boolean, - width: Animated.Value, + width: AnimatedValue, }; export type NavigationScene = { @@ -331,14 +336,14 @@ export type NavigationTransitionProps = { navigation: NavigationScreenProp, // The progressive index of the transitioner's navigation state. - position: Animated.Value, + position: AnimatedValue, // The value that represents the progress of the transition when navigation // state changes from one to another. Its numberic value will range from 0 // to 1. // progress.__getAnimatedValue() < 1 : transtion is happening. // progress.__getAnimatedValue() == 1 : transtion completes. - progress: Animated.Value, + progress: AnimatedValue, // All the scenes of the transitioner. scenes: Array, @@ -350,6 +355,8 @@ export type NavigationTransitionProps = { // is the index of the scene scene: NavigationScene, index: number, + + screenProps?: {}, }; // The scene renderer props are nearly identical to the props used for rendering @@ -362,11 +369,11 @@ export type NavigationTransitionSpec = { // An easing function from `Easing`. easing?: () => any, // A timing function such as `Animated.timing`. - timing?: (value: Animated.Value, config: any) => any, + timing?: (value: AnimatedValue, config: any) => any, }; export type NavigationAnimationSetter = ( - position: Animated.Value, + position: AnimatedValue, newState: NavigationState, lastState: NavigationState, ) => void; diff --git a/packages/react-navigation/src/views/CardStack.js b/packages/react-navigation/src/views/CardStack.js index 5f640a1f..cff02896 100644 --- a/packages/react-navigation/src/views/CardStack.js +++ b/packages/react-navigation/src/views/CardStack.js @@ -19,18 +19,16 @@ import type { NavigationState, NavigationScreenDetails, NavigationStackScreenOptions, + HeaderMode, Style, } from '../TypeDefinition'; -import type { HeaderMode } from './Header'; - import type { TransitionConfig } from './TransitionConfigs'; import TransitionConfigs from './TransitionConfigs'; const emptyFunction = () => {}; - type Props = { screenProps?: {}, headerMode: HeaderMode, diff --git a/packages/react-navigation/src/views/CardStackTransitioner.js b/packages/react-navigation/src/views/CardStackTransitioner.js index 6c8f5c81..46ef6ea2 100644 --- a/packages/react-navigation/src/views/CardStackTransitioner.js +++ b/packages/react-navigation/src/views/CardStackTransitioner.js @@ -12,7 +12,6 @@ import Header from './Header'; const NativeAnimatedModule = NativeModules && NativeModules.NativeAnimatedModule; - import type { NavigationAction, NavigationSceneRenderer, @@ -21,15 +20,12 @@ import type { NavigationState, NavigationTransitionProps, NavigationRouter, + HeaderMode, Style, } from '../TypeDefinition'; - -import type { HeaderMode } from './Header'; - import type { TransitionConfig } from './TransitionConfigs'; - type Props = { screenProps?: {}, headerMode: HeaderMode, diff --git a/packages/react-navigation/src/views/Header.js b/packages/react-navigation/src/views/Header.js index 26665ea1..fa6e1ab6 100644 --- a/packages/react-navigation/src/views/Header.js +++ b/packages/react-navigation/src/views/Header.js @@ -1,7 +1,7 @@ -'no babel-plugin-flow-react-proptypes'; // doesn't support intersection yet - /* @flow */ +'no babel-plugin-flow-react-proptypes'; + import React from 'react'; import { @@ -17,24 +17,11 @@ import HeaderStyleInterpolator from './HeaderStyleInterpolator'; import type { NavigationScene, - NavigationRouter, - NavigationAction, - NavigationSceneRendererProps, NavigationStyleInterpolator, - NavigationScreenDetails, - NavigationStackScreenOptions, - NavigationState, LayoutEvent, + HeaderProps, } from '../TypeDefinition'; -export type HeaderMode = 'float' | 'screen' | 'none'; - -export type HeaderProps = NavigationSceneRendererProps & { - mode: HeaderMode, - router: NavigationRouter, - getScreenDetails: NavigationScene => NavigationScreenDetails, -}; - type SceneProps = { scene: NavigationScene, position: Animated.Value, @@ -132,7 +119,7 @@ class Header extends React.PureComponent { : undefined; return ( this.props.navigation.goBack(null)} + onPress={() => { this.props.navigation.goBack(null); }} pressColorAndroid={options.headerPressColorAndroid} tintColor={options.headerTintColor} title={backButtonTitle} @@ -208,7 +195,7 @@ class Header extends React.PureComponent { return null; } - let subView = renderer(props); + const subView = renderer(props); if (subView == null) { return null; @@ -260,7 +247,7 @@ class Header extends React.PureComponent { let appBar; if (this.props.mode === 'float') { - const scenesProps: Array = this.props.scenes + const scenesProps: Array = this.props.scenes .map((scene: NavigationScene) => ({ position: this.props.position, progress: this.props.progress, diff --git a/packages/react-navigation/src/views/TabView/TabBarIcon.js b/packages/react-navigation/src/views/TabView/TabBarIcon.js index 585a965e..6db1549b 100644 --- a/packages/react-navigation/src/views/TabView/TabBarIcon.js +++ b/packages/react-navigation/src/views/TabView/TabBarIcon.js @@ -11,7 +11,6 @@ import type { NavigationAction, NavigationState, NavigationScreenProp, - NavigationRoute, Style, } from '../../TypeDefinition'; diff --git a/packages/react-navigation/src/views/TabView/TabBarTop.js b/packages/react-navigation/src/views/TabView/TabBarTop.js index 48573c69..08e35d71 100644 --- a/packages/react-navigation/src/views/TabView/TabBarTop.js +++ b/packages/react-navigation/src/views/TabView/TabBarTop.js @@ -12,7 +12,6 @@ import type { NavigationAction, NavigationScreenProp, NavigationState, - NavigationRoute, Style, } from '../../TypeDefinition'; diff --git a/packages/react-navigation/website/package.json b/packages/react-navigation/website/package.json index a66f9661..c328972b 100644 --- a/packages/react-navigation/website/package.json +++ b/packages/react-navigation/website/package.json @@ -9,6 +9,7 @@ "babel-eslint": "7.0.0", "babel-jest": "16.0.0", "babel-loader": "6.2.5", + "babel-plugin-flow-react-proptypes": "grabbou/babel-plugin-flow-react-proptypes#release", "babel-preset-react-app": "^1.0.0", "case-sensitive-paths-webpack-plugin": "1.1.4", "chalk": "1.1.3", diff --git a/packages/react-navigation/website/scripts/build.js b/packages/react-navigation/website/scripts/build.js index 5e67e9d5..8f9c8487 100644 --- a/packages/react-navigation/website/scripts/build.js +++ b/packages/react-navigation/website/scripts/build.js @@ -157,6 +157,7 @@ function printErrors(summary, errors) { console.log(); errors.forEach((err) => { console.log(err.message || err); + console.log(err.stack); console.log(); }); } diff --git a/packages/react-navigation/website/yarn.lock b/packages/react-navigation/website/yarn.lock index 723049b2..a8d660d5 100644 --- a/packages/react-navigation/website/yarn.lock +++ b/packages/react-navigation/website/yarn.lock @@ -93,13 +93,6 @@ amdefine@>=0.0.4: version "1.0.1" resolved "https://registry.yarnpkg.com/amdefine/-/amdefine-1.0.1.tgz#4a5282ac164729e93619bcfd3ad151f817ce91f5" -animated@^0.1.3: - version "0.1.5" - resolved "https://registry.yarnpkg.com/animated/-/animated-0.1.5.tgz#83df8dc443d57abab7b0bb04818b0b655b31c9b9" - dependencies: - invariant "^2.2.0" - normalize-css-color "^1.0.1" - ansi-align@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/ansi-align/-/ansi-align-1.1.0.tgz#2f0c1658829739add5ebb15e6b0c6e3423f016ba" @@ -178,10 +171,6 @@ array-equal@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/array-equal/-/array-equal-1.0.0.tgz#8c2a5ef2472fd9ea742b04c77a75093ba2757c93" -array-find-index@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/array-find-index/-/array-find-index-1.0.2.tgz#df010aa1287e164bbda6f9723b0a96a1ec4187a1" - array-flatten@1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/array-flatten/-/array-flatten-1.1.1.tgz#9a5f699051b1e7073328f2a008968b64ea2955d2" @@ -348,7 +337,7 @@ babel-core@6.17.0: slash "^1.0.0" source-map "^0.5.0" -babel-core@^6.0.0, babel-core@^6.11.4, babel-core@^6.22.0, babel-core@^6.22.1: +babel-core@^6.0.0, babel-core@^6.11.4, babel-core@^6.18.0, babel-core@^6.22.0, babel-core@^6.22.1: version "6.22.1" resolved "https://registry.yarnpkg.com/babel-core/-/babel-core-6.22.1.tgz#9c5fd658ba1772d28d721f6d25d968fc7ae21648" dependencies: @@ -531,6 +520,15 @@ babel-plugin-check-es2015-constants@^6.22.0, babel-plugin-check-es2015-constants dependencies: babel-runtime "^6.22.0" +babel-plugin-flow-react-proptypes@grabbou/babel-plugin-flow-react-proptypes#release: + version "1.1.0" + resolved "https://codeload.github.com/grabbou/babel-plugin-flow-react-proptypes/tar.gz/5bf48951cf7d1dbfdb0115630a7a86361f07c464" + dependencies: + babel-core "^6.18.0" + babel-template "^6.16.0" + babel-traverse "^6.18.0" + babel-types "^6.18.0" + babel-plugin-istanbul@^2.0.0: version "2.0.3" resolved "https://registry.yarnpkg.com/babel-plugin-istanbul/-/babel-plugin-istanbul-2.0.3.tgz#266b304b9109607d60748474394676982f660df4" @@ -1008,7 +1006,7 @@ babel-runtime@6.5.0: dependencies: core-js "^1.2.0" -babel-runtime@^6.0.0, babel-runtime@^6.11.6, babel-runtime@^6.18.0, babel-runtime@^6.22.0, babel-runtime@^6.9.0, babel-runtime@^6.9.1: +babel-runtime@^6.0.0, babel-runtime@^6.18.0, babel-runtime@^6.22.0, babel-runtime@^6.9.0, babel-runtime@^6.9.1: version "6.22.0" resolved "https://registry.yarnpkg.com/babel-runtime/-/babel-runtime-6.22.0.tgz#1cf8b4ac67c77a4ddb0db2ae1f74de52ac4ca611" dependencies: @@ -1126,10 +1124,6 @@ boom@2.x.x: dependencies: hoek "2.x.x" -bowser@^1.0.0: - version "1.6.0" - resolved "https://registry.yarnpkg.com/bowser/-/bowser-1.6.0.tgz#37fc387b616cb6aef370dab4d6bd402b74c5c54d" - boxen@^0.6.0: version "0.6.0" resolved "https://registry.yarnpkg.com/boxen/-/boxen-0.6.0.tgz#8364d4248ac34ff0ef1b2f2bf49a6c60ce0d81b6" @@ -1171,14 +1165,14 @@ browserify-zlib@~0.1.4: dependencies: pako "~0.2.0" -browserslist@^1.0.1, browserslist@^1.4.0, browserslist@^1.5.2: +browserslist@^1.0.1, browserslist@^1.5.2: version "1.7.1" resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-1.7.1.tgz#cc9bd193979a2a4b09fdb3df6003fefe48ccefe1" dependencies: caniuse-db "^1.0.30000617" electron-to-chromium "^1.2.1" -browserslist@~1.4.0: +browserslist@^1.4.0, browserslist@~1.4.0: version "1.4.0" resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-1.4.0.tgz#9cfdcf5384d9158f5b70da2aa00b30e8ff019049" dependencies: @@ -1804,20 +1798,10 @@ dashdash@^1.12.0: dependencies: assert-plus "^1.0.0" -date-now@1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/date-now/-/date-now-1.0.1.tgz#bb7d086438debe4182a485fb3df3fbfb99d6153c" - date-now@^0.1.4: version "0.1.4" resolved "https://registry.yarnpkg.com/date-now/-/date-now-0.1.4.tgz#eaf439fd4d4848ad74e5cc7dbef200672b9e345b" -debounce@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/debounce/-/debounce-1.0.0.tgz#0948af513d2e4ce407916f8506a423d3f9cf72d8" - dependencies: - date-now "1.0.1" - debug@2.2.0, debug@~2.2.0: version "2.2.0" resolved "https://registry.yarnpkg.com/debug/-/debug-2.2.0.tgz#f87057e995b1a1f6ae6a4960664137bc56f039da" @@ -1888,12 +1872,6 @@ decompress@^4.0.0: pify "^2.3.0" strip-dirs "^1.1.1" -deep-assign@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/deep-assign/-/deep-assign-2.0.0.tgz#ebe06b1f07f08dae597620e3dd1622f371a1c572" - dependencies: - is-obj "^1.0.0" - deep-extend@~0.4.0: version "0.4.1" resolved "https://registry.yarnpkg.com/deep-extend/-/deep-extend-0.4.1.tgz#efe4113d08085f4e6f9687759810f807469e2253" @@ -3049,10 +3027,6 @@ https-browserify@0.0.0: version "0.0.0" resolved "https://registry.yarnpkg.com/https-browserify/-/https-browserify-0.0.0.tgz#b3ffdfe734b2a3d4a9efd58e8654c91fce86eafd" -hyphenate-style-name@^1.0.1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/hyphenate-style-name/-/hyphenate-style-name-1.0.2.tgz#31160a36930adaf1fc04c6074f7eb41465d4ec4b" - iconv-lite@0.4.13: version "0.4.13" resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.13.tgz#1f88aba4ab0b1508e8312acc39345f36e992e2f2" @@ -3108,13 +3082,6 @@ ini@^1.3.4, ini@~1.3.0: version "1.3.4" resolved "https://registry.yarnpkg.com/ini/-/ini-1.3.4.tgz#0537cb79daf59b59a1a517dff706c86ec039162e" -inline-style-prefixer@^2.0.1: - version "2.0.5" - resolved "https://registry.yarnpkg.com/inline-style-prefixer/-/inline-style-prefixer-2.0.5.tgz#c153c7e88fd84fef5c602e95a8168b2770671fe7" - dependencies: - bowser "^1.0.0" - hyphenate-style-name "^1.0.1" - inquirer@^0.12.0: version "0.12.0" resolved "https://registry.yarnpkg.com/inquirer/-/inquirer-0.12.0.tgz#1ef2bfd63504df0bc75785fff8c2c41df12f077e" @@ -4237,10 +4204,6 @@ nopt@3.x, nopt@~3.0.6: dependencies: abbrev "1" -normalize-css-color@^1.0.1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/normalize-css-color/-/normalize-css-color-1.0.2.tgz#02991e97cccec6623fe573afbbf0de6a1f3e9f8d" - normalize-package-data@^2.3.2: version "2.3.5" resolved "https://registry.yarnpkg.com/normalize-package-data/-/normalize-package-data-2.3.5.tgz#8d924f142960e1777e7ffe170543631cc7cb02df" @@ -5039,33 +5002,10 @@ react-markdown@^2.4.2: commonmark-react-renderer "^4.2.4" in-publish "^2.0.0" -react-native-web@^0.0.55: - version "0.0.55" - resolved "https://registry.yarnpkg.com/react-native-web/-/react-native-web-0.0.55.tgz#7e74f05a18415148e5a45ec42779b79a5b767218" - dependencies: - animated "^0.1.3" - array-find-index "^1.0.2" - babel-runtime "^6.11.6" - debounce "^1.0.0" - deep-assign "^2.0.0" - fbjs "^0.8.4" - inline-style-prefixer "^2.0.1" - react-dom "~15.3.2" - react-textarea-autosize "^4.0.4" - react-timer-mixin "^0.13.3" - react-navigation@^0.0.0: version "0.0.0" resolved "https://registry.yarnpkg.com/react-navigation/-/react-navigation-0.0.0.tgz#1e0f865235cdb4d4aa8086484fd3690ff73df553" -react-textarea-autosize@^4.0.4: - version "4.0.5" - resolved "https://registry.yarnpkg.com/react-textarea-autosize/-/react-textarea-autosize-4.0.5.tgz#55379f6a6fa575fc87d1b8de2756e57e3b6c995d" - -react-timer-mixin@^0.13.3: - version "0.13.3" - resolved "https://registry.yarnpkg.com/react-timer-mixin/-/react-timer-mixin-0.13.3.tgz#0da8b9f807ec07dc3e854d082c737c65605b3d22" - react@~15.3.2: version "15.3.2" resolved "https://registry.yarnpkg.com/react/-/react-15.3.2.tgz#a7bccd2fee8af126b0317e222c28d1d54528d09e" diff --git a/packages/react-navigation/yarn.lock b/packages/react-navigation/yarn.lock index c6b44b83..b2af40cc 100644 --- a/packages/react-navigation/yarn.lock +++ b/packages/react-navigation/yarn.lock @@ -467,9 +467,9 @@ babel-plugin-external-helpers@^6.18.0: dependencies: babel-runtime "^6.22.0" -babel-plugin-flow-react-proptypes@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/babel-plugin-flow-react-proptypes/-/babel-plugin-flow-react-proptypes-1.0.0.tgz#020de47d67f670f53ba96949ea1bd0fa5f670c1d" +babel-plugin-flow-react-proptypes@grabbou/babel-plugin-flow-react-proptypes#release: + version "1.1.0" + resolved "https://codeload.github.com/grabbou/babel-plugin-flow-react-proptypes/tar.gz/5bf48951cf7d1dbfdb0115630a7a86361f07c464" dependencies: babel-core "^6.18.0" babel-template "^6.16.0" @@ -3317,13 +3317,13 @@ mime-db@~1.23.0: version "1.23.0" resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.23.0.tgz#a31b4070adaea27d732ea333740a64d0ec9a6659" -mime-types@2.1.11, mime-types@~2.1.7, mime-types@~2.1.9: +mime-types@2.1.11, mime-types@~2.1.7: version "2.1.11" resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.11.tgz#c259c471bda808a85d6cd193b430a5fae4473b3c" dependencies: mime-db "~1.23.0" -mime-types@^2.1.12, mime-types@~2.1.11, mime-types@~2.1.13, mime-types@~2.1.6: +mime-types@^2.1.12, mime-types@~2.1.11, mime-types@~2.1.13, mime-types@~2.1.6, mime-types@~2.1.9: version "2.1.14" resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.14.tgz#f7ef7d97583fcaf3b7d282b6f8b5679dab1e94ee" dependencies: