Commit Graph
7029 Commits
Author SHA1 Message Date
Paul O’Shannessy a107f6d12e Fix npm package builds (#7888)
* Ensure lib/ is packaged for react-test-renderer

* Run npm pack from right working directory

We were running this on the original packages not the compiled ones, resulting in missing files

(cherry picked from commit 077d660a27)
2016-10-05 15:41:25 -07:00
Paul O’Shannessy 4717d2480c 15.4.0-rc.1 2016-10-04 15:33:38 -07:00
Brandon DailandPaul O’Shannessy 91dc94cec6 Resolve Flow & Test issues with ReactTestRenderer
This is a manual cherry-pick of 2 PRs, updated to handle differences in the stable branch:
- c78464f8ea - Resolve flow errors with ReactTestRenderer (#7736)
- 7dfa01f9fa - Revert ReactMultiChild to plain object (#7757)
2016-10-04 15:22:03 -07:00
Toru KobayashiandPaul O’Shannessy c7020c017d Fix confusing variable names (#7863)
(cherry picked from commit 30067fa8ca)
2016-10-04 14:27:21 -07:00
Toru KobayashiandPaul O’Shannessy 9b025df36b Refactor ShallowRenderer (#7739)
* Separate ReactShallowRenderer from TestUtils

* Use ES classes to ReactShallowRenderer

(cherry picked from commit 85b0377bfd)
2016-10-04 14:27:21 -07:00
Dan AbramovandPaul O’Shannessy b0b1303207 Fix benchmarks (#7704)
(cherry picked from commit 3fcba2044a)
2016-10-04 14:24:24 -07:00
Ben AlpertandPaul O’Shannessy 4f20847f8b Make benchmark script work in React 15
(cherry picked from commit cab835d3a0)
2016-10-04 14:23:45 -07:00
Ben AlpertandPaul O’Shannessy 3e95d99fe2 Interleave trials in benchmark script
This should be more of a fair A/B test so the timings aren't affected by having different load on your system when testing the two alternatives.

(cherry picked from commit c0007d56e9)
2016-10-04 14:21:18 -07:00
Paul O’Shannessy 1dce444f70 Fix UMD bundles, making safe to use as required modules (#7840)
(cherry picked from commit 92c84a6f37)
2016-10-04 14:02:23 -07:00
hkalandPaul O’Shannessy 4dfe234950 Add unknown property warning for use of autofocus (#7694)
(cherry picked from commit f6fdfd1bf0)
2016-10-04 14:02:23 -07:00
Mark PennerandPaul O’Shannessy 8ecaaddd23 Fixes #7824 (#7832)
(cherry picked from commit dae3043897)
2016-10-04 14:02:22 -07:00
J. Renée BeachandPaul O’Shannessy a793486541 React dom invalid aria hook (#7744)
* Add a hook that throws a runtime warning for invalid WAI ARIA attributes and values.

* Resolved linting errors.

* Added a test case for many props.

* Added a test case for ARIA attribute proper casing.

* Added a warning for uppercased attributes to ReactDOMInvalidARIAHook

(cherry picked from commit 59ff7749ed)
2016-10-04 14:02:22 -07:00
Christopher ChedeauandPaul O’Shannessy 6b85431df6 Fix total count in flow tracker (#7813)
When you put the output of a bash command in a variable, it replaces the `\n` with a space. Using `ls` instead of `echo` fixes it

Test Plan:
Run

```
ALL_FILES=`find src -name '*.js' | grep -v umd/ | grep -v __tests__ | grep -v __mocks__`
COUNT_ALL_FILES=`ls $ALL_FILES | wc -l`
echo $COUNT_ALL_FILES
```

Make sure that it outputs 221
(cherry picked from commit 72ed5df5a4)
2016-10-04 14:02:22 -07:00
Christopher ChedeauandPaul O’Shannessy 32edcfc9cd Track fiber tests (#7812)
Use the newly added tracking system to track the number of fiber tests that are passing/failing.

I first tried to modify the grunt lint rule for it and send the output in stdout but unfortunately grunt displays the rule + done messages there. I had like 30 lines of js already and I figured I could just write 3 lines of bash and it would work the same. Let me know if you want me to use another approach for it.

Test Plan:
Run the commands that have been introduced in this commit but the facts-tracker one
Run `echo $FIBER_TESTS` and make sure it prints `666/1434`
(cherry picked from commit 84f8df1f89)
2016-10-04 14:02:22 -07:00
Christopher ChedeauandPaul O’Shannessy a28dc34918 Update travis.yml to use $GITHUB_USER_NAME and $GITHUB_USER_EMAIL (#7811)
See https://github.com/facebook/react/pull/7747#issuecomment-249677880 for discussions
(cherry picked from commit fb1e7075ed)
2016-10-04 14:02:22 -07:00
Christopher ChedeauandPaul O’Shannessy 3135f888f0 Introduce facts-tracker (#7747)
* Introduce facts-tracker

We want to be able to track various things like number of files that are flowified, number of tests passing with Fiber...

This introduces a tool that lets you do that. The API is very simple, you execute the script with a list of tuples [key value] and it's going to create a `facts` branch and put a txt file for each fact and values over time.

```
node scripts/facts-tracker/index.js \
  "flow-files" "$COUNT_WITH_FLOW/$COUNT_ALL_FILES"
```

Test Plan:
This is tricky to test because Travis only exposes the private variables (github token) when it processes a committed file and not on branches. The reason is that otherwise anyone could send a pull requests that does `echo $GITHUB_TOKEN` and steal your token.

Given this constraint, I did all the work using two of my repos:
- https://github.com/vjeux/facts-tracker
- https://github.com/vjeux/facts-tracker-test

and am sending this pull request that should work as is /fingers crossed/, but we won't be able to test it out until it is committed.

Note that once this lands, I'm going to kill those two repos.

* Update with all the suggested changes

* Branch on a flow type in travis.yml

* Use $GITHUB_TOKEN

* properly escape it

(cherry picked from commit dbd9c4b205)
2016-10-04 14:02:22 -07:00
Andy EdwardsandPaul O’Shannessy 84fc62f30f Clarify manual PropType calls warning (#7777)
(cherry picked from commit b7c70b67af)
2016-10-04 14:02:21 -07:00
Paul O’Shannessy c4c7e0a966 Adjust code to handle more availability of function.name (#7670)
(cherry picked from commit 00ac1797d7)
2016-10-04 14:02:21 -07:00
Uladzimir HavenchykandPaul O’Shannessy 918037bd30 Simplify event phases. Use explicitly 'captured' and 'bubbled'. (#7741)
(cherry picked from commit 65870dcaee)
2016-10-04 14:01:50 -07:00
Paul O’Shannessy 71f0c6fef9 Update ignores in flowconfig (#7722)
This ensures we ignore relative to our project root and won't be tripped up by issues where checkouts in other places result in Flow passing when it shouldn't (eg on Travis CI where the checkout path is `/home/travis/build/facebook/react`)
(cherry picked from commit 864bc7b939)
2016-10-03 18:01:50 -07:00
Brandon DailandPaul O’Shannessy a6bdb0022f Clean up ReactTestRenderer (#7716)
* create ReactTestTextComponent fil

* create ReactTestEmptyComponent

* Use class for ReactTestRenderer

* Add flow to ReactTestRenderer

(cherry picked from commit 5a3abab660)
2016-10-03 18:01:33 -07:00
Ben AlpertandPaul O’Shannessy 1d93d28494 Unify branches in cloneFiber (#7723)
(cherry picked from commit 9eba80825f)
2016-10-03 17:58:49 -07:00
Andrew ClarkandPaul O’Shannessy c3d43193c9 [Fiber] Animation priority work (#7466)
* High priority work

Adds the ability to schedule and perform high priority work. In the
noop renderer, this is exposed using a method `performHighPriWork(fn)`
where the function is executed and all updates in that scope are given
high priority.

To do this, the scheduler keeps track of a default priority level.
A new function `performWithPriority(priority, fn)` changes the default
priority before calling the function, then resets it afterwards.

* Rename overloaded priority terms

"High" and "low" priority are overloaded terms. There are priority
levels called HighPriority and LowPriority. Meanwhile, there are
functions called {perform,schedule}HighPriWork, which corresponds
to requestAnimationFrame, and {perform,schedule}LowPriWork, which
corresponds to requestIdleCallback. But in fact, work that has
HighPriority is meant to be scheduled with requestIdleCallback.
This is super confusing.

To address this, {perform,schedule}HighPriWork has been renamed
to {perform,schedule}AnimationWork, and
{perform,schedule}LowPriWork has been renamed to
{perform,schedule}DeferredWork. HighPriority and LowPriority
remain the same.

* Priority levels merge fix

(cherry picked from commit 6144212a86)
2016-10-03 17:58:49 -07:00
Sebastian MarkbågeandPaul O’Shannessy da9a658e35 Merge pull request #7344 from acdlite/fibersetstate
[Fiber] setState
(cherry picked from commit 3e54b28c20)
2016-10-03 17:58:49 -07:00
Sebastian MarkbågeandPaul O’Shannessy 3bc9d9caa7 Merge pull request #7636 from sebmarkbage/fiberrefactor
[Fiber] Refactor Pending Work Phase and Progressed Work
(cherry picked from commit a19fede67c)
2016-10-03 17:58:48 -07:00
Brandon DailandPaul O’Shannessy d5059c91f5 Implement createNodeMock for ReactTestRenderer (#7649)
* Implement optional mockConfig and getMockRef

* default mockConfig, walk render tree

* Pass mockConfig to transaction

* Attach mockConfig to transaction

* type mockConfig in ReactRef

* Expect object in native component ref test

* Fix argument name for attachRefs

* Add mockConfig support to legacy refs

* Pass transaction to getPublicInstance

* Implement getMockConfig on ReactTestReconcileTransaction

* Merge defaultMockConfig and mockConfig options

* Rename mockConfig to testOptions

* Break getPublicInstnce into three lines

* createMockRef -> createNodeMock

(cherry picked from commit f3569a2c31)
2016-10-03 17:58:48 -07:00
Keyan ZhangandPaul O’Shannessy ec4c0f1dd6 changed ReactChildrenMutationWarningHook to Object.freeze (#7455)
- only freeze children array created by createElement
(cherry picked from commit 38c4ade6cc)
2016-10-03 17:58:48 -07:00
Flarnie MarchanandPaul O’Shannessy 4d99f2bdd4 Fix Flow errors in Event Plugins (#7698)
Due to a typo in PR#7667 where I put 'DispatchConfig' when the type was
'EventTypes', there were some flow errors being thrown.

Then PR#7642 fixed a bug in SimpleEventPlugin and added some untyped
methods, which threw more flow errors.

Last, while fixing this, I fixed two eslint errors in the
SimpleEventPlugin test.
(cherry picked from commit 54cbe29262)
2016-10-03 17:57:10 -07:00
Dmitrii AbramovandPaul O’Shannessy ce1f57e940 jest@15.1.1 (#7693)
(cherry picked from commit e3e03b30b2)
2016-10-03 17:57:09 -07:00
Nathan HunzakerandPaul O’Shannessy 2fbe0cd333 Move mouse event disabling on interactive elements to SimpleEventPlugin. Related perf tweak to click handlers. (#7642)
* Cull disabled mouse events at plugin level. Remove component level filters

* DisabledInputUtils tests are now for SimpleEventPlugin

* Add click bubbling test

* Add isInteractive function. Use in iOS click exception rules

* Invert interactive check in local click listener. Add test coverage

* Reduce number of mouse events disabable. Formatting in isIteractive()

* Switch isInteractive tag order for alignment

* Update formatting of isInteractive method

(cherry picked from commit 73c50e7d00)
2016-10-03 17:57:09 -07:00
Toru KobayashiandPaul O’Shannessy 747d65133a Run codemod react-codemod/transforms/class again (#7679)
ref. #7321
(cherry picked from commit df033180f0)
2016-10-03 17:57:09 -07:00
Christopher ChedeauandPaul O’Shannessy 195b03e196 Type ReactHostOperationHistoryHook (#7672)
In order to properly type an `Operation`, we need to change the call site from having two arguments: one for `type` and one for `payload` into an object that contains both. This isn't a perf regression because we were already constructing this object in the first place and doesn't change the emitted event so shouldn't affect the dev tools.

None of the call sites are actually flow-ified so it isn't technically used but once we will, it'll make sure that we don't send random strings and payload through those very generic methods.
(cherry picked from commit eaefd9052a)
2016-10-03 17:57:09 -07:00
Christopher ChedeauandPaul O’Shannessy c023d53f02 Trim and inline ReactInstanceHandles (#7676)
React IDs have been killed and there was one call site left in a test. I trimmed down the implementation to keep only what is actually used and inlined it inside of the test so we don't get more people using it in the future.
(cherry picked from commit 82598eec79)
2016-10-03 17:57:08 -07:00
Flarnie MarchanandPaul O’Shannessy c1f0b4e9da Flow type event plugins (#7667)
* Type SimpleEventPlugin and TapEventPlugin

- Renamed file from 'ReactSynteticEvent' to 'ReactSyntheticEventType'
- Fills in the 'any' holes that were left in DispatchConfig type and the
  type annotations in EventPluginRegistry.
- Adds polymorphic PluginModule type and related types
- Uses hack to support indexable properties on 'Touch' type in
  TapEventPlugin

The issue in TapEventPlugin is that the code is accessing one of four
possible properties on the 'Touch' type native event using the bracket
accessor. Classes in Flow don't support using the bracket accessor,
unless you use a declaration and the syntax `[key: Type]: Type`.[1] The
downside of using that here is that we create a global type, which we
may not need in other files.

[1]: https://github.com/facebook/flow/issues/1323

Other options:
- Use looser typing or a '@FixMe' comment and open an issue with Flow to
  support indexing on regular classes.
- Rewrite TapEventPlugin to not use the bracket accessor on 'Touch'. I
  thought the current implementation was elegant and didn't want to
  change it. But we could do something like this:
```
 if (nativeEvent.pageX || nativeEvent.pageY) {
   return axis.page === 'pageX' ? nativeEvent.pageX : nativeEvent.pageY;
 } else {
   var clientAxis = axis.client === 'clientX' ? nativeEvent.clientX : nativeEvent.clientY;
   return nativeEvent[axis.client] + ViewportMetrics[axis.envScroll];
 }
```

(cherry picked from commit 7b2d9655da)
2016-10-03 17:57:08 -07:00
Christopher ChedeauandPaul O’Shannessy 26d060797c I wrote it live! (#7663)
(cherry picked from commit 334b8bdf16)
2016-10-03 17:57:02 -07:00
Filip SpiridonovandPaul O’Shannessy 118b93c591 Remove unnecessary var declaration (#7666)
(cherry picked from commit 0c77b2f3eb)
2016-10-03 17:33:04 -07:00
Dan AbramovandPaul O’Shannessy 654829da66 Don't bundle ReactComponentTreeHook in production (#7653)
Fixes #7492.
This was a build size regression introduced in #7164.
(cherry picked from commit a09d158a7c)
2016-10-03 17:33:04 -07:00
Nathan HunzakerandPaul O’Shannessy 88e29060cd Use proper render method in static markup event listener test (#7652)
(cherry picked from commit 40c90a6499)
2016-10-03 17:33:03 -07:00
Paul O’Shannessy a7b81a60c0 Flow: bool -> boolean (#7650)
(cherry picked from commit 7b247f3609)
2016-10-03 17:33:03 -07:00
Christopher ChedeauandPaul O’Shannessy db985af3c3 Type ReactCurrentOwner (#7648)
Simpler than ReactOwner :)
(cherry picked from commit 2559030c34)
2016-10-03 17:33:03 -07:00
Christopher ChedeauandPaul O’Shannessy 2c16a6bb9d Convert CallbackQueue to a class (#7647)
It turns out that flow cannot type `this` with a function constructor + prototype overrides. Turning it to a class makes flow happy and has minimal impact on the output.

In open source, we already use the loose version of the class transform and internally we have one that's outputting even less code if you have `@preventMunge` in the header.

See discussion in https://www.facebook.com/groups/2003630259862046/permalink/2098480820376989/
(cherry picked from commit a70acb37d9)
2016-10-03 17:33:03 -07:00
Christopher ChedeauandPaul O’Shannessy b4949fd8c6 Restore coverage in Travis (#7628)
We disabled coverage in Travis because the implementation was crashing ( https://github.com/facebook/react/issues/6290 ). Since we upgraded to Jest 15, the entire coverage implementation is brand new so we should give it another try.
(cherry picked from commit 839697f60c)
2016-10-03 17:33:03 -07:00
Christopher ChedeauandPaul O’Shannessy 206bc2a330 Type ReactRef (#7600)
Nothing out of the ordinary on this one.
(cherry picked from commit 31dd6944d3)
2016-10-03 17:33:02 -07:00
Flarnie MarchanandPaul O’Shannessy 2c00d750c2 Merge pull request #7644 from flarnie/flowifyEventPluginRegistry
Type EventPluginRegistry
(cherry picked from commit 9a88e593ed)
2016-10-03 17:33:02 -07:00
Christopher ChedeauandPaul O’Shannessy ae79e023d5 Generate SimpleEventPlugin data structures at runtime (#7616)
We used to copy and paste the same big blob many times in order for it to work with keyOf which is no longer a constraint. This pull request takes a list of all the events as string and generate those data structures at runtime.

It reduces the size of React by 1k post gzip and flow is able to extract the structure out of it :)
(cherry picked from commit 1229a238c4)
2016-10-03 17:33:02 -07:00
Ben AlpertandPaul O’Shannessy bef7ae4800 Merge pull request #7634 from spicyj/flowfix
Small flow fixes
(cherry picked from commit 0c62d121c5)
2016-10-03 17:33:02 -07:00
Guillaume ClaretandPaul O’Shannessy b7d7f47a5e Remove the Flow experimental.strict_type_args option (#7631)
(cherry picked from commit 355c490653)
2016-10-03 17:31:42 -07:00
Nathan HunzakerandPaul O’Shannessy 85de53c450 Remove String.prototype.split polyfill warning (#7629)
(cherry picked from commit 5c47920384)
2016-10-03 17:31:41 -07:00
Christoph PojerandPaul O’Shannessy 96d39380fa Merge pull request #7625 from vjeux/jest15
Update to jest 15
(cherry picked from commit 1bd55c8cbd)
2016-10-03 17:31:41 -07:00
Christopher ChedeauandPaul O’Shannessy d5a769ec89 Kill keyOf :) (#7615)
(cherry picked from commit f7076b7759)
2016-10-03 17:31:36 -07:00