Commit Graph

1050 Commits

Author SHA1 Message Date
Chaiwat Ekkaewnumchai
475a425a20 Change ElementID to Element for Sidebar Extension
Summary: Element also contains `id`, which is equivalent to ElementID used in the existing extension. This change will help the implementation of layout intern search easier.

Reviewed By: mweststrate

Differential Revision: D21385001

fbshipit-source-id: b8c6e6f052af8cfa54bf3a132571e40567cdee4b
2020-05-05 06:48:00 -07:00
Michel Weststrate
655d856d1c Fixed broken timeline layout
Summary: Changelog: Fixed broken layout of timeline in QPL plugin

Reviewed By: passy

Differential Revision: D21383013

fbshipit-source-id: 95fbe2681ff27dff827c742f11192c1d07ad021c
2020-05-05 04:06:25 -07:00
Joao Alves
5c60b2b94a Reenable windows test for DataInspector (#1102)
Summary:
Requires https://github.com/facebook/flipper/issues/1101.
Pull Request resolved: https://github.com/facebook/flipper/pull/1102

Test Plan: CI

Reviewed By: nikoant

Differential Revision: D21379837

Pulled By: passy

fbshipit-source-id: 64afbf20eb246487fbccac2f0108996507a353ed
2020-05-04 08:07:44 -07:00
Pascal Hartig
c1b360cb0f Fix broken DataInspector test (#1100)
Summary:
Looks like we don't have a lint for `jest.mock` imports.
Pull Request resolved: https://github.com/facebook/flipper/pull/1100

Test Plan: yarn test

Reviewed By: jknoxville

Differential Revision: D21378747

Pulled By: passy

fbshipit-source-id: 118372596d6247282b1ddad1f22ed3916d303bb1
2020-05-04 05:34:47 -07:00
Chaiwat Ekkaewnumchai
fbc5d922b5 Fix ESLint Warning
Summary: Mainly, remove unused declaration

Reviewed By: mweststrate

Differential Revision: D21360395

fbshipit-source-id: 20cafefe3a650ab686534998a084301320333088
2020-05-04 05:27:33 -07:00
Michel Weststrate
fdff6aeae0 Introduce highlight manager, add scroll on highlight
Summary:
Introduced a highlight manager, which prevents drilling the highlight through the entire component tree and causing too many re-renders.

Also smartly optimizes that non-matched highlighted text doesn't render unnecessarily, and debounces the updates.

Finally, automatically scroll to the first highlight.

Reviewed By: jknoxville

Differential Revision: D21348575

fbshipit-source-id: 71f7ba2e981ad3fc1ea7f5e7043645e6b6811fb7
2020-05-04 04:16:27 -07:00
Michel Weststrate
fd84820ee5 Add filter and highlight to JSON
Summary:
Large GraphQL responses feel pretty unwieldy, added a search option.

Added filter functionality to ManagedDataInspector, and use it in GraphQL

changelog: It is now possible to search inside GraphQL responses

making it slightly more efficient, and scrolling to the matches will be done in a next diff

Reviewed By: jknoxville

Differential Revision: D21347880

fbshipit-source-id: 85c95be0964515e737de2ab41bbdd8cc6a87544e
2020-05-04 04:16:27 -07:00
Michel Weststrate
b474ef24e0 expand components slowly
Summary:
This diff introduces the concept of `shouldExpand` in DataInspector. Rather than expanding components right away, we only expand if the CPU is idly, this makes sure our app remains interactive, rather than stalling for 15 seconds as shown in the example query.

In the future we could solve the blocking by using react suspense as well, but this solution has the nice benefit that it allows inspecting and interacting with the data right away.

Changelog: The JSON inspector in plugins like GraphQL no longer freezes Flipper temporarily when expanding large data sets and will remain interactive during

Reviewed By: jknoxville

Differential Revision: D21302821

fbshipit-source-id: 6a53858f9062175596dc695c4af172d60422abe7
2020-04-30 06:32:34 -07:00
Michel Weststrate
3726bddefc Refactor some render computations to local state
Summary: The goal of this stack is to gradually expand large data trees, rather than all at once. To enable that, we need to be able to distinguish 'expandability' vs. 'being expanded'. By moving computations from render to the component hooks and store the results locally, we get a step closer to that.

Reviewed By: jknoxville

Differential Revision: D21301927

fbshipit-source-id: cfb617214d4b2005796b33b41c1abe0032e41847
2020-04-30 06:32:34 -07:00
Michel Weststrate
8f22cf9e81 Add unit tests
Summary:
Added unit tests to DataInspector prevent regressions in upcoming refactor

Found a bug where changes in `collapsed` aren't propagated. Fixed as well.

Reviewed By: jknoxville

Differential Revision: D21301858

fbshipit-source-id: 764bddeff30f9d4dbfc85d990635f67c20cfacb1
2020-04-30 06:32:33 -07:00
Pascal Hartig
5c05e4e85b Point "Report Problems" to Workplace internally
Summary: OSS continues to be GitHub issues.

Reviewed By: mweststrate

Differential Revision: D21324887

fbshipit-source-id: c024337d7f8e976d9f755de928a0af29d76d4321
2020-04-30 06:05:46 -07:00
Pascal Hartig
1011042bdb Remove bugnub
Summary:
Good bye, sweet prince.
We've decided to remove the internal bugnub as its usage is quite low
and the experience is subpar. In the future, we'd rather reuse the
support form v2 and integrate it with our group.

Reviewed By: mweststrate

Differential Revision: D21300627

fbshipit-source-id: d3c7271efcee4ad22ec76394870902f2712e392d
2020-04-30 06:05:46 -07:00
John Knox
b27f8ee236 Fix broken links inside app
Summary:
Searched for broken link patterns inside the app itself. I think I found them all but it's not certain.

Patterns searched for and replaced:
```
.html
getting-started/)
getting-started)
getting-started"
```

and also searched the repo for regex `\]\(.*)` and checked them by eye.

Reviewed By: passy

Differential Revision: D21306944

fbshipit-source-id: a2e09b0fd8677f5f26e5cc4a06805b474247f7e6
2020-04-30 03:19:22 -07:00
Dan Yang
3e0f07ac97 Database plugin - Render blob cells
Summary: As titled. The android plugin was already sending the data in blob cells as `{ type: 'blob' value: string }` (see com/facebook/flipper/plugins/databases/ObjectMapper.java?lines=213-216).

Reviewed By: jknoxville

Differential Revision: D21253129

fbshipit-source-id: 15a44c72f4030887a50faece780c89aa65f6a45b
2020-04-29 16:11:21 -07:00
generatedunixname89002005306973
bd320b94e1 Flipper Release: v0.40.0
Summary: Releasing version 0.40.0

Reviewed By: nikoant

Differential Revision: D21302037

fbshipit-source-id: 2f2aeaf0aaf7a0d2fb65b21b6243c9ecd2684cdc
2020-04-29 08:33:04 -07:00
Pritesh Nandgaonkar
513414de04 Make integration of new groups simpler
Summary: This diff simplifies the way new groups can be added into the Support form. Users will have to just make an entry in constants folder, thats it. It will automatically be added into the support form.

Reviewed By: jknoxville

Differential Revision: D21257033

fbshipit-source-id: 8823855c7a7732862a964fc17fa7311512b861db
2020-04-29 05:41:46 -07:00
Pritesh Nandgaonkar
38186c8995 Add dropdown for selecting groups
Summary: This diff refactors the group selection to the dropdown. As with the growing list of grps, dropdown will be easy to search and scale

Reviewed By: mweststrate

Differential Revision: D21175998

fbshipit-source-id: 90f1a81dfc6c2232cd2dcf767ed01205fc63e1fd
2020-04-29 05:41:45 -07:00
Radek Czemerys
884d64df71 Add missing TS type in UserAccount (#1063)
Summary:
Adds missing TS for Store type in `react-redux` `connect`, same as in other components.
Forgot to add in https://github.com/facebook/flipper/issues/1062

## Changelog

Internal change: Typescript typings improved.
Pull Request resolved: https://github.com/facebook/flipper/pull/1063

Test Plan: Try to compile/do a type check.

Reviewed By: nikoant

Differential Revision: D21278326

Pulled By: passy

fbshipit-source-id: c8e8e18c3c6d5f8904e97228540d4d7c4274124f
2020-04-28 06:55:57 -07:00
Timur Valiev
931bf1f14f export ElementsInspectorProps; optional id of linked Elements
Summary: a bit of refactoring since we are going to use elements inspector a lot in NT related plugins

Reviewed By: jknoxville

Differential Revision: D21155830

fbshipit-source-id: 0ff6acf97658bccbbed86388257bbad207fd65b4
2020-04-28 06:06:09 -07:00
Timur Valiev
79937f198d graph api calls to sandbox
Summary: We are working on integrating new NT debug api and debug metadata is stored in sandbox

Reviewed By: jknoxville

Differential Revision: D21155832

fbshipit-source-id: 2a7c8303e62793092f9e5b27f61d9db38eab14c5
2020-04-28 06:06:08 -07:00
Anton Nikolaev
c1b97e5d1f Fix loading plugins in dev mode
Summary: Fixed loading plugins in dev mode

Reviewed By: timur-valiev

Differential Revision: D21262894

fbshipit-source-id: c4ab6902d3153c3580c71f27df91290122627fae
2020-04-27 18:15:42 -07:00
Michel Weststrate
dba480ce74 Preserve Navigation plugin as background plugin eevn when disabled
Summary:
This diff fixes an issue where we don't want to have the Navigation plugin be disabled as background plugins like all other plugins, so that the breadcrumb navigation keeps working.

Yet another hack concerning the super useful Navigation plugin. On a positive note, since connection management for background is not entirely managed by the Desktop and not the native said, these kind of exceptions are fairly easy to make :)

Reviewed By: passy

Differential Revision: D21089537

fbshipit-source-id: 209954ff35c95e066fe688a60ad46ccfc3835c44
2020-04-27 09:46:14 -07:00
Michel Weststrate
b9c3d99f44 Stop connecting disabled background plugins
Summary:
Background for this diff: https://fb.quip.com/KqEfAlKYlgme

Some plugins don't respect that stuff (livefeed and graphql), but for others it seems to work fine.

This is just a PoC, there are some present bugs concerning the combination of selecting and bg plugins

Questions to investigate:

- [x] make sure that LiveFeed and GraphQL disconnect properly. There might be more plugins that need that
- [x] verifiy that we don't loose one of the original goals of background plugins, e.g. QPL collecting and sending data from device start. Does this still work as intended after this change?
- [x] how can we observe / measure improvements? Are dev builds more responsive after this? Is the layout inspector smoother for example because no QPL plugins are interweaved?
- [x] how is forward and backward compatibility?
   - If Flipper is updated, but device not: No change I think, as getBackgroundPlugins() will return an empty set, and background plugins are initiated as usual, so old behavior
  - If device is updated, but Flipper not, background plugins won't be started until they are selected. This is a degradation, but hopefully explainable.
- [x] Verify QPL buffer is not unbounded
- [x] Share architecutre changes with team

For Graphql updates: D20943455

Added runtime stats to monitor network traffic (sadly had to redo that since scuba couldn't handle the data format used at first, so probably will hold of landing this diff a week to make sure we can see some effects)

Follow up work:

[x] wait until we released the stat tracking before we release this, to be able to measure the effect?
[x] make sure graphql fix lands
[ ] use side effects abstraction
[ ] fix other background plugins (android only) or fix it in a generic way:

{F234394286}

Changelog: Background plugins will no longer receive a Flipper connection if they are disabled. This should significantly reduce the overall load of Flipper both on the device and desktop when unused plugins are disabled used, which could otherwise generate 10MB/s of network traffic certain scenarios. All plugins *should* be able to handle to this gracefully, but since this is quite a fundamental change, reach out to the Flipper team when in doubt!

Reviewed By: jknoxville

Differential Revision: D20942453

fbshipit-source-id: b699199cb95c1b3e4c36e026b6dfaee7d1652e1f
2020-04-27 09:46:13 -07:00
John Knox
397fb7413f Fix duplicate message issue in Websocket impl
Summary: Missed an else on the if statement, causing it to duplicate websocket messages.

Reviewed By: passy

Differential Revision: D21256794

fbshipit-source-id: ea4abb88723a052a3490b930420ee6b005447c81
2020-04-27 08:27:07 -07:00
Radek Czemerys
3cc0ca3130 Add missing TS type in DetailsSidebar (#1062)
Summary:
Adds missing TS for Store type in `react-redux` `connect`, same as in other components.

## Changelog

Internal change: Typescript typings improved.
Pull Request resolved: https://github.com/facebook/flipper/pull/1062

Test Plan: Try to compile/do a type check.

Reviewed By: jknoxville

Differential Revision: D21256256

Pulled By: passy

fbshipit-source-id: 55dea7d40a6874e924983806a298301aeffa772f
2020-04-27 07:29:56 -07:00
Anton Nikolaev
773b0b7f67 Fix tests failing on Windows (#1052)
Summary:
Pull Request resolved: https://github.com/facebook/flipper/pull/1052

Fixed tests failing on Windows because jest auto-mocks works differently there

Reviewed By: passy

Differential Revision: D21237618

fbshipit-source-id: 31c7e92b7f8ae84c1e65fd37428204452b3f1b00
2020-04-27 07:18:12 -07:00
John Knox
fcb89b94b5 Fix wss connection initialisation race
Summary:
The websocket server has a race condition where it only starts listening for messages after the client has finished setting up.
This lets it queue up messages if the client isn't ready.

Reviewed By: passy

Differential Revision: D21256218

fbshipit-source-id: fa8481e11225cc473f03f3afbf4d0c50a48cec91
2020-04-27 07:14:46 -07:00
John Knox
5f1a0548f5 Migrate website to Docusaurus 2
Summary:
Docusaurus 2 is quite a lot more powerful than docu 1 it turns out.
This should convert the website fully.

* [done] Go through migration guide https://v2.docusaurus.io/docs/migrating-from-v1-to-v2
* [done] Convert landing page html
* [done] Convert all images to img tags
* [done] Convert all .md files to .mdx
* [done] Make sure ui-doc generation and including still works
* [done] Scan every page visually for sanity check
* [done] Make sure footer still works
* [done] Make sure search still works
* [done] Change all links/ to links/index
* [done] Change all links.md to links
* [done] Add some custom css to make the navbar look like the old one and darken the footer.

Reviewed By: passy

Differential Revision: D21158717

fbshipit-source-id: 5f45b711b1b6fd5ece4c5c15c55635c7ebbfb568
2020-04-27 04:05:01 -07:00
Pritesh Nandgaonkar
511156fec6 Solve the tooltip bug
Summary:
There was a bug where tooltip was even showed after there were no validation errors.
This bug exists everywhere where the tooltip is used.
See the video:

{F235201264}

The reason was the we were not invalidating the react hooks.

Reviewed By: jknoxville

Differential Revision: D21229754

fbshipit-source-id: 50b438bd78e8adb5b17c6d0da15b2f34d7ae2597
2020-04-24 13:32:40 -07:00
Michel Weststrate
df88bbb7db Track 'reload' usage
Summary: Keep track of how often the 'reload' command is used

Reviewed By: passy

Differential Revision: D21227851

fbshipit-source-id: 112781024be16e411e93cf2403f95b2f3134d971
2020-04-24 10:44:48 -07:00
Michel Weststrate
d142369e9d Fix initial main menu not loading
Summary: Fixes a regression (D20679687) of the main menu not loading immediately after application start

Reviewed By: passy, priteshrnandgaonkar

Differential Revision: D21227817

fbshipit-source-id: 37e4ddfcb73de3eac04d6162a3e028864d3e9e7f
2020-04-24 10:44:48 -07:00
Anton Nikolaev
9b99d58acc Removed unused dependencies
Summary: Removed dependencies from package.json which are not referenced anywhere in code.

Reviewed By: passy

Differential Revision: D21187840

fbshipit-source-id: e5a69be01ad3e592f2782b7921bc95bff833e267
2020-04-23 05:33:20 -07:00
Anton Nikolaev
ec07272c78 Linter checks for extraneous dependencies
Summary: Added eslint rule "no-extraneous-imports" which disallow using modules which are not listed as dependencies in the corresponding package.json. Fixed a bunch of reported errors after the rule applied.

Reviewed By: passy

Differential Revision: D21186848

fbshipit-source-id: 0af9ac4b3fffdfd0ab7c23ae4ff12a3f5989d5e9
2020-04-23 05:33:20 -07:00
Pritesh Nandgaonkar
9d0d900b05 Pass supportsMethod as an argument to the exportPersistedState
Summary:
This diff adds supportsMethod as a closure which can be used to verify a method is implemented on the client side.

It will be used in the next diff

Reviewed By: jknoxville

Differential Revision: D21176415

fbshipit-source-id: fe16d966c58d36558034ce4ade8f58f8031aab18
2020-04-23 04:31:17 -07:00
generatedunixname89002005306973
99c5a427c7 Flipper Release: v0.39.0
Summary: Releasing version 0.39.0

Reviewed By: mweststrate

Differential Revision: D21199718

fbshipit-source-id: 1082098a2b4fcfaa7b7efb201e8321331fd4bdc4
2020-04-23 03:57:12 -07:00
Michel Weststrate
f07d898a35 Use fragments instead of arrays when returning elements
Summary: Returning arrays from render kills react-reconciliation and produces missing key warnings. Turned all array rendering methods to use Fragments, where I could find them.

Reviewed By: jknoxville

Differential Revision: D21178253

fbshipit-source-id: 85ddf8adfa79732ccbe68409fdcf150399455983
2020-04-23 03:47:32 -07:00
Michel Weststrate
67412bfb43 Fix scrolling of query items and JSON details view
Summary: This diff fixes the tripple scrollbars in the graphQL plugin, and makes sure scrollbars for the detail panel are properly shown

Reviewed By: jonathoma

Differential Revision: D21177849

fbshipit-source-id: d40173d7e9a45064b608c8d953c7aea47a4acd0f
2020-04-23 03:47:31 -07:00
Michel Weststrate
4665bcf218 Introduced Layout component
Summary:
This diff introduces a Layout component.

Layout is now quite randomly build up by using panels, sidebars, flex columns, flexrow and view components. They all have slight different scrolling, overflow, and grow behavior. Which causes issues with areas not being srcollable, double scrollbars or simply the wrong area scrolling. Too make things worse to design, many components by default display hidden content, and show scrollbars automatically rather than deliberately.

To work towards a consist, and especially simple layout model, over time I want to build a consistent outside-in layout model, where always parents reserve space for children, and children fill the available space and device it even further.

Note that this approaches better how 'applications' typically organize their layout, which is opposite from the classic 'document', where the contents is allowed to grow and is used to push things down / aside where they want. However, such a model fits an application with toolbars, sidebars and scroll regions badly, and currently those two philosophies are mixed throughout the application.

This component is a very small first step to organizing our layout consistently. By using a new component there is less risk to break existing layouts. The `Layout` component takes up all available space, both horizontally and vertically, and gives the first child what it needs based on its own size (typically, a toolbar or (resizable) sidebar), and all the remaining space to the second child. By default the space is distributed vertically, but it can also be distributed horizontally. It can provide scrollbars as well if needed so that the main content doesn't need to provide that by itself.

Examples:

```
<Layout scrollable>
  <Toolbar />
  <LargePicture />
</Layout>

<Layout horizontal>
  <ResizableSidebar />
  <SomeContentTable />
</Layout>
```

Reviewed By: jknoxville

Differential Revision: D21178245

fbshipit-source-id: c2d2f167d1572278e51a5b66e1cbf13c42c3b898
2020-04-23 03:47:31 -07:00
Anton Nikolaev
1509180929 Fixed warning about using kebab-style for emotion styling
Summary: Just fixed warning that kebab-style properties are deprecated and camel-case should be used instead

Reviewed By: mweststrate

Differential Revision: D21178489

fbshipit-source-id: 9fba323b3c6ccfce7eb2acc97aa57526305e24ac
2020-04-22 14:03:08 -07:00
Michel Weststrate
18b88a7e03 Flipper Release: v0.38.0
Summary: Releasing version 0.38.0

Reviewed By: cekkaewnumchai

Differential Revision: D21155371

fbshipit-source-id: 554393fc357135cd8538c9b77eee023f8a3e1525
2020-04-21 13:10:56 -07:00
Timur Valiev
764ba546f7 Move ToolbarIcon to main ui components folder
Summary: there are two plugins which uses copy-pasted ToolbarIcon and at least one more where it will be helpful. Let's move it to components folder

Reviewed By: nikoant

Differential Revision: D21089290

fbshipit-source-id: a14dcd56633dd24016711e34308b94023fcb40ed
2020-04-21 09:23:46 -07:00
Michel Weststrate
60ddad7e08 Fix deeplink parsing issue and device plugin highlighting
Summary:
This diff fixes an issue where the selected device was not correctly updated when selecting a device plugin, causing the wrong plugin, or none at all, to be highlighted.

This diff fixes an issue where deeplinks were not correctly parsed if formatted as shown in the test plan of D20920587 (it was a different format in the recording, but after looking into it, using `plugin?params` instead of `plugin/?params` is the natural thing to do, so we now support both)

Reviewed By: jknoxville

Differential Revision: D21154190

fbshipit-source-id: c31132aaf7213ee1c3c188a6a1cf2b6bcc7b5b00
2020-04-21 06:33:25 -07:00
Anton Nikolaev
3ff2d3bf99 Add "id" field to Flipper plugin manifest
Summary:
Added "id" field to Flipper plugin manifest which is used to match native and desktop plugin parts. Before that, "name" field was used both as npm package name and as plugin id.

The problem is that currently there are a lot of plugins which has invalid values in "name", e.g. not starting with "flipper-package-", or containing upper cased letters.

Simple renaming of "name" field can be very problematic, so we need a new field to avoid any breaking changes and keep historical analytics data which is also bound to plugin id.

Reviewed By: mweststrate

Differential Revision: D21129689

fbshipit-source-id: efd143c82a6a802cc0b5438fd3f509bd99aded0e
2020-04-20 11:14:36 -07:00
Alexander Kawrykow
c0c96dcd3e Fix typing of graphQLQuery
Summary: This was being interpreted as returning `void` which was causing problems when trying to access the resolved value from the request. Fixing to slightly better type of `Promise<any>`

Reviewed By: passy

Differential Revision: D21105552

fbshipit-source-id: 76deb5a83b5220bafed8c12c3f56f339a5215c14
2020-04-20 09:31:08 -07:00
Anton Nikolaev
ca2d04a5da Versioning for plugin format
Summary:
Added versioning for plugin format.

The first version is where "main" points to source code entry and plugins are bundled by Flipper in run-time on loading them.

The second version is where "main" points to the already existing bundle and Flipper just loads it without bundling. The plugins of version 2 must be bundled using "flipper-pkg" tool before publishing.

Changelog: Support new packaging format for plugins.

Reviewed By: mweststrate

Differential Revision: D21074173

fbshipit-source-id: 7b70250e48e5bd5d359c96149fb5b14e67783c4d
2020-04-20 06:03:16 -07:00
shinpei_kim
ad6da949f7 Simplify RegExp (#995)
Summary:
## Changelog
Pull Request resolved: https://github.com/facebook/flipper/pull/995

Reviewed By: passy

Differential Revision: D21112956

Pulled By: priteshrnandgaonkar

fbshipit-source-id: 14d79dd399970c49835aab7eeb7dbd69ee323ab9
2020-04-20 02:52:52 -07:00
Michal Zielinski
2d1870cf7d Add support for deleting a shared preference (#1018)
Summary:
This change makes it possible to remove preferences. I also added a `Delete` context menu option to `DataInspector` because I needed it to implement this feature. passy confirmed that it makes sense to add this because delete is a common action.

Fixes https://github.com/facebook/flipper/issues/451
Pull Request resolved: https://github.com/facebook/flipper/pull/1018

Reviewed By: jknoxville

Differential Revision: D21086308

Pulled By: passy

fbshipit-source-id: 551ff0908d5e6c93f58d6012b42e1ee3531de997
2020-04-17 09:01:04 -07:00
Michel Weststrate
a5e5ed5b7b Added some additional error handlers to get a better grip on connection issues
Summary: I think it is good to have error handlers where-ever possible, so that there is historical data in our monitoring when we need it, and can track from which point of the code it originates :)

Reviewed By: jknoxville

Differential Revision: D21040059

fbshipit-source-id: 1c07fbfa65379739554bc98f83761ae97870ba82
2020-04-17 05:02:34 -07:00
John Knox
2d68006e3f Use device name instead of Web Browser
Summary: Unity is using this, and I noticed it was showing up as Web Browser which is a bit misleading.

Differential Revision: D21067698

fbshipit-source-id: 93d6a598824e61490e0eadd1b2c9fb3ebc12d01c
2020-04-17 03:10:15 -07:00
Michel Weststrate
8b75e81da5 Make background plugin stats consumable from Scuba
Summary:
I was trying to plot some graphs based on our background plugin stats, grouped per plugin, but discovered that we can't exploded or group on json object keys, so separated the data into separate `plugin-stats-plugin` events, as is done with the `time-spent` event.

Also fixed:
* grouping stats per plugin, rather than per plugin method, which was to fine-grained
* added `bytesReceived` field to the cumulative event `plugin-stats`

Reviewed By: jknoxville

Differential Revision: D21046016

fbshipit-source-id: 1043612064921cf6427d5b3bbee10b76776df39e
2020-04-16 03:20:44 -07:00