Commit Graph

586 Commits

Author SHA1 Message Date
generatedunixname89002005306973
fff723d5ef Flipper Release: v0.50.0
Summary: Releasing version 0.50.0

Reviewed By: passy

Differential Revision: D22501533

fbshipit-source-id: 0896efd4eb2b2bb5f557d573526db91dc5dcd1de
2020-07-13 04:15:23 -07:00
Michel Weststrate
d90499be84 Disable electron tests
Summary:
Turns out, we don't have any tests that _actually_ depend on Electron. What is more, the one test suite that was still left was actually failing for a long time, but somehow CI didn't pick and reported that :-P.

Note that I dropped the file `xplat/sonar/scripts/facebook/lego/run-sc-yarn-targets-with-electron.sh` entirely, as it appeared unused

Reviewed By: nikoant

Differential Revision: D22434441

fbshipit-source-id: 34df79a580a64904116ae93069bbc8fafc53d9d0
2020-07-10 04:36:25 -07:00
Michel Weststrate
32933f4bf1 Enabled all unit tests to run locally
Summary: Unit tests with `.electron.tsx` are not run locally, as it is assumed they need Electron (?). However, since FBLogger is stubbed by default, it looks they all are actually runnable locally now.

Reviewed By: jknoxville

Differential Revision: D22431234

fbshipit-source-id: 9376923255bb96e2d7fc3bc8c3ec09962a07739c
2020-07-10 04:36:25 -07:00
dependabot[bot]
6994377c25 Bump query-string from 6.12.0 to 6.13.1 in /desktop (#1347)
Summary:
Bumps [query-string](https://github.com/sindresorhus/query-string) from 6.12.0 to 6.13.1.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a href="https://github.com/sindresorhus/query-string/releases">query-string's releases</a>.</em></p>
<blockquote>
<h2>v6.13.1</h2>
<ul>
<li>Fix sorting existing query params in URL when <code>sort</code> option is false (<a href="https://github-redirect.dependabot.com/sindresorhus/query-string/issues/265">https://github.com/facebook/flipper/issues/265</a>)  549d677</li>
</ul>
<p><a href="https://github.com/sindresorhus/query-string/compare/v6.13.0...v6.13.1">https://github.com/sindresorhus/query-string/compare/v6.13.0...v6.13.1</a></p>
<h2>v6.13.0</h2>
<ul>
<li>Add support for <a href="https://github.com/sindresorhus/query-string#parsefragmentidentifier">parsing/stringifying fragment identifier</a> (<a href="https://github-redirect.dependabot.com/sindresorhus/query-string/issues/222">https://github.com/facebook/flipper/issues/222</a>)  ce06095</li>
</ul>
<p><a href="https://github.com/sindresorhus/query-string/compare/v6.12.1...v6.13.0">https://github.com/sindresorhus/query-string/compare/v6.12.1...v6.13.0</a></p>
<h2>v6.12.1</h2>
<ul>
<li>Fix value being decoded twice with <code>arrayFormat</code> option set to <code>separator</code> (<a href="https://github-redirect.dependabot.com/sindresorhus/query-string/issues/243">https://github.com/facebook/flipper/issues/243</a>)  3b4c295</li>
</ul>
<p><a href="https://github.com/sindresorhus/query-string/compare/v6.12.0...v6.12.1">https://github.com/sindresorhus/query-string/compare/v6.12.0...v6.12.1</a></p>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a href="f38dab590a"><code>f38dab5</code></a> 6.13.1</li>
<li><a href="549d6777e4"><code>549d677</code></a> Fix sorting existing query params in URL when <code>sort</code> option is false (<a href="https://github-redirect.dependabot.com/sindresorhus/query-string/issues/265">https://github.com/facebook/flipper/issues/265</a>)</li>
<li><a href="d3da28bedb"><code>d3da28b</code></a> 6.13.0</li>
<li><a href="ce0609566f"><code>ce06095</code></a> Add support for parsing/stringifying fragment identifier (<a href="https://github-redirect.dependabot.com/sindresorhus/query-string/issues/222">https://github.com/facebook/flipper/issues/222</a>)</li>
<li><a href="1ad8bbd5a2"><code>1ad8bbd</code></a> Meta tweaks</li>
<li><a href="8ee6dbf8df"><code>8ee6dbf</code></a> Meta tweaks</li>
<li><a href="5d19c56970"><code>5d19c56</code></a> Add benchmarks (<a href="https://github-redirect.dependabot.com/sindresorhus/query-string/issues/254">https://github.com/facebook/flipper/issues/254</a>)</li>
<li><a href="1e70bf30ba"><code>1e70bf3</code></a> Add size badge</li>
<li><a href="3cd5d4d1cc"><code>3cd5d4d</code></a> 6.12.1</li>
<li><a href="3b4c2959c0"><code>3b4c295</code></a> Fix value being decoded twice with <code>arrayFormat</code> option set to <code>separator</code> (#...</li>
<li>See full diff in <a href="https://github.com/sindresorhus/query-string/compare/v6.12.0...v6.13.1">compare view</a></li>
</ul>
</details>
<br />

[![Dependabot compatibility score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=query-string&package-manager=npm_and_yarn&previous-version=6.12.0&new-version=6.13.1)](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
- `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)

</details>

Pull Request resolved: https://github.com/facebook/flipper/pull/1347

Reviewed By: nikoant

Differential Revision: D22432104

Pulled By: passy

fbshipit-source-id: 5d20b9f1046fe7b4fb00c7f01994393d06c64162
2020-07-10 02:43:53 -07:00
Michel Weststrate
0038c9c9bf Standardize Chrome to use Layout component
Summary:
Fixes a potential issue where double scrollbars could appear or entire main contents would be scrollable (when a plugin has a fixed height > window height) as maincontents was made scrollable as well in D22411617 (2ce65c1b3c)

Anyway this is nice clean up that makes our chrome layout more understandable (imho). The PluginContents wrapper is still very sad (used by ReactDevTools and Hermes debugger), but can hopefully be addressed with the sandy cleanup in the future

Reviewed By: nikoant

Differential Revision: D22431807

fbshipit-source-id: 113e8441e0c43a8b764f5cf27615ab93627c3197
2020-07-08 10:00:36 -07:00
Paco Estevez Garcia
29b6be23e8 Remove unused prop
Summary:
While reading through the Inspector I found this prop passed down and not used anywhere

printer_shredder

Reviewed By: Katalune

Differential Revision: D22431895

fbshipit-source-id: 6cbc97b3faec26349a1ad900ffa455e95f53bb2b
2020-07-08 07:13:38 -07:00
Pritesh Nandgaonkar
2ce65c1b3c Solve the issue where the bottom view of Sidebar was pushed down
Summary: This fixes the issue raised [here](https://fb.workplace.com/groups/flippersupport/permalink/911822855965040/).

Reviewed By: nikoant

Differential Revision: D22411617

fbshipit-source-id: ca1078bf418532863823fb3748e9edea4526cbc2
2020-07-07 08:41:58 -07:00
dependabot[bot]
e2b2d13a41 Bump @algolia/client-search from 4.1.0 to 4.3.0 in /desktop (#1331)
Summary:
Bumps [algolia/client-search](https://github.com/algolia/algoliasearch-client-javascript) from 4.1.0 to 4.3.0.
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a href="https://github.com/algolia/algoliasearch-client-javascript/blob/master/CHANGELOG.md">algolia/client-search's changelog</a>.</em></p>
<blockquote>
<h2><a href="https://github.com/algolia/algoliasearch-client-javascript/compare/4.2.0...4.3.0">v4.3.0</a></h2>
<h2>Added</h2>
<ul>
<li><code>naturalLanguages</code> option type (<a href="https://github-redirect.dependabot.com/algolia/algoliasearch-client-javascript/pull/1147">https://github.com/facebook/flipper/issues/1147</a>)</li>
<li><code>shouldStop</code> option to stop browse (<a href="https://github-redirect.dependabot.com/algolia/algoliasearch-client-javascript/pull/1029">https://github.com/facebook/flipper/issues/1029</a>)</li>
<li><code>inner_queries</code> property to <code>getLogs</code> response (<a href="https://github-redirect.dependabot.com/algolia/algoliasearch-client-javascript/pull/1109">https://github.com/facebook/flipper/issues/1109</a>, <a href="https://github-redirect.dependabot.com/algolia/algoliasearch-client-javascript/pull/1166">https://github.com/facebook/flipper/issues/1166</a>)</li>
<li><code>enablePersonalization</code> option to type <code>Settings</code> (<a href="https://github-redirect.dependabot.com/algolia/algoliasearch-client-javascript/pull/1151">https://github.com/facebook/flipper/issues/1151</a>)</li>
</ul>
<h2>Fixed</h2>
<ul>
<li>additional <code>clear</code>, <code>delete</code> &amp; <code>deleteObject</code> types for the <code>.batch</code> method (<a href="https://github-redirect.dependabot.com/algolia/algoliasearch-client-javascript/pull/1149">https://github.com/facebook/flipper/issues/1149</a>)</li>
<li>unhandled promise issue while using while using <code>accountCopyIndex</code> (<a href="https://github-redirect.dependabot.com/algolia/algoliasearch-client-javascript/pull/1154">https://github.com/facebook/flipper/issues/1154</a>)</li>
<li>node requester unicode characters being corrupted on large responses (<a href="https://github-redirect.dependabot.com/algolia/algoliasearch-client-javascript/pull/1164">https://github.com/facebook/flipper/issues/1164</a>)</li>
</ul>
<h2><a href="https://github.com/algolia/algoliasearch-client-javascript/compare/4.1.0...4.2.0">v4.2.0</a></h2>
<h3>Added</h3>
<ul>
<li>Improved <code>acl</code> property type in <code>GetApiKeyResponse</code> and <code>addApiKey</code> function param (<a href="https://github-redirect.dependabot.com/algolia/algoliasearch-client-javascript/pull/1126">https://github.com/facebook/flipper/issues/1126</a>)</li>
<li>Improved <code>AnalyticsClientOptions</code> property type region (<a href="https://github-redirect.dependabot.com/algolia/algoliasearch-client-javascript/pull/1085">https://github.com/facebook/flipper/issues/1085</a>)</li>
<li>Responses types can now be mutated (<a href="https://github-redirect.dependabot.com/algolia/algoliasearch-client-javascript/pull/1068">https://github.com/facebook/flipper/issues/1068</a>)</li>
</ul>
<h3>Fixed</h3>
<ul>
<li>Type <code>Log</code> (<a href="https://github-redirect.dependabot.com/algolia/algoliasearch-client-javascript/pull/1139">https://github.com/facebook/flipper/issues/1139</a>)</li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a href="3991e821b4"><code>3991e82</code></a> release: 4.3.0</li>
<li><a href="2cffc9a4e3"><code>2cffc9a</code></a> docs: update changelog</li>
<li><a href="060c290b30"><code>060c290</code></a> docs: update changelog</li>
<li><a href="399d3f1a7f"><code>399d3f1</code></a> fix(requester-node-http): fix handling chunked responses fix <a href="https://github-redirect.dependabot.com/algolia/algoliasearch-client-javascript/issues/1161">https://github.com/facebook/flipper/issues/1161</a> (<a href="https://github-redirect.dependabot.com/algolia/algoliasearch-client-javascript/issues/1164">https://github.com/facebook/flipper/issues/1164</a>)</li>
<li><a href="a91bf8e611"><code>a91bf8e</code></a> docs: update changelog</li>
<li><a href="648b06f1df"><code>648b06f</code></a> fix(log-type-inner-queries): apply snake_case (<a href="https://github-redirect.dependabot.com/algolia/algoliasearch-client-javascript/issues/1166">https://github.com/facebook/flipper/issues/1166</a>)</li>
<li><a href="a8bb68a969"><code>a8bb68a</code></a> chore(tests): tests against node 14 (<a href="https://github-redirect.dependabot.com/algolia/algoliasearch-client-javascript/issues/1165">https://github.com/facebook/flipper/issues/1165</a>)</li>
<li><a href="3c0f426ef1"><code>3c0f426</code></a> docs: updates changelog</li>
<li><a href="4df09f0b42"><code>4df09f0</code></a> feat(settings-personalization): add enablePersonalization type (<a href="https://github-redirect.dependabot.com/algolia/algoliasearch-client-javascript/issues/1151">https://github.com/facebook/flipper/issues/1151</a>)</li>
<li><a href="c176129e87"><code>c176129</code></a> docs: update changelog</li>
<li>Additional commits viewable in <a href="https://github.com/algolia/algoliasearch-client-javascript/compare/4.1.0...4.3.0">compare view</a></li>
</ul>
</details>
<details>
<summary>Maintainer changes</summary>
<p>This version was pushed to npm by <a href="https://www.npmjs.com/~yannickcr">yannickcr</a>, a new releaser for algolia/client-search since your current version.</p>
</details>
<br />

[![Dependabot compatibility score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=@algolia/client-search&package-manager=npm_and_yarn&previous-version=4.1.0&new-version=4.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
- `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)

</details>

Pull Request resolved: https://github.com/facebook/flipper/pull/1331

Reviewed By: mweststrate

Differential Revision: D22409643

Pulled By: passy

fbshipit-source-id: 0503c371c3edee83f47d8a548426d6c6e1556348
2020-07-07 04:42:14 -07:00
Luc Oth
7c3d264803 ManagedTable: pass an innerRef to bypass debounceRender
Summary: The ref would point to the DebouncedComponent instead of the ManagedTable passing an innerRef and handling binding manually.

Reviewed By: mweststrate

Differential Revision: D22374912

fbshipit-source-id: d404931405939ef8bfbde31f9aec7d531a3b62e3
2020-07-03 09:34:43 -07:00
Anton Nikolaev
70b87b70c7 Fix standalone package build for unity plugins
Summary: Fixed error on building standalone packages for "unity" apps. The error was because "immer" imports were not transformed to use "immer" from Flipper bundle.

Reviewed By: passy

Differential Revision: D22357571

fbshipit-source-id: 590321f36208c9ed02d56d2c0c085c7cd1878018
2020-07-02 10:20:36 -07:00
Michel Weststrate
581ddafd18 Fixed re-enabling a still selected plugin
Summary: While testing manually discovered the sandy plugin infra din't cover the case that a plugin can be selected but not enabled at the same time. Added test and fixed that.

Reviewed By: nikoant

Differential Revision: D22308597

fbshipit-source-id: 6cef2b543013ee81cee449396d523dd9a657ad1c
2020-07-01 09:12:37 -07:00
Michel Weststrate
159c0deaf1 Added usePlugin hooks
Summary:
`usePlugin(pluginFactory)` returns the current plugin instance's api that was exposed by the plugin directory.

Passing `pluginFactory` is technically strictly not needed, but having the user pass it, we can make sure it is strongly typed

Reviewed By: nikoant

Differential Revision: D22286293

fbshipit-source-id: 4268b6849b8cd3d524103de7eadbd6c0a65c7a61
2020-07-01 09:12:37 -07:00
Michel Weststrate
952e929699 Fix disabling a plugin nog clearing the message queue
Summary:
While writing unit tests discovered a bug that disabling a plugin doesn't guarantee cleaning the messagequeues (both the buffer in client and the messagequeue reducer).

Fixed that. That was thanks to @#%@#$@#%@ Redux a lot harder than it should be; as 'STAR_PLUGIN' reasons about a plugin + app name, while the message queue reducer would need to deduct the plugin keys from that, but it can't because that mapping is stored in the connections reducers. So I moved the `STAR_PLUGIN` action handling to the root reducer, sot that it can reason about the state of multiple reducers, which looked like the least of all evils. For more ranting about that and possible alternative solutions: https://twitter.com/mweststrate/status/1277556309706117122

Reviewed By: nikoant

Differential Revision: D22284043

fbshipit-source-id: 35d0a8ba3a21a5959d2bb6ef17da3ff5077f48fd
2020-07-01 09:12:36 -07:00
Michel Weststrate
bb0c8e0df0 Support receiving messages in Sandy plugins
Summary: This diffs adds the capability to listen to messages in Sandy plugins. Although API wise it looks more like the old `this.subscribe`, semantically it behaves like the `persistedStateReducer`; messages are queued if the plugin is enabled but not active.

Reviewed By: nikoant

Differential Revision: D22282711

fbshipit-source-id: 885faa702fe779ac8d593c1d224b2be13e688d47
2020-07-01 09:12:36 -07:00
Michel Weststrate
6c79408b0f Move plugin stats to their own file
Summary: Really nothing interesting to see here , just moved pluginStats out of messageQueue, as it started there and kept growing

Reviewed By: nikoant

Differential Revision: D22257318

fbshipit-source-id: 26be7efb4629fcef1b14de96a2b60f17f7d76785
2020-07-01 09:12:36 -07:00
Michel Weststrate
ec85dd5b01 Allow plugins to send messages
Summary: Sandy plugins can now send messages to plugins. The methods and params are strongly typed in implementation and unit tests, based on the <Methods> generic of FlipperClient.

Reviewed By: nikoant

Differential Revision: D22256972

fbshipit-source-id: 549523a402949b3eb6bb4b4ca160dedb5c5e722d
2020-07-01 09:12:36 -07:00
Michel Weststrate
df6a8cd031 Provide initial plugin test infra for plugin devs
Summary:
This sets up the initial infra that is to be used by plugin devs to test plugins.

There is not much yet to see, as there is no state or message sending yet. But at least the life cycle of plugins can be test, things are strongly typed and everything is in the place where it should be :)

N.b. the import difference with these utils and the createFlipperMock utilities in Flipper are

1. this testing infra is entirely inside flipper-plugin package, so that plugin devs don't need flipper as a dependency
2. this testing infra doesn't provide abstractions for plugin / device / client switching; it tests plugins purely in isolation of the rest of the world (except for firing `onConnect` / `onDisconnect` which is normally the effect of switching plugins)

Reviewed By: nikoant

Differential Revision: D22255262

fbshipit-source-id: b94ccbab720d2b49428a646aed3c55af71a5bc80
2020-07-01 09:12:36 -07:00
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