Summary:
This bundles up the Flipper Server in a Mac App Bundle which is identically in shape to a regular Desktop bundle. That means we can swap them out transparently without having to keep the layout in sync with Flipper Launcher.
It bundles nodeJS binary which we can later also provide for aarch64.
Reviewed By: aigoncharov
Differential Revision: D36140809
fbshipit-source-id: fb3410626ab172ce0da48f1a4a1489da68450369
Summary: Restyle of the page, including changes to spelling, grammar, links, and structure (where relevant).
Reviewed By: mweststrate
Differential Revision: D36197861
fbshipit-source-id: b73787f04892d3f76938929ef84943f2031657e1
Summary: Restyle of the page, including changes to spelling, grammar, links, and structure (where relevant).
Reviewed By: passy
Differential Revision: D36198283
fbshipit-source-id: 499133cc7265488203a248da2d1e519fc23a0d19
Summary: Restyle of the page, including changes to spelling, grammar, links, and structure (where relevant).
Reviewed By: mweststrate
Differential Revision: D36197599
fbshipit-source-id: 6fad2066d64f1f191b32639e1f36c24e103a91fb
Summary: Restyle of the page, including changes to spelling, grammar, links, and structure (where relevant).
Reviewed By: mweststrate
Differential Revision: D36198043
fbshipit-source-id: 961d9b535f0869ae3db3bbdfcbc33be43773edd6
Summary: Taking care of the remaining dependabot tasks In my queue.
Reviewed By: mweststrate
Differential Revision: D36131782
fbshipit-source-id: f8a5ce18bfab7c5d50a88d64f9516d67bba4bd6d
Summary: More bumps for patch and minor releases. allow-large-files
Reviewed By: aigoncharov
Differential Revision: D36104098
fbshipit-source-id: 6db995e660afbe4febd72aa70ed8150cc16a8c93
Summary: Bunch of dependabot PRs showed that the signal is green, but still wanted to have all in one diff.
Reviewed By: aigoncharov
Differential Revision: D36102480
fbshipit-source-id: 88d472fdc2a910a7441a9e8164fe8af0f2d90f7b
Summary: Caused some inconsistencies when running `tsc`. This brings them back in line.
Reviewed By: aigoncharov
Differential Revision: D36101548
fbshipit-source-id: b8f757c59f879911c9b0920fe11396246ffa37e2
Summary: On top of the stack, this should be green again.
Reviewed By: nikoant
Differential Revision: D36100200
fbshipit-source-id: 581e3d825ef8e088f6d5ed4b0fcdfea574121667
Summary:
Before:
```
flipper-server/src/startBaseServer.tsx(222,30): error TS2345: Argument of type 'string | undefined' is not assignable to parameter of type 'string'.
Type 'undefined' is not assignable to type 'string'.
flipper-ui-browser/src/flipperServerConnection.tsx(25,9): error TS2322: Type 'Timeout' is not assignable to type 'number'.
```
Reviewed By: nikoant
Differential Revision: D36100188
fbshipit-source-id: 1913a43109a0e068394a188d362f6a9e473e7904
Summary: Restyle of the page, including changes to spelling, grammar, links, and structure (where relevant).
Reviewed By: passy
Differential Revision: D35898254
fbshipit-source-id: 67e3f3e344faf105f5a8f393c60441d6af3d62aa
Summary: Restyle of the page, including changes to spelling, grammar, links, and structure (where relevant).
Reviewed By: passy
Differential Revision: D35897472
fbshipit-source-id: 4b3853cd805c8714c83a8d227395dec8e3ff888f
Summary: Restyle of the page, including changes to spelling, grammar, links, and structure (where relevant).
Reviewed By: passy
Differential Revision: D35899228
fbshipit-source-id: 4ade5b28f1634e792fcf4582fe163d02e2f4fab4
Summary:
^
Not exactly sure how to reproduce the issue. Having said that:
- A database id is a non-zero number (1..n)
- If there's no selected database and/or there's no databases, then selectedDatabase is '0', which is an invalid database id.
- It is safer to check if the selected database id falls within bounds before attempting to obtain the tables from it.
From Logview, if the database id is '0', which is invalid, then we attempt to access a database at index -1 (database[selectedDatabase - 1]) which is definitely invalid. The returned object is undefined and hence the error.
Changelog: Fixes an issue on the databases plugin when there is no selected database.
Reviewed By: mweststrate
Differential Revision: D35810827
fbshipit-source-id: 4c9f112eebcd0aa3fcd5df316749f48f3922381c
Summary:
This is already supported, when running Flipper on Mac, so just need update schema.
One use case for `MacOS`, is to have a static plugin available to users before they launch any app/device. So this can be used as Welcome plugin, Documentation or any other "static" plugin not requiring any other device except the one running Flipper Desktop.
## Changelog
- add `MacOS` to supported devices
Pull Request resolved: https://github.com/facebook/flipper/pull/3648
Test Plan: - Script `lint` should pass.
Reviewed By: antonk52
Differential Revision: D35810577
Pulled By: lblasa
fbshipit-source-id: e1a2948fdf67535d28b68eeab649214b44ebcf9c
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:
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:
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: 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: 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