Commit Graph

295 Commits

Author SHA1 Message Date
Michel Weststrate
e29222fba7 Update and patch loading React DevTools
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
2021-04-15 07:48:33 -07:00
Anton Nikolaev
dc7226b7dc Script for plugin type-checking (#2172)
Summary:
Pull Request resolved: https://github.com/facebook/flipper/pull/2172

New script which runs "tsc" for all plugins, receives list of errors and then checks which plugins are affected. It works for shared libs too, e.g. if there is an error in a shared library, then all plugins dependant on it will be counted as affected. For convenience, script saves list of errors affecting each plugin to "tsc-errors.log" in plugin folder.

This script will be used for automatic type-checking plugins against current "stable" and "insiders" versions of Flipper.

An alternative to this implementation would be to simply run "tsc" for each plugin individually, but such implementation takes a lot of time (5+ sec per plugin) and so cannot be effectively used on diffs.

Reviewed By: mweststrate

Differential Revision: D27499765

fbshipit-source-id: fcbbfc94a13e6c7c5beff0c889a929f84c41b2dd
2021-04-09 05:22:01 -07:00
Anton Nikolaev
b45b5f854a Move layout plugin sidebar extensions to the plugin package
Summary: Moved layout plugin sidebar extensions to the plugin package.

Reviewed By: passy

Differential Revision: D27036489

fbshipit-source-id: 5b3406e5c50ba61709d925a3c0cb07a6fd7552db
2021-04-09 05:22:00 -07:00
Anton Nikolaev
4997cb9847 Show file path and position when babel transformation failed
Summary: Currently when babel transformation is failed, only stack is shown. It's better to log the whole error object because it also contains path and line number of the code failing to transpile.

Reviewed By: passy

Differential Revision: D27034942

fbshipit-source-id: 76e03871c924489e2698a26622e6bc6fdd305560
2021-04-09 05:22:00 -07:00
Anton Nikolaev
b3274a8450 Plugin folders re-structuring
Summary:
Here I'm changing plugin repository structure to allow re-using of shared packages between both public and fb-internal plugins, and to ensure that public plugins has their own yarn.lock as this will be required to implement reproducible jobs checking plugin compatibility with released flipper versions.

Please note that there are a lot of moved files in this diff, make sure to click "Expand all" to see all that actually changed (there are not much of them actually).

New proposed structure for plugin packages:
```
- root
- node_modules - modules included into Flipper: flipper, flipper-plugin, react, antd, emotion
-- plugins
 --- node_modules - modules used by both public and fb-internal plugins (shared libs will be linked here, see D27034936)
 --- public
---- node_modules - modules used by public plugins
---- pluginA
----- node_modules - modules used by plugin A exclusively
---- pluginB
----- node_modules - modules used by plugin B exclusively
 --- fb
---- node_modules - modules used by fb-internal plugins
---- pluginC
----- node_modules - modules used by plugin C exclusively
---- pluginD
----- node_modules - modules used by plugin D exclusively
```
I've moved all public plugins under dir "plugins/public" and excluded them from root yarn workspaces. Instead, they will have their own yarn workspaces config and yarn.lock and they will use flipper modules as peer dependencies.

Reviewed By: mweststrate

Differential Revision: D27034108

fbshipit-source-id: c2310e3c5bfe7526033f51b46c0ae40199fd7586
2021-04-09 05:22:00 -07:00
dependabot[bot]
12717e1b9d Bump app-builder-lib from 22.9.1 to 22.10.5 in /desktop (#2072)
Summary:
allow-large-files
Bumps [app-builder-lib](https://github.com/electron-userland/electron-builder) from 22.9.1 to 22.10.5.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a href="https://github.com/electron-userland/electron-builder/releases">app-builder-lib's releases</a>.</em></p>
<blockquote>
<h2>22.10.5</h2>
<p>We have a new maintainer — welcome Mike Maietta (<a href="https://github.com/mmaietta"><code>@​mmaietta</code></a>)!</p>
<p><strong>electron-updater</strong>  4.3.8 contains fix for <a href="https://github.com/electron-userland/electron-builder/issues/5595">#5595</a>. This version is a pre-release.</p>
<h3>Bug Fixes</h3>
<ul>
<li>Look for the Amazon cred header to remove auth header (<a href="https://github.com/electron-userland/electron-builder/issues/5594">#5594</a>) (<a href="46a8840bb4">46a8840</a>)</li>
<li><strong>mac:</strong> fix &quot;Contents/Info.plist&quot; don't have identical SHAs when creating a universal build (<a href="https://github.com/electron-userland/electron-builder/issues/5550">#5550</a>) (<a href="0ba839b72b">0ba839b</a>)</li>
<li>updating nsis script to properly identify arm64 vs x64 vs ia32 package files within universal installers. (<a href="https://github.com/electron-userland/electron-builder/issues/5558">#5558</a>) (<a href="60f7fe367c">60f7fe3</a>)</li>
<li><strong>mac:</strong> Allow arm64 macs to update to x64 version if no arm64 version available (<a href="https://github.com/electron-userland/electron-builder/issues/5524">#5524</a>) (<a href="dc5c2f8e77">dc5c2f8</a>)</li>
<li><strong>mac:</strong> Pass platformName and options in doPack (<a href="https://github.com/electron-userland/electron-builder/issues/5511">#5511</a>) (<a href="f78e3f48d7">f78e3f4</a>)</li>
<li><strong>mac:</strong> Workaround for hdiutil randomly failing (<a href="https://github.com/electron-userland/electron-builder/issues/5431">#5431</a>) (<a href="https://github.com/electron-userland/electron-builder/issues/5464">#5464</a>) (<a href="53270cfe4e">53270cf</a>)</li>
<li>binary detection signing (<a href="https://github.com/electron-userland/electron-builder/issues/5493">#5493</a>) (<a href="a6e86b5930">a6e86b5</a>), closes <a href="https://github.com/electron-userland/electron-builder/issues/5465">#5465</a></li>
<li>ci-tests (<a href="https://github.com/electron-userland/electron-builder/issues/5523">#5523</a>) (<a href="ced6e50b93">ced6e50</a>)</li>
</ul>
<h3>Features</h3>
<ul>
<li><strong>electron-updater:</strong> follow <code>autoInstallOnAppQuit = false</code> on macOS (<a href="https://github.com/electron-userland/electron-builder/issues/5271">#5271</a>) (<a href="1643d56960">1643d56</a>)</li>
<li>add support for executableName to non-Linux Platforms (<a href="https://github.com/electron-userland/electron-builder/issues/5409">#5409</a>) (<a href="106b68010f">106b680</a>)</li>
<li>Custom electronDist callback (<a href="https://github.com/electron-userland/electron-builder/issues/5527">#5527</a>) (<a href="4f4e018771">4f4e018</a>)</li>
<li>macOS default architecture (<a href="https://github.com/electron-userland/electron-builder/issues/5495">#5495</a>) (<a href="https://github.com/electron-userland/electron-builder/issues/5504">#5504</a>) (<a href="5203d7eb15">5203d7e</a>)</li>
</ul>
<h2>22.10.4</h2>
<h3>Bug Fixes</h3>
<ul>
<li>CI unit tests (<a href="https://github.com/electron-userland/electron-builder/issues/5489">#5489</a>) (<a href="637334ddba">637334d</a>)</li>
</ul>
<h3>Features</h3>
<ul>
<li>Apple Silicon Universal Support (<a href="https://github.com/electron-userland/electron-builder/issues/5481">#5481</a>) (<a href="ca20151c34">ca20151</a>)</li>
<li><strong>mas:</strong> Apple Silicon support (<a href="https://github.com/electron-userland/electron-builder/issues/5484">#5484</a>) (<a href="6b7d30555d">6b7d305</a>)</li>
</ul>
<h3>Reverts</h3>
<ul>
<li>Revert &quot;fix: codesign all binary-like files (<a href="https://github.com/electron-userland/electron-builder/issues/5322">#5322</a>)&quot; (<a href="https://github.com/electron-userland/electron-builder/issues/5488">#5488</a>) (<a href="026227888f">0262278</a>), closes <a href="https://github.com/electron-userland/electron-builder/issues/5322">#5322</a> <a href="https://github.com/electron-userland/electron-builder/issues/5488">#5488</a></li>
</ul>
<h2>22.10.3</h2>
<h3>Bug Fixes</h3>
<ul>
<li>signing of playwright (<a href="https://github.com/electron-userland/electron-builder/issues/5451">#5451</a>) (<a href="50750683b1">5075068</a>)</li>
<li><strong>dmg:</strong> new version of mac_alias (<a href="https://github.com/electron-userland/electron-builder/issues/5460">#5460</a>) (<a href="a8acb583bc">a8acb58</a>)</li>
<li>compiler error and test updates (<a href="https://github.com/electron-userland/electron-builder/issues/5449">#5449</a>) (<a href="0dec1b8c19">0dec1b8</a>)</li>
<li><strong>AppImage:</strong> Add default argument --no-sandbox (<a href="https://github.com/electron-userland/electron-builder/issues/4496">#4496</a>) (<a href="ede6d50ddb">ede6d50</a>)</li>
<li><strong>linux:</strong> Linux icon is not set if path is not explicitly defined in config (<a href="https://github.com/electron-userland/electron-builder/issues/5385">#5385</a>) (<a href="9fd950bc04">9fd950b</a>)</li>
<li><strong>nsis:</strong> cs locale typos in messages (<a href="https://github.com/electron-userland/electron-builder/issues/5358">#5358</a>) (<a href="0fb69b5d11">0fb69b5</a>)</li>
<li>codesign all binary-like files (<a href="https://github.com/electron-userland/electron-builder/issues/5322">#5322</a>) (<a href="27ea1b2b9c">27ea1b2</a>)</li>
</ul>

</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a href="79940292bd"><code>7994029</code></a> Cannot read property 'log' of undefined (<a href="https://github.com/electron-userland/electron-builder/issues/5622">#5622</a>)</li>
<li><a href="1643d56960"><code>1643d56</code></a> feat(electron-updater): follow <code>autoInstallOnAppQuit = false</code> on macOS (<a href="https://github.com/electron-userland/electron-builder/issues/5271">#5271</a>)</li>
<li><a href="0360cd1705"><code>0360cd1</code></a> chore(build-utils): remove unreachable useless statement in createMessage (<a href="https://github.com/electron-userland/electron-builder/issues/5">https://github.com/facebook/flipper/issues/5</a>...</li>
<li><a href="c348e318ce"><code>c348e31</code></a> Add &quot;open&quot; guard for AsarUtil to fix concurrent builds (<a href="https://github.com/electron-userland/electron-builder/issues/5567">#5567</a>)</li>
<li><a href="11aa06c701"><code>11aa06c</code></a> Detect CI tag for Bitbucket pipelines</li>
<li><a href="8decc18674"><code>8decc18</code></a> (fix) master branch depCheck + tests (<a href="https://github.com/electron-userland/electron-builder/issues/5630">#5630</a>)</li>
<li><a href="46a8840bb4"><code>46a8840</code></a> fix: Look for the Amazon cred header to remove auth header (<a href="https://github.com/electron-userland/electron-builder/issues/5594">#5594</a>)</li>
<li><a href="0ba839b72b"><code>0ba839b</code></a> fix(mac): fix &quot;Contents/Info.plist&quot; don't have identical SHAs when creating a...</li>
<li><a href="60f7fe367c"><code>60f7fe3</code></a> fix: updating nsis script to properly identify arm64 vs x64 vs ia32 package f...</li>
<li><a href="5de0db981d"><code>5de0db9</code></a> chore: lint</li>
<li>Additional commits viewable in <a href="https://github.com/electron-userland/electron-builder/compare/v22.9.1...v22.10.5">compare view</a></li>
</ul>
</details>
<br />

[![Dependabot compatibility score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=app-builder-lib&package-manager=npm_and_yarn&previous-version=22.9.1&new-version=22.10.5)](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/2072

Reviewed By: passy

Differential Revision: D27230105

Pulled By: priteshrnandgaonkar

fbshipit-source-id: e53e942319a15d982797f7ce3af128a8b25b357f
2021-03-23 08:46:58 -07:00
Anton Nikolaev
f468f0e07d Produce tsc typings for "flipper" package
Summary: This diffs refactors tsc projects structure and structure of our custom typings to allow producing typescript typings for "flipper" package. In next diffs I'm going to use the produced typings to check compatibility of plugins with certain versions of Flipper, e.g. to check whether plugin is compatible with current "stable" and "insiders" version.

Reviewed By: passy

Differential Revision: D26997158

fbshipit-source-id: a0416c7139bf08ec9d175730da4c4c2a8768eeb7
2021-03-17 14:03:38 -07:00
Anton Nikolaev
f508a35ff9 Fix patch release versioning for open-source version
Summary: Patch was always set to "0" for open source releases even if it is set to "1" in package.json

Reviewed By: passy

Differential Revision: D26975947

fbshipit-source-id: b3f127c9746797fbb5a79dfcd9bd52210c3a7df8
2021-03-11 04:32:21 -08:00
Anton Nikolaev
58b2daea02 Bundle all plugins script
Summary: New script which bundles all plugins. It is faster to bundle them all in one script rather than call "build-plugin" for each of them. The new script will be used in CI to catch regressions when some plugins cannot be bundled into standalone packages.

Reviewed By: passy

Differential Revision: D26918103

fbshipit-source-id: dbc5c4cd706e8d585718a198dbd7ae9ffd988e28
2021-03-10 08:09:02 -08:00
Anton Nikolaev
c065760d15 Stable babel transformation cache key
Summary:
This diff makes babel transformation cache key stable. With the previous approach it was changed on each CI build so it was not possible to persist cache between builds. Now it is computed from the transformation package content after each build. Because of that it is equal for every CI build while Babel transformations unchanged and so we could use same cache on different Sandcastle agents.

In addition to that, it makes it possible to specify directory for Metro cache so we can save/restore it in CI builds.

Reviewed By: mweststrate

Differential Revision: D26877989

fbshipit-source-id: 7cb04a177f86e61986585e5a74d9c7396ddddc18
2021-03-10 08:09:02 -08:00
Anton Nikolaev
baeb8ba5be Performance improvements for "build-plugin" task
Summary:
Few improvements for "build-plugin" task which together with Sandcastle command changes (D26872427) helps to build all plugins in CI ~30% faster if most of them has not changed (which is usually the case):
1) compute package checksum in the same script to not call additional yarn scripts for each plugin
2) avoid packaging plugin if it's checksum has not changed since last release

Reviewed By: mweststrate

Differential Revision: D26872253

fbshipit-source-id: 968102d32a1550ea7503f1169f0ef2863296383f
2021-03-10 08:09:02 -08:00
Anton Nikolaev
fa3ff83595 Rename star/unstar actions to enable/disable/switch
Summary:
Renamed actions "star" and "unstar" everywhere to "enable", "disable" and "switch". The logic behind original "star" action changed significantly, so this rename just makes everything much clearer.

Please note that as a part of rename persisted state fields "userStarredPlugins" and "userStarredDevicePlugins" were renamed. I've added a "redux-persist" migration for seamless transition.

Reviewed By: passy

Differential Revision: D26606459

fbshipit-source-id: 83ad475f9b0231194701c40a2cdbda36f02c3d10
2021-02-24 05:30:57 -08:00
Anton Nikolaev
eba9bafb74 Fix running "insiders" dev build
Summary: Fixed passing parameter for running dev build as "insiders" via env var. It was broken before and it was only possible to pass it via command line.

Reviewed By: passy

Differential Revision: D26578901

fbshipit-source-id: a579ac5bb6e5527abbe978318bf0c0398f76f1fe
2021-02-23 05:07:44 -08:00
Anton Nikolaev
4cb40de3f5 Device plugin management (3/n): unbundle less used device plugins from Flipper Insiders builds
Summary: Now as we can install device plugins from Marketplace, I was able to unbundle device plugins which were used quite rarely, but still added ~3 MB to the final Flipper bundle.

Reviewed By: mweststrate

Differential Revision: D26337297

fbshipit-source-id: 23a36cc15ca976a1215440192718d985e1f322fd
2021-02-16 10:50:19 -08:00
Pascal Hartig
aacf5b8565 Hard-code mutable version info for Windows
Summary:
This is quite hacky but avoids having to patch electron-builder directly.

We're intercepting the signing/editing process on Windows and triggering it ourselves while overriding version information that otherwise changes for every release causing cache invalidations to occur. This does *not* change the version display in the app as we're not depending on the PE metadata but on the version in the `package.json`.

Reviewed By: nikoant, mweststrate

Differential Revision: D25973921

fbshipit-source-id: 0fad07f3597fba9927643d24fba12f8750ca54bc
2021-01-21 03:43:17 -08:00
Pascal Hartig
4a8e98733d Simpler win sign exception
Summary:
We're skipping the signing and editing of EXEs on Windows. This is only temporary but I want to have an atomic commit we can go back to. This is to avoid cache eviction due to version numbers being encoded in the binary.

This means you're not getting the logo on the binary and copyright information, etc. We're not actually shipping these right now, so the real-world impact of this is zero.

Reviewed By: mweststrate

Differential Revision: D25973944

fbshipit-source-id: d076919acfaac1f618178294baff3e9122d820bf
2021-01-20 09:14:21 -08:00
Pascal Hartig
f6087cf765 Fix typo
Summary: Per title

Reviewed By: mweststrate

Differential Revision: D25973952

fbshipit-source-id: cf01555d3536da1eef2cd386aa5def424dc3f159
2021-01-20 09:14:21 -08:00
dependabot[bot]
ea4b8b8f8a Bump socket.io from 2.3.0 to 3.1.0 in /desktop (#1845)
Summary:
Bumps [socket.io](https://github.com/socketio/socket.io) from 2.3.0 to 3.1.0.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a href="https://github.com/socketio/socket.io/releases">socket.io's releases</a>.</em></p>
<blockquote>
<h2>3.1.0</h2>
<p>In order to ease the migration to Socket.IO v3, the v3 server is now able to communicate with v2 clients:</p>
<pre lang="js"><code>const io = require(&quot;socket.io&quot;)({
  allowEIO3: true // false by default
});
</code></pre>
<p>Note: the <code>allowEIO3</code> refers to the version 3 of the Engine.IO protocol which is used in Socket.IO v2</p>
<h3>Features</h3>
<ul>
<li>confirm a weak but matching ETag (<a href="https://github-redirect.dependabot.com/socketio/socket.io/issues/3485">#3485</a>) (<a href="161091dd4c">161091d</a>)</li>
<li><strong>esm:</strong> export the Namespace and Socket class (<a href="https://github-redirect.dependabot.com/socketio/socket.io/issues/3699">#3699</a>) (<a href="233650c222">233650c</a>)</li>
<li>add support for Socket.IO v2 clients (<a href="9925746c8e">9925746</a>)</li>
<li>add room events (<a href="155fa6333a">155fa63</a>)</li>
</ul>
<h3>Bug Fixes</h3>
<ul>
<li>allow integers as event names (<a href="1c220ddbf4">1c220dd</a>)</li>
</ul>
<h4>Links:</h4>
<ul>
<li>Milestone: -</li>
<li>Diff: <a href="https://github.com/socketio/socket.io/compare/3.0.5...3.1.0">https://github.com/socketio/socket.io/compare/3.0.5...3.1.0</a></li>
<li>Client release: <a href="https://github.com/socketio/socket.io-client/releases/tag/3.1.0">3.1.0</a></li>
<li>engine.io version:  <code>~4.1.0</code></li>
<li>ws version: <code>~7.4.2</code></li>
</ul>
<h2>3.0.5</h2>
<h3>Bug Fixes</h3>
<ul>
<li>properly clear timeout on connection failure (<a href="170b739f14">170b739</a>)</li>
</ul>
<h3>Reverts</h3>
<ul>
<li>restore the socket middleware functionality (<a href="bf54327421">bf54327</a>)</li>
</ul>
<h4>Links:</h4>
<ul>
<li>Milestone: -</li>
<li>Diff: <a href="https://github.com/socketio/socket.io/compare/3.0.4...3.0.5">https://github.com/socketio/socket.io/compare/3.0.4...3.0.5</a></li>
<li>Client release: <a href="https://github.com/socketio/socket.io-client/releases/tag/3.0.5">3.0.5</a></li>
<li>engine.io version:  <code>~4.0.6</code></li>
<li>ws version: <code>~7.4.2</code></li>
</ul>

</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a href="https://github.com/socketio/socket.io/blob/master/CHANGELOG.md">socket.io's changelog</a>.</em></p>
<blockquote>
<h1><a href="https://github.com/socketio/socket.io/compare/3.0.5...3.1.0">3.1.0</a> (2021-01-15)</h1>
<h3>Features</h3>
<ul>
<li>confirm a weak but matching ETag (<a href="https://github-redirect.dependabot.com/socketio/socket.io/issues/3485">#3485</a>) (<a href="161091dd4c">161091d</a>)</li>
<li><strong>esm:</strong> export the Namespace and Socket class (<a href="https://github-redirect.dependabot.com/socketio/socket.io/issues/3699">#3699</a>) (<a href="233650c222">233650c</a>)</li>
<li>add support for Socket.IO v2 clients (<a href="9925746c8e">9925746</a>)</li>
<li>add room events (<a href="155fa6333a">155fa63</a>)</li>
</ul>
<h3>Bug Fixes</h3>
<ul>
<li>allow integers as event names (<a href="1c220ddbf4">1c220dd</a>)</li>
</ul>
<h2><a href="https://github.com/socketio/socket.io/compare/3.0.4...3.0.5">3.0.5</a> (2021-01-05)</h2>
<h3>Bug Fixes</h3>
<ul>
<li>properly clear timeout on connection failure (<a href="170b739f14">170b739</a>)</li>
</ul>
<h3>Reverts</h3>
<ul>
<li>restore the socket middleware functionality (<a href="bf54327421">bf54327</a>)</li>
</ul>
<h2><a href="https://github.com/socketio/socket.io/compare/3.0.3...3.0.4">3.0.4</a> (2020-12-07)</h2>
<h2><a href="https://github.com/socketio/socket.io/compare/3.0.2...3.0.3">3.0.3</a> (2020-11-19)</h2>
<h2><a href="https://github.com/socketio/socket.io/compare/3.0.1...3.0.2">3.0.2</a> (2020-11-17)</h2>
<h3>Bug Fixes</h3>
<ul>
<li>merge Engine.IO options (<a href="43705d7a91">43705d7</a>)</li>
</ul>
<h2><a href="https://github.com/socketio/socket.io/compare/3.0.0...3.0.1">3.0.1</a> (2020-11-09)</h2>
<h3>Bug Fixes</h3>
<ul>
<li>export ServerOptions and Namespace types (<a href="https://github-redirect.dependabot.com/socketio/socket.io/issues/3684">#3684</a>) (<a href="f62f180eda">f62f180</a>)</li>
<li><strong>typings:</strong> update the signature of the emit method (<a href="50671d984a">50671d9</a>)</li>
</ul>

</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a href="f05a4a6f82"><code>f05a4a6</code></a> chore(release): 3.1.0</li>
<li><a href="2c883f5d4e"><code>2c883f5</code></a> chore: bump socket.io-adapter version</li>
<li><a href="161091dd4c"><code>161091d</code></a> feat: confirm a weak but matching ETag (<a href="https://github-redirect.dependabot.com/socketio/socket.io/issues/3485">#3485</a>)</li>
<li><a href="d52532b7be"><code>d52532b</code></a> docs: add other client implementations (<a href="https://github-redirect.dependabot.com/socketio/socket.io/issues/3593">#3593</a>)</li>
<li><a href="6b1d7901db"><code>6b1d790</code></a> docs(examples): Improve the chat example with more ES6 features (<a href="https://github-redirect.dependabot.com/socketio/socket.io/issues/3240">#3240</a>)</li>
<li><a href="b55892ae80"><code>b55892a</code></a> docs: add run on repl.it badge to README (<a href="https://github-redirect.dependabot.com/socketio/socket.io/issues/3617">#3617</a>)</li>
<li><a href="233650c222"><code>233650c</code></a> feat(esm): export the Namespace and Socket class (<a href="https://github-redirect.dependabot.com/socketio/socket.io/issues/3699">#3699</a>)</li>
<li><a href="9925746c8e"><code>9925746</code></a> feat: add support for Socket.IO v2 clients</li>
<li><a href="de8dffd252"><code>de8dffd</code></a> refactor: strict type check in if expressions (<a href="https://github-redirect.dependabot.com/socketio/socket.io/issues/3744">#3744</a>)</li>
<li><a href="f8a66fd11a"><code>f8a66fd</code></a> chore(release): 3.0.5</li>
<li>Additional commits viewable in <a href="https://github.com/socketio/socket.io/compare/2.3.0...3.1.0">compare view</a></li>
</ul>
</details>
<br />

[![Dependabot compatibility score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=socket.io&package-manager=npm_and_yarn&previous-version=2.3.0&new-version=3.1.0)](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/1845

Reviewed By: mweststrate

Differential Revision: D25945568

Pulled By: priteshrnandgaonkar

fbshipit-source-id: 31e4955729b2ce16de88243e9520429f59922d58
2021-01-19 18:45:38 -08:00
Michel Weststrate
9cdb36ec0e Add --public-build option to start an OSS like build of Flipper
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
2021-01-18 06:48:03 -08:00
Chaiwat Ekkaewnumchai
8af2d819b0 Remove Trailing Whitespace in Changelog
Summary: In D25584424 (V1), Sandcastle complained about trailing whitespace. This diff removes the adde description if none can be retrieved

Reviewed By: nikoant

Differential Revision: D25608443

fbshipit-source-id: a798bb0c40afaaafd55c90c70177f7c2af79af34
2020-12-17 19:33:40 -08:00
Anton Nikolaev
c14bab3677 Unbundle less popular plugins for Insiders builds
Summary: Unbundle most of plugins from Insiders version of Flipper. Users will need to install them from Marketplace.

Reviewed By: passy

Differential Revision: D25558043

fbshipit-source-id: 648b0d4c83d9096972b5463cdcaa3de23426bdda
2020-12-15 09:31:59 -08:00
Anton Nikolaev
bd01b58566 Sandy-based plugin auto-update UI
Summary:
New UX/UI for plugin auto-updates based on Sandy:
- disabled plugins auto-updated silently without any notifications as there is no active state for them so there is nothing to loose.
- enabled plugins can have some state and user can actually work with them, so we cannot reload them automatically. Instead, we show notification in the top of the plugin container asking user to reload the plugin when she is ready.
- if the auto-updated plugin failed to reload - show error notification.
- for non-sandy we continue using notifications as before.

Reviewed By: mweststrate

Differential Revision: D25530384

fbshipit-source-id: de3d0565ef0b930c9343b9e0ed07a4acb51885be
2020-12-15 09:31:57 -08:00
Anton Nikolaev
5383017299 Separate interfaces for installed, bundled and downloadable plugins
Summary:
I've re-designed interfaces describing plugins as I found that mental overhead working with them became too expensive because of slightly flawed design. However this cascaded changes in many files so you can see how extensively these interfaces used in our codebase.

Before this change we had one interface PluginDetails which described three different entities: 1) plugins installed on the disk 2) plugins bundled into Flipper 3) plugins available on Marketplace. It's hard to use this "general" PluginDetails interface because of this as you always need to think about all three use cases everywhere.

After this change we have 3 separate interfaces: InstalledPluginDetails, BundledPluginDetails and DownloadablePluginDetails and things became much type-safer now.

Reviewed By: mweststrate

Differential Revision: D25530383

fbshipit-source-id: b93593916a980c04e36dc6ffa168797645a0ff9c
2020-12-15 09:31:57 -08:00
Anton Nikolaev
f3e1a48ff3 Plugin Marketplace state refresh and cache
Summary:
Separate dispatcher for periodic refreshing available plugins data from the Marketplace backend and caching it locally.

The plugin auto update downloader subscribes to these state refreshes and automatically schedules plugin update downloads when required.

Reviewed By: passy

Differential Revision: D25360897

fbshipit-source-id: 5b6d95b63ff47b8ae9ad8b12e2480d1fed524ca5
2020-12-15 09:31:54 -08:00
Michel Weststrate
08b5644253 Killed Flipper headless
Reviewed By: nikoant

Differential Revision: D24160480

fbshipit-source-id: 221e60473dddc0a49cea674e210beb6f85b1b03c
2020-12-15 01:46:44 -08:00
Anton Nikolaev
56361debb2 Differentiate insider builds from stable builds
Summary: Each build will have an embedded file specifying the target release channel for the build. This allows us to do some customisations, e.g. show "Insiders" label in the title and enable Sandy by default for insiders builds.

Reviewed By: jknoxville

Differential Revision: D25399045

fbshipit-source-id: 8e26d0754d0713ced823f86b30b54491d55b4d97
2020-12-08 12:38:02 -08:00
Anton Nikolaev
bc9412426f Parse build script args with yargs
Summary: We have some custom parsing here and there and I'm going to add some more args, so decided it's better to cleanup this a bit.

Reviewed By: jknoxville

Differential Revision: D25398421

fbshipit-source-id: 9d43029eef07648d0b01590e9cf7e7fe400b31d0
2020-12-08 12:38:02 -08:00
Michel Weststrate
42ef4d59e6 Introduce FLIPPER_ENABLE_ALL_GKS dev option
Summary: Was tired off figuring out GK's to be able to debug a plugin, so added a flag that allows me  to start Flipper with all plugins enabled :)

Reviewed By: passy

Differential Revision: D25301773

fbshipit-source-id: 668b92c4ddbbeb3f4b056035de394800bbfa5377
2020-12-03 04:41:01 -08:00
Anton Nikolaev
dbc888613b Do not bump every package version for every release
Summary:
This diff sets all package version to "0.0.0" except of the root package and changes the bump script to only bump version in the root package. This should reduce possibility of conflicts on release diffs. Anyway we always use the same version for all of our packages, so we can only set it to the root.

Before npm publishing we will set all package versions to the same number as in the root package (we actually already do that) so there will be no differences except we won't need to bump version in  more than 100 packages each release.

Reviewed By: mweststrate

Differential Revision: D25162373

fbshipit-source-id: 02fe401bee72845339c67925c130027bdaee559d
2020-12-02 02:38:47 -08:00
Michel Weststrate
8025c49768 Upgrade to TypeScript 4.1
Summary:
allow-large-files

Upgrade to TypeScript 4.1

Reviewed By: nikoant

Differential Revision: D25122073

fbshipit-source-id: 7d2bc6f97595c825c9527b0c6ecab07698d5f981
2020-11-26 04:22:05 -08:00
Anton Nikolaev
32ca27f4f7 Fix assigning unique numbers to builds
Summary: Just rolling back a part of D24782300 (dce7422ba6) where I've accidently removed using of unique number because did not understood how it is passed and wrongly decided it is not needed.

Reviewed By: passy

Differential Revision: D25027458

fbshipit-source-id: f623732c161bca01859f91444c2a0ed211a5fad6
2020-11-17 11:51:18 -08:00
Anton Nikolaev
dce7422ba6 Pass full version number to release shell scripts
Summary: Scripts now accept full version instead of only patch part of it.

Reviewed By: jknoxville

Differential Revision: D24782300

fbshipit-source-id: 1c454beb9640a5b38669fe39eab642245b0f0f91
2020-11-09 11:24:23 -08:00
Pascal Hartig
3a839bddae Download icons with retry
Summary:
This quite often fails in CI. Adobe's fetch has some very sensible defaults
and will do exponential backoff and retry for up to a minute.
That should hopefully fix issues where we have to restart the whole build
just to fix one measly icon download.

Reviewed By: jknoxville

Differential Revision: D24649807

fbshipit-source-id: efbc9eb29e4b5a0f74b0b6ad6dea4aaf86391363
2020-11-05 05:17:29 -08:00
Edward Yerburgh
8a31e984b3 Use QPL-managed QPLCore and PigeonClient (#1612)
Summary:
Pull Request resolved: https://github.com/facebook/flipper/pull/1612

* Use the QPL-managed QPLCore and PigeonClient.

**Facebook:**

js-shared/qpl and js-shared/pigeon-client are maintained by QPL in xplat/js-shared. I've updated the Metro config and tsconfig to allow the packages to be imported without breaking the open-source version.

Reviewed By: passy

Differential Revision: D24358369

fbshipit-source-id: 7f13d6c99d8ca6ebcd0e66bf0e5f25069370cce7
2020-10-26 02:29:09 -07:00
Anton Nikolaev
d4debc4185 Use dotenv for dev mode customisation
Summary: Allow using of .env file to pass env vars to be used in dev mode. Currently this allow to configure defaults for enabling fast refresh, automatic opening of dev tools and plugins to load.

Reviewed By: passy

Differential Revision: D24398938

fbshipit-source-id: 30a5d86b7906a7723a404cf84a1b8d50ae497dbc
2020-10-22 11:35:53 -07:00
Anton Nikolaev
2d9cf5a905 Option to load only specific plugins in dev mode
Summary: Currently we load all the plugins even if they are not required in dev mode, e.g. when you are developing a specific plugin. This diff adds an env var and command-line option to specify exact list of plugins to load. This makes dev mode startup faster and consume less memory.

Reviewed By: passy

Differential Revision: D24394146

fbshipit-source-id: 42a78c1ffb2632e657c2411e34e9c80fff18df3a
2020-10-22 11:35:53 -07:00
Anna Murawska
5e979403a0 Show FB-internal announcements only in internal changelog (#1544)
Summary:
Pull Request resolved: https://github.com/facebook/flipper/pull/1544

Added Facebook changelog file

Reviewed By: nikoant

Differential Revision: D23930322

fbshipit-source-id: bb6be359d36188f142d342604e50010170086610
2020-09-28 02:42:00 -07:00
Michel Weststrate
ecf4cff7cf Fix most lint warnings
Summary:
I noticed that after the typescript upgrade, I got several weird positives from ESLint (like unused parameters in a type definition, which are obviously always unused, e.g. `type onClick = (e: Event) => void`). After some investigation, it turned out these warnings are generated by eslint, but that those rules should be performaned by typescript/eslint instead. For future reference to which rules this applies:

https://github.com/typescript-eslint/typescript-eslint/blob/master/packages/eslint-plugin/README.md#extension-rules

Updated the config, and while at it, fixed all warnings in our codebase, except for `react-hooks/exhaustive-deps` warnings, since those require semantic changes.

This reduces the amount of eslint warnings from 86 to 39.

Reviewed By: passy

Differential Revision: D23905630

fbshipit-source-id: 0557708fd9ec6b17840a3c191e7d3baf225bdf23
2020-09-28 01:42:48 -07:00
Michel Weststrate
191df465b7 Updated to typescript 4
Summary:
allow-large-files

Updated to typescript 4. Note that this is no new major, the way TS numbers is that 4.0 is simply the number after 3.9 (so they refuse to use 3.10).

Primarily reason is that it allows us to use `/** deprecated */`. although there are definitely more interesting improvements

Reviewed By: passy, nikoant

Differential Revision: D23869445

fbshipit-source-id: 54e251b398b8698d9b18898ce66c3203b32aa356
2020-09-24 05:58:29 -07:00
Anton Nikolaev
f03d5d94ed Remove plugin compilation and loading from startup hot path
Summary:
- Removed compilation on startup which is not required anymore after switching to plugin spec v2.
- Removed from Node process ("static" package) all the dependencies which are not required anymore:  e.g. metro, babel etc.
- Plugin loading code from node process moved to browser process and made asyncronous.

Some expected benefits after these changes:
1) Reduced size of Flipper bundle (~4.5MB reduction for lzma package in my tests) as well as startup time. It's hard to say the exact startup time difference as it is very machine-dependent, and on my machine it was already fast ~1500ms (vs 5500ms for p95) and decreased by just 100ms. But I think we should definitely see some improvements on "launch time" analytics graph for p95/p99.
2) Plugin loading is async now and happens when UI is already shown, so perceptive startup time should be also better now.
3) All plugin loading code is now consolidated in "app/dispatcher/plugins.tsx" instead of being splitted between Node and Browser processes as before. So it will be easier to debug plugin loading.
4) Now it is possible to apply updates of plugins by simple refresh of browser window instead of full Electron process restart as before.
5) 60% less code in Node process. This is good because it is harder to debug changes in Node process than in Browser process, especially taking in account differences between dev/release builds. Because of this Node process often ended up broken after changes. Hopefully now it will be more stable.

Changelog: changed the way of plugin loading, and removed obsolete dependencies, which should reduce bundle size and startup time.

Reviewed By: passy

Differential Revision: D23682756

fbshipit-source-id: 8445c877234b41c73853cebe585e2fdb1638b2c9
2020-09-16 06:32:58 -07:00
John Knox
5f8ba09534 Add github links to changelog
Summary:
thefutureisnowoldman

Changelog: Changelog entries now link to their GitHub commits

Reviewed By: passy

Differential Revision: D22999105

fbshipit-source-id: 77e4884a3515245ba9296d8c4f59cdcb3c4b098d
2020-08-07 09:27:44 -07:00
Pascal Hartig
6233116fed Add devserver check
Reviewed By: jknoxville

Differential Revision: D22864430

fbshipit-source-id: ce37e6abeb3b152aedb2013bc9cd548807cad7b3
2020-07-31 04:57:19 -07:00
Anton Nikolaev
a8a16e24b3 Set exit code to 1 if script failed
Summary: Fixed scripts to return exit code 1 in case of error.

Reviewed By: passy

Differential Revision: D22357664

fbshipit-source-id: 1e067fe507e8f33cf21e70f3d15fd97175b9544e
2020-07-02 10:20:36 -07:00
Anton Nikolaev
228d09d572 Script for resolving plugin directory by its package name
Summary:
Changed "build-plugin" script to allow triggering release by plugin name (required to enable triggering releases by button in Marketplace):
1) Added new script to resolve plugin dir by name
2) Allow passing either plugin dir or name to "build-plugin" script

Reviewed By: passy

Differential Revision: D22354643

fbshipit-source-id: b7aca57acefc81ca0b6d9c7f359f63d8f0599e39
2020-07-02 02:48:19 -07:00
Michel Weststrate
bf79c9472e Always mock FBLogger during unit tests
Summary: Unit tests tend to randomly bail out once FBLogger is (indirectly) required by some module under test. This makes sure FBLogger is stubbed by default. We might want to do the same for `User` in the future.

Reviewed By: jknoxville

Differential Revision: D22186274

fbshipit-source-id: 2ede364c4b691d69826781355592226b075d8367
2020-07-01 09:12:35 -07:00
Michel Weststrate
2383dc85f8 Initialized flipper-plugin library
Summary: Set up an initial library which can (should) be used by plugins in the future.

Reviewed By: jknoxville

Differential Revision: D22019554

fbshipit-source-id: 502b14b34b2c9c117cea377ab6ebbf150e6faee9
2020-07-01 09:12:35 -07:00
Anton Nikolaev
dcd909779b Script to list all plugins included into Flipper desktop workspaces
Summary: Script to list all plugins included into Flipper desktop workspaces.

Reviewed By: passy

Differential Revision: D22256917

fbshipit-source-id: a3d8a0f9faea6e462a2f22be155d99eb22eb59d8
2020-06-26 09:07:12 -07:00
Anton Nikolaev
666032fa46 "yarn build-plugin" command added
Summary: Added "build-plugin" command. Can be used like this: `yarn build-plugin fresco` which produces package to 'sonar/dist/plugins/fresco.tgz'

Reviewed By: mweststrate

Differential Revision: D22160253

fbshipit-source-id: 48b202984b0f515bf253b595be1f59953a9ce411
2020-06-22 08:15:56 -07:00
Anton Nikolaev
b69996ca50 Remove inlined source maps from debug builds
Summary: Disabled producing inline source maps for debug builds. Source maps are already writte to "map" files, so this does not make sense to also inline them to the js bundle. Passing "sourceMapUrl" parameter to Metro fixed this.

Reviewed By: mweststrate

Differential Revision: D22159501

fbshipit-source-id: f06225cd43f44a7f93afcc32bb0501323b35d0c3
2020-06-22 06:11:29 -07:00
Anton Nikolaev
496f97a1ba Disable source maps for Flipper release builds
Summary:
Disabled source maps for Flipper release builds.
1) I found that source maps was not only written to the "bundle.map" file, but also inlined into "bundle.js" in base64 format which hugely affected the total bundle size.
2) In addition to the size, these inlined source maps were also one of 2 causes that Flipper package size was not deterministic and changed so significantly in every diff even when Flipper was not touched at all.

Changelog: Disabled source maps in Flipper release builds thus reducing size by ~20%.

Reviewed By: mweststrate

Differential Revision: D22158898

fbshipit-source-id: b35cfba80553d01aec256983c3ba772ed0534d8f
2020-06-22 05:37:29 -07:00