Files
flipper/js/js-flipper
dependabot[bot] 88142c7d2a Bump prettier from 2.4.1 to 2.5.1 in /js/js-flipper (#3266)
Summary:
Bumps [prettier](https://github.com/prettier/prettier) from 2.4.1 to 2.5.1.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a href="https://github.com/prettier/prettier/releases">prettier's releases</a>.</em></p>
<blockquote>
<h2>2.5.1</h2>
<p>🔗 <a href="https://github.com/prettier/prettier/blob/main/CHANGELOG.md#251">Changelog</a></p>
<h2>2.5.0</h2>
<p><a href="https://github.com/prettier/prettier/compare/2.4.1...2.5.0">diff</a></p>
<p>🔗 <a href="https://prettier.io/blog/2021/11/25/2.5.0.html">Release note</a></p>
</blockquote>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a href="https://github.com/prettier/prettier/blob/main/CHANGELOG.md">prettier's changelog</a>.</em></p>
<blockquote>
<h1>2.5.1</h1>
<p><a href="https://github.com/prettier/prettier/compare/2.5.0...2.5.1">diff</a></p>
<h4>Improve formatting for empty tuple types (<a href="https://github-redirect.dependabot.com/prettier/prettier/pull/11884">#11884</a> by <a href="https://github.com/sosukesuzuki"><code>@​sosukesuzuki</code></a>)</h4>

<pre lang="tsx"><code>// Input
type Foo =
  Foooooooooooooooooooooooooooooooooooooooooooooooooooooooooo extends []
    ? Foo3
    : Foo4;
<p>// Prettier 2.5.0
type Foo = Foooooooooooooooooooooooooooooooooooooooooooooooooooooooooo extends [</p>
<p>]
? Foo3
: Foo4;</p>
<p>// Prettier 2.5.0 (tailingCommma = all)
// Invalid TypeScript code
type Foo = Foooooooooooooooooooooooooooooooooooooooooooooooooooooooooo extends [
,
]
? Foo3
: Foo4;</p>
<p>// Prettier 2.5.1
type Foo =
Foooooooooooooooooooooooooooooooooooooooooooooooooooooooooo extends []
? Foo3
: Foo4;</p>
<p></code></pre></p>
<h4>Fix compatibility with Jest inline snapshot test (<a href="https://github-redirect.dependabot.com/prettier/prettier/pull/11892">#11892</a> by <a href="https://github.com/fisker"><code>@​fisker</code></a>)</h4>
<p>A internal change in Prettier@v2.5.0 accidentally breaks the Jest inline snapshot test.</p>
<h4>Support Glimmer's named blocks (<a href="https://github-redirect.dependabot.com/prettier/prettier/pull/11899">#11899</a> by <a href="https://github.com/duailibe"><code>@​duailibe</code></a>)</h4>
<p>Prettier already supported this feature, but it converted empty named blocks to self-closing, which is not supported by the Glimmer compiler.</p>
<p>See: <a href="https://emberjs.github.io/rfcs/0460-yieldable-named-blocks.html">Glimmer's named blocks</a>.</p>

<pre lang="hbs"><code>// Input
&lt;/tr&gt;&lt;/table&gt;
</code></pre>
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a href="56ed71d1c9"><code>56ed71d</code></a> Release 2.5.1</li>
<li><a href="29f408c99e"><code>29f408c</code></a> Add changelog for <a href="https://github-redirect.dependabot.com/prettier/prettier/issues/11892">#11892</a> (<a href="https://github-redirect.dependabot.com/prettier/prettier/issues/11904">#11904</a>)</li>
<li><a href="e7a74529a5"><code>e7a7452</code></a> Make <code>options</code> argument in parsers optional (<a href="https://github-redirect.dependabot.com/prettier/prettier/issues/11892">#11892</a>)</li>
<li><a href="99649c7fd2"><code>99649c7</code></a> [handlebars] Named blocks can't be self closing (<a href="https://github-redirect.dependabot.com/prettier/prettier/issues/11900">#11900</a>)</li>
<li><a href="c0250b3837"><code>c0250b3</code></a> Improve formatting for empty tuple types (<a href="https://github-redirect.dependabot.com/prettier/prettier/issues/11884">#11884</a>)</li>
<li><a href="7fc196e96b"><code>7fc196e</code></a> Clean changelog_unreleased</li>
<li><a href="04aa850fde"><code>04aa850</code></a> Add 2.5 blog (<a href="https://github-redirect.dependabot.com/prettier/prettier/issues/11823">#11823</a>)</li>
<li><a href="255d38982f"><code>255d389</code></a> Update dependents count</li>
<li><a href="854ca328a2"><code>854ca32</code></a> Git blame ignore 2.5.0</li>
<li><a href="846dbdd7e8"><code>846dbdd</code></a> Bump Prettier dependency to 2.5.0</li>
<li>Additional commits viewable in <a href="https://github.com/prettier/prettier/compare/2.4.1...2.5.1">compare view</a></li>
</ul>
</details>
<br />

[![Dependabot compatibility score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=prettier&package-manager=npm_and_yarn&previous-version=2.4.1&new-version=2.5.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/3266

Reviewed By: antonk52

Differential Revision: D33565473

Pulled By: passy

fbshipit-source-id: 87b5772bc67a59385b824e304d3ea835b7c10800
2022-01-14 03:44:15 -08:00
..
2021-10-21 04:28:21 -07:00
2021-10-21 04:28:21 -07:00
2021-10-21 04:28:21 -07:00
2021-10-21 04:28:21 -07:00
2022-01-13 08:16:15 -08:00
2021-10-21 04:28:21 -07:00

js-flipper

This package exposes JavaScript bindings to talk from web / Node.js directly to flipper.

Installation

yarn add js-flipper

Usage

How to build Flipper plugins is explained in the flipper documentation: Creating a Flipper plugin. Building a Flipper plugin involves building a plugin for the Desktop app, and a plugin that runs on a Device (web or Node.js). This package is only needed for the plugin that runs on the device (web / Node.js), and wants to use the WebSocket connection to communicate to Flipper.

This package exposes a flipperClient. It has:

  • addPlugin method. It accepts a plugin parameter, that registers a client plugin and will fire the relevant callbacks if the corresponding desktop plugin is selected in the Flipper Desktop. The full plugin API is documented here.
  • start method. It starts the client. It has two arguments:
    • appName - (required) the name dsplayed in Flipper
    • options which conforms to the infterface
      interface FlipperClientOptions {
        // Make the client connect to a different URL
        urlBase?: string;
        // Override WebSocket implementation (Node.js folks, it is for you!)
        websocketFactory?: (url: string) => FlipperWebSocket;
        // Override how errors are handled (it is simple `console.error` by default)
        onError?: (e: unknown) => void;
        // Timeout after which client tries to reconnect to Flipper
        reconnectTimeout?: number;
      }
      

Example (web)

An example plugin can be found in FlipperTicTacToe.js.

The corresponding Desktop plugin ships by default in Flipper, so importing the above file and dropping the <FlipperTicTacToe /> component somewhere in your application should work out of the box.

The sources of the corresponding Desktop plugin can be found here.

Node.js

Node.js does not have a built-in WebSocket implementation. You need to install any implmentation of WebSockets for Node.js that is compatible with the interface of the web version.

import flipperClient from 'js-flipper';
// Say, you decided to go with 'ws'
// https://github.com/websockets/ws
import WebSocket from 'ws';

// Start the client and pass some options
// You might ask yourself why there is the second argument `{ origin: 'localhost:' }`
// Flipper Desktop verifies the `Origin` header for every WS connection. You need to set it to one of the whitelisted values (see `VALID_WEB_SOCKET_REQUEST_ORIGIN_PREFIXES`).
flipperClient.start('My cool nodejs app', { websocketFactory: url => new WebSocket(url, {origin: 'localhost:'}) });

An example plugin should be somewhat similar to what we have for React. It is currently WIP (do not confuse with RIP!).