Commit Graph

1119 Commits

Author SHA1 Message Date
Michel Weststrate
bde112bf85 Introduce onConnect / onDisconnect hooks
Summary:
Introduced hooks that are called whenever the plugin is connected / disconnected to it's counter part on the device.

There is some logic duplication between `PluginContainer` for old plugins, and `PluginRenderer` for new plugins, mostly caused by the fact that those lifecycles are triggered from the UI rather than from the reducers, but I figured refactoring that to be too risky.

Reviewed By: jknoxville

Differential Revision: D22232337

fbshipit-source-id: a384c45731a4c8d9b8b532a83e2becf49ce807c2
2020-07-01 09:12:36 -07:00
Michel Weststrate
dd0d957d8b Fix vscodeUtils make a request on every unit test run
Summary:
When running unit tests, every unit would try to make a graphql request (since promises always kick off immediately, even when not being awaited) and print an error. Fixed that by lazily choosing the preferred whatever it is.

Before:

{F241368814}

After:
(crickets)

Reviewed By: passy

Differential Revision: D22208422

fbshipit-source-id: b290d528d94dbed7ae867e07694d8d4cd85d8376
2020-07-01 09:12:36 -07:00
Michel Weststrate
f2c39aed55 Introduce PluginRenderer to render plugins
Summary: PluginContainer will now wrap Sandy plugins in PluginRenderer. PluginRenderer will also be used by plugin unit tests in the future

Reviewed By: jknoxville

Differential Revision: D22159359

fbshipit-source-id: 69f9c8f4bec9392022c1d7a14957f5aca0339d97
2020-07-01 09:12:36 -07:00
Michel Weststrate
ba01fa5bc9 Introduce onDestroy hook
Summary: This diff introduces the `onDestroy` hook that can be used by plugins to listen to the event where a plugin is cleaned up (either because it is disabled, or because the client is being cleaned up)

Reviewed By: jknoxville

Differential Revision: D22208121

fbshipit-source-id: 9c4951ae671be611f21da171c548d4054c481166
2020-07-01 09:12:35 -07:00
Michel Weststrate
04a29315e2 Remove instanceof checks
Summary: Replaced `instanceof` checks with `isSandyPlugin` utility. That is cleaner to read and makes it easier to find places where we make exceptions for Sandy plugins

Reviewed By: jknoxville

Differential Revision: D22206707

fbshipit-source-id: b44a1b585424f3b9bf0d7ce200c34107f03ed55e
2020-07-01 09:12:35 -07:00
Michel Weststrate
1dc9e899b8 Make sure Sandy plugis can be initialized
Summary:
This diff makes sure sandy plugins are initialized.

Sandy plugins are stored directly in the client for two reasons
1. we want to decouple any plugin state updates from our central redux store, as redux is particularly bad in handling high frequency updates.
2. The lifecycle of a plugin is now bound to the lifecycle of a client. This means that we don't need 'persistedStore' to make sure state is preserved; that is now the default. Switching plugins will no longer reinitialize them (but only run specific hooks, see later diffs).
3. PersistedState will be introduced for sandy plugins as well later, but primarily for import / export / debug reasons.

A significant difference with the current persistent state, is that if a client crashes and reconnects, plugins will loose their state. We can prevent this (again, since state persisting will be reintroduced), but I'm not sure we need that for the specific reconnect scenario. Because
1. we should fix reconnecting clients anyway, and from stats it looks to happen less already
2. reconnects are usually caused by plugins that aggregate a lot of data and get slower over time. Restoring old state also restores those unstabilites.

For the overview bringing back the archi picture of earlier diff:
{F241508042}

Also fixed a bug where enabling background plugins didn't enable them on all devices with that app.

Reviewed By: jknoxville

Differential Revision: D22186276

fbshipit-source-id: 3fd42b577f86920e5280aa8cce1a0bc4d5564ed9
2020-07-01 09:12:35 -07:00
Michel Weststrate
bf79c9472e Always mock FBLogger during unit tests
Summary: Unit tests tend to randomly bail out once FBLogger is (indirectly) required by some module under test. This makes sure FBLogger is stubbed by default. We might want to do the same for `User` in the future.

Reviewed By: jknoxville

Differential Revision: D22186274

fbshipit-source-id: 2ede364c4b691d69826781355592226b075d8367
2020-07-01 09:12:35 -07:00
Michel Weststrate
83e6968fa1 cleaner test API
Summary: The test mock utilities now return a promise, rather than taking a callback, which makes tests slightly nicer to read (similar to react-testing-library). No semantic changes.

Reviewed By: jknoxville

Differential Revision: D22186278

fbshipit-source-id: ec5b9f4e6bfeee9160e331f8c20a1d4fdcbfeede
2020-07-01 09:12:35 -07:00
Michel Weststrate
12ac29685d make sure plugins can be loaded into Flipper
Summary: Make sure Sandy plugins are loaded properly from disk

Reviewed By: jknoxville

Differential Revision: D22186275

fbshipit-source-id: fd2f560a7bed959b18e05db2a087909ad876ab9d
2020-07-01 09:12:35 -07:00
Michel Weststrate
1029a6c97c Introduce types for Sandy plugins through code base
Summary:
So far there were 2 types of plugins: `FlipperPlugin` and `FlipperDevicePlugin`. This introduces a third kind: `SandyPluginDefinition`.

Unlike with the old plugins, the export of the module is not directly exposed as the plugin definition. Rather, we use class `SandyPluginDefinition` (instance) that holds a loaded definition and its meta data separately (`PluginDetails`). This means that we don't have to mix in and mutate loaded definitions, and that for unit tests we can avoid needing to provide a bunch of meta data. This also prevents a bunch of meta data existing on two places: on the loaded classes as static fields, and in the meta data field of the loaded class as well. Finally, we can now freely extends the `PluginDetails` interface in flipper, without needing to store it on the loaded classes and we are sure that no naming conflicts are caused by this in the future.

For compatibility with the existing code base, common fields are delegated from the `SandyPluginDefinition` class to the meta data.

Also cleaned up types around plugins a little bit and removed some unnecessary casts.

For all features that reason about plugins in general (such as exports), sandy plugins are ignored for now.

`SandyPluginInstance` is worked out in further diffs

The `instanceof` calls are replaced by a utility function in later diffs.

{F241363645}

Reviewed By: jknoxville

Differential Revision: D22091432

fbshipit-source-id: 3aa6b12fda5925268913779f3c3c9e84494438f8
2020-07-01 09:12:35 -07:00
Michel Weststrate
2383dc85f8 Initialized flipper-plugin library
Summary: Set up an initial library which can (should) be used by plugins in the future.

Reviewed By: jknoxville

Differential Revision: D22019554

fbshipit-source-id: 502b14b34b2c9c117cea377ab6ebbf150e6faee9
2020-07-01 09:12:35 -07:00
generatedunixname89002005306973
8000090eac Flipper Release: v0.49.0
Summary: Releasing version 0.49.0

Reviewed By: cekkaewnumchai

Differential Revision: D22307632

fbshipit-source-id: 105fc71f07a4827a5d6e54cf3200b22f800a5f1e
2020-06-30 06:33:04 -07:00
Pascal Hartig
8ff1411f91 Fix screen recording on Android 11
Summary:
Instead of relying on system blocks used, we use the file size reported by ls.
Android 11 seems to be more lazy when it comes to fsync'ing so there's a pretty
good chance that if we just check for with `du` or `ls -ls` we will see an "empty" file
because it hasn't been written to disk yet. By the normal `ls` output instead, we'll
just read the file and see how many bytes it's long, which should be more
accurate in all cases.

Changelog: Fix screen recording for Android 11 beta

Reviewed By: jknoxville

Differential Revision: D22283092

fbshipit-source-id: 6d33ca297f1c0734ab4ffc466d9e483aa1a1bdb5
2020-06-29 07:20:40 -07:00
Chaiwat Ekkaewnumchai
56c9435bd5 Fix Always Scrolling to Selected Element
Summary: `forwardedRef` was always triggered, so it forced the container to scroll to the selected element. This diff stores element id so that it scrolls only once.

Reviewed By: mweststrate

Differential Revision: D22235284

fbshipit-source-id: 0eb7aaf2b484d345865db4da66d0f555dc314710
2020-06-26 02:19:11 -07:00
Anton Nikolaev
226bbae14b Plugin Marketplace: Check engine field and avoid downloading incompatible updates
Summary: Only download plugins with "engine" version less or equal to the current Flipper version

Reviewed By: mweststrate

Differential Revision: D22211546

fbshipit-source-id: 52cf51badcd1e7041214d2a09ba6b6fc9c331b8f
2020-06-25 05:24:26 -07:00
Pritesh Nandgaonkar
dafe493930 Add architecture and sdk version information
Summary: This diff adds abilist and sdk version information in the AndroidDevice.

Reviewed By: mweststrate

Differential Revision: D22210225

fbshipit-source-id: cda3dea9d89fdaa62a08aa000c93e39177c67bdd
2020-06-25 04:25:19 -07:00
Pascal Hartig
011952d73c Flipper Release: v0.48.0
Summary: Releasing version 0.48.0

Reviewed By: mweststrate

Differential Revision: D22207960

fbshipit-source-id: 7f21ff151c4e5750646a6dd3e39690229a2e73a5
2020-06-25 02:32:47 -07:00
Pritesh Nandgaonkar
d4680eead9 Support Installation for physical device
Summary: This diff enables the installation for iOS simulators. This also fixes the error view created when there is an error. Right now there is a bug on my machine where idb doesn't detect my physical device. But once it is detected, it will work.

Reviewed By: mweststrate

Differential Revision: D22137831

fbshipit-source-id: b6d6f77318c6baef78c35af73db3969b7dd1b907
2020-06-22 15:58:31 -07:00
Anton Nikolaev
b69996ca50 Remove inlined source maps from debug builds
Summary: Disabled producing inline source maps for debug builds. Source maps are already writte to "map" files, so this does not make sense to also inline them to the js bundle. Passing "sourceMapUrl" parameter to Metro fixed this.

Reviewed By: mweststrate

Differential Revision: D22159501

fbshipit-source-id: f06225cd43f44a7f93afcc32bb0501323b35d0c3
2020-06-22 06:11:29 -07:00
Michel Weststrate
f373872b5c Add infra to test a plugin
Summary:
There were several reports that it is hard to test an entire plugin, and send updates.

This should address that and help with avoiding plugin regressions in the future.

Added a `renderMockFlipperWithPlugin` utility and demo test.

Reviewed By: passy

Differential Revision: D22114217

fbshipit-source-id: ceefd954abc4ea47c336eab495fb50f161993df9
2020-06-22 06:05:25 -07:00
dependabot[bot]
163f3982f7 Bump ws from 7.2.3 to 7.3.0 in /desktop (#1266)
Summary:
Bumps [ws](https://github.com/websockets/ws) from 7.2.3 to 7.3.0.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a href="https://github.com/websockets/ws/releases">ws's releases</a>.</em></p>
<blockquote>
<h2>7.3.0</h2>
<h1>Features</h1>
<ul>
<li><code>WebSocket.prototype.addEventListener()</code> now supports the <code>once</code> option (<a href="https://github-redirect.dependabot.com/websockets/ws/issues/1754">#1754</a>).</li>
</ul>
<h2>7.2.5</h2>
<h1>Bug fixes</h1>
<ul>
<li>Fixed compatibility with Node.js master (651d6627).</li>
</ul>
<h2>7.2.4</h2>
<h1>Bug fixes</h1>
<ul>
<li>The <a href="https://nodejs.org/api/http.html#http_http_request_options_callback"><code>http.request()</code></a> <code>auth</code> option is now supported (<a href="https://github-redirect.dependabot.com/websockets/ws/issues/1734">#1734</a>).</li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a href="41f5e4ff11"><code>41f5e4f</code></a> [dist] 7.3.0</li>
<li><a href="2e5c01f5b5"><code>2e5c01f</code></a> [feature] Make <code>addEventListener()</code> support the <code>once</code> option (<a href="https://github-redirect.dependabot.com/websockets/ws/issues/1754">#1754</a>)</li>
<li><a href="97ddfce983"><code>97ddfce</code></a> [ci] Test on node 14</li>
<li><a href="2b49c4821f"><code>2b49c48</code></a> Revert &quot;[ci] Use GitHub Actions (<a href="https://github-redirect.dependabot.com/websockets/ws/issues/1644">#1644</a>)&quot;</li>
<li><a href="82f05372ba"><code>82f0537</code></a> Revert &quot;[ci] Test on node 14&quot;</li>
<li><a href="b167d1cd45"><code>b167d1c</code></a> Revert &quot;[ci] Update Coveralls GitHub Action to version 1.1.1&quot;</li>
<li><a href="78e1c01959"><code>78e1c01</code></a> [ci] Update Coveralls GitHub Action to version 1.1.1</li>
<li><a href="e6949791fa"><code>e694979</code></a> [doc] Fix badge URL</li>
<li><a href="67983cbba4"><code>67983cb</code></a> [dist] 7.2.5</li>
<li><a href="18d773d1f5"><code>18d773d</code></a> [test] Fix failing tests</li>
<li>Additional commits viewable in <a href="https://github.com/websockets/ws/compare/7.2.3...7.3.0">compare view</a></li>
</ul>
</details>
<br />

[![Dependabot compatibility score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=ws&package-manager=npm_and_yarn&previous-version=7.2.3&new-version=7.3.0)](https://help.github.com/articles/configuring-automated-security-fixes)

Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `dependabot rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

 ---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- `dependabot rebase` will rebase this PR
- `dependabot recreate` will recreate this PR, overwriting any edits that have been made to it
- `dependabot merge` will merge this PR after your CI passes on it
- `dependabot squash and merge` will squash and merge this PR after your CI passes on it
- `dependabot cancel merge` will cancel a previously requested merge and block automerging
- `dependabot reopen` will reopen this PR if it is closed
- `dependabot close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually

</details>
Pull Request resolved: https://github.com/facebook/flipper/pull/1266

Reviewed By: nikoant

Differential Revision: D22118507

Pulled By: passy

fbshipit-source-id: 700f098e5c7b6ddb1dda27ef50974af5b73fe88c
2020-06-22 02:17:59 -07:00
Anton Nikolaev
2085d4e362 Fix layout plugin source import violation
Summary: Fixed direct source import of Flipper code from layout plugin which broke its packaging

Reviewed By: cekkaewnumchai

Differential Revision: D22135716

fbshipit-source-id: 8f67a21ed94c13dd73d24ef8692d37ae51963319
2020-06-19 08:44:51 -07:00
Scott Kyle
cf9309b039 Remove ManagedDataInspector constructor
Summary: The constructor that accepts `context` is deprecated and in turn causes `React.ComponentProps<typeof ManagedDataInspector>` and other type signatures to fail.

Reviewed By: mweststrate

Differential Revision: D22111964

fbshipit-source-id: 71553d749d0d7de6ef34350faa55d04433a639d1
2020-06-18 11:05:13 -07:00
Scott Kyle
27cff396ad Add path param to extractValue
Summary: I'm working on an attribute inspector that has particular top-level special keys that should not be editable, while the rest can be. This enables the functionality to allow dynamic determinations of what can be made editable, and is an additive non-breaking change to the API.

Reviewed By: mweststrate

Differential Revision: D22111965

fbshipit-source-id: 4bc6df0f76cf1e2bf0590235dcf543c665c7d8d8
2020-06-18 11:05:13 -07:00
generatedunixname89002005306973
43b9426ff4 Flipper Release: v0.47.0
Summary: Releasing version 0.47.0

Reviewed By: jknoxville

Differential Revision: D22089288

fbshipit-source-id: 0107d1f17cce8c9adc2b9c26d48a6d80797749be
2020-06-17 09:00:07 -07:00
John Knox
77bc432a81 Don't filter iOS devices by name
Summary:
Well this is embarassing. My iPhone is called iPhone, so I assumed instruments always outputs "iPhone" for iPhones, but it doesn't if they've got a different name.

Pointed out in https://github.com/facebook/flipper/issues/262

Reviewed By: nikoant

Differential Revision: D22066872

fbshipit-source-id: 847e1baf28103692dc9472d9730b6384ec719be0
2020-06-16 08:16:03 -07:00
Anton Nikolaev
c995fc8fc2 Report versions of plugins and plugin load success rate (#1270)
Summary:
Pull Request resolved: https://github.com/facebook/flipper/pull/1270

1) Report versions of loaded plugins so we can track auto-updates
2) Report plugin load success rate

Reviewed By: jknoxville

Differential Revision: D22066598

fbshipit-source-id: 23ef2fb37260438cc1a9a873c88a50b75cd718f4
2020-06-16 06:46:14 -07:00
Jason Moore
fec52a3989 escape app name to account for special characters in name (closes #1252) (#1268)
Summary:
App Names can contain special characters. Escape them (and unescape later) so that device ID strings don't break.

Simpler is better - thanks to mweststrate for keeping me out of the rabbit hole
## Changelog

Escape app name to account for special characters in name
Pull Request resolved: https://github.com/facebook/flipper/pull/1268

Test Plan:
Added test to test character escaping: `cd desktop && yarn test -- -i app/src/utils/__tests__/clientUtils.node.tsx`

closes https://github.com/facebook/flipper/issues/1252

Reviewed By: passy

Differential Revision: D22066263

Pulled By: jknoxville

fbshipit-source-id: c820d055700ca6f55d35265528ce874eeb159216
2020-06-16 06:06:29 -07:00
Anton Nikolaev
96645a21b1 Fixed silent error on notification side-effect
Summary: Fixed silent error on showing deprecated format notification

Reviewed By: jknoxville

Differential Revision: D22066427

fbshipit-source-id: ae721aaa45e111df3cf8d8344554efac54b6d2ec
2020-06-16 05:31:09 -07:00
Anton Nikolaev
4a52af358e NotificationHub: allow to select notification text and copy it
Summary: Enabled selection of notification text + added a context menu item to copy the selected text only.

Reviewed By: passy

Differential Revision: D22065704

fbshipit-source-id: 510e68d50a54329aaeefb9b3097bc4283f884dc9
2020-06-16 04:30:59 -07:00
Anton Nikolaev
5b92836bea Show notifications about plugin spec v1 deprecation
Summary:
Show notification if user has installed plugins packaged in the old format. Example text of notification:

***
Plugin "Example" will stop working after version 0.48 of Flipper released, because it is packaged using the deprecated format.
Please try to install a newer version of this plugin packaged using "Install Plugins" tab on "Manage Plugins" form.

If the latest version of the plugin is still packaged in the old format, please contact the author and consider raising a pull request for upgrading the plugin. You can find contact details on the package page https://www.npmjs.com/package/flipper-plugin-example.

If you are the author of this plugin, please migrate your plugin to the new format, and publish new version of it. See https://fbflipper.com/docs/extending/js-setup#migration-to-the-new-plugin-specification on how to migrate the plugin. See https://fbflipper.com/docs/extending/js-setup#package-format for details on plugin package format.
***

Reviewed By: passy

Differential Revision: D22065688

fbshipit-source-id: da9b9d8f62e7cdb8c926a81e24bdfb4ec67f9dff
2020-06-16 04:30:59 -07:00
Scott Kyle
906b6a0230 RFC NT Layout sidebar extension
Summary:
This diff is not meant to land as-is, but instead to generate discussion on how to properly accomplish this.

The goal is to add a Layout plugin sidebar extension that displays the NT reduction trace when an NT component is selected.

Note this is a feature that exists today (when whitelisted on `reduction_trace_check` GK) via the `SKComponentLayoutDescriptor` API, where we'd include the entire JSON representation on every element and display that in a standard inspector in the sidebar. We have a new metadata system where we only include a metadata id and Flipper can separately request the metadata, which is much more performant. Also, we have an existing `NTReductionTracePanel` component we'd like to use that handles requesting and displaying that information in a much better way.

I'd still like to use the `SKComponentLayoutDescriptor` API (or something similar) to have access to that component's metadata id in order to decide whether the panel should appear and of course that id is needed for the panel. This works well right now (see test plan), but as you can see, it's less than ideal in that it needs to look into `Extra Sections` then `Native Templates` to get that information. This might be acceptable for the time being while we think this API through, but I wanted to get input on if we can do better before trying to land.

Additional questions:
- Why are `SidebarExtensions` exported from the "flipper" module, when they only work with and import from the Layout plugin?
- There are two `InspectorSidebar` components - one in the Layout plugin and one in main flipper module [here](https://fburl.com/diffusion/ecg8lhfq) that I don't think is being used?

Reviewed By: mweststrate

Differential Revision: D21887701

fbshipit-source-id: 23ed19c08b68b4b1115b8cc6af84af9e87e91128
2020-06-12 09:48:52 -07:00
Anton Nikolaev
fb92a6f131 Show notification after plugin update downloaded
Summary: Add notification after plugin update downloaded

Reviewed By: passy

Differential Revision: D22016571

fbshipit-source-id: 188eeb848561f8461d7f76d1965dc5190d41e7d0
2020-06-12 06:15:29 -07:00
Anton Nikolaev
74a27aafcc Disable plugin auto-update in dev mode
Summary: When Flipper is running in dev mode we should always use bundled version of plugin (e.g. loaded from sources) even if a newer version is installed. Otherwise it could happen that Flipper will load installed version and it will not be possible to test your changes of plugin sources.

Reviewed By: passy

Differential Revision: D22016564

fbshipit-source-id: fbf63d5248b60034dc61688e4faa9b54890b744e
2020-06-12 06:15:29 -07:00
Timur Valiev
896a90aa26 update js-client api (migrate to TS)
Summary:
JS/TS api:
- migrate to TS
- some refactoring (get rid of bridge, make client abstract)

Implementation isn't full yet, things to be implemented:
- let plugins connect on init command from Flipper
- implement Responder

Further plans:
- make fully compatible with react-native api without breaking changes

Reviewed By: mweststrate

Differential Revision: D21839377

fbshipit-source-id: 9e9fe4ad01632f958b59eb255c703c6cbc5fafe2
2020-06-11 08:45:35 -07:00
Anton Nikolaev
f88d707dbb Sign-in form improvements
Summary:
Sign in form improvements:
1) Added context menu with "Paste" and "Reset" items
2) Added "Reset" button
3) When form is empty, simple click to it automatically pastes token from clipboard
4) Automatically sign-in after token is pasted into empty form

Reviewed By: mweststrate

Differential Revision: D21994724

fbshipit-source-id: 8605c7f9b96777036b1b20b69370fba499185911
2020-06-11 07:31:10 -07:00
Scott Kyle
d6c97b48d3 Fix scrolling to inspected element
Summary:
When the `Scrollable` component was introduced, this functionality regressed because the `ref` was no longer set on the right component.

changelog: Fix scrolling to inspected element in Layout plugin

Reviewed By: mweststrate

Differential Revision: D21979475

fbshipit-source-id: f84d515cb1593a33d1ae0e93a01681b6e11aa623
2020-06-11 00:16:07 -07:00
dependabot-preview[bot]
fb0af47c31 Bump uuid from 8.0.0 to 8.1.0 in /desktop (#1234)
Summary:
Bumps [uuid](https://github.com/uuidjs/uuid) from 8.0.0 to 8.1.0.
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a href="https://github.com/uuidjs/uuid/blob/master/CHANGELOG.md">uuid's changelog</a>.</em></p>
<blockquote>
<h2><a href="https://github.com/uuidjs/uuid/compare/v8.0.0...v8.1.0">8.1.0</a> (2020-05-20)</h2>
<h3>Features</h3>
<ul>
<li>improve v4 performance by reusing random number array (<a href="https://github-redirect.dependabot.com/uuidjs/uuid/issues/435">https://github.com/facebook/flipper/issues/435</a>) (<a href="bf4af0d711">bf4af0d</a>)</li>
<li>optimize V8 performance of bytesToUuid (<a href="https://github-redirect.dependabot.com/uuidjs/uuid/issues/434">https://github.com/facebook/flipper/issues/434</a>) (<a href="e156415448">e156415</a>)</li>
</ul>
<h3>Bug Fixes</h3>
<ul>
<li>export package.json required by react-native and bundlers (<a href="https://github-redirect.dependabot.com/uuidjs/uuid/issues/449">https://github.com/facebook/flipper/issues/449</a>) (<a href="be1c8fe9a3">be1c8fe</a>), closes <a href="https://github-redirect.dependabot.com/uuidjs//github-redirect.dependabot.com/ai/nanoevents/issues/44/issues/issuecomment-602010343">ai/nanoevents#44</a> <a href="https://github-redirect.dependabot.com/uuidjs/uuid/issues/444">https://github.com/facebook/flipper/issues/444</a></li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a href="4124ec75f0"><code>4124ec7</code></a> chore(release): 8.1.0</li>
<li><a href="be1c8fe9a3"><code>be1c8fe</code></a> fix: export package.json required by react-native and bundlers (<a href="https://github-redirect.dependabot.com/uuidjs/uuid/issues/449">https://github.com/facebook/flipper/issues/449</a>)</li>
<li><a href="a21e4d8c53"><code>a21e4d8</code></a> test: improve v3/v5 test (<a href="https://github-redirect.dependabot.com/uuidjs/uuid/issues/450">https://github.com/facebook/flipper/issues/450</a>)</li>
<li><a href="3b4b35ca28"><code>3b4b35c</code></a> chore: warn about Node.js 13.x incompatibility in issue template (<a href="https://github-redirect.dependabot.com/uuidjs/uuid/issues/443">https://github.com/facebook/flipper/issues/443</a>)</li>
<li><a href="aabb7757fe"><code>aabb775</code></a> test: add tests for buffer api (<a href="https://github-redirect.dependabot.com/uuidjs/uuid/issues/438">https://github.com/facebook/flipper/issues/438</a>)</li>
<li><a href="bf4af0d711"><code>bf4af0d</code></a> feat: improve v4 performance by reusing random number array (<a href="https://github-redirect.dependabot.com/uuidjs/uuid/issues/435">https://github.com/facebook/flipper/issues/435</a>)</li>
<li><a href="e156415448"><code>e156415</code></a> feat: optimize V8 performance of bytesToUuid (<a href="https://github-redirect.dependabot.com/uuidjs/uuid/issues/434">https://github.com/facebook/flipper/issues/434</a>)</li>
<li><a href="f6ce4bffc2"><code>f6ce4bf</code></a> refactor: upgrade code to modern JavaScript (<a href="https://github-redirect.dependabot.com/uuidjs/uuid/issues/427">https://github.com/facebook/flipper/issues/427</a>)</li>
<li><a href="2b796869ec"><code>2b79686</code></a> test: add benchmark (<a href="https://github-redirect.dependabot.com/uuidjs/uuid/issues/430">https://github.com/facebook/flipper/issues/430</a>)</li>
<li>See full diff in <a href="https://github.com/uuidjs/uuid/compare/v8.0.0...v8.1.0">compare view</a></li>
</ul>
</details>
<br />

[![Dependabot compatibility score](https://api.dependabot.com/badges/compatibility_score?dependency-name=uuid&package-manager=npm_and_yarn&previous-version=8.0.0&new-version=8.1.0)](https://dependabot.com/compatibility-score/?dependency-name=uuid&package-manager=npm_and_yarn&previous-version=8.0.0&new-version=8.1.0)

Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `dependabot rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

 ---

**Note:** This repo was added to Dependabot recently, so you'll receive a maximum of 5 PRs for your first few update runs. Once an update run creates fewer than 5 PRs we'll remove that limit.

You can always request more updates by clicking `Bump now` in your [Dependabot dashboard](https://app.dependabot.com).

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- `dependabot rebase` will rebase this PR
- `dependabot recreate` will recreate this PR, overwriting any edits that have been made to it
- `dependabot merge` will merge this PR after your CI passes on it
- `dependabot squash and merge` will squash and merge this PR after your CI passes on it
- `dependabot cancel merge` will cancel a previously requested merge and block automerging
- `dependabot reopen` will reopen this PR if it is closed
- `dependabot close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
- `dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
- `dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
- `dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
- `dependabot badge me` will comment on this PR with code to add a "Dependabot enabled" badge to your readme

Additionally, you can set the following in the `.dependabot/config.yml` file in this repo:
- Update frequency
- Out-of-range updates (receive only lockfile updates, if desired)
- Security updates (receive only security updates, if desired)

</details>
Pull Request resolved: https://github.com/facebook/flipper/pull/1234

Reviewed By: nikoant

Differential Revision: D21940732

Pulled By: passy

fbshipit-source-id: 8ff46c925659156049ac8dd56ec2b7464dd83500
2020-06-10 09:39:56 -07:00
Pritesh Nandgaonkar
78924c527b Add persisted state
Summary: Persist state in Mobile builds plugin. This diff also moves the logic of percentage updates in the persisted state.

Reviewed By: mweststrate

Differential Revision: D21840853

fbshipit-source-id: 3246cdfecfca12cd0f269f5a87646cf619380999
2020-06-10 05:23:54 -07:00
generatedunixname89002005306973
c0eb2648b7 Flipper Release: v0.46.0
Summary: Releasing version 0.46.0

Reviewed By: nikoant

Differential Revision: D21952711

fbshipit-source-id: 8681a244d64c50f2ad50f6c9c5e0ea766fd9ff20
2020-06-09 10:14:19 -07:00
Michel Weststrate
17223f5a99 add CPU status
Summary: ^

Reviewed By: passy

Differential Revision: D21952136

fbshipit-source-id: b33de0b9da0cf0f77730599c99003362bac0d159
2020-06-09 07:28:25 -07:00
John Knox
21a926232e Add idb check to doctor
Summary:
Adds a check for idb to flipper-doctor.

This depends on the flipper settings, to know where to look for idb, so I've made it so you can pass settings into the doctor when running it. When run from the command line, you don't get the settings. This is because settings loading currently depends on redux so I haven't extracted it into its own package.

Not that this will notify ALL open source iOS users with a doctor warning because they don't have idb installed. The error message says you can disable it in settings, which will silence this warning.

CHANGELOG: The open source version now works with physical iOS devices.

Reviewed By: passy

Differential Revision: D21883086

fbshipit-source-id: f28c43487e88a6c07ef3cc3da2764026726c9f18
2020-06-09 06:56:09 -07:00
Anton Nikolaev
d27fa34505 Added module for test-utilities used across all packages
Summary: Added new package with test utilities re-used by other packages

Reviewed By: mweststrate

Differential Revision: D21949629

fbshipit-source-id: 8bfa959401669dc8911a1f647f417cafd92c2e4b
2020-06-09 04:58:37 -07:00
Anton Nikolaev
eeded4e32f Install plugins to pending directory first to enable installing new versions of existing plugins
Summary:
Install plugins to pending directory first to enable installing new versions of existing plugins. On startup Flipper moves all the plugins from pending directory into installed plugins directory.

Auto-update, after downloading a plugin package, will also extract it to "pending", so after restart update will automatically be applied.

Reviewed By: mweststrate

Differential Revision: D21929713

fbshipit-source-id: 141b106415e941156ae598cf810ab3bed8c76ced
2020-06-09 04:58:36 -07:00
Michel Weststrate
eff378defa Avoid JSON.stingify during render
Summary:
See previous diffs, same change as with analytics, don't stringify when creating the rows, but rather provide a closure to do that lazily, which reduces CPU (and mem) usage.

Note that this implicitly assumes the captures variables are immutable, as otherwise the semantics would change. But than again, if those variables are changed in the future, copyText will reflect their latest rather than initial state, which is better anyway.

Reviewed By: nikoant

Differential Revision: D21931748

fbshipit-source-id: 62325dd25953bab3a4e2e9a0d5dea3b3a7787bae
2020-06-09 03:00:23 -07:00
Michel Weststrate
3033fb035c Evaluate copyText lazily
Summary:
`copyText` is generated when building rows for table, and is typically filled by JSON stringifying the incoming data. That is a pretty expensive process that could be done lazily. As shown in later diffs, this reduces the generation of rows for tables from ~18ms to ~3ms, which makes rendering a lot smoother.

(n.b. fixing the code duplication in the managedtables is part of the component lib plan)

Reviewed By: passy

Differential Revision: D21929660

fbshipit-source-id: 67cc69945e2bb28a6462a9d9ab765e33ced89378
2020-06-09 03:00:23 -07:00
Michel Weststrate
2375dd02c3 Fixed bug where message could get lost if plugin was selected
Summary:
If the analytics plugin was in the foreground, and messages arrived in quick succession, some messages would not be processed.

Although the code was tested, there were not enough assertions to make sure the loop was correct. coverage !== correctness {emoji:1f605}

This fixes T68101450

Changelog: Fixed regression where analytics messages where lost

Reviewed By: jknoxville

Differential Revision: D21929679

fbshipit-source-id: c9fe2b18a249e40085d99914a809abf14fa7cf8f
2020-06-08 11:57:20 -07:00
Michel Weststrate
0007ef4b27 Disable sourcemaps for emotion to fix chrome Profiler freeze
Summary:
When trying to profile the Electron app, since recently the profiler hangs when trying to start the initializer. Found the following weird message in the console and googled the problem :-P

{F239554230}

Reviewed By: jknoxville

Differential Revision: D21929677

fbshipit-source-id: 7a9f150ebc8df30fa2890c9dbb79c8c144a5feae
2020-06-08 11:57:19 -07:00
Anton Nikolaev
db3f04a2d7 Use the single type representing plugins
Summary: Use interface PluginDetails everywhere where plugins are handled and removed PluginDefinition type which was effectively a subset of PluginDetails

Reviewed By: mweststrate

Differential Revision: D21927456

fbshipit-source-id: 434ebeef955b922cc11757e78fbba8dec05f1060
2020-06-08 08:57:07 -07:00
Anton Nikolaev
9324bef8cc Moved plugin installation utilities to "plugin-lib" module
Summary: Moved plugin installation utilities to "plugin-lib" module. There are no functional changes in this diff, just refactoring so that plugin installation utils can be re-used by different modules.

Reviewed By: passy

Differential Revision: D21927387

fbshipit-source-id: 340516a544f7cfdcc15d94660dcb74a012054531
2020-06-08 08:57:06 -07:00