Summary:
This diff has been automatically generated by the inpage editor.
If you want to update this diff, go through the preview link that would be attached to the test plan.
Please ensure you are editing the same page that was used to create this diff.
Reviewed By: nikoant
Differential Revision: D35679965
fbshipit-source-id: e09fc61be1bbade7dd04286af550a1b454512c42
Summary: Show tab bar in React DevTools to allow switching to Profiler
Reviewed By: nikoant
Differential Revision: D35747309
fbshipit-source-id: ca7e65fdd30261aabc5f05fe10b451c115a92b7f
Summary: Restyle of the page, including changes to spelling, grammar, links, and structure (where relevant).
Reviewed By: nikoant
Differential Revision: D35579752
fbshipit-source-id: c06ac9a812b244a9ace5c829df5c347d450f5e3b
Summary: Restyle of the page, including changes to spelling, grammar, links, and structure (where relevant).
Reviewed By: nikoant
Differential Revision: D35579365
fbshipit-source-id: cb04b5e839b3d4ae74c4a20dd4a2fadd853d4181
Summary: Restyle of the page, including changes to spelling, grammar, links, and structure (where relevant).
Reviewed By: nikoant
Differential Revision: D35581050
fbshipit-source-id: 8ebe9a18e997653c2bb5062150f0de9cf9741116
Summary: Restyle of the page, including changes to spelling, grammar, lins checks, and structure (where relevant).
Reviewed By: jknoxville
Differential Revision: D35578704
fbshipit-source-id: 65a36631af2369e6483db05f139431d043638c65
Summary: Restyle of the page, including changes to spelling, grammar, lins checks, and structure (where relevant).
Reviewed By: nikoant
Differential Revision: D35577068
fbshipit-source-id: 3791e53adb51b36f1dd74688fa341d145c45234f
Summary: Restyle of Flipper docs, including spelling and grammar checks, link checks, and structure (where relevant).
Reviewed By: nikoant
Differential Revision: D35552028
fbshipit-source-id: f7b0079944ff788c0b7a5a13be1585df398cdd3c
Summary:
To roll out Flipper Server for desktop, we need a bundle that comes with all node dependencies pre-installed and a bundled Node runtime. This creates some platform-specific sub-folders in `dist/` with both.
The `--mac`, `--linux`, `--win` options are chosen to be compatible with the main build script. For now, we only build x64 builds for Mac which is also in line with the Desktop build as we don't have signing for the whole bundle.
Reviewed By: lblasa
Differential Revision: D35545492
fbshipit-source-id: cce7165916d91a333f305713b9d6d7b9984984f4
Summary:
This diff ensures that all operations on the socket are put into a serial background queue, including delegate callbacks.
All operations are executed asynchronously except disconnect, which is made synchronous as to guarantee no resources are accessed after the call.
Reviewed By: fabiomassimo
Differential Revision: D35254499
fbshipit-source-id: 33d93926f7bfc8948095c59f12ca31f0a932b8ae
Summary:
To ensure that no deadlocks take place, it is important that there are no re-entrant calls from within the callbacks or event handlers.
For the most part, this was already the case. Event and message handlers run critical sections into a Folly event scheduler.
The only exception was the sendExpectResponse used during the certificate exchange. Once the response was received, the non-secure socket was disconnected.
The solution was to put that operation in the Folly event scheduler as it should've been from the beginning.
changelog: Certificate signing request response to be processed on the right event loop.
Reviewed By: fabiomassimo
Differential Revision: D35548148
fbshipit-source-id: cea2476ad66137f376acda66cdbc27801c0c47e1
Summary:
From a different diff, it was pointed out that calling methods on self are discouraged:
Generally you want to avoid calling methods on self in dealloc because it allows you to accidentally capture references to self in dealloc, which leads to zombies.
In this case, a disconnect effectively invalidates a timer and disconnect the underlying socket. Both take place either way when the members are deallocated too. The only thing is not done is notify the caller via the event handler of a close event.
In our case, the caller actually manually disconnects before deallocating so this is not an issue.
Reviewed By: fabiomassimo
Differential Revision: D35547600
fbshipit-source-id: 9b5b9892b657a69585943613bc81344b38dbef30
Summary:
^
Changelog: Check if there's a process listening at the specified port before attempting to establish a websocket connection on iOS
Reviewed By: fabiomassimo
Differential Revision: D35546817
fbshipit-source-id: 92ccca9afd8bcdc6d79205cc277ac813e0999166
Summary:
As reported in https://fb.workplace.com/groups/flippersupport/permalink/1346149929198995/, data updates would sometimes not render in DataTable. After some debugging, this happens when multiple updates are scheduled with high frequency, and is bug in the internal render scheduler. (it might be that this never triggered before React 18, but it was a lingering bug).
Basically in the following sequence, no second render of the data table would happen:
1. emit update
2. schedule render
3. React renders
4. emit a second update
5. scheduler bails out because update is already scheduled
6. React useEffect will clear out the scheduler state that was causing the render at point 3.
Now the second update never gets rendered out (well, not until something else causes a new render).
The problem here is that the scheduler state should be immediately reset as soon as React starts rendering, so that any new incoming update should trigger a new render, even though useEffect of the first render didn't finish. New flow now becomes:
1. emit update
2. schedule render
3. React renders & clears out scheduler state
4. emit a second update
5. scheduler schedules fresh render
6. etc...
Reviewed By: nikoant
Differential Revision: D35501325
fbshipit-source-id: 8af58c0da7bb024f360b750c856865f220dc6272
Summary:
This had collected a bit of dust and we will need to extend this a little for flipper-server.
- Update deps.
- Migrate away from deprecated clap2 model to derive (it's much shorter now and less imperative).
- ~~Some COW changes on how the progress bar crate handles strings.~~ (Reverted as this causes havvoc in `fbsource//third-party/rust`.)
- Upgraded to 2021 Edition.
Reviewed By: nikoant
Differential Revision: D35433571
fbshipit-source-id: ae0a91558610ae46069a5fc5162b524cde759454
Summary:
This diff has been automatically generated by the inpage editor.
If you want to update this diff, go through the preview link that would be attached to the test plan.
Please ensure you are editing the same page that was used to create this diff.
Reviewed By: passy
Differential Revision: D35362632
fbshipit-source-id: fa10a4757847ebec4697b7f99928f9cc477834dd
Summary: Fix UI freezes on popup opening by upgrading back React app creation from "createRoot" to "ReactDOM.render". These UI freezes started to happen after React upgrade because the issue in integration of Antd with React 18: https://github.com/react-component/trigger/issues/288
Reviewed By: aigoncharov
Differential Revision: D35359129
fbshipit-source-id: eb0ad979443ecf67eb2acc2e219196c9fefcff62
Summary: The linting exception is no longer needed as we have decapitated React DevTools
Reviewed By: nikoant
Differential Revision: D35283282
fbshipit-source-id: 73f4b14dcd35f6d93b464513fd8480bfa8a0168c
Summary:
rename FLEXNetworkLib to SKFLEXNetworkLib so it doesnt clash with Stock FLEX if embedded in the app too
also 'fix' 3 warnings by adding explicit casts
Reviewed By: lblasa
Differential Revision: D35200011
fbshipit-source-id: 82bdecc5076b86958ea0cb80260584c012940045
Summary: Be more aggressive in cleaning up after ourselves. Using a tiny library by Sindre that handles standard exit events, SIGTERM and SIGINT.
Reviewed By: aigoncharov
Differential Revision: D35281772
fbshipit-source-id: a789f90f172b3aa3e187739cf2b7fefa75405891
Summary: lawrencelomax helpfully pointed out that there's a legacy limit for the path length of unix domain sockets. Checking here and falling back to `/tmp` in case we're going over. This could have caused some gnarly support issues, so I'm glad we caught this before it went live.
Reviewed By: aigoncharov
Differential Revision: D35257794
fbshipit-source-id: 68a7b62d6d6863efa4b3ce84d7735b1c1a45a174
Summary: Instead of just deleting, we first check if it's already in use. The behaviour in case it *is* in use, is not great but mirrors what happens when the port is occupied.
Reviewed By: aigoncharov
Differential Revision: D35188965
fbshipit-source-id: 9bb5a7a9bacec6987ea72bbd084e40d5b30f9796
Summary: Open a domain socket by default and proxy all browser requests via TCP to it. That allows us to connect to a running server regardless of its local port.
Reviewed By: aigoncharov
Differential Revision: D35088208
fbshipit-source-id: d167852162e63f68c804c379b4421f5cc0d33df2
Summary:
- Support loading globally installed DevTools
Background:
1. Initially, I wanted to use react-devtools-core as before. react-devtools-core standalone contains quite a few imports of node.js APIs. After [a conversation with Brian](https://fb.workplace.com/groups/react.devtools/permalink/3131548550392044), I pivoted to react-devtools-inline
2. Technical design doc of react-devtools-inline integration: https://docs.google.com/document/d/1STUSUhXzrW_KkvqSu7Ge-rxjVFF7oU3_NbwzimkO_Z4
3. We support usage of globally installed devtools. Code of react-devtools-inline is not ready to be used by the browser as is. We need to bundle it and substitute React and ReactDOM imports with the globals.
4. As we can't pre-compile what users install globally, we need to bundle global devtools on demand,
5. I tried re-using our Metro bundling pipeline initially, but gave up after fighting it for 2 days. Included, `rollup` instead.
6. Size of a `tgz` archive with a plugin is 2.1MB
allow-large-files
Reviewed By: mweststrate
Differential Revision: D34968770
fbshipit-source-id: 352299964ccc195b8677dbda47db84ffaf38737b
Summary:
Changelog: Migrate from react-devtools-core to -react-devtools-inline
Technical design doc: https://docs.google.com/document/d/1STUSUhXzrW_KkvqSu7Ge-rxjVFF7oU3_NbwzimkO_Z4
At this point, React DevTools doe snot support globally installed DevTools. Only the bundled version. The support for the globally installed DevTools comes in the subsequent diffs along with on-the-fly transpilation.
Reviewed By: mweststrate
Differential Revision: D34926472
fbshipit-source-id: fde1d4cf386adfbf8a8581ee5a54e950d2cb34ef
Summary:
flipper-server build fails when a server add-on uses one of the ignored modules.
For instance, React DevTools is goin got use `ws` which has an optional dependency on `utf-8-validate` and `bufferutil`. Even though it is optional, it is still required, and therefore picked up by Metro.
This way it is silently ignored.
Reviewed By: mweststrate
Differential Revision: D34716514
fbshipit-source-id: a9d463d2d5d7c954e35d9a16f3da44ce17615673
Summary: Added a clearer message to the null checks, to give some clue on what goes wrong
Reviewed By: lawrencelomax
Differential Revision: D35246065
fbshipit-source-id: d33a6184bf722a386c2b2dff1afd41db20efe90b
Summary:
Bumps [eslint](https://github.com/eslint/eslint) from 8.11.0 to 8.12.0.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a href="https://github.com/eslint/eslint/releases">eslint's releases</a>.</em></p>
<blockquote>
<h2>v8.12.0</h2>
<h2>Features</h2>
<ul>
<li><a href="685a67a62b"><code>685a67a</code></a> feat: fix logic for top-level <code>this</code> in no-invalid-this and no-eval (<a href="https://github-redirect.dependabot.com/eslint/eslint/issues/15712">#15712</a>) (Milos Djermanovic)</li>
</ul>
<h2>Chores</h2>
<ul>
<li><a href="18f5e05bce"><code>18f5e05</code></a> chore: padding-line-between-statements remove useless <code>additionalItems</code> (<a href="https://github-redirect.dependabot.com/eslint/eslint/issues/15706">#15706</a>) (Martin Sadovy)</li>
</ul>
</blockquote>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a href="https://github.com/eslint/eslint/blob/main/CHANGELOG.md">eslint's changelog</a>.</em></p>
<blockquote>
<p>v8.12.0 - March 25, 2022</p>
<ul>
<li><a href="685a67a62b"><code>685a67a</code></a> feat: fix logic for top-level <code>this</code> in no-invalid-this and no-eval (<a href="https://github-redirect.dependabot.com/eslint/eslint/issues/15712">#15712</a>) (Milos Djermanovic)</li>
<li><a href="18f5e05bce"><code>18f5e05</code></a> chore: padding-line-between-statements remove useless <code>additionalItems</code> (<a href="https://github-redirect.dependabot.com/eslint/eslint/issues/15706">#15706</a>) (Martin Sadovy)</li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a href="8bb527660f"><code>8bb5276</code></a> 8.12.0</li>
<li><a href="db108a829f"><code>db108a8</code></a> Build: changelog update for 8.12.0</li>
<li><a href="685a67a62b"><code>685a67a</code></a> feat: fix logic for top-level <code>this</code> in no-invalid-this and no-eval (<a href="https://github-redirect.dependabot.com/eslint/eslint/issues/15712">#15712</a>)</li>
<li><a href="18f5e05bce"><code>18f5e05</code></a> chore: padding-line-between-statements remove useless <code>additionalItems</code> (<a href="https://github-redirect.dependabot.com/eslint/eslint/issues/15706">#15706</a>)</li>
<li>See full diff in <a href="https://github.com/eslint/eslint/compare/v8.11.0...v8.12.0">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/3582
Reviewed By: passy
Differential Revision: D35211392
Pulled By: mweststrate
fbshipit-source-id: dc3cdd9db37b7f6923fbbfda80ae2975288dfb5c