Browse Source

Merge #836 #866 #867 #868 #869 #870

836: Introduce a supervisor actor that can restart another actor. r=thomaseizinger a=thomaseizinger



866: Bump vergen from 5.2.0 to 6.0.0 r=thomaseizinger a=dependabot[bot]

Bumps [vergen](https://github.com/rustyhorde/vergen) from 5.2.0 to 6.0.0.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a href="https://github.com/rustyhorde/vergen/releases">vergen's releases</a>.</em></p>
<blockquote>
<h2>v6.0.0</h2>
<ul>
<li>The <code>Copy</code> impl was dropped from the <code>Config</code> struct to facilitate specifying a non-standard git base path.</li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a href="21d6cdce0c"><code>21d6cdc</code></a> prepare 6.0 release</li>
<li>See full diff in <a href="https://github.com/rustyhorde/vergen/compare/5.2.0...6.0.0">compare view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=vergen&package-manager=cargo&previous-version=5.2.0&new-version=6.0.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>

867: Bump clap from 3.0.0-rc.1 to 3.0.0-rc.3 r=thomaseizinger a=dependabot[bot]

Bumps [clap](https://github.com/clap-rs/clap) from 3.0.0-rc.1 to 3.0.0-rc.3.
<details>
<summary>Commits</summary>
<ul>
<li><a href="ada95d6f3d"><code>ada95d6</code></a> chore: Release</li>
<li><a href="4ab51976a3"><code>4ab5197</code></a> chore: Release</li>
<li><a href="ca48e22827"><code>ca48e22</code></a> Merge pull request <a href="https://github-redirect.dependabot.com/clap-rs/clap/issues/3140">#3140</a> from epage/panic</li>
<li><a href="a4d2920cfa"><code>a4d2920</code></a> docs(readme): Raise visibility of wild</li>
<li><a href="756f825521"><code>756f825</code></a> fix: Point to public method on ArgMatches panic</li>
<li><a href="264dc37e50"><code>264dc37</code></a> fix: Report if mixing subcommands and args</li>
<li><a href="313b5e3c80"><code>313b5e3</code></a> Merge pull request <a href="https://github-redirect.dependabot.com/clap-rs/clap/issues/3138">#3138</a> from epage/disp</li>
<li><a href="d38452c953"><code>d38452c</code></a> refactor: Clarify explicit display order wins</li>
<li><a href="ae2b315f6a"><code>ae2b315</code></a> docs: Fix changelog link</li>
<li><a href="cf93d7c75a"><code>cf93d7c</code></a> docs: Fix example output</li>
<li>Additional commits viewable in <a href="https://github.com/clap-rs/clap/compare/clap_generate-v3.0.0-rc.1...clap_generate-v3.0.0-rc.3">compare view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=clap&package-manager=cargo&previous-version=3.0.0-rc.1&new-version=3.0.0-rc.3)](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>

868: Bump async-trait from 0.1.51 to 0.1.52 r=thomaseizinger a=dependabot[bot]

Bumps [async-trait](https://github.com/dtolnay/async-trait) from 0.1.51 to 0.1.52.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a href="https://github.com/dtolnay/async-trait/releases">async-trait's releases</a>.</em></p>
<blockquote>
<h2>0.1.52</h2>
<ul>
<li>Eliminate <code>clippy::shadow_some</code> restriction lint from generated code (<a href="https://github-redirect.dependabot.com/dtolnay/async-trait/issues/184">#184</a>, thanks <a href="https://github.com/c410-f3r"><code>`@​c410-f3r</code></a>)</li>`
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a href="20bd296e0d"><code>20bd296</code></a> Release 0.1.52</li>
<li><a href="076b7303ab"><code>076b730</code></a> Touch up PR 184</li>
<li><a href="9c42e3d90d"><code>9c42e3d</code></a> Merge pull request <a href="https://github-redirect.dependabot.com/dtolnay/async-trait/issues/184">#184</a> from c410-f3r/clippy</li>
<li><a href="7f0d4b6488"><code>7f0d4b6</code></a> Format PR 184 with rustfmt</li>
<li><a href="572f7e95f4"><code>572f7e9</code></a> Sort lint_suppress_with_body</li>
<li><a href="5629db9678"><code>5629db9</code></a> Fix <code>clippy::shadow_same</code> warning</li>
<li><a href="c5de48ef87"><code>c5de48e</code></a> Update ui test suite to nightly-2021-11-26</li>
<li><a href="7080dc8c99"><code>7080dc8</code></a> Raise minimum tested version to rustc 1.45</li>
<li><a href="278abc7ab4"><code>278abc7</code></a> Install newest build of cargo-outdated</li>
<li><a href="1ab566d3e7"><code>1ab566d</code></a> Remove noisy warnings from unreachable ui test</li>
<li>Additional commits viewable in <a href="https://github.com/dtolnay/async-trait/compare/0.1.51...0.1.52">compare view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=async-trait&package-manager=cargo&previous-version=0.1.51&new-version=0.1.52)](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>

869: Bump typescript from 4.5.2 to 4.5.3 in /taker-frontend r=thomaseizinger a=dependabot[bot]

Bumps [typescript](https://github.com/Microsoft/TypeScript) from 4.5.2 to 4.5.3.
<details>
<summary>Commits</summary>
<ul>
<li>See full diff in <a href="https://github.com/Microsoft/TypeScript/commits">compare view</a></li>
</ul>
</details>
<br />


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

870: Bump @chakra-ui/react from 1.7.2 to 1.7.3 in /taker-frontend r=thomaseizinger a=dependabot[bot]

Bumps [`@chakra-ui/react](https://github.com/chakra-ui/chakra-ui/tree/HEAD/packages/react)` from 1.7.2 to 1.7.3.
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a href="https://github.com/chakra-ui/chakra-ui/blob/main/packages/react/CHANGELOG.md"><code>`@​chakra-ui/react</code>'s` changelog</a>.</em></p>
<blockquote>
<h2>1.7.3</h2>
<h3>Patch Changes</h3>
<ul>
<li><a href="https://github-redirect.dependabot.com/chakra-ui/chakra-ui/pull/5133">#5133</a>
<a href="6efe10f210"><code>6efe10f21</code></a>
Thanks <a href="https://github.com/yoannfleurydev"><code>`@​yoannfleurydev</code></a>!` - Update
storybook url configuration for <code>`@chakra-ui/react</code>` to
<a href="https://storybook.chakra-ui.com">https://storybook.chakra-ui.com</a></li>
<li>Updated dependencies
[<a href="26d2a547bc"><code>26d2a547b</code></a>,
<a href="cd0b7996b3"><code>cd0b7996b</code></a>,
<a href="ba76b8125a"><code>ba76b8125</code></a>,
<a href="d139cc1515"><code>d139cc151</code></a>,
<a href="586eb6090f"><code>586eb6090</code></a>,
<a href="f565841c62"><code>f565841c6</code></a>,
<a href="f15099adc6"><code>f15099adc</code></a>,
<a href="98b9fbecb2"><code>98b9fbecb</code></a>,
<a href="c20aa919e4"><code>c20aa919e</code></a>,
<a href="53e2df4f9c"><code>53e2df4f9</code></a>,
<a href="b4decca9af"><code>b4decca9a</code></a>,
<a href="39846457e2"><code>39846457e</code></a>,
<a href="f4fd9441ea"><code>f4fd9441e</code></a>,
<a href="17400aff62"><code>17400aff6</code></a>]:
<ul>
<li><code>`@​chakra-ui/layout</code><a` href="https://github.com/1"><code>`@​1</code></a>.6.0</li>`
<li><code>`@​chakra-ui/menu</code><a` href="https://github.com/1"><code>`@​1</code></a>.8.2</li>`
<li><code>`@​chakra-ui/popover</code><a` href="https://github.com/1"><code>`@​1</code></a>.11.0</li>`
<li><code>`@​chakra-ui/input</code><a` href="https://github.com/1"><code>`@​1</code></a>.3.2</li>`
<li><code>`@​chakra-ui/system</code><a` href="https://github.com/1"><code>`@​1</code></a>.8.3</li>`
<li><code>`@​chakra-ui/theme</code><a` href="https://github.com/1"><code>`@​1</code></a>.12.2</li>`
<li><code>`@​chakra-ui/toast</code><a` href="https://github.com/1"><code>`@​1</code></a>.5.0</li>`
<li><code>`@​chakra-ui/tooltip</code><a` href="https://github.com/1"><code>`@​1</code></a>.4.2</li>`
<li><code>`@​chakra-ui/media-query</code><a` href="https://github.com/1"><code>`@​1</code></a>.2.2</li>`
<li><code>`@​chakra-ui/transition</code><a` href="https://github.com/1"><code>`@​1</code></a>.4.2</li>`
<li><code>`@​chakra-ui/icon</code><a` href="https://github.com/2"><code>`@​2</code></a>.0.0</li>`
<li><code>`@​chakra-ui/accordion</code><a` href="https://github.com/1"><code>`@​1</code></a>.4.2</li>`
<li><code>`@​chakra-ui/alert</code><a` href="https://github.com/1"><code>`@​1</code></a>.3.2</li>`
<li><code>`@​chakra-ui/close-button</code><a` href="https://github.com/1"><code>`@​1</code></a>.2.2</li>`
<li><code>`@​chakra-ui/form-control</code><a` href="https://github.com/1"><code>`@​1</code></a>.5.2</li>`
<li><code>`@​chakra-ui/modal</code><a` href="https://github.com/1"><code>`@​1</code></a>.10.2</li>`
<li><code>`@​chakra-ui/number-input</code><a` href="https://github.com/1"><code>`@​1</code></a>.3.2</li>`
<li><code>`@​chakra-ui/provider</code><a` href="https://github.com/1"><code>`@​1</code></a>.7.3</li>`
<li><code>`@​chakra-ui/radio</code><a` href="https://github.com/1"><code>`@​1</code></a>.4.3</li>`
<li><code>`@​chakra-ui/select</code><a` href="https://github.com/1"><code>`@​1</code></a>.2.2</li>`
<li><code>`@​chakra-ui/skeleton</code><a` href="https://github.com/1"><code>`@​1</code></a>.2.3</li>`
<li><code>`@​chakra-ui/stat</code><a` href="https://github.com/1"><code>`@​1</code></a>.2.2</li>`
<li><code>`@​chakra-ui/tag</code><a` href="https://github.com/1"><code>`@​1</code></a>.2.2</li>`
<li><code>`@​chakra-ui/textarea</code><a` href="https://github.com/1"><code>`@​1</code></a>.2.2</li>`
</ul>
</li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a href="211c64187d"><code>211c641</code></a> chore(release): version packages</li>
<li><a href="5c865602bf"><code>5c86560</code></a> Merge pull request <a href="https://github.com/chakra-ui/chakra-ui/tree/HEAD/packages/react/issues/4594">#4594</a> from feychenie/refactor/move-provider-to-separate-pa...</li>
<li><a href="74c850b551"><code>74c850b</code></a> chore: updates</li>
<li><a href="e7a732755e"><code>e7a7327</code></a> chore: general cleanups and updates to theme</li>
<li><a href="5b3373daef"><code>5b3373d</code></a> chore: update themes and fix type issues</li>
<li><a href="209c6d3f45"><code>209c6d3</code></a> chore: update extend theme to support new anatomy</li>
<li><a href="26f875c62a"><code>26f875c</code></a> refactor: move ChakraProvider to its own package</li>
<li>See full diff in <a href="https://github.com/chakra-ui/chakra-ui/commits/`@chakra-ui/menu@1.7.3/packages/react">compare` view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=`@chakra-ui/react&package-manager=npm_and_yarn&previous-version=1.7.2&new-version=1.7.3)](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>

Co-authored-by: Thomas Eizinger <thomas@eizinger.io>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
resilient-broadcast
bors[bot] 3 years ago
committed by GitHub
No known key found for this signature in database GPG Key ID: 4AEE18F83AFDEB23
  1. 18
      Cargo.lock
  2. 6
      daemon/Cargo.toml
  3. 93
      daemon/src/bitmex_price_feed.rs
  4. 1
      daemon/src/lib.rs
  5. 15
      daemon/src/maker.rs
  6. 90
      daemon/src/supervisor.rs
  7. 15
      daemon/src/taker.rs
  8. 6
      taker-frontend/package.json
  9. 315
      taker-frontend/yarn.lock

18
Cargo.lock

@ -119,9 +119,9 @@ dependencies = [
[[package]]
name = "async-trait"
version = "0.1.51"
version = "0.1.52"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "44318e776df68115a881de9a8fd1b9e53368d7a4a5ce4cc48517da3393233a5e"
checksum = "061a7acccaa286c011ddc30970520b98fa40e00c9d644633fb26b5fc63a265e3"
dependencies = [
"proc-macro2",
"quote",
@ -425,9 +425,9 @@ dependencies = [
[[package]]
name = "clap"
version = "3.0.0-rc.1"
version = "3.0.0-rc.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "c068998524e6d40ea78c8d2a4b00398f0a8b818c2d484bcb3cbeb2cff2c105ae"
checksum = "098d281b47bf725a0bddd829e0070ee76560faab8af123050a86c440d7f0a1fd"
dependencies = [
"atty",
"bitflags",
@ -442,9 +442,9 @@ dependencies = [
[[package]]
name = "clap_derive"
version = "3.0.0-rc.1"
version = "3.0.0-rc.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "0152ba3ee01fa5a9133d4e15a1d9659c75d2270365768dd5a880cc7e68871874"
checksum = "26de8102ffb96701066cea36f9a104285b67fbcc302a520640289d476c15ed8a"
dependencies = [
"heck",
"proc-macro-error",
@ -3570,9 +3570,9 @@ checksum = "accd4ea62f7bb7a82fe23066fb0957d48ef677f6eeb8215f372f52e48bb32426"
[[package]]
name = "vergen"
version = "5.2.0"
version = "6.0.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "b4a21b1fc04977357c3a6187a56ebd91ab60b98328956c1dda501f4e04c7afcb"
checksum = "fd0c9f8387e118573859ae0e6c6fbdfa41bd1f4fbea451b0b8c5a81a3b8bc9e0"
dependencies = [
"anyhow",
"cfg-if 1.0.0",
@ -3851,7 +3851,7 @@ dependencies = [
[[package]]
name = "xtra_productivity"
version = "0.1.0"
source = "git+https://github.com/comit-network/xtra-productivity#ee789b130f2d20b38f57434fe6ed18c4fdf1db4a"
source = "git+https://github.com/comit-network/xtra-productivity#52492681bb260a5789162e70cb5067994f051360"
dependencies = [
"quote",
"syn",

6
daemon/Cargo.toml

@ -5,12 +5,12 @@ edition = "2021"
[dependencies]
anyhow = "1"
async-trait = "0.1.51"
async-trait = "0.1.52"
atty = "0.2"
bdk = { version = "0.14.1-dev", default-features = false, features = ["electrum"] }
bytes = "1"
chrono = { version = "0.4", features = ["serde"] }
clap = { version = "3.0.0-rc.1", features = ["derive"] }
clap = { version = "3.0.0-rc.3", features = ["derive"] }
derive_more = { version = "0.99.17", default-features = false, features = ["display"] }
futures = { version = "0.3", default-features = false }
hex = "0.4"
@ -65,5 +65,5 @@ serde_test = "1"
time = { version = "0.3", features = ["std"] }
[build-dependencies]
vergen = "5"
vergen = "6"
anyhow = "1"

93
daemon/src/bitmex_price_feed.rs

@ -1,6 +1,7 @@
use crate::model::{Price, Timestamp};
use crate::{projection, Tasks};
use crate::{projection, supervisor, Tasks};
use anyhow::Result;
use async_trait::async_trait;
use futures::{SinkExt, TryStreamExt};
use rust_decimal::Decimal;
use std::convert::TryFrom;
@ -14,49 +15,43 @@ const URL: &str = "wss://www.bitmex.com/realtime?subscribe=quoteBin1m:XBTUSD";
pub struct Actor {
tasks: Tasks,
receiver: Box<dyn MessageChannel<projection::Update<Quote>>>,
supervisor: xtra::Address<supervisor::Actor<Self, StopReason>>,
}
impl Actor {
pub fn new(receiver: impl MessageChannel<projection::Update<Quote>> + 'static) -> Self {
pub fn new(
receiver: impl MessageChannel<projection::Update<Quote>> + 'static,
supervisor: xtra::Address<supervisor::Actor<Self, StopReason>>,
) -> Self {
Self {
tasks: Tasks::default(),
receiver: Box::new(receiver),
supervisor,
}
}
}
impl xtra::Actor for Actor {}
#[xtra_productivity]
impl Actor {
async fn handle(&mut self, msg: NotifyNoConnection, ctx: &mut xtra::Context<Self>) {
match msg {
NotifyNoConnection::Failed { error } => {
tracing::warn!("Connection to BitMex realtime API failed: {}", error)
}
NotifyNoConnection::StreamEnded => {
tracing::warn!("Connection to BitMex realtime API closed")
}
}
let this = ctx.address().expect("we are alive");
self.tasks.add(connect_until_successful(this));
}
async fn handle(&mut self, _: Connect, ctx: &mut xtra::Context<Self>) -> Result<()> {
tracing::debug!("Connecting to BitMex realtime API");
#[async_trait]
impl xtra::Actor for Actor {
async fn started(&mut self, ctx: &mut xtra::Context<Self>) {
self.tasks.add({
let this = ctx.address().expect("we are alive");
let receiver = self.receiver.clone_channel();
let (mut connection, _) = tokio_tungstenite::connect_async(URL).await?;
async move {
tracing::debug!("Connecting to BitMex realtime API");
tracing::info!("Connected to BitMex realtime API");
let mut connection = match tokio_tungstenite::connect_async(URL).await {
Ok((connection, _)) => connection,
Err(e) => {
let _ = this.send(StopReason::FailedToConnect { source: e }).await;
return
}
};
let this = ctx.address().expect("we are alive");
tracing::info!("Connected to BitMex realtime API");
self.tasks.add({
let receiver = self.receiver.clone_channel();
async move {
let no_connection = loop {
loop {
tokio::select! {
_ = tokio::time::sleep(Duration::from_secs(5)) => {
tracing::trace!("No message from BitMex in the last 5 seconds, pinging");
@ -89,38 +84,40 @@ impl Actor {
continue;
}
Ok(None) => {
break NotifyNoConnection::StreamEnded
let _ = this.send(StopReason::StreamEnded).await;
return;
}
Err(e) => {
break NotifyNoConnection::Failed { error: e }
let _ = this.send(StopReason::Failed { source: e }).await;
return;
}
}
},
}
};
let _ = this.send(no_connection).await;
}
}
});
Ok(())
}
}
async fn connect_until_successful(this: xtra::Address<Actor>) {
while let Err(e) = this
.send(Connect)
.await
.expect("always connected to ourselves")
{
tracing::warn!("Failed to connect to BitMex realtime API: {:#}", e);
#[xtra_productivity]
impl Actor {
async fn handle(&mut self, msg: StopReason, ctx: &mut xtra::Context<Self>) {
let _ = self
.supervisor
.send(supervisor::Stopped { reason: msg })
.await;
ctx.stop();
}
}
pub struct Connect;
enum NotifyNoConnection {
Failed { error: tungstenite::Error },
#[derive(thiserror::Error, Debug)]
pub enum StopReason {
#[error("Connection to BitMex API failed")]
Failed { source: tungstenite::Error },
#[error("Failed to connect to BitMex API")]
FailedToConnect { source: tungstenite::Error },
#[error("Websocket stream to BitMex API closed")]
StreamEnded,
}

1
daemon/src/lib.rs

@ -51,6 +51,7 @@ pub mod send_to_socket;
pub mod setup_contract;
pub mod setup_maker;
pub mod setup_taker;
pub mod supervisor;
pub mod taker_cfd;
pub mod to_sse_event;
pub mod tokio_ext;

15
daemon/src/maker.rs

@ -8,7 +8,7 @@ use daemon::model::cfd::Role;
use daemon::seed::Seed;
use daemon::{
bitmex_price_feed, db, housekeeping, logger, maker_inc_connections, monitor, oracle,
projection, wallet, MakerActorSystem, Tasks, HEARTBEAT_INTERVAL, N_PAYOUTS,
projection, supervisor, wallet, MakerActorSystem, Tasks, HEARTBEAT_INTERVAL, N_PAYOUTS,
SETTLEMENT_INTERVAL,
};
use sqlx::sqlite::SqliteConnectOptions;
@ -257,14 +257,13 @@ async fn main() -> Result<()> {
)
.await?;
let (price_feed_address, task) = bitmex_price_feed::Actor::new(projection_actor)
.create(None)
.run();
tasks.add(task);
let (supervisor, _price_feed) = supervisor::Actor::new(
move |supervisor| bitmex_price_feed::Actor::new(projection_actor.clone(), supervisor),
|_| true, // always restart price feed actor
);
price_feed_address
.send(bitmex_price_feed::Connect)
.await??;
let (_supervisor_address, task) = supervisor.create(None).run();
tasks.add(task);
let (proj_actor, projection_feeds) =
projection::Actor::new(db.clone(), Role::Maker, bitcoin_network).await?;

90
daemon/src/supervisor.rs

@ -0,0 +1,90 @@
use crate::Tasks;
use async_trait::async_trait;
use std::fmt;
use xtra::{Address, Context};
use xtra_productivity::xtra_productivity;
/// A supervising actor reacts to messages from the actor it is supervising and restarts it based on
/// a given policy.
pub struct Actor<T, R> {
context: Context<T>,
ctor: Box<dyn Fn(Address<Self>) -> T + Send + 'static>,
tasks: Tasks,
restart_policy: Box<dyn FnMut(R) -> bool + Send + 'static>,
}
impl<T, R> Actor<T, R>
where
T: xtra::Actor,
R: fmt::Display + 'static,
{
/// Construct a new supervisor.
///
/// The supervisor needs to know two things:
/// 1. How to construct an instance of the actor.
/// 2. When to construct an instance of the actor.
pub fn new(
ctor: impl (Fn(Address<Self>) -> T) + Send + 'static,
restart_policy: impl (FnMut(R) -> bool) + Send + 'static,
) -> (Self, Address<T>) {
let (address, context) = Context::new(None);
let supervisor = Self {
context,
ctor: Box::new(ctor),
tasks: Tasks::default(),
restart_policy: Box::new(restart_policy),
};
(supervisor, address)
}
fn spawn_new(&mut self, ctx: &mut Context<Self>) {
tracing::info!("Spawning new instance of actor"); // TODO: Include name
let this = ctx.address().expect("we are alive");
let actor = (self.ctor)(this);
self.tasks.add(self.context.attach(actor));
}
}
#[async_trait]
impl<T, R> xtra::Actor for Actor<T, R>
where
T: xtra::Actor,
R: fmt::Display + 'static,
{
async fn started(&mut self, ctx: &mut Context<Self>) {
self.spawn_new(ctx);
}
}
#[xtra_productivity]
impl<T, R> Actor<T, R>
where
T: xtra::Actor,
R: fmt::Display + 'static,
{
pub fn handle(&mut self, msg: Stopped<R>, ctx: &mut Context<Self>) {
let reason = msg.reason;
tracing::info!("Actor stopped: {}", reason); // TODO: Include name of actor
let should_restart = (self.restart_policy)(reason);
tracing::debug!("Restart actor? {}", should_restart);
if should_restart {
self.spawn_new(ctx)
}
}
}
/// Tell the supervisor that the actor was stopped.
///
/// The given `reason` will be passed to the `restart_policy` configured in the supervisor. If it
/// yields `true`, a new instance of the actor will be spawned.
pub struct Stopped<R> {
pub reason: R,
}

15
daemon/src/taker.rs

@ -8,7 +8,7 @@ use daemon::model::cfd::Role;
use daemon::model::Identity;
use daemon::seed::Seed;
use daemon::{
bitmex_price_feed, db, housekeeping, logger, monitor, oracle, projection, wallet,
bitmex_price_feed, db, housekeeping, logger, monitor, oracle, projection, supervisor, wallet,
TakerActorSystem, Tasks, HEARTBEAT_INTERVAL, N_PAYOUTS, SETTLEMENT_INTERVAL,
};
use sqlx::sqlite::SqliteConnectOptions;
@ -244,14 +244,13 @@ async fn main() -> Result<()> {
)
.await?;
let (price_feed_address, task) = bitmex_price_feed::Actor::new(projection_actor)
.create(None)
.run();
tasks.add(task);
let (supervisor, _price_feed) = supervisor::Actor::new(
move |supervisor| bitmex_price_feed::Actor::new(projection_actor.clone(), supervisor),
|_| true, // always restart price feed actor
);
price_feed_address
.send(bitmex_price_feed::Connect)
.await??;
let (_supervisor_address, task) = supervisor.create(None).run();
tasks.add(task);
let (proj_actor, projection_feeds) =
projection::Actor::new(db.clone(), Role::Taker, bitcoin_network).await?;

6
taker-frontend/package.json

@ -10,7 +10,7 @@
},
"dependencies": {
"@chakra-ui/icons": "^1.1.1",
"@chakra-ui/react": "^1.7.2",
"@chakra-ui/react": "^1.7.3",
"@emotion/react": "^11",
"@emotion/styled": "^11",
"@testing-library/jest-dom": "^5.16.1",
@ -32,7 +32,7 @@
"react-scripts": "4.0.3",
"react-sse-hooks": "^1.0.5",
"react-use-websocket": "^2.9.1",
"typescript": "^4.5.2",
"typescript": "^4.5.3",
"vite": "^2.7.1",
"web-vitals": "^2.1.2"
},
@ -45,7 +45,7 @@
"@types/react": "^17.0.37",
"@types/react-dom": "^17.0.11",
"@vitejs/plugin-react-refresh": "^1.3.1",
"typescript": "^4.5.2",
"typescript": "^4.5.3",
"vite": "^2.7.1"
},
"eslintConfig": {

315
taker-frontend/yarn.lock

@ -1231,24 +1231,24 @@
resolved "https://registry.yarnpkg.com/@bcoe/v8-coverage/-/v8-coverage-0.2.3.tgz#75a2e8b51cb758a7553d6804a5932d7aace75c39"
integrity sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==
"@chakra-ui/accordion@1.4.1":
version "1.4.1"
resolved "https://registry.yarnpkg.com/@chakra-ui/accordion/-/accordion-1.4.1.tgz#bd5373dcfd11572e5e2c535eca51aee4fc24c828"
integrity sha512-/E0FW5YHNVD6WwMGiuQuXpA70P2CKAV+MzcMITnSGPWsh9XD0mcXvMkIALVojfFk9tcCFdIGnxX/HWr41LzgIg==
"@chakra-ui/accordion@1.4.2":
version "1.4.2"
resolved "https://registry.yarnpkg.com/@chakra-ui/accordion/-/accordion-1.4.2.tgz#e851d5e0f748646e20efde909b5f70a93679283b"
integrity sha512-BAGMvcm2sFE5Ft7jwC9nF03/Yv7qztuhzwKBBy4iL0p1nCPh6kV54RBXUcoj3VWe+yrmNiAVYKRTdqQBTJFwOw==
dependencies:
"@chakra-ui/descendant" "2.1.1"
"@chakra-ui/hooks" "1.7.1"
"@chakra-ui/icon" "1.2.1"
"@chakra-ui/icon" "2.0.0"
"@chakra-ui/react-utils" "1.2.1"
"@chakra-ui/transition" "1.4.1"
"@chakra-ui/transition" "1.4.2"
"@chakra-ui/utils" "1.9.1"
"@chakra-ui/alert@1.3.1":
version "1.3.1"
resolved "https://registry.yarnpkg.com/@chakra-ui/alert/-/alert-1.3.1.tgz#d091b36ee4a7e3684220cd6f86fd2e08ca71cb2a"
integrity sha512-BeR6l/1CLZarA3uAe+5Q3hioYf7SixYfy9rOte/29ck1lx9PLjjuPYYmuDPtZNbGibhUCh48z4U/uK2x8mbpKQ==
"@chakra-ui/alert@1.3.2":
version "1.3.2"
resolved "https://registry.yarnpkg.com/@chakra-ui/alert/-/alert-1.3.2.tgz#6c038b0bd58f3964e0a3af213c162c108176a8b0"
integrity sha512-+OMeVeGtydpj6nry0zH7qFDt36zEaxckRnufx1BGiCfWdUg6ahVwKXl8qX93Q8w82od7eAoBKMgGJz7IVL5NPw==
dependencies:
"@chakra-ui/icon" "1.2.1"
"@chakra-ui/icon" "2.0.0"
"@chakra-ui/react-utils" "1.2.1"
"@chakra-ui/utils" "1.9.1"
@ -1304,12 +1304,12 @@
"@chakra-ui/react-utils" "1.2.1"
"@chakra-ui/utils" "1.9.1"
"@chakra-ui/close-button@1.2.1":
version "1.2.1"
resolved "https://registry.yarnpkg.com/@chakra-ui/close-button/-/close-button-1.2.1.tgz#1109665e73cddcb643bd66e208b2aac75e8af40f"
integrity sha512-A/cuFtJPF8rp5p6tCIGlQdHB89gLCSOzxWssoTXAGJnmlwY2YunFHxgkYZXwPbDqFrM8ndya7Ys+AuL1JZsa3g==
"@chakra-ui/close-button@1.2.2":
version "1.2.2"
resolved "https://registry.yarnpkg.com/@chakra-ui/close-button/-/close-button-1.2.2.tgz#43e91b34d51f75dc08ff9a56cbfc7ed5ad158b8a"
integrity sha512-SqeLib0qgMjK3OsO1g5OnAHUmdCC8GMjToNEea7TeSrA44bH9EXVhFTkMMu2PnDVHbQmi4Ee1cuulNJt0UhQ3g==
dependencies:
"@chakra-ui/icon" "1.2.1"
"@chakra-ui/icon" "2.0.0"
"@chakra-ui/utils" "1.9.1"
"@chakra-ui/color-mode@1.3.2":
@ -1365,13 +1365,13 @@
"@chakra-ui/utils" "1.9.1"
react-focus-lock "2.5.2"
"@chakra-ui/form-control@1.5.1":
version "1.5.1"
resolved "https://registry.yarnpkg.com/@chakra-ui/form-control/-/form-control-1.5.1.tgz#235267088026690d6994fa406c9f2618fa0351ec"
integrity sha512-ASZYQFOs5mAoaNXAN/ZaesMy3XV07F0/Eba5PQ7Dejdn91aep6lqF889hmr8yqcR646xCOY7ISyYsskfh9QHrQ==
"@chakra-ui/form-control@1.5.2":
version "1.5.2"
resolved "https://registry.yarnpkg.com/@chakra-ui/form-control/-/form-control-1.5.2.tgz#4ce34f03165cfafacecabdce3be82011b74308a7"
integrity sha512-uWv0/f+JEM0ZE5Hnj3TzCnJ09EB+A+DSs9QgyECOuxx9Ju6gnns2uaRki2BfxksQL9ZZomPCkMtXazY9Wa81ag==
dependencies:
"@chakra-ui/hooks" "1.7.1"
"@chakra-ui/icon" "1.2.1"
"@chakra-ui/icon" "2.0.0"
"@chakra-ui/react-utils" "1.2.1"
"@chakra-ui/utils" "1.9.1"
@ -1392,6 +1392,13 @@
dependencies:
"@chakra-ui/utils" "1.9.1"
"@chakra-ui/icon@2.0.0":
version "2.0.0"
resolved "https://registry.yarnpkg.com/@chakra-ui/icon/-/icon-2.0.0.tgz#a2468736117139f94c6ed65eb86b9838e554c90e"
integrity sha512-/GuU+xIcOIy9uSUUUCu249ZJB/nLDbjWGkfpoSdBwqT4+ytJrKt+0Ckh3Ub14sz3BJD+Z6IiIt6ySOA9+7lbsA==
dependencies:
"@chakra-ui/utils" "1.9.1"
"@chakra-ui/icons@^1.1.1":
version "1.1.1"
resolved "https://registry.yarnpkg.com/@chakra-ui/icons/-/icons-1.1.1.tgz#e4b191fd38be999c4434ff2b1fb69a5eaf3cf226"
@ -1408,21 +1415,21 @@
"@chakra-ui/hooks" "1.7.1"
"@chakra-ui/utils" "1.9.1"
"@chakra-ui/input@1.3.1":
version "1.3.1"
resolved "https://registry.yarnpkg.com/@chakra-ui/input/-/input-1.3.1.tgz#a407242239f7bb5fdf3b237ab90355c7d77aff9e"
integrity sha512-Z+LqkwVPMeUBuvB9dLDPKkBnWV52Q1PVl3KW9ouDIFg7SoemeYkBt3p4ttEKE+eIPsPlrcH1u2A/RGcCTZOe1g==
"@chakra-ui/input@1.3.2":
version "1.3.2"
resolved "https://registry.yarnpkg.com/@chakra-ui/input/-/input-1.3.2.tgz#59d49ab5c8645c51cd591d46ca23d5cb95e03392"
integrity sha512-VMxmQgFiQ2UnBlkgLX/336G0IfYfw8YWF2ZoEFj5WL9kDSrrL1FXSBgjFGxrper74G4W20tESBCfU1S891y6cg==
dependencies:
"@chakra-ui/form-control" "1.5.1"
"@chakra-ui/form-control" "1.5.2"
"@chakra-ui/react-utils" "1.2.1"
"@chakra-ui/utils" "1.9.1"
"@chakra-ui/layout@1.5.1":
version "1.5.1"
resolved "https://registry.yarnpkg.com/@chakra-ui/layout/-/layout-1.5.1.tgz#be33e8fb5fb187f13c5c0ef66fe94cd293094da6"
integrity sha512-nKiyZ5adjNTbBV3oFIUGIPijwutO1NGdev1jHtnZc3xo2urCIkBvKU8+mVjlX04IwZ7oLKoP3EiDDv0g7+o41Q==
"@chakra-ui/layout@1.6.0":
version "1.6.0"
resolved "https://registry.yarnpkg.com/@chakra-ui/layout/-/layout-1.6.0.tgz#fa45d72420f01f4f6082f5a5a0c202bf7b09a059"
integrity sha512-WUfQ104y1wNueU33/hPlZsMzYJGjO0dXMpVkQf5ZNhNX3IGDO+5+MO2x2xloP+j45yNPi3p8ti/HBnm3dXI+3Q==
dependencies:
"@chakra-ui/icon" "1.2.1"
"@chakra-ui/icon" "2.0.0"
"@chakra-ui/react-utils" "1.2.1"
"@chakra-ui/utils" "1.9.1"
@ -1433,51 +1440,51 @@
dependencies:
"@chakra-ui/utils" "1.9.1"
"@chakra-ui/media-query@1.2.1":
version "1.2.1"
resolved "https://registry.yarnpkg.com/@chakra-ui/media-query/-/media-query-1.2.1.tgz#c1df05cbe8bd909a410d134240f9bceee760ec09"
integrity sha512-Ho/qiPGTjNukFTE9WBdYV9FIXU7KFTJPqdRQPWANkz+j275n6sqSE1j5LRJllP+ett21KeuWLN4zL33pP0Ox+g==
"@chakra-ui/media-query@1.2.2":
version "1.2.2"
resolved "https://registry.yarnpkg.com/@chakra-ui/media-query/-/media-query-1.2.2.tgz#46db9059de1367a3aa85c1fb973a78f95fca6cc5"
integrity sha512-xSmDVleE1drWiGH/MX3RqyVm29x/8Vf6G0UGaI2kCpbNmon+Q1zHW/yDHvptIuctLrPHYO8LOBxuUjfnIXwC2g==
dependencies:
"@chakra-ui/react-env" "1.1.1"
"@chakra-ui/utils" "1.9.1"
"@chakra-ui/menu@1.8.1":
version "1.8.1"
resolved "https://registry.yarnpkg.com/@chakra-ui/menu/-/menu-1.8.1.tgz#ad26e12843914747de1c36228f4f45c2be668a4d"
integrity sha512-fgzzFukBj4sQzTRf4q/+nHiVTKhrMtJdofnluqce/SCRJ1G+bbovUySblTzfI8iFlTSZt/eWc/Nju4JB1S+3Yg==
"@chakra-ui/menu@1.8.2":
version "1.8.2"
resolved "https://registry.yarnpkg.com/@chakra-ui/menu/-/menu-1.8.2.tgz#849f51beef6220667eb47c831ddf2c65919ded0e"
integrity sha512-u2GfkwTqbWa8L/7i/kOFbU3JANiT2HStR+gsYKuiuOPiuBcUb8OlgfJfP70OtVKegNKmVEMjvzXtld3wCCo/1g==
dependencies:
"@chakra-ui/clickable" "1.2.1"
"@chakra-ui/descendant" "2.1.1"
"@chakra-ui/hooks" "1.7.1"
"@chakra-ui/popper" "2.4.1"
"@chakra-ui/react-utils" "1.2.1"
"@chakra-ui/transition" "1.4.1"
"@chakra-ui/transition" "1.4.2"
"@chakra-ui/utils" "1.9.1"
"@chakra-ui/modal@1.10.1":
version "1.10.1"
resolved "https://registry.yarnpkg.com/@chakra-ui/modal/-/modal-1.10.1.tgz#849243b6f700845ef04e8247d3326e3e0324b789"
integrity sha512-cboC2ITm+5FjhrBc6yJ5cW4VXnfwlLhFa1EkPqF1k4kvYGyUHArvPN1q8AiPYOIrupHYu2Iu6YmQPg7TJwNImg==
"@chakra-ui/modal@1.10.2":
version "1.10.2"
resolved "https://registry.yarnpkg.com/@chakra-ui/modal/-/modal-1.10.2.tgz#578c30812c63863bef25f4b5c279cacbb34528ec"
integrity sha512-ZlmYetPHwHW4CAM09j4/+Ui54dXR1nzU6mOwhWe4/IzLvEyoEU6fHJeKyGxVUpYTG/7wltG/wKFRJpYa77tiBg==
dependencies:
"@chakra-ui/close-button" "1.2.1"
"@chakra-ui/close-button" "1.2.2"
"@chakra-ui/focus-lock" "1.2.1"
"@chakra-ui/hooks" "1.7.1"
"@chakra-ui/portal" "1.3.1"
"@chakra-ui/react-utils" "1.2.1"
"@chakra-ui/transition" "1.4.1"
"@chakra-ui/transition" "1.4.2"
"@chakra-ui/utils" "1.9.1"
aria-hidden "^1.1.1"
react-remove-scroll "2.4.1"
"@chakra-ui/number-input@1.3.1":
version "1.3.1"
resolved "https://registry.yarnpkg.com/@chakra-ui/number-input/-/number-input-1.3.1.tgz#1c46b2748240c780617955da4f2f20a5414edf5c"
integrity sha512-4vBRSShT5pedElgP9YGVC+9RHzQGmUVZqu3p0gZW0fLGVVQ9C1EGrO7djL+k3tgklyu8RvSwkRDJqEPvbQKDgQ==
"@chakra-ui/number-input@1.3.2":
version "1.3.2"
resolved "https://registry.yarnpkg.com/@chakra-ui/number-input/-/number-input-1.3.2.tgz#580035e56a13c30b04034ab02cb9c1132a1cf09c"
integrity sha512-7x7AoqwPXU1odyDcqIwjBwf0MJUwYMM2fa+6YZ52F941GKlvkDiiJOhK6xfhhBzkLUQD6DN8zgAmmGhaZ6UQXw==
dependencies:
"@chakra-ui/counter" "1.2.1"
"@chakra-ui/form-control" "1.5.1"
"@chakra-ui/form-control" "1.5.2"
"@chakra-ui/hooks" "1.7.1"
"@chakra-ui/icon" "1.2.1"
"@chakra-ui/icon" "2.0.0"
"@chakra-ui/react-utils" "1.2.1"
"@chakra-ui/utils" "1.9.1"
@ -1491,12 +1498,12 @@
"@chakra-ui/react-utils" "1.2.1"
"@chakra-ui/utils" "1.9.1"
"@chakra-ui/popover@1.10.1":
version "1.10.1"
resolved "https://registry.yarnpkg.com/@chakra-ui/popover/-/popover-1.10.1.tgz#03a172201d46bde73eeff7e40e141d82876df493"
integrity sha512-/dMUQfd+h9j3GBtkA/nYaQ5xeu4vk0psUClFvLOAJRwXGN3aMrzn/mhrvHWQ/cJuwQrO1WzxH2+g6pwsFOm9ng==
"@chakra-ui/popover@1.11.0":
version "1.11.0"
resolved "https://registry.yarnpkg.com/@chakra-ui/popover/-/popover-1.11.0.tgz#3ad9faf26019c750a5f8c619ee80dd97bcc4ee3e"
integrity sha512-cCHXAfhIRir+M0ehlYIjDw3mHpiCxDTJ9WV0H1zHQV8nDYVIlZw3nEntaq8oJrv0wpIzq2WCW5ss+bBR7nLZ1A==
dependencies:
"@chakra-ui/close-button" "1.2.1"
"@chakra-ui/close-button" "1.2.2"
"@chakra-ui/hooks" "1.7.1"
"@chakra-ui/popper" "2.4.1"
"@chakra-ui/react-utils" "1.2.1"
@ -1527,24 +1534,24 @@
"@chakra-ui/theme-tools" "1.3.1"
"@chakra-ui/utils" "1.9.1"
"@chakra-ui/provider@1.7.2":
version "1.7.2"
resolved "https://registry.yarnpkg.com/@chakra-ui/provider/-/provider-1.7.2.tgz#0559dce48df8dc353d36d8cdaa343fceaaa202b1"
integrity sha512-5Tk7K6aY2gWQQn62MOmeOtRdDJjmtHau2klxhKDlEIPs/smrdBF/ymK7eI5pJiU/BeKHAbM6DbvelR2khUZP+w==
"@chakra-ui/provider@1.7.3":
version "1.7.3"
resolved "https://registry.yarnpkg.com/@chakra-ui/provider/-/provider-1.7.3.tgz#625c0b7c1265515399bb501bc929d8851bba2958"
integrity sha512-D1SrQ7do4yzAv9/OTF3yj/BkLm7kFo5DdeuOCyvXGpVJumnvbtjltRmC7rFQH4R+y9qXPvfQP4LKMNBqSxPNng==
dependencies:
"@chakra-ui/css-reset" "1.1.1"
"@chakra-ui/hooks" "1.7.1"
"@chakra-ui/portal" "1.3.1"
"@chakra-ui/react-env" "1.1.1"
"@chakra-ui/system" "1.8.2"
"@chakra-ui/system" "1.8.3"
"@chakra-ui/utils" "1.9.1"
"@chakra-ui/radio@1.4.2":
version "1.4.2"
resolved "https://registry.yarnpkg.com/@chakra-ui/radio/-/radio-1.4.2.tgz#b0dcdc6a1e5668dbe3888db1c6e8e1bc0b78c6e9"
integrity sha512-QWIZAy/PLHNnlI6Z6o3kAdUzkSMpaJ9kOlMIFcsen6tAfPob3R+cyMQFiaX6RBw7yHWYIrfD9gaAqwd+FihQWQ==
"@chakra-ui/radio@1.4.3":
version "1.4.3"
resolved "https://registry.yarnpkg.com/@chakra-ui/radio/-/radio-1.4.3.tgz#d87788fe688d0d58252e9efeb926d0417a70e158"
integrity sha512-TQdyfdUD3BLklOP67n82JN8ksQv1BYjvaYsK0m6WCa0LDJr9aCC+XtUPgVq/1L2t4HqHdiGOrGBooF4vvy/+BA==
dependencies:
"@chakra-ui/form-control" "1.5.1"
"@chakra-ui/form-control" "1.5.2"
"@chakra-ui/hooks" "1.7.1"
"@chakra-ui/react-utils" "1.2.1"
"@chakra-ui/utils" "1.9.1"
@ -1564,75 +1571,75 @@
dependencies:
"@chakra-ui/utils" "^1.9.1"
"@chakra-ui/react@^1.7.2":
version "1.7.2"
resolved "https://registry.yarnpkg.com/@chakra-ui/react/-/react-1.7.2.tgz#7613f33d4adc2384d2fa8675cb6e94780e5c4cbe"
integrity sha512-2RxJHqYLSSB/dQQ9M4APxMopPfsU89A++63v8U8jiR7J8sUaa6Ded9ypTiIUY09J8v7mJAus4/ZSJxG7Zfd7aA==
"@chakra-ui/react@^1.7.3":
version "1.7.3"
resolved "https://registry.yarnpkg.com/@chakra-ui/react/-/react-1.7.3.tgz#358a3ff9847b78a798384db5c64cc222c9a48ae8"
integrity sha512-6mrfDUOa9MoQ44Xvi7xgdDq48jTTTjW9BupCGf2R3DI+z6RbUKIHzbcoDJZt2HGY6j9EarMVNRoQJzvzGUKpoQ==
dependencies:
"@chakra-ui/accordion" "1.4.1"
"@chakra-ui/alert" "1.3.1"
"@chakra-ui/accordion" "1.4.2"
"@chakra-ui/alert" "1.3.2"
"@chakra-ui/avatar" "1.3.1"
"@chakra-ui/breadcrumb" "1.3.1"
"@chakra-ui/button" "1.5.1"
"@chakra-ui/checkbox" "1.6.1"
"@chakra-ui/close-button" "1.2.1"
"@chakra-ui/close-button" "1.2.2"
"@chakra-ui/control-box" "1.1.1"
"@chakra-ui/counter" "1.2.1"
"@chakra-ui/css-reset" "1.1.1"
"@chakra-ui/editable" "1.3.1"
"@chakra-ui/form-control" "1.5.1"
"@chakra-ui/form-control" "1.5.2"
"@chakra-ui/hooks" "1.7.1"
"@chakra-ui/icon" "1.2.1"
"@chakra-ui/icon" "2.0.0"
"@chakra-ui/image" "1.1.1"
"@chakra-ui/input" "1.3.1"
"@chakra-ui/layout" "1.5.1"
"@chakra-ui/input" "1.3.2"
"@chakra-ui/layout" "1.6.0"
"@chakra-ui/live-region" "1.1.1"
"@chakra-ui/media-query" "1.2.1"
"@chakra-ui/menu" "1.8.1"
"@chakra-ui/modal" "1.10.1"
"@chakra-ui/number-input" "1.3.1"
"@chakra-ui/media-query" "1.2.2"
"@chakra-ui/menu" "1.8.2"
"@chakra-ui/modal" "1.10.2"
"@chakra-ui/number-input" "1.3.2"
"@chakra-ui/pin-input" "1.7.1"
"@chakra-ui/popover" "1.10.1"
"@chakra-ui/popover" "1.11.0"
"@chakra-ui/popper" "2.4.1"
"@chakra-ui/portal" "1.3.1"
"@chakra-ui/progress" "1.2.1"
"@chakra-ui/provider" "1.7.2"
"@chakra-ui/radio" "1.4.2"
"@chakra-ui/provider" "1.7.3"
"@chakra-ui/radio" "1.4.3"
"@chakra-ui/react-env" "1.1.1"
"@chakra-ui/select" "1.2.1"
"@chakra-ui/skeleton" "1.2.2"
"@chakra-ui/select" "1.2.2"
"@chakra-ui/skeleton" "1.2.3"
"@chakra-ui/slider" "1.5.2"
"@chakra-ui/spinner" "1.2.1"
"@chakra-ui/stat" "1.2.1"
"@chakra-ui/stat" "1.2.2"
"@chakra-ui/switch" "1.3.1"
"@chakra-ui/system" "1.8.2"
"@chakra-ui/system" "1.8.3"
"@chakra-ui/table" "1.3.1"
"@chakra-ui/tabs" "1.6.1"
"@chakra-ui/tag" "1.2.1"
"@chakra-ui/textarea" "1.2.1"
"@chakra-ui/theme" "1.12.1"
"@chakra-ui/toast" "1.4.1"
"@chakra-ui/tooltip" "1.4.1"
"@chakra-ui/transition" "1.4.1"
"@chakra-ui/tag" "1.2.2"
"@chakra-ui/textarea" "1.2.2"
"@chakra-ui/theme" "1.12.2"
"@chakra-ui/toast" "1.5.0"
"@chakra-ui/tooltip" "1.4.2"
"@chakra-ui/transition" "1.4.2"
"@chakra-ui/utils" "1.9.1"
"@chakra-ui/visually-hidden" "1.1.1"
"@chakra-ui/select@1.2.1":
version "1.2.1"
resolved "https://registry.yarnpkg.com/@chakra-ui/select/-/select-1.2.1.tgz#a014c44efdc992ced96a4a74364148a4846c3d1f"
integrity sha512-GqRmYGjVnw/Z/2RQiW7Ywuu9O5E0spmMUBjeE/v0rqjixBqrmdApjg5pmJ4YmUMvUI/WkGtR3FR5W9Y5PpvfKw==
"@chakra-ui/select@1.2.2":
version "1.2.2"
resolved "https://registry.yarnpkg.com/@chakra-ui/select/-/select-1.2.2.tgz#1c2956c21a012e7c9ea294db42d3cab0d05bed24"
integrity sha512-EchJW3St1DtSWHe//DHwKjGsQYL2zbKcNCLnJWQKGMPZsQhAD2wsm4xjowFrV8AkY7jbVM/U2v68puN7YTC3hg==
dependencies:
"@chakra-ui/form-control" "1.5.1"
"@chakra-ui/form-control" "1.5.2"
"@chakra-ui/utils" "1.9.1"
"@chakra-ui/skeleton@1.2.2":
version "1.2.2"
resolved "https://registry.yarnpkg.com/@chakra-ui/skeleton/-/skeleton-1.2.2.tgz#14d7486574e5c430e34d4ed342a3c7fc00734e29"
integrity sha512-kA3DmhaazVX31iIOY87Jskqj+TFd+FKhOCWjPgZiFeEtJDYriU9BfzYSo2j6ePLtMRMc6Z99vXIHmjoOIEy5xQ==
"@chakra-ui/skeleton@1.2.3":
version "1.2.3"
resolved "https://registry.yarnpkg.com/@chakra-ui/skeleton/-/skeleton-1.2.3.tgz#f7be28e3af214473fb6cdec45d0715a049f82575"
integrity sha512-u5ASkzPiBjfvKxKuBienUfmyYDTHziSWQ8Ny6k83LbwLv9IcmBNGsSkmsp7hesgi9cMHGBQ3hY2GTqG9ljndIg==
dependencies:
"@chakra-ui/hooks" "1.7.1"
"@chakra-ui/media-query" "1.2.1"
"@chakra-ui/system" "1.8.2"
"@chakra-ui/media-query" "1.2.2"
"@chakra-ui/system" "1.8.3"
"@chakra-ui/utils" "1.9.1"
"@chakra-ui/slider@1.5.2":
@ -1652,19 +1659,19 @@
"@chakra-ui/utils" "1.9.1"
"@chakra-ui/visually-hidden" "1.1.1"
"@chakra-ui/stat@1.2.1":
version "1.2.1"
resolved "https://registry.yarnpkg.com/@chakra-ui/stat/-/stat-1.2.1.tgz#76be860aa5ae7ef66717ab7a7fcf5862268a05e7"
integrity sha512-BTZFeh/8VdgUX080taCQj1g/rS4wGc+y3GQnklqlZ9N/bEv0gyLqQga7TFC/NkVl3cvjRiMnCCPj6vRih9x+Og==
"@chakra-ui/stat@1.2.2":
version "1.2.2"
resolved "https://registry.yarnpkg.com/@chakra-ui/stat/-/stat-1.2.2.tgz#4a690b9a01986a838eb38ff20ee9cfaccdff0cdd"
integrity sha512-0StsPDC56MjzhdlBl0R8wU0uwj9L1tvhQzge/ELSDn4tQDI7VovrxpFzVH0qsj7EZDwZa0BRQaSrstzWvgmJ/Q==
dependencies:
"@chakra-ui/icon" "1.2.1"
"@chakra-ui/icon" "2.0.0"
"@chakra-ui/utils" "1.9.1"
"@chakra-ui/visually-hidden" "1.1.1"
"@chakra-ui/styled-system@1.14.1":
version "1.14.1"
resolved "https://registry.yarnpkg.com/@chakra-ui/styled-system/-/styled-system-1.14.1.tgz#78f49de1842a3675c44b17c9f392d7172880209a"
integrity sha512-dgXFYZdJicsddUnPV1X7lQksgMD0z5EvwGaIh2JHJERqNRIvth/CBAnVLQQvy/xSJK5YaSEmeuVVU0veUOQcXg==
"@chakra-ui/styled-system@1.15.0":
version "1.15.0"
resolved "https://registry.yarnpkg.com/@chakra-ui/styled-system/-/styled-system-1.15.0.tgz#fe117ace12b452379e4df69f4779395ead55917f"
integrity sha512-LnsKeiYkUuJ+NMTwueiX0Mj8CW9XAMJrJxpQm/X3GY5L5PO7Hv6wW725Ovqdy4mhG3IK7S8444FthpsDv/luHw==
dependencies:
"@chakra-ui/utils" "1.9.1"
csstype "^3.0.9"
@ -1677,14 +1684,14 @@
"@chakra-ui/checkbox" "1.6.1"
"@chakra-ui/utils" "1.9.1"
"@chakra-ui/system@1.8.2":
version "1.8.2"
resolved "https://registry.yarnpkg.com/@chakra-ui/system/-/system-1.8.2.tgz#243820e8b0000a6874cc57218245462d11001695"
integrity sha512-k/43bv5exPGc6hBVcq5dUdGC+0pmQthJP/VqcTUt0oIc3oyoVSAnJhpmBkFHXYNqj6yYd2K7qdD2PjjbZ5KCLA==
"@chakra-ui/system@1.8.3":
version "1.8.3"
resolved "https://registry.yarnpkg.com/@chakra-ui/system/-/system-1.8.3.tgz#bad447f4fda427fc28e234470d9fcc5a9b524d62"
integrity sha512-6MaevsT7A2ifgOGQQCQsfvzPVd0kEXqFrX1Oxd842bawaqthmbFdo2bBTdaia/+Ivq/8Xot2uAQSbU+3NuRiUA==
dependencies:
"@chakra-ui/color-mode" "1.3.2"
"@chakra-ui/react-utils" "1.2.1"
"@chakra-ui/styled-system" "1.14.1"
"@chakra-ui/styled-system" "1.15.0"
"@chakra-ui/utils" "1.9.1"
react-fast-compare "3.2.0"
@ -1706,20 +1713,20 @@
"@chakra-ui/react-utils" "1.2.1"
"@chakra-ui/utils" "1.9.1"
"@chakra-ui/tag@1.2.1":
version "1.2.1"
resolved "https://registry.yarnpkg.com/@chakra-ui/tag/-/tag-1.2.1.tgz#2e5b7bd9895ece35d495b83bb29c34a3142cfe01"
integrity sha512-O068n+qBc+CSyvpRBJ6Lwep6SydQ9UysRqw1ETF+4fJSp9dMrBp8vOcl2SVacKaCu13qdv8UdRMBxUiTz3lh7A==
"@chakra-ui/tag@1.2.2":
version "1.2.2"
resolved "https://registry.yarnpkg.com/@chakra-ui/tag/-/tag-1.2.2.tgz#25519544cdbc0a32b2f8f44c7a8bae3bda912cb1"
integrity sha512-H25y9nEyUAUdwQDND9P4mMXKf1wf9UH4A3DyP237qVKIyYBpa4aCH8eJU4dunh2yIzASB0DWcr7lsul/HAHxmg==
dependencies:
"@chakra-ui/icon" "1.2.1"
"@chakra-ui/icon" "2.0.0"
"@chakra-ui/utils" "1.9.1"
"@chakra-ui/textarea@1.2.1":
version "1.2.1"
resolved "https://registry.yarnpkg.com/@chakra-ui/textarea/-/textarea-1.2.1.tgz#cf1594ce6496817530106f70a5d787c1a9e40f59"
integrity sha512-3xDsL1qQ+eY5r4GcRL4bg90vtV/xxVlw0Z3PFehFP5JW7VwXNZIRjauR/+HlOA8eYq0cF6ch2boR1GPso6rQtw==
"@chakra-ui/textarea@1.2.2":
version "1.2.2"
resolved "https://registry.yarnpkg.com/@chakra-ui/textarea/-/textarea-1.2.2.tgz#3e62612e4b1bc0724ba084b0b08b247ac2bbdbab"
integrity sha512-DoLdKxHk0DyrQDnj1la9wjl2AW3/SK62nfWDYLAm0ouFsw1VKPw9nU+Yyj0dPruQTzI19nLaYF26i97rtnT27g==
dependencies:
"@chakra-ui/form-control" "1.5.1"
"@chakra-ui/form-control" "1.5.2"
"@chakra-ui/utils" "1.9.1"
"@chakra-ui/theme-tools@1.3.1", "@chakra-ui/theme-tools@^1.3.1":
@ -1730,32 +1737,32 @@
"@chakra-ui/utils" "1.9.1"
"@ctrl/tinycolor" "^3.4.0"
"@chakra-ui/theme@1.12.1":
version "1.12.1"
resolved "https://registry.yarnpkg.com/@chakra-ui/theme/-/theme-1.12.1.tgz#48a61fe5b2b0f8f422255d3049e16bb0b2dd6e60"
integrity sha512-8yDril3rSzv42eKR0x7KdnrpN1ubY0m6q37CVUADgtboJqoJwWWX2/hqkv8CX6WJf8ZwPwFL5QIwS2FPSGgi+g==
"@chakra-ui/theme@1.12.2":
version "1.12.2"
resolved "https://registry.yarnpkg.com/@chakra-ui/theme/-/theme-1.12.2.tgz#191e168d83e7a66bc3e65be802ad4e4e2a9bbeb5"
integrity sha512-LVjSf16yYHD40ILrsDEd3idVQRvJSY7JY8lvTGWo2p6v+JQESWF+zXlYi9Le+TXRpZuFvJuuQ1SEvoqVwdcJ8Q==
dependencies:
"@chakra-ui/anatomy" "1.2.1"
"@chakra-ui/theme-tools" "1.3.1"
"@chakra-ui/utils" "1.9.1"
"@chakra-ui/toast@1.4.1":
version "1.4.1"
resolved "https://registry.yarnpkg.com/@chakra-ui/toast/-/toast-1.4.1.tgz#3e3885dd039e19f8ce60446f4843e0d8ec074b24"
integrity sha512-vzQkYwnGq2nx0bOKIQ6XpJaGzUwnWKmUjcVrz9NzGwVI4g93PS7+13515R0m1NrDp30132OeDXQ+tmQwCRRe6w==
"@chakra-ui/toast@1.5.0":
version "1.5.0"
resolved "https://registry.yarnpkg.com/@chakra-ui/toast/-/toast-1.5.0.tgz#c6456c0a4f24669e16946de318ad568e24a5d497"
integrity sha512-rTsFx/Qos5oVPN6aZMbT/wTxwZlFNSXQqrTpJYaRcRFQGzxIDDxmGkKYfPnyJjRP9i6EqynJhXEIyhMA0xO0dw==
dependencies:
"@chakra-ui/alert" "1.3.1"
"@chakra-ui/close-button" "1.2.1"
"@chakra-ui/alert" "1.3.2"
"@chakra-ui/close-button" "1.2.2"
"@chakra-ui/hooks" "1.7.1"
"@chakra-ui/theme" "1.12.1"
"@chakra-ui/transition" "1.4.1"
"@chakra-ui/theme" "1.12.2"
"@chakra-ui/transition" "1.4.2"
"@chakra-ui/utils" "1.9.1"
"@reach/alert" "0.13.2"
"@chakra-ui/tooltip@1.4.1":
version "1.4.1"
resolved "https://registry.yarnpkg.com/@chakra-ui/tooltip/-/tooltip-1.4.1.tgz#21e148b7107a92abbf90c19a3eead718b875a544"
integrity sha512-KvTuqSqIpIgE+YNUwN7ONDRkSGR6SK9+dgSx2PfKy0Sel7UgDPVtxByuZ6tfJ9O1VTRYEdF9k+s6Gf8eRFQbNA==
"@chakra-ui/tooltip@1.4.2":
version "1.4.2"
resolved "https://registry.yarnpkg.com/@chakra-ui/tooltip/-/tooltip-1.4.2.tgz#fce61c7ad4c3e6e5833487ddf75f03c774913fb9"
integrity sha512-+wyYXG8qenKkFy2YSFfOBf3rlWADnu6S9EUxP+3Rmm78unOWXDuTJWzqy2QlXs2BwoQoifaz1LVwzmMb7WLVgQ==
dependencies:
"@chakra-ui/hooks" "1.7.1"
"@chakra-ui/popper" "2.4.1"
@ -1764,10 +1771,10 @@
"@chakra-ui/utils" "1.9.1"
"@chakra-ui/visually-hidden" "1.1.1"
"@chakra-ui/transition@1.4.1":
version "1.4.1"
resolved "https://registry.yarnpkg.com/@chakra-ui/transition/-/transition-1.4.1.tgz#be31c02a285d182cc9c6dcd95548f8f35de64952"
integrity sha512-s/VFucc6grNdP1bxw0oQLzy167gjAgyl/GiGH9nt54nioDEiSsvn70qKg7sjajNTvpoot+urQUdr4Qh+fIUFZQ==
"@chakra-ui/transition@1.4.2":
version "1.4.2"
resolved "https://registry.yarnpkg.com/@chakra-ui/transition/-/transition-1.4.2.tgz#de59833aa5727c0dd328b828145e4b0dabd005b3"
integrity sha512-S+BNmpErHlntl//uaqv0sJegzMsQms0OnJapeZaRsvZL4s1SVYrR8kMrXigkdpeh4lAUqGsLpQHPKkzaKGbBOw==
dependencies:
"@chakra-ui/utils" "1.9.1"
@ -12453,10 +12460,10 @@ typedarray@^0.0.6:
resolved "https://registry.yarnpkg.com/typedarray/-/typedarray-0.0.6.tgz#867ac74e3864187b1d3d47d996a78ec5c8830777"
integrity sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c=
typescript@^4.5.2:
version "4.5.2"
resolved "https://registry.yarnpkg.com/typescript/-/typescript-4.5.2.tgz#8ac1fba9f52256fdb06fb89e4122fa6a346c2998"
integrity sha512-5BlMof9H1yGt0P8/WF+wPNw6GfctgGjXp5hkblpyT+8rkASSmkUKMXrxR0Xg8ThVCi/JnHQiKXeBaEwCeQwMFw==
typescript@^4.5.3:
version "4.5.3"
resolved "https://registry.yarnpkg.com/typescript/-/typescript-4.5.3.tgz#afaa858e68c7103317d89eb90c5d8906268d353c"
integrity sha512-eVYaEHALSt+s9LbvgEv4Ef+Tdq7hBiIZgii12xXJnukryt3pMgJf6aKhoCZ3FWQsu6sydEnkg11fYXLzhLBjeQ==
unbox-primitive@^1.0.1:
version "1.0.1"

Loading…
Cancel
Save