Summary:
Usage tracking comes from Electron's `main.tsx`. There's a timer that dispatches an IPC event every 60 seconds.
This is all good for Electron builds.
For non-electron builds, there's no such thing as IPC.
So, react to the IPC event whenever necessary but also handle the interval internally such that usage is tracked independently of explicit callers.
Reviewed By: antonk52
Differential Revision: D47053404
fbshipit-source-id: f17694e65eed18678b45a2e815813bafab69c3f1
Summary: A transition period of 2 years should be enough.
Reviewed By: LukeDefeo
Differential Revision: D47053216
fbshipit-source-id: c9f9bfbff82a05942d408b325088095a6069cced
Summary:
Currently we surface the difference in plugin type to the user. However, it doesn't make much sence to the user as they primarily care about the plugins being enabled or not. Thus merging device plugins (always enabled) and enabled plugins sections.
I wasn't sure if I should also merge the metro plugins section due to some metro specific hints. So I left it as is.
Reviewed By: lblasa
Differential Revision: D46971125
fbshipit-source-id: 0bb667c3b2f5576e5704dae29b03cfd631c38ad2
Summary:
Should be available now with
```
getFlipperLib().settings().isDarkMode
```
Differential Revision: D46685851
fbshipit-source-id: 0777437b7ca06051cc3fd4dc1b794242f453f2b5
Summary: Since ~couple of days to last week we cannot download image assets anymore from facebook.com during build, which is worked around in previous diff. This diff fixes it also in the development environment (`yarn start`)
Reviewed By: lblasa
Differential Revision: D46556075
fbshipit-source-id: ee5d912fb06d1632c41ff6d536b64a55608f5848
Summary: This diff follows up on the previous one, by trying a larger icon size if the original requested icon size was missing.
Reviewed By: lblasa
Differential Revision: D46556076
fbshipit-source-id: 4a078088aa27390f247e39afeda4b1df261d8b30
Summary:
Simplifies medium usage. Clients report this value as an integer. Internally, we transform this integer as type (a set of valid strings).
Instead of transform this value in different places, do it once when the client query is received.
Reviewed By: antonk52
Differential Revision: D46358024
fbshipit-source-id: ecd2b6c6ccbe7c38787a89d4e2f81930c7b91864
Summary:
^
Basically, update Jest and fix any raised issues. Mainly:
- Update necessary dependencies
- Update snapshots
- `useFakeTimers` caused a few issues which meant that the way we hook into the performance object had to be tweaked. The main code change is: `//fbsource/xplat/sonar/desktop/scripts/jest-setup-after.tsx`
- `mocked` -> `jest.mocked`
Changelog: Update Jest to v29.5.1
Reviewed By: antonk52
Differential Revision: D46319818
fbshipit-source-id: d218ca8f7e43abac6b00844953ddeb7f4e1010a2
Summary:
Bumps [deep-equal](https://github.com/inspect-js/node-deep-equal) from 2.0.5 to 2.2.1.
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a href="https://github.com/inspect-js/node-deep-equal/blob/master/CHANGELOG.md">deep-equal's changelog</a>.</em></p>
<blockquote>
<h2><a href="https://github.com/inspect-js/node-deep-equal/compare/v2.2.0...v2.2.1">v2.2.1</a> - 2023-04-27</h2>
<h3>Commits</h3>
<ul>
<li>[Tests] add passing tests covering object key ordering <a href="51c9ff6b4c"><code>51c9ff6</code></a></li>
<li>[Refactor] use <code>array-buffer-byte-length</code> <a href="f47822cf0c"><code>f47822c</code></a></li>
<li>[Deps] update <code>is-array-buffer</code>, <code>regexp.prototype.flags</code> <a href="160d851333"><code>160d851</code></a></li>
<li>[Deps] update <code>es-get-iterator</code>, <code>get-intrinsic</code> <a href="2e08e956a4"><code>2e08e95</code></a></li>
<li>[Dev Deps] update <code>object.getownpropertydescriptors</code> <a href="63e9ab7450"><code>63e9ab7</code></a></li>
<li>[Dev Deps] update <code>tape</code> <a href="c8db964f60"><code>c8db964</code></a></li>
</ul>
<h2><a href="https://github.com/inspect-js/node-deep-equal/compare/v2.1.0...v2.2.0">v2.2.0</a> - 2023-01-05</h2>
<h3>Commits</h3>
<ul>
<li>[New] add support for <code>SharedArrayBuffer</code> <a href="0ef51c79b7"><code>0ef51c7</code></a></li>
<li>[Refactor] use <code>is-array-buffer</code> package <a href="0360ee1f1b"><code>0360ee1</code></a></li>
<li>[Fix] <code>whichTypedArray</code> can return false in both cases <a href="df3e3c4e30"><code>df3e3c4</code></a></li>
<li>[Dev Deps] update <code>aud</code>, <code>object.getownpropertydescriptors</code> <a href="6d62ea4f2b"><code>6d62ea4</code></a></li>
<li>[Dev Deps] update <code>ljharb/eslint-config</code> <a href="15aab59d64"><code>15aab59</code></a></li>
<li>[Deps] update <code>which-typed-array</code> <a href="8dfce27f33"><code>8dfce27</code></a></li>
<li>[eslint] remove <code>.eslintignore</code> <a href="af46773b28"><code>af46773</code></a></li>
</ul>
<h2><a href="https://github.com/inspect-js/node-deep-equal/compare/v2.0.5...v2.1.0">v2.1.0</a> - 2022-11-02</h2>
<h3>Fixed</h3>
<ul>
<li>[New] add support for <code>ArrayBuffer</code> <a href="https://redirect.github.com/inspect-js/node-deep-equal/issues/94"><code>[https://github.com/facebook/flipper/issues/94](https://github.com/inspect-js/node-deep-equal/issues/94)</code></a></li>
</ul>
<h3>Commits</h3>
<ul>
<li>[actions] reuse common workflows <a href="12de2873de"><code>12de287</code></a></li>
<li>[actions] use <code>node/install</code> instead of <code>node/run</code>; use <code>codecov</code> action <a href="ec248b96f4"><code>ec248b9</code></a></li>
<li>[Tests] run assert tests on a dynamic matrix <a href="695aebd509"><code>695aebd</code></a></li>
<li>[readme] add badges <a href="492e159158"><code>492e159</code></a></li>
<li>[Test] ArrayBuffers in node < 0.12 have a nonconfigurable own <code>byteLength</code> property <a href="40f4b87196"><code>40f4b87</code></a></li>
<li>[meta] use <code>npmignore</code> to autogenerate an npmignore file <a href="2627269314"><code>2627269</code></a></li>
<li>[Dev Deps] update <code>eslint</code>, <code>ljharb/eslint-config</code>, <code>safe-publish-latest</code>, <code>tape</code> <a href="7a05bb7482"><code>7a05bb7</code></a></li>
<li>[Deps] update <code>call-bind</code>, <code>es-get-iterator</code>, <code>get-intrinsic</code>, <code>is-arguments</code>, <code>is-regex</code>, <code>regexp.prototype.flags</code>, <code>side-channel</code>, <code>which-boxed-primitive</code>, <code>which-typed-array</code> <a href="c0844e629b"><code>c0844e6</code></a></li>
<li>[actions] update codecov uploader <a href="b1b0552fe3"><code>b1b0552</code></a></li>
<li>[Dev Deps] update <code>eslint</code>, <code>ljharb/eslint-config</code>, <code>aud</code>, <code>auto-changelog</code>, <code>has-symbols</code>, <code>object.getownpropertydescriptors</code>, <code>tape</code> <a href="9a1ccf5285"><code>9a1ccf5</code></a></li>
<li>[meta] do not publish github action workflow files <a href="2d63384d66"><code>2d63384</code></a></li>
<li>[actions] update rebase action to use reusable workflow <a href="69d21f55af"><code>69d21f5</code></a></li>
<li>[Dev Deps] update <code>eslint</code>, <code>ljharb/eslint-config</code>, <code>aud</code>, <code>has-symbols</code>, <code>object.getownpropertydescriptors</code>, <code>tape</code> <a href="297aae88f6"><code>297aae8</code></a></li>
<li>[Tests] add tests for regexes with the same source but different flags <a href="29c8a0da09"><code>29c8a0d</code></a></li>
<li>[Dev Deps] update <code>eslint</code>, <code>ljharb/eslint-config</code> <a href="9e64ec93a8"><code>9e64ec9</code></a></li>
<li>[Deps] update <code>is-arguments</code>, <code>is-date-object</code>, <code>is-regex</code>, <code>which-typed-array</code> <a href="edfb752810"><code>edfb752</code></a></li>
<li>[Dev Deps] update <code>eslint</code>, <code>ljharb/eslint-config</code>, <code>auto-changelog</code>, <code>tape</code> <a href="7b5f7a348b"><code>7b5f7a3</code></a></li>
<li>[Dev Deps] update <code>eslint</code>, <code>ljharb/eslint-config</code>, <code>has-typed-arrays</code>, <code>tape</code> <a href="e328a237ba"><code>e328a23</code></a></li>
<li>[Deps] update <code>get-intrinsic</code>, <code>regexp.prototype.flags</code>, <code>which-typed-array</code> <a href="29123a7185"><code>29123a7</code></a></li>
</ul>
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a href="6ea6b8d296"><code>6ea6b8d</code></a> v2.2.1</li>
<li><a href="f47822cf0c"><code>f47822c</code></a> [Refactor] use <code>array-buffer-byte-length</code></li>
<li><a href="160d851333"><code>160d851</code></a> [Deps] update <code>is-array-buffer</code>, <code>regexp.prototype.flags</code></li>
<li><a href="63e9ab7450"><code>63e9ab7</code></a> [Dev Deps] update <code>object.getownpropertydescriptors</code></li>
<li><a href="2e08e956a4"><code>2e08e95</code></a> [Deps] update <code>es-get-iterator</code>, <code>get-intrinsic</code></li>
<li><a href="c8db964f60"><code>c8db964</code></a> [Dev Deps] update <code>tape</code></li>
<li><a href="51c9ff6b4c"><code>51c9ff6</code></a> [Tests] add passing tests covering object key ordering</li>
<li><a href="b9d9e54c27"><code>b9d9e54</code></a> v2.2.0</li>
<li><a href="0ef51c79b7"><code>0ef51c7</code></a> [New] add support for <code>SharedArrayBuffer</code></li>
<li><a href="0360ee1f1b"><code>0360ee1</code></a> [Refactor] use <code>is-array-buffer</code> package</li>
<li>Additional commits viewable in <a href="https://github.com/inspect-js/node-deep-equal/compare/v2.0.5...v2.2.1">compare view</a></li>
</ul>
</details>
<br />
[](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)
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/4729
Reviewed By: passy
Differential Revision: D46016549
Pulled By: ivanmisuno
fbshipit-source-id: bbce2af026fba2c5d7622c4593b241155cc6e82e
Summary:
I had wrongly assumed the display mode was standalone for Electron, but it turns out that is not the case.
So, explicitly prevent showing the wizard in Electron builds.
Reviewed By: antonk52
Differential Revision: D45983295
fbshipit-source-id: 0bd770d28c0e52a7417789751ac78c5f84165d86
Summary: Get some metrics from the PWA installation wizard.
Reviewed By: antonk52
Differential Revision: D45863352
fbshipit-source-id: 1cf8912a47c749b3b2c2e573796ee1935ea172c9
Summary:
Setting the background to red for error logs has a lot of implications for all text colouring inside of its container.
Instead, set the error border to red, which gives a clear error indication whilst making things easier to read.
changelog: Improve console error logs readability
Reviewed By: mweststrate
Differential Revision: D45861604
fbshipit-source-id: 51f557451ac16269b69ff830a26328552e134ee5
Summary: Resize oberserver limit exceeded appears to be a benign error that we can safely ignore, added ability to change log level. Given we report errors to our user logs, fb log view and console the console log patching has been centralised and now logs are pushed to whatever destinations we have.
Reviewed By: lblasa
Differential Revision: D44666836
fbshipit-source-id: e028dbc52b00947097833f9f3619189226247e1d
Summary: Requested by antonk52 and MSYS team
Reviewed By: passy
Differential Revision: D44662243
fbshipit-source-id: 2bace476c4e79b6a05bfb89ddc3e6acb437c6c3b
Summary: It makes little sense to hide this info from developers. It was also requested by antonk52
Reviewed By: LukeDefeo
Differential Revision: D44631235
fbshipit-source-id: 1756c5ca2a95b2f815f8c4336621d3c057b704f2
Summary: On downloading the new flipper update some of the older plugins which are on a different release cycle may try to call getUser which was removed in this stack in favour of getCached user and fetchUser, adding this back temporarily so those calls dont fail. This can be removed down the road once those plugins have soaked into the user base
Reviewed By: ivanmisuno, aigoncharov
Differential Revision: D44541277
fbshipit-source-id: 95e67d5ba11bbc26590d2789127cbf6a68c54f16
Summary: This is an edge case where if we make a intern call to fetch user with an invalid token we would imply that the token may have expired. Since we already have a error message in the sign in sheet we dont show the notification
Reviewed By: aigoncharov
Differential Revision: D44502480
fbshipit-source-id: 531df6db28bc2a6f36ffcf0a3903ee0e8e40be0f
Summary:
This command is never actually dispatched so removing to avoid future confusion.
When new plugins are downloaded a check is done here https://fburl.com/code/e3zedljb to see if pluginIsDisabledForAllConnectedClients, if so, load command is queued, which internally calls update (which resets state)
If the plugin is not disabled then a message appears asking user to manually reload.
Reviewed By: aigoncharov
Differential Revision: D44502476
fbshipit-source-id: b796b77f843218c07ee612d9f45cacba073362d3
Summary: The source of truth for logging in is the atom, the userprofile is a side effect and is cached so calling these actions login/logout is very confusing, especially considering those functions exist elsewhere that manage the atoms
Reviewed By: aigoncharov
Differential Revision: D44502481
fbshipit-source-id: 77080cc02134684a58f52fcad74041b4508a22f0
Summary:
This diff introduces a few changes:
The login sheet is no longer closable via the x or clicking outside the modal, the cancel button is removed
On startup we check if we have a toke and throw up the sheet
if logout occurs for any reason we throw up the sheet
renamed write_keychain to login, to be consstent with the logout method. It does more than write to key chain since it manages the logged in atom also
Reviewed By: aigoncharov
Differential Revision: D44502483
fbshipit-source-id: 1d91d4eaae65ca523a08e205d1ad730d4d4d090f
Summary: There were redundant places we were cleaning up and logging out, now all syncronisation between the atom world and everything else is done via the atom subscription.
Reviewed By: aigoncharov
Differential Revision: D44463888
fbshipit-source-id: 9fc2af64b1e0667dd852096557107a48f2fa924c
Summary: Indicate intern connection state via an icon, now that we are polling when offline this icon automatically goes away one we reconnect
Reviewed By: aigoncharov
Differential Revision: D44502479
fbshipit-source-id: fb411940f1e4cad50539fe08df6d6194b176404a
Summary:
Logged in state now means that we have a valid token. On startup we try to retrieve a token, if its there then we are logged in, if we remove the tokem, due to explicit logout, or if its expired we are logged out.
Connected is more dynamic, it means we can actually hit intern with a sucessful response. It implicitly requires a token / being logged in
Reviewed By: aigoncharov
Differential Revision: D44502482
fbshipit-source-id: e3077101766cba5128a61d62be3bbd1ca1f00b4f
Summary:
Previously the left rail state was decided by prescense of user profile but we are moving to logged in state being based on the atom.
As a result we need to cache the user profile so we have something to display when user not on vpn on startup
Reviewed By: aigoncharov
Differential Revision: D44502477
fbshipit-source-id: 11462d24c773d6d364e844b4f606e124e5278348
Summary:
Stacktrace component was not properly displaying on Light/Dark mode as it was using colours not from the theme.
This change addresses that.
Reviewed By: ivanmisuno
Differential Revision: D44537750
fbshipit-source-id: 1d95313bfc9b5ef386864fa230348b76dce6d648
Summary: See https://fb.workplace.com/groups/flippersupport/permalink/1586389021841750/. Flipper suggests that not connecting to VPN is the problem, while the problem can also not being logged in.
Reviewed By: antonk52
Differential Revision: D44164192
fbshipit-source-id: 993d2a4bdc6a9cb0c45f35856b83449cea294d45
Summary:
https://pxl.cl/2tKXq
It was reported the feedback prompt title was unreadable.
Reviewed By: mweststrate
Differential Revision: D43533800
fbshipit-source-id: f756a9822c479105dae890159518c05c99405fb7
Summary:
Bumps [react-virtualized-auto-sizer](https://github.com/bvaughn/react-virtualized-auto-sizer) from 1.0.6 to 1.0.7.
<details>
<summary>Commits</summary>
<ul>
<li>See full diff in <a href="https://github.com/bvaughn/react-virtualized-auto-sizer/commits">compare view</a></li>
</ul>
</details>
<br />
[](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)
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/4520
Reviewed By: mweststrate
Differential Revision: D43305179
Pulled By: ivanmisuno
fbshipit-source-id: fb1a6a02141f1355acf3bae8e78702daec9b4d7b
Summary:
Bumps [js-base64](https://github.com/dankogai/js-base64) from 3.7.4 to 3.7.5.
<details>
<summary>Commits</summary>
<ul>
<li><a href="7e790b799e"><code>7e790b7</code></a> version 3.7.5</li>
<li><a href="f729053682"><code>f729053</code></a> Merge pull request <a href="https://github-redirect.dependabot.com/dankogai/js-base64/issues/167">https://github.com/facebook/flipper/issues/167</a> from ctomacheski/main</li>
<li><a href="a9a994f367"><code>a9a994f</code></a> improve performance by stop using the mapFn param on Uint8Array.from constructor</li>
<li>See full diff in <a href="https://github.com/dankogai/js-base64/compare/3.7.4...3.7.5">compare view</a></li>
</ul>
</details>
<br />
[](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)
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/4519
Reviewed By: mweststrate
Differential Revision: D43305193
Pulled By: ivanmisuno
fbshipit-source-id: e10eb134c079951e325c1f4d627eb1e60510c12d
Summary: Plugin download failure is typical a transient error, no need to trigger monitoring for that
Reviewed By: ivanmisuno
Differential Revision: D43118116
fbshipit-source-id: 0cd0f87f0ed6123adcba28139308ecea92b1b508
Summary:
Tasks like T143443148 pop up frequently and are inactionable. This is usually due to device flakiness, storage being full, incompatibility or configuration problems.
Start and stop were also copy-pasted to make matters worse.
Reviewed By: ivanmisuno
Differential Revision: D42800489
fbshipit-source-id: 11caaa4133e4fa1d773364a6ba4e5f5bb0d2f2ce
Summary: Combining a bunch of individual tasks for dep upgrades into one diff.
Reviewed By: ivanmisuno
Differential Revision: D42706074
fbshipit-source-id: 054b2545ad1295699f47f4c6eb5065b7b9a1d6a0
Summary:
Followup of D39772453 (2437aeb3e9)
Fixes https://fb.workplace.com/groups/flippersupport/permalink/1518236858656967/
1. Stop using clientWidth and offsetWidth because they have rounding errors
2. Since step 1 did not resolve the issue entirely (for some weird reason I do not really have the capacity now to investigate - my bet it is a rounding error when you sum up doubles) set offset of the table to "scroll" instead of "auto". As a result, it starts rendering space for the scrollbars all the time, but since Flipper is a dev tool it should be fine
Reviewed By: antonk52
Differential Revision: D41839402
fbshipit-source-id: cf50eb1600b692d3970003fd1b45b953ee45e3df
Summary:
In our organization, Flipper is distributed in a version controlled way. As a result, we do not want users to manually update or receive prompts to update when a new version is available. There is already a `--updater` flag in the command line arguments for flipper.exe, but it isn't piped through. This change pipes it through and disables all update related UI when `--no-updater` is passed in.
## Changelog
Support --updater and --no-updater options for flipper.exe
Pull Request resolved: https://github.com/facebook/flipper/pull/4277
Test Plan: Ran `yarn build --win` in flipper/desktop, and launched flipper.exe from flipper/dist/win-unpacked with the `--updater`, `--no-updater` and no flags and ensured the proper behavior was observed (update UI shows by default or when `--updater` is specified, and doesn't show when `--no-updater` is specified).
Reviewed By: passy
Differential Revision: D41298321
Pulled By: mweststrate
fbshipit-source-id: 5ddfede2700954f0fdd6a111b20d0836fab25565
Summary:
Flipper plugins fail when importing css from third-party dependencies. This diff tries to fix that.
Effectively, the plugin can import the css and export it when is bundled.
When we load the plugin, we check if there's a css file for it. If there's one, we return it and try to use it.
Reviewed By: aigoncharov
Differential Revision: D40758178
fbshipit-source-id: e53afffcc481504905d5eeb1aea1f9114ee2a86b