Commit Graph

118 Commits

Author SHA1 Message Date
Lorenzo Blasa
335dec1a08 Adds some settings to check flipper-server state
Summary:
There's one setting: to enable or disable flipper-server.

However, I've added some current running state to it. If there's a better way of doing this, please do let me know.

Reviewed By: aigoncharov

Differential Revision: D37276670

fbshipit-source-id: f6c941cf0cfe55c267b9bcb9f799934fba1e28ef
2022-06-22 05:26:11 -07:00
Lorenzo Blasa
8c67b049ab Attach connection handler earlier
Summary:
This change attaches our event handlers as soon as the ws is created.

As a consequence, we need to wait until the server has created any necessary instances required to process incoming requests.

To achieve this, I created a type called `Lazy`.

This type wraps around a value and a promise to that value. Callers can check if the value is set. If not, callers can wait for it.

Ultimately, the value can be set outside of the promise itself.

Reviewed By: passy

Differential Revision: D37284939

fbshipit-source-id: 17dec548d7155a3d65440c9584cec07cbb826c37
2022-06-21 12:48:43 -07:00
Lorenzo Blasa
9cc8e4076f flipper-server refactor
Summary:
This changes moves most of the functionality found in flipper-server to flipper-server-core.

flipper-server will mostly be a package that wraps around flipper-server-core. Staying in flipper-server:
- Command line args
- Orchestration to start the necessary servers

Reviewed By: aigoncharov

Differential Revision: D36807087

fbshipit-source-id: f29002c7cc5d08b8c5184fdaaa02ba22562a9f45
2022-06-07 02:42:16 -07:00
Lorenzo Blasa
ee64216725 Extract logger and write to file
Summary:
This change extracts logging logic out from startFlipperServer.

Logs will also be written to disk.

Reviewed By: passy

Differential Revision: D36473768

fbshipit-source-id: b1df9df79b4aced0d3ba2e8c243aa8d44cf83703
2022-06-01 02:37:03 -07:00
Lorenzo Blasa
2fe7e73175 Refactor checks to see if socket is in use
Summary:
These are utility methods that are not specific to startServer.

They will be reused by other components needing to check if something is listening to a port.

Make socket path is also extracted.

Reviewed By: passy

Differential Revision: D36473641

fbshipit-source-id: 73ed67912052896696b59670cb757d22761eeaa1
2022-05-31 03:31:05 -07:00
Andrey Goncharov
4eca8d1088 Add isHeadlessBuild to EnvironmentInfo
Summary: Allows to attribute errors to flipper server or flipper electron

Reviewed By: passy

Differential Revision: D36698504

fbshipit-source-id: 6d07216fd05aa48b7c8cca5b53145916b64526eb
2022-05-27 02:37:53 -07:00
dependabot[bot]
8ce64bbec4 Bump yargs from 17.2.1 to 17.4.1 in /desktop (#3714)
Summary:
Bumps [yargs](https://github.com/yargs/yargs) from 17.2.1 to 17.4.1.
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a href="https://github.com/yargs/yargs/blob/main/CHANGELOG.md">yargs's changelog</a>.</em></p>
<blockquote>
<h3><a href="https://github.com/yargs/yargs/compare/v17.4.0...v17.4.1">17.4.1</a> (2022-04-09)</h3>
<h3>Bug Fixes</h3>
<ul>
<li>coerce pollutes argv (<a href="https://github-redirect.dependabot.com/yargs/yargs/issues/2161">https://github.com/facebook/flipper/issues/2161</a>) (<a href="2d1136d303">2d1136d</a>)</li>
<li><strong>completion:</strong> don't show positional args choices with option choices (<a href="https://github-redirect.dependabot.com/yargs/yargs/issues/2148">https://github.com/facebook/flipper/issues/2148</a>) (<a href="b58b5bc2cd">b58b5bc</a>)</li>
<li>hide hidden options from completion (<a href="https://github-redirect.dependabot.com/yargs/yargs/issues/2143">https://github.com/facebook/flipper/issues/2143</a>) (<a href="e086dfad7f">e086dfa</a>), closes <a href="https://github-redirect.dependabot.com/yargs/yargs/issues/2142">https://github.com/facebook/flipper/issues/2142</a></li>
<li>show message when showHelpOnFail is chained globally (<a href="https://github-redirect.dependabot.com/yargs/yargs/issues/2154">https://github.com/facebook/flipper/issues/2154</a>) (<a href="ad9fcacb00">ad9fcac</a>)</li>
</ul>
<h2><a href="https://github.com/yargs/yargs/compare/v17.3.1...v17.4.0">17.4.0</a> (2022-03-19)</h2>
<h3>Features</h3>
<ul>
<li><strong>completion:</strong> choices will now work for all possible aliases of an option and not just the default long option (<a href="30edd50671">30edd50</a>)</li>
<li><strong>completion:</strong> positional arguments completion (<a href="https://github-redirect.dependabot.com/yargs/yargs/issues/2090">https://github.com/facebook/flipper/issues/2090</a>) (<a href="00e4ebbe3a">00e4ebb</a>)</li>
</ul>
<h3>Bug Fixes</h3>
<ul>
<li><strong>completion:</strong> changed the check for option arguments to match options that begin with '-', instead of '--', to include short options (<a href="30edd50671">30edd50</a>)</li>
<li><strong>completion:</strong> fix for completions that contain non-leading hyphens (<a href="30edd50671">30edd50</a>)</li>
<li>failed command usage string is missing arg descriptions and optional args (<a href="https://github-redirect.dependabot.com/yargs/yargs/issues/2105">https://github.com/facebook/flipper/issues/2105</a>) (<a href="d6e342d8ef">d6e342d</a>)</li>
<li>wrap unknown args in quotes (<a href="https://github-redirect.dependabot.com/yargs/yargs/issues/2092">https://github.com/facebook/flipper/issues/2092</a>) (<a href="6a2977867b">6a29778</a>)</li>
</ul>
<h3><a href="https://github.com/yargs/yargs/compare/v17.3.0...v17.3.1">17.3.1</a> (2021-12-23)</h3>
<h3>Bug Fixes</h3>
<ul>
<li><strong>translations:</strong> correct Korean translation (<a href="https://github-redirect.dependabot.com/yargs/yargs/issues/2095">https://github.com/facebook/flipper/issues/2095</a>) (<a href="c7c2b9eb34">c7c2b9e</a>)</li>
</ul>
<h2><a href="https://github.com/yargs/yargs/compare/v17.2.1...v17.3.0">17.3.0</a> (2021-11-30)</h2>
<h3>Features</h3>
<ul>
<li>fallback to default bash completion (<a href="74c0ba5cfc">74c0ba5</a>)</li>
</ul>
<h3>Bug Fixes</h3>
<ul>
<li>avoid legacy accessors (<a href="https://github-redirect.dependabot.com/yargs/yargs/issues/2013">https://github.com/facebook/flipper/issues/2013</a>) (<a href="adb0d11e02">adb0d11</a>)</li>
<li><strong>deps:</strong> update dependency yargs-parser to v21 (<a href="https://github-redirect.dependabot.com/yargs/yargs/issues/2063">https://github.com/facebook/flipper/issues/2063</a>) (<a href="76c19518d7">76c1951</a>)</li>
<li>don't fail if &quot;fileURLToPath(import.meta.url)&quot; throws (<a href="3a44796c84">3a44796</a>)</li>
<li>re-add options to check callback (<a href="https://github-redirect.dependabot.com/yargs/yargs/issues/2079">https://github.com/facebook/flipper/issues/2079</a>) (<a href="e75319d991">e75319d</a>)</li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a href="be525157f3"><code>be52515</code></a> chore(main): release 17.4.1 (<a href="https://github-redirect.dependabot.com/yargs/yargs/issues/2147">https://github.com/facebook/flipper/issues/2147</a>)</li>
<li><a href="2d1136d303"><code>2d1136d</code></a> fix: coerce pollutes argv (<a href="https://github-redirect.dependabot.com/yargs/yargs/issues/2161">https://github.com/facebook/flipper/issues/2161</a>)</li>
<li><a href="ad9fcacb00"><code>ad9fcac</code></a> fix: show message when showHelpOnFail is chained globally (<a href="https://github-redirect.dependabot.com/yargs/yargs/issues/2154">https://github.com/facebook/flipper/issues/2154</a>)</li>
<li><a href="b58b5bc2cd"><code>b58b5bc</code></a> fix(completion): don't show positional args choices with option choices (<a href="https://github-redirect.dependabot.com/yargs/yargs/issues/2148">https://github.com/facebook/flipper/issues/2148</a>)</li>
<li><a href="0bb49c3d86"><code>0bb49c3</code></a> samples: event.keyCode is deprecated, use new <code>.code</code> API (<a href="https://github-redirect.dependabot.com/yargs/yargs/issues/2125">https://github.com/facebook/flipper/issues/2125</a>)</li>
<li><a href="e086dfad7f"><code>e086dfa</code></a> fix: hide hidden options from completion (<a href="https://github-redirect.dependabot.com/yargs/yargs/issues/2143">https://github.com/facebook/flipper/issues/2143</a>)</li>
<li><a href="bcd59f1715"><code>bcd59f1</code></a> chore(main): release 17.4.0 (<a href="https://github-redirect.dependabot.com/yargs/yargs/issues/2108">https://github.com/facebook/flipper/issues/2108</a>)</li>
<li><a href="3cbc38ccbf"><code>3cbc38c</code></a> docs: fix hyphenation (<a href="https://github-redirect.dependabot.com/yargs/yargs/issues/2141">https://github.com/facebook/flipper/issues/2141</a>)</li>
<li><a href="00e4ebbe3a"><code>00e4ebb</code></a> feat(completion): positional arguments completion (<a href="https://github-redirect.dependabot.com/yargs/yargs/issues/2090">https://github.com/facebook/flipper/issues/2090</a>)</li>
<li><a href="c0661643fc"><code>c066164</code></a> docs: an example using inquirer prompting (<a href="https://github-redirect.dependabot.com/yargs/yargs/issues/2114">https://github.com/facebook/flipper/issues/2114</a>)</li>
<li>Additional commits viewable in <a href="https://github.com/yargs/yargs/compare/v17.2.1...v17.4.1">compare view</a></li>
</ul>
</details>
<br />

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

Reviewed By: timur-valiev

Differential Revision: D36371211

Pulled By: mweststrate

fbshipit-source-id: 8a67df778d5d4cb3c314eaf1463d9437fe4261bb
2022-05-23 07:29:26 -07:00
Andrey Goncharov
17b2e9d375 Connect companion events to Flipper Server
Reviewed By: passy

Differential Revision: D36517762

fbshipit-source-id: c6318b1b0705d1e6cbcf73973e2d6c9196914491
2022-05-23 03:38:23 -07:00
Lorenzo Blasa
aca1aca29c Accept connections from localhost coming from port 3000
Summary:
^

flipper-server verifies the origin of incoming connections as a way of preventing any host from connecting to flipper.

That's good.

This change expand the list of allowed origins to include localhost:3000 which is the default origin for Electron apps.

Error without this change:
```
Refused socket connection from cross domain request, origin: http://localhost:3000, host: localhost:52342. Expected origins: http://localhost:52342 or http://[::1]:52342 or http://::1:52342. Expected hosts: localhost:52342 or [::1]:52342 or ::1:52342
```

Reviewed By: passy

Differential Revision: D36440363

fbshipit-source-id: 883cadb49f245bca5d0a53a4f58c08cf45dd0189
2022-05-17 04:20:30 -07:00
Andrey Goncharov
d1ed676a48 Remove dynamic dependencies from flipper-server
Summary:
Currently, Flipper Server has a few productions dependencies (mac-ca, node-fetch) that are not bundled with the Flipper Server. It makes it harder to distribute Flipper Server, as now all potential consumers need not only to download the bundle, but also install these additional dependencies.
This diff makes it possible to bundle `mac-ca` and `node-fetch` with Flipper Server. As a result, Flipper Server becomes dependency-free in production.

Reviewed By: lblasa

Differential Revision: D36345213

fbshipit-source-id: 2cd6ba1b3301b45dc2295891964ba020fd107586
2022-05-13 03:19:47 -07:00
Lorenzo Blasa
242d26e199 Rename and documentation for start dev server (attach)
Summary:
Same as with the previous diff.

The function doesn't really start a server. Instead it attaches the routing of messages from the existing server into FlipperServer.

Reviewed By: passy

Differential Revision: D36310703

fbshipit-source-id: 7ac9a742fb36c3806597382c9aadcf96f4770484
2022-05-11 06:56:20 -07:00
Lorenzo Blasa
582966d139 Attach instead of start dev server and documentation updates
Summary:
^

Instead of 'start' use 'attach' as it seems closer to what the function actually does.

Reviewed By: passy

Differential Revision: D36310846

fbshipit-source-id: db90efc6ec3207b1a5a38139a3ba01d2f7d2aebd
2022-05-11 06:56:20 -07:00
Lorenzo Blasa
453ec4bd83 Rename base server to just server
Summary:
^

BaseServer doesn't really have any meaning. So, change it to just Server as it really creates the Express app and HTTP server attached to it.

Reviewed By: passy

Differential Revision: D36310822

fbshipit-source-id: eee5a2a395ca726679c1c4756ed58d4bc6be3cb8
2022-05-11 06:56:20 -07:00
Lorenzo Blasa
2493de75ab Remove unused import
Summary: ^

Reviewed By: passy

Differential Revision: D36310809

fbshipit-source-id: c9faa2b685fc57c8a022cf497a843f3c137716d7
2022-05-11 06:56:20 -07:00
Lorenzo Blasa
1818b87166 Rename startWebServerDev to startDevServer
Summary:
Rename 'startWebServerDev' to just 'startDevServer'.

It isn't really starting a web server though, more like installing routings and middleware to the existing created server.

Reviewed By: passy

Differential Revision: D36310765

fbshipit-source-id: 0af772012525fd7ad19e2aa6fa73cb3e7dcf2bef
2022-05-11 06:56:20 -07:00
Lorenzo Blasa
ec667bc26d Log listening port
Summary: Slight changes to the URL and port logging.

Reviewed By: passy

Differential Revision: D36310796

fbshipit-source-id: 553b9ce932792c471f8e0e2c1a0c7d79897ad59d
2022-05-11 06:56:20 -07:00
Pascal Hartig
14b83ad050 Don't tear down server on disconnect
Summary: These safeguards were added based on a discussion in D35088208 (56e94394ca) but turned out to be counter-productive. Every time a client disconnects now, we're tearing down the socket and the server, allowing for no future connections.

Reviewed By: lblasa

Differential Revision: D36252605

fbshipit-source-id: c3b6f85dea4054505a47d24a72a4aac403371c0f
2022-05-10 08:45:57 -07:00
Andrey Goncharov
b4498f070f Add flipper-server-companion to flipper-server
Summary: Start flipper-server-companion whenever a client connects to flipper-server and sets `server_companion` query parameter in a connection URL to true

Reviewed By: mweststrate

Differential Revision: D36098169

fbshipit-source-id: eb953e7d680b30aef1340f059264112387264c05
2022-05-10 05:13:24 -07:00
Andrey Goncharov
98dde53cda Add companion logging
Summary: Add top-level error logging to flipper-server. Use the top-level logging mechanism in flipper-companion.

Reviewed By: lblasa

Differential Revision: D36252218

fbshipit-source-id: 58d22b3b9bd51e597b5250478640f54d10277861
2022-05-10 05:13:24 -07:00
Pascal Hartig
d05d3f9336 Upgrade more /desktop deps
Summary: Taking care of the remaining dependabot tasks In my queue.

Reviewed By: mweststrate

Differential Revision: D36131782

fbshipit-source-id: f8a5ce18bfab7c5d50a88d64f9516d67bba4bd6d
2022-05-05 08:07:44 -07:00
Pascal Hartig
ef19d06239 Upgrade metro
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
2022-05-04 04:03:19 -07:00
Pascal Hartig
cc3aca0e8b Upgrade @types/node to one version everywhere
Summary: Caused some inconsistencies when running `tsc`. This brings them back in line.

Reviewed By: aigoncharov

Differential Revision: D36101548

fbshipit-source-id: b8f757c59f879911c9b0920fe11396246ffa37e2
2022-05-04 04:03:19 -07:00
Pascal Hartig
3032736294 Fix type errors for flipper-server and flipper-ui-browser
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
2022-05-03 09:55:04 -07:00
Pascal Hartig
fd23a9d626 Clean up socket on exit
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
2022-03-31 08:57:13 -07:00
Pascal Hartig
cfcbc75de9 Take unix domain socket max length into account
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
2022-03-31 06:29:21 -07:00
Pascal Hartig
5ce82405f7 Socket proxying error handling
Summary: More careful error handling as discussed in D35088208.

Reviewed By: aigoncharov

Differential Revision: D35251661

fbshipit-source-id: 8baab2b454494846411f7084e29c5fa668bc2f31
2022-03-31 06:29:21 -07:00
Pascal Hartig
3d3e53c9e0 More careful socket cleanup
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
2022-03-31 06:29:21 -07:00
Pascal Hartig
56e94394ca Serve on domain socket
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
2022-03-31 06:29:21 -07:00
dependabot[bot]
2d46b8bc48 Bump metro from 0.69.0 to 0.69.1 in /desktop (#3560)
Summary:
Bumps [metro](https://github.com/facebook/metro) from 0.69.0 to 0.69.1.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a href="https://github.com/facebook/metro/releases">metro's releases</a>.</em></p>
<blockquote>
<h2>Release v0.69.1</h2>
<ul>
<li><strong>[Fix]</strong> buck-worker-tool: Implement worker <a href="https://buck.build/rule/worker_tool.html#:~:text=it%20should%20exit%20after%20replying%20on%20stdout">termination</a> correctly. (22af8747469529ed2532b5392d695514930fb298)</li>
<li><strong>[Fix]</strong> metro-resolver: Export the <code>CustomResolutionContext</code> Flow type for use in custom resolvers. (cde639ca3c4d118a46448eb2a960cfb7bcdc4227)</li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a href="32408b89dc"><code>32408b8</code></a> Release 0.69.1</li>
<li><a href="cde639ca3c"><code>cde639c</code></a> Export CustomResolutionContext type from metro-resolver</li>
<li><a href="0fe1253cc4"><code>0fe1253</code></a> deploy 0.172.0</li>
<li><a href="fa06113363"><code>fa06113</code></a> Bump normalize-url from 4.5.0 to 4.5.1 in /website (<a href="https://github-redirect.dependabot.com/facebook/metro/issues/784">https://github.com/facebook/flipper/issues/784</a>)</li>
<li><a href="8c3f4bffee"><code>8c3f4bf</code></a> Bump extend from 3.0.1 to 3.0.2 in /website (<a href="https://github-redirect.dependabot.com/facebook/metro/issues/782">https://github.com/facebook/flipper/issues/782</a>)</li>
<li><a href="64ea6be3cf"><code>64ea6be</code></a> Bump minimist from 1.2.0 to 1.2.5 in /website (<a href="https://github-redirect.dependabot.com/facebook/metro/issues/786">https://github.com/facebook/flipper/issues/786</a>)</li>
<li><a href="d37dea360b"><code>d37dea3</code></a> Bump browserslist from 4.16.0 to 4.19.3 in /website (<a href="https://github-redirect.dependabot.com/facebook/metro/issues/785">https://github.com/facebook/flipper/issues/785</a>)</li>
<li><a href="e0cf1daaf4"><code>e0cf1da</code></a> Bump ini from 1.3.5 to 1.3.8 in /website (<a href="https://github-redirect.dependabot.com/facebook/metro/issues/783">https://github.com/facebook/flipper/issues/783</a>)</li>
<li><a href="521aebd686"><code>521aebd</code></a> Add sass plugin, style announcement banner</li>
<li><a href="9e06ce6e5b"><code>9e06ce6</code></a> Update docusaurus</li>
<li>Additional commits viewable in <a href="https://github.com/facebook/metro/compare/v0.69.0...v0.69.1">compare view</a></li>
</ul>
</details>
<br />

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

Reviewed By: passy

Differential Revision: D35181291

Pulled By: mweststrate

fbshipit-source-id: 248d4efa40dfb1c5d2751f952ed9e6e5ddbbed1b
2022-03-29 09:54:15 -07:00
Pascal Hartig
c662f3679d /health endpoint
Summary: Add a simple endpoint to the server to check if it's up and running.

Reviewed By: aigoncharov

Differential Revision: D35087344

fbshipit-source-id: ec490fdb11042e7a7e4b9b944b018c4c9853ed49
2022-03-25 07:59:42 -07:00
Pascal Hartig
d40ff61870 Recover from args argument being uniterable
Summary:
Another kind of error that can easily be triggered during testing that will kill the server otherwise.

Changelog: Make it possible to recover from malformed JSON in server requests

Reviewed By: timur-valiev

Differential Revision: D34932896

fbshipit-source-id: 7c6acfd53ffbd85a54a786d74c99bcccb64d85cb
2022-03-16 16:39:23 -07:00
Pascal Hartig
9c5d1a32c5 Recover from malformed JSON
Summary: Following up on D34787674 (f85def32fb).

Reviewed By: aigoncharov

Differential Revision: D34930249

fbshipit-source-id: f209a638c1281957fd2b03b6fc50389bd98bc5f6
2022-03-16 16:39:23 -07:00
Andrey Goncharov
f85def32fb Migrate from socket.io
Reviewed By: passy

Differential Revision: D34787674

fbshipit-source-id: 63d7c166ea29d14c96f0646a045e3f6fa93472e2
2022-03-10 10:31:24 -08:00
Andrey Goncharov
6ec3771824 Upgrade Metro
Reviewed By: passy

Differential Revision: D34789498

fbshipit-source-id: 9e984b308ac6d0dbc917ddaa20812f76d2a69d77
2022-03-10 10:31:24 -08:00
Pascal Hartig
35428ca039 Keytar platform/arch
Summary:
There appears to be an issue with login on M1 Macs right now. To address this, this resolves the native binary based on a `(platform, arch)` tuple.

The binaries are from here: https://github.com/atom/node-keytar/releases/tag/v7.9.0

The binary size increase here is notable so as a follow-up we could remove the non-relevant binaries as part of the packing process.

Reviewed By: aigoncharov

Differential Revision: D34685236

fbshipit-source-id: d860a59517a769a59055dfca24d01baecd8d1430
2022-03-08 12:19:52 -08:00
Andres Orozco Gonzalez
5b6000b424 add localhost specification for IPV6 without square brackets
Summary: Socket.io-client sends the host as ::1 instead of [::1] when using IPV6 to communicate with Flipper, that is the reason the communication was always being refused.

Reviewed By: mweststrate

Differential Revision: D34679825

fbshipit-source-id: b7431ad23f743276c11619d7cdb5c83594dee43a
2022-03-07 02:40:11 -08:00
Pascal Hartig
7c1251075f Dep bump for /desktop
Summary:
Combining a bunch of dependabot PRs.

N.B. I had to manually clean up the `yarn.lock` a few times because some dependencies resolved to multiple version numbers, catching tsc off-guard.
allow-large-files

Reviewed By: nikoant

Differential Revision: D34579180

fbshipit-source-id: a4848e1010ff240d9b0e721d3878585e7b4bd078
2022-03-03 04:11:52 -08:00
Andres Orozco Gonzalez
5b5ce92519 Add support to binding both IPv6 and IPv4 ports
Summary: Add support for binding the same port in flipper in both the IPv6 and IPv4 interfaces

Reviewed By: mweststrate

Differential Revision: D34591022

fbshipit-source-id: e28239c24425885ee442d93b84bb38902d521a0c
2022-03-03 00:31:08 -08:00
Andres Orozco Gonzalez
b2dae4da81 Add support to load settings from options (flag) and default to specific options
Summary: This change gives priority to a user option settingsString to set up the flipper-server configuration and load them from a json string. Also giving the user the chance to avoid flipper-server looking at the launcher config files in the computer

Reviewed By: mweststrate

Differential Revision: D34210110

fbshipit-source-id: 9e852b79da106b5140c59116fd7d0c0f3155e620
2022-02-16 06:23:45 -08:00
Lorenzo Blasa
c1a05c0366 Bump node-fetch 2.6.7
Summary: ^

Reviewed By: nikoant

Differential Revision: D33767745

fbshipit-source-id: c1ed481e140e88f7d7917e572430d14fcd5fa057
2022-01-25 10:22:59 -08:00
dependabot[bot]
629bdbea3d Bump socket.io from 4.4.0 to 4.4.1 in /desktop (#3313)
Summary:
Bumps [socket.io](https://github.com/socketio/socket.io) from 4.4.0 to 4.4.1.
<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>4.4.1</h2>
<h3>Bug Fixes</h3>
<ul>
<li><strong>types:</strong> make <code>RemoteSocket.data</code> type safe (<a href="https://github-redirect.dependabot.com/socketio/socket.io/issues/4234">#4234</a>) (<a href="770ee5949f">770ee59</a>)</li>
<li><strong>types:</strong> pass <code>SocketData</code> type to custom namespaces (<a href="https://github-redirect.dependabot.com/socketio/socket.io/issues/4233">#4233</a>) (<a href="f2b8de7191">f2b8de7</a>)</li>
</ul>
<h4>Links:</h4>
<ul>
<li>Diff: <a href="https://github.com/socketio/socket.io/compare/4.4.0...4.4.1">https://github.com/socketio/socket.io/compare/4.4.0...4.4.1</a></li>
<li>Client release: <a href="https://github.com/socketio/socket.io-client/releases/tag/4.4.1">4.4.1</a></li>
<li>engine.io version:  <code>~6.1.0</code> (<a href="https://github.com/socketio/engine.io/compare/6.0.0...6.1.0">diff</a>)</li>
<li>ws version: <code>~8.2.3</code></li>
</ul>
</blockquote>
</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>
<h2><a href="https://github.com/socketio/socket.io/compare/4.4.0...4.4.1">4.4.1</a> (2022-01-06)</h2>
<h3>Bug Fixes</h3>
<ul>
<li><strong>types:</strong> make <code>RemoteSocket.data</code> type safe (<a href="https://github-redirect.dependabot.com/socketio/socket.io/issues/4234">#4234</a>) (<a href="770ee5949f">770ee59</a>)</li>
<li><strong>types:</strong> pass <code>SocketData</code> type to custom namespaces (<a href="https://github-redirect.dependabot.com/socketio/socket.io/issues/4233">#4233</a>) (<a href="f2b8de7191">f2b8de7</a>)</li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a href="c82a4bdf1f"><code>c82a4bd</code></a> chore(release): 4.4.1</li>
<li><a href="770ee5949f"><code>770ee59</code></a> fix(types): make <code>RemoteSocket.data</code> type safe (<a href="https://github-redirect.dependabot.com/socketio/socket.io/issues/4234">#4234</a>)</li>
<li><a href="3bf5d92735"><code>3bf5d92</code></a> refactor: add note about fetchSockets() for parent namespaces</li>
<li><a href="fc82e44f73"><code>fc82e44</code></a> refactor(typings): export Event type (<a href="https://github-redirect.dependabot.com/socketio/socket.io/issues/4215">#4215</a>)</li>
<li><a href="c840bad43a"><code>c840bad</code></a> test: fix flaky tests</li>
<li><a href="f2b8de7191"><code>f2b8de7</code></a> fix(typings): pass <code>SocketData</code> type to custom namespaces (<a href="https://github-redirect.dependabot.com/socketio/socket.io/issues/4233">#4233</a>)</li>
<li><a href="51784d0305"><code>51784d0</code></a> chore: add types to exports field to be compatible with nodenext module resol...</li>
<li><a href="c196689545"><code>c196689</code></a> docs: fix basic crud example</li>
<li><a href="7a70f63499"><code>7a70f63</code></a> docs: fix reconnection handling in the chat demo app (<a href="https://github-redirect.dependabot.com/socketio/socket.io/issues/4189">#4189</a>)</li>
<li><a href="e5897dd7dc"><code>e5897dd</code></a> docs: add usage with ES modules (<a href="https://github-redirect.dependabot.com/socketio/socket.io/issues/4195">#4195</a>)</li>
<li>Additional commits viewable in <a href="https://github.com/socketio/socket.io/compare/4.4.0...4.4.1">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=4.4.0&new-version=4.4.1)](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/3313

Reviewed By: aigoncharov

Differential Revision: D33622435

Pulled By: passy

fbshipit-source-id: 5df288d3436c368bd6683f3b7186a2c9a1a2fc74
2022-01-18 06:10:48 -08:00
dependabot[bot]
a9785c8fc9 Bump express from 4.17.1 to 4.17.2 in /desktop (#3257)
Summary:
Bumps [express](https://github.com/expressjs/express) from 4.17.1 to 4.17.2.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a href="https://github.com/expressjs/express/releases">express's releases</a>.</em></p>
<blockquote>
<h2>4.17.2</h2>
<ul>
<li>Fix handling of <code>undefined</code> in <code>res.jsonp</code></li>
<li>Fix handling of <code>undefined</code> when <code>&quot;json escape&quot;</code> is enabled</li>
<li>Fix incorrect middleware execution with unanchored <code>RegExp</code>s</li>
<li>Fix <code>res.jsonp(obj, status)</code> deprecation message</li>
<li>Fix typo in <code>res.is</code> JSDoc</li>
<li>deps: body-parser@1.19.1
<ul>
<li>deps: bytes@3.1.1</li>
<li>deps: http-errors@1.8.1</li>
<li>deps: qs@6.9.6</li>
<li>deps: raw-body@2.4.2</li>
<li>deps: safe-buffer@5.2.1</li>
<li>deps: type-is@~1.6.18</li>
</ul>
</li>
<li>deps: content-disposition@0.5.4
<ul>
<li>deps: safe-buffer@5.2.1</li>
</ul>
</li>
<li>deps: cookie@0.4.1
<ul>
<li>Fix <code>maxAge</code> option to reject invalid values</li>
</ul>
</li>
<li>deps: proxy-addr@~2.0.7
<ul>
<li>Use <code>req.socket</code> over deprecated <code>req.connection</code></li>
<li>deps: forwarded@0.2.0</li>
<li>deps: ipaddr.js@1.9.1</li>
</ul>
</li>
<li>deps: qs@6.9.6</li>
<li>deps: safe-buffer@5.2.1</li>
<li>deps: send@0.17.2
<ul>
<li>deps: http-errors@1.8.1</li>
<li>deps: ms@2.1.3</li>
<li>pref: ignore empty http tokens</li>
</ul>
</li>
<li>deps: serve-static@1.14.2
<ul>
<li>deps: send@0.17.2</li>
</ul>
</li>
<li>deps: setprototypeof@1.2.0</li>
</ul>
</blockquote>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a href="https://github.com/expressjs/express/blob/master/History.md">express's changelog</a>.</em></p>
<blockquote>
<h1>4.17.2 / 2021-12-16</h1>
<ul>
<li>Fix handling of <code>undefined</code> in <code>res.jsonp</code></li>
<li>Fix handling of <code>undefined</code> when <code>&quot;json escape&quot;</code> is enabled</li>
<li>Fix incorrect middleware execution with unanchored <code>RegExp</code>s</li>
<li>Fix <code>res.jsonp(obj, status)</code> deprecation message</li>
<li>Fix typo in <code>res.is</code> JSDoc</li>
<li>deps: body-parser@1.19.1
<ul>
<li>deps: bytes@3.1.1</li>
<li>deps: http-errors@1.8.1</li>
<li>deps: qs@6.9.6</li>
<li>deps: raw-body@2.4.2</li>
<li>deps: safe-buffer@5.2.1</li>
<li>deps: type-is@~1.6.18</li>
</ul>
</li>
<li>deps: content-disposition@0.5.4
<ul>
<li>deps: safe-buffer@5.2.1</li>
</ul>
</li>
<li>deps: cookie@0.4.1
<ul>
<li>Fix <code>maxAge</code> option to reject invalid values</li>
</ul>
</li>
<li>deps: proxy-addr@~2.0.7
<ul>
<li>Use <code>req.socket</code> over deprecated <code>req.connection</code></li>
<li>deps: forwarded@0.2.0</li>
<li>deps: ipaddr.js@1.9.1</li>
</ul>
</li>
<li>deps: qs@6.9.6</li>
<li>deps: safe-buffer@5.2.1</li>
<li>deps: send@0.17.2
<ul>
<li>deps: http-errors@1.8.1</li>
<li>deps: ms@2.1.3</li>
<li>pref: ignore empty http tokens</li>
</ul>
</li>
<li>deps: serve-static@1.14.2
<ul>
<li>deps: send@0.17.2</li>
</ul>
</li>
<li>deps: setprototypeof@1.2.0</li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a href="ea537d907d"><code>ea537d9</code></a> 4.17.2</li>
<li><a href="eee93a2760"><code>eee93a2</code></a> build: update example dependencies</li>
<li><a href="b35773cf19"><code>b35773c</code></a> build: eslint@7.32.0</li>
<li><a href="c8a42006b8"><code>c8a4200</code></a> build: mocha@9.1.3</li>
<li><a href="21cf522dcd"><code>21cf522</code></a> examples: improve 404 message wording</li>
<li><a href="a24f27aba7"><code>a24f27a</code></a> deps: serve-static@1.14.2</li>
<li><a href="a33266a206"><code>a33266a</code></a> build: support Node.js 14.x</li>
<li><a href="6fe271e8aa"><code>6fe271e</code></a> build: support Node.js 13.x</li>
<li><a href="cbe25d66b3"><code>cbe25d6</code></a> deps: setprototypeof@1.2.0</li>
<li><a href="3bb6d96ba9"><code>3bb6d96</code></a> examples: demonstrate sub directory download</li>
<li>Additional commits viewable in <a href="https://github.com/expressjs/express/compare/4.17.1...4.17.2">compare view</a></li>
</ul>
</details>
<br />

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

Reviewed By: antonk52

Differential Revision: D33511820

Pulled By: passy

fbshipit-source-id: 2f63202fb75cad2645d12387ce1238cb1cd2d502
2022-01-12 05:49:14 -08:00
Michel Weststrate
ebc4752077 Left some code comments
Summary: Added some additional code comments as requested in earlier diffs

Reviewed By: passy

Differential Revision: D33361691

fbshipit-source-id: 2d1adc8830af58e6cb7bac4b283a5c0171cf749e
2022-01-04 09:06:15 -08:00
Michel Weststrate
b6c884f011 Make sure flipper server initialization errors are propagated properly
Summary:
This diff makes sure that errors are propagated similarly in flipper desktop and browser version, and that they are shown in either case.

Since in the browser version, the UI loads after the error happened, we'll store the error so that any client connecting in the future will read and report it.

Also added a `--failFast` flag to flipper-server, so that the process exits immediately if misconfigured, which is convenient in CI use cases and such

Reviewed By: nikoant

Differential Revision: D33348922

fbshipit-source-id: 0f584104f881141fde38da3f0031748415343ea2
2022-01-04 02:57:25 -08:00
Andres Suarez
79023ee190 Update copyright headers from Facebook to Meta
Reviewed By: bhamodi

Differential Revision: D33331422

fbshipit-source-id: 016e8dcc0c0c7f1fc353a348b54fda0d5e2ddc01
2021-12-27 14:31:45 -08:00
Michel Weststrate
cbda298b9d Add support to build flipper-server from SandCastle
Summary:
This refactors the flipper-server release script in such a way that it works the same as the normal release script, which solves two problems:

1) the official release script modifies versioned files, as it touches the package.json
2) it was slightly confusing that `flipper-server/static` was filled for release builds only, but not used in dev builds
3) running test:npx without running a release build before it, would fail with hard to comprehend errors. this has been solved now by removing that script and make it an arg of `build:flipper-server`

Also some further minor changes to prepare running a corresponding build / release job from SandCastle (later in this stack)

Reviewed By: nikoant

Differential Revision: D33297214

fbshipit-source-id: f6299aa982c3e59d1cc6479a93c56cbe4b57f85c
2021-12-24 07:18:11 -08:00
Michel Weststrate
72fa481d27 Fix generation of bundled.json, make source maps work in prod builds
Summary:
This diff fixes several issues around loading plugin, such as:

* make suresource maps work in the flipper-server production build
* make sure default plugins are no symlinked, which wouldn't work anywhere else but on the the system where it was build
* support release channel param for flipper-server

Bundled flipper-server is now 42MB (with icons (see later diffs) and plugins
```
ll flipper-server-v0.0.0.tgz
-rw-r--r--  1 mweststrate  staff    42M 23 Dec 15:29 flipper-server-v0.0.0.tgz
```

Reviewed By: nikoant

Differential Revision: D33294677

fbshipit-source-id: 63538dc8127f883fee6a3608673ad11ce239b350
2021-12-24 02:16:48 -08:00
Michel Weststrate
86b6d2c99d Make flipper-server NPX-able
Summary: Make sure flipper-server is bundled in such a way that it is self-contained NPX-able. Also added some checks to make sure that dev dependencies don't accidentallly end up in in Flipper buidls

Reviewed By: nikoant

Differential Revision: D33190254

fbshipit-source-id: 443162e537d8ca9f956acac2d7bd52cbf0c92172
2021-12-24 02:16:48 -08:00
Michel Weststrate
6ff4abbc67 Make flipper-server stand-alone servable
Summary:
This diff makes flipper-server stand-alone servable as a single package.

It basically works as follows:

- (default) plugins are build as usually into static folder
- static folder is copied into flipper-server/static (as far as relevant)
- `flipper-server/src/index.tsx` is bundled into `flipper-server/dist/index.js`
- `flipper-ui-browser/src/index.tsx` is bundled into `flipper-server/static/bundle.js`

If flipper-server is started without the `--bundler` config, the `bundle.js` will be served statically, rather than starting up the Metro bundler with all the typical transforms (in a distributed version of the package those all wouldn't resolve)

Things to be done in next diffs:

* make sure plugins actually load in the non bundled setup
* make sure flipper-server gets published properly
* make sure build is created as part of CI

At the end of this stack, running `npx flipper-server` on any machine should basically be a viable approach to get flipper up and running locally :)

Reviewed By: nikoant

Differential Revision: D33171107

fbshipit-source-id: 4af8ac2699467a0b55283fe084640482700744c2
2021-12-24 02:16:48 -08:00
Michel Weststrate
cea7be7fde Clean up globals
Summary: This diff is some boyscouting on cleaning up our globals, and stop using them inconsistently icmw global or window

Reviewed By: aigoncharov

Differential Revision: D33171108

fbshipit-source-id: 400893e5f31523631a7ab6fda428524c751901f1
2021-12-17 10:04:23 -08:00