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
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 "[ci] Use GitHub Actions (<a href="https://github-redirect.dependabot.com/websockets/ws/issues/1644">#1644</a>)"</li>
<li><a href="82f05372ba"><code>82f0537</code></a> Revert "[ci] Test on node 14"</li>
<li><a href="b167d1cd45"><code>b167d1c</code></a> Revert "[ci] Update Coveralls GitHub Action to version 1.1.1"</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 />
[](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
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
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
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
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
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
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
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
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
Summary: When Flipper is running in dev mode we should always use bundled version of plugin (e.g. loaded from sources) even if a newer version is installed. Otherwise it could happen that Flipper will load installed version and it will not be possible to test your changes of plugin sources.
Reviewed By: passy
Differential Revision: D22016564
fbshipit-source-id: fbf63d5248b60034dc61688e4faa9b54890b744e
Summary:
JS/TS api:
- migrate to TS
- some refactoring (get rid of bridge, make client abstract)
Implementation isn't full yet, things to be implemented:
- let plugins connect on init command from Flipper
- implement Responder
Further plans:
- make fully compatible with react-native api without breaking changes
Reviewed By: mweststrate
Differential Revision: D21839377
fbshipit-source-id: 9e9fe4ad01632f958b59eb255c703c6cbc5fafe2
Summary:
Sign in form improvements:
1) Added context menu with "Paste" and "Reset" items
2) Added "Reset" button
3) When form is empty, simple click to it automatically pastes token from clipboard
4) Automatically sign-in after token is pasted into empty form
Reviewed By: mweststrate
Differential Revision: D21994724
fbshipit-source-id: 8605c7f9b96777036b1b20b69370fba499185911
Summary:
When the `Scrollable` component was introduced, this functionality regressed because the `ref` was no longer set on the right component.
changelog: Fix scrolling to inspected element in Layout plugin
Reviewed By: mweststrate
Differential Revision: D21979475
fbshipit-source-id: f84d515cb1593a33d1ae0e93a01681b6e11aa623
Summary: Persist state in Mobile builds plugin. This diff also moves the logic of percentage updates in the persisted state.
Reviewed By: mweststrate
Differential Revision: D21840853
fbshipit-source-id: 3246cdfecfca12cd0f269f5a87646cf619380999
Summary:
Adds a check for idb to flipper-doctor.
This depends on the flipper settings, to know where to look for idb, so I've made it so you can pass settings into the doctor when running it. When run from the command line, you don't get the settings. This is because settings loading currently depends on redux so I haven't extracted it into its own package.
Not that this will notify ALL open source iOS users with a doctor warning because they don't have idb installed. The error message says you can disable it in settings, which will silence this warning.
CHANGELOG: The open source version now works with physical iOS devices.
Reviewed By: passy
Differential Revision: D21883086
fbshipit-source-id: f28c43487e88a6c07ef3cc3da2764026726c9f18
Summary: Added new package with test utilities re-used by other packages
Reviewed By: mweststrate
Differential Revision: D21949629
fbshipit-source-id: 8bfa959401669dc8911a1f647f417cafd92c2e4b
Summary:
Install plugins to pending directory first to enable installing new versions of existing plugins. On startup Flipper moves all the plugins from pending directory into installed plugins directory.
Auto-update, after downloading a plugin package, will also extract it to "pending", so after restart update will automatically be applied.
Reviewed By: mweststrate
Differential Revision: D21929713
fbshipit-source-id: 141b106415e941156ae598cf810ab3bed8c76ced
Summary:
See previous diffs, same change as with analytics, don't stringify when creating the rows, but rather provide a closure to do that lazily, which reduces CPU (and mem) usage.
Note that this implicitly assumes the captures variables are immutable, as otherwise the semantics would change. But than again, if those variables are changed in the future, copyText will reflect their latest rather than initial state, which is better anyway.
Reviewed By: nikoant
Differential Revision: D21931748
fbshipit-source-id: 62325dd25953bab3a4e2e9a0d5dea3b3a7787bae
Summary:
`copyText` is generated when building rows for table, and is typically filled by JSON stringifying the incoming data. That is a pretty expensive process that could be done lazily. As shown in later diffs, this reduces the generation of rows for tables from ~18ms to ~3ms, which makes rendering a lot smoother.
(n.b. fixing the code duplication in the managedtables is part of the component lib plan)
Reviewed By: passy
Differential Revision: D21929660
fbshipit-source-id: 67cc69945e2bb28a6462a9d9ab765e33ced89378
Summary:
If the analytics plugin was in the foreground, and messages arrived in quick succession, some messages would not be processed.
Although the code was tested, there were not enough assertions to make sure the loop was correct. coverage !== correctness {emoji:1f605}
This fixes T68101450
Changelog: Fixed regression where analytics messages where lost
Reviewed By: jknoxville
Differential Revision: D21929679
fbshipit-source-id: c9fe2b18a249e40085d99914a809abf14fa7cf8f
Summary:
When trying to profile the Electron app, since recently the profiler hangs when trying to start the initializer. Found the following weird message in the console and googled the problem :-P
{F239554230}
Reviewed By: jknoxville
Differential Revision: D21929677
fbshipit-source-id: 7a9f150ebc8df30fa2890c9dbb79c8c144a5feae
Summary: Use interface PluginDetails everywhere where plugins are handled and removed PluginDefinition type which was effectively a subset of PluginDetails
Reviewed By: mweststrate
Differential Revision: D21927456
fbshipit-source-id: 434ebeef955b922cc11757e78fbba8dec05f1060
Summary: Moved plugin installation utilities to "plugin-lib" module. There are no functional changes in this diff, just refactoring so that plugin installation utils can be re-used by different modules.
Reviewed By: passy
Differential Revision: D21927387
fbshipit-source-id: 340516a544f7cfdcc15d94660dcb74a012054531
Summary:
I noticed that Android device detection is _much_ faster than iOS, so I tried to optimize it a bit
1. Removed a test run on `instruments -s`. That command is really slow (easily 5 secs), and the check has become redundant since Doctor already does a similar check
2. When querying for devices, it tries to fetch emulated and physical devices in parallel, but only processes the results after both have finished. However, finding simulators is almost instant, while querying the physical devices takes ~5 seconds ore more. So in this diff we process the found devices till in parallel, rather than waiting until both have arrived
This diff reduces the time until the ios simulator + FB app is detected from 28 to 4 seconds on my machine.
Changelog: Improved the startup sequence for emulated iOS devices, so that devices and apps connect a lot faster after starting Flipper
Reviewed By: jknoxville
Differential Revision: D21907597
fbshipit-source-id: 73edf0b04c4ad8367e04557e33f4c0d9e9bcd710
Summary:
See previous diff, let's store the collapsed state of sidebar sections in local storage.
Introduced a reusable hook to take care of that.
Changelog: Device plugins are now expanded by default, and the expand / collapse state will now be remembered across restarts
Reviewed By: passy
Differential Revision: D21903394
fbshipit-source-id: a3c0231acc0aa0877522ec328eedd09cb11aedb1
Summary: Heard several reports that expanding device plugins by default would be preferred
Differential Revision: D21881338
fbshipit-source-id: 9f7444a4282684e4e0f046cf6a6679181ec55e73
Summary: Download updated plugins in background. This is implemented by periodical polling of Marketplace GraphQL API (interval 5 min by default). The feature is under GK flipper_plugin_auto_update, so for now it is enabled only for me.
Reviewed By: mweststrate
Differential Revision: D21863057
fbshipit-source-id: 51d8223ad4b2a928f7571ea480c10ba2efd9935d
Summary:
The last piece of the puzzle to get this working.
Now if a user has iOS development enabled in Flipper settings, and has XCode installed, we'll run the PortForwardingMacApp processes required to interact with iOS devices.
It's not great the way it starts the processes without any error checking, but since that's the way it currently works, I'm leaving it as it is for now.
Reviewed By: mweststrate
Differential Revision: D21881041
fbshipit-source-id: 1d1fdb7e0621cff88408bb707d768bb5c6bea0cc
Summary:
Bumps [iarna/toml](https://github.com/iarna/iarna-toml) from 2.2.3 to 2.2.5.
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a href="https://github.com/iarna/iarna-toml/blob/v2.2.5/CHANGELOG.md">iarna/toml's changelog</a>.</em></p>
<blockquote>
<h1>2.2.5</h1>
<ul>
<li>Docs: Updated benchmark results. Add fast-toml to result list. Improved benchmark layout.</li>
<li>Update sgarciac/bombadil and ltd/j-toml in benchmarks and compliance tests.</li>
<li>Dev: Some dev dep updates that shouldn't have any impact.</li>
</ul>
<h1>2.2.4</h1>
<ul>
<li>Bug fix: Plain date literals (not datetime) immediately followed by another statement (no whitespace or blank line) would crash. Fixes <a href="https://github-redirect.dependabot.com/iarna/iarna-toml/issues/19">https://github.com/facebook/flipper/issues/19</a> and <a href="https://github-redirect.dependabot.com/iarna/iarna-toml/issues/23">https://github.com/facebook/flipper/issues/23</a>, thank you <a href="https://github.com/arnau">arnau</a> and <a href="https://github.com/jschaf">jschaf</a> for reporting this!</li>
<li>Bug fix: Hex literals with lowercase Es would throw errors. (Thank you <a href="https://github.com/DaeCatt">DaeCatt</a> for this fix!) Fixed <a href="https://github-redirect.dependabot.com/iarna/iarna-toml/issues/20">https://github.com/facebook/flipper/issues/20</a></li>
<li>Some minor doc tweaks</li>
<li>Added Node 12 and 13 to Travis. (Node 6 is failing there now, mysteriously. It works on my machine™, shipping anyway. �)</li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a href="9b386f8cda"><code>9b386f8</code></a> 2.2.5</li>
<li><a href="791b33c9d9"><code>791b33c</code></a> Appease standard</li>
<li><a href="650824710f"><code>6508247</code></a> Changelog for 2.2.5</li>
<li><a href="cf43fb4a91"><code>cf43fb4</code></a> Improve benchmark display (<a href="https://github-redirect.dependabot.com/iarna/iarna-toml/issues/25">https://github.com/facebook/flipper/issues/25</a>)</li>
<li><a href="b159345564"><code>b159345</code></a> Node6 inexplicably fails only travis</li>
<li><a href="4be75e2f42"><code>4be75e2</code></a> rimraf@3.0.2</li>
<li><a href="030e8c462b"><code>030e8c4</code></a> funstream@4.2.0</li>
<li><a href="1e9893beab"><code>1e9893b</code></a> weallcontribute@1.0.9</li>
<li><a href="64d4132160"><code>64d4132</code></a> docs(contributing): updated CONTRIBUTING.md</li>
<li><a href="d10e010597"><code>d10e010</code></a> js-yaml@3.13.1</li>
<li>Additional commits viewable in <a href="https://github.com/iarna/iarna-toml/compare/v2.2.3...v2.2.5">compare view</a></li>
</ul>
</details>
<br />
[](https://dependabot.com/compatibility-score/?dependency-name=@iarna/toml&package-manager=npm_and_yarn&previous-version=2.2.3&new-version=2.2.5)
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)
---
**Note:** This repo was added to Dependabot recently, so you'll receive a maximum of 5 PRs for your first few update runs. Once an update run creates fewer than 5 PRs we'll remove that limit.
You can always request more updates by clicking `Bump now` in your [Dependabot dashboard](https://app.dependabot.com).
<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)
- `dependabot badge me` will comment on this PR with code to add a "Dependabot enabled" badge to your readme
Additionally, you can set the following in the `.dependabot/config.yml` file in this repo:
- Update frequency
- Out-of-range updates (receive only lockfile updates, if desired)
- Security updates (receive only security updates, if desired)
</details>
Pull Request resolved: https://github.com/facebook/flipper/pull/1214
Reviewed By: passy
Differential Revision: D21838146
Pulled By: mweststrate
fbshipit-source-id: bc41dfed2da639b17db3e81356d351001a5c84c5
Summary:
Part of https://github.com/facebook/flipper/issues/262
Use the user-configured idb install location instead of a hardcoded one.
Reviewed By: passy
Differential Revision: D21860236
fbshipit-source-id: 5c604d7b6361e7c93ab49d8a03a437dfce880ac1
Summary:
Part of https://github.com/facebook/flipper/issues/262
The default is the location on facebook computers, to avoid breaking it for existing users.
Reviewed By: passy
Differential Revision: D21860237
fbshipit-source-id: f4adfba0c63f7bb10751effb012dda734c455bee
Summary:
By default Node.JS has its internal certificate storage and doesn't use the system store. Because of this, it's impossible to access ondemand / devserver which are signed using some internal self-issued FB certificates. These internal certificates are automatically installed to MacOS system store on FB machines, so here we're using "mac-ca" library to load them into Node.JS when Flipper is running in dev mode.
For production version of Flipper we don't need to do this, because production certs are issued by DigiCert which is already trusted by node.js.
Reviewed By: passy
Differential Revision: D21862620
fbshipit-source-id: f7276e255fae1c208cb68af6632a303661af883e
Summary: Load either installed or bundled version of plugin depending on which is newer.
Reviewed By: mweststrate
Differential Revision: D21858965
fbshipit-source-id: aa46eafe0b5137134fadad827749672441f2c9e5
Summary:
See previous diff.
Achieves the same optimization as in the mentioned diff, but this time by only debouncing the messages as they arrive over the socket, and not the state updates caused by Redux directly. This means that plugin rendering won't be debounced anymore until we address this more fundamentally.
With this change there is a double level buffering:
1. A buffer that stores all incoming messages (that are not replies to requests)
2. A buffer that stores messages we are interested in in the plugin queue, unless the plugin is active (this we already had).
This still fixes the issue that too chatty plugins cause to many updates foreground plugin (the problem we tried to fix originally), without debouncing plugin rendering if it is needed to update for any other reason.
Another nice benefit is that previously every received message would trigger a store update in Redux which would cause all connected components to evaluate their subscriptions (and then bail out in the typical case). Now we will only update the redux store every 200 ms.
Changelog: Foreground plugins will burn less CPU when they're very chatty
Reviewed By: jknoxville
Differential Revision: D21858849
fbshipit-source-id: c72352e569a8a803bbedffb71b17b11fcefee043
Summary:
This change kinda reverts D21690494, which broke the layout plugin.
The layout plugin broken because it's implementation assumes that if `this.props.setPersisted` state is called, those changes are immediately reflected in `this.props.persistedState`. For that to work it means that a render needs to be triggered immediately and synchronously by React.
That is a troublesome assumption (React doesn't actually guarantee this) and very likely to break in the future if implementation details change in React or Redux. However, since this is an assumption here, probably more plugins rely on that behavior, so this diff reverts that change. I'll add it the the component library plan to fundamentally address this.
The next diff will re-introduce debouncing, just at a different code point.
Reviewed By: jknoxville
Differential Revision: D21840282
fbshipit-source-id: af69dbded80aa73dfd6558d7cb0268ea0b1c504a
Summary:
I just noticed that the deeplink of the support form didn't select the right group. It got broken after the recent design change of the support form. This diff fixes that issue.
I have also added unit tests.
Reviewed By: passy
Differential Revision: D21817153
fbshipit-source-id: 06298b3b60cfc1bd77bea6c1f902b983474808dc
Summary:
- Add value for null type to use `.value` easier
- Add value to string by directly converting to string if possible; otherwise null
Reviewed By: jknoxville
Differential Revision: D21788242
fbshipit-source-id: f3a9f995de6b4cb1b304981c8adaaba70105c988
Summary:
I've outlined the tasks required to get iOS device support working for open source users [here](https://github.com/facebook/flipper/issues/262).
This is the first step. It publishes the same code we use internally to GitHub, but in a state where it is only "available" for non-public builds. This will not change any behavior, but means that together with the community, we can start adapting it to suit everyone, and then eventually flip "available" to true for everyone.
Reviewed By: passy
Differential Revision: D21740193
fbshipit-source-id: 586c79ad850f67da330c10a007605ff25a187544