Summary: Per discussion in parent diff, fixed the links to be idiomatic so that they work in both internal and public builds
Reviewed By: jknoxville
Differential Revision: D27963896
fbshipit-source-id: 35504b04e8975acc419be668804c5d7ad7aa2a16
Summary:
When trying to run some React component performance profiles, the updates registered made absolutely no sense (components rerendering without any parent or other cause causing them to render etc). That turned out to be caused by having an outdated version of the React devTools in Flipper.
Sadly the newer version of the React DevTools didn't work with our current Electron version anymore. Some horrible hacking is needed to work around that.
To help with updating the tools in the future (they are by default cached forever on the local machine), I've introduced the `FLIPPER_UPDATE_DEV_TOOLS` variable.
The plugin loading work around is inspired by https://github.com/electron/electron/issues/23662#issuecomment-787420799
Reviewed By: passy
Differential Revision: D27685981
fbshipit-source-id: c35e49aff9b2457b63122eeee0d5c042ddd3b08b
Summary:
This diff moves the core of ElementsInspector to flipper-plugin and decouples it from legacy design system and Electron, without any significant improvements or API changes yet, which will follow later.
Colors and docs will be added later in this stack.
Reviewed By: passy
Differential Revision: D27660300
fbshipit-source-id: 96abfa3b3174fa852cf04ae119c23c3d629fee74
Summary: Added docs on how to include fb-only parts into open-sourced plugins
Reviewed By: mweststrate
Differential Revision: D27678276
fbshipit-source-id: e0c3de8ed57a7d25f291e8e6ac15ed32812a0cbc
Summary:
This diff moves the rest of the DataInspector jungle to flipper-plugin. No actual improvements are made yet, but the code is decoupled from Electron and the legacy theming. For example by using Antd based context menus.
Note that `ManagedDataInspector` is now rebranded `DataInspector`, as that is the only variation that should (and is) used publicly.
For the interactionTracker removal, see next diff.
SearchableDataInspector will be addressed in a next diff
Reviewed By: passy
Differential Revision: D27603125
fbshipit-source-id: 188bd000260e4e4704202ce02c7fc98319f0bc22
Summary:
This PR adds missing Objective-C entry to the Docusaurus config, fixes Objective-C code blocks label and adds or replaces several code block labels to improve the currently highlighted blocks.
Prism in Docusaurus by default also includes syntax highlight for `jsx` and `tsx`, which improves the nodes and props highlight, so I have used those syntaxes in few places too.
I have also fixed one typo that I have spotted and my IDE made a cleanup of whitespaces in edited files.
## Changelog
* [website] improve docs code blocks highlighting
Pull Request resolved: https://github.com/facebook/flipper/pull/2049
Test Plan:
The changes have been tested running Flipper website on `localhost`.
## Preview
<img width="650" alt="Screenshot 2021-03-12 150934" src="https://user-images.githubusercontent.com/719641/110951135-fff20d00-8344-11eb-96db-1bdc82c8d5ea.png">
<img width="649" alt="Screenshot 2021-03-12 151022" src="https://user-images.githubusercontent.com/719641/110951268-2ca62480-8345-11eb-9d3b-1a48f1267776.png">
Reviewed By: priteshrnandgaonkar
Differential Revision: D27336599
Pulled By: passy
fbshipit-source-id: c2dfb3d8cad4675da0f5e1270cada1e56a0175c0
Summary: This moves `<DetailSidebar>` component to `flipper-plugin` and documents it. No semantic changes.
Reviewed By: passy
Differential Revision: D27234575
fbshipit-source-id: 74640602d718f84ad999f5dac0420089796ed7fb
Summary:
Beyond a search across all columns, it is now possible to specific columns for specific values:
* for a row to be visible, all active column filters need to be matched (e.g. both a filter on time and app has to be satisfied)
* if multiple values within a column are filtered for, these are -or-ed.
* if no value at all within a column is checked, even when they are defined, the column won't take part in filtering
* if there is a general search and column filters, a row has to satisfy both
Filters can be preconfigured, pre-configured filters cannot be removed.
Reseting will reset the filters back to their original
Move `useMemoize` to flipper-plugin
Merged the `ui/utils` and `utils` folder inside `flipper-plugin`
Reviewed By: nikoant
Differential Revision: D26450260
fbshipit-source-id: 11693d5d140cea03cad91c1e0f3438d7b129cf29
Summary:
First rudementary setup of DataTable component that follows a data source. Initially used react-virtuose library, but it performed really badly by doing expensive layout shifts and having troublesome scroll handling. Switched to react-virtual library, which is a bit more level, but much more efficient, and the source code is actually understandable :)
Features:
- hook up to window events of datasource
- high and low prio rendering, based on where the change is happening (should be optimized further)
- sticky scrolling support
- initial column configuration (custom rendering, styling, columns etc will follow in next diffs)
Reviewed By: nikoant
Differential Revision: D26175665
fbshipit-source-id: 224be13b1b32d35e7e01c1dc4198811e2af31102
Summary:
For context see https://fb.workplace.com/notes/470523670998369
This diff introduces the DataSource abstraction, that can store records. If a key is set a key -> record mapping is stored, to make it easy to update existing records using `upsert`, without knowing their exact index.
Internal storage will be slightly altered in upcoming diffs, so don't pay to much attention to that part.
Reviewed By: nikoant
Differential Revision: D25953337
fbshipit-source-id: 1c3b53a2fcf61abaf061946be4af21d2aecc6c6d
Summary: `install` is now ambiguous because of some new plugins we've added.
Reviewed By: mweststrate
Differential Revision: D26633940
fbshipit-source-id: 62369ba76cced905350e62b7782619811b7284a0
Summary:
Upgrade the static docs plugin.
You no longer need to import OssOnly and FbInternalOnly in markdown files, so removed those imports too.
Reviewed By: passy
Differential Revision: D26580059
fbshipit-source-id: 2763de2f5fbef41ec2ac7f7bdd147418badb78b6
Summary: Updated docs to mention the new way of specifying device plugins compatibility metadata.
Reviewed By: mweststrate
Differential Revision: D26424203
fbshipit-source-id: 313e15ee54a8877c95850a37a13c5684b3c165f0
Summary:
Tried to give as much context here not just for how it works but also
how to set it up. For other projects and if we need to redo something.
Reviewed By: mweststrate
Differential Revision: D26400452
fbshipit-source-id: 9b41fd1a36c45554c7a7b562b73b4b9753f7ecfe
Summary:
Introduced `isConnected` flag on device and plugin client to reflect whether a connection is still available for the plugins, or that they have been disconnected.
Potentially we could expose the (readonly) `connected` state atom for this as well, or an `onDisconnect` event for device pugins, to create a responsive UI, but there might be no need for that, in which case this suffices.
Reviewed By: nikoant
Differential Revision: D26249346
fbshipit-source-id: b8486713fdf2fcd520488ce54f771bd038fd13f8
Summary:
Unlike non-sandy plugins, non-sandy plugins weren't serialized using our serialization utility yet. This diff addresses that, meaning that users don't have to bother about how to serialize maps, sets and dates.
Unlike the old fashioned plugins, the `makeObjectSerialize` utility is used, rather than `serialize`. This normalizes the objects, but doesn't serialize them, which is done at the end of the export data process anyway for the whole tree. This avoids creating a double JSON serialization which is fully of ugly escape characters.
This makes the onImport / onExport definition of the logs plugin nicer.
Also improved the docs.
Reviewed By: nikoant
Differential Revision: D26146421
fbshipit-source-id: 6abfb6ee2e3312e2a13a11832ff103dc62fd844c
Summary: Per title, this allows for pre-processing data after it is deserialized and before it is stored in the plugin
Reviewed By: nikoant
Differential Revision: D26126423
fbshipit-source-id: bc08a6ab205d2a0d551515563cd85a197595ddb2
Summary:
Sandy plugins can now set up an `onExport` handler to enable customizing the export format of a plugin: `client.onExport(callback: (idler, onStatusMessage) => Promise<state>)`
Import will be done in next diff
Reviewed By: nikoant
Differential Revision: D26124440
fbshipit-source-id: c787c79d929aa8fb484f15a9340d7c87545793cb
Summary: This diff adds the `--public-build` option which allows run a devServer emulating the OSS version of flipper. Technical details are explained in the comments.
Reviewed By: passy, nikoant
Differential Revision: D25944966
fbshipit-source-id: 540855808179582752b8aa646f0b8afd4b78396f
Summary:
The redirects we added inline in the deleted pages don't work when there's a baseUrl.
This is because it's the standard react-router Redirect component, which knows nothing about docusaurus sites.
We could get around that by adding `useBaseUrl()` calls around all of them, but that's not great.
So changing to using declarative redirects instead, where they are all put in config. This automatically takes care of base urls, and reduces copy-pasted code.
Reviewed By: passy
Differential Revision: D25780599
fbshipit-source-id: c67d3643ab28f0fcd440904baf54c67687781686
Summary: This diff unifies setup and workflow information that was scattered a bit around into one cohesive 'Development workflow' subsection in the 'creating plugins' section of Flipper.
Reviewed By: nikoant
Differential Revision: D25612288
fbshipit-source-id: 5fa7f2d000fb7ab3e1b5c5a4fc8cc1f209252f41
Summary: There were 3 pages describing how to obtain a plugin instance, public, ios and android. iOS didn't differ from the public one, and android only in the fact that internally DI is available. So combined the pages with just an optional section for DI inside FB on Android.
Reviewed By: jknoxville
Differential Revision: D25588057
fbshipit-source-id: 3a54ae699130a4c5ba018220708f844a35a8d6a9
Summary: There was one public page for testing client plugins, and two internal ones. Combined it into a one pager, that has tabs per target, with separate content for internal versus external (didn't combine those as the testing frameworks recommended differ)
Reviewed By: nikoant
Differential Revision: D25588058
fbshipit-source-id: afa151ec0c3a5de26142938d3d389627716f1ff7
Summary: send data was documented twice, in the general client API, and in the internal docs where it was specifically combined with obtaining a plugin instance. However, that is a proper public API as well, so combined those two.
Reviewed By: nikoant
Differential Revision: D25588059
fbshipit-source-id: 7135a74b64a87d0c8c3f8f20f7f260469f52d41c
Summary: Seems that all tabs were broken after migration to Docusaurus 2.
Reviewed By: jknoxville
Differential Revision: D25586214
fbshipit-source-id: 31a8da4e13fbac01911a03f1f4bab0d2837c9c9a
Summary:
This diff restructures the 'extending' section of the docs, and rebrands it to 'creating plugins'. It then restructures this section into 4 top-level items
* Tutorial
* Desktop plugin APIs
* Client plugin APIs
* Workflow
Pages are put under the relevant sections, including pages which were before under internal. Some pages that didn't relate directly to plugin development have been moved to other top level sections (e.g. testing RN).
I didn't do de-duplication between pages yet, that will be done in the next diff.
Overview of changes:
* Extending -> Creating Plugins
* Moved Extending > Other platforms to Setup > Other platforms (as this is about clients, not plugins)
* Moved Internal FB plugin development stuff into Creating Plugins
* Separated Creating Plugins into ‘Tutorial’, Desktop API Reference, Cient API Reference, Workflow
* Remove TypeScript strict page, we are already strict
* Moved QPL linters to api docs and named id QPL lints
* Grouped the different pages on extending Layout plugin (needs deduping still)
* Warning about avoiding custom styling in general
* Moved internal index page to the top of the navigation of FB Internal, rather than at the bottom
Reviewed By: passy
Differential Revision: D25585172
fbshipit-source-id: ba2aa891395097d6aa101809084b915f115ee69d
Summary: The 'extending flipper' introduction page didn't contain anything meaty, so collapsed it into the tutorial introduction, cleaning up the top level navigation.
Reviewed By: passy
Differential Revision: D25531718
fbshipit-source-id: ca0f98186e889e13cb97be8818db3588738e5039
Summary:
Introduced API to replace the deprecated `selectPlugin` in Sandy.
The API can be used to navigate from `device plugin -> device plugin`, or` client plugin -> device / client plugin`
Introduced `isPluginAvailable` as well, so that the user interaction an be fine tuned in case the plugin is not disabled.
Reviewed By: jknoxville
Differential Revision: D25422370
fbshipit-source-id: c6c603f1c68e6291280b3d0883e474448754ded1
Summary: When exposing new top-level APIs from `flipper-plugin`, they should be documented. Added a unit test to enforce this and added documentation for all missing APIs.
Reviewed By: passy
Differential Revision: D25421401
fbshipit-source-id: f5cafc1881de846c8a5dd86e5d094ebd27a66f2a
Summary: In the Flipper chrome there is a lot of `logger={logger}` prop drilling. Let's not do that anymore in the future by using a proper hook, which is exposed from `flipper-plugin`.
Reviewed By: passy
Differential Revision: D25421304
fbshipit-source-id: 01ec8563c67f7e2fac359c2f8216eba722bff8d9
Summary: Make sure that GKs can be used in pure sandy plugins.
Reviewed By: jknoxville
Differential Revision: D25368358
fbshipit-source-id: c7c6aa4ecf0443cb3b5d90e22e8aca9a73a69389
Summary:
Set up basic primitives for user interaction tracking. I hope the docs and unit tests in this diff are self explanatory :)
In upcoming diffs:
* Wire up to scuba events
* Annotate all important parts of Flipper Chrome
* Investigate if we can wrap important interactions of ANT by default
Reviewed By: jknoxville
Differential Revision: D25120234
fbshipit-source-id: 9849d565d7be27e498cc2b4db33e7d6e6938ee06
Summary: This updates the docs of Flipper to use Sandy, rather than `FlipperPlugin` class. Restructured the docs a bit as a result.
Reviewed By: passy
Differential Revision: D24991285
fbshipit-source-id: 66d5760c25cf9cf3983515433dfd64348d51db3d
Summary: Updated the scarf template to fix some urls, at `antd` by default, and avoid depending on `flipper-plugin`.
Reviewed By: cekkaewnumchai
Differential Revision: D24949452
fbshipit-source-id: 56b6628309d3cdf6c30acddf83dab6e493cd7c0e
Summary: expose `appName`, `appId` and `device` to Sandy plugins. Will be used in next diff to migrate navigation plugin
Reviewed By: cekkaewnumchai
Differential Revision: D24857253
fbshipit-source-id: 03ac3d376d5d1950bcf3d78386a65ce167b517e3
Summary: Moved docs outside of FBInternal docs. Will make Sandy APIs the default in the docs soon, and move the links to the proper location, but this at least makes sure we can already link to the correct place in WP announcements
Reviewed By: jknoxville
Differential Revision: D24829287
fbshipit-source-id: 913f2db65a7cdd04bd1be47aebc48ece7a6cef04
Summary:
Fixes the typo `Abritrary` in the docs which should be `Arbitrary` instead
## Changelog
Docs: Fixed the typo `AbritraryView` (now `ArbitraryView`)
Pull Request resolved: https://github.com/facebook/flipper/pull/1566
Test Plan: --
Reviewed By: cekkaewnumchai
Differential Revision: D24078448
Pulled By: passy
fbshipit-source-id: b2a1b58c9bff8684ed6cd6c7958a826480371fd2
Summary:
Removed basic grammatical errors in two docs files: architecture.mdx and client-plugin-lifecycle.mdx
## Changelog
Update architecture.mdx and client-plugin-lifecycle.mdx docs
Pull Request resolved: https://github.com/facebook/flipper/pull/1459
Test Plan: There is only text change in documentation. The code is unchanged.
Reviewed By: cekkaewnumchai
Differential Revision: D23101962
Pulled By: passy
fbshipit-source-id: 24d9233d67a19745696b40ea6c2d3ac2d26231c3
Summary:
This diff adds a toggle setting in wilde which will enable certificate exchange through www.
Right now it just sends the information about which medium to be used for cert exchange to Flipper JS and its client side. But its implementation is not done yet.
### Flow for Wilde
Whenever user changes the setting(or when user logs out) we set the state of exchange medium and accordingly set/reset authtoken. Note at no given point we remove already existing certificates.
### Context for OSS
With this diff we introduce another way to do certificate exchange. Before this diff, we did certificate exchange by accessing the file system of app. But it turns out it's not possible to do that in applications signed by enterprise certs. Thus with this diff one can write their FlipperKitCertificateProvider and fetch the certificate from WWW.
Reviewed By: jknoxville
Differential Revision: D22896320
fbshipit-source-id: 55aef7028a62e71ba9c02f9f79acaab41d09c0c6