Files
flipper/js/js-flipper
dependabot[bot] 8a11853d84 Bump eslint-plugin-react from 7.31.8 to 7.31.9 in /js/js-flipper (#4201)
Summary:
Bumps [eslint-plugin-react](https://github.com/jsx-eslint/eslint-plugin-react) from 7.31.8 to 7.31.9.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a href="https://github.com/jsx-eslint/eslint-plugin-react/releases">eslint-plugin-react's releases</a>.</em></p>
<blockquote>
<h2>v7.31.9</h2>
<h3>Fixed</h3>
<ul>
<li>[<code>no-unknown-property</code>]: add <code>dialog</code> attributes (<a href="https://github-redirect.dependabot.com/jsx-eslint/eslint-plugin-react/issues/3436">https://github.com/facebook/flipper/issues/3436</a>[] <a href="https://github.com/ljharb"><code>@​ljharb</code></a>)</li>
<li>[<code>no-arrow-function-lifecycle</code>]: when converting from an arrow, remove the semi and wrapping parens (<a href="https://github-redirect.dependabot.com/jsx-eslint/eslint-plugin-react/issues/3337">https://github.com/facebook/flipper/issues/3337</a>[] <a href="https://github.com/ljharb"><code>@​ljharb</code></a>)</li>
<li>[<code>jsx-key</code>]: Ignore elements inside <code>React.Children.toArray()</code> (<a href="https://github-redirect.dependabot.com/jsx-eslint/eslint-plugin-react/issues/1591">https://github.com/facebook/flipper/issues/1591</a>[] <a href="https://github.com/silvenon"><code>@​silvenon</code></a>)</li>
<li>[<code>jsx-no-constructed-context-values</code>]: fix false positive for usage in non-components (<a href="https://github-redirect.dependabot.com/jsx-eslint/eslint-plugin-react/issues/3448">https://github.com/facebook/flipper/issues/3448</a>[] <a href="https://github.com/golopot"><code>@​golopot</code></a>)</li>
<li>[<code>static-property-placement</code>]: warn on nonstatic expected-statics (<a href="https://github-redirect.dependabot.com/jsx-eslint/eslint-plugin-react/issues/2581">https://github.com/facebook/flipper/issues/2581</a>[] <a href="https://github.com/ljharb"><code>@​ljharb</code></a>)</li>
<li>[<code>no-unknown-property</code>]: properly tag-restrict case-insensitive attributes (<a href="https://github.com/ljharb"><code>@​ljharb</code></a>)</li>
<li>[<code>no-unknown-property</code>]: allow <code>webkitDirectory</code> on <code>input</code>, case-insensitive (<a href="https://github-redirect.dependabot.com/jsx-eslint/eslint-plugin-react/issues/3454">https://github.com/facebook/flipper/issues/3454</a>[] <a href="https://github.com/ljharb"><code>@​ljharb</code></a>)</li>
</ul>
<h3>Changed</h3>
<ul>
<li>[Docs] [<code>no-unknown-property</code>]: fix typo in link (<a href="https://github-redirect.dependabot.com/jsx-eslint/eslint-plugin-react/issues/3445">https://github.com/facebook/flipper/issues/3445</a>[] <a href="https://github.com/denkristoffer"><code>@​denkristoffer</code></a>)</li>
<li>[Perf] component detection: improve performance by optimizing getId (<a href="https://github-redirect.dependabot.com/jsx-eslint/eslint-plugin-react/issues/3451">https://github.com/facebook/flipper/issues/3451</a>[] <a href="https://github.com/golopot"><code>@​golopot</code></a>)</li>
<li>[Docs] [<code>no-unstable-nested-components</code>]: Warn about memoized, nested components (<a href="https://github-redirect.dependabot.com/jsx-eslint/eslint-plugin-react/issues/3444">https://github.com/facebook/flipper/issues/3444</a>[] <a href="https://github.com/eps1lon"><code>@​eps1lon</code></a>)</li>
</ul>
<p><a href="https://github-redirect.dependabot.com/jsx-eslint/eslint-plugin-react/issues/1000">https://github.com/facebook/flipper/issues/1000</a>: <a href="https://github-redirect.dependabot.com/jsx-eslint/eslint-plugin-react/pull/1000">jsx-eslint/eslint-plugin-react#1000</a>
<a href="https://github-redirect.dependabot.com/jsx-eslint/eslint-plugin-react/issues/1002">https://github.com/facebook/flipper/issues/1002</a>: <a href="https://github-redirect.dependabot.com/jsx-eslint/eslint-plugin-react/issues/1002">jsx-eslint/eslint-plugin-react#1002</a>
<a href="https://github-redirect.dependabot.com/jsx-eslint/eslint-plugin-react/issues/1005">https://github.com/facebook/flipper/issues/1005</a>: <a href="https://github-redirect.dependabot.com/jsx-eslint/eslint-plugin-react/pull/1005">jsx-eslint/eslint-plugin-react#1005</a>
<a href="https://github-redirect.dependabot.com/jsx-eslint/eslint-plugin-react/issues/100">https://github.com/facebook/flipper/issues/100</a>: <a href="https://github-redirect.dependabot.com/jsx-eslint/eslint-plugin-react/issues/100">jsx-eslint/eslint-plugin-react#100</a>
<a href="https://github-redirect.dependabot.com/jsx-eslint/eslint-plugin-react/issues/1010">https://github.com/facebook/flipper/issues/1010</a>: <a href="https://github-redirect.dependabot.com/jsx-eslint/eslint-plugin-react/pull/1010">jsx-eslint/eslint-plugin-react#1010</a>
<a href="https://github-redirect.dependabot.com/jsx-eslint/eslint-plugin-react/issues/1013">https://github.com/facebook/flipper/issues/1013</a>: <a href="https://github-redirect.dependabot.com/jsx-eslint/eslint-plugin-react/pull/1013">jsx-eslint/eslint-plugin-react#1013</a>
<a href="https://github-redirect.dependabot.com/jsx-eslint/eslint-plugin-react/issues/1022">https://github.com/facebook/flipper/issues/1022</a>: <a href="https://github-redirect.dependabot.com/jsx-eslint/eslint-plugin-react/issues/1022">jsx-eslint/eslint-plugin-react#1022</a>
<a href="https://github-redirect.dependabot.com/jsx-eslint/eslint-plugin-react/issues/1029">https://github.com/facebook/flipper/issues/1029</a>: <a href="https://github-redirect.dependabot.com/jsx-eslint/eslint-plugin-react/issues/1029">jsx-eslint/eslint-plugin-react#1029</a>
<a href="https://github-redirect.dependabot.com/jsx-eslint/eslint-plugin-react/issues/102">https://github.com/facebook/flipper/issues/102</a>: <a href="https://github-redirect.dependabot.com/jsx-eslint/eslint-plugin-react/issues/102">jsx-eslint/eslint-plugin-react#102</a>
<a href="https://github-redirect.dependabot.com/jsx-eslint/eslint-plugin-react/issues/1034">https://github.com/facebook/flipper/issues/1034</a>: <a href="https://github-redirect.dependabot.com/jsx-eslint/eslint-plugin-react/issues/1034">jsx-eslint/eslint-plugin-react#1034</a>
<a href="https://github-redirect.dependabot.com/jsx-eslint/eslint-plugin-react/issues/1038">https://github.com/facebook/flipper/issues/1038</a>: <a href="https://github-redirect.dependabot.com/jsx-eslint/eslint-plugin-react/pull/1038">jsx-eslint/eslint-plugin-react#1038</a>
<a href="https://github-redirect.dependabot.com/jsx-eslint/eslint-plugin-react/issues/1041">https://github.com/facebook/flipper/issues/1041</a>: <a href="https://github-redirect.dependabot.com/jsx-eslint/eslint-plugin-react/pull/1041">jsx-eslint/eslint-plugin-react#1041</a>
<a href="https://github-redirect.dependabot.com/jsx-eslint/eslint-plugin-react/issues/1043">https://github.com/facebook/flipper/issues/1043</a>: <a href="https://github-redirect.dependabot.com/jsx-eslint/eslint-plugin-react/issues/1043">jsx-eslint/eslint-plugin-react#1043</a>
<a href="https://github-redirect.dependabot.com/jsx-eslint/eslint-plugin-react/issues/1046">https://github.com/facebook/flipper/issues/1046</a>: <a href="https://github-redirect.dependabot.com/jsx-eslint/eslint-plugin-react/issues/1046">jsx-eslint/eslint-plugin-react#1046</a>
<a href="https://github-redirect.dependabot.com/jsx-eslint/eslint-plugin-react/issues/1047">https://github.com/facebook/flipper/issues/1047</a>: <a href="https://github-redirect.dependabot.com/jsx-eslint/eslint-plugin-react/issues/1047">jsx-eslint/eslint-plugin-react#1047</a>
<a href="https://github-redirect.dependabot.com/jsx-eslint/eslint-plugin-react/issues/1050">https://github.com/facebook/flipper/issues/1050</a>: <a href="https://github-redirect.dependabot.com/jsx-eslint/eslint-plugin-react/pull/1050">jsx-eslint/eslint-plugin-react#1050</a>
<a href="https://github-redirect.dependabot.com/jsx-eslint/eslint-plugin-react/issues/1053">https://github.com/facebook/flipper/issues/1053</a>: <a href="https://github-redirect.dependabot.com/jsx-eslint/eslint-plugin-react/issues/1053">jsx-eslint/eslint-plugin-react#1053</a>
<a href="https://github-redirect.dependabot.com/jsx-eslint/eslint-plugin-react/issues/1057">https://github.com/facebook/flipper/issues/1057</a>: <a href="https://github-redirect.dependabot.com/jsx-eslint/eslint-plugin-react/issues/1057">jsx-eslint/eslint-plugin-react#1057</a>
<a href="https://github-redirect.dependabot.com/jsx-eslint/eslint-plugin-react/issues/105">https://github.com/facebook/flipper/issues/105</a>: <a href="https://github-redirect.dependabot.com/jsx-eslint/eslint-plugin-react/issues/105">jsx-eslint/eslint-plugin-react#105</a>
<a href="https://github-redirect.dependabot.com/jsx-eslint/eslint-plugin-react/issues/1061">https://github.com/facebook/flipper/issues/1061</a>: <a href="https://github-redirect.dependabot.com/jsx-eslint/eslint-plugin-react/issues/1061">jsx-eslint/eslint-plugin-react#1061</a>
<a href="https://github-redirect.dependabot.com/jsx-eslint/eslint-plugin-react/issues/1062">https://github.com/facebook/flipper/issues/1062</a>: <a href="https://github-redirect.dependabot.com/jsx-eslint/eslint-plugin-react/pull/1062">jsx-eslint/eslint-plugin-react#1062</a>
<a href="https://github-redirect.dependabot.com/jsx-eslint/eslint-plugin-react/issues/1070">https://github.com/facebook/flipper/issues/1070</a>: <a href="https://github-redirect.dependabot.com/jsx-eslint/eslint-plugin-react/pull/1070">jsx-eslint/eslint-plugin-react#1070</a>
<a href="https://github-redirect.dependabot.com/jsx-eslint/eslint-plugin-react/issues/1071">https://github.com/facebook/flipper/issues/1071</a>: <a href="https://github-redirect.dependabot.com/jsx-eslint/eslint-plugin-react/pull/1071">jsx-eslint/eslint-plugin-react#1071</a>
<a href="https://github-redirect.dependabot.com/jsx-eslint/eslint-plugin-react/issues/1073">https://github.com/facebook/flipper/issues/1073</a>: <a href="https://github-redirect.dependabot.com/jsx-eslint/eslint-plugin-react/issues/1073">jsx-eslint/eslint-plugin-react#1073</a>
<a href="https://github-redirect.dependabot.com/jsx-eslint/eslint-plugin-react/issues/1076">https://github.com/facebook/flipper/issues/1076</a>: <a href="https://github-redirect.dependabot.com/jsx-eslint/eslint-plugin-react/issues/1076">jsx-eslint/eslint-plugin-react#1076</a>
<a href="https://github-redirect.dependabot.com/jsx-eslint/eslint-plugin-react/issues/1079">https://github.com/facebook/flipper/issues/1079</a>: <a href="https://github-redirect.dependabot.com/jsx-eslint/eslint-plugin-react/issues/1079">jsx-eslint/eslint-plugin-react#1079</a>
<a href="https://github-redirect.dependabot.com/jsx-eslint/eslint-plugin-react/issues/1088">https://github.com/facebook/flipper/issues/1088</a>: <a href="https://github-redirect.dependabot.com/jsx-eslint/eslint-plugin-react/issues/1088">jsx-eslint/eslint-plugin-react#1088</a>
<a href="https://github-redirect.dependabot.com/jsx-eslint/eslint-plugin-react/issues/1098">https://github.com/facebook/flipper/issues/1098</a>: <a href="https://github-redirect.dependabot.com/jsx-eslint/eslint-plugin-react/pull/1098">jsx-eslint/eslint-plugin-react#1098</a>
<a href="https://github-redirect.dependabot.com/jsx-eslint/eslint-plugin-react/issues/1101">https://github.com/facebook/flipper/issues/1101</a>: <a href="https://github-redirect.dependabot.com/jsx-eslint/eslint-plugin-react/issues/1101">jsx-eslint/eslint-plugin-react#1101</a>
<a href="https://github-redirect.dependabot.com/jsx-eslint/eslint-plugin-react/issues/1103">https://github.com/facebook/flipper/issues/1103</a>: <a href="https://github-redirect.dependabot.com/jsx-eslint/eslint-plugin-react/pull/1103">jsx-eslint/eslint-plugin-react#1103</a>
<a href="https://github-redirect.dependabot.com/jsx-eslint/eslint-plugin-react/issues/110">https://github.com/facebook/flipper/issues/110</a>: <a href="https://github-redirect.dependabot.com/jsx-eslint/eslint-plugin-react/issues/110">jsx-eslint/eslint-plugin-react#110</a>
<a href="https://github-redirect.dependabot.com/jsx-eslint/eslint-plugin-react/issues/1116">https://github.com/facebook/flipper/issues/1116</a>: <a href="https://github-redirect.dependabot.com/jsx-eslint/eslint-plugin-react/issues/1116">jsx-eslint/eslint-plugin-react#1116</a>
<a href="https://github-redirect.dependabot.com/jsx-eslint/eslint-plugin-react/issues/1117">https://github.com/facebook/flipper/issues/1117</a>: <a href="https://github-redirect.dependabot.com/jsx-eslint/eslint-plugin-react/issues/1117">jsx-eslint/eslint-plugin-react#1117</a>
<a href="https://github-redirect.dependabot.com/jsx-eslint/eslint-plugin-react/issues/1119">https://github.com/facebook/flipper/issues/1119</a>: <a href="https://github-redirect.dependabot.com/jsx-eslint/eslint-plugin-react/pull/1119">jsx-eslint/eslint-plugin-react#1119</a></p>

</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a href="https://github.com/jsx-eslint/eslint-plugin-react/blob/master/CHANGELOG.md">eslint-plugin-react's changelog</a>.</em></p>
<blockquote>
<h2><a href="https://github.com/jsx-eslint/eslint-plugin-react/compare/v7.31.8...v7.31.9">7.31.9</a> - 2022.10.09</h2>
<h3>Fixed</h3>
<ul>
<li>[<code>no-unknown-property</code>]: add <code>dialog</code> attributes (<a href="https://github-redirect.dependabot.com/jsx-eslint/eslint-plugin-react/issues/3436">https://github.com/facebook/flipper/issues/3436</a>[] <a href="https://github.com/ljharb"><code>@​ljharb</code></a>)</li>
<li>[<code>no-arrow-function-lifecycle</code>]: when converting from an arrow, remove the semi and wrapping parens (<a href="https://github-redirect.dependabot.com/jsx-eslint/eslint-plugin-react/issues/3337">https://github.com/facebook/flipper/issues/3337</a>[] <a href="https://github.com/ljharb"><code>@​ljharb</code></a>)</li>
<li>[<code>jsx-key</code>]: Ignore elements inside <code>React.Children.toArray()</code> (<a href="https://github-redirect.dependabot.com/jsx-eslint/eslint-plugin-react/issues/1591">https://github.com/facebook/flipper/issues/1591</a>[] <a href="https://github.com/silvenon"><code>@​silvenon</code></a>)</li>
<li>[<code>jsx-no-constructed-context-values</code>]: fix false positive for usage in non-components (<a href="https://github-redirect.dependabot.com/jsx-eslint/eslint-plugin-react/issues/3448">https://github.com/facebook/flipper/issues/3448</a>[] <a href="https://github.com/golopot"><code>@​golopot</code></a>)</li>
<li>[<code>static-property-placement</code>]: warn on nonstatic expected-statics (<a href="https://github-redirect.dependabot.com/jsx-eslint/eslint-plugin-react/issues/2581">https://github.com/facebook/flipper/issues/2581</a>[] <a href="https://github.com/ljharb"><code>@​ljharb</code></a>)</li>
<li>[<code>no-unknown-property</code>]: properly tag-restrict case-insensitive attributes (<a href="https://github.com/ljharb"><code>@​ljharb</code></a>)</li>
<li>[<code>no-unknown-property</code>]: allow <code>webkitDirectory</code> on <code>input</code>, case-insensitive (<a href="https://github-redirect.dependabot.com/jsx-eslint/eslint-plugin-react/issues/3454">https://github.com/facebook/flipper/issues/3454</a>[] <a href="https://github.com/ljharb"><code>@​ljharb</code></a>)</li>
</ul>
<h3>Changed</h3>
<ul>
<li>[Docs] [<code>no-unknown-property</code>]: fix typo in link (<a href="https://github-redirect.dependabot.com/jsx-eslint/eslint-plugin-react/issues/3445">https://github.com/facebook/flipper/issues/3445</a>[] <a href="https://github.com/denkristoffer"><code>@​denkristoffer</code></a>)</li>
<li>[Perf] component detection: improve performance by optimizing getId (<a href="https://github-redirect.dependabot.com/jsx-eslint/eslint-plugin-react/issues/3451">https://github.com/facebook/flipper/issues/3451</a>[] <a href="https://github.com/golopot"><code>@​golopot</code></a>)</li>
<li>[Docs] [<code>no-unstable-nested-components</code>]: Warn about memoized, nested components (<a href="https://github-redirect.dependabot.com/jsx-eslint/eslint-plugin-react/issues/3444">https://github.com/facebook/flipper/issues/3444</a>[] <a href="https://github.com/eps1lon"><code>@​eps1lon</code></a>)</li>
</ul>
<p><a href="https://github-redirect.dependabot.com/jsx-eslint/eslint-plugin-react/issues/3454">https://github.com/facebook/flipper/issues/3454</a>: <a href="https://github-redirect.dependabot.com/jsx-eslint/eslint-plugin-react/issues/3454">jsx-eslint/eslint-plugin-react#3454</a>
<a href="https://github-redirect.dependabot.com/jsx-eslint/eslint-plugin-react/issues/3451">https://github.com/facebook/flipper/issues/3451</a>: <a href="https://github-redirect.dependabot.com/jsx-eslint/eslint-plugin-react/pull/3451">jsx-eslint/eslint-plugin-react#3451</a>
<a href="https://github-redirect.dependabot.com/jsx-eslint/eslint-plugin-react/issues/3448">https://github.com/facebook/flipper/issues/3448</a>: <a href="https://github-redirect.dependabot.com/jsx-eslint/eslint-plugin-react/pull/3448">jsx-eslint/eslint-plugin-react#3448</a>
<a href="https://github-redirect.dependabot.com/jsx-eslint/eslint-plugin-react/issues/3445">https://github.com/facebook/flipper/issues/3445</a>: <a href="https://github-redirect.dependabot.com/jsx-eslint/eslint-plugin-react/pull/3445">jsx-eslint/eslint-plugin-react#3445</a>
<a href="https://github-redirect.dependabot.com/jsx-eslint/eslint-plugin-react/issues/3444">https://github.com/facebook/flipper/issues/3444</a>: <a href="https://github-redirect.dependabot.com/jsx-eslint/eslint-plugin-react/pull/3444">jsx-eslint/eslint-plugin-react#3444</a>
<a href="https://github-redirect.dependabot.com/jsx-eslint/eslint-plugin-react/issues/3436">https://github.com/facebook/flipper/issues/3436</a>: <a href="https://github-redirect.dependabot.com/jsx-eslint/eslint-plugin-react/issues/3436">jsx-eslint/eslint-plugin-react#3436</a>
<a href="https://github-redirect.dependabot.com/jsx-eslint/eslint-plugin-react/issues/3337">https://github.com/facebook/flipper/issues/3337</a>: <a href="https://github-redirect.dependabot.com/jsx-eslint/eslint-plugin-react/issues/3337">jsx-eslint/eslint-plugin-react#3337</a>
<a href="https://github-redirect.dependabot.com/jsx-eslint/eslint-plugin-react/issues/2581">https://github.com/facebook/flipper/issues/2581</a>: <a href="https://github-redirect.dependabot.com/jsx-eslint/eslint-plugin-react/issues/2581">jsx-eslint/eslint-plugin-react#2581</a>
<a href="https://github-redirect.dependabot.com/jsx-eslint/eslint-plugin-react/issues/1591">https://github.com/facebook/flipper/issues/1591</a>: <a href="https://github-redirect.dependabot.com/jsx-eslint/eslint-plugin-react/pull/1591">jsx-eslint/eslint-plugin-react#1591</a></p>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a href="96062ea1c9"><code>96062ea</code></a> Update CHANGELOG and bump version</li>
<li><a href="b3c0e8d15e"><code>b3c0e8d</code></a> [Dev Deps] update <code>babel/core</code>, <code>babel/eslint-parser</code>, <code>aud</code>, `eslint-remot...</li>
<li><a href="0b63c45fd2"><code>0b63c45</code></a> [Fix] <code>no-unknown-property</code>: allow <code>webkitDirectory</code> on <code>input</code>, case-insensi...</li>
<li><a href="028457c9c0"><code>028457c</code></a> [Fix] <code>no-unknown-property</code>: properly tag-restrict case-insensitive attributes</li>
<li><a href="5783f5db47"><code>5783f5d</code></a> [Fix] <code>static-property-placement</code>: warn on nonstatic expected-statics</li>
<li><a href="78ad0f0697"><code>78ad0f0</code></a> [Docs] <code>no-unstable-nested-components</code>: Warn about memoized, nested components</li>
<li><a href="d9a51afccb"><code>d9a51af</code></a> [Perf] <code>isCreateElement</code>: improve performance for rules using isCreateElement</li>
<li><a href="5baa3e0fb7"><code>5baa3e0</code></a> [Perf] component detection: improve performance by optimizing getId</li>
<li><a href="d0da6bf6ba"><code>d0da6bf</code></a> [Fix] <code>jsx-no-constructed-context-values</code>: fix false positive for usage in no...</li>
<li><a href="645966a9af"><code>645966a</code></a> [Docs] <code>no-unknown-property</code>: fix typo in link</li>
<li>Additional commits viewable in <a href="https://github.com/jsx-eslint/eslint-plugin-react/compare/v7.31.8...v7.31.9">compare view</a></li>
</ul>
</details>
<br />

[![Dependabot compatibility score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=eslint-plugin-react&package-manager=npm_and_yarn&previous-version=7.31.8&new-version=7.31.9)](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/4201

Reviewed By: aigoncharov

Differential Revision: D40334971

Pulled By: mweststrate

fbshipit-source-id: 964f812a6f35018d32573ceda2512330fba04110
2022-10-18 06:44:13 -07:00
..
2021-10-21 04:28:21 -07:00
2022-01-18 07:46:05 -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
2022-10-18 04:06:55 -07:00
2022-06-01 02:49:25 -07: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 displayed in Flipper
    • options which conforms to the interface
      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;
        // Set device ID. Default: random ID persisted to local storage.
        getDeviceId?: () => Promise<string> | string
      }
      

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 implementation 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!).