Commit Graph

13781 Commits

Author SHA1 Message Date
Eli White 63540874ec Bump eslint-plugin-react in FBSource
Reviewed By: yungsters

Differential Revision: D8247892

fbshipit-source-id: 4072e65ccf2fdc654f58087a16b4c7709ce393f8
2018-06-08 20:31:41 -07:00
Valentin Shergin 7f1ed6848f Fabric: `convertRawProp` was extended to accept an optional default value
Summary:
During transforming raw prop (`rawProps[<prop>]`) to typed props (`MyProps.<prop>`) we can face three different cases:
 * `rawProps` collection has proper serialized value for the key. In this case, we have to set a new value of the typed prop converting value using `fromDynamic`.
 * `rawProps` collection does not have value for the key. In this case, we have to copy a value from source prop (`sourceValue`).
 * `rawProps` collection has `null` value for the key. This is the special case which means that the prop was removed from the particular component instance and we have to reset it to some *default* value (which is *not* the same as `sourceValue`). Now the default value of the `defaultValue` (sic!) argument is a default value of the type of the value (which may be different from logical default value).

We didn't handle the last case previously and this caused crashes (and unexpected behavior) because `fromDynamic` often cannot handle `null` value.

And yes, all this mean that we also have to update all `convertRawProp` call sites where logical default values are not equal to type-specific default values. This is a potential error-prone place, especially because now we have to specify logical default values in two places (in a prop declaration and in a parameterized constructor). And seems there is no way to avoid that without performance loss (because both of those places are basically constructors).

My hope is that codegen (where default values are also defined in JavaScript) will help with it eventually.

Reviewed By: fkgozali

Differential Revision: D8247652

fbshipit-source-id: 2cbe65f5f5cccd7a0d34aaa19e385aacebfe8cb1
2018-06-08 20:31:41 -07:00
Valentin Shergin a32be38017 Fabric: Introducing RCTSurfaceTouchHandler
Summary:
RCTSurfaceTouchHandler is a complete rewrite of RCTTouchHandler which uses direct Fabric-specific event dispatching pipeline and several new approaches to managing active events (such as high-performant C++ collections, better management of identifier pool, and so on).
Besides that, the new implementation is much more W3C compliant that it used to be (see old TODOs near `receiveTouches()` implementation in Javascript).
So, touch events work now!

Reviewed By: fkgozali

Differential Revision: D8246713

fbshipit-source-id: 218dc15cd8f982237de7e2497ff36a7bfe6d37cc
2018-06-08 20:31:41 -07:00
Valentin Shergin d01290dd34 Fabric: Data model of Touch Events
Summary: The data model of Touch events and payload serialization. The implementation mimics W3C standard and current React Native implementation.

Reviewed By: fkgozali

Differential Revision: D8246711

fbshipit-source-id: 955b2068674f290d8bdb82da1ebfb796dd32971b
2018-06-08 20:31:40 -07:00
Valentin Shergin bb9bf26169 Fabric: Using exact UIFontWeight* constants instead of CGFloat
Summary: SUDDENLY, `-[UIFont systemFontOfSize:weight:]` returns incorrect result if `weight` is not exactly equal to any of built-in constants.

Reviewed By: fkgozali

Differential Revision: D8246712

fbshipit-source-id: 13d59cc8d66a4494437f28d791fd93fa83ebe6fb
2018-06-08 20:31:40 -07:00
Valentin Shergin 8b62e7a550 Fabric: Using Size instead of Point as textShadowOffset's type
Summary:
The current implementation of React Native uses `Size` as the underlying type of `textShadowOffset` which is clearly terribly wrong (especially because negative size values makes no sense). This mistake was borrowed from `NSShadow`, I believe.
I don't have time to fix this in every implementation of RN now, so let's use `Size` in Fabric as well.

Reviewed By: fkgozali

Differential Revision: D8246714

fbshipit-source-id: 1f0bf9b9dfa83802ef3faef2971fed5510494bfd
2018-06-08 20:31:40 -07:00
Oleksandr Sokolov 078d6e3a9d QuickPerformanceLogger.js: markerPoint + iOS/Android JS binding
Reviewed By: alexeylang

Differential Revision: D8125546

fbshipit-source-id: bb02921c7d89faba64001bff3b9aaf13f64a7f8b
2018-06-08 08:32:05 -07:00
David Vacca 291c01f4ff Fix NullPointerException when emiting event using UIManagerModule
Reviewed By: achen1

Differential Revision: D8321766

fbshipit-source-id: ae5052c83f46e08d540b90bf5b71c68f354c566d
2018-06-08 06:26:59 -07:00
Martin Sherburn e5aa5b7c50 Fixed concurrency issue in remote debugger
Reviewed By: rafeca

Differential Revision: D8316215

fbshipit-source-id: 70b5000a9bf09897bb9b9d505bfc5dcc7c4c3a41
2018-06-08 03:02:01 -07:00
Andrew Jack a52d84d7e1 Fix ReactImagePropertyTest SoLoader failures (#19607)
Summary:
Fixes #18637 & #19309

<!--
  Required: Write your test plan here. If you changed any code, please provide us with
  clear instructions on how you verified your changes work. Bonus points for screenshots and videos!
-->

Check Android `ReactImagePropertyTest` tests pass.

<!--
  Does this PR require a documentation change?
  Create a PR at https://github.com/facebook/react-native-website and add a link to it here.
-->

<!--
  Required.
  Help reviewers and the release process by writing your own release notes. See below for an example.
-->

 [ANDROID] [BUGFIX] [Unit Tests] - Fix ReactImagePropertyTest SoLoader failure

<!--
  **INTERNAL and MINOR tagged notes will not be included in the next version's final release notes.**

    CATEGORY
  [----------]      TYPE
  [ CLI      ] [-------------]    LOCATION
  [ DOCS     ] [ BREAKING    ] [-------------]
  [ GENERAL  ] [ BUGFIX      ] [ {Component} ]
  [ INTERNAL ] [ ENHANCEMENT ] [ {Filename}  ]
  [ IOS      ] [ FEATURE     ] [ {Directory} ]   |-----------|
  [ ANDROID  ] [ MINOR       ] [ {Framework} ] - | {Message} |
  [----------] [-------------] [-------------]   |-----------|

 EXAMPLES:

 [IOS] [BREAKING] [FlatList] - Change a thing that breaks other things
 [ANDROID] [BUGFIX] [TextInput] - Did a thing to TextInput
 [CLI] [FEATURE] [local-cli/info/info.js] - CLI easier to do things with
 [DOCS] [BUGFIX] [GettingStarted.md] - Accidentally a thing/word
 [GENERAL] [ENHANCEMENT] [Yoga] - Added new yoga thing/position
 [INTERNAL] [FEATURE] [./scripts] - Added thing to script that nobody will see
-->
Closes https://github.com/facebook/react-native/pull/19607

Differential Revision: D8325415

Pulled By: hramos

fbshipit-source-id: 598baa3499646bb50da065815c19bb9f76bf6c87
2018-06-07 16:49:38 -07:00
Robert Sayre 79c5b8eb97 Remove unused include. (#19548)
Summary:
`LayoutableShadowNode.cpp` includes `"LayoutableShadowNode.h"` as well as `<fabric/core/LayoutContext.h>`. In turn, `LayoutContext.h` then includes `<fabric/core/LayoutableShadowNode.h>`. `LayoutContext.h` doesn't actually require `LayoutableShadowNode.h`, but this unnecessary inclusion can cause duplicate definition errors if the two include paths don't map to exactly the same file. This patch removes the unnecessary include.

The CI's build system should cover the testing needed.

[INTERNAL] [MINOR] [fabric] - Remove an unnecessary include in fabric/core/layout.
Closes https://github.com/facebook/react-native/pull/19548

Differential Revision: D8313337

Pulled By: shergin

fbshipit-source-id: 2e01e29ff25131543d9a8601483c2e716c7437be
2018-06-07 08:36:37 -07:00
Héctor Ramos 9cc14ec99c Update Danger token (#19606)
Summary:
Trivial.
Closes https://github.com/facebook/react-native/pull/19606

Differential Revision: D8314419

Pulled By: hramos

fbshipit-source-id: b298e265c2c87cdc01175b1a014f9003e0673f40
2018-06-07 07:34:25 -07:00
Keith Brown 02d1bcc047 Modified deepFreezeAndThrowOnMutationInDev to use Object.prototype.ha… (#19598)
Summary:
This PR fixes a bug in `deepFreezeAndThrowOnMutationInDev` which did not take into account that objects passed to it may have been created with `Object.create(null)` and thus may not have a prototype. Such objects don't have the methods `hasOwnProperty`, `__defineGetter__`, or `__defineSetter__` on the instance.

I ran into an unrecoverable error in React Native when passing this type of object across the bridge because `deepFreezeAndThrowOnMutationInDev` attempts to call `object.hasOwnProperty(key)`, `object.__defineGetter__` and `object__defineSetter__` on objects passed to it. But my object instance does not have these prototype methods.

Changes:
* Defined `Object.prototype.hasOwnProperty` as a `const` (pattern used elsewhere in React Native)
* Modified calls to `object.hasOwnProperty(key)` to use `hasOwnProperty.call(object, key)` (Per ESLint rule [here](https://eslint.org/docs/rules/no-prototype-builtins))
* Modified calls to deprecated methods `object.__defineGetter__` and `object.__defineSetter__` to instead use `Object.defineProperty` to define get and set methods on the object. (Per guidance on [MDN](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/__defineGetter__))
* Added a new test to `deepFreezeAndThrowOnMutationInDev-test` to verify the fix.

I tried to create a reproducible example to post to Snack by passing prototype-less objects to a `Text` component, in various ways, but they appear to be converted to plain objects before crossing the bridge and therefore they do not throw an error.

However, I was able to create a new test to reproduce the issue. I added the following test to `deepFreezeAndThrowOnMutationInDev-test`:

```JavaScript
it('should not throw on object without prototype', () => {
    __DEV__ = true;
    var o = Object.create(null);
    o.key = 'Value';
    expect(() => deepFreezeAndThrowOnMutationInDev(o)).not.toThrow();
  });
```

The changes in this PR include this new test.

ESLint test produced no change in Error count (3) or Warnings (671)

N/A
Other areas with _possibly_ the same issue:
c6b96c0df7/Libraries/vendor/core/mergeInto.js (L50)
8dc3ba0444/Libraries/ReactNative/requireNativeComponent.js (L134)

 [GENERAL] [BUGFIX] [Libraries/Utilities/deepFreezeAndThrowOnMutationInDev] -Fix for compatibility with objects without a prototype.
Closes https://github.com/facebook/react-native/pull/19598

Differential Revision: D8310845

Pulled By: TheSavior

fbshipit-source-id: 020c414a1062a637e97f9ee99bf8e5ba2d1fcf4f
2018-06-07 02:44:27 -07:00
Michał Osadnik cb1bdf1e37 Change error message on interpolation (#19571)
Summary:
Change message in Animated.Interpolation to "inputRange must be monotonically non-decreasing" as it's allowed to give the same x's like in the test [example](4435f08771/Libraries/Animated/src/__tests__/Interpolation-test.js (L71))

Simply giving improper value of interpolation input

[GENERAL] [MINOR] [AnimatedInterpolation.js] - Change error message on interpolation improper range error
Closes https://github.com/facebook/react-native/pull/19571

Differential Revision: D8310791

Pulled By: TheSavior

fbshipit-source-id: 803ef55104ad2a36231c5f18c0c089bd14822bf3
2018-06-06 22:17:47 -07:00
Peter van der Zee 29fb2a8e90 Bump Prettier to 1.13.4 on xplat
Summary:
Bump Prettier to use version 1.13.4
All code changes are caused by running Prettier and should only affect files that have an `format` header.
All other changes caused by yarn.

Reviewed By: ryanmce

Differential Revision: D8251255

fbshipit-source-id: 0b4445c35f1269d72730f2000002a27c1bc35914
2018-06-06 05:32:06 -07:00
Cedric van Putten 3a1d949906 Fix/security issues (#19373)
Summary:
This updates both [`react-devtools-core`](https://github.com/facebook/react-devtools/issues/941) and [`plist`](04c8ee7646) to include security fixes, reported by `npm audit`.

Fixes #18854

_Only dependencies are updated with security patches, no change in actual code._

_Only dependencies are updated with security patches, no change in actual code._

[GENERAL] [ENHANCEMENT] [react-devtools-core] - Bump to `3.2.2` for a security fix for `ws`
[GENERAL] [ENHANCEMENT] [plist] - Bump to `3.0.0` for a security fix for `xmlbuilder`

Closes https://github.com/facebook/react-native/pull/19373

Reviewed By: sophiebits

Differential Revision: D8149200

Pulled By: hramos

fbshipit-source-id: 732fd627b232c315be60ed2da432742e8256a38a
2018-06-05 19:45:27 -07:00
Héctor Ramos 1853e15190 Add open source Flow declaration for Metro module
Summary:
Fix Flow failure by adding a declaration to the Flow config used in open source. This did not get caught internally because we use a different Flow config.

Release Notes
-------------
[INTERNAL] [MINOR] [Flow] - Fix Flow config.

Reviewed By: rafeca

Differential Revision: D8257641

fbshipit-source-id: 3f4b2cbe622b2e76aa018e9369216a6b9ac25f47
2018-06-05 19:02:19 -07:00
Eli Perkins a8b74576da Use correct library reference for libfishhook.a in RCTWebSocket (#19579)
Summary:
This uses the reference for `libfishhook.a` from the Products, rather than
the reference from the Frameworks group.

This fixes the build for the new Xcode build system, on both Xcode 9 and
Xcode 10.

Fixes #19569

- Using Xcode 10:
	- Open `RNTester/RNTester.xcodeproj`
	- Build RNTester, noting build errors
- Using Xcode 9:
	- Open `RNTester/RNTester.xcodeproj`
	- Switch to using new build system in `File > Project Settings > Build System`, selecting `New Build System (Preview)`
	- Build RNTester, noting build errors

none

[IOS] [BUGFIX] [RCTWebSocket] - Fix build for new Xcode build system
Closes https://github.com/facebook/react-native/pull/19579

Differential Revision: D8287487

Pulled By: hramos

fbshipit-source-id: 5bfc9decb09ebc763824df8474b5897099d39ad7
2018-06-05 14:47:36 -07:00
David Vacca e09c56af97 Enable proguard for Fabric in release builds
Reviewed By: shergin

Differential Revision: D8247814

fbshipit-source-id: 94ed8a767fcf4f6093646618a5691ff17753ffe0
2018-06-05 13:24:48 -07:00
David Vacca e95e73aaa7 Fix events not working after closing and navigating back to Fabric screen in FB4A
Reviewed By: fkgozali

Differential Revision: D8240344

fbshipit-source-id: 992945f94843589cefdf7ea24da709449ee38778
2018-06-05 13:24:48 -07:00
Sokovikov de18dd2648 skip dismiss all if all rows are hidden (#19564)
Summary:
Small fix based on
https://github.com/facebook/react-native/pull/19501#issuecomment-394486884

No need to mention it

[GENERAL] [BUGFIX] [YellowBox] - Message
Closes https://github.com/facebook/react-native/pull/19564

Differential Revision: D8276808

Pulled By: hramos

fbshipit-source-id: 59832d3d6e60ae30afbeb7c9303405746e9eec45
2018-06-05 06:29:19 -07:00
Logan Daniels 4435f08771 Trigger nested VirtualizedLists to re-measure if their containing cell's onLayout fires
Reviewed By: sahrens

Differential Revision: D8272040

fbshipit-source-id: c490ffa875bfd0547ac54d214c5ebbeb23c99942
2018-06-04 21:18:01 -07:00
Rafael Oleza 30320f1fed Bump metro@0.38.1
Reviewed By: jeanlauliac

Differential Revision: D8248753

fbshipit-source-id: aa6d0da4e96e8b4109b6b5bca050614ec1860fc2
2018-06-04 03:13:04 -07:00
Rafael Oleza f68a04b05b Remove duplicated attachWebsocketServer module
Reviewed By: jeanlauliac

Differential Revision: D8248752

fbshipit-source-id: b829de4b0d75d154dd80196b589fe70b0050be4d
2018-06-04 02:35:11 -07:00
Eli White 970caa4552 Switch to ES6 Class
Reviewed By: yungsters

Differential Revision: D8246980

fbshipit-source-id: fbd6998429e6791000ea093d3fa15c1a486914bd
2018-06-02 22:43:21 -07:00
Eli White 5259450c14 Slider to ES6 Class
Reviewed By: yungsters

Differential Revision: D8246422

fbshipit-source-id: 1955ae87abe077115ac8f8ea105be85db8ea66b4
2018-06-02 22:43:19 -07:00
Eli White 615daeb68f Slider move prop comments to flow types
Reviewed By: yungsters

Differential Revision: D8246378

fbshipit-source-id: f62a77d64016f6502b3445ab6d0d1558034333e6
2018-06-02 22:43:18 -07:00
Eli White 1615f9d161 Slider remove $FlowFixMe #take2
Reviewed By: fkgozali

Differential Revision: D8246336

fbshipit-source-id: 21555a318bd823309ac2c285b49c2045338c2b28
2018-06-01 22:07:46 -07:00
Eli White 7498e5ce77 Revert D8234803: [RN] Slider remove $FlowFixMe
Differential Revision:
D8234803

Original commit changeset: cfc0466a54f3

fbshipit-source-id: 354fcc1853597cbcd518abaf4be5b11116f594b3
2018-06-01 20:17:58 -07:00
Peter Ammon ac9a3d0c99 normalizeColor to compute regexps lazily
Reviewed By: johnislarry

Differential Revision: D8241955

fbshipit-source-id: 0939f442bb1e51118207449e0b95c6da97b899da
2018-06-01 17:54:50 -07:00
David Vacca 8529b1ee91 Implement release of FabricUIManager resources
Reviewed By: achen1

Differential Revision: D8232155

fbshipit-source-id: 6683c692a830f5a73aab2c606167e54d668ae5c2
2018-06-01 17:54:50 -07:00
David Vacca 6aea98441a Add backward compatible support for onLayout event in Fabric
Reviewed By: achen1

Differential Revision: D8231722

fbshipit-source-id: 3d0641a7813e742ca81b98576f9ffc30ee597f30
2018-06-01 17:54:50 -07:00
David Vacca 6c989fe7c6 refactor JSI module initialization
Reviewed By: fkgozali

Differential Revision: D8111636

fbshipit-source-id: 6e32703b077144962519485002adff8c9f6084ad
2018-06-01 17:54:50 -07:00
Eli White e0db8ee645 Slider remove $FlowFixMe
Reviewed By: sahrens

Differential Revision: D8234803

fbshipit-source-id: cfc0466a54f3c219d8a2eadfebf840399a2abdd8
2018-06-01 17:54:50 -07:00
Sokovikov d29821278e better place for dismiss all button
Summary:
This pr makes a little bit simpler to dismiss all warnings (1 click instead of 2)
Sometimes you don't want to use `YellowBox.ignoreWarnings` to remember.

RNTester sceenshot:

<img width="322" alt="screen shot 2018-05-30 at 09 51 25" src="https://user-images.githubusercontent.com/1488195/40701475-1142506a-63ef-11e8-8fc9-ea1696d9cb65.png">
Or RNTester -> Native Animation Example -> Force JS Stalls (in the end of the list) also cause warning to test.

[GENERAL][ENHANCEMENT][YellowBox] - Move `Dismiss All` yellow box button to another place which makes a little bit simpler to dismiss warnings.
Closes https://github.com/facebook/react-native/pull/19501

Differential Revision: D8243823

Pulled By: hramos

fbshipit-source-id: 31887469cddb4adfd7b889ae0c29a3bf41e87b7b
2018-06-01 17:54:50 -07:00
David Vacca b2b2caa344 Low the priority for logging events in fabric
Reviewed By: achen1

Differential Revision: D8238957

fbshipit-source-id: f2e8bd941ac68ead4c5ed7cadfcf83a753e44cab
2018-06-01 17:19:11 -07:00
Sho Ikeda 0964135a17 react-native-xcode.sh: Support Homebrew-installed nodenv
Summary:
As well as nvm.

9d315f4a1e/scripts/react-native-xcode.sh (L56-L60)

Build React Native iOS app with Release configuration and run the script using `node` command which is installed through Homebrew-installed `nodenv` and `node-build`.

None.

[IOS] [ENHANCEMENT] [scripts/react-native-xcode.sh] - Support Homebrew-installed nodenv
Closes https://github.com/facebook/react-native/pull/19509

Differential Revision: D8243181

Pulled By: hramos

fbshipit-source-id: fbd75f377f4aebf89ce35b96a47c59238e62e9ce
2018-06-01 16:03:51 -07:00
Marc Horowitz 83c990b25c make logMarker visible for consistency with logTaggedMarker
Differential Revision: D8240294

fbshipit-source-id: 8d056dc89adff41ff43c0df2f752b01ac1fb189f
2018-06-01 15:20:01 -07:00
Héctor Ramos 1324e7b558 Bump to BUCK v2018.03.26.01
Summary:
Bumps CI to latest BUCK release.

Test Plan
---------

Run on Circle CI.

Release Notes
-------------

[INTERNAL] [MINOR] [Tests] - Bump to BUCK v2018.03.26.01
Closes https://github.com/facebook/react-native/pull/19535

Differential Revision: D8240382

Pulled By: hramos

fbshipit-source-id: 60812cc90542201b362ef264083dd79dbf5d9360
2018-06-01 13:49:30 -07:00
Tim Yung 8dc3ba0444 RN: Remove Native Prop Validation
Summary:
As we migrate over to static typing solutions for props, we cannot rely on always having `propTypes` available at runtime.

This gets us started on that journey by removing the native prop validation that happens when we require native components.

bypass-lint

Reviewed By: TheSavior

Differential Revision: D7976854

fbshipit-source-id: f3ab579a7f0f8cfb716b0eb7fd4625f8168f3d96
2018-06-01 12:54:14 -07:00
David Vacca 6c910549d8 Delete EventDispatcher interface
Reviewed By: achen1

Differential Revision: D8232129

fbshipit-source-id: 6d618b4a587c0b0e1dfac967e8d22c05a62c44ee
2018-06-01 11:33:59 -07:00
Eli White f8c8231706 DatePickerIOS ES6 Class
Reviewed By: sahrens

Differential Revision: D8219657

fbshipit-source-id: cef48cf3ad24ad442f07df0edad55ab97d96c6f2
2018-06-01 10:25:30 -07:00
Eli White 3b53091869 DatePickerIOS add onChange event definition
Reviewed By: sahrens

Differential Revision: D8219622

fbshipit-source-id: 37f26d0981318b7eab9d3c734c44e7714fa6f0e8
2018-06-01 10:25:30 -07:00
Eli White edd7acbb1e ActivityIndicator ES6 Class
Reviewed By: yungsters

Differential Revision: D8219463

fbshipit-source-id: 7d252d15bb4a7345d156b1659b09be2a4a69ba6c
2018-06-01 10:25:30 -07:00
Eli White a35a238317 RefreshControl ES6 Class
Reviewed By: sahrens

Differential Revision: D8219221

fbshipit-source-id: 445243964d64dd5274c1e47bdc137645dc8eecaf
2018-06-01 10:25:30 -07:00
Eli White 2314c83258 Clamp typechecks -> Flow
Reviewed By: yungsters

Differential Revision: D8219220

fbshipit-source-id: e849d9dae573459e4b09e317cc6dc37bec9ce4e8
2018-06-01 10:25:30 -07:00
Valentin Shergin ec265df1d2 Fabric: Removed unused type aliases
Summary: Trivial.

Reviewed By: fkgozali

Differential Revision: D8212287

fbshipit-source-id: 228951742568d28a064ee03b6314a4c01532b9c9
2018-06-01 09:37:46 -07:00
Valentin Shergin beb3fcda34 Fabric: The first version of event dispatching pipeline
Summary:
This is the first attempt to implement some base part of event dispatching pipeline from end-to-end.
Even when it is working, all this is still incomplete and generally up in the air. We are still messing proper implementation of event queue, priority, and synchronization of react reconciliation process with event scheduling.

Reviewed By: fkgozali

Differential Revision: D8212271

fbshipit-source-id: 92f9427d14726441c70ffff294ac95eeb004152a
2018-06-01 09:37:46 -07:00
Valentin Shergin 0fc5a91889 Fabric: Integrating `tag` into `EventHandlers`
Summary:
In order to dispatch event, `EventHandlers` must also know react tag. So we have to store it inside.
We plan to illuminate this requirement (and `tag` from `EventHandlers`) eventually.

Reviewed By: fkgozali

Differential Revision: D8211685

fbshipit-source-id: 2064c0f4a7869cbf4d2c92d0349f4ee3998cb8f5
2018-06-01 09:37:46 -07:00
Rafael Oleza d081f83a04 Bump metro@0.38.0
Reviewed By: davidaurelio

Differential Revision: D8235787

fbshipit-source-id: a22802c829920e7e182a9aae70bd69a6446d5f8f
2018-06-01 08:42:32 -07:00