From 1b4bf74107425174b0e198072c9ecf465564241d Mon Sep 17 00:00:00 2001 From: benedettadavico Date: Tue, 10 Oct 2023 09:47:46 +0200 Subject: [PATCH 001/347] bump wallet version and update changelog --- nym-wallet/CHANGELOG.md | 6 ++++++ nym-wallet/package.json | 4 ++-- nym-wallet/src-tauri/Cargo.toml | 2 +- nym-wallet/src-tauri/tauri.conf.json | 2 +- 4 files changed, 10 insertions(+), 4 deletions(-) diff --git a/nym-wallet/CHANGELOG.md b/nym-wallet/CHANGELOG.md index 909978bc1e..e14caee027 100644 --- a/nym-wallet/CHANGELOG.md +++ b/nym-wallet/CHANGELOG.md @@ -2,6 +2,12 @@ ## [Unreleased] +## [v1.2.9] (2023-10-10) + +- Wallet: Introduce edit account name ([#3895]) + +[#3895]: https://github.com/nymtech/nym/pull/3895 + ## [v1.2.8] (2023-08-23) - [hotfix]: don't assign invalid fields when crossing the JS boundary ([#3805]) diff --git a/nym-wallet/package.json b/nym-wallet/package.json index b7b6aafddd..3b8adf2284 100644 --- a/nym-wallet/package.json +++ b/nym-wallet/package.json @@ -1,6 +1,6 @@ { "name": "@nymproject/nym-wallet-app", - "version": "1.2.8", + "version": "1.2.9", "main": "index.js", "license": "MIT", "scripts": { @@ -123,4 +123,4 @@ "webpack-favicons": "^1.3.8", "webpack-merge": "^5.8.0" } -} +} \ No newline at end of file diff --git a/nym-wallet/src-tauri/Cargo.toml b/nym-wallet/src-tauri/Cargo.toml index a7145c9282..3c66fcc62d 100644 --- a/nym-wallet/src-tauri/Cargo.toml +++ b/nym-wallet/src-tauri/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "nym_wallet" -version = "1.2.8" +version = "1.2.9" description = "Nym Native Wallet" authors = ["Nym Technologies SA"] license = "" diff --git a/nym-wallet/src-tauri/tauri.conf.json b/nym-wallet/src-tauri/tauri.conf.json index 009d25ccf4..9b87728fd4 100644 --- a/nym-wallet/src-tauri/tauri.conf.json +++ b/nym-wallet/src-tauri/tauri.conf.json @@ -1,7 +1,7 @@ { "package": { "productName": "nym-wallet", - "version": "1.2.8" + "version": "1.2.9" }, "build": { "distDir": "../dist", From f2c2f273d73aecca2a0610f4c4cc7aa894bed957 Mon Sep 17 00:00:00 2001 From: serinko <97586125+serinko@users.noreply.github.com> Date: Tue, 10 Oct 2023 23:17:08 +0200 Subject: [PATCH 002/347] fix syntax and formatting --- documentation/operators/src/faq/smoosh-faq.md | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/documentation/operators/src/faq/smoosh-faq.md b/documentation/operators/src/faq/smoosh-faq.md index d68f7c764e..b9683dc7d3 100644 --- a/documentation/operators/src/faq/smoosh-faq.md +++ b/documentation/operators/src/faq/smoosh-faq.md @@ -2,9 +2,10 @@ > We aim on purpose to make minimal changes to reward scheme and software. We're just 'smooshing' together stuff we already debugged and know works. > -- Harry Halpin, Nym CEO -

+

+ This page refer to the changes which are planned to take place over Q3 and Q4 2023. As this is a transition period in the beginning (Q3 2023) the [Mix Nodes FAQ page](./mixnodes-faq.md) holds more answers to the current setup as project Smoosh refers to the eventual setup. As project Smoosh gets progressively implemented the answers on this page will become to be more relevant to the current state and eventually this FAQ page will be merged with the still relevant parts of the main Mix Nodes FAQ page. -

+ If any questions are not answered or it's not clear for you in which stage project Smoosh is right now, please reach out in Node Operators [Matrix room](https://matrix.to/#/#operators:nymtech.chat). ## Overview From 5b7b3c0bdc2f7eeb531499a77ec0525acaf554da Mon Sep 17 00:00:00 2001 From: serinko <97586125+serinko@users.noreply.github.com> Date: Tue, 10 Oct 2023 23:21:42 +0200 Subject: [PATCH 003/347] upate admonish --- documentation/operators/book.toml | 4 +- documentation/operators/mdbook-admonish.css | 59 +++++++++++---------- 2 files changed, 32 insertions(+), 31 deletions(-) diff --git a/documentation/operators/book.toml b/documentation/operators/book.toml index 870118ee61..a9423f68da 100644 --- a/documentation/operators/book.toml +++ b/documentation/operators/book.toml @@ -42,7 +42,7 @@ turn-off = true [preprocessor.admonish] command = "mdbook-admonish" -assets_version = "2.0.0" # do not edit: managed by `mdbook-admonish install` +assets_version = "2.0.2" # do not edit: managed by `mdbook-admonish install` # variables preprocessor: import variables into files # https://gitlab.com/tglman/mdbook-variables/ @@ -83,7 +83,7 @@ curly-quotes = true # mathjax-support = false # useful if we want to pull equations in copy-fonts = true no-section-label = false -additional-css = ["theme/pagetoc.css", "././mdbook-admonish.css","./custom.css"] +additional-css = ["theme/pagetoc.css", "././mdbook-admonish.css","./custom.css", "./mdbook-admonish.css"] additional-js = ["theme/pagetoc.js"] git-repository-url = "https://github.com/nymtech/nym" git-repository-icon = "fa-github" diff --git a/documentation/operators/mdbook-admonish.css b/documentation/operators/mdbook-admonish.css index 5e360387df..c3e9869e58 100644 --- a/documentation/operators/mdbook-admonish.css +++ b/documentation/operators/mdbook-admonish.css @@ -75,8 +75,9 @@ a.admonition-anchor-link::before { content: "§"; } -:is(.admonition-title, summary) { +:is(.admonition-title, summary.admonition-title) { position: relative; + min-height: 4rem; margin-block: 0; margin-inline: -1.6rem -1.2rem; padding-block: 0.8rem; @@ -85,13 +86,13 @@ a.admonition-anchor-link::before { background-color: rgba(68, 138, 255, 0.1); display: flex; } -:is(.admonition-title, summary) p { +:is(.admonition-title, summary.admonition-title) p { margin: 0; } -html :is(.admonition-title, summary):last-child { +html :is(.admonition-title, summary.admonition-title):last-child { margin-bottom: 0; } -:is(.admonition-title, summary)::before { +:is(.admonition-title, summary.admonition-title)::before { position: absolute; top: 0.625em; inset-inline-start: 1.6rem; @@ -106,7 +107,7 @@ html :is(.admonition-title, summary):last-child { -webkit-mask-size: contain; content: ""; } -:is(.admonition-title, summary):hover a.admonition-anchor-link { +:is(.admonition-title, summary.admonition-title):hover a.admonition-anchor-link { display: initial; } @@ -135,10 +136,10 @@ details[open].admonition > summary.admonition-title::after { border-color: #448aff; } -:is(.note) > :is(.admonition-title, summary) { +:is(.note) > :is(.admonition-title, summary.admonition-title) { background-color: rgba(68, 138, 255, 0.1); } -:is(.note) > :is(.admonition-title, summary)::before { +:is(.note) > :is(.admonition-title, summary.admonition-title)::before { background-color: #448aff; mask-image: var(--md-admonition-icon--note); -webkit-mask-image: var(--md-admonition-icon--note); @@ -152,10 +153,10 @@ details[open].admonition > summary.admonition-title::after { border-color: #00b0ff; } -:is(.abstract, .summary, .tldr) > :is(.admonition-title, summary) { +:is(.abstract, .summary, .tldr) > :is(.admonition-title, summary.admonition-title) { background-color: rgba(0, 176, 255, 0.1); } -:is(.abstract, .summary, .tldr) > :is(.admonition-title, summary)::before { +:is(.abstract, .summary, .tldr) > :is(.admonition-title, summary.admonition-title)::before { background-color: #00b0ff; mask-image: var(--md-admonition-icon--abstract); -webkit-mask-image: var(--md-admonition-icon--abstract); @@ -169,10 +170,10 @@ details[open].admonition > summary.admonition-title::after { border-color: #00b8d4; } -:is(.info, .todo) > :is(.admonition-title, summary) { +:is(.info, .todo) > :is(.admonition-title, summary.admonition-title) { background-color: rgba(0, 184, 212, 0.1); } -:is(.info, .todo) > :is(.admonition-title, summary)::before { +:is(.info, .todo) > :is(.admonition-title, summary.admonition-title)::before { background-color: #00b8d4; mask-image: var(--md-admonition-icon--info); -webkit-mask-image: var(--md-admonition-icon--info); @@ -186,10 +187,10 @@ details[open].admonition > summary.admonition-title::after { border-color: #00bfa5; } -:is(.tip, .hint, .important) > :is(.admonition-title, summary) { +:is(.tip, .hint, .important) > :is(.admonition-title, summary.admonition-title) { background-color: rgba(0, 191, 165, 0.1); } -:is(.tip, .hint, .important) > :is(.admonition-title, summary)::before { +:is(.tip, .hint, .important) > :is(.admonition-title, summary.admonition-title)::before { background-color: #00bfa5; mask-image: var(--md-admonition-icon--tip); -webkit-mask-image: var(--md-admonition-icon--tip); @@ -203,10 +204,10 @@ details[open].admonition > summary.admonition-title::after { border-color: #00c853; } -:is(.success, .check, .done) > :is(.admonition-title, summary) { +:is(.success, .check, .done) > :is(.admonition-title, summary.admonition-title) { background-color: rgba(0, 200, 83, 0.1); } -:is(.success, .check, .done) > :is(.admonition-title, summary)::before { +:is(.success, .check, .done) > :is(.admonition-title, summary.admonition-title)::before { background-color: #00c853; mask-image: var(--md-admonition-icon--success); -webkit-mask-image: var(--md-admonition-icon--success); @@ -220,10 +221,10 @@ details[open].admonition > summary.admonition-title::after { border-color: #64dd17; } -:is(.question, .help, .faq) > :is(.admonition-title, summary) { +:is(.question, .help, .faq) > :is(.admonition-title, summary.admonition-title) { background-color: rgba(100, 221, 23, 0.1); } -:is(.question, .help, .faq) > :is(.admonition-title, summary)::before { +:is(.question, .help, .faq) > :is(.admonition-title, summary.admonition-title)::before { background-color: #64dd17; mask-image: var(--md-admonition-icon--question); -webkit-mask-image: var(--md-admonition-icon--question); @@ -237,10 +238,10 @@ details[open].admonition > summary.admonition-title::after { border-color: #ff9100; } -:is(.warning, .caution, .attention) > :is(.admonition-title, summary) { +:is(.warning, .caution, .attention) > :is(.admonition-title, summary.admonition-title) { background-color: rgba(255, 145, 0, 0.1); } -:is(.warning, .caution, .attention) > :is(.admonition-title, summary)::before { +:is(.warning, .caution, .attention) > :is(.admonition-title, summary.admonition-title)::before { background-color: #ff9100; mask-image: var(--md-admonition-icon--warning); -webkit-mask-image: var(--md-admonition-icon--warning); @@ -254,10 +255,10 @@ details[open].admonition > summary.admonition-title::after { border-color: #ff5252; } -:is(.failure, .fail, .missing) > :is(.admonition-title, summary) { +:is(.failure, .fail, .missing) > :is(.admonition-title, summary.admonition-title) { background-color: rgba(255, 82, 82, 0.1); } -:is(.failure, .fail, .missing) > :is(.admonition-title, summary)::before { +:is(.failure, .fail, .missing) > :is(.admonition-title, summary.admonition-title)::before { background-color: #ff5252; mask-image: var(--md-admonition-icon--failure); -webkit-mask-image: var(--md-admonition-icon--failure); @@ -271,10 +272,10 @@ details[open].admonition > summary.admonition-title::after { border-color: #ff1744; } -:is(.danger, .error) > :is(.admonition-title, summary) { +:is(.danger, .error) > :is(.admonition-title, summary.admonition-title) { background-color: rgba(255, 23, 68, 0.1); } -:is(.danger, .error) > :is(.admonition-title, summary)::before { +:is(.danger, .error) > :is(.admonition-title, summary.admonition-title)::before { background-color: #ff1744; mask-image: var(--md-admonition-icon--danger); -webkit-mask-image: var(--md-admonition-icon--danger); @@ -288,10 +289,10 @@ details[open].admonition > summary.admonition-title::after { border-color: #f50057; } -:is(.bug) > :is(.admonition-title, summary) { +:is(.bug) > :is(.admonition-title, summary.admonition-title) { background-color: rgba(245, 0, 87, 0.1); } -:is(.bug) > :is(.admonition-title, summary)::before { +:is(.bug) > :is(.admonition-title, summary.admonition-title)::before { background-color: #f50057; mask-image: var(--md-admonition-icon--bug); -webkit-mask-image: var(--md-admonition-icon--bug); @@ -305,10 +306,10 @@ details[open].admonition > summary.admonition-title::after { border-color: #7c4dff; } -:is(.example) > :is(.admonition-title, summary) { +:is(.example) > :is(.admonition-title, summary.admonition-title) { background-color: rgba(124, 77, 255, 0.1); } -:is(.example) > :is(.admonition-title, summary)::before { +:is(.example) > :is(.admonition-title, summary.admonition-title)::before { background-color: #7c4dff; mask-image: var(--md-admonition-icon--example); -webkit-mask-image: var(--md-admonition-icon--example); @@ -322,10 +323,10 @@ details[open].admonition > summary.admonition-title::after { border-color: #9e9e9e; } -:is(.quote, .cite) > :is(.admonition-title, summary) { +:is(.quote, .cite) > :is(.admonition-title, summary.admonition-title) { background-color: rgba(158, 158, 158, 0.1); } -:is(.quote, .cite) > :is(.admonition-title, summary)::before { +:is(.quote, .cite) > :is(.admonition-title, summary.admonition-title)::before { background-color: #9e9e9e; mask-image: var(--md-admonition-icon--quote); -webkit-mask-image: var(--md-admonition-icon--quote); From b3739c02c7fd9e1bbd33eb7c972b48d11a9c252f Mon Sep 17 00:00:00 2001 From: serinko <97586125+serinko@users.noreply.github.com> Date: Wed, 11 Oct 2023 11:12:10 +0200 Subject: [PATCH 004/347] re-update mdbook-admonish --- Cargo.lock | 1211 ++++++++++--------- documentation/operators/book.toml | 2 +- documentation/operators/mdbook-admonish.css | 162 ++- 3 files changed, 703 insertions(+), 672 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index c7a3a4ad73..37a4d211fb 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -19,7 +19,7 @@ dependencies = [ "futures-core", "futures-sink", "memchr", - "pin-project-lite 0.2.12", + "pin-project-lite 0.2.13", "tokio", "tokio-util", "tracing", @@ -27,9 +27,9 @@ dependencies = [ [[package]] name = "actix-http" -version = "3.3.1" +version = "3.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c2079246596c18b4a33e274ae10c0e50613f4d32a4198e09c7b93771013fed74" +checksum = "a92ef85799cba03f76e4f7c10f533e66d87c9a7e7055f3391f09000ad8351bc9" dependencies = [ "actix-codec", "actix-rt", @@ -37,7 +37,7 @@ dependencies = [ "actix-utils", "ahash 0.8.3", "base64 0.21.4", - "bitflags 1.3.2", + "bitflags 2.4.0", "brotli", "bytes", "bytestring", @@ -54,7 +54,7 @@ dependencies = [ "local-channel", "mime", "percent-encoding", - "pin-project-lite 0.2.12", + "pin-project-lite 0.2.13", "rand 0.8.5", "sha1", "smallvec", @@ -66,12 +66,12 @@ dependencies = [ [[package]] name = "actix-macros" -version = "0.2.3" +version = "0.2.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "465a6172cf69b960917811022d8f29bc0b7fa1398bc4f78b3c466673db1213b6" +checksum = "e01ed3140b2f8d422c68afa1ed2e85d996ea619c988ac834d255db32138655cb" dependencies = [ "quote", - "syn 1.0.109", + "syn 2.0.38", ] [[package]] @@ -89,9 +89,9 @@ dependencies = [ [[package]] name = "actix-rt" -version = "2.8.0" +version = "2.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "15265b6b8e2347670eb363c47fc8c75208b4a4994b27192f345fcbe707804f3e" +checksum = "28f32d40287d3f402ae0028a9d54bef51af15c8769492826a69d28f81893151d" dependencies = [ "futures-core", "tokio", @@ -99,9 +99,9 @@ dependencies = [ [[package]] name = "actix-server" -version = "2.2.0" +version = "2.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3e8613a75dd50cc45f473cee3c34d59ed677c0f7b44480ce3b8247d7dc519327" +checksum = "3eb13e7eef0423ea6eab0e59f6c72e7cb46d33691ad56a726b3cd07ddec2c2d4" dependencies = [ "actix-rt", "actix-service", @@ -109,8 +109,7 @@ dependencies = [ "futures-core", "futures-util", "mio", - "num_cpus", - "socket2 0.4.9", + "socket2 0.5.4", "tokio", "tracing", ] @@ -123,7 +122,7 @@ checksum = "3b894941f818cfdc7ccc4b9e60fa7e53b5042a2e8567270f9147d5591893373a" dependencies = [ "futures-core", "paste", - "pin-project-lite 0.2.12", + "pin-project-lite 0.2.13", ] [[package]] @@ -133,14 +132,14 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "88a1dcdff1466e3c2488e1cb5c36a71822750ad43839937f85d2f4d9f8b705d8" dependencies = [ "local-waker", - "pin-project-lite 0.2.12", + "pin-project-lite 0.2.13", ] [[package]] name = "actix-web" -version = "4.3.1" +version = "4.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cd3cb42f9566ab176e1ef0b8b3a896529062b4efc6be0123046095914c4c1c96" +checksum = "0e4a5b5e29603ca8c94a77c65cf874718ceb60292c5a5c3e5f4ace041af462b9" dependencies = [ "actix-codec", "actix-http", @@ -151,7 +150,7 @@ dependencies = [ "actix-service", "actix-utils", "actix-web-codegen", - "ahash 0.7.6", + "ahash 0.8.3", "bytes", "bytestring", "cfg-if", @@ -160,40 +159,39 @@ dependencies = [ "encoding_rs", "futures-core", "futures-util", - "http", "itoa", "language-tags", "log", "mime", "once_cell", - "pin-project-lite 0.2.12", + "pin-project-lite 0.2.13", "regex", "serde", "serde_json", "serde_urlencoded", "smallvec", - "socket2 0.4.9", + "socket2 0.5.4", "time", "url", ] [[package]] name = "actix-web-codegen" -version = "4.2.0" +version = "4.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2262160a7ae29e3415554a3f1fc04c764b1540c116aa524683208078b7a75bc9" +checksum = "eb1f50ebbb30eca122b188319a4398b3f7bb4a8cdf50ecfb73bfc6a3c3ce54f5" dependencies = [ "actix-router", "proc-macro2", "quote", - "syn 1.0.109", + "syn 2.0.38", ] [[package]] name = "addr2line" -version = "0.20.0" +version = "0.21.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f4fa78e18c64fce05e902adecd7a5eed15a5e0a3439f7b0e169f0252214865e3" +checksum = "8a30b2e23b9e17a9f90641c7ab1549cd9b44f296d3ccbf309d2863cfe398a0cb" dependencies = [ "gimli", ] @@ -284,9 +282,9 @@ dependencies = [ [[package]] name = "aes-gcm" -version = "0.10.2" +version = "0.10.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "209b47e8954a928e1d72e86eca7000ebb6655fe1436d33eefc2201cad027e237" +checksum = "831010a0f742e1209b3bcea8fab6a8e149051ba6099432c8cb2cc117dec3ead1" dependencies = [ "aead 0.5.2", "aes 0.8.3", @@ -341,9 +339,9 @@ dependencies = [ [[package]] name = "aho-corasick" -version = "1.0.3" +version = "1.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "86b8f9420f797f2d9e935edf629310eb938a0d839f984e25327f3c7eed22300c" +checksum = "b2969dcb958b36655471fc61f7e416fa76033bdd4bfed0678d8fee1e2d07a1f0" dependencies = [ "memchr", ] @@ -410,30 +408,29 @@ checksum = "4b46cbb362ab8752921c97e041f5e366ee6297bd428a31275b9fcf1e380f7299" [[package]] name = "anstream" -version = "0.3.2" +version = "0.6.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0ca84f3628370c59db74ee214b3263d58f9aadd9b4fe7e711fd87dc452b7f163" +checksum = "2ab91ebe16eb252986481c5b62f6098f3b698a45e34b5b98200cf20dd2484a44" dependencies = [ "anstyle", "anstyle-parse", "anstyle-query", "anstyle-wincon", "colorchoice", - "is-terminal", "utf8parse", ] [[package]] name = "anstyle" -version = "1.0.1" +version = "1.0.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3a30da5c5f2d5e72842e00bcb57657162cdabef0931f40e2deb9b4140440cecd" +checksum = "7079075b41f533b8c61d2a4d073c4676e1f8b249ff94a393b0595db304e0dd87" [[package]] name = "anstyle-parse" -version = "0.2.1" +version = "0.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "938874ff5980b03a87c5524b3ae5b59cf99b1d6bc836848df7bc5ada9643c333" +checksum = "317b9a89c1868f5ea6ff1d9539a69f45dffc21ce321ac1fd1160dfa48c8e2140" dependencies = [ "utf8parse", ] @@ -449,9 +446,9 @@ dependencies = [ [[package]] name = "anstyle-wincon" -version = "1.0.2" +version = "3.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c677ab05e09154296dd37acecd46420c17b9713e8366facafa8fc0885167cf4c" +checksum = "f0699d10d2f4d628a98ee7b57b289abbc98ff3bad977cb3152709d4bf2330628" dependencies = [ "anstyle", "windows-sys 0.48.0", @@ -459,9 +456,9 @@ dependencies = [ [[package]] name = "anyhow" -version = "1.0.72" +version = "1.0.75" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3b13c32d80ecc7ab747b80c3784bce54ee8a7a0cc4fbda9bf4cda2cf6fe90854" +checksum = "a4668cab20f66d8d020e1fbc0ebe47217433c1b6c8f2040faf858554e394ace6" dependencies = [ "backtrace", ] @@ -474,9 +471,9 @@ checksum = "bddcadddf5e9015d310179a59bb28c4d4b9920ad0f11e8e14dbadf654890c9a6" [[package]] name = "argon2" -version = "0.5.1" +version = "0.5.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b2e554a8638bdc1e4eae9984845306cc95f8a9208ba8d49c3859fd958b46774d" +checksum = "17ba4cac0a46bc1d2912652a751c47f2a9f3a7fe89bcae2275d418f5270402f9" dependencies = [ "base64ct", "blake2 0.10.6", @@ -616,7 +613,7 @@ dependencies = [ "log", "parking", "polling", - "rustix 0.37.23", + "rustix 0.37.24", "slab", "socket2 0.4.9", "waker-fn", @@ -624,9 +621,9 @@ dependencies = [ [[package]] name = "async-lock" -version = "2.7.0" +version = "2.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fa24f727524730b077666307f2734b4a1a1c57acb79193127dcc8914d5242dd7" +checksum = "287272293e9d8c41773cec55e365490fe034813a2f172f502d6ddcf75b2f582b" dependencies = [ "event-listener", ] @@ -639,7 +636,7 @@ checksum = "5fd55a5ba1179988837d24ab4c7cc8ed6efdeff578ede0416b4225a5fca35bd0" dependencies = [ "proc-macro2", "quote", - "syn 2.0.28", + "syn 2.0.38", ] [[package]] @@ -650,7 +647,7 @@ checksum = "cd56dd203fef61ac097dd65721a419ddccb106b2d2b70ba60a6b529f03961a51" dependencies = [ "async-stream-impl", "futures-core", - "pin-project-lite 0.2.12", + "pin-project-lite 0.2.13", ] [[package]] @@ -661,7 +658,7 @@ checksum = "16e62a023e7c117e27523144c5d2459f4397fcc3cab0085af8e2224f643a0193" dependencies = [ "proc-macro2", "quote", - "syn 2.0.28", + "syn 2.0.38", ] [[package]] @@ -672,20 +669,20 @@ checksum = "bc00ceb34980c03614e35a3a4e218276a0a824e911d07651cd0d858a51e8c0f0" dependencies = [ "proc-macro2", "quote", - "syn 2.0.28", + "syn 2.0.38", ] [[package]] name = "asynchronous-codec" -version = "0.6.1" +version = "0.6.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "06a0daa378f5fd10634e44b0a29b2a87b890657658e072a30d6f26e57ddee182" +checksum = "4057f2c32adbb2fc158e22fb38433c8e9bbf76b75a4732c7c0cbaf695fb65568" dependencies = [ "bytes", "futures-sink", "futures-util", "memchr", - "pin-project-lite 0.2.12", + "pin-project-lite 0.2.13", ] [[package]] @@ -713,10 +710,19 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c59bdb34bc650a32731b31bd8f0829cc15d24a708ee31559e0bb34f2bc320cba" [[package]] -name = "atomic-waker" -version = "1.1.1" +name = "atomic" +version = "0.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1181e1e0d1fce796a03db1ae795d67167da795f9cf4a39c37589e85ef57f26d3" +checksum = "8d818003e740b63afc82337e3160717f4f63078720a810b7b903e70a5d1d2994" +dependencies = [ + "bytemuck", +] + +[[package]] +name = "atomic-waker" +version = "1.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1505bd5d3d116872e7271a6d4e16d81d0c8570876c8de68093a09ac269d8aac0" [[package]] name = "atty" @@ -763,7 +769,7 @@ dependencies = [ "memchr", "mime", "percent-encoding", - "pin-project-lite 0.2.12", + "pin-project-lite 0.2.13", "rustversion", "serde", "serde_json", @@ -802,14 +808,14 @@ dependencies = [ "heck 0.4.1", "proc-macro2", "quote", - "syn 2.0.28", + "syn 2.0.38", ] [[package]] name = "backtrace" -version = "0.3.68" +version = "0.3.69" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4319208da049c43661739c5fade2ba182f09d1dc2299b32298d3a31692b17e12" +checksum = "2089b7e3f35b9dd2d0ed921ead4f6d318c27680d4a5bd167b3ee120edb105837" dependencies = [ "addr2line", "cc", @@ -879,7 +885,7 @@ checksum = "7e141fb0f8be1c7b45887af94c88b182472b57c96b56773250ae00cd6a14a164" dependencies = [ "bs58 0.5.0", "hmac 0.12.1", - "k256 0.13.1", + "k256", "once_cell", "pbkdf2", "rand_core 0.6.4", @@ -956,9 +962,9 @@ dependencies = [ [[package]] name = "blake3" -version = "1.4.1" +version = "1.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "199c42ab6972d92c9f8995f086273d25c42fc0f7b2a1fcefba465c1352d25ba5" +checksum = "0231f06152bf547e9c2b5194f247cd97aacf6dcd8b15d8e5ec0663f64580da87" dependencies = [ "arrayref", "arrayvec", @@ -1053,7 +1059,7 @@ dependencies = [ "nix 0.25.1", "parking_lot 0.12.1", "rand_core 0.6.4", - "ring", + "ring 0.16.20", "tracing", "untrusted 0.9.0", "x25519-dalek 2.0.0", @@ -1061,9 +1067,9 @@ dependencies = [ [[package]] name = "brotli" -version = "3.3.4" +version = "3.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a1a0b1dbcc8ae29329621f8d4f0d835787c1c38bb1401979b49d13b0b305ff68" +checksum = "516074a47ef4bce09577a3b379392300159ce5b1ba2e501ff1c819950066100f" dependencies = [ "alloc-no-stdlib", "alloc-stdlib", @@ -1072,9 +1078,9 @@ dependencies = [ [[package]] name = "brotli-decompressor" -version = "2.3.4" +version = "2.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4b6561fd3f895a11e8f72af2cb7d22e08366bebc2b6b57f7744c4bda27034744" +checksum = "da74e2b81409b1b743f8f0c62cc6254afefb8b8e50bbfe3735550f7aeefa3448" dependencies = [ "alloc-no-stdlib", "alloc-stdlib", @@ -1097,9 +1103,9 @@ dependencies = [ [[package]] name = "bumpalo" -version = "3.13.0" +version = "3.14.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a3e2c3daef883ecc1b5d58c15adae93470a91d425f3532ba1695849656af3fc1" +checksum = "7f30e7476521f6f8af1a1c4c0b8cc94f0bee37d91763d0ca2665f299b6cd8aec" [[package]] name = "byte-tools" @@ -1118,10 +1124,16 @@ dependencies = [ ] [[package]] -name = "byteorder" -version = "1.4.3" +name = "bytemuck" +version = "1.14.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "14c189c53d098945499cdfa7ecc63567cf3886b3332b312a5b4585d8d3a6a610" +checksum = "374d28ec25809ee0e23827c2ab573d729e293f281dfe393500e7ad618baa61c6" + +[[package]] +name = "byteorder" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1fd0f2584146f6f2ef48085050886acf353beff7305ebd1ae69500e27c67f64b" [[package]] name = "bytes" @@ -1158,7 +1170,7 @@ checksum = "f769ab9e8c1652d78dd0b3ec59cdaa1e2bcb3b6b39f6681b256abcdbe101cc14" dependencies = [ "anyhow", "cargo_metadata", - "clap 4.3.21", + "clap 4.4.6", "concolor-control", "crates-index", "dirs-next", @@ -1170,7 +1182,7 @@ dependencies = [ "native-tls", "pathdiff", "regex", - "semver 1.0.18", + "semver 1.0.20", "serde", "serde_derive", "serde_json", @@ -1183,9 +1195,9 @@ dependencies = [ [[package]] name = "cargo-platform" -version = "0.1.3" +version = "0.1.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2cfa25e60aea747ec7e1124f238816749faa93759c6ff5b31f1ccdda137f4479" +checksum = "12024c4645c97566567129c204f65d5815a8c9aecf30fcbe682b2fe034996d36" dependencies = [ "serde", ] @@ -1198,7 +1210,7 @@ checksum = "eee4243f1f26fc7a42710e7439c149e2b10b05472f88090acce52632f231a73a" dependencies = [ "camino", "cargo-platform", - "semver 1.0.18", + "semver 1.0.20", "serde", "serde_json", "thiserror", @@ -1218,9 +1230,9 @@ checksum = "a2698f953def977c68f935bb0dfa959375ad4638570e969e2f1e9f433cbf1af6" [[package]] name = "cc" -version = "1.0.82" +version = "1.0.83" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "305fe645edc1442a0fa8b6726ba61d422798d37a52e12eaecf4b022ebbb88f01" +checksum = "f1174fb0b6ec23863f8b971027804a42614e347eafb0a95bf0b12cdae21fc4d0" dependencies = [ "jobserver", "libc", @@ -1320,7 +1332,7 @@ dependencies = [ "num-traits", "serde", "wasm-bindgen", - "windows-targets 0.48.1", + "windows-targets 0.48.5", ] [[package]] @@ -1393,58 +1405,56 @@ dependencies = [ [[package]] name = "clap" -version = "4.3.21" +version = "4.4.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c27cdf28c0f604ba3f512b0c9a409f8de8513e4816705deb0498b627e7c3a3fd" +checksum = "d04704f56c2cde07f43e8e2c154b43f216dc5c92fc98ada720177362f953b956" dependencies = [ "clap_builder", "clap_derive", - "once_cell", ] [[package]] name = "clap_builder" -version = "4.3.21" +version = "4.4.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "08a9f1ab5e9f01a9b81f202e8562eb9a10de70abf9eaeac1be465c28b75aa4aa" +checksum = "0e231faeaca65ebd1ea3c737966bf858971cd38c3849107aa3ea7de90a804e45" dependencies = [ "anstream", "anstyle", - "clap_lex 0.5.0", - "once_cell", + "clap_lex 0.5.1", "strsim", "terminal_size", ] [[package]] name = "clap_complete" -version = "4.3.2" +version = "4.4.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5fc443334c81a804575546c5a8a79b4913b50e28d69232903604cada1de817ce" +checksum = "e3ae8ba90b9d8b007efe66e55e48fb936272f5ca00349b5b0e89877520d35ea7" dependencies = [ - "clap 4.3.21", + "clap 4.4.6", ] [[package]] name = "clap_complete_fig" -version = "4.3.1" +version = "4.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "99fee1d30a51305a6c2ed3fc5709be3c8af626c9c958e04dd9ae94e27bcbce9f" +checksum = "29bdbe21a263b628f83fcbeac86a4416a1d588c7669dd41473bc4149e4e7d2f1" dependencies = [ - "clap 4.3.21", + "clap 4.4.6", "clap_complete", ] [[package]] name = "clap_derive" -version = "4.3.12" +version = "4.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "54a9bb5758fc5dfe728d1019941681eccaf0cf8a4189b692a0ee2f2ecf90a050" +checksum = "0862016ff20d69b84ef8247369fabf5c008a7417002411897d40ee1f4532b873" dependencies = [ "heck 0.4.1", "proc-macro2", "quote", - "syn 2.0.28", + "syn 2.0.38", ] [[package]] @@ -1458,9 +1468,9 @@ dependencies = [ [[package]] name = "clap_lex" -version = "0.5.0" +version = "0.5.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2da6da31387c7e4ef160ffab6d5e7f00c42626fe39aea70a7b0f1773f7dd6c1b" +checksum = "cd7cc57abe963c6d3b9d8be5b06ba7c8957a930305ca90304f24ef040aa6f961" [[package]] name = "cloudabi" @@ -1529,9 +1539,9 @@ checksum = "ad159cc964ac8f9d407cbc0aa44b02436c054b541f2b4b5f06972e1efdc54bc7" [[package]] name = "concurrent-queue" -version = "2.2.0" +version = "2.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "62ec6771ecfa0762d24683ee5a32ad78487a3d3afdc0fb8cae19d2c5deb50b7c" +checksum = "f057a694a54f12365049b0958a1685bb52d567f5593b355fbf685838e873d400" dependencies = [ "crossbeam-utils", ] @@ -1683,7 +1693,7 @@ dependencies = [ "ecdsa 0.16.8", "eyre", "getrandom 0.2.10", - "k256 0.13.1", + "k256", "rand_core 0.6.4", "serde", "serde_json", @@ -1695,22 +1705,22 @@ dependencies = [ [[package]] name = "cosmwasm-crypto" -version = "1.3.1" +version = "1.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7e272708a9745dad8b591ef8a718571512130f2b39b33e3d7a27c558e3069394" +checksum = "a6fb22494cf7d23d0c348740e06e5c742070b2991fd41db77bba0bcfbae1a723" dependencies = [ "digest 0.10.7", "ed25519-zebra", - "k256 0.11.6", + "k256", "rand_core 0.6.4", "thiserror", ] [[package]] name = "cosmwasm-derive" -version = "1.3.1" +version = "1.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "296db6a3caca5283425ae0cf347f4e46999ba3f6620dbea8939a0e00347831ce" +checksum = "6e199424486ea97d6b211db6387fd72e26b4a439d40cc23140b2d8305728055b" dependencies = [ "syn 1.0.109", ] @@ -1789,7 +1799,7 @@ dependencies = [ "num_cpus", "rayon", "rustc-hash", - "semver 1.0.18", + "semver 1.0.20", "serde", "serde_derive", "serde_json", @@ -1848,7 +1858,7 @@ dependencies = [ "ciborium", "clap 3.2.25", "criterion-plot", - "itertools", + "itertools 0.10.5", "lazy_static", "num-traits", "oorandom", @@ -1869,7 +1879,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6b50826342786a51a89e2da3a28f1c32b06e387201bc2d19791f622c673706b1" dependencies = [ "cast", - "itertools", + "itertools 0.10.5", ] [[package]] @@ -1970,9 +1980,9 @@ dependencies = [ [[package]] name = "crypto-bigint" -version = "0.5.2" +version = "0.5.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cf4c2f4e1afd912bc40bfd6fed5d9dc1f288e0ba01bfcc835cc5bc3eb13efe15" +checksum = "740fe28e594155f10cfc383984cbefd529d7396050557148f79cb0f621204124" dependencies = [ "generic-array 0.14.7", "rand_core 0.6.4", @@ -2075,9 +2085,9 @@ dependencies = [ [[package]] name = "curl-sys" -version = "0.4.65+curl-8.2.1" +version = "0.4.67+curl-8.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "961ba061c9ef2fe34bbd12b807152d96f0badd2bebe7b90ce6c8c8b7572a0986" +checksum = "3cc35d066510b197a0f72de863736641539957628c8a42e70e27c66849e77c34" dependencies = [ "cc", "libc", @@ -2085,7 +2095,7 @@ dependencies = [ "openssl-sys", "pkg-config", "vcpkg", - "winapi", + "windows-sys 0.48.0", ] [[package]] @@ -2104,13 +2114,14 @@ dependencies = [ [[package]] name = "curve25519-dalek" -version = "4.1.0" +version = "4.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "622178105f911d937a42cdb140730ba4a3ed2becd8ae6ce39c7d28b5d75d4588" +checksum = "e89b8c6a2e4b1f45971ad09761aafb85514a84744b67a95e32c3cc1352d1f65c" dependencies = [ "cfg-if", "cpufeatures", "curve25519-dalek-derive", + "digest 0.10.7", "fiat-crypto", "platforms", "rustc_version 0.4.0", @@ -2126,7 +2137,7 @@ checksum = "83fdaf97f4804dcebfa5862639bc9ce4121e82140bec2a987ac5140294865b5b" dependencies = [ "proc-macro2", "quote", - "syn 2.0.28", + "syn 2.0.38", ] [[package]] @@ -2178,7 +2189,7 @@ dependencies = [ "cosmwasm-std", "cw2", "schemars", - "semver 1.0.18", + "semver 1.0.20", "serde", "thiserror", ] @@ -2315,7 +2326,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "978747c1d849a7d2ee5e8adc0159961c48fb7e5db2f06af6723b80123bb53856" dependencies = [ "cfg-if", - "hashbrown 0.14.0", + "hashbrown 0.14.1", "lock_api", "once_cell", "parking_lot_core 0.9.8", @@ -2398,9 +2409,9 @@ dependencies = [ [[package]] name = "deranged" -version = "0.3.7" +version = "0.3.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7684a49fb1af197853ef7b2ee694bc1f5b4179556f1e5710e1760c5db6f5e929" +checksum = "f2696e8a945f658fd14dc3b87242e6b80cd0f36ff04ea560fa39082368847946" dependencies = [ "serde", ] @@ -2490,7 +2501,7 @@ dependencies = [ "proc-macro2", "proc-macro2-diagnostics", "quote", - "syn 2.0.28", + "syn 2.0.38", ] [[package]] @@ -2593,7 +2604,7 @@ checksum = "487585f4d0c6655fe74905e2504d8ad6908e4db67f744eb140876906c2f3175d" dependencies = [ "proc-macro2", "quote", - "syn 2.0.28", + "syn 2.0.38", ] [[package]] @@ -2616,9 +2627,9 @@ checksum = "1aaf95b3e5c8f23aa320147307562d361db0ae0d51242340f558153b4eb2439b" [[package]] name = "dtoa" -version = "1.0.6" +version = "1.0.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "65d09067bfacaa79114679b279d7f5885b53295b1e2cfb4e79c8e4bd3d633169" +checksum = "dcbb2bf8e87535c23f7a8a321e364ce21462d0ff10cb6407820e8e96dfff6653" [[package]] name = "dunce" @@ -2628,9 +2639,9 @@ checksum = "56ce8c6da7551ec6c462cbaf3bfbc75131ebbfa1c944aeaa9dab51ca1c5f0c3b" [[package]] name = "dyn-clone" -version = "1.0.12" +version = "1.0.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "304e6508efa593091e97a9abbc10f90aa7ca635b6d2784feff3c89d41dd12272" +checksum = "23d2f3407d9a573d666de4b5bdf10569d73ca9478087346697dcbae6244bfbcd" [[package]] name = "ecdsa" @@ -2652,7 +2663,7 @@ checksum = "a4b1e0c257a9e9f25f90ff76d7a68360ed497ee519c8e428d1825ef0000799d4" dependencies = [ "der 0.7.8", "digest 0.10.7", - "elliptic-curve 0.13.5", + "elliptic-curve 0.13.6", "rfc6979 0.4.0", "signature 2.1.0", "spki 0.7.2", @@ -2706,6 +2717,20 @@ dependencies = [ "zeroize", ] +[[package]] +name = "ed25519-dalek" +version = "2.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7277392b266383ef8396db7fdeb1e77b6c52fed775f5df15bb24f35b72156980" +dependencies = [ + "curve25519-dalek 4.1.1", + "ed25519 2.2.2", + "rand_core 0.6.4", + "serde", + "sha2 0.10.8", + "zeroize", +] + [[package]] name = "ed25519-zebra" version = "3.1.0" @@ -2751,12 +2776,12 @@ dependencies = [ [[package]] name = "elliptic-curve" -version = "0.13.5" +version = "0.13.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "968405c8fdc9b3bf4df0a6638858cc0b52462836ab6b1c87377785dd09cf1c0b" +checksum = "d97ca172ae9dc9f9b779a6e3a65d308f2af74e5b8c921299075bdb4a0370e914" dependencies = [ "base16ct 0.2.0", - "crypto-bigint 0.5.2", + "crypto-bigint 0.5.3", "digest 0.10.7", "ff 0.13.0", "generic-array 0.14.7", @@ -2770,9 +2795,9 @@ dependencies = [ [[package]] name = "encoding_rs" -version = "0.8.32" +version = "0.8.33" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "071a31f4ee85403370b58aca746f01041ede6f0da2730960ad001edc2b71b394" +checksum = "7268b386296a025e474d5140678f75d6de9493ae55a5d709eeb9dd08149945e1" dependencies = [ "cfg-if", ] @@ -2806,7 +2831,7 @@ checksum = "eecf8589574ce9b895052fa12d69af7a233f99e6107f5cb8dd1044f2a17bfdcb" dependencies = [ "proc-macro2", "quote", - "syn 2.0.28", + "syn 2.0.38", ] [[package]] @@ -2857,7 +2882,7 @@ dependencies = [ "bytes", "cfg-if", "chrono", - "clap 4.3.21", + "clap 4.4.6", "config", "digest 0.10.7", "dirs 5.0.1", @@ -2868,7 +2893,7 @@ dependencies = [ "libp2p 0.51.3", "libp2p-identity", "log", - "lru 0.10.0", + "lru 0.10.1", "nym-config", "nym-ephemera-common", "nym-task", @@ -2884,7 +2909,7 @@ dependencies = [ "tokio", "tokio-tungstenite", "tokio-util", - "toml 0.7.6", + "toml 0.7.8", "unsigned-varint", "utoipa", "utoipa-swagger-ui", @@ -2899,25 +2924,14 @@ checksum = "5443807d6dff69373d433ab9ef5378ad8df50ca6298caf15de6e52e24aaf54d5" [[package]] name = "errno" -version = "0.3.2" +version = "0.3.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6b30f669a7961ef1631673d2766cc92f52d64f7ef354d4fe0ddfd30ed52f0f4f" +checksum = "ac3e13f66a2f95e32a39eaa81f6b95d42878ca0e1db0c7543723dfe12557e860" dependencies = [ - "errno-dragonfly", "libc", "windows-sys 0.48.0", ] -[[package]] -name = "errno-dragonfly" -version = "0.1.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "aa68f1b12764fab894d2755d2518754e71b4fd80ecfb822714a1206c2aab39bf" -dependencies = [ - "cc", - "libc", -] - [[package]] name = "etherparse" version = "0.13.0" @@ -2938,11 +2952,11 @@ name = "explorer-api" version = "1.1.30" dependencies = [ "chrono", - "clap 4.3.21", + "clap 4.4.6", "dotenvy", "humantime-serde", "isocountry", - "itertools", + "itertools 0.10.5", "lazy_static", "log", "maxminddb", @@ -3047,9 +3061,9 @@ dependencies = [ [[package]] name = "fastrand" -version = "2.0.0" +version = "2.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6999dc1837253364c2ebb0704ba97994bd874e8f195d665c50b7548f6ea92764" +checksum = "25cbce373ec4653f1a01a31e8a5e5ec0c622dc27ff9c4e6606eefef5cbbed4a5" [[package]] name = "ff" @@ -3099,14 +3113,14 @@ checksum = "d0870c84016d4b481be5c9f323c24f65e31e901ae618f0e80f4308fb00de1d2d" [[package]] name = "figment" -version = "0.10.10" +version = "0.10.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4547e226f4c9ab860571e070a9034192b3175580ecea38da34fcdb53a018c9a5" +checksum = "a014ac935975a70ad13a3bff2463b1c1b083b35ae4cb6309cfc59476aa7a181f" dependencies = [ - "atomic", + "atomic 0.6.0", "pear", "serde", - "toml 0.7.6", + "toml 0.8.2", "uncased", "version_check", ] @@ -3123,6 +3137,12 @@ dependencies = [ "windows-sys 0.48.0", ] +[[package]] +name = "finl_unicode" +version = "1.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8fcfdc7a0362c9f4444381a9e697c79d435fe65b52a37466fc2c1184cee9edc6" + [[package]] name = "fixedbitset" version = "0.4.2" @@ -3131,9 +3151,9 @@ checksum = "0ce7134b9999ecaf8bcd65542e436736ef32ddca1b3e06094cb6ec5755203b80" [[package]] name = "flate2" -version = "1.0.26" +version = "1.0.27" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3b9429470923de8e8cbd4d2dc513535400b4b3fef0319fb5c4e1f520a7bef743" +checksum = "c6c98ee8095e9d1dcbf2fcc6d95acccb90d1c81db1e44725c6a984b1dbdfb010" dependencies = [ "crc32fast", "libz-sys", @@ -3290,7 +3310,7 @@ dependencies = [ "futures-io", "memchr", "parking", - "pin-project-lite 0.2.12", + "pin-project-lite 0.2.13", "waker-fn", ] @@ -3302,7 +3322,7 @@ checksum = "89ca545a94061b6365f2c7355b4b32bd20df3ff95f02da9329b34ccc3bd6ee72" dependencies = [ "proc-macro2", "quote", - "syn 2.0.28", + "syn 2.0.38", ] [[package]] @@ -3312,8 +3332,8 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d2411eed028cdf8c8034eaf21f9915f956b6c3abec4d4c7949ee67f0721127bd" dependencies = [ "futures-io", - "rustls 0.20.8", - "webpki 0.22.2", + "rustls 0.20.9", + "webpki 0.22.4", ] [[package]] @@ -3347,7 +3367,7 @@ dependencies = [ "futures-sink", "futures-task", "memchr", - "pin-project-lite 0.2.12", + "pin-project-lite 0.2.13", "pin-utils", "slab", ] @@ -3458,14 +3478,14 @@ checksum = "ba330b70a5341d3bc730b8e205aaee97ddab5d9c448c4f51a7c2d924266fa8f9" dependencies = [ "proc-macro2", "quote", - "syn 2.0.28", + "syn 2.0.38", ] [[package]] name = "gimli" -version = "0.27.3" +version = "0.28.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b6c80984affa11d98d1b88b66ac8853f143217b399d3c74116778ff8fdb4ed2e" +checksum = "6fb8d784f27acf97159b40fc4db5ecd8aa23b9ad5ef69cdd136d3bc80665f0c0" [[package]] name = "git2" @@ -3582,9 +3602,9 @@ dependencies = [ [[package]] name = "h2" -version = "0.3.20" +version = "0.3.21" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "97ec8491ebaf99c8eaa73058b045fe58073cd6be7f596ac993ced0b0a0c01049" +checksum = "91fc23aa11be92976ef4729127f1a74adf36d8436f7816b185d18df956790833" dependencies = [ "bytes", "fnv", @@ -3648,9 +3668,9 @@ dependencies = [ [[package]] name = "hashbrown" -version = "0.14.0" +version = "0.14.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2c6201b9ff9fd90a5a3bac2e56a830d0caa509576f0e503818ee82c181b3437a" +checksum = "7dfda62a12f55daeae5015f81b0baea145391cb4520f86c248fc615d72640d12" dependencies = [ "ahash 0.8.3", "allocator-api2", @@ -3667,11 +3687,11 @@ dependencies = [ [[package]] name = "hashlink" -version = "0.8.3" +version = "0.8.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "312f66718a2d7789ffef4f4b7b213138ed9f1eb3aa1d0d82fc99f88fb3ffd26f" +checksum = "e8094feaf31ff591f651a2664fb9cfd92bba7a60ce3197265e9482ebe753c8f7" dependencies = [ - "hashbrown 0.14.0", + "hashbrown 0.14.1", ] [[package]] @@ -3689,12 +3709,11 @@ dependencies = [ [[package]] name = "headers" -version = "0.3.8" +version = "0.3.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f3e372db8e5c0d213e0cd0b9be18be2aca3d44cf2fe30a9d46a65581cd454584" +checksum = "06683b93020a07e3dbcf5f8c0f6d40080d725bea7936fc01ad345c01b97dc270" dependencies = [ - "base64 0.13.1", - "bitflags 1.3.2", + "base64 0.21.4", "bytes", "headers-core", "http", @@ -3741,9 +3760,9 @@ dependencies = [ [[package]] name = "hermit-abi" -version = "0.3.2" +version = "0.3.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "443144c8cdadd93ebf52ddb4056d257f5b52c04d3c804e657d19eb73fc33668b" +checksum = "d77f7ec81a6d05a3abb01ab6eb7590f6083d08449fe5a1c8b1e620283546ccb7" [[package]] name = "hex" @@ -3855,7 +3874,7 @@ checksum = "d5f38f16d184e36f2408a55281cd658ecbd3ca05cce6d6510a176eca393e26d1" dependencies = [ "bytes", "http", - "pin-project-lite 0.2.12", + "pin-project-lite 0.2.13", ] [[package]] @@ -3921,7 +3940,7 @@ dependencies = [ "httparse", "httpdate", "itoa", - "pin-project-lite 0.2.12", + "pin-project-lite 0.2.13", "socket2 0.4.9", "tokio", "tower-service", @@ -3973,7 +3992,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "bbb958482e8c7be4bc3cf272a766a2b0bf1a6755e7a6ae777f017a31d11b13b1" dependencies = [ "hyper", - "pin-project-lite 0.2.12", + "pin-project-lite 0.2.13", "tokio", "tokio-io-timeout", ] @@ -4103,12 +4122,13 @@ dependencies = [ [[package]] name = "indexmap" -version = "2.0.0" +version = "2.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d5477fe2230a79769d8dc68e0eabf5437907c0457a5614a9e8dddb67f65eb65d" +checksum = "8adf3ddd720272c6ea8bf59463c04e0f93d0bbf7c5439b691bca2987e0270897" dependencies = [ "equivalent", - "hashbrown 0.14.0", + "hashbrown 0.14.1", + "serde", ] [[package]] @@ -4204,11 +4224,11 @@ dependencies = [ [[package]] name = "io-lifetimes" -version = "1.0.10" +version = "1.0.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9c66c74d2ae7e79a5a8f7ac924adbe38ee42a859c6539ad869eb51f0b52dc220" +checksum = "eae7b9aee968036d54dce06cebaefd919e4472e753296daccd6d344e3e2df0c2" dependencies = [ - "hermit-abi 0.3.2", + "hermit-abi 0.3.3", "libc", "windows-sys 0.48.0", ] @@ -4237,13 +4257,13 @@ checksum = "8e537132deb99c0eb4b752f0346b6a836200eaaa3516dd7e5514b63930a09e5d" [[package]] name = "ipconfig" -version = "0.3.1" +version = "0.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bd302af1b90f2463a98fa5ad469fc212c8e3175a41c3068601bfa2727591c5be" +checksum = "b58db92f96b720de98181bbbe63c831e87005ab460c1bf306eb2622b4707997f" dependencies = [ - "socket2 0.4.9", + "socket2 0.5.4", "widestring", - "winapi", + "windows-sys 0.48.0", "winreg", ] @@ -4277,8 +4297,8 @@ version = "0.4.9" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "cb0889898416213fab133e1d33a0e5858a48177452750691bde3666d0fdbaf8b" dependencies = [ - "hermit-abi 0.3.2", - "rustix 0.38.8", + "hermit-abi 0.3.3", + "rustix 0.38.18", "windows-sys 0.48.0", ] @@ -4326,6 +4346,15 @@ dependencies = [ "either", ] +[[package]] +name = "itertools" +version = "0.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b1c173a5686ce8bfa551b3563d0c2170bf24ca44da99c7ca4bfdab5418c3fe57" +dependencies = [ + "either", +] + [[package]] name = "itoa" version = "1.0.9" @@ -4356,9 +4385,9 @@ checksum = "8eaf4bc02d17cbdd7ff4c7438cafcdf7fb9a4613313ad11b4f8fefe7d3fa0130" [[package]] name = "jobserver" -version = "0.1.26" +version = "0.1.27" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "936cfd212a0155903bcbc060e316fb6cc7cbf2e1907329391ebadc1fe0ce77c2" +checksum = "8c37f63953c4c63420ed5fd3d6d398c719489b9f872b9fa683262f8edd363c7d" dependencies = [ "libc", ] @@ -4372,18 +4401,6 @@ dependencies = [ "wasm-bindgen", ] -[[package]] -name = "k256" -version = "0.11.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "72c1e0b51e7ec0a97369623508396067a486bd0cbed95a2659a4b863d28cfc8b" -dependencies = [ - "cfg-if", - "ecdsa 0.14.8", - "elliptic-curve 0.12.3", - "sha2 0.10.8", -] - [[package]] name = "k256" version = "0.13.1" @@ -4392,7 +4409,7 @@ checksum = "cadb76004ed8e97623117f3df85b17aaa6626ab0b0831e6573f104df16cd1bcc" dependencies = [ "cfg-if", "ecdsa 0.16.8", - "elliptic-curve 0.13.5", + "elliptic-curve 0.13.6", "once_cell", "sha2 0.10.8", "signature 2.1.0", @@ -4450,7 +4467,7 @@ name = "ledger" version = "0.1.0" dependencies = [ "bip32", - "k256 0.13.1", + "k256", "ledger-transport", "ledger-transport-hid", "thiserror", @@ -4495,9 +4512,9 @@ dependencies = [ [[package]] name = "libc" -version = "0.2.147" +version = "0.2.149" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b4668fb0ea861c1df094127ac5f1da3409a82116a4ba74fca2e58ef927159bb3" +checksum = "a08173bc88b7955d1b3145aa561539096c421ac8debde8cbc3612ec635fee29b" [[package]] name = "libgit2-sys" @@ -4515,9 +4532,9 @@ dependencies = [ [[package]] name = "libm" -version = "0.2.7" +version = "0.2.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f7012b1bbb0719e1097c47611d3898568c546d597c2e74d66f6087edd5233ff4" +checksum = "4ec2a862134d2a7d32d7983ddcdd1c4923530833c9f2ea1a44fc5fa473989058" [[package]] name = "libp2p" @@ -4610,7 +4627,7 @@ source = "git+https://github.com/ChainSafe/rust-libp2p.git?rev=e3440d25681df380c dependencies = [ "asn1_der", "bs58 0.4.0", - "ed25519-dalek", + "ed25519-dalek 1.0.1", "either", "fnv", "futures", @@ -4777,12 +4794,12 @@ dependencies = [ [[package]] name = "libp2p-identity" -version = "0.1.2" +version = "0.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9e2d584751cecb2aabaa56106be6be91338a60a0f4e420cf2af639204f596fc1" +checksum = "276bb57e7af15d8f100d3c11cbdd32c6752b7eef4ba7a18ecf464972c07abcce" dependencies = [ "bs58 0.4.0", - "ed25519-dalek", + "ed25519-dalek 2.0.0", "log", "multiaddr 0.17.1", "multihash", @@ -4982,7 +4999,7 @@ dependencies = [ "parking_lot 0.12.1", "quinn-proto", "rand 0.8.5", - "rustls 0.20.8", + "rustls 0.20.9", "thiserror", "tokio", ] @@ -5004,7 +5021,7 @@ dependencies = [ "parking_lot 0.12.1", "quinn-proto", "rand 0.8.5", - "rustls 0.20.8", + "rustls 0.20.9", "thiserror", "tokio", ] @@ -5126,10 +5143,10 @@ dependencies = [ "futures-rustls", "libp2p-core 0.39.0", "rcgen 0.10.0", - "ring", - "rustls 0.20.8", + "ring 0.16.20", + "rustls 0.20.9", "thiserror", - "webpki 0.22.2", + "webpki 0.22.4", "x509-parser 0.14.0", "yasna", ] @@ -5145,10 +5162,10 @@ dependencies = [ "libp2p-core 0.39.2", "libp2p-identity", "rcgen 0.10.0", - "ring", - "rustls 0.20.8", + "ring 0.16.20", + "rustls 0.20.9", "thiserror", - "webpki 0.22.2", + "webpki 0.22.4", "x509-parser 0.14.0", "yasna", ] @@ -5308,9 +5325,9 @@ checksum = "ef53942eb7bf7ff43a617b3e2c1c4a5ecf5944a7c1bc12d7ee39bbb15e5c1519" [[package]] name = "linux-raw-sys" -version = "0.4.5" +version = "0.4.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "57bcfdad1b858c2db7c38303a6d2ad4dfaf5eb53dfeb0910128b2c26d6158503" +checksum = "da2479e8c062e40bf0066ffa0bc823de0a9368974af99c9f6df941d2c231e03f" [[package]] name = "lioness" @@ -5326,13 +5343,12 @@ dependencies = [ [[package]] name = "local-channel" -version = "0.1.3" +version = "0.1.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7f303ec0e94c6c54447f84f3b0ef7af769858a9c4ef56ef2a986d3dcd4c3fc9c" +checksum = "e0a493488de5f18c8ffcba89eebb8532ffc562dc400490eb65b84893fae0b178" dependencies = [ "futures-core", "futures-sink", - "futures-util", "local-waker", ] @@ -5384,9 +5400,9 @@ dependencies = [ [[package]] name = "lru" -version = "0.10.0" +version = "0.10.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "03f1160296536f10c833a82dca22267d5486734230d47bf00bf435885814ba1e" +checksum = "718e8fae447df0c7e1ba7f5189829e63fd536945c8988d61444c19039f16b670" dependencies = [ "hashbrown 0.13.2", ] @@ -5439,9 +5455,9 @@ checksum = "2532096657941c2fea9c289d370a250971c689d4f143798ff67113ec042024a5" [[package]] name = "matchit" -version = "0.7.2" +version = "0.7.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ed1202b2a6f884ae56f04cff409ab315c5ce26b5e58d7412e484f01fd52f52ef" +checksum = "0e7465ac9959cc2b1404e8e2367b43684a6d13790fe23056cc8c6c5a6b7bcb94" [[package]] name = "maxminddb" @@ -5457,18 +5473,19 @@ dependencies = [ [[package]] name = "md-5" -version = "0.10.5" +version = "0.10.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6365506850d44bff6e2fbcb5176cf63650e48bd45ef2fe2665ae1570e0f4b9ca" +checksum = "d89e7ee0cfbedfc4da3340218492196241d89eefb6dab27de5df917a6d2e78cf" dependencies = [ + "cfg-if", "digest 0.10.7", ] [[package]] name = "memchr" -version = "2.5.0" +version = "2.6.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2dffe52ecf27772e601905b7522cb4ef790d2cc203488bbd0e2fe85fcb74566d" +checksum = "f665ee40bc4a3c5590afb1e9677db74a508659dfd71e126420da8274909a0167" [[package]] name = "memoffset" @@ -5872,9 +5889,9 @@ dependencies = [ [[package]] name = "num-bigint" -version = "0.4.3" +version = "0.4.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f93ab6289c7b344a8a9f60f88d80aa20032336fe78da341afc91c8a2341fc75f" +checksum = "608e7659b5c3d7cba262d894801b9ec9d00de989e8a82bd4bef91d08da45cdc0" dependencies = [ "autocfg 1.1.0", "num-integer", @@ -5904,9 +5921,9 @@ dependencies = [ [[package]] name = "num-traits" -version = "0.2.16" +version = "0.2.17" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f30b0abd723be7e2ffca1272140fac1a2f084c77ec3e123c192b66af1ee9e6c2" +checksum = "39e3200413f237f41ab11ad6d161bc7239c84dcb631773ccd7de3dfe4b5c267c" dependencies = [ "autocfg 1.1.0", "libm", @@ -5918,7 +5935,7 @@ version = "1.16.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "4161fcb6d602d4d2081af7c3a45852d875a03dd337a6bfdd6e06407b61342a43" dependencies = [ - "hermit-abi 0.3.2", + "hermit-abi 0.3.3", "libc", ] @@ -5934,7 +5951,7 @@ dependencies = [ "bs58 0.4.0", "cfg-if", "chrono", - "clap 4.3.21", + "clap 4.4.6", "console-subscriber", "cosmwasm-std", "cw-utils", @@ -6038,7 +6055,7 @@ name = "nym-bin-common" version = "0.6.0" dependencies = [ "atty", - "clap 4.3.21", + "clap 4.4.6", "clap_complete", "clap_complete_fig", "log", @@ -6061,7 +6078,7 @@ dependencies = [ "anyhow", "cosmrs", "eyre", - "k256 0.13.1", + "k256", "nym-cli-commands", "nym-validator-client", "serde", @@ -6077,7 +6094,7 @@ dependencies = [ "base64 0.13.1", "bip39", "bs58 0.4.0", - "clap 4.3.21", + "clap 4.4.6", "clap_complete", "clap_complete_fig", "dotenvy", @@ -6102,14 +6119,14 @@ dependencies = [ "bip39", "bs58 0.4.0", "cfg-if", - "clap 4.3.21", + "clap 4.4.6", "comfy-table", "cosmrs", "cosmwasm-std", "cw-utils", "handlebars", "humantime-serde", - "k256 0.13.1", + "k256", "log", "nym-bandwidth-controller", "nym-bin-common", @@ -6146,7 +6163,7 @@ dependencies = [ name = "nym-client" version = "1.1.30" dependencies = [ - "clap 4.3.21", + "clap 4.4.6", "dirs 4.0.0", "futures", "lazy_static", @@ -6270,7 +6287,7 @@ dependencies = [ "ff 0.11.1", "getrandom 0.2.10", "group 0.11.0", - "itertools", + "itertools 0.10.5", "nym-dkg", "nym-pemstore", "rand 0.8.5", @@ -6322,7 +6339,7 @@ dependencies = [ "log", "nym-network-defaults", "serde", - "toml 0.7.6", + "toml 0.7.8", "url", ] @@ -6345,7 +6362,7 @@ version = "0.1.0" dependencies = [ "async-trait", "log", - "sqlx 0.5.11", + "sqlx 0.5.13", "thiserror", "tokio", ] @@ -6390,7 +6407,7 @@ dependencies = [ "cipher 0.4.4", "ctr 0.9.2", "digest 0.10.7", - "ed25519-dalek", + "ed25519-dalek 1.0.1", "generic-array 0.14.7", "hkdf 0.12.3", "hmac 0.12.1", @@ -6484,12 +6501,12 @@ dependencies = [ "base64 0.21.4", "bip39", "bs58 0.4.0", - "clap 4.3.21", + "clap 4.4.6", "colored", "dashmap", "dirs 4.0.0", "dotenvy", - "fastrand 2.0.0", + "fastrand 2.0.1", "futures", "hmac 0.12.1", "humantime-serde", @@ -6521,7 +6538,7 @@ dependencies = [ "serde", "serde_json", "sha2 0.10.8", - "sqlx 0.5.11", + "sqlx 0.5.13", "subtle-encoding", "thiserror", "tokio", @@ -6662,7 +6679,7 @@ dependencies = [ "anyhow", "bs58 0.4.0", "cfg-if", - "clap 4.3.21", + "clap 4.4.6", "colored", "cpu-cycles", "cupid", @@ -6781,7 +6798,7 @@ dependencies = [ "async-file-watcher", "async-trait", "bs58 0.4.0", - "clap 4.3.21", + "clap 4.4.6", "dirs 4.0.0", "futures", "humantime-serde", @@ -6832,7 +6849,7 @@ dependencies = [ "pretty_env_logger", "rocket", "serde", - "sqlx 0.5.11", + "sqlx 0.5.13", "thiserror", "tokio", ] @@ -6891,7 +6908,7 @@ name = "nym-nr-query" version = "0.1.0" dependencies = [ "anyhow", - "clap 4.3.21", + "clap 4.4.6", "log", "nym-bin-common", "nym-network-defaults", @@ -7016,7 +7033,7 @@ dependencies = [ name = "nym-socks5-client" version = "1.1.30" dependencies = [ - "clap 4.3.21", + "clap 4.4.6", "lazy_static", "log", "nym-bin-common", @@ -7286,7 +7303,7 @@ dependencies = [ "reqwest", "serde", "serde_json", - "sqlx 0.5.11", + "sqlx 0.5.13", "thiserror", "tokio", ] @@ -7295,7 +7312,7 @@ dependencies = [ name = "nym-store-cipher" version = "0.1.0" dependencies = [ - "aes-gcm 0.10.2", + "aes-gcm 0.10.3", "argon2", "generic-array 0.14.7", "getrandom 0.2.10", @@ -7350,7 +7367,7 @@ dependencies = [ "cosmrs", "cosmwasm-std", "eyre", - "itertools", + "itertools 0.10.5", "log", "nym-coconut-interface", "nym-config", @@ -7386,7 +7403,7 @@ dependencies = [ "eyre", "flate2", "futures", - "itertools", + "itertools 0.10.5", "log", "nym-api-requests", "nym-coconut-bandwidth-contract-common", @@ -7482,9 +7499,9 @@ dependencies = [ [[package]] name = "object" -version = "0.31.1" +version = "0.32.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8bda667d9f2b5051b8833f59f3bf748b28ef54f850f4fcb389a252aa383866d1" +checksum = "9cf5f9dd3933bd50a9e1f149ec995f39ae2c496d31fd772c1fd45ebc27e902b0" dependencies = [ "memchr", ] @@ -7545,11 +7562,11 @@ checksum = "624a8340c38c1b80fd549087862da4ba43e08858af025b236e509b6649fc13d5" [[package]] name = "openssl" -version = "0.10.56" +version = "0.10.57" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "729b745ad4a5575dd06a3e1af1414bd330ee561c01b3899eb584baeaa8def17e" +checksum = "bac25ee399abb46215765b1cb35bc0212377e58a061560d8b29b024fd0430e7c" dependencies = [ - "bitflags 1.3.2", + "bitflags 2.4.0", "cfg-if", "foreign-types", "libc", @@ -7566,7 +7583,7 @@ checksum = "a948666b637a0f465e8564c73e89d4dde00d72d4d473cc972f390fc3dcee7d9c" dependencies = [ "proc-macro2", "quote", - "syn 2.0.28", + "syn 2.0.38", ] [[package]] @@ -7577,18 +7594,18 @@ checksum = "ff011a302c396a5197692431fc1948019154afc178baf7d8e37367442a4601cf" [[package]] name = "openssl-src" -version = "111.27.0+1.1.1v" +version = "300.1.5+3.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "06e8f197c82d7511c5b014030c9b1efeda40d7d5f99d23b4ceed3524a5e63f02" +checksum = "559068e4c12950d7dcaa1857a61725c0d38d4fc03ff8e070ab31a75d6e316491" dependencies = [ "cc", ] [[package]] name = "openssl-sys" -version = "0.9.91" +version = "0.9.93" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "866b5f16f90776b9bb8dc1e1802ac6f0513de3a7a7465867bfbc563dc737faac" +checksum = "db4d56a4c0478783083cfafcc42493dd4a981d41669da64b4572a2a089b51b1d" dependencies = [ "cc", "libc", @@ -7660,7 +7677,7 @@ dependencies = [ "futures-util", "indexmap 1.9.3", "once_cell", - "pin-project-lite 0.2.12", + "pin-project-lite 0.2.13", "thiserror", "urlencoding", ] @@ -7695,9 +7712,9 @@ checksum = "04744f49eae99ab78e0d5c0b603ab218f515ea8cfe5a456d7629ad883a3b6e7d" [[package]] name = "ordered-float" -version = "2.10.0" +version = "2.10.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7940cf2ca942593318d07fcf2596cdca60a85c9e7fab408a5e21a4f9dcd40d87" +checksum = "68f19d67e5a2795c94e73e0bb1cc1a7edeb2e28efd39e2e1c9b7a40c1108b11c" dependencies = [ "num-traits", ] @@ -7756,9 +7773,9 @@ dependencies = [ [[package]] name = "parking" -version = "2.1.0" +version = "2.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "14f2252c834a40ed9bb5422029649578e63aa341ac401f74e719dd1afda8394e" +checksum = "e52c774a4c39359c1d1c52e43f73dd91a75a614652c825408eec30c95a9b2067" [[package]] name = "parking_lot" @@ -7805,7 +7822,7 @@ dependencies = [ "libc", "redox_syscall 0.3.5", "smallvec", - "windows-targets 0.48.1", + "windows-targets 0.48.5", ] [[package]] @@ -7861,7 +7878,7 @@ dependencies = [ "proc-macro2", "proc-macro2-diagnostics", "quote", - "syn 2.0.28", + "syn 2.0.38", ] [[package]] @@ -7928,19 +7945,20 @@ checksum = "9b2a4787296e9989611394c33f193f676704af1686e70b8f8033ab5ba9a35a94" [[package]] name = "pest" -version = "2.7.2" +version = "2.7.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1acb4a4365a13f749a93f1a094a7805e5cfa0955373a9de860d962eaa3a5fe5a" +checksum = "c022f1e7b65d6a24c0dbbd5fb344c66881bc01f3e5ae74a1c8100f2f985d98a4" dependencies = [ + "memchr", "thiserror", "ucd-trie", ] [[package]] name = "pest_derive" -version = "2.7.2" +version = "2.7.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "666d00490d4ac815001da55838c500eafb0320019bbaa44444137c48b443a853" +checksum = "35513f630d46400a977c4cb58f78e1bfbe01434316e60c37d27b9ad6139c66d8" dependencies = [ "pest", "pest_generator", @@ -7948,22 +7966,22 @@ dependencies = [ [[package]] name = "pest_generator" -version = "2.7.2" +version = "2.7.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "68ca01446f50dbda87c1786af8770d535423fa8a53aec03b8f4e3d7eb10e0929" +checksum = "bc9fc1b9e7057baba189b5c626e2d6f40681ae5b6eb064dc7c7834101ec8123a" dependencies = [ "pest", "pest_meta", "proc-macro2", "quote", - "syn 2.0.28", + "syn 2.0.38", ] [[package]] name = "pest_meta" -version = "2.7.2" +version = "2.7.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "56af0a30af74d0445c0bf6d9d051c979b516a1a5af790d251daee76005420a48" +checksum = "1df74e9e7ec4053ceb980e7c0c8bd3594e977fde1af91daba9c928e8e8c6708d" dependencies = [ "once_cell", "pest", @@ -7977,7 +7995,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e1d3afd2628e69da2be385eb6f2fd57c8ac7977ceeff6dc166ff1657b0e386a9" dependencies = [ "fixedbitset", - "indexmap 2.0.0", + "indexmap 2.0.2", ] [[package]] @@ -7997,7 +8015,7 @@ checksum = "4359fd9c9171ec6e8c62926d6faaf553a8dc3f64e1507e76da7911b4f6a04405" dependencies = [ "proc-macro2", "quote", - "syn 2.0.28", + "syn 2.0.38", ] [[package]] @@ -8008,9 +8026,9 @@ checksum = "257b64915a082f7811703966789728173279bdebb956b143dbcd23f6f970a777" [[package]] name = "pin-project-lite" -version = "0.2.12" +version = "0.2.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "12cc1b0bf1727a77a54b6654e7b5f1af8604923edc8b81885f8ec92f9e3f0a05" +checksum = "8afb450f006bf6385ca15ef45d71d2288452bc3683ce2e2cacc0d18e4be60b58" [[package]] name = "pin-utils" @@ -8046,9 +8064,9 @@ checksum = "26072860ba924cbfa98ea39c8c19b4dd6a4a25423dbdf219c1eca91aa0cf6964" [[package]] name = "platforms" -version = "3.0.2" +version = "3.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e3d7ddaed09e0eb771a79ab0fd64609ba0afb0a8366421957936ad14cbd13630" +checksum = "4503fa043bf02cee09a9582e9554b4c6403b2ef55e4612e96561d294419429f8" [[package]] name = "plotters" @@ -8090,7 +8108,7 @@ dependencies = [ "concurrent-queue", "libc", "log", - "pin-project-lite 0.2.12", + "pin-project-lite 0.2.13", "windows-sys 0.48.0", ] @@ -8202,9 +8220,9 @@ dependencies = [ [[package]] name = "proc-macro2" -version = "1.0.66" +version = "1.0.69" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "18fb31db3f9bddb2ea821cde30a9f70117e3f119938b5ee630b7403aa6e2ead9" +checksum = "134c189feb4956b20f6f547d2cf727d4c0fe06722b20a0eec87ed445a97f92da" dependencies = [ "unicode-ident", ] @@ -8217,7 +8235,7 @@ checksum = "af066a9c399a26e020ada66a034357a868728e72cd426f3adcd35f80d88d88c8" dependencies = [ "proc-macro2", "quote", - "syn 2.0.28", + "syn 2.0.38", "version_check", "yansi 1.0.0-rc.1", ] @@ -8242,7 +8260,7 @@ checksum = "440f724eba9f6996b75d63681b0a92b06947f1457076d503a4d2e2c8f56442b8" dependencies = [ "proc-macro2", "quote", - "syn 2.0.28", + "syn 2.0.38", ] [[package]] @@ -8263,7 +8281,7 @@ checksum = "119533552c9a7ffacc21e099c24a0ac8bb19c2a2a3f363de84cd9b844feab270" dependencies = [ "bytes", "heck 0.4.1", - "itertools", + "itertools 0.10.5", "lazy_static", "log", "multimap", @@ -8296,7 +8314,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e5d2d8d10f3c6ded6da8b05b5fb3b8a5082514344d56c9f871412d29b4e075b4" dependencies = [ "anyhow", - "itertools", + "itertools 0.10.5", "proc-macro2", "quote", "syn 1.0.109", @@ -8369,27 +8387,27 @@ dependencies = [ [[package]] name = "quinn-proto" -version = "0.9.5" +version = "0.9.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c956be1b23f4261676aed05a0046e204e8a6836e50203902683a718af0797989" +checksum = "94b0b33c13a79f669c85defaf4c275dc86a0c0372807d0ca3d78e0bb87274863" dependencies = [ "bytes", "rand 0.8.5", - "ring", + "ring 0.16.20", "rustc-hash", - "rustls 0.20.8", + "rustls 0.20.9", "slab", "thiserror", "tinyvec", "tracing", - "webpki 0.22.2", + "webpki 0.22.4", ] [[package]] name = "quote" -version = "1.0.32" +version = "1.0.33" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "50f3b39ccfb720540debaa0164757101c08ecb8d326b15358ce76a62c7e85965" +checksum = "5267fca4496028628a95160fc423a33e8b2e6af8a5302579e322e4b520293cae" dependencies = [ "proc-macro2", ] @@ -8607,9 +8625,9 @@ dependencies = [ [[package]] name = "rayon" -version = "1.7.0" +version = "1.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1d2df5196e37bcc87abebc0053e20787d73847bb33134a69841207dd0a47f03b" +checksum = "9c27db03db7734835b3f53954b534c91069375ce6ccaa2e065441e07d9b6cdb1" dependencies = [ "either", "rayon-core", @@ -8617,14 +8635,12 @@ dependencies = [ [[package]] name = "rayon-core" -version = "1.11.0" +version = "1.12.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4b8f95bd6966f5c87776639160a66bd8ab9895d9d4ab01ddba9fc60661aebe8d" +checksum = "5ce3fb6ad83f861aac485e76e1985cd109d9a3713802152be56c3b1f0e0658ed" dependencies = [ - "crossbeam-channel", "crossbeam-deque", "crossbeam-utils", - "num_cpus", ] [[package]] @@ -8634,7 +8650,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6413f3de1edee53342e6138e75b56d32e7bc6e332b3bd62d497b1929d4cfbcdd" dependencies = [ "pem 1.1.1", - "ring", + "ring 0.16.20", "time", "x509-parser 0.13.2", "yasna", @@ -8647,7 +8663,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ffbe84efe2f38dea12e9bfc1f65377fdf03e53a18cb3b995faedf7934c7e785b" dependencies = [ "pem 1.1.1", - "ring", + "ring 0.16.20", "time", "yasna", ] @@ -8692,29 +8708,29 @@ dependencies = [ [[package]] name = "ref-cast" -version = "1.0.19" +version = "1.0.20" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "61ef7e18e8841942ddb1cf845054f8008410030a3997875d9e49b7a363063df1" +checksum = "acde58d073e9c79da00f2b5b84eed919c8326832648a5b109b3fce1bb1175280" dependencies = [ "ref-cast-impl", ] [[package]] name = "ref-cast-impl" -version = "1.0.19" +version = "1.0.20" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2dfaf0c85b766276c797f3791f5bc6d5bd116b41d53049af2789666b0c0bc9fa" +checksum = "7f7473c2cfcf90008193dd0e3e16599455cb601a9fce322b5bb55de799664925" dependencies = [ "proc-macro2", "quote", - "syn 2.0.28", + "syn 2.0.38", ] [[package]] name = "refinery" -version = "0.8.10" +version = "0.8.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cdb0436d0dd7bd8d4fce1e828751fa79742b08e35f27cfea7546f8a322b5ef24" +checksum = "529664dbccc0a296947615c997a857912d72d1c44be1fafb7bae54ecfa7a8c24" dependencies = [ "refinery-core", "refinery-macros", @@ -8722,9 +8738,9 @@ dependencies = [ [[package]] name = "refinery-core" -version = "0.8.10" +version = "0.8.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "19206547cd047e8f4dfa6b20c30d3ecaf24be05841b6aa0aa926a47a3d0662bb" +checksum = "e895cb870cf06e92318cbbeb701f274d022d5ca87a16fa8244e291cd035ef954" dependencies = [ "async-trait", "cfg-if", @@ -8736,34 +8752,34 @@ dependencies = [ "siphasher", "thiserror", "time", - "toml 0.7.6", + "toml 0.7.8", "url", "walkdir", ] [[package]] name = "refinery-macros" -version = "0.8.10" +version = "0.8.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d94d4b9241859ba19eaa5c04c86e782eb3aa0aae2c5868e0cfa90c856e58a174" +checksum = "123e8b80f8010c3ae38330c81e76938fc7adf6cdbfbaad20295bb8c22718b4f1" dependencies = [ "proc-macro2", "quote", "refinery-core", "regex", - "syn 2.0.28", + "syn 2.0.38", ] [[package]] name = "regex" -version = "1.9.3" +version = "1.10.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "81bc1d4caf89fac26a70747fe603c130093b53c773888797a6329091246d651a" +checksum = "d119d7c7ca818f8a53c300863d4f87566aac09943aef5b355bb83969dae75d87" dependencies = [ "aho-corasick", "memchr", - "regex-automata 0.3.6", - "regex-syntax 0.7.4", + "regex-automata 0.4.1", + "regex-syntax 0.8.0", ] [[package]] @@ -8777,13 +8793,13 @@ dependencies = [ [[package]] name = "regex-automata" -version = "0.3.6" +version = "0.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fed1ceff11a1dddaee50c9dc8e4938bd106e9d89ae372f192311e7da498e3b69" +checksum = "465c6fc0621e4abc4187a2bda0937bfd4f722c2730b29562e19689ea796c9a4b" dependencies = [ "aho-corasick", "memchr", - "regex-syntax 0.7.4", + "regex-syntax 0.8.0", ] [[package]] @@ -8794,15 +8810,15 @@ checksum = "f162c6dd7b008981e4d40210aca20b4bd0f9b60ca9271061b07f78537722f2e1" [[package]] name = "regex-syntax" -version = "0.7.4" +version = "0.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e5ea92a5b6195c6ef2a0295ea818b312502c6fc94dde986c5553242e18fd4ce2" +checksum = "c3cbb081b9784b07cceb8824c8583f86db4814d172ab043f3c23f7dc600bf83d" [[package]] name = "reqwest" -version = "0.11.18" +version = "0.11.22" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cde824a14b7c14f85caff81225f411faacc04a2013f41670f41443742b1c1c55" +checksum = "046cd98826c46c2ac8ddecae268eb5c2e58628688a5fc7a2643704a73faba95b" dependencies = [ "base64 0.21.4", "bytes", @@ -8821,10 +8837,11 @@ dependencies = [ "native-tls", "once_cell", "percent-encoding", - "pin-project-lite 0.2.12", + "pin-project-lite 0.2.13", "serde", "serde_json", "serde_urlencoded", + "system-configuration", "tokio", "tokio-native-tls", "tokio-socks", @@ -8882,6 +8899,20 @@ dependencies = [ "winapi", ] +[[package]] +name = "ring" +version = "0.17.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9babe80d5c16becf6594aa32ad2be8fe08498e7ae60b77de8df700e67f191d7e" +dependencies = [ + "cc", + "getrandom 0.2.10", + "libc", + "spin 0.9.8", + "untrusted 0.9.0", + "windows-sys 0.48.0", +] + [[package]] name = "ripemd" version = "0.1.3" @@ -8899,7 +8930,7 @@ checksum = "58734f7401ae5cfd129685b48f61182331745b357b96f2367f01aebaf1cc9cc9" dependencies = [ "async-stream", "async-trait", - "atomic", + "atomic 0.5.3", "binascii", "bytes", "either", @@ -8912,7 +8943,7 @@ dependencies = [ "multer", "num_cpus", "parking_lot 0.12.1", - "pin-project-lite 0.2.12", + "pin-project-lite 0.2.13", "rand 0.8.5", "ref-cast", "rocket_codegen", @@ -8942,7 +8973,7 @@ dependencies = [ "proc-macro2", "quote", "rocket_http", - "syn 2.0.28", + "syn 2.0.38", "unicode-xid", ] @@ -8977,7 +9008,7 @@ dependencies = [ "memchr", "pear", "percent-encoding", - "pin-project-lite 0.2.12", + "pin-project-lite 0.2.13", "ref-cast", "serde", "smallvec", @@ -9074,9 +9105,9 @@ dependencies = [ [[package]] name = "rust-embed" -version = "6.6.1" +version = "6.8.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1b68543d5527e158213414a92832d2aab11a84d2571a5eb021ebe22c43aab066" +checksum = "a36224c3276f8c4ebc8c20f158eca7ca4359c8db89991c4925132aaaf6702661" dependencies = [ "rust-embed-impl", "rust-embed-utils", @@ -9085,23 +9116,23 @@ dependencies = [ [[package]] name = "rust-embed-impl" -version = "6.5.0" +version = "6.8.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4d4e0f0ced47ded9a68374ac145edd65a6c1fa13a96447b873660b2a568a0fd7" +checksum = "49b94b81e5b2c284684141a2fb9e2a31be90638caf040bf9afbc5a0416afe1ac" dependencies = [ "proc-macro2", "quote", "rust-embed-utils", "shellexpand", - "syn 1.0.109", + "syn 2.0.38", "walkdir", ] [[package]] name = "rust-embed-utils" -version = "7.5.0" +version = "7.8.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "512b0ab6853f7e14e3c8754acb43d6f748bb9ced66aa5915a6553ac8213f7731" +checksum = "9d38ff6bf570dc3bb7100fce9f7b60c33fa71d80e88da3f2580df4ff2bdded74" dependencies = [ "sha2 0.10.8", "walkdir", @@ -9134,7 +9165,7 @@ version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "bfa0f585226d2e68097d4f95d113b15b83a82e819ab25717ec0590d9584ef366" dependencies = [ - "semver 1.0.18", + "semver 1.0.20", ] [[package]] @@ -9148,9 +9179,9 @@ dependencies = [ [[package]] name = "rustix" -version = "0.37.23" +version = "0.37.24" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4d69718bf81c6127a49dc64e44a742e8bb9213c0ff8869a22c308f84c1d4ab06" +checksum = "4279d76516df406a8bd37e7dff53fd37d1a093f997a3c34a5c21658c126db06d" dependencies = [ "bitflags 1.3.2", "errno", @@ -9162,14 +9193,14 @@ dependencies = [ [[package]] name = "rustix" -version = "0.38.8" +version = "0.38.18" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "19ed4fa021d81c8392ce04db050a3da9a60299050b7ae1cf482d862b54a7218f" +checksum = "5a74ee2d7c2581cd139b42447d7d9389b889bdaad3a73f1ebb16f2a3237bb19c" dependencies = [ "bitflags 2.4.0", "errno", "libc", - "linux-raw-sys 0.4.5", + "linux-raw-sys 0.4.10", "windows-sys 0.48.0", ] @@ -9181,21 +9212,21 @@ checksum = "35edb675feee39aec9c99fa5ff985081995a06d594114ae14cbe797ad7b7a6d7" dependencies = [ "base64 0.13.1", "log", - "ring", + "ring 0.16.20", "sct 0.6.1", "webpki 0.21.4", ] [[package]] name = "rustls" -version = "0.20.8" +version = "0.20.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fff78fc74d175294f4e83b28343315ffcfb114b156f0185e9741cb5570f50e2f" +checksum = "1b80e3dec595989ea8510028f30c408a4630db12c9cbb8de34203b89d6577e99" dependencies = [ "log", - "ring", + "ring 0.16.20", "sct 0.7.0", - "webpki 0.22.2", + "webpki 0.22.4", ] [[package]] @@ -9205,8 +9236,8 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "cd8d6c9f025a446bc4d18ad9632e69aec8f287aa84499ee335599fabd20c3fd8" dependencies = [ "log", - "ring", - "rustls-webpki 0.101.4", + "ring 0.16.20", + "rustls-webpki", "sct 0.7.0", ] @@ -9233,21 +9264,11 @@ dependencies = [ [[package]] name = "rustls-webpki" -version = "0.100.2" +version = "0.101.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e98ff011474fa39949b7e5c0428f9b4937eda7da7848bbb947786b7be0b27dab" +checksum = "3c7d5dece342910d9ba34d259310cae3e0154b873b35408b787b59bce53d34fe" dependencies = [ - "ring", - "untrusted 0.7.1", -] - -[[package]] -name = "rustls-webpki" -version = "0.101.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7d93931baf2d282fff8d3a532bbfd7653f734643161b87e3e01e59a04439bf0d" -dependencies = [ - "ring", + "ring 0.16.20", "untrusted 0.7.1", ] @@ -9286,9 +9307,9 @@ checksum = "1ad4cc8da4ef723ed60bced201181d83791ad433213d8c24efffda1eec85d741" [[package]] name = "safer-ffi" -version = "0.1.2" +version = "0.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4f47f1d2f33598dab2baa9517fffa1cf722f2e3a30633f2a230f20f9da67c564" +checksum = "e9c1d19b288ca9898cd421c7b105fb7269918a7f8e9253a991e228981ca421ad" dependencies = [ "inventory", "libc", @@ -9303,9 +9324,9 @@ dependencies = [ [[package]] name = "safer_ffi-proc_macros" -version = "0.1.2" +version = "0.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b08f58cf71a58bda5734758eb20051cdb66c06c9243badbc45092ced1be834df" +checksum = "e2d7a04caa3ca2224f5ea4ddd850e2629c3b36b2b83621f87a8303bf41020110" dependencies = [ "macro_rules_attribute", "prettyplease", @@ -9334,9 +9355,9 @@ dependencies = [ [[package]] name = "schemars" -version = "0.8.12" +version = "0.8.15" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "02c613288622e5f0c3fdc5dbd4db1c5fbe752746b1d1a56a0630b78fd00de44f" +checksum = "1f7b0ce13155372a76ee2e1c5ffba1fe61ede73fbea5630d61eee6fac4929c0c" dependencies = [ "dyn-clone", "indexmap 1.9.3", @@ -9347,9 +9368,9 @@ dependencies = [ [[package]] name = "schemars_derive" -version = "0.8.12" +version = "0.8.15" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "109da1e6b197438deb6db99952990c7f959572794b80ff93707d55a232545e7c" +checksum = "e85e2a16b12bdb763244c69ab79363d71db2b4b918a2def53f80b02e0574b13c" dependencies = [ "proc-macro2", "quote", @@ -9375,7 +9396,7 @@ version = "0.6.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b362b83898e0e69f38515b82ee15aa80636befe47c3b6d3d89a911e78fc228ce" dependencies = [ - "ring", + "ring 0.16.20", "untrusted 0.7.1", ] @@ -9385,7 +9406,7 @@ version = "0.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d53dcdb7c9f8158937a7981b48accfd39a43af418591a5d008c7b22b5e1b7ca4" dependencies = [ - "ring", + "ring 0.16.20", "untrusted 0.7.1", ] @@ -9395,8 +9416,8 @@ version = "0.1.0" dependencies = [ "anyhow", "cargo-edit", - "clap 4.3.21", - "semver 1.0.18", + "clap 4.4.6", + "semver 1.0.20", "serde", "serde_json", ] @@ -9484,9 +9505,9 @@ dependencies = [ [[package]] name = "semver" -version = "1.0.18" +version = "1.0.20" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b0293b4b29daaf487284529cc2f5675b8e57c61f70167ba415a463651fd6a918" +checksum = "836fa6a3e1e547f9a2c4040802ec865b5d85f4014efe00555d7090a3dcaa1090" dependencies = [ "serde", ] @@ -9508,9 +9529,9 @@ dependencies = [ [[package]] name = "serde" -version = "1.0.183" +version = "1.0.188" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "32ac8da02677876d532745a130fc9d8e6edfa81a269b107c5b00829b91d8eb3c" +checksum = "cf9e0fcba69a370eed61bcf2b728575f726b50b55cba78064753d708ddc7549e" dependencies = [ "serde_derive", ] @@ -9555,13 +9576,13 @@ dependencies = [ [[package]] name = "serde_derive" -version = "1.0.183" +version = "1.0.188" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "aafe972d60b0b9bee71a91b92fee2d4fb3c9d7e8f6b179aa99f27203d99a4816" +checksum = "4eca7ac642d82aa35b60049a6eccb4be6be75e599bd2e9adb5f875a737654af2" dependencies = [ "proc-macro2", "quote", - "syn 2.0.28", + "syn 2.0.38", ] [[package]] @@ -9583,14 +9604,14 @@ checksum = "e578a843d40b4189a4d66bba51d7684f57da5bd7c304c64e14bd63efbef49509" dependencies = [ "proc-macro2", "quote", - "syn 2.0.28", + "syn 2.0.38", ] [[package]] name = "serde_json" -version = "1.0.104" +version = "1.0.107" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "076066c5f1078eac5b722a31827a8832fe108bed65dfa75e233c89f8206e976c" +checksum = "6b420ce6e3d8bd882e9b243c6eed35dbc9a6110c9769e74b584e0d68d1f20c65" dependencies = [ "itoa", "ryu", @@ -9615,7 +9636,7 @@ checksum = "8725e1dfadb3a50f7e5ce0b1a540466f6ed3fe7a0fca2ac2b8b831d31316bd00" dependencies = [ "proc-macro2", "quote", - "syn 2.0.28", + "syn 2.0.38", ] [[package]] @@ -9654,9 +9675,9 @@ dependencies = [ [[package]] name = "sha1" -version = "0.10.5" +version = "0.10.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f04293dc80c3993519f2d7f6f511707ee7094fe0c6d3406feb330cdb3540eba3" +checksum = "e3bf829a2d51ab4a5ddf1352d8470c140cadc8301b2ae1789db023f01cedd6ba" dependencies = [ "cfg-if", "cpufeatures", @@ -9689,9 +9710,9 @@ dependencies = [ [[package]] name = "sharded-slab" -version = "0.1.4" +version = "0.1.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "900fba806f70c630b0a382d0d825e17a0f19fcd059a2ade1ff237bcddf446b31" +checksum = "f40ca3c46823713e0d4209592e8d6e826aa57e928f09752619fc696c499637f6" dependencies = [ "lazy_static", ] @@ -9757,15 +9778,15 @@ dependencies = [ [[package]] name = "siphasher" -version = "0.3.10" +version = "1.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7bd3e3206899af3f8b12af284fafc038cc1dc2b41d1b89dd17297221c5d225de" +checksum = "54ac45299ccbd390721be55b412d41931911f654fa99e2cb8bfb57184b2061fe" [[package]] name = "slab" -version = "0.4.8" +version = "0.4.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6528351c9bc8ab22353f9d776db39a20288e8d6c37ef8cfe3317cf875eecfc2d" +checksum = "8f92a496fb766b417c996b9c5e57daf2f7ad3b0bebe1ccfca4856390e3d3bb67" dependencies = [ "autocfg 1.1.0", ] @@ -9783,9 +9804,9 @@ dependencies = [ [[package]] name = "smallvec" -version = "1.11.0" +version = "1.11.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "62bb4feee49fdd9f707ef802e22365a35de4b7b299de4763d44bfea899442ff9" +checksum = "942b4a808e05215192e39f4ab80813e599068285906cc91aa64f923db842bd5a" [[package]] name = "smartstring" @@ -9830,9 +9851,9 @@ dependencies = [ "aes-gcm 0.9.4", "blake2 0.10.6", "chacha20poly1305 0.9.1", - "curve25519-dalek 4.1.0", + "curve25519-dalek 4.1.1", "rand_core 0.6.4", - "ring", + "ring 0.16.20", "rustc_version 0.4.0", "sha2 0.10.8", "subtle 2.4.1", @@ -9850,9 +9871,9 @@ dependencies = [ [[package]] name = "socket2" -version = "0.5.3" +version = "0.5.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2538b18701741680e0322a2302176d3253a35388e2e62f172f64f4f16605f877" +checksum = "4031e820eb552adee9295814c0ced9e5cf38ddf1e8b7d566d6de8e2538ea989e" dependencies = [ "libc", "windows-sys 0.48.0", @@ -9950,27 +9971,27 @@ version = "0.1.8" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b4b7922be017ee70900be125523f38bdd644f4f06a1b16e8fa5a8ee8c34bffd4" dependencies = [ - "itertools", + "itertools 0.10.5", "nom", "unicode_categories", ] [[package]] name = "sqlformat" -version = "0.2.1" +version = "0.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0c12bc9199d1db8234678b7051747c07f517cdcf019262d1847b94ec8b1aee3e" +checksum = "6b7b278788e7be4d0d29c0f39497a0eef3fba6bbc8e70d8bf7fde46edeaa9e85" dependencies = [ - "itertools", + "itertools 0.11.0", "nom", "unicode_categories", ] [[package]] name = "sqlx" -version = "0.5.11" +version = "0.5.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fc15591eb44ffb5816a4a70a7efd5dd87bfd3aa84c4c200401c4396140525826" +checksum = "551873805652ba0d912fec5bbb0f8b4cdd96baf8e2ebf5970e5671092966019b" dependencies = [ "sqlx-core 0.5.13", "sqlx-macros 0.5.13", @@ -10055,7 +10076,7 @@ dependencies = [ "futures-executor", "futures-intrusive", "futures-util", - "hashlink 0.8.3", + "hashlink 0.8.4", "hex", "indexmap 1.9.3", "itoa", @@ -10066,11 +10087,11 @@ dependencies = [ "once_cell", "paste", "percent-encoding", - "rustls 0.20.8", + "rustls 0.20.9", "rustls-pemfile", "sha2 0.10.8", "smallvec", - "sqlformat 0.2.1", + "sqlformat 0.2.2", "sqlx-rt 0.6.3", "stringprep", "thiserror", @@ -10144,7 +10165,7 @@ name = "ssl-inject" version = "0.1.0" dependencies = [ "anyhow", - "clap 4.3.21", + "clap 4.4.6", "hex", "tokio", ] @@ -10175,10 +10196,11 @@ checksum = "a2eb9349b6444b326872e140eb1cf5e7c522154d69e7a0ffb0fb81c06b37543f" [[package]] name = "stringprep" -version = "0.1.3" +version = "0.1.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "db3737bde7edce97102e0e2b15365bf7a20bfdb5f60f4f9e8d7004258a51a8da" +checksum = "bb41d74e231a107a1b4ee36bd1214b11285b77768d2e3824aedafa988fd36ee6" dependencies = [ + "finl_unicode", "unicode-bidi", "unicode-normalization", ] @@ -10241,7 +10263,7 @@ dependencies = [ "lazy_static", "md-5", "rand 0.8.5", - "ring", + "ring 0.16.20", "subtle 2.4.1", "thiserror", "tokio", @@ -10308,9 +10330,9 @@ dependencies = [ [[package]] name = "syn" -version = "2.0.28" +version = "2.0.38" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "04361975b3f5e348b2189d8dc55bc942f278b2d482a6a0365de5bdd62d351567" +checksum = "e96b79aaa137db8f61e26363a0c9b47d8b4ec75da28b7d1d614c2303e232408b" dependencies = [ "proc-macro2", "quote", @@ -10379,14 +10401,14 @@ checksum = "55937e1799185b12863d447f42597ed69d9928686b8d88a1df17376a097d8369" [[package]] name = "tempfile" -version = "3.7.1" +version = "3.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dc02fddf48964c42031a0b3fe0428320ecf3a73c401040fc0096f97794310651" +checksum = "cb94d2f3cc536af71caac6b6fcebf65860b347e7ce0cc9ebe8f70d3e521054ef" dependencies = [ "cfg-if", - "fastrand 2.0.0", + "fastrand 2.0.1", "redox_syscall 0.3.5", - "rustix 0.38.8", + "rustix 0.38.18", "windows-sys 0.48.0", ] @@ -10402,7 +10424,7 @@ dependencies = [ "ed25519-consensus", "flex-error", "futures", - "k256 0.13.1", + "k256", "num-traits", "once_cell", "prost", @@ -10470,7 +10492,7 @@ dependencies = [ "hyper-rustls", "peg", "pin-project", - "semver 1.0.18", + "semver 1.0.20", "serde", "serde_bytes", "serde_json", @@ -10490,20 +10512,20 @@ dependencies = [ [[package]] name = "termcolor" -version = "1.2.0" +version = "1.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "be55cf8942feac5c765c2c993422806843c9a9a45d4d5c407ad6dd2ea95eb9b6" +checksum = "6093bad37da69aab9d123a8091e4be0aa4a03e4d601ec641c327398315f62b64" dependencies = [ "winapi-util", ] [[package]] name = "terminal_size" -version = "0.2.6" +version = "0.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8e6bf6f19e9f8ed8d4048dc22981458ebcf406d67e94cd422e5ecd73d63b3237" +checksum = "21bebf2b7c9e0a515f6e0f8c51dc0f8e4696391e6f1ff30379559f8365fb0df7" dependencies = [ - "rustix 0.37.23", + "rustix 0.38.18", "windows-sys 0.48.0", ] @@ -10515,22 +10537,22 @@ checksum = "222a222a5bfe1bba4a77b45ec488a741b3cb8872e5e499451fd7d0129c9c7c3d" [[package]] name = "thiserror" -version = "1.0.44" +version = "1.0.49" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "611040a08a0439f8248d1990b111c95baa9c704c805fa1f62104b39655fd7f90" +checksum = "1177e8c6d7ede7afde3585fd2513e611227efd6481bd78d2e82ba1ce16557ed4" dependencies = [ "thiserror-impl", ] [[package]] name = "thiserror-impl" -version = "1.0.44" +version = "1.0.49" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "090198534930841fab3a5d1bb637cde49e339654e606195f8d9c76eeb081dc96" +checksum = "10712f02019e9288794769fba95cd6847df9874d49d871d062172f9dd41bc4cc" dependencies = [ "proc-macro2", "quote", - "syn 2.0.28", + "syn 2.0.38", ] [[package]] @@ -10567,9 +10589,9 @@ dependencies = [ [[package]] name = "time" -version = "0.3.25" +version = "0.3.29" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b0fdd63d58b18d663fbdf70e049f00a22c8e42be082203be7f26589213cd75ea" +checksum = "426f806f4089c493dcac0d24c29c01e2c38baf8e30f1b716ee37e83d200b18fe" dependencies = [ "deranged", "itoa", @@ -10581,15 +10603,15 @@ dependencies = [ [[package]] name = "time-core" -version = "0.1.1" +version = "0.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7300fbefb4dadc1af235a9cef3737cea692a9d97e1b9cbcd4ebdae6f8868e6fb" +checksum = "ef927ca75afb808a4d64dd374f00a2adf8d0fcff8e7b184af886c3c87ec4a3f3" [[package]] name = "time-macros" -version = "0.2.11" +version = "0.2.15" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "eb71511c991639bb078fd5bf97757e03914361c48100d52878b8e52b46fb92cd" +checksum = "4ad70d68dba9e1f8aceda7aa6711965dfec1cac869f311a51bd08b3a2ccbce20" dependencies = [ "time-core", ] @@ -10621,9 +10643,9 @@ checksum = "1f3ccbac311fea05f86f61904b462b55fb3df8837a366dfc601a0161d0532f20" [[package]] name = "tokio" -version = "1.31.0" +version = "1.33.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "40de3a2ba249dcb097e01be5e67a5ff53cf250397715a071a81543e8a832a920" +checksum = "4f38200e3ef7995e5ef13baec2f432a6da0aa9ac495b2c0e8f3b7eec2c92d653" dependencies = [ "backtrace", "bytes", @@ -10631,9 +10653,9 @@ dependencies = [ "mio", "num_cpus", "parking_lot 0.12.1", - "pin-project-lite 0.2.12", + "pin-project-lite 0.2.13", "signal-hook-registry", - "socket2 0.5.3", + "socket2 0.5.4", "tokio-macros", "tracing", "windows-sys 0.48.0", @@ -10645,7 +10667,7 @@ version = "1.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "30b74022ada614a1b4834de765f9bb43877f910cc8ce4be40e89042c9223a8bf" dependencies = [ - "pin-project-lite 0.2.12", + "pin-project-lite 0.2.13", "tokio", ] @@ -10657,7 +10679,7 @@ checksum = "630bdcf245f78637c13ec01ffae6187cca34625e8c63150d424b59e55af2675e" dependencies = [ "proc-macro2", "quote", - "syn 2.0.28", + "syn 2.0.38", ] [[package]] @@ -10687,9 +10709,9 @@ version = "0.23.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c43ee83903113e03984cb9e5cebe6c04a5116269e900e3ddba8f068a62adda59" dependencies = [ - "rustls 0.20.8", + "rustls 0.20.9", "tokio", - "webpki 0.22.2", + "webpki 0.22.4", ] [[package]] @@ -10711,16 +10733,16 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "397c988d37662c7dda6d2208364a706264bf3d6138b11d436cbac0ad38832842" dependencies = [ "futures-core", - "pin-project-lite 0.2.12", + "pin-project-lite 0.2.13", "tokio", "tokio-util", ] [[package]] name = "tokio-test" -version = "0.4.2" +version = "0.4.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "53474327ae5e166530d17f2d956afcb4f8a004de581b3cae10f12006bc8163e3" +checksum = "e89b3cbabd3ae862100094ae433e1def582cf86451b4e9bf83aa7ac1d8a7d719" dependencies = [ "async-stream", "bytes", @@ -10765,7 +10787,7 @@ dependencies = [ "futures-sink", "futures-util", "hashbrown 0.12.3", - "pin-project-lite 0.2.12", + "pin-project-lite 0.2.13", "slab", "tokio", "tracing", @@ -10782,14 +10804,26 @@ dependencies = [ [[package]] name = "toml" -version = "0.7.6" +version = "0.7.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c17e963a819c331dcacd7ab957d80bc2b9a9c1e71c804826d2f283dd65306542" +checksum = "dd79e69d3b627db300ff956027cc6c3798cef26d22526befdfcd12feeb6d2257" dependencies = [ "serde", "serde_spanned", "toml_datetime 0.6.3", - "toml_edit 0.19.14", + "toml_edit 0.19.15", +] + +[[package]] +name = "toml" +version = "0.8.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "185d8ab0dfbb35cf1399a6344d8484209c088f75f8f68230da55d48d95d43e3d" +dependencies = [ + "serde", + "serde_spanned", + "toml_datetime 0.6.3", + "toml_edit 0.20.2", ] [[package]] @@ -10817,7 +10851,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "dd30deba9a1cd7153c22aecf93e86df639e7b81c622b0af8d9255e989991a7b7" dependencies = [ "indexmap 1.9.3", - "itertools", + "itertools 0.10.5", "kstring", "nom8", "serde", @@ -10826,11 +10860,24 @@ dependencies = [ [[package]] name = "toml_edit" -version = "0.19.14" +version = "0.19.15" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f8123f27e969974a3dfba720fdb560be359f57b44302d280ba72e76a74480e8a" +checksum = "1b5bb770da30e5cbfde35a2d7b9b8a2c4b8ef89548a7a6aeab5c9a576e3e7421" dependencies = [ - "indexmap 2.0.0", + "indexmap 2.0.2", + "serde", + "serde_spanned", + "toml_datetime 0.6.3", + "winnow", +] + +[[package]] +name = "toml_edit" +version = "0.20.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "396e4d48bbb2b7554c944bde63101b5ae446cff6ec4a24227428f15eb72ef338" +dependencies = [ + "indexmap 2.0.2", "serde", "serde_spanned", "toml_datetime 0.6.3", @@ -10875,7 +10922,7 @@ dependencies = [ "futures-util", "indexmap 1.9.3", "pin-project", - "pin-project-lite 0.2.12", + "pin-project-lite 0.2.13", "rand 0.8.5", "slab", "tokio", @@ -10905,7 +10952,7 @@ checksum = "8ce8c33a8d48bd45d624a6e523445fd21ec13d3653cd51f681abf67418f54eb8" dependencies = [ "cfg-if", "log", - "pin-project-lite 0.2.12", + "pin-project-lite 0.2.13", "tracing-attributes", "tracing-core", ] @@ -10918,7 +10965,7 @@ checksum = "5f4f31f56159e98206da9efd823404b79b6ef3143b4a7ab76e67b1751b25a4ab" dependencies = [ "proc-macro2", "quote", - "syn 2.0.28", + "syn 2.0.38", ] [[package]] @@ -10986,11 +11033,10 @@ dependencies = [ [[package]] name = "tracing-tree" -version = "0.2.4" +version = "0.2.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "92d6b63348fad3ae0439b8bebf8d38fb5bda0b115d7a8a7e6f165f12790c58c3" +checksum = "2ec6adcab41b1391b08a308cc6302b79f8095d1673f6947c2dc65ffb028b0b2d" dependencies = [ - "is-terminal", "nu-ansi-term", "tracing-core", "tracing-log", @@ -11112,7 +11158,7 @@ dependencies = [ "Inflector", "proc-macro2", "quote", - "syn 2.0.28", + "syn 2.0.38", "termcolor", ] @@ -11139,7 +11185,7 @@ dependencies = [ "proc-macro2", "quote", "serde_derive_internals 0.28.0", - "syn 2.0.28", + "syn 2.0.38", ] [[package]] @@ -11173,7 +11219,7 @@ dependencies = [ "log", "md-5", "rand 0.8.5", - "ring", + "ring 0.16.20", "stun", "thiserror", "tokio", @@ -11182,15 +11228,15 @@ dependencies = [ [[package]] name = "typenum" -version = "1.16.0" +version = "1.17.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "497961ef93d974e23eb6f433eb5fe1b7930b659f06d12dec6fc44a8f554c0bba" +checksum = "42ff0bf0c66b8238c6f3b578df37d0b7848e55df8577b3f74f92a69acceeb825" [[package]] name = "ubyte" -version = "0.10.3" +version = "0.10.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c81f0dae7d286ad0d9366d7679a77934cfc3cf3a8d67e82669794412b2368fe6" +checksum = "f720def6ce1ee2fc44d40ac9ed6d3a59c361c80a75a7aa8e75bb9baed31cf2ea" dependencies = [ "serde", ] @@ -11225,9 +11271,9 @@ dependencies = [ [[package]] name = "unicase" -version = "2.6.0" +version = "2.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "50f37be617794602aabbeee0be4f259dc1778fabe05e2d67ee8f79326d5cb4f6" +checksum = "f7d2d4dafb69621809a81864c9c1b864479e1235c0dd4e199924b9742439ed89" dependencies = [ "version_check", ] @@ -11250,9 +11296,9 @@ checksum = "92888ba5573ff080736b3648696b70cafad7d250551175acbaa4e0385b3e1460" [[package]] name = "unicode-ident" -version = "1.0.11" +version = "1.0.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "301abaae475aa91687eb82514b328ab47a211a533026cb25fc3e519b86adfc3c" +checksum = "3354b9ac3fae1ff6755cb6db53683adb661634f67557942dea4facebec0fee4b" [[package]] name = "unicode-normalization" @@ -11271,9 +11317,9 @@ checksum = "1dd624098567895118886609431a7c3b8f516e41d30e0643f03d94592a147e36" [[package]] name = "unicode-width" -version = "0.1.10" +version = "0.1.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c0edd1e5b14653f783770bce4a4dabb4a5108a5370a5f5d8cfe8710c361f6c8b" +checksum = "e51733f11c9c4f72aa0c160008246859e340b00807569a0da0e7a1079b27ba85" [[package]] name = "unicode-xid" @@ -11318,9 +11364,9 @@ dependencies = [ [[package]] name = "unsigned-varint" -version = "0.7.1" +version = "0.7.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d86a8dc7f45e4c1b0d30e43038c38f274e77af056aa5f74b93c2cf9eb3c1c836" +checksum = "6889a77d49f1f013504cec6bf97a2c730394adedaeb1deb5ea08949a50541105" dependencies = [ "asynchronous-codec", "bytes", @@ -11346,28 +11392,28 @@ checksum = "0976c77def3f1f75c4ef892a292c31c0bbe9e3d0702c63044d7c76db298171a3" [[package]] name = "ureq" -version = "2.7.1" +version = "2.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0b11c96ac7ee530603dcdf68ed1557050f374ce55a5a07193ebf8cbc9f8927e9" +checksum = "f5ccd538d4a604753ebc2f17cd9946e89b77bf87f6a8e2309667c6f2e87855e3" dependencies = [ "base64 0.21.4", "log", "native-tls", "once_cell", "rustls 0.21.7", - "rustls-webpki 0.100.2", + "rustls-webpki", "serde", "serde_json", "socks", "url", - "webpki-roots 0.23.1", + "webpki-roots 0.25.2", ] [[package]] name = "url" -version = "2.4.0" +version = "2.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "50bff7831e19200a85b17131d085c25d7811bc4e186efdaf54bbd132994a88cb" +checksum = "143b538f18257fac9cad154828a57c6bf5157e1aa604d4816b5995bf6de87ae5" dependencies = [ "form_urlencoded", "idna 0.4.0", @@ -11395,11 +11441,11 @@ checksum = "711b9620af191e0cdc7468a8d14e709c3dcdb115b36f838e601583af800a370a" [[package]] name = "utoipa" -version = "3.3.0" +version = "3.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "68ae74ef183fae36d650f063ae7bde1cacbe1cd7e72b617cbe1e985551878b98" +checksum = "d82b1bc5417102a73e8464c686eef947bdfb99fcdfc0a4f228e81afa9526470a" dependencies = [ - "indexmap 1.9.3", + "indexmap 2.0.2", "serde", "serde_json", "utoipa-gen", @@ -11407,23 +11453,22 @@ dependencies = [ [[package]] name = "utoipa-gen" -version = "3.3.0" +version = "3.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7ea8ac818da7e746a63285594cce8a96f5e00ee31994e655bd827569cb8b137b" +checksum = "05d96dcd6fc96f3df9b3280ef480770af1b7c5d14bc55192baa9b067976d920c" dependencies = [ - "lazy_static", "proc-macro-error", "proc-macro2", "quote", "regex", - "syn 2.0.28", + "syn 2.0.38", ] [[package]] name = "utoipa-swagger-ui" -version = "3.1.3" +version = "3.1.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "062bba5a3568e126ac72049a63254f4cb1da2eb713db0c1ab2a4c76be191db8c" +checksum = "84614caa239fb25b2bb373a52859ffd94605ceb256eeb1d63436325cf81e3653" dependencies = [ "actix-web", "mime_guess", @@ -11504,15 +11549,15 @@ dependencies = [ [[package]] name = "waker-fn" -version = "1.1.0" +version = "1.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9d5b2c62b4012a3e1eca5a7e077d13b3bf498c4073e33ccd58626607748ceeca" +checksum = "f3c4517f54858c779bbcbf228f4fca63d121bf85fbecb2dc578cdf4a39395690" [[package]] name = "walkdir" -version = "2.3.3" +version = "2.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "36df944cda56c7d8d8b7496af378e6b16de9284591917d307c9b4d313c44e698" +checksum = "d71d857dc86794ca4c280d616f7da00d2dbfd8cd788846559a6813e6aa4b54ee" dependencies = [ "same-file", "winapi-util", @@ -11560,7 +11605,7 @@ dependencies = [ "once_cell", "proc-macro2", "quote", - "syn 2.0.28", + "syn 2.0.38", "wasm-bindgen-shared", ] @@ -11594,7 +11639,7 @@ checksum = "54681b18a46765f095758388f2d0cf16eb8d4169b639ab575a8f5693af210c7b" dependencies = [ "proc-macro2", "quote", - "syn 2.0.28", + "syn 2.0.38", "wasm-bindgen-backend", "wasm-bindgen-shared", ] @@ -11736,18 +11781,18 @@ version = "0.21.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b8e38c0608262c46d4a56202ebabdeb094cef7e560ca7a226c6bf055188aa4ea" dependencies = [ - "ring", + "ring 0.16.20", "untrusted 0.7.1", ] [[package]] name = "webpki" -version = "0.22.2" +version = "0.22.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "07ecc0cd7cac091bf682ec5efa18b1cff79d617b84181f38b3951dbe135f607f" +checksum = "ed63aea5ce73d0ff405984102c42de94fc55a6b75765d621c65262469b3c9b53" dependencies = [ - "ring", - "untrusted 0.7.1", + "ring 0.17.3", + "untrusted 0.9.0", ] [[package]] @@ -11765,17 +11810,14 @@ version = "0.22.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b6c71e40d7d2c34a5106301fb632274ca37242cd0c9d3e64dbece371a40a2d87" dependencies = [ - "webpki 0.22.2", + "webpki 0.22.4", ] [[package]] name = "webpki-roots" -version = "0.23.1" +version = "0.25.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b03058f88386e5ff5310d9111d53f48b17d732b401aeb83a8d5190f2ac459338" -dependencies = [ - "rustls-webpki 0.100.2", -] +checksum = "14247bb57be4f377dfb94c72830b8ce8fc6beac03cf4bf7b9732eadd414123fc" [[package]] name = "webrtc" @@ -11793,7 +11835,7 @@ dependencies = [ "rand 0.8.5", "rcgen 0.9.3", "regex", - "ring", + "ring 0.16.20", "rtcp", "rtp", "rustls 0.19.1", @@ -11835,12 +11877,12 @@ dependencies = [ [[package]] name = "webrtc-dtls" -version = "0.7.1" +version = "0.7.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "942be5bd85f072c3128396f6e5a9bfb93ca8c1939ded735d177b7bcba9a13d05" +checksum = "c4a00f4242f2db33307347bd5be53263c52a0331c96c14292118c9a6bb48d267" dependencies = [ "aes 0.6.0", - "aes-gcm 0.10.2", + "aes-gcm 0.10.3", "async-trait", "bincode", "block-modes", @@ -11852,13 +11894,12 @@ dependencies = [ "hkdf 0.12.3", "hmac 0.12.1", "log", - "oid-registry 0.6.1", "p256", "p384", "rand 0.8.5", "rand_core 0.6.4", - "rcgen 0.9.3", - "ring", + "rcgen 0.10.0", + "ring 0.16.20", "rustls 0.19.1", "sec1 0.3.0", "serde", @@ -11988,20 +12029,21 @@ dependencies = [ [[package]] name = "which" -version = "4.4.0" +version = "4.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2441c784c52b289a054b7201fc93253e288f094e2f4be9058343127c4226a269" +checksum = "87ba24419a2078cd2b0f2ede2691b6c66d8e47836da3b6db8265ebad47afbfc7" dependencies = [ "either", - "libc", + "home", "once_cell", + "rustix 0.38.18", ] [[package]] name = "widestring" -version = "0.5.1" +version = "1.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "17882f045410753661207383517a6f62ec3dbeb6a4ed2acce01f0728238d1983" +checksum = "653f141f39ec16bba3c5abe400a0c60da7468261cc2cbf36805022876bc721a8" [[package]] name = "winapi" @@ -12021,9 +12063,9 @@ checksum = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6" [[package]] name = "winapi-util" -version = "0.1.5" +version = "0.1.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "70ec6ce85bb158151cae5e5c87f95a8e97d2c0c4b001223f33a334e3ce5de178" +checksum = "f29e6f9198ba0d26b4c9f07dbe6f9ed633e1f3d5b8b414090084349e46a52596" dependencies = [ "winapi", ] @@ -12053,7 +12095,7 @@ version = "0.48.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e686886bc078bc1b0b600cac0147aadb815089b6e4da64016cbd754b6342700f" dependencies = [ - "windows-targets 0.48.1", + "windows-targets 0.48.5", ] [[package]] @@ -12071,7 +12113,7 @@ version = "0.48.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "677d2418bec65e3338edb076e806bc1ec15693c5d0104683f2efe857f61056a9" dependencies = [ - "windows-targets 0.48.1", + "windows-targets 0.48.5", ] [[package]] @@ -12091,17 +12133,17 @@ dependencies = [ [[package]] name = "windows-targets" -version = "0.48.1" +version = "0.48.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "05d4b17490f70499f20b9e791dcf6a299785ce8af4d709018206dc5b4953e95f" +checksum = "9a2fa6e2155d7247be68c096456083145c183cbbbc2764150dda45a87197940c" dependencies = [ - "windows_aarch64_gnullvm 0.48.0", - "windows_aarch64_msvc 0.48.0", - "windows_i686_gnu 0.48.0", - "windows_i686_msvc 0.48.0", - "windows_x86_64_gnu 0.48.0", - "windows_x86_64_gnullvm 0.48.0", - "windows_x86_64_msvc 0.48.0", + "windows_aarch64_gnullvm 0.48.5", + "windows_aarch64_msvc 0.48.5", + "windows_i686_gnu 0.48.5", + "windows_i686_msvc 0.48.5", + "windows_x86_64_gnu 0.48.5", + "windows_x86_64_gnullvm 0.48.5", + "windows_x86_64_msvc 0.48.5", ] [[package]] @@ -12112,9 +12154,9 @@ checksum = "597a5118570b68bc08d8d59125332c54f1ba9d9adeedeef5b99b02ba2b0698f8" [[package]] name = "windows_aarch64_gnullvm" -version = "0.48.0" +version = "0.48.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "91ae572e1b79dba883e0d315474df7305d12f569b400fcf90581b06062f7e1bc" +checksum = "2b38e32f0abccf9987a4e3079dfb67dcd799fb61361e53e2882c3cbaf0d905d8" [[package]] name = "windows_aarch64_msvc" @@ -12130,9 +12172,9 @@ checksum = "e08e8864a60f06ef0d0ff4ba04124db8b0fb3be5776a5cd47641e942e58c4d43" [[package]] name = "windows_aarch64_msvc" -version = "0.48.0" +version = "0.48.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b2ef27e0d7bdfcfc7b868b317c1d32c641a6fe4629c171b8928c7b08d98d7cf3" +checksum = "dc35310971f3b2dbbf3f0690a219f40e2d9afcf64f9ab7cc1be722937c26b4bc" [[package]] name = "windows_i686_gnu" @@ -12148,9 +12190,9 @@ checksum = "c61d927d8da41da96a81f029489353e68739737d3beca43145c8afec9a31a84f" [[package]] name = "windows_i686_gnu" -version = "0.48.0" +version = "0.48.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "622a1962a7db830d6fd0a69683c80a18fda201879f0f447f065a3b7467daa241" +checksum = "a75915e7def60c94dcef72200b9a8e58e5091744960da64ec734a6c6e9b3743e" [[package]] name = "windows_i686_msvc" @@ -12166,9 +12208,9 @@ checksum = "44d840b6ec649f480a41c8d80f9c65108b92d89345dd94027bfe06ac444d1060" [[package]] name = "windows_i686_msvc" -version = "0.48.0" +version = "0.48.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4542c6e364ce21bf45d69fdd2a8e455fa38d316158cfd43b3ac1c5b1b19f8e00" +checksum = "8f55c233f70c4b27f66c523580f78f1004e8b5a8b659e05a4eb49d4166cca406" [[package]] name = "windows_x86_64_gnu" @@ -12184,9 +12226,9 @@ checksum = "8de912b8b8feb55c064867cf047dda097f92d51efad5b491dfb98f6bbb70cb36" [[package]] name = "windows_x86_64_gnu" -version = "0.48.0" +version = "0.48.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ca2b8a661f7628cbd23440e50b05d705db3686f894fc9580820623656af974b1" +checksum = "53d40abd2583d23e4718fddf1ebec84dbff8381c07cae67ff7768bbf19c6718e" [[package]] name = "windows_x86_64_gnullvm" @@ -12196,9 +12238,9 @@ checksum = "26d41b46a36d453748aedef1486d5c7a85db22e56aff34643984ea85514e94a3" [[package]] name = "windows_x86_64_gnullvm" -version = "0.48.0" +version = "0.48.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7896dbc1f41e08872e9d5e8f8baa8fdd2677f29468c4e156210174edc7f7b953" +checksum = "0b7b52767868a23d5bab768e390dc5f5c55825b6d30b86c844ff2dc7414044cc" [[package]] name = "windows_x86_64_msvc" @@ -12214,26 +12256,27 @@ checksum = "9aec5da331524158c6d1a4ac0ab1541149c0b9505fde06423b02f5ef0106b9f0" [[package]] name = "windows_x86_64_msvc" -version = "0.48.0" +version = "0.48.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1a515f5799fe4961cb532f983ce2b23082366b898e52ffbce459c86f67c8378a" +checksum = "ed94fce61571a4006852b7389a063ab983c02eb1bb37b47f8272ce92d06d9538" [[package]] name = "winnow" -version = "0.5.10" +version = "0.5.16" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5504cc7644f4b593cbc05c4a55bf9bd4e94b867c3c0bd440934174d50482427d" +checksum = "037711d82167854aff2018dfd193aa0fef5370f456732f0d5a0c59b0f1b4b907" dependencies = [ "memchr", ] [[package]] name = "winreg" -version = "0.10.1" +version = "0.50.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "80d0f4e272c85def139476380b12f9ac60926689dd2e01d4923222f40580869d" +checksum = "524e57b2c537c0f9b1e69f1965311ec12182b4122e45035b1508cd24d2adadb1" dependencies = [ - "winapi", + "cfg-if", + "windows-sys 0.48.0", ] [[package]] @@ -12283,7 +12326,7 @@ version = "2.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "fb66477291e7e8d2b0ff1bcb900bf29489a9692816d79874bea351e7a8b6de96" dependencies = [ - "curve25519-dalek 4.1.0", + "curve25519-dalek 4.1.1", "rand_core 0.6.4", "serde", "zeroize", @@ -12302,7 +12345,7 @@ dependencies = [ "lazy_static", "nom", "oid-registry 0.4.0", - "ring", + "ring 0.16.20", "rusticata-macros", "thiserror", "time", @@ -12378,7 +12421,7 @@ checksum = "ce36e65b0d2999d2aafac989fb249189a141aee1f53c612c1f37d72631959f69" dependencies = [ "proc-macro2", "quote", - "syn 2.0.28", + "syn 2.0.38", ] [[package]] @@ -12395,18 +12438,18 @@ dependencies = [ [[package]] name = "zstd" -version = "0.12.3+zstd.1.5.2" +version = "0.12.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "76eea132fb024e0e13fd9c2f5d5d595d8a967aa72382ac2f9d39fcc95afd0806" +checksum = "1a27595e173641171fc74a1232b7b1c7a7cb6e18222c11e9dfb9888fa424c53c" dependencies = [ "zstd-safe", ] [[package]] name = "zstd-safe" -version = "6.0.5+zstd.1.5.4" +version = "6.0.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d56d9e60b4b1758206c238a10165fbcae3ca37b01744e394c463463f6529d23b" +checksum = "ee98ffd0b48ee95e6c5168188e44a54550b1564d9d530ee21d5f0eaed1069581" dependencies = [ "libc", "zstd-sys", diff --git a/documentation/operators/book.toml b/documentation/operators/book.toml index a9423f68da..56a5b00162 100644 --- a/documentation/operators/book.toml +++ b/documentation/operators/book.toml @@ -42,7 +42,7 @@ turn-off = true [preprocessor.admonish] command = "mdbook-admonish" -assets_version = "2.0.2" # do not edit: managed by `mdbook-admonish install` +assets_version = "3.0.0" # do not edit: managed by `mdbook-admonish install` # variables preprocessor: import variables into files # https://gitlab.com/tglman/mdbook-variables/ diff --git a/documentation/operators/mdbook-admonish.css b/documentation/operators/mdbook-admonish.css index c3e9869e58..e0a3365532 100644 --- a/documentation/operators/mdbook-admonish.css +++ b/documentation/operators/mdbook-admonish.css @@ -1,31 +1,18 @@ @charset "UTF-8"; :root { - --md-admonition-icon--note: - url("data:image/svg+xml;charset=utf-8,"); - --md-admonition-icon--abstract: - url("data:image/svg+xml;charset=utf-8,"); - --md-admonition-icon--info: - url("data:image/svg+xml;charset=utf-8,"); - --md-admonition-icon--tip: - url("data:image/svg+xml;charset=utf-8,"); - --md-admonition-icon--success: - url("data:image/svg+xml;charset=utf-8,"); - --md-admonition-icon--question: - url("data:image/svg+xml;charset=utf-8,"); - --md-admonition-icon--warning: - url("data:image/svg+xml;charset=utf-8,"); - --md-admonition-icon--failure: - url("data:image/svg+xml;charset=utf-8,"); - --md-admonition-icon--danger: - url("data:image/svg+xml;charset=utf-8,"); - --md-admonition-icon--bug: - url("data:image/svg+xml;charset=utf-8,"); - --md-admonition-icon--example: - url("data:image/svg+xml;charset=utf-8,"); - --md-admonition-icon--quote: - url("data:image/svg+xml;charset=utf-8,"); - --md-details-icon: - url("data:image/svg+xml;charset=utf-8,"); + --md-admonition-icon--admonish-note: url("data:image/svg+xml;charset=utf-8,"); + --md-admonition-icon--admonish-abstract: url("data:image/svg+xml;charset=utf-8,"); + --md-admonition-icon--admonish-info: url("data:image/svg+xml;charset=utf-8,"); + --md-admonition-icon--admonish-tip: url("data:image/svg+xml;charset=utf-8,"); + --md-admonition-icon--admonish-success: url("data:image/svg+xml;charset=utf-8,"); + --md-admonition-icon--admonish-question: url("data:image/svg+xml;charset=utf-8,"); + --md-admonition-icon--admonish-warning: url("data:image/svg+xml;charset=utf-8,"); + --md-admonition-icon--admonish-failure: url("data:image/svg+xml;charset=utf-8,"); + --md-admonition-icon--admonish-danger: url("data:image/svg+xml;charset=utf-8,"); + --md-admonition-icon--admonish-bug: url("data:image/svg+xml;charset=utf-8,"); + --md-admonition-icon--admonish-example: url("data:image/svg+xml;charset=utf-8,"); + --md-admonition-icon--admonish-quote: url("data:image/svg+xml;charset=utf-8,"); + --md-details-icon: url("data:image/svg+xml;charset=utf-8,"); } :is(.admonition) { @@ -132,204 +119,204 @@ details[open].admonition > summary.admonition-title::after { transform: rotate(90deg); } -:is(.admonition):is(.note) { +:is(.admonition):is(.admonish-note) { border-color: #448aff; } -:is(.note) > :is(.admonition-title, summary.admonition-title) { +:is(.admonish-note) > :is(.admonition-title, summary.admonition-title) { background-color: rgba(68, 138, 255, 0.1); } -:is(.note) > :is(.admonition-title, summary.admonition-title)::before { +:is(.admonish-note) > :is(.admonition-title, summary.admonition-title)::before { background-color: #448aff; - mask-image: var(--md-admonition-icon--note); - -webkit-mask-image: var(--md-admonition-icon--note); + mask-image: var(--md-admonition-icon--admonish-note); + -webkit-mask-image: var(--md-admonition-icon--admonish-note); mask-repeat: no-repeat; -webkit-mask-repeat: no-repeat; mask-size: contain; -webkit-mask-repeat: no-repeat; } -:is(.admonition):is(.abstract, .summary, .tldr) { +:is(.admonition):is(.admonish-abstract, .admonish-summary, .admonish-tldr) { border-color: #00b0ff; } -:is(.abstract, .summary, .tldr) > :is(.admonition-title, summary.admonition-title) { +:is(.admonish-abstract, .admonish-summary, .admonish-tldr) > :is(.admonition-title, summary.admonition-title) { background-color: rgba(0, 176, 255, 0.1); } -:is(.abstract, .summary, .tldr) > :is(.admonition-title, summary.admonition-title)::before { +:is(.admonish-abstract, .admonish-summary, .admonish-tldr) > :is(.admonition-title, summary.admonition-title)::before { background-color: #00b0ff; - mask-image: var(--md-admonition-icon--abstract); - -webkit-mask-image: var(--md-admonition-icon--abstract); + mask-image: var(--md-admonition-icon--admonish-abstract); + -webkit-mask-image: var(--md-admonition-icon--admonish-abstract); mask-repeat: no-repeat; -webkit-mask-repeat: no-repeat; mask-size: contain; -webkit-mask-repeat: no-repeat; } -:is(.admonition):is(.info, .todo) { +:is(.admonition):is(.admonish-info, .admonish-todo) { border-color: #00b8d4; } -:is(.info, .todo) > :is(.admonition-title, summary.admonition-title) { +:is(.admonish-info, .admonish-todo) > :is(.admonition-title, summary.admonition-title) { background-color: rgba(0, 184, 212, 0.1); } -:is(.info, .todo) > :is(.admonition-title, summary.admonition-title)::before { +:is(.admonish-info, .admonish-todo) > :is(.admonition-title, summary.admonition-title)::before { background-color: #00b8d4; - mask-image: var(--md-admonition-icon--info); - -webkit-mask-image: var(--md-admonition-icon--info); + mask-image: var(--md-admonition-icon--admonish-info); + -webkit-mask-image: var(--md-admonition-icon--admonish-info); mask-repeat: no-repeat; -webkit-mask-repeat: no-repeat; mask-size: contain; -webkit-mask-repeat: no-repeat; } -:is(.admonition):is(.tip, .hint, .important) { +:is(.admonition):is(.admonish-tip, .admonish-hint, .admonish-important) { border-color: #00bfa5; } -:is(.tip, .hint, .important) > :is(.admonition-title, summary.admonition-title) { +:is(.admonish-tip, .admonish-hint, .admonish-important) > :is(.admonition-title, summary.admonition-title) { background-color: rgba(0, 191, 165, 0.1); } -:is(.tip, .hint, .important) > :is(.admonition-title, summary.admonition-title)::before { +:is(.admonish-tip, .admonish-hint, .admonish-important) > :is(.admonition-title, summary.admonition-title)::before { background-color: #00bfa5; - mask-image: var(--md-admonition-icon--tip); - -webkit-mask-image: var(--md-admonition-icon--tip); + mask-image: var(--md-admonition-icon--admonish-tip); + -webkit-mask-image: var(--md-admonition-icon--admonish-tip); mask-repeat: no-repeat; -webkit-mask-repeat: no-repeat; mask-size: contain; -webkit-mask-repeat: no-repeat; } -:is(.admonition):is(.success, .check, .done) { +:is(.admonition):is(.admonish-success, .admonish-check, .admonish-done) { border-color: #00c853; } -:is(.success, .check, .done) > :is(.admonition-title, summary.admonition-title) { +:is(.admonish-success, .admonish-check, .admonish-done) > :is(.admonition-title, summary.admonition-title) { background-color: rgba(0, 200, 83, 0.1); } -:is(.success, .check, .done) > :is(.admonition-title, summary.admonition-title)::before { +:is(.admonish-success, .admonish-check, .admonish-done) > :is(.admonition-title, summary.admonition-title)::before { background-color: #00c853; - mask-image: var(--md-admonition-icon--success); - -webkit-mask-image: var(--md-admonition-icon--success); + mask-image: var(--md-admonition-icon--admonish-success); + -webkit-mask-image: var(--md-admonition-icon--admonish-success); mask-repeat: no-repeat; -webkit-mask-repeat: no-repeat; mask-size: contain; -webkit-mask-repeat: no-repeat; } -:is(.admonition):is(.question, .help, .faq) { +:is(.admonition):is(.admonish-question, .admonish-help, .admonish-faq) { border-color: #64dd17; } -:is(.question, .help, .faq) > :is(.admonition-title, summary.admonition-title) { +:is(.admonish-question, .admonish-help, .admonish-faq) > :is(.admonition-title, summary.admonition-title) { background-color: rgba(100, 221, 23, 0.1); } -:is(.question, .help, .faq) > :is(.admonition-title, summary.admonition-title)::before { +:is(.admonish-question, .admonish-help, .admonish-faq) > :is(.admonition-title, summary.admonition-title)::before { background-color: #64dd17; - mask-image: var(--md-admonition-icon--question); - -webkit-mask-image: var(--md-admonition-icon--question); + mask-image: var(--md-admonition-icon--admonish-question); + -webkit-mask-image: var(--md-admonition-icon--admonish-question); mask-repeat: no-repeat; -webkit-mask-repeat: no-repeat; mask-size: contain; -webkit-mask-repeat: no-repeat; } -:is(.admonition):is(.warning, .caution, .attention) { +:is(.admonition):is(.admonish-warning, .admonish-caution, .admonish-attention) { border-color: #ff9100; } -:is(.warning, .caution, .attention) > :is(.admonition-title, summary.admonition-title) { +:is(.admonish-warning, .admonish-caution, .admonish-attention) > :is(.admonition-title, summary.admonition-title) { background-color: rgba(255, 145, 0, 0.1); } -:is(.warning, .caution, .attention) > :is(.admonition-title, summary.admonition-title)::before { +:is(.admonish-warning, .admonish-caution, .admonish-attention) > :is(.admonition-title, summary.admonition-title)::before { background-color: #ff9100; - mask-image: var(--md-admonition-icon--warning); - -webkit-mask-image: var(--md-admonition-icon--warning); + mask-image: var(--md-admonition-icon--admonish-warning); + -webkit-mask-image: var(--md-admonition-icon--admonish-warning); mask-repeat: no-repeat; -webkit-mask-repeat: no-repeat; mask-size: contain; -webkit-mask-repeat: no-repeat; } -:is(.admonition):is(.failure, .fail, .missing) { +:is(.admonition):is(.admonish-failure, .admonish-fail, .admonish-missing) { border-color: #ff5252; } -:is(.failure, .fail, .missing) > :is(.admonition-title, summary.admonition-title) { +:is(.admonish-failure, .admonish-fail, .admonish-missing) > :is(.admonition-title, summary.admonition-title) { background-color: rgba(255, 82, 82, 0.1); } -:is(.failure, .fail, .missing) > :is(.admonition-title, summary.admonition-title)::before { +:is(.admonish-failure, .admonish-fail, .admonish-missing) > :is(.admonition-title, summary.admonition-title)::before { background-color: #ff5252; - mask-image: var(--md-admonition-icon--failure); - -webkit-mask-image: var(--md-admonition-icon--failure); + mask-image: var(--md-admonition-icon--admonish-failure); + -webkit-mask-image: var(--md-admonition-icon--admonish-failure); mask-repeat: no-repeat; -webkit-mask-repeat: no-repeat; mask-size: contain; -webkit-mask-repeat: no-repeat; } -:is(.admonition):is(.danger, .error) { +:is(.admonition):is(.admonish-danger, .admonish-error) { border-color: #ff1744; } -:is(.danger, .error) > :is(.admonition-title, summary.admonition-title) { +:is(.admonish-danger, .admonish-error) > :is(.admonition-title, summary.admonition-title) { background-color: rgba(255, 23, 68, 0.1); } -:is(.danger, .error) > :is(.admonition-title, summary.admonition-title)::before { +:is(.admonish-danger, .admonish-error) > :is(.admonition-title, summary.admonition-title)::before { background-color: #ff1744; - mask-image: var(--md-admonition-icon--danger); - -webkit-mask-image: var(--md-admonition-icon--danger); + mask-image: var(--md-admonition-icon--admonish-danger); + -webkit-mask-image: var(--md-admonition-icon--admonish-danger); mask-repeat: no-repeat; -webkit-mask-repeat: no-repeat; mask-size: contain; -webkit-mask-repeat: no-repeat; } -:is(.admonition):is(.bug) { +:is(.admonition):is(.admonish-bug) { border-color: #f50057; } -:is(.bug) > :is(.admonition-title, summary.admonition-title) { +:is(.admonish-bug) > :is(.admonition-title, summary.admonition-title) { background-color: rgba(245, 0, 87, 0.1); } -:is(.bug) > :is(.admonition-title, summary.admonition-title)::before { +:is(.admonish-bug) > :is(.admonition-title, summary.admonition-title)::before { background-color: #f50057; - mask-image: var(--md-admonition-icon--bug); - -webkit-mask-image: var(--md-admonition-icon--bug); + mask-image: var(--md-admonition-icon--admonish-bug); + -webkit-mask-image: var(--md-admonition-icon--admonish-bug); mask-repeat: no-repeat; -webkit-mask-repeat: no-repeat; mask-size: contain; -webkit-mask-repeat: no-repeat; } -:is(.admonition):is(.example) { +:is(.admonition):is(.admonish-example) { border-color: #7c4dff; } -:is(.example) > :is(.admonition-title, summary.admonition-title) { +:is(.admonish-example) > :is(.admonition-title, summary.admonition-title) { background-color: rgba(124, 77, 255, 0.1); } -:is(.example) > :is(.admonition-title, summary.admonition-title)::before { +:is(.admonish-example) > :is(.admonition-title, summary.admonition-title)::before { background-color: #7c4dff; - mask-image: var(--md-admonition-icon--example); - -webkit-mask-image: var(--md-admonition-icon--example); + mask-image: var(--md-admonition-icon--admonish-example); + -webkit-mask-image: var(--md-admonition-icon--admonish-example); mask-repeat: no-repeat; -webkit-mask-repeat: no-repeat; mask-size: contain; -webkit-mask-repeat: no-repeat; } -:is(.admonition):is(.quote, .cite) { +:is(.admonition):is(.admonish-quote, .admonish-cite) { border-color: #9e9e9e; } -:is(.quote, .cite) > :is(.admonition-title, summary.admonition-title) { +:is(.admonish-quote, .admonish-cite) > :is(.admonition-title, summary.admonition-title) { background-color: rgba(158, 158, 158, 0.1); } -:is(.quote, .cite) > :is(.admonition-title, summary.admonition-title)::before { +:is(.admonish-quote, .admonish-cite) > :is(.admonition-title, summary.admonition-title)::before { background-color: #9e9e9e; - mask-image: var(--md-admonition-icon--quote); - -webkit-mask-image: var(--md-admonition-icon--quote); + mask-image: var(--md-admonition-icon--admonish-quote); + -webkit-mask-image: var(--md-admonition-icon--admonish-quote); mask-repeat: no-repeat; -webkit-mask-repeat: no-repeat; mask-size: contain; @@ -340,7 +327,8 @@ details[open].admonition > summary.admonition-title::after { background-color: var(--sidebar-bg); } -.ayu :is(.admonition), .coal :is(.admonition) { +.ayu :is(.admonition), +.coal :is(.admonition) { background-color: var(--theme-hover); } From 7c2318a0968d25afc55d16155aa3448a39785704 Mon Sep 17 00:00:00 2001 From: Mark Sinclair Date: Wed, 11 Oct 2023 11:31:41 +0100 Subject: [PATCH 005/347] Release Typescript SDK v1.2.0 packages --- Cargo.lock | 10 +++++----- nym-browser-extension/storage/Cargo.toml | 2 +- nym-wallet/package.json | 2 +- sdk/typescript/codegen/contract-clients/package.json | 2 +- sdk/typescript/docs/package.json | 12 ++++++------ sdk/typescript/examples/chat-app/parcel/package.json | 2 +- .../examples/chat-app/plain-html/package.json | 2 +- .../react-webpack-with-theme-example/package.json | 2 +- .../examples/chrome-extension/package.json | 2 +- .../examples/firefox-extension/package.json | 2 +- .../examples/mix-fetch/browser/package.json | 2 +- .../examples/node-tester/parcel/package.json | 2 +- .../examples/node-tester/plain-html/package.json | 2 +- .../examples/node-tester/react/package.json | 2 +- .../packages/mix-fetch/internal-dev/package.json | 2 +- .../mix-fetch/internal-dev/parcel/package.json | 2 +- sdk/typescript/packages/mix-fetch/package.json | 6 +++--- sdk/typescript/packages/node-tester/package.json | 6 +++--- sdk/typescript/packages/sdk-react/package.json | 6 +++--- sdk/typescript/packages/sdk/package.json | 6 +++--- .../packages/validator-client/package.json | 2 +- wasm/client/Cargo.toml | 2 +- wasm/full-nym-wasm/Cargo.toml | 2 +- wasm/mix-fetch/Cargo.toml | 2 +- wasm/node-tester/Cargo.toml | 2 +- 25 files changed, 42 insertions(+), 42 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index d1f7a1a1e8..bddbffb553 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -2975,7 +2975,7 @@ dependencies = [ [[package]] name = "extension-storage" -version = "1.2.0-rc.10" +version = "1.2.0" dependencies = [ "bip39", "console_error_panic_hook", @@ -5517,7 +5517,7 @@ dependencies = [ [[package]] name = "mix-fetch-wasm" -version = "1.2.0-rc.10" +version = "1.2.0" dependencies = [ "futures", "js-sys", @@ -6213,7 +6213,7 @@ dependencies = [ [[package]] name = "nym-client-wasm" -version = "1.2.0-rc.10" +version = "1.2.0" dependencies = [ "anyhow", "futures", @@ -6832,7 +6832,7 @@ dependencies = [ [[package]] name = "nym-node-tester-wasm" -version = "1.2.0-rc.10" +version = "1.2.0" dependencies = [ "futures", "js-sys", @@ -7426,7 +7426,7 @@ dependencies = [ [[package]] name = "nym-wasm-sdk" -version = "1.2.0-rc.10" +version = "1.2.0" dependencies = [ "mix-fetch-wasm", "nym-client-wasm", diff --git a/nym-browser-extension/storage/Cargo.toml b/nym-browser-extension/storage/Cargo.toml index 3269922158..86ee9de5f9 100644 --- a/nym-browser-extension/storage/Cargo.toml +++ b/nym-browser-extension/storage/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "extension-storage" -version = "1.2.0-rc.10" +version = "1.2.0" edition = "2021" license = "Apache-2.0" repository = "https://github.com/nymtech/nym" diff --git a/nym-wallet/package.json b/nym-wallet/package.json index 3b8adf2284..274f4fa95b 100644 --- a/nym-wallet/package.json +++ b/nym-wallet/package.json @@ -31,7 +31,7 @@ "@nymproject/mui-theme": "^1.0.0", "@nymproject/react": "^1.0.0", "@nymproject/types": "^1.0.0", - "@nymproject/node-tester": ">=1.2.0-rc.8", + "@nymproject/node-tester": ">=1.2.0-rc.10 || ^1", "@storybook/react": "^6.5.15", "@tauri-apps/api": "^1.2.0", "@tauri-apps/tauri-forage": "^1.0.0-beta.2", diff --git a/sdk/typescript/codegen/contract-clients/package.json b/sdk/typescript/codegen/contract-clients/package.json index 432e907bcc..856942d621 100644 --- a/sdk/typescript/codegen/contract-clients/package.json +++ b/sdk/typescript/codegen/contract-clients/package.json @@ -1,6 +1,6 @@ { "name": "@nymproject/contract-clients", - "version": "1.2.0-rc.10", + "version": "1.2.0", "description": "A client for all Nym smart contracts", "license": "Apache-2.0", "author": "Nym Technologies SA", diff --git a/sdk/typescript/docs/package.json b/sdk/typescript/docs/package.json index 92f7edc8e6..0fcfab0d3d 100644 --- a/sdk/typescript/docs/package.json +++ b/sdk/typescript/docs/package.json @@ -1,6 +1,6 @@ { "name": "@nymproject/ts-sdk-docs", - "version": "1.2.0-rc.10", + "version": "1.2.0", "description": "Nym Typescript SDK Docs", "license": "Apache-2.0", "author": "Nym Technologies SA", @@ -28,10 +28,10 @@ "@mui/icons-material": "^5.14.9", "@mui/lab": "^5.0.0-alpha.145", "@mui/material": "^5.14.8", - "@nymproject/contract-clients": "^1.2.0-rc.9", - "@nymproject/mix-fetch": "^1.2.0-rc.9", - "@nymproject/mix-fetch-full-fat": "^1.2.0-rc.9", - "@nymproject/sdk-full-fat": "^1.2.0-rc.9", + "@nymproject/contract-clients": ">=1.2.0-rc.10 || ^1", + "@nymproject/mix-fetch": ">=1.2.0-rc.10 || ^1", + "@nymproject/mix-fetch-full-fat": ">=1.2.0-rc.10 || ^1", + "@nymproject/sdk-full-fat": ">=1.2.0-rc.10 || ^1", "chain-registry": "^1.19.0", "cosmjs-types": "^0.8.0", "next": "^13.4.19", @@ -51,4 +51,4 @@ "typescript": "^4.9.3" }, "private": false -} \ No newline at end of file +} diff --git a/sdk/typescript/examples/chat-app/parcel/package.json b/sdk/typescript/examples/chat-app/parcel/package.json index 4159cc023c..bf72e13983 100644 --- a/sdk/typescript/examples/chat-app/parcel/package.json +++ b/sdk/typescript/examples/chat-app/parcel/package.json @@ -6,7 +6,7 @@ "source": "src/index.html", "browserslist": "> 0.5%, last 2 versions, not dead", "dependencies": { - "@nymproject/sdk": "1.2.0-rc.1" + "@nymproject/sdk": ">=1.2.0-rc.10 || ^1" }, "devDependencies": { "@types/jest": "^27.0.1", diff --git a/sdk/typescript/examples/chat-app/plain-html/package.json b/sdk/typescript/examples/chat-app/plain-html/package.json index 31b37c2cb2..5e6774c951 100644 --- a/sdk/typescript/examples/chat-app/plain-html/package.json +++ b/sdk/typescript/examples/chat-app/plain-html/package.json @@ -4,7 +4,7 @@ "version": "1.0.0", "license": "Apache-2.0", "dependencies": { - "@nymproject/sdk": "1.2.0-rc.1" + "@nymproject/sdk": ">=1.2.0-rc.10 || ^1" }, "devDependencies": { "@babel/core": "^7.15.0", diff --git a/sdk/typescript/examples/chat-app/react-webpack-with-theme-example/package.json b/sdk/typescript/examples/chat-app/react-webpack-with-theme-example/package.json index 6c97cd50dc..47fedbf21d 100644 --- a/sdk/typescript/examples/chat-app/react-webpack-with-theme-example/package.json +++ b/sdk/typescript/examples/chat-app/react-webpack-with-theme-example/package.json @@ -9,7 +9,7 @@ "@mui/material": "^5.0.1", "@mui/styles": "^5.0.1", "react-mui-dropzone": "^4.0.6", - "@nymproject/sdk": "1.2.0-rc.1", + "@nymproject/sdk": ">=1.2.0-rc.10 || ^1", "react": "^18.2.0", "react-dom": "^18.2.0", "react-dropzone": "^14.2.3", diff --git a/sdk/typescript/examples/chrome-extension/package.json b/sdk/typescript/examples/chrome-extension/package.json index 6db0895ef4..507b9cdec8 100644 --- a/sdk/typescript/examples/chrome-extension/package.json +++ b/sdk/typescript/examples/chrome-extension/package.json @@ -15,6 +15,6 @@ "webpack-cli": "^5.1.4" }, "dependencies": { - "@nymproject/sdk": "1.2.0-rc.1" + "@nymproject/sdk": ">=1.2.0-rc.10 || ^1" } } diff --git a/sdk/typescript/examples/firefox-extension/package.json b/sdk/typescript/examples/firefox-extension/package.json index 8113b5b123..1d14e425a5 100644 --- a/sdk/typescript/examples/firefox-extension/package.json +++ b/sdk/typescript/examples/firefox-extension/package.json @@ -15,6 +15,6 @@ "build": "yarn webpack" }, "dependencies": { - "@nymproject/sdk": "1.2.0-rc.1" + "@nymproject/sdk": ">=1.2.0-rc.10 || ^1" } } diff --git a/sdk/typescript/examples/mix-fetch/browser/package.json b/sdk/typescript/examples/mix-fetch/browser/package.json index 7d6f737298..1ec0e2d6c6 100644 --- a/sdk/typescript/examples/mix-fetch/browser/package.json +++ b/sdk/typescript/examples/mix-fetch/browser/package.json @@ -5,7 +5,7 @@ "source": "src/index.html", "dependencies": { "parcel": "^2.9.3", - "@nymproject/mix-fetch": ">=1.2.0-rc.7 || ^1" + "@nymproject/mix-fetch": ">=1.2.0-rc.10 || ^1" }, "scripts": { "start": "parcel --no-cache", diff --git a/sdk/typescript/examples/node-tester/parcel/package.json b/sdk/typescript/examples/node-tester/parcel/package.json index 61750e513c..905b3747eb 100644 --- a/sdk/typescript/examples/node-tester/parcel/package.json +++ b/sdk/typescript/examples/node-tester/parcel/package.json @@ -6,7 +6,7 @@ "source": "src/index.html", "browserslist": "> 0.5%, last 2 versions, not dead", "dependencies": { - "@nymproject/sdk": "1.2.0-rc.1" + "@nymproject/sdk": ">=1.2.0-rc.10 || ^1" }, "devDependencies": { "@types/jest": "^27.0.1", diff --git a/sdk/typescript/examples/node-tester/plain-html/package.json b/sdk/typescript/examples/node-tester/plain-html/package.json index 4dd3603ab4..225060d813 100644 --- a/sdk/typescript/examples/node-tester/plain-html/package.json +++ b/sdk/typescript/examples/node-tester/plain-html/package.json @@ -4,7 +4,7 @@ "version": "1.0.0", "license": "Apache-2.0", "dependencies": { - "@nymproject/sdk": "1.2.0-rc.1" + "@nymproject/sdk": ">=1.2.0-rc.10 || ^1" }, "devDependencies": { "@babel/core": "^7.15.0", diff --git a/sdk/typescript/examples/node-tester/react/package.json b/sdk/typescript/examples/node-tester/react/package.json index 57d8a58ca0..e07e69ad32 100644 --- a/sdk/typescript/examples/node-tester/react/package.json +++ b/sdk/typescript/examples/node-tester/react/package.json @@ -8,7 +8,7 @@ "@emotion/styled": "^11.11.0", "@mui/icons-material": "^5.14.0", "@mui/material": "^5.14.0", - "@nymproject/sdk": "1.2.0-rc.1", + "@nymproject/sdk": ">=1.2.0-rc.10 || ^1", "parcel": "^2.9.3", "react": "^18.2.0", "react-dom": "^18.2.0" diff --git a/sdk/typescript/packages/mix-fetch/internal-dev/package.json b/sdk/typescript/packages/mix-fetch/internal-dev/package.json index 6ea459f549..18d4c82220 100644 --- a/sdk/typescript/packages/mix-fetch/internal-dev/package.json +++ b/sdk/typescript/packages/mix-fetch/internal-dev/package.json @@ -3,7 +3,7 @@ "version": "1.0.0", "license": "Apache-2.0", "dependencies": { - "@nymproject/mix-fetch": ">=1.2.0-rc.7 || ^1" + "@nymproject/mix-fetch": ">=1.2.0-rc.10 || ^1" }, "devDependencies": { "@babel/core": "^7.22.10", diff --git a/sdk/typescript/packages/mix-fetch/internal-dev/parcel/package.json b/sdk/typescript/packages/mix-fetch/internal-dev/parcel/package.json index 886012198e..1983ca9c06 100644 --- a/sdk/typescript/packages/mix-fetch/internal-dev/parcel/package.json +++ b/sdk/typescript/packages/mix-fetch/internal-dev/parcel/package.json @@ -4,7 +4,7 @@ "license": "Apache-2.0", "source": "../src/index.html", "dependencies": { - "@nymproject/mix-fetch": ">=1.2.0-rc.7 || ^1" + "@nymproject/mix-fetch": ">=1.2.0-rc.10 || ^1" }, "scripts": { "start": "npx parcel --no-cache", diff --git a/sdk/typescript/packages/mix-fetch/package.json b/sdk/typescript/packages/mix-fetch/package.json index 20376bd9a8..a5350b9012 100644 --- a/sdk/typescript/packages/mix-fetch/package.json +++ b/sdk/typescript/packages/mix-fetch/package.json @@ -1,6 +1,6 @@ { "name": "@nymproject/mix-fetch", - "version": "1.2.0-rc.10", + "version": "1.2.0", "description": "This package is a drop-in replacement for `fetch` to send HTTP requests over the Nym Mixnet.", "license": "Apache-2.0", "author": "Nym Technologies SA", @@ -33,7 +33,7 @@ "tsc": "tsc --noEmit true" }, "dependencies": { - "@nymproject/mix-fetch-wasm": ">=1.2.0-rc.7 || 1", + "@nymproject/mix-fetch-wasm": ">=1.2.0-rc.10 || ^1", "comlink": "^4.3.1" }, "devDependencies": { @@ -81,4 +81,4 @@ "private": false, "type": "module", "types": "./dist/esm/index.d.ts" -} \ No newline at end of file +} diff --git a/sdk/typescript/packages/node-tester/package.json b/sdk/typescript/packages/node-tester/package.json index 6d8002fbfd..f01028da1f 100644 --- a/sdk/typescript/packages/node-tester/package.json +++ b/sdk/typescript/packages/node-tester/package.json @@ -1,6 +1,6 @@ { "name": "@nymproject/node-tester", - "version": "1.2.0-rc.10", + "version": "1.2.0", "description": "This package provides a tester that can send test packets to mixnode that is part of the Nym Mixnet.", "license": "Apache-2.0", "author": "Nym Technologies SA", @@ -25,7 +25,7 @@ "tsc": "tsc --noEmit true" }, "dependencies": { - "@nymproject/nym-node-tester-wasm": ">=1.2.0-rc.7 || ^1", + "@nymproject/nym-node-tester-wasm": ">=1.2.0-rc.10 || ^1", "comlink": "^4.3.1" }, "devDependencies": { @@ -71,4 +71,4 @@ "private": false, "type": "module", "types": "./dist/esm/index.d.ts" -} \ No newline at end of file +} diff --git a/sdk/typescript/packages/sdk-react/package.json b/sdk/typescript/packages/sdk-react/package.json index 62c74e82c2..aa298a5a9d 100644 --- a/sdk/typescript/packages/sdk-react/package.json +++ b/sdk/typescript/packages/sdk-react/package.json @@ -1,6 +1,6 @@ { "name": "@nymproject/sdk-react", - "version": "1.2.0-rc.10", + "version": "1.2.0", "license": "Apache-2.0", "author": "Nym Technologies SA", "files": [ @@ -20,7 +20,7 @@ "tsc": "tsc --noEmit true" }, "dependencies": { - "@nymproject/sdk": ">=1.2.0-rc.7 || ^1" + "@nymproject/sdk": ">=1.2.0-rc.10 || ^1" }, "devDependencies": { "@babel/core": "^7.17.5", @@ -67,4 +67,4 @@ "private": false, "type": "module", "types": "./dist/index.d.ts" -} \ No newline at end of file +} diff --git a/sdk/typescript/packages/sdk/package.json b/sdk/typescript/packages/sdk/package.json index f4029e3b9d..62102504ac 100644 --- a/sdk/typescript/packages/sdk/package.json +++ b/sdk/typescript/packages/sdk/package.json @@ -1,6 +1,6 @@ { "name": "@nymproject/sdk", - "version": "1.2.0-rc.10", + "version": "1.2.0", "license": "Apache-2.0", "author": "Nym Technologies SA", "files": [ @@ -30,7 +30,7 @@ "tsc": "tsc --noEmit true" }, "dependencies": { - "@nymproject/nym-client-wasm": ">=1.2.0-rc.7 || ^1", + "@nymproject/nym-client-wasm": ">=1.2.0-rc.10 || ^1", "comlink": "^4.3.1" }, "devDependencies": { @@ -80,4 +80,4 @@ "private": false, "type": "module", "types": "./dist/esm/index.d.ts" -} \ No newline at end of file +} diff --git a/sdk/typescript/packages/validator-client/package.json b/sdk/typescript/packages/validator-client/package.json index bf7ea365b4..062aee2bca 100644 --- a/sdk/typescript/packages/validator-client/package.json +++ b/sdk/typescript/packages/validator-client/package.json @@ -1,6 +1,6 @@ { "name": "@nymproject/nym-validator-client", - "version": "1.2.0-rc.10", + "version": "1.2.0", "description": "A TypeScript client for interacting with smart contracts in Nym validators", "license": "Apache-2.0", "author": "Nym Technologies SA (https://nymtech.net)", diff --git a/wasm/client/Cargo.toml b/wasm/client/Cargo.toml index ec8d1769bb..5b8dda73da 100644 --- a/wasm/client/Cargo.toml +++ b/wasm/client/Cargo.toml @@ -1,7 +1,7 @@ [package] name = "nym-client-wasm" authors = ["Dave Hrycyszyn ", "Jedrzej Stuczynski "] -version = "1.2.0-rc.10" +version = "1.2.0" edition = "2021" keywords = ["nym", "sphinx", "wasm", "webassembly", "privacy", "client"] license = "Apache-2.0" diff --git a/wasm/full-nym-wasm/Cargo.toml b/wasm/full-nym-wasm/Cargo.toml index c2570602bb..d2cd98d808 100644 --- a/wasm/full-nym-wasm/Cargo.toml +++ b/wasm/full-nym-wasm/Cargo.toml @@ -1,7 +1,7 @@ [package] name = "nym-wasm-sdk" authors = ["Jedrzej Stuczynski "] -version = "1.2.0-rc.10" +version = "1.2.0" edition = "2021" keywords = ["nym", "sphinx", "wasm", "webassembly", "privacy"] license = "Apache-2.0" diff --git a/wasm/mix-fetch/Cargo.toml b/wasm/mix-fetch/Cargo.toml index da79e729bb..957fcde528 100644 --- a/wasm/mix-fetch/Cargo.toml +++ b/wasm/mix-fetch/Cargo.toml @@ -1,7 +1,7 @@ [package] name = "mix-fetch-wasm" authors = ["Jedrzej Stuczynski "] -version = "1.2.0-rc.10" +version = "1.2.0" edition = "2021" keywords = ["nym", "fetch", "wasm", "webassembly", "privacy"] license = "Apache-2.0" diff --git a/wasm/node-tester/Cargo.toml b/wasm/node-tester/Cargo.toml index 9141662578..7c75e6c9b1 100644 --- a/wasm/node-tester/Cargo.toml +++ b/wasm/node-tester/Cargo.toml @@ -1,7 +1,7 @@ [package] name = "nym-node-tester-wasm" authors = ["Jedrzej Stuczynski "] -version = "1.2.0-rc.10" +version = "1.2.0" edition = "2021" keywords = ["nym", "sphinx", "webassembly", "privacy", "tester"] license = "Apache-2.0" From 42836b3e0eec0ffc0398d6d4910cf3762960d9e1 Mon Sep 17 00:00:00 2001 From: Mark Sinclair Date: Wed, 11 Oct 2023 14:57:57 +0100 Subject: [PATCH 006/347] Add packages to version bumper internal tool --- tools/internal/sdk-version-bump/src/main.rs | 19 ++++++++++++++----- 1 file changed, 14 insertions(+), 5 deletions(-) diff --git a/tools/internal/sdk-version-bump/src/main.rs b/tools/internal/sdk-version-bump/src/main.rs index 8ff338a2b7..e6472ca676 100644 --- a/tools/internal/sdk-version-bump/src/main.rs +++ b/tools/internal/sdk-version-bump/src/main.rs @@ -174,15 +174,24 @@ fn initialise_internal_packages>(root: P) -> InternalPackages { packages.register_cargo("nym-browser-extension/storage"); // js packages that will have their package.json modified + packages.register_json("nym-wallet"); + packages.register_json("sdk/typescript/docs"); + packages.register_json("sdk/typescript/examples/chat-app/parcel"); + packages.register_json("sdk/typescript/examples/chat-app/plain-html"); + packages.register_json("sdk/typescript/examples/chat-app/react-webpack-with-theme-example"); + packages.register_json("sdk/typescript/examples/chrome-extension"); + packages.register_json("sdk/typescript/examples/firefox-extension"); + packages.register_json("sdk/typescript/examples/mix-fetch/browser"); + packages.register_json("sdk/typescript/examples/node-tester/parcel"); + packages.register_json("sdk/typescript/examples/node-tester/plain-html"); + packages.register_json("sdk/typescript/examples/node-tester/react"); packages.register_json("sdk/typescript/packages/mix-fetch"); - packages.register_json("sdk/typescript/packages/mui-theme"); + packages.register_json("sdk/typescript/packages/mix-fetch/internal-dev"); + packages.register_json("sdk/typescript/packages/mix-fetch/internal-dev/parcel"); packages.register_json("sdk/typescript/packages/node-tester"); - packages.register_json("sdk/typescript/packages/react-components"); + packages.register_json("sdk/typescript/packages/nodejs-client"); packages.register_json("sdk/typescript/packages/sdk"); packages.register_json("sdk/typescript/packages/sdk-react"); - packages.register_json("sdk/typescript/packages/validator-client"); - packages.register_json("sdk/typescript/codegen/contract-clients"); - packages.register_json("sdk/typescript/docs"); // dependencies that will have their versions adjusted in the above packages packages.register_known_js_dependency("@nymproject/mix-fetch"); From 445f3b0adbea0610356b5e49c7093dfb04d7776f Mon Sep 17 00:00:00 2001 From: Mark Sinclair Date: Wed, 11 Oct 2023 14:58:14 +0100 Subject: [PATCH 007/347] Update lock file --- nym-wallet/Cargo.lock | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/nym-wallet/Cargo.lock b/nym-wallet/Cargo.lock index b00fed546d..d53f3a54a5 100644 --- a/nym-wallet/Cargo.lock +++ b/nym-wallet/Cargo.lock @@ -3512,7 +3512,7 @@ dependencies = [ [[package]] name = "nym_wallet" -version = "1.2.8" +version = "1.2.9" dependencies = [ "async-trait", "base64 0.13.1", From 70f5d476f2841b0b304adb6136ce62f6a416bbb1 Mon Sep 17 00:00:00 2001 From: Mark Sinclair Date: Wed, 11 Oct 2023 14:58:44 +0100 Subject: [PATCH 008/347] Tidy up package.json workspace to prefer packages from `npm` --- package.json | 7 +- yarn.lock | 1509 ++------------------------------------------------ 2 files changed, 54 insertions(+), 1462 deletions(-) diff --git a/package.json b/package.json index de7428d0d5..634c8512b8 100644 --- a/package.json +++ b/package.json @@ -6,7 +6,10 @@ "workspaces": [ "dist/wasm/**", "dist/node/**", - "sdk/typescript/packages/**", + "dist/ts/**", + "sdk/typescript/packages/mui-theme", + "sdk/typescript/packages/react-components", + "sdk/typescript/packages/validator-client", "ts-packages/*", "nym-wallet", "nym-connect/**", @@ -16,6 +19,7 @@ ], "scripts": { "nuke": "npx rimraf **/node_modules node_modules", + "scrub": "npx rimraf **/dist dist", "clean": "lerna run clean", "build:ci:sdk": "run-s build:types build:packages build:wasm build:sdk:ci", @@ -23,7 +27,6 @@ "build": "run-s build:types build:packages", "build:wasm": "make sdk-wasm-build", - "build:sdk": "make sdk-typescript-build", "build:types": "lerna run --scope @nymproject/types build --stream", "build:packages": "run-s build:packages:theme build:packages:react", "build:packages:theme": "lerna run --scope @nymproject/mui-theme build", diff --git a/yarn.lock b/yarn.lock index 024fb6dd07..ddca2a499d 100644 --- a/yarn.lock +++ b/yarn.lock @@ -62,7 +62,7 @@ semver "^5.4.1" source-map "^0.5.0" -"@babel/core@^7.1.0", "@babel/core@^7.11.6", "@babel/core@^7.12.10", "@babel/core@^7.12.3", "@babel/core@^7.15.0", "@babel/core@^7.17.5", "@babel/core@^7.19.6", "@babel/core@^7.22.10", "@babel/core@^7.7.2", "@babel/core@^7.7.5", "@babel/core@^7.8.0": +"@babel/core@^7.1.0", "@babel/core@^7.12.10", "@babel/core@^7.12.3", "@babel/core@^7.15.0", "@babel/core@^7.17.5", "@babel/core@^7.19.6", "@babel/core@^7.7.2", "@babel/core@^7.7.5", "@babel/core@^7.8.0": version "7.22.17" resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.22.17.tgz#2f9b0b395985967203514b24ee50f9fd0639c866" integrity sha512-2EENLmhpwplDux5PSsZnSbnSkB3tZ6QTksgO25xwEL7pIDcNOMhF5v/s6RzwjMZzZzw9Ofc30gHv5ChCC8pifQ== @@ -516,7 +516,7 @@ dependencies: "@babel/helper-plugin-utils" "^7.10.4" -"@babel/plugin-syntax-jsx@^7.22.5", "@babel/plugin-syntax-jsx@^7.7.2": +"@babel/plugin-syntax-jsx@^7.22.5": version "7.22.5" resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.22.5.tgz#a6b68e84fb76e759fc3b93e901876ffabbe1d918" integrity sha512-gvyP4hZrgrs/wWMaocvxZ44Hw0b3W8Pe+cMxc8V1ULQ07oh8VNbIRaoD1LRZVTvD+0nieDKjfgKg89sD7rrKrg== @@ -1040,7 +1040,7 @@ "@babel/helper-create-regexp-features-plugin" "^7.22.5" "@babel/helper-plugin-utils" "^7.22.5" -"@babel/preset-env@^7.12.11", "@babel/preset-env@^7.15.0", "@babel/preset-env@^7.19.4", "@babel/preset-env@^7.22.10": +"@babel/preset-env@^7.12.11", "@babel/preset-env@^7.15.0", "@babel/preset-env@^7.19.4": version "7.22.15" resolved "https://registry.yarnpkg.com/@babel/preset-env/-/preset-env-7.22.15.tgz#142716f8e00bc030dae5b2ac6a46fbd8b3e18ff8" integrity sha512-tZFHr54GBkHk6hQuVA8w4Fmq+MSPsfvMG0vPnOYyTnJpyfMqybL8/MbNCPRT9zc2KBO2pe4tq15g6Uno4Jpoag== @@ -1156,7 +1156,7 @@ "@babel/plugin-transform-react-jsx-development" "^7.22.5" "@babel/plugin-transform-react-pure-annotations" "^7.22.5" -"@babel/preset-typescript@^7.12.7", "@babel/preset-typescript@^7.15.0", "@babel/preset-typescript@^7.18.6", "@babel/preset-typescript@^7.22.5": +"@babel/preset-typescript@^7.12.7", "@babel/preset-typescript@^7.15.0", "@babel/preset-typescript@^7.18.6": version "7.22.15" resolved "https://registry.yarnpkg.com/@babel/preset-typescript/-/preset-typescript-7.22.15.tgz#43db30516fae1d417d748105a0bc95f637239d48" integrity sha512-HblhNmh6yM+cU4VwbBRpxFhxsTdfS1zsvH9W+gEjD0ARV9+8B4sNfpI6GuhePti84nuvhiwKS539jKPFHskA9A== @@ -1899,18 +1899,6 @@ jest-util "^27.5.1" slash "^3.0.0" -"@jest/console@^29.7.0": - version "29.7.0" - resolved "https://registry.yarnpkg.com/@jest/console/-/console-29.7.0.tgz#cd4822dbdb84529265c5a2bdb529a3c9cc950ffc" - integrity sha512-5Ni4CU7XHQi32IJ398EEP4RrB8eV09sXP2ROqD4bksHrnTree52PsxvX8tpL8LvTZ3pFzXyPbNQReSN41CAhOg== - dependencies: - "@jest/types" "^29.6.3" - "@types/node" "*" - chalk "^4.0.0" - jest-message-util "^29.7.0" - jest-util "^29.7.0" - slash "^3.0.0" - "@jest/core@^27.5.1": version "27.5.1" resolved "https://registry.yarnpkg.com/@jest/core/-/core-27.5.1.tgz#267ac5f704e09dc52de2922cbf3af9edcd64b626" @@ -1945,40 +1933,6 @@ slash "^3.0.0" strip-ansi "^6.0.0" -"@jest/core@^29.7.0": - version "29.7.0" - resolved "https://registry.yarnpkg.com/@jest/core/-/core-29.7.0.tgz#b6cccc239f30ff36609658c5a5e2291757ce448f" - integrity sha512-n7aeXWKMnGtDA48y8TLWJPJmLmmZ642Ceo78cYWEpiD7FzDgmNDV/GCVRorPABdXLJZ/9wzzgZAlHjXjxDHGsg== - dependencies: - "@jest/console" "^29.7.0" - "@jest/reporters" "^29.7.0" - "@jest/test-result" "^29.7.0" - "@jest/transform" "^29.7.0" - "@jest/types" "^29.6.3" - "@types/node" "*" - ansi-escapes "^4.2.1" - chalk "^4.0.0" - ci-info "^3.2.0" - exit "^0.1.2" - graceful-fs "^4.2.9" - jest-changed-files "^29.7.0" - jest-config "^29.7.0" - jest-haste-map "^29.7.0" - jest-message-util "^29.7.0" - jest-regex-util "^29.6.3" - jest-resolve "^29.7.0" - jest-resolve-dependencies "^29.7.0" - jest-runner "^29.7.0" - jest-runtime "^29.7.0" - jest-snapshot "^29.7.0" - jest-util "^29.7.0" - jest-validate "^29.7.0" - jest-watcher "^29.7.0" - micromatch "^4.0.4" - pretty-format "^29.7.0" - slash "^3.0.0" - strip-ansi "^6.0.0" - "@jest/environment@^27.5.1": version "27.5.1" resolved "https://registry.yarnpkg.com/@jest/environment/-/environment-27.5.1.tgz#d7425820511fe7158abbecc010140c3fd3be9c74" @@ -1989,16 +1943,6 @@ "@types/node" "*" jest-mock "^27.5.1" -"@jest/environment@^29.7.0": - version "29.7.0" - resolved "https://registry.yarnpkg.com/@jest/environment/-/environment-29.7.0.tgz#24d61f54ff1f786f3cd4073b4b94416383baf2a7" - integrity sha512-aQIfHDq33ExsN4jP1NWGXhxgQ/wixs60gDiKO+XVMd8Mn0NWPWgc34ZQDTb2jKaUWQ7MuwoitXAsN2XVXNMpAw== - dependencies: - "@jest/fake-timers" "^29.7.0" - "@jest/types" "^29.6.3" - "@types/node" "*" - jest-mock "^29.7.0" - "@jest/expect-utils@^28.1.3": version "28.1.3" resolved "https://registry.yarnpkg.com/@jest/expect-utils/-/expect-utils-28.1.3.tgz#58561ce5db7cd253a7edddbc051fb39dda50f525" @@ -2013,14 +1957,6 @@ dependencies: jest-get-type "^29.6.3" -"@jest/expect@^29.7.0": - version "29.7.0" - resolved "https://registry.yarnpkg.com/@jest/expect/-/expect-29.7.0.tgz#76a3edb0cb753b70dfbfe23283510d3d45432bf2" - integrity sha512-8uMeAMycttpva3P1lBHB8VciS9V0XAr3GymPpipdyQXbBcuhkLQOSe8E/p92RyAdToS6ZD1tFkX+CkhoECE0dQ== - dependencies: - expect "^29.7.0" - jest-snapshot "^29.7.0" - "@jest/fake-timers@^27.5.1": version "27.5.1" resolved "https://registry.yarnpkg.com/@jest/fake-timers/-/fake-timers-27.5.1.tgz#76979745ce0579c8a94a4678af7a748eda8ada74" @@ -2033,18 +1969,6 @@ jest-mock "^27.5.1" jest-util "^27.5.1" -"@jest/fake-timers@^29.7.0": - version "29.7.0" - resolved "https://registry.yarnpkg.com/@jest/fake-timers/-/fake-timers-29.7.0.tgz#fd91bf1fffb16d7d0d24a426ab1a47a49881a565" - integrity sha512-q4DH1Ha4TTFPdxLsqDXK1d3+ioSL7yL5oCMJZgDYm6i+6CygW5E5xVr/D1HdsGxjt1ZWSfUAs9OxSB/BNelWrQ== - dependencies: - "@jest/types" "^29.6.3" - "@sinonjs/fake-timers" "^10.0.2" - "@types/node" "*" - jest-message-util "^29.7.0" - jest-mock "^29.7.0" - jest-util "^29.7.0" - "@jest/globals@^27.5.1": version "27.5.1" resolved "https://registry.yarnpkg.com/@jest/globals/-/globals-27.5.1.tgz#7ac06ce57ab966566c7963431cef458434601b2b" @@ -2054,16 +1978,6 @@ "@jest/types" "^27.5.1" expect "^27.5.1" -"@jest/globals@^29.7.0": - version "29.7.0" - resolved "https://registry.yarnpkg.com/@jest/globals/-/globals-29.7.0.tgz#8d9290f9ec47ff772607fa864ca1d5a2efae1d4d" - integrity sha512-mpiz3dutLbkW2MNFubUGUEVLkTGiqW6yLVTA+JbP6fI6J5iL9Y0Nlg8k95pcF8ctKwCS7WVxteBs29hhfAotzQ== - dependencies: - "@jest/environment" "^29.7.0" - "@jest/expect" "^29.7.0" - "@jest/types" "^29.6.3" - jest-mock "^29.7.0" - "@jest/reporters@^27.5.1": version "27.5.1" resolved "https://registry.yarnpkg.com/@jest/reporters/-/reporters-27.5.1.tgz#ceda7be96170b03c923c37987b64015812ffec04" @@ -2095,36 +2009,6 @@ terminal-link "^2.0.0" v8-to-istanbul "^8.1.0" -"@jest/reporters@^29.7.0": - version "29.7.0" - resolved "https://registry.yarnpkg.com/@jest/reporters/-/reporters-29.7.0.tgz#04b262ecb3b8faa83b0b3d321623972393e8f4c7" - integrity sha512-DApq0KJbJOEzAFYjHADNNxAE3KbhxQB1y5Kplb5Waqw6zVbuWatSnMjE5gs8FUgEPmNsnZA3NCWl9NG0ia04Pg== - dependencies: - "@bcoe/v8-coverage" "^0.2.3" - "@jest/console" "^29.7.0" - "@jest/test-result" "^29.7.0" - "@jest/transform" "^29.7.0" - "@jest/types" "^29.6.3" - "@jridgewell/trace-mapping" "^0.3.18" - "@types/node" "*" - chalk "^4.0.0" - collect-v8-coverage "^1.0.0" - exit "^0.1.2" - glob "^7.1.3" - graceful-fs "^4.2.9" - istanbul-lib-coverage "^3.0.0" - istanbul-lib-instrument "^6.0.0" - istanbul-lib-report "^3.0.0" - istanbul-lib-source-maps "^4.0.0" - istanbul-reports "^3.1.3" - jest-message-util "^29.7.0" - jest-util "^29.7.0" - jest-worker "^29.7.0" - slash "^3.0.0" - string-length "^4.0.1" - strip-ansi "^6.0.0" - v8-to-istanbul "^9.0.1" - "@jest/schemas@^28.1.3": version "28.1.3" resolved "https://registry.yarnpkg.com/@jest/schemas/-/schemas-28.1.3.tgz#ad8b86a66f11f33619e3d7e1dcddd7f2d40ff905" @@ -2148,15 +2032,6 @@ graceful-fs "^4.2.9" source-map "^0.6.0" -"@jest/source-map@^29.6.3": - version "29.6.3" - resolved "https://registry.yarnpkg.com/@jest/source-map/-/source-map-29.6.3.tgz#d90ba772095cf37a34a5eb9413f1b562a08554c4" - integrity sha512-MHjT95QuipcPrpLM+8JMSzFx6eHp5Bm+4XeFDJlwsvVBjmKNiIAvasGK2fxz2WbGRlnvqehFbh07MMa7n3YJnw== - dependencies: - "@jridgewell/trace-mapping" "^0.3.18" - callsites "^3.0.0" - graceful-fs "^4.2.9" - "@jest/test-result@^27.5.1": version "27.5.1" resolved "https://registry.yarnpkg.com/@jest/test-result/-/test-result-27.5.1.tgz#56a6585fa80f7cdab72b8c5fc2e871d03832f5bb" @@ -2167,16 +2042,6 @@ "@types/istanbul-lib-coverage" "^2.0.0" collect-v8-coverage "^1.0.0" -"@jest/test-result@^29.7.0": - version "29.7.0" - resolved "https://registry.yarnpkg.com/@jest/test-result/-/test-result-29.7.0.tgz#8db9a80aa1a097bb2262572686734baed9b1657c" - integrity sha512-Fdx+tv6x1zlkJPcWXmMDAG2HBnaR9XPSd5aDWQVsfrZmLVT3lU1cwyxLgRmXR9yrq4NBoEm9BMsfgFzTQAbJYA== - dependencies: - "@jest/console" "^29.7.0" - "@jest/types" "^29.6.3" - "@types/istanbul-lib-coverage" "^2.0.0" - collect-v8-coverage "^1.0.0" - "@jest/test-sequencer@^27.5.1": version "27.5.1" resolved "https://registry.yarnpkg.com/@jest/test-sequencer/-/test-sequencer-27.5.1.tgz#4057e0e9cea4439e544c6353c6affe58d095745b" @@ -2187,16 +2052,6 @@ jest-haste-map "^27.5.1" jest-runtime "^27.5.1" -"@jest/test-sequencer@^29.7.0": - version "29.7.0" - resolved "https://registry.yarnpkg.com/@jest/test-sequencer/-/test-sequencer-29.7.0.tgz#6cef977ce1d39834a3aea887a1726628a6f072ce" - integrity sha512-GQwJ5WZVrKnOJuiYiAF52UNUJXgTZx1NHjFSEB0qEMmSZKAkdMoIzw/Cj6x6NF4AvV23AUqDpFzQkN/eYCYTxw== - dependencies: - "@jest/test-result" "^29.7.0" - graceful-fs "^4.2.9" - jest-haste-map "^29.7.0" - slash "^3.0.0" - "@jest/transform@^26.6.2": version "26.6.2" resolved "https://registry.yarnpkg.com/@jest/transform/-/transform-26.6.2.tgz#5ac57c5fa1ad17b2aae83e73e45813894dcf2e4b" @@ -2239,27 +2094,6 @@ source-map "^0.6.1" write-file-atomic "^3.0.0" -"@jest/transform@^29.7.0": - version "29.7.0" - resolved "https://registry.yarnpkg.com/@jest/transform/-/transform-29.7.0.tgz#df2dd9c346c7d7768b8a06639994640c642e284c" - integrity sha512-ok/BTPFzFKVMwO5eOHRrvnBVHdRy9IrsrW1GpMaQ9MCnilNLXQKmAX8s1YXDFaai9xJpac2ySzV0YeRRECr2Vw== - dependencies: - "@babel/core" "^7.11.6" - "@jest/types" "^29.6.3" - "@jridgewell/trace-mapping" "^0.3.18" - babel-plugin-istanbul "^6.1.1" - chalk "^4.0.0" - convert-source-map "^2.0.0" - fast-json-stable-stringify "^2.1.0" - graceful-fs "^4.2.9" - jest-haste-map "^29.7.0" - jest-regex-util "^29.6.3" - jest-util "^29.7.0" - micromatch "^4.0.4" - pirates "^4.0.4" - slash "^3.0.0" - write-file-atomic "^4.0.2" - "@jest/types@^26.6.2": version "26.6.2" resolved "https://registry.yarnpkg.com/@jest/types/-/types-26.6.2.tgz#bef5a532030e1d88a2f5a6d933f84e97226ed48e" @@ -2346,7 +2180,7 @@ "@jridgewell/resolve-uri" "^3.0.3" "@jridgewell/sourcemap-codec" "^1.4.10" -"@jridgewell/trace-mapping@^0.3.12", "@jridgewell/trace-mapping@^0.3.17", "@jridgewell/trace-mapping@^0.3.18", "@jridgewell/trace-mapping@^0.3.9": +"@jridgewell/trace-mapping@^0.3.12", "@jridgewell/trace-mapping@^0.3.17", "@jridgewell/trace-mapping@^0.3.9": version "0.3.19" resolved "https://registry.yarnpkg.com/@jridgewell/trace-mapping/-/trace-mapping-0.3.19.tgz#f8a3249862f91be48d3127c3cfe992f79b4b8811" integrity sha512-kf37QtfW+Hwx/buWGMPcR60iF9ziHa6r/CZJIHbmcm4+0qrXiVdxegAH0F6yddEVQ7zdkjcGCgCzUu+BcbhQxw== @@ -2844,6 +2678,11 @@ resolved "https://registry.yarnpkg.com/@nx/nx-win32-x64-msvc/-/nx-win32-x64-msvc-16.8.1.tgz#6ec1930aaf4d9dea19149d6b3d100b2c7e69d582" integrity sha512-yHZ5FAcx54rVc31R0yIpniepkHMPwaxG23l8E/ZYbL1iPwE/Wc1HeUzUvxUuSXtguRp7ihcRhaUEPkcSl2EAVw== +"@nymproject/node-tester@>=1.2.0-rc.10 || ^1": + version "1.2.0" + resolved "https://registry.yarnpkg.com/@nymproject/node-tester/-/node-tester-1.2.0.tgz#c611c1f3455787cd464ccc09b0f10ed98f6c30e9" + integrity sha512-QR6zHt/FytEMQCLnRt4wHrBqd/hRQjk43/whTn8mgNbzNdSjGNe0IomR2Iz45ZW+ei0k4Z5FgHEK4GhllJULiQ== + "@nymproject/nym-validator-client@^0.18.0": version "0.18.0" resolved "https://registry.yarnpkg.com/@nymproject/nym-validator-client/-/nym-validator-client-0.18.0.tgz#4dd72bafdf6c72b603242f32c0bb9a1f9e475b98" @@ -3074,15 +2913,6 @@ is-reference "1.2.1" magic-string "^0.27.0" -"@rollup/plugin-inject@^5.0.3": - version "5.0.3" - resolved "https://registry.yarnpkg.com/@rollup/plugin-inject/-/plugin-inject-5.0.3.tgz#0783711efd93a9547d52971db73b2fb6140a67b1" - integrity sha512-411QlbL+z2yXpRWFXSmw/teQRMkXcAAC8aYTemc15gwJRpvEVDQwoe+N/HTFD8RFG8+88Bme9DK2V9CVm7hJdA== - dependencies: - "@rollup/pluginutils" "^5.0.1" - estree-walker "^2.0.2" - magic-string "^0.27.0" - "@rollup/plugin-json@^6.0.0": version "6.0.0" resolved "https://registry.yarnpkg.com/@rollup/plugin-json/-/plugin-json-6.0.0.tgz#199fea6670fd4dfb1f4932250569b14719db234a" @@ -3102,31 +2932,6 @@ is-module "^1.0.0" resolve "^1.22.1" -"@rollup/plugin-replace@^5.0.2": - version "5.0.2" - resolved "https://registry.yarnpkg.com/@rollup/plugin-replace/-/plugin-replace-5.0.2.tgz#45f53501b16311feded2485e98419acb8448c61d" - integrity sha512-M9YXNekv/C/iHHK+cvORzfRYfPbq0RDD8r0G+bMiTXjNGKulPnCT9O3Ss46WfhI6ZOCgApOP7xAdmCQJ+U2LAA== - dependencies: - "@rollup/pluginutils" "^5.0.1" - magic-string "^0.27.0" - -"@rollup/plugin-terser@^0.2.1": - version "0.2.1" - resolved "https://registry.yarnpkg.com/@rollup/plugin-terser/-/plugin-terser-0.2.1.tgz#dcf0b163216dafb64611b170a7667e76a7f03d2b" - integrity sha512-hV52c8Oo6/cXZZxVVoRNBb4zh+EKSHS4I1sedWV5pf0O+hTLSkrf6w86/V0AZutYtwBguB6HLKwz89WDBfwGOA== - dependencies: - serialize-javascript "^6.0.0" - smob "^0.0.6" - terser "^5.15.1" - -"@rollup/plugin-typescript@^10.0.1": - version "10.0.1" - resolved "https://registry.yarnpkg.com/@rollup/plugin-typescript/-/plugin-typescript-10.0.1.tgz#270b515b116ea28320e6bb62451c4767d49072d6" - integrity sha512-wBykxRLlX7EzL8BmUqMqk5zpx2onnmRMSw/l9M1sVfkJvdwfxogZQVNUM9gVMJbjRLDR5H6U0OMOrlDGmIV45A== - dependencies: - "@rollup/pluginutils" "^5.0.1" - resolve "^1.22.1" - "@rollup/plugin-typescript@^11.0.0": version "11.1.3" resolved "https://registry.yarnpkg.com/@rollup/plugin-typescript/-/plugin-typescript-11.1.3.tgz#8172858a1e5f4c181aebc61f8920002fd5e04b91" @@ -3135,29 +2940,6 @@ "@rollup/pluginutils" "^5.0.1" resolve "^1.22.1" -"@rollup/plugin-url@^8.0.1": - version "8.0.1" - resolved "https://registry.yarnpkg.com/@rollup/plugin-url/-/plugin-url-8.0.1.tgz#8da005d4be8cb4439357c929c73c85ceb5d979a4" - integrity sha512-8ajztphXb5e19dk3Iwjtm2eSYJR8jFQubZ8pJ1GG2MBMM7/qUedLnZAN+Vt4jqbcT/m27jfjIBocvrzV0giNRw== - dependencies: - "@rollup/pluginutils" "^5.0.1" - make-dir "^3.1.0" - mime "^3.0.0" - -"@rollup/plugin-wasm@^6.1.1": - version "6.1.3" - resolved "https://registry.yarnpkg.com/@rollup/plugin-wasm/-/plugin-wasm-6.1.3.tgz#8d26a320780b15bf89d8d266ceda50823d5f978b" - integrity sha512-7ItTTeyauE6lwdDtQWceEHZ9+txbi4RRy0mYPFn9BW7rD7YdgBDu7HTHsLtHrRzJc313RM/1m6GKgV3np/aEaw== - -"@rollup/pluginutils@^3.1.0": - version "3.1.0" - resolved "https://registry.yarnpkg.com/@rollup/pluginutils/-/pluginutils-3.1.0.tgz#706b4524ee6dc8b103b3c995533e5ad680c02b9b" - integrity sha512-GksZ6pr6TpIjHm8h9lSQ8pi8BE9VeubNT0OMJ3B5uZJ8pz73NPiqOtCog/x2/QzM1ENChPKxMDhiQuRHsqc+lg== - dependencies: - "@types/estree" "0.0.39" - estree-walker "^1.0.1" - picomatch "^2.2.2" - "@rollup/pluginutils@^5.0.1": version "5.0.4" resolved "https://registry.yarnpkg.com/@rollup/pluginutils/-/pluginutils-5.0.4.tgz#74f808f9053d33bafec0cc98e7b835c9667d32ba" @@ -3292,20 +3074,6 @@ dependencies: type-detect "4.0.8" -"@sinonjs/commons@^3.0.0": - version "3.0.0" - resolved "https://registry.yarnpkg.com/@sinonjs/commons/-/commons-3.0.0.tgz#beb434fe875d965265e04722ccfc21df7f755d72" - integrity sha512-jXBtWAF4vmdNmZgD5FoKsVLv3rPgDnLgPbU84LIJ3otV44vJlDRokVng5v8NFJdCf/da9legHcKaRuZs4L7faA== - dependencies: - type-detect "4.0.8" - -"@sinonjs/fake-timers@^10.0.2": - version "10.3.0" - resolved "https://registry.yarnpkg.com/@sinonjs/fake-timers/-/fake-timers-10.3.0.tgz#55fdff1ecab9f354019129daf4df0dd4d923ea66" - integrity sha512-V4BG07kuYSUkTCSBHG8G8TNhM+F19jXFWnQtzj+we8DrkpSBCee9Z3Ms8yiGer/dlmhe35/Xdgyo3/0rQKg7YA== - dependencies: - "@sinonjs/commons" "^3.0.0" - "@sinonjs/fake-timers@^8.0.1": version "8.1.0" resolved "https://registry.yarnpkg.com/@sinonjs/fake-timers/-/fake-timers-8.1.0.tgz#3fdc2b6cb58935b21bfb8d1625eb1300484316e7" @@ -4841,11 +4609,6 @@ resolved "https://registry.yarnpkg.com/@types/estree/-/estree-1.0.1.tgz#aa22750962f3bf0e79d753d3cc067f010c95f194" integrity sha512-LG4opVs2ANWZ1TJoKc937iMmNstM/d0ae1vNbnBvBhqCSezgVUOzcLCqbI5elV8Vy6WKwKjaqR+zO9VKirBBCA== -"@types/estree@0.0.39": - version "0.0.39" - resolved "https://registry.yarnpkg.com/@types/estree/-/estree-0.0.39.tgz#e177e699ee1b8c22d23174caaa7422644389509f" - integrity sha512-EYNwp3bU+98cpU4lAWYYL7Zz+2gryWH1qbdDTidVd6hkiR6weksdbMadyXKXNPEkQFhXM+hVO9ZygomHXp+AIw== - "@types/estree@^0.0.51": version "0.0.51" resolved "https://registry.yarnpkg.com/@types/estree/-/estree-0.0.51.tgz#cfd70924a25a3fd32b218e5e420e6897e1ac4f40" @@ -4904,7 +4667,7 @@ "@types/minimatch" "*" "@types/node" "*" -"@types/graceful-fs@^4.1.2", "@types/graceful-fs@^4.1.3": +"@types/graceful-fs@^4.1.2": version "4.1.6" resolved "https://registry.yarnpkg.com/@types/graceful-fs/-/graceful-fs-4.1.6.tgz#e14b2576a1c25026b7f02ede1de3b84c3a1efeae" integrity sha512-Sig0SNORX9fdW+bQuTEovKj3uHcUL6LQKbCrrqb1X7J6/ReAbhCXRAhc+SMejhLELFj2QcyuxmUooZ4bt5ReSw== @@ -5716,11 +5479,6 @@ resolved "https://registry.yarnpkg.com/@webpack-cli/configtest/-/configtest-1.2.0.tgz#7b20ce1c12533912c3b217ea68262365fa29a6f5" integrity sha512-4FB8Tj6xyVkyqjj1OaTqCjXYULB9FMkqQ8yGrZjRDrYh0nOE+7Lhs45WioWQQMV+ceFlE368Ukhe6xdvJM9Egg== -"@webpack-cli/configtest@^2.1.1": - version "2.1.1" - resolved "https://registry.yarnpkg.com/@webpack-cli/configtest/-/configtest-2.1.1.tgz#3b2f852e91dac6e3b85fb2a314fb8bef46d94646" - integrity sha512-wy0mglZpDSiSS0XHrVR+BAdId2+yxPSoJW8fsna3ZpYSlufjvxnP4YbKTCBZnNIcGN4r6ZPXV55X4mYExOfLmw== - "@webpack-cli/info@^1.5.0": version "1.5.0" resolved "https://registry.yarnpkg.com/@webpack-cli/info/-/info-1.5.0.tgz#6c78c13c5874852d6e2dd17f08a41f3fe4c261b1" @@ -5728,21 +5486,11 @@ dependencies: envinfo "^7.7.3" -"@webpack-cli/info@^2.0.2": - version "2.0.2" - resolved "https://registry.yarnpkg.com/@webpack-cli/info/-/info-2.0.2.tgz#cc3fbf22efeb88ff62310cf885c5b09f44ae0fdd" - integrity sha512-zLHQdI/Qs1UyT5UBdWNqsARasIA+AaF8t+4u2aS2nEpBQh2mWIVb8qAklq0eUENnC5mOItrIB4LiS9xMtph18A== - "@webpack-cli/serve@^1.7.0": version "1.7.0" resolved "https://registry.yarnpkg.com/@webpack-cli/serve/-/serve-1.7.0.tgz#e1993689ac42d2b16e9194376cfb6753f6254db1" integrity sha512-oxnCNGj88fL+xzV+dacXs44HcDwf1ovs3AuEzvP7mqXw7fQntqIhQ1BRmynh4qEKQSSSRSWVyXRjmTbZIX9V2Q== -"@webpack-cli/serve@^2.0.5": - version "2.0.5" - resolved "https://registry.yarnpkg.com/@webpack-cli/serve/-/serve-2.0.5.tgz#325db42395cd49fe6c14057f9a900e427df8810e" - integrity sha512-lqaoKnRYBdo1UgDX8uF24AfGMifWK19TxPmM5FHc2vAGxrJ/qtyUyFBWoY1tISZdelsQ5fBcOusifo5o5wSJxQ== - "@xtuc/ieee754@^1.2.0": version "1.2.0" resolved "https://registry.yarnpkg.com/@xtuc/ieee754/-/ieee754-1.2.0.tgz#eef014a3145ae477a1cbc00cd1e552336dceb790" @@ -5990,11 +5738,6 @@ ansi-regex@^6.0.1: resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-6.0.1.tgz#3183e38fae9a65d7cb5e53945cd5897d0260a06a" integrity sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA== -ansi-sequence-parser@^1.1.0: - version "1.1.1" - resolved "https://registry.yarnpkg.com/ansi-sequence-parser/-/ansi-sequence-parser-1.1.1.tgz#e0aa1cdcbc8f8bb0b5bca625aac41f5f056973cf" - integrity sha512-vJXt3yiaUL4UU546s3rPXlsry/RnM730G1+HkpKE012AN0sx1eOrxSu95oKDIonskeLTijMgqWZ3uDEe3NFvyg== - ansi-styles@^3.2.1: version "3.2.1" resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-3.2.1.tgz#41fbb20243e50b12be0f04b8dedbf07520ce841d" @@ -6419,19 +6162,6 @@ babel-jest@^27.5.1: graceful-fs "^4.2.9" slash "^3.0.0" -babel-jest@^29.7.0: - version "29.7.0" - resolved "https://registry.yarnpkg.com/babel-jest/-/babel-jest-29.7.0.tgz#f4369919225b684c56085998ac63dbd05be020d5" - integrity sha512-BrvGY3xZSwEcCzKvKsCi2GgHqDqsYkOP4/by5xCgIwGXQxIEh+8ew3gmrE1y7XRR6LHZIj6yLYnUi/mm2KXKBg== - dependencies: - "@jest/transform" "^29.7.0" - "@types/babel__core" "^7.1.14" - babel-plugin-istanbul "^6.1.1" - babel-preset-jest "^29.6.3" - chalk "^4.0.0" - graceful-fs "^4.2.9" - slash "^3.0.0" - babel-loader@^8.0.0, babel-loader@^8.2.3, babel-loader@^8.3.0: version "8.3.0" resolved "https://registry.yarnpkg.com/babel-loader/-/babel-loader-8.3.0.tgz#124936e841ba4fe8176786d6ff28add1f134d6a8" @@ -6442,14 +6172,6 @@ babel-loader@^8.0.0, babel-loader@^8.2.3, babel-loader@^8.3.0: make-dir "^3.1.0" schema-utils "^2.6.5" -babel-loader@^9.1.3: - version "9.1.3" - resolved "https://registry.yarnpkg.com/babel-loader/-/babel-loader-9.1.3.tgz#3d0e01b4e69760cc694ee306fe16d358aa1c6f9a" - integrity sha512-xG3ST4DglodGf8qSwv0MdeWLhrDsw/32QMdTO5T1ZIp9gQur0HkCyFs7Awskr10JKXFXwpAhiCuYX5oGXnRGbw== - dependencies: - find-cache-dir "^4.0.0" - schema-utils "^4.0.0" - babel-plugin-add-react-displayname@^0.0.5: version "0.0.5" resolved "https://registry.yarnpkg.com/babel-plugin-add-react-displayname/-/babel-plugin-add-react-displayname-0.0.5.tgz#339d4cddb7b65fd62d1df9db9fe04de134122bd5" @@ -6491,16 +6213,6 @@ babel-plugin-jest-hoist@^27.5.1: "@types/babel__core" "^7.0.0" "@types/babel__traverse" "^7.0.6" -babel-plugin-jest-hoist@^29.6.3: - version "29.6.3" - resolved "https://registry.yarnpkg.com/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-29.6.3.tgz#aadbe943464182a8922c3c927c3067ff40d24626" - integrity sha512-ESAc/RJvGTFEzRwOTT4+lNDk/GNHMkKbNzsvT0qKRfDyyYTskxB5rnU2njIDYVxXCBHHEI1c0YwHob3WaYujOg== - dependencies: - "@babel/template" "^7.3.3" - "@babel/types" "^7.3.3" - "@types/babel__core" "^7.1.14" - "@types/babel__traverse" "^7.0.6" - babel-plugin-macros@^3.0.1, babel-plugin-macros@^3.1.0: version "3.1.0" resolved "https://registry.yarnpkg.com/babel-plugin-macros/-/babel-plugin-macros-3.1.0.tgz#9ef6dc74deb934b4db344dc973ee851d148c50c1" @@ -6596,14 +6308,6 @@ babel-preset-jest@^27.5.1: babel-plugin-jest-hoist "^27.5.1" babel-preset-current-node-syntax "^1.0.0" -babel-preset-jest@^29.6.3: - version "29.6.3" - resolved "https://registry.yarnpkg.com/babel-preset-jest/-/babel-preset-jest-29.6.3.tgz#fa05fa510e7d493896d7b0dd2033601c840f171c" - integrity sha512-0B3bhxR6snWXJZtR/RliHTDPRgn1sNHOR0yVtq/IiQFyuOVjFS+wuio/R4gSNkyYmKmJB4wGZv2NZanmKmTnNA== - dependencies: - babel-plugin-jest-hoist "^29.6.3" - babel-preset-current-node-syntax "^1.0.0" - bail@^1.0.0: version "1.0.5" resolved "https://registry.yarnpkg.com/bail/-/bail-1.0.5.tgz#b6fa133404a392cbc1f8c4bf63f5953351e7a776" @@ -7389,17 +7093,6 @@ cli-boxes@^2.2.1: resolved "https://registry.yarnpkg.com/cli-boxes/-/cli-boxes-2.2.1.tgz#ddd5035d25094fce220e9cab40a45840a440318f" integrity sha512-y4coMcylgSCdVinjiDBuR8PCC2bLjyGTwEmPb9NHR/QaNU6EUOXcTY/s6VjGMD6ENSEaeQYHCY0GNGS5jfMwPw== -cli-color@~2.0.0: - version "2.0.3" - resolved "https://registry.yarnpkg.com/cli-color/-/cli-color-2.0.3.tgz#73769ba969080629670f3f2ef69a4bf4e7cc1879" - integrity sha512-OkoZnxyC4ERN3zLzZaY9Emb7f/MhBOIpePv0Ycok0fJYT+Ouo00UBEIwsVsr0yoow++n5YWlSUgST9GKhNHiRQ== - dependencies: - d "^1.0.1" - es5-ext "^0.10.61" - es6-iterator "^2.0.3" - memoizee "^0.4.15" - timers-ext "^0.1.7" - cli-cursor@3.1.0, cli-cursor@^3.1.0: version "3.1.0" resolved "https://registry.yarnpkg.com/cli-cursor/-/cli-cursor-3.1.0.tgz#264305a7ae490d1d03bf0c9ba7c925d1753af307" @@ -7620,11 +7313,6 @@ combined-stream@^1.0.8: dependencies: delayed-stream "~1.0.0" -comlink@^4.3.1: - version "4.4.1" - resolved "https://registry.yarnpkg.com/comlink/-/comlink-4.4.1.tgz#e568b8e86410b809e8600eb2cf40c189371ef981" - integrity sha512-+1dlx0aY5Jo1vHy/tSsIGpSkN4tS9rZSW8FIhG0JH/crs9wwweswIo/POr451r7bZww3hFbPAKnTpimzL/mm4Q== - comma-separated-tokens@^1.0.0: version "1.0.8" resolved "https://registry.yarnpkg.com/comma-separated-tokens/-/comma-separated-tokens-1.0.8.tgz#632b80b6117867a158f1080ad498b2fbe7e3f5ea" @@ -7640,11 +7328,6 @@ commander@2, commander@^2.19.0, commander@^2.20.0: resolved "https://registry.yarnpkg.com/commander/-/commander-2.20.3.tgz#fd485e84c03eb4881c20722ba48035e8531aeb33" integrity sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ== -commander@^10.0.1: - version "10.0.1" - resolved "https://registry.yarnpkg.com/commander/-/commander-10.0.1.tgz#881ee46b4f77d1c1dccc5823433aa39b022cbe06" - integrity sha512-y4Mg2tXshplEbSGzx7amzPwKKOCGuoSRP/CjEdwwk0FOGlUbq6lKuoyDZTNZkmxHdJtp54hdfY/JUrdL7Xfdug== - commander@^4.1.1: version "4.1.1" resolved "https://registry.yarnpkg.com/commander/-/commander-4.1.1.tgz#9fd602bd936294e9e9ef46a3f4d6964044b18068" @@ -7670,11 +7353,6 @@ commander@^9.4.1: resolved "https://registry.yarnpkg.com/commander/-/commander-9.5.0.tgz#bc08d1eb5cedf7ccb797a96199d41c7bc3e60d30" integrity sha512-KRs7WVDKg86PWiuAqhDrAQnTXZKraVcCc6vFdL14qrZ/DcWwuRo7VoiYXalXO7S5GKpqYiVEwCbgFDfxNHKJBQ== -commander@~9.4.0: - version "9.4.1" - resolved "https://registry.yarnpkg.com/commander/-/commander-9.4.1.tgz#d1dd8f2ce6faf93147295c0df13c7c21141cfbdd" - integrity sha512-5EEkTNyHNGFPD2H+c/dXXfQZYa/scCKasxWcXJaWnNJ99pnQN9Vnmqow+p+PlFPE63Q6mThaZws1T+HxfpgtPw== - common-path-prefix@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/common-path-prefix/-/common-path-prefix-3.0.0.tgz#7d007a7e07c58c4b4d5f433131a19141b29f11e0" @@ -7858,11 +7536,6 @@ convert-source-map@^1.4.0, convert-source-map@^1.5.0, convert-source-map@^1.6.0, resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-1.9.0.tgz#7faae62353fb4213366d0ca98358d22e8368b05f" integrity sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A== -convert-source-map@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-2.0.0.tgz#4b560f649fc4e918dd0ab75cf4961e8bc882d82a" - integrity sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg== - cookie-signature@1.0.6: version "1.0.6" resolved "https://registry.yarnpkg.com/cookie-signature/-/cookie-signature-1.0.6.tgz#e303a882b342cc3ee8ca513a79999734dab3ae2c" @@ -7890,18 +7563,6 @@ copy-descriptor@^0.1.0: resolved "https://registry.yarnpkg.com/copy-descriptor/-/copy-descriptor-0.1.1.tgz#676f6eb3c39997c2ee1ac3a924fd6124748f578d" integrity sha512-XgZ0pFcakEUlbwQEVNg3+QAis1FyTL3Qel9FYy8pSkQqoG3PNoT0bOCQtOXcOkur21r2Eq2kI+IE+gsmAEVlYw== -copy-webpack-plugin@^11.0.0: - version "11.0.0" - resolved "https://registry.yarnpkg.com/copy-webpack-plugin/-/copy-webpack-plugin-11.0.0.tgz#96d4dbdb5f73d02dd72d0528d1958721ab72e04a" - integrity sha512-fX2MWpamkW0hZxMEg0+mYnA40LTosOSa5TqZ9GYIBzyJa9C3QUaMPSE2xAi/buNr8u89SfD9wHSQVBzrRa/SOQ== - dependencies: - fast-glob "^3.2.11" - glob-parent "^6.0.1" - globby "^13.1.1" - normalize-path "^3.0.0" - schema-utils "^4.0.0" - serialize-javascript "^6.0.0" - core-js-compat@^3.31.0, core-js-compat@^3.8.1: version "3.32.2" resolved "https://registry.yarnpkg.com/core-js-compat/-/core-js-compat-3.32.2.tgz#8047d1a8b3ac4e639f0d4f66d4431aa3b16e004c" @@ -8028,19 +7689,6 @@ create-hmac@^1.1.0, create-hmac@^1.1.4, create-hmac@^1.1.7: safe-buffer "^5.0.1" sha.js "^2.4.8" -create-jest@^29.7.0: - version "29.7.0" - resolved "https://registry.yarnpkg.com/create-jest/-/create-jest-29.7.0.tgz#a355c5b3cb1e1af02ba177fe7afd7feee49a5320" - integrity sha512-Adz2bdH0Vq3F53KEMJOoftQFutWCukm6J24wbPWRO4k1kMY7gS7ds/uoJkNuV8wDCtWWnuwGcJwpWcih+zEW1Q== - dependencies: - "@jest/types" "^29.6.3" - chalk "^4.0.0" - exit "^0.1.2" - graceful-fs "^4.2.9" - jest-config "^29.7.0" - jest-util "^29.7.0" - prompts "^2.0.1" - create-require@^1.1.0: version "1.1.1" resolved "https://registry.yarnpkg.com/create-require/-/create-require-1.1.1.tgz#c1d7e8f1e5f6cfc9ff65f9cd352d37348756c333" @@ -8123,7 +7771,7 @@ css-loader@^5.0.1: schema-utils "^3.0.0" semver "^7.3.5" -css-loader@^6.7.3, css-loader@^6.8.1: +css-loader@^6.7.3: version "6.8.1" resolved "https://registry.yarnpkg.com/css-loader/-/css-loader-6.8.1.tgz#0f8f52699f60f5e679eab4ec0fcd68b8e8a50a88" integrity sha512-xDAXtEVGlD0gJ07iclwWVkLoZOpEvAWaSyf6W18S2pOC//K8+qUDIx8IIT3D+HjnmkJPQeesOPv5aiUaJsCM2g== @@ -8149,18 +7797,6 @@ css-minimizer-webpack-plugin@^3.0.2: serialize-javascript "^6.0.0" source-map "^0.6.1" -css-minimizer-webpack-plugin@^5.0.1: - version "5.0.1" - resolved "https://registry.yarnpkg.com/css-minimizer-webpack-plugin/-/css-minimizer-webpack-plugin-5.0.1.tgz#33effe662edb1a0bf08ad633c32fa75d0f7ec565" - integrity sha512-3caImjKFQkS+ws1TGcFn0V1HyDJFq1Euy589JlD6/3rV2kj+w7r5G9WDMgSHvpvXHNZ2calVypZWuEDQd9wfLg== - dependencies: - "@jridgewell/trace-mapping" "^0.3.18" - cssnano "^6.0.1" - jest-worker "^29.4.3" - postcss "^8.4.24" - schema-utils "^4.0.1" - serialize-javascript "^6.0.1" - css-select@^4.1.3: version "4.3.0" resolved "https://registry.yarnpkg.com/css-select/-/css-select-4.3.0.tgz#db7129b2846662fd8628cfc496abb2b59e41529b" @@ -8172,17 +7808,6 @@ css-select@^4.1.3: domutils "^2.8.0" nth-check "^2.0.1" -css-select@^5.1.0: - version "5.1.0" - resolved "https://registry.yarnpkg.com/css-select/-/css-select-5.1.0.tgz#b8ebd6554c3637ccc76688804ad3f6a6fdaea8a6" - integrity sha512-nwoRF1rvRRnnCqqY7updORDsuqKzqYJ28+oSMaJMMgOauh3fvwHqMS7EZpIPqK8GL+g9mKxF1vP/ZjSeNjEVHg== - dependencies: - boolbase "^1.0.0" - css-what "^6.1.0" - domhandler "^5.0.2" - domutils "^3.0.1" - nth-check "^2.0.1" - css-tree@^1.1.2, css-tree@^1.1.3: version "1.1.3" resolved "https://registry.yarnpkg.com/css-tree/-/css-tree-1.1.3.tgz#eb4870fb6fd7707327ec95c2ff2ab09b5e8db91d" @@ -8191,22 +7816,6 @@ css-tree@^1.1.2, css-tree@^1.1.3: mdn-data "2.0.14" source-map "^0.6.1" -css-tree@^2.2.1: - version "2.3.1" - resolved "https://registry.yarnpkg.com/css-tree/-/css-tree-2.3.1.tgz#10264ce1e5442e8572fc82fbe490644ff54b5c20" - integrity sha512-6Fv1DV/TYw//QF5IzQdqsNDjx/wc8TrMBZsqjL9eW01tWb7R7k/mq+/VXfJCl7SoD5emsJop9cOByJZfs8hYIw== - dependencies: - mdn-data "2.0.30" - source-map-js "^1.0.1" - -css-tree@~2.2.0: - version "2.2.1" - resolved "https://registry.yarnpkg.com/css-tree/-/css-tree-2.2.1.tgz#36115d382d60afd271e377f9c5f67d02bd48c032" - integrity sha512-OA0mILzGc1kCOCSJerOeqDxDQ4HOh+G8NbOJFOTgOCzpw7fCBubk0fEyxp8AgOL/jvLgYA/uV0cMbe43ElF1JA== - dependencies: - mdn-data "2.0.28" - source-map-js "^1.0.1" - css-unit-converter@^1.1.1: version "1.1.2" resolved "https://registry.yarnpkg.com/css-unit-converter/-/css-unit-converter-1.1.2.tgz#4c77f5a1954e6dbff60695ecb214e3270436ab21" @@ -8220,7 +7829,7 @@ css-vendor@^2.0.8: "@babel/runtime" "^7.8.3" is-in-browser "^1.0.2" -css-what@^6.0.1, css-what@^6.1.0: +css-what@^6.0.1: version "6.1.0" resolved "https://registry.yarnpkg.com/css-what/-/css-what-6.1.0.tgz#fb5effcf76f1ddea2c81bdfaa4de44e79bac70f4" integrity sha512-HTUrgRJ7r4dsZKU6GjmpfRK1O76h97Z8MfS1G0FozR+oF2kG6Vfe8JE6zwrkbxigziPHinCJ+gCPjA9EaBDtRw== @@ -8270,51 +7879,11 @@ cssnano-preset-default@^5.2.14: postcss-svgo "^5.1.0" postcss-unique-selectors "^5.1.1" -cssnano-preset-default@^6.0.1: - version "6.0.1" - resolved "https://registry.yarnpkg.com/cssnano-preset-default/-/cssnano-preset-default-6.0.1.tgz#2a93247140d214ddb9f46bc6a3562fa9177fe301" - integrity sha512-7VzyFZ5zEB1+l1nToKyrRkuaJIx0zi/1npjvZfbBwbtNTzhLtlvYraK/7/uqmX2Wb2aQtd983uuGw79jAjLSuQ== - dependencies: - css-declaration-sorter "^6.3.1" - cssnano-utils "^4.0.0" - postcss-calc "^9.0.0" - postcss-colormin "^6.0.0" - postcss-convert-values "^6.0.0" - postcss-discard-comments "^6.0.0" - postcss-discard-duplicates "^6.0.0" - postcss-discard-empty "^6.0.0" - postcss-discard-overridden "^6.0.0" - postcss-merge-longhand "^6.0.0" - postcss-merge-rules "^6.0.1" - postcss-minify-font-values "^6.0.0" - postcss-minify-gradients "^6.0.0" - postcss-minify-params "^6.0.0" - postcss-minify-selectors "^6.0.0" - postcss-normalize-charset "^6.0.0" - postcss-normalize-display-values "^6.0.0" - postcss-normalize-positions "^6.0.0" - postcss-normalize-repeat-style "^6.0.0" - postcss-normalize-string "^6.0.0" - postcss-normalize-timing-functions "^6.0.0" - postcss-normalize-unicode "^6.0.0" - postcss-normalize-url "^6.0.0" - postcss-normalize-whitespace "^6.0.0" - postcss-ordered-values "^6.0.0" - postcss-reduce-initial "^6.0.0" - postcss-reduce-transforms "^6.0.0" - postcss-svgo "^6.0.0" - postcss-unique-selectors "^6.0.0" - cssnano-utils@^3.1.0: version "3.1.0" resolved "https://registry.yarnpkg.com/cssnano-utils/-/cssnano-utils-3.1.0.tgz#95684d08c91511edfc70d2636338ca37ef3a6861" integrity sha512-JQNR19/YZhz4psLX/rQ9M83e3z2Wf/HdJbryzte4a3NSuafyp9w/I4U+hx5C2S9g41qlstH7DEWnZaaj83OuEA== -cssnano-utils@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/cssnano-utils/-/cssnano-utils-4.0.0.tgz#d1da885ec04003ab19505ff0e62e029708d36b08" - integrity sha512-Z39TLP+1E0KUcd7LGyF4qMfu8ZufI0rDzhdyAMsa/8UyNUU8wpS0fhdBxbQbv32r64ea00h4878gommRVg2BHw== - cssnano@^5.0.6: version "5.1.15" resolved "https://registry.yarnpkg.com/cssnano/-/cssnano-5.1.15.tgz#ded66b5480d5127fcb44dac12ea5a983755136bf" @@ -8324,14 +7893,6 @@ cssnano@^5.0.6: lilconfig "^2.0.3" yaml "^1.10.2" -cssnano@^6.0.1: - version "6.0.1" - resolved "https://registry.yarnpkg.com/cssnano/-/cssnano-6.0.1.tgz#87c38c4cd47049c735ab756d7e77ac3ca855c008" - integrity sha512-fVO1JdJ0LSdIGJq68eIxOqFpIJrZqXUsBt8fkrBcztCQqAjQD51OhZp7tc0ImcbwXD4k7ny84QTV90nZhmqbkg== - dependencies: - cssnano-preset-default "^6.0.1" - lilconfig "^2.1.0" - csso@^4.2.0: version "4.2.0" resolved "https://registry.yarnpkg.com/csso/-/csso-4.2.0.tgz#ea3a561346e8dc9f546d6febedd50187cf389529" @@ -8339,13 +7900,6 @@ csso@^4.2.0: dependencies: css-tree "^1.1.2" -csso@^5.0.5: - version "5.0.5" - resolved "https://registry.yarnpkg.com/csso/-/csso-5.0.5.tgz#f9b7fe6cc6ac0b7d90781bb16d5e9874303e2ca6" - integrity sha512-0LrrStPOdJj+SPCCrGhzryycLjwcgUSHBtxNA8aIDxf0GLsRh1cKYhB00Gd1lDOS4yGH69+SNn13+TWbVHETFQ== - dependencies: - css-tree "~2.2.0" - cssom@^0.4.4: version "0.4.4" resolved "https://registry.yarnpkg.com/cssom/-/cssom-0.4.4.tgz#5a66cf93d2d0b661d80bf6a44fb65f5c2e4e0a10" @@ -8527,14 +8081,6 @@ d3-zoom@^2.0.0: d3-selection "2" d3-transition "2" -d@1, d@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/d/-/d-1.0.1.tgz#8698095372d58dbee346ffd0c7093f99f8f9eb5a" - integrity sha512-m62ShEObQ39CfralilEQRjH6oAMtNCV1xJyEx5LpRYUVN+EviphDgUc/F3hnYbADmkiNs67Y+3ylmlG7Lnu+FA== - dependencies: - es5-ext "^0.10.50" - type "^1.0.1" - damerau-levenshtein@^1.0.8: version "1.0.8" resolved "https://registry.yarnpkg.com/damerau-levenshtein/-/damerau-levenshtein-1.0.8.tgz#b43d286ccbd36bc5b2f7ed41caf2d0aba1f8a6e7" @@ -8639,11 +8185,6 @@ dedent@0.7.0, dedent@^0.7.0: resolved "https://registry.yarnpkg.com/dedent/-/dedent-0.7.0.tgz#2495ddbaf6eb874abb0e1be9df22d2e5a544326c" integrity sha512-Q6fKUPqnAHAyhiUgFU7BUzLiv0kd8saH9al7tnu5Q/okj6dnupxyTgFIBjVzJATdfIAm9NAsvXNzjaKa+bxVyA== -dedent@^1.0.0: - version "1.5.1" - resolved "https://registry.yarnpkg.com/dedent/-/dedent-1.5.1.tgz#4f3fc94c8b711e9bb2800d185cd6ad20f2a90aff" - integrity sha512-+LxW+KLWxu3HW3M2w2ympwtqPrqYRzU8fqi6Fhd18fBALe15blJPI/I4+UHveMVG6lJqB4JNd4UG0S5cnVHwIg== - deep-equal@^2.0.5: version "2.2.2" resolved "https://registry.yarnpkg.com/deep-equal/-/deep-equal-2.2.2.tgz#9b2635da569a13ba8e1cc159c2f744071b115daa" @@ -8979,15 +8520,6 @@ dom-serializer@^1.0.1: domhandler "^4.2.0" entities "^2.0.0" -dom-serializer@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/dom-serializer/-/dom-serializer-2.0.0.tgz#e41b802e1eedf9f6cae183ce5e622d789d7d8e53" - integrity sha512-wIkAryiqt/nV5EQKqQpo3SToSOV9J0DnbJqwK7Wv/Trc92zIAYZ4FlMu+JPFW1DfGFt81ZTCGgDEabffXeLyJg== - dependencies: - domelementtype "^2.3.0" - domhandler "^5.0.2" - entities "^4.2.0" - dom-walk@^0.1.0: version "0.1.2" resolved "https://registry.yarnpkg.com/dom-walk/-/dom-walk-0.1.2.tgz#0c548bef048f4d1f2a97249002236060daa3fd84" @@ -8998,7 +8530,7 @@ domain-browser@^1.1.1: resolved "https://registry.yarnpkg.com/domain-browser/-/domain-browser-1.2.0.tgz#3d31f50191a6749dd1375a7f522e823d42e54eda" integrity sha512-jnjyiM6eRyZl2H+W8Q/zLMA481hzi0eszAaBUzIVnmYVDBbnLxVNnfu1HgEBvCbL+71FrxMl3E6lpKH7Ge3OXA== -domelementtype@^2.0.1, domelementtype@^2.2.0, domelementtype@^2.3.0: +domelementtype@^2.0.1, domelementtype@^2.2.0: version "2.3.0" resolved "https://registry.yarnpkg.com/domelementtype/-/domelementtype-2.3.0.tgz#5c45e8e869952626331d7aab326d01daf65d589d" integrity sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw== @@ -9017,13 +8549,6 @@ domhandler@^4.0.0, domhandler@^4.2.0, domhandler@^4.3.1: dependencies: domelementtype "^2.2.0" -domhandler@^5.0.2, domhandler@^5.0.3: - version "5.0.3" - resolved "https://registry.yarnpkg.com/domhandler/-/domhandler-5.0.3.tgz#cc385f7f751f1d1fc650c21374804254538c7d31" - integrity sha512-cgwlv/1iFQiFnU96XXgROh8xTeetsnJiDsTc7TYCLFd9+/WNkIqPTxiM/8pSd8VIrhXGTf1Ny1q1hquVqDJB5w== - dependencies: - domelementtype "^2.3.0" - domutils@^2.5.2, domutils@^2.8.0: version "2.8.0" resolved "https://registry.yarnpkg.com/domutils/-/domutils-2.8.0.tgz#4437def5db6e2d1f5d6ee859bd95ca7d02048135" @@ -9033,15 +8558,6 @@ domutils@^2.5.2, domutils@^2.8.0: domelementtype "^2.2.0" domhandler "^4.2.0" -domutils@^3.0.1: - version "3.1.0" - resolved "https://registry.yarnpkg.com/domutils/-/domutils-3.1.0.tgz#c47f551278d3dc4b0b1ab8cbb42d751a6f0d824e" - integrity sha512-H78uMmQtI2AhgDJjWeQmHwJJ2bLPD3GMmO7Zja/ZZh84wkm+4ut+IUnUdRa8uCGX88DiVx1j6FRe1XfxEgjEZA== - dependencies: - dom-serializer "^2.0.0" - domelementtype "^2.3.0" - domhandler "^5.0.3" - dot-case@^3.0.4: version "3.0.4" resolved "https://registry.yarnpkg.com/dot-case/-/dot-case-3.0.4.tgz#9b2b670d00a431667a8a75ba29cd1b98809ce751" @@ -9081,13 +8597,6 @@ dotenv-webpack@^7.0.3: dependencies: dotenv-defaults "^2.0.2" -dotenv-webpack@^8.0.1: - version "8.0.1" - resolved "https://registry.yarnpkg.com/dotenv-webpack/-/dotenv-webpack-8.0.1.tgz#6656550460a8076fab20e5ac2eac867e72478645" - integrity sha512-CdrgfhZOnx4uB18SgaoP9XHRN2v48BbjuXQsZY5ixs5A8579NxQkmMxRtI7aTwSiSQcM2ao12Fdu+L3ZS3bG4w== - dependencies: - dotenv-defaults "^2.0.2" - dotenv@^16.0.3, dotenv@~16.3.1: version "16.3.1" resolved "https://registry.yarnpkg.com/dotenv/-/dotenv-16.3.1.tgz#369034de7d7e5b120972693352a3bf112172cc3e" @@ -9148,11 +8657,6 @@ elliptic@^6.5.3, elliptic@^6.5.4: minimalistic-assert "^1.0.1" minimalistic-crypto-utils "^1.0.1" -emittery@^0.13.1: - version "0.13.1" - resolved "https://registry.yarnpkg.com/emittery/-/emittery-0.13.1.tgz#c04b8c3457490e0847ae51fced3af52d338e3dad" - integrity sha512-DeWwawk6r5yR9jFgnDKYt4sLS0LmHJJi3ZOnb5/JdbYwj3nW+FxQnHIjhBKz8YLC7oRNPVM9NQ47I3CVx34eqQ== - emittery@^0.8.1: version "0.8.1" resolved "https://registry.yarnpkg.com/emittery/-/emittery-0.8.1.tgz#bb23cc86d03b30aa75a7f734819dee2e1ba70860" @@ -9238,7 +8742,7 @@ entities@^2.0.0: resolved "https://registry.yarnpkg.com/entities/-/entities-2.2.0.tgz#098dc90ebb83d8dffa089d55256b351d34c4da55" integrity sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A== -entities@^4.2.0, entities@^4.4.0: +entities@^4.4.0: version "4.5.0" resolved "https://registry.yarnpkg.com/entities/-/entities-4.5.0.tgz#5d268ea5e7113ec74c4d033b79ea5a35a488fb48" integrity sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw== @@ -9399,52 +8903,16 @@ es-to-primitive@^1.2.1: is-date-object "^1.0.1" is-symbol "^1.0.2" -es5-ext@^0.10.35, es5-ext@^0.10.46, es5-ext@^0.10.50, es5-ext@^0.10.53, es5-ext@^0.10.61, es5-ext@~0.10.14, es5-ext@~0.10.2, es5-ext@~0.10.46: - version "0.10.62" - resolved "https://registry.yarnpkg.com/es5-ext/-/es5-ext-0.10.62.tgz#5e6adc19a6da524bf3d1e02bbc8960e5eb49a9a5" - integrity sha512-BHLqn0klhEpnOKSrzn/Xsz2UIW8j+cGmo9JLzr8BiUapV8hPL9+FliFqjwr9ngW7jWdnxv6eO+/LqyhJVqgrjA== - dependencies: - es6-iterator "^2.0.3" - es6-symbol "^3.1.3" - next-tick "^1.1.0" - es5-shim@^4.5.13: version "4.6.7" resolved "https://registry.yarnpkg.com/es5-shim/-/es5-shim-4.6.7.tgz#bc67ae0fc3dd520636e0a1601cc73b450ad3e955" integrity sha512-jg21/dmlrNQI7JyyA2w7n+yifSxBng0ZralnSfVZjoCawgNTCnS+yBCyVM9DL5itm7SUnDGgv7hcq2XCZX4iRQ== -es6-iterator@^2.0.3: - version "2.0.3" - resolved "https://registry.yarnpkg.com/es6-iterator/-/es6-iterator-2.0.3.tgz#a7de889141a05a94b0854403b2d0a0fbfa98f3b7" - integrity sha512-zw4SRzoUkd+cl+ZoE15A9o1oQd920Bb0iOJMQkQhl3jNc03YqVjAhG7scf9C5KWRU/R13Orf588uCC6525o02g== - dependencies: - d "1" - es5-ext "^0.10.35" - es6-symbol "^3.1.1" - es6-shim@^0.35.5: version "0.35.8" resolved "https://registry.yarnpkg.com/es6-shim/-/es6-shim-0.35.8.tgz#89216f6fbf8bacba3f897c8c0e814d2a41c05fb7" integrity sha512-Twf7I2v4/1tLoIXMT8HlqaBSS5H2wQTs2wx3MNYCI8K1R1/clXyCazrcVCPm/FuO9cyV8+leEaZOWD5C253NDg== -es6-symbol@^3.1.1, es6-symbol@^3.1.3: - version "3.1.3" - resolved "https://registry.yarnpkg.com/es6-symbol/-/es6-symbol-3.1.3.tgz#bad5d3c1bcdac28269f4cb331e431c78ac705d18" - integrity sha512-NJ6Yn3FuDinBaBRWl/q5X/s4koRHBrgKAu+yGI6JCBeiu3qrcbJhwT2GeR/EXVfylRk8dpQVJoLEFhK+Mu31NA== - dependencies: - d "^1.0.1" - ext "^1.1.2" - -es6-weak-map@^2.0.3: - version "2.0.3" - resolved "https://registry.yarnpkg.com/es6-weak-map/-/es6-weak-map-2.0.3.tgz#b6da1f16cc2cc0d9be43e6bdbfc5e7dfcdf31d53" - integrity sha512-p5um32HOTO1kP+w7PRnB+5lQ43Z6muuMuIMffvDN8ZB4GcnjLBV6zGStpbASIMk4DCAvEaamhe2zhyCb/QXXsA== - dependencies: - d "1" - es5-ext "^0.10.46" - es6-iterator "^2.0.3" - es6-symbol "^3.1.1" - escalade@^3.1.1: version "3.1.1" resolved "https://registry.yarnpkg.com/escalade/-/escalade-3.1.1.tgz#d8cfdc7000965c5a0174b4a82eaa5c0552742e40" @@ -9880,11 +9348,6 @@ estree-walker@^0.6.1: resolved "https://registry.yarnpkg.com/estree-walker/-/estree-walker-0.6.1.tgz#53049143f40c6eb918b23671d1fe3219f3a1b362" integrity sha512-SqmZANLWS0mnatqbSfRP5g8OXZC12Fgg1IwNtLsyHDzJizORW4khDfjPqJZsemPWBB2uqykUah5YpQ6epsqC/w== -estree-walker@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/estree-walker/-/estree-walker-1.0.1.tgz#31bc5d612c96b704106b477e6dd5d8aa138cb700" - integrity sha512-1fMXF3YP4pZZVozF8j/ZLfvnR8NSIljt56UhbZ5PeeDmmGHpgpdwQt7ITlGvYaQukCvuBRMLEiKiYC+oeIg4cg== - estree-walker@^2.0.2: version "2.0.2" resolved "https://registry.yarnpkg.com/estree-walker/-/estree-walker-2.0.2.tgz#52f010178c2a4c117a7757cfe942adb7d2da4cac" @@ -9907,14 +9370,6 @@ etag@~1.8.1: resolved "https://registry.yarnpkg.com/etag/-/etag-1.8.1.tgz#41ae2eeb65efa62268aebfea83ac7d79299b0887" integrity sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg== -event-emitter@^0.3.5: - version "0.3.5" - resolved "https://registry.yarnpkg.com/event-emitter/-/event-emitter-0.3.5.tgz#df8c69eef1647923c7157b9ce83840610b02cc39" - integrity sha512-D9rRn9y7kLPnJ+hMq7S/nhvoKwwvVJahBi2BPmx3bvbsEdK3W9ii8cBSGjP+72/LnM4n6fo3+dkCX5FeTQruXA== - dependencies: - d "1" - es5-ext "~0.10.14" - eventemitter3@^4.0.0, eventemitter3@^4.0.1, eventemitter3@^4.0.4: version "4.0.7" resolved "https://registry.yarnpkg.com/eventemitter3/-/eventemitter3-4.0.7.tgz#2de9b68f6528d5644ef5c59526a1b4a07306169f" @@ -10025,7 +9480,7 @@ expect@^28.1.3: jest-message-util "^28.1.3" jest-util "^28.1.3" -expect@^29.0.0, expect@^29.7.0: +expect@^29.0.0: version "29.7.0" resolved "https://registry.yarnpkg.com/expect/-/expect-29.7.0.tgz#578874590dcb3214514084c08115d8aee61e11bc" integrity sha512-2Zks0hf1VLFYI1kbh0I5jP3KHHyCHpkfyHBzsSXRFgl/Bg9mWYfMW8oD+PdMPlEwy5HNsR9JutYy6pMeOh61nw== @@ -10078,13 +9533,6 @@ express@^4.17.1, express@^4.17.3, express@^4.18.2: utils-merge "1.0.1" vary "~1.1.2" -ext@^1.1.2: - version "1.7.0" - resolved "https://registry.yarnpkg.com/ext/-/ext-1.7.0.tgz#0ea4383c0103d60e70be99e9a7f11027a33c4f5f" - integrity sha512-6hxeJYaL110a9b5TEJSj0gojyHQAmA2ch5Os+ySCiA1QGdS697XWY1pzsrSjqA9LDEEgdB/KypIlR59RcLuHYw== - dependencies: - type "^2.7.2" - extend-shallow@^2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/extend-shallow/-/extend-shallow-2.0.1.tgz#51af7d614ad9a9f610ea1bafbb989d6b1c56890f" @@ -10171,7 +9619,7 @@ fast-glob@^2.2.6: merge2 "^1.2.3" micromatch "^3.1.10" -fast-glob@^3.2.11, fast-glob@^3.2.9, fast-glob@^3.3.0: +fast-glob@^3.2.9: version "3.3.1" resolved "https://registry.yarnpkg.com/fast-glob/-/fast-glob-3.3.1.tgz#784b4e897340f3dbbef17413b3f11acf03c874c4" integrity sha512-kNFPyjhh5cKjrUltxs+wFx+ZkbRaxxmZ+X0ZU31SOsxCEtP9VPgtq2teZw1DebupL5GmDaNQ6yKMMVcM41iqDg== @@ -10187,7 +9635,7 @@ fast-json-parse@^1.0.3: resolved "https://registry.yarnpkg.com/fast-json-parse/-/fast-json-parse-1.0.3.tgz#43e5c61ee4efa9265633046b770fb682a7577c4d" integrity sha512-FRWsaZRWEJ1ESVNbDWmsAlqDk96gPQezzLghafp5J4GUKjbCz3OkAHuZs5TuPEtkbVQERysLp9xv6c24fBm8Aw== -fast-json-stable-stringify@2.x, fast-json-stable-stringify@^2.0.0, fast-json-stable-stringify@^2.1.0: +fast-json-stable-stringify@2.x, fast-json-stable-stringify@^2.0.0: version "2.1.0" resolved "https://registry.yarnpkg.com/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz#874bf69c6f404c2b5d99c481341399fd55892633" integrity sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw== @@ -10334,7 +9782,7 @@ fill-range@^7.0.1: dependencies: to-regex-range "^5.0.1" -finalhandler@1.2.0, finalhandler@~1.2.0: +finalhandler@1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/finalhandler/-/finalhandler-1.2.0.tgz#7d23fe5731b207b4640e4fcd00aec1f9207a7b32" integrity sha512-5uXcUVftlQMFnWC9qu/svkWv3GTd2PfUhK/3PLkYNAe7FbqJMt3515HaxE6eRL74GdsriiwujiawdaB1BpEISg== @@ -10365,14 +9813,6 @@ find-cache-dir@^3.3.1: make-dir "^3.0.2" pkg-dir "^4.1.0" -find-cache-dir@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/find-cache-dir/-/find-cache-dir-4.0.0.tgz#a30ee0448f81a3990708f6453633c733e2f6eec2" - integrity sha512-9ZonPT4ZAK4a+1pUPVPZJapbi7O5qbbJPdYw/NOQWZZbVLdDTYM3A4R9z/DpAM08IDaFGsvPgiGZ82WEwUDWjg== - dependencies: - common-path-prefix "^3.0.0" - pkg-dir "^7.0.0" - find-root@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/find-root/-/find-root-1.1.0.tgz#abcfc8ba76f708c42a97b3d685b7e9450bfb9ce4" @@ -10416,14 +9856,6 @@ find-up@^4.0.0, find-up@^4.1.0: locate-path "^5.0.0" path-exists "^4.0.0" -find-up@^6.3.0: - version "6.3.0" - resolved "https://registry.yarnpkg.com/find-up/-/find-up-6.3.0.tgz#2abab3d3280b2dc7ac10199ef324c4e002c8c790" - integrity sha512-v2ZsoEuVHYy8ZIlYqwPe/39Cy+cFDzp4dXPaxNvkEuouymu+2Jbz0PxpKarJHYJTmv2HWT3O382qY8l4jMWthw== - dependencies: - locate-path "^7.1.0" - path-exists "^5.0.0" - flat-cache@^3.0.4: version "3.1.0" resolved "https://registry.yarnpkg.com/flat-cache/-/flat-cache-3.1.0.tgz#0e54ab4a1a60fe87e2946b6b00657f1c99e1af3f" @@ -10541,24 +9973,6 @@ fork-ts-checker-webpack-plugin@^7.2.1: semver "^7.3.5" tapable "^2.2.1" -fork-ts-checker-webpack-plugin@^8.0.0: - version "8.0.0" - resolved "https://registry.yarnpkg.com/fork-ts-checker-webpack-plugin/-/fork-ts-checker-webpack-plugin-8.0.0.tgz#dae45dfe7298aa5d553e2580096ced79b6179504" - integrity sha512-mX3qW3idpueT2klaQXBzrIM/pHw+T0B/V9KHEvNrqijTq9NFnMZU6oreVxDYcf33P8a5cW+67PjodNHthGnNVg== - dependencies: - "@babel/code-frame" "^7.16.7" - chalk "^4.1.2" - chokidar "^3.5.3" - cosmiconfig "^7.0.1" - deepmerge "^4.2.2" - fs-extra "^10.0.0" - memfs "^3.4.1" - minimatch "^3.0.4" - node-abort-controller "^3.0.1" - schema-utils "^3.1.1" - semver "^7.3.5" - tapable "^2.2.1" - form-data@^3.0.0: version "3.0.1" resolved "https://registry.yarnpkg.com/form-data/-/form-data-3.0.1.tgz#ebd53791b78356a99af9a300d4282c4d5eb9755f" @@ -10883,7 +10297,7 @@ glob-parent@^3.1.0: is-glob "^3.1.0" path-dirname "^1.0.0" -glob-parent@^6.0.1, glob-parent@^6.0.2: +glob-parent@^6.0.2: version "6.0.2" resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-6.0.2.tgz#6d237d99083950c79290f24c7642a3de9a28f9e3" integrity sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A== @@ -11014,17 +10428,6 @@ globby@11.1.0, globby@^11.0.2, globby@^11.1.0: merge2 "^1.4.1" slash "^3.0.0" -globby@^13.1.1: - version "13.2.2" - resolved "https://registry.yarnpkg.com/globby/-/globby-13.2.2.tgz#63b90b1bf68619c2135475cbd4e71e66aa090592" - integrity sha512-Y1zNGV+pzQdh7H39l9zgB4PJqjRNqydvdYCDG4HFXM4XuvSaQQlEc91IU1yALL8gUTDomgBAfz3XJdmUS+oo0w== - dependencies: - dir-glob "^3.0.1" - fast-glob "^3.3.0" - ignore "^5.2.4" - merge2 "^1.4.1" - slash "^4.0.0" - globby@^6.1.0: version "6.1.0" resolved "https://registry.yarnpkg.com/globby/-/globby-6.1.0.tgz#f5a6d70e8395e21c858fb0489d64df02424d506c" @@ -11072,7 +10475,7 @@ handle-thing@^2.0.0: resolved "https://registry.yarnpkg.com/handle-thing/-/handle-thing-2.0.1.tgz#857f79ce359580c340d43081cc648970d0bb234e" integrity sha512-9Qn4yBxelxoh2Ow62nP+Ka/kMnOXRi8BXnRaUwezLNhqelnN49xKz4F/dPP8OYLxLxq6JDtZb2i9XznUQbNPTg== -handlebars@^4.7.7, handlebars@^4.7.8: +handlebars@^4.7.7: version "4.7.8" resolved "https://registry.yarnpkg.com/handlebars/-/handlebars-4.7.8.tgz#41c42c18b1be2365439188c77c6afae71c0cd9e9" integrity sha512-vafaFqs8MZkRrSX7sFVUdo3ap/eNiLnb4IakshzvP56X5Nr1iGKAIqdX6tMlm6HcNRIkr6AxO5jFEoJzzpT8aQ== @@ -11404,7 +10807,7 @@ html-void-elements@^1.0.0: resolved "https://registry.yarnpkg.com/html-void-elements/-/html-void-elements-1.0.5.tgz#ce9159494e86d95e45795b166c2021c2cfca4483" integrity sha512-uE/TxKuyNIcx44cIWnjr/rfIATDH7ZaOMmstu0CwhFG1Dunhlp4OC6/NMbhiwoq5BpW0ubi303qnEk/PZj614w== -html-webpack-plugin@>=5.0.0, html-webpack-plugin@^5.0.0, html-webpack-plugin@^5.3.2, html-webpack-plugin@^5.5.3: +html-webpack-plugin@>=5.0.0, html-webpack-plugin@^5.0.0, html-webpack-plugin@^5.3.2: version "5.5.3" resolved "https://registry.yarnpkg.com/html-webpack-plugin/-/html-webpack-plugin-5.5.3.tgz#72270f4a78e222b5825b296e5e3e1328ad525a3e" integrity sha512-6YrDKTuqaP/TquFH7h4srYWsZx+x6k6+FbsTm0ziCwGHDP78Unr1r9F/H4+sGmMbX08GQcJ+K64x55b+7VM/jg== @@ -11611,7 +11014,7 @@ ignore@^4.0.3, ignore@^4.0.6: resolved "https://registry.yarnpkg.com/ignore/-/ignore-4.0.6.tgz#750e3db5862087b4737ebac8207ffd1ef27b25fc" integrity sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg== -ignore@^5.0.4, ignore@^5.2.0, ignore@^5.2.4: +ignore@^5.0.4, ignore@^5.2.0: version "5.2.4" resolved "https://registry.yarnpkg.com/ignore/-/ignore-5.2.4.tgz#a291c0c6178ff1b960befe47fcdec301674a6324" integrity sha512-MAb38BcSbH0eHNBxn7ql2NH/kX33OkB3lZ1BNdh7ENeRChHTYsTvWrMubiIAMNS2llXEEgZ1MUOBtXChP3kaFQ== @@ -11745,11 +11148,6 @@ interpret@^2.2.0: resolved "https://registry.yarnpkg.com/interpret/-/interpret-2.2.0.tgz#1a78a0b5965c40a5416d007ad6f50ad27c417df9" integrity sha512-Ju0Bz/cEia55xDwUWEa8+olFpCiQoypjnQySseKtmjNrnps3P+xfpUmGr90T7yjlVJmOtybRvPXhKMbHr+fWnw== -interpret@^3.1.1: - version "3.1.1" - resolved "https://registry.yarnpkg.com/interpret/-/interpret-3.1.1.tgz#5be0ceed67ca79c6c4bc5cf0d7ee843dcea110c4" - integrity sha512-6xwYfHbajpoF0xLW+iwLkhwgvLoZDfjYfoFNu8ftMoXINzwuymNLd9u/KmwtdT2GbR+/Cz66otEGEVVUHX9QLQ== - ip@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/ip/-/ip-2.0.0.tgz#4cf4ab182fee2314c75ede1276f8c80b479936da" @@ -12173,11 +11571,6 @@ is-potential-custom-element-name@^1.0.1: resolved "https://registry.yarnpkg.com/is-potential-custom-element-name/-/is-potential-custom-element-name-1.0.1.tgz#171ed6f19e3ac554394edf78caa05784a45bebb5" integrity sha512-bCYeRA2rVibKZd+s2625gGnGF/t7DSqDs4dP7CrLA1m7jKWz6pps0LpYLJN8Q64HtmPKJ1hrN3nzPNKFEKOUiQ== -is-promise@^2.2.2: - version "2.2.2" - resolved "https://registry.yarnpkg.com/is-promise/-/is-promise-2.2.2.tgz#39ab959ccbf9a774cf079f7b40c7a26f763135f1" - integrity sha512-+lP4/6lKUBfQjZ2pdxThZvLUAafmZb8OAxFb8XXtiQmS35INgr85hdOGoEs124ez1FCnZJt6jau/T+alh58QFQ== - is-reference@1.2.1: version "1.2.1" resolved "https://registry.yarnpkg.com/is-reference/-/is-reference-1.2.1.tgz#8b2dac0b371f4bc994fdeaba9eb542d03002d0b7" @@ -12390,17 +11783,6 @@ istanbul-lib-instrument@^5.0.4, istanbul-lib-instrument@^5.1.0: istanbul-lib-coverage "^3.2.0" semver "^6.3.0" -istanbul-lib-instrument@^6.0.0: - version "6.0.0" - resolved "https://registry.yarnpkg.com/istanbul-lib-instrument/-/istanbul-lib-instrument-6.0.0.tgz#7a8af094cbfff1d5bb280f62ce043695ae8dd5b8" - integrity sha512-x58orMzEVfzPUKqlbLd1hXCnySCxKdDKa6Rjg97CwuLLRI4g3FHTdnExu1OqffVFay6zeMW+T6/DowFLndWnIw== - dependencies: - "@babel/core" "^7.12.3" - "@babel/parser" "^7.14.7" - "@istanbuljs/schema" "^0.1.2" - istanbul-lib-coverage "^3.2.0" - semver "^7.5.4" - istanbul-lib-report@^3.0.0: version "3.0.1" resolved "https://registry.yarnpkg.com/istanbul-lib-report/-/istanbul-lib-report-3.0.1.tgz#908305bac9a5bd175ac6a74489eafd0fc2445a7d" @@ -12483,15 +11865,6 @@ jest-changed-files@^27.5.1: execa "^5.0.0" throat "^6.0.1" -jest-changed-files@^29.7.0: - version "29.7.0" - resolved "https://registry.yarnpkg.com/jest-changed-files/-/jest-changed-files-29.7.0.tgz#1c06d07e77c78e1585d020424dedc10d6e17ac3a" - integrity sha512-fEArFiwf1BpQ+4bXSprcDc3/x4HSzL4al2tozwVpDFpsxALjLYdyiIK4e5Vz66GQJIbXJ82+35PtysofptNX2w== - dependencies: - execa "^5.0.0" - jest-util "^29.7.0" - p-limit "^3.1.0" - jest-circus@^27.5.1: version "27.5.1" resolved "https://registry.yarnpkg.com/jest-circus/-/jest-circus-27.5.1.tgz#37a5a4459b7bf4406e53d637b49d22c65d125ecc" @@ -12517,32 +11890,6 @@ jest-circus@^27.5.1: stack-utils "^2.0.3" throat "^6.0.1" -jest-circus@^29.7.0: - version "29.7.0" - resolved "https://registry.yarnpkg.com/jest-circus/-/jest-circus-29.7.0.tgz#b6817a45fcc835d8b16d5962d0c026473ee3668a" - integrity sha512-3E1nCMgipcTkCocFwM90XXQab9bS+GMsjdpmPrlelaxwD93Ad8iVEjX/vvHPdLPnFf+L40u+5+iutRdA1N9myw== - dependencies: - "@jest/environment" "^29.7.0" - "@jest/expect" "^29.7.0" - "@jest/test-result" "^29.7.0" - "@jest/types" "^29.6.3" - "@types/node" "*" - chalk "^4.0.0" - co "^4.6.0" - dedent "^1.0.0" - is-generator-fn "^2.0.0" - jest-each "^29.7.0" - jest-matcher-utils "^29.7.0" - jest-message-util "^29.7.0" - jest-runtime "^29.7.0" - jest-snapshot "^29.7.0" - jest-util "^29.7.0" - p-limit "^3.1.0" - pretty-format "^29.7.0" - pure-rand "^6.0.0" - slash "^3.0.0" - stack-utils "^2.0.3" - jest-cli@^27.5.1: version "27.5.1" resolved "https://registry.yarnpkg.com/jest-cli/-/jest-cli-27.5.1.tgz#278794a6e6458ea8029547e6c6cbf673bd30b145" @@ -12561,23 +11908,6 @@ jest-cli@^27.5.1: prompts "^2.0.1" yargs "^16.2.0" -jest-cli@^29.7.0: - version "29.7.0" - resolved "https://registry.yarnpkg.com/jest-cli/-/jest-cli-29.7.0.tgz#5592c940798e0cae677eec169264f2d839a37995" - integrity sha512-OVVobw2IubN/GSYsxETi+gOe7Ka59EFMR/twOU3Jb2GnKKeMGJB5SGUUrEz3SFVmJASUdZUzy83sLNNQ2gZslg== - dependencies: - "@jest/core" "^29.7.0" - "@jest/test-result" "^29.7.0" - "@jest/types" "^29.6.3" - chalk "^4.0.0" - create-jest "^29.7.0" - exit "^0.1.2" - import-local "^3.0.2" - jest-config "^29.7.0" - jest-util "^29.7.0" - jest-validate "^29.7.0" - yargs "^17.3.1" - jest-config@^27.5.1: version "27.5.1" resolved "https://registry.yarnpkg.com/jest-config/-/jest-config-27.5.1.tgz#5c387de33dca3f99ad6357ddeccd91bf3a0e4a41" @@ -12608,34 +11938,6 @@ jest-config@^27.5.1: slash "^3.0.0" strip-json-comments "^3.1.1" -jest-config@^29.7.0: - version "29.7.0" - resolved "https://registry.yarnpkg.com/jest-config/-/jest-config-29.7.0.tgz#bcbda8806dbcc01b1e316a46bb74085a84b0245f" - integrity sha512-uXbpfeQ7R6TZBqI3/TxCU4q4ttk3u0PJeC+E0zbfSoSjq6bJ7buBPxzQPL0ifrkY4DNu4JUdk0ImlBUYi840eQ== - dependencies: - "@babel/core" "^7.11.6" - "@jest/test-sequencer" "^29.7.0" - "@jest/types" "^29.6.3" - babel-jest "^29.7.0" - chalk "^4.0.0" - ci-info "^3.2.0" - deepmerge "^4.2.2" - glob "^7.1.3" - graceful-fs "^4.2.9" - jest-circus "^29.7.0" - jest-environment-node "^29.7.0" - jest-get-type "^29.6.3" - jest-regex-util "^29.6.3" - jest-resolve "^29.7.0" - jest-runner "^29.7.0" - jest-util "^29.7.0" - jest-validate "^29.7.0" - micromatch "^4.0.4" - parse-json "^5.2.0" - pretty-format "^29.7.0" - slash "^3.0.0" - strip-json-comments "^3.1.1" - "jest-diff@>=29.4.3 < 30", jest-diff@^29.7.0: version "29.7.0" resolved "https://registry.yarnpkg.com/jest-diff/-/jest-diff-29.7.0.tgz#017934a66ebb7ecf6f205e84699be10afd70458a" @@ -12673,13 +11975,6 @@ jest-docblock@^27.5.1: dependencies: detect-newline "^3.0.0" -jest-docblock@^29.7.0: - version "29.7.0" - resolved "https://registry.yarnpkg.com/jest-docblock/-/jest-docblock-29.7.0.tgz#8fddb6adc3cdc955c93e2a87f61cfd350d5d119a" - integrity sha512-q617Auw3A612guyaFgsbFeYpNP5t2aoUNLwBUbc/0kD1R4t9ixDbyFTHd1nok4epoVFpr7PmeWHrhvuV3XaJ4g== - dependencies: - detect-newline "^3.0.0" - jest-each@^27.5.1: version "27.5.1" resolved "https://registry.yarnpkg.com/jest-each/-/jest-each-27.5.1.tgz#5bc87016f45ed9507fed6e4702a5b468a5b2c44e" @@ -12691,17 +11986,6 @@ jest-each@^27.5.1: jest-util "^27.5.1" pretty-format "^27.5.1" -jest-each@^29.7.0: - version "29.7.0" - resolved "https://registry.yarnpkg.com/jest-each/-/jest-each-29.7.0.tgz#162a9b3f2328bdd991beaabffbb74745e56577d1" - integrity sha512-gns+Er14+ZrEoC5fhOfYCY1LOHHr0TI+rQUHZS8Ttw2l7gl+80eHc/gFf2Ktkw0+SIACDTeWvpFcv3B04VembQ== - dependencies: - "@jest/types" "^29.6.3" - chalk "^4.0.0" - jest-get-type "^29.6.3" - jest-util "^29.7.0" - pretty-format "^29.7.0" - jest-environment-jsdom@^27.5.1: version "27.5.1" resolved "https://registry.yarnpkg.com/jest-environment-jsdom/-/jest-environment-jsdom-27.5.1.tgz#ea9ccd1fc610209655a77898f86b2b559516a546" @@ -12727,18 +12011,6 @@ jest-environment-node@^27.5.1: jest-mock "^27.5.1" jest-util "^27.5.1" -jest-environment-node@^29.7.0: - version "29.7.0" - resolved "https://registry.yarnpkg.com/jest-environment-node/-/jest-environment-node-29.7.0.tgz#0b93e111dda8ec120bc8300e6d1fb9576e164376" - integrity sha512-DOSwCRqXirTOyheM+4d5YZOrWcdu0LNZ87ewUoywbcb2XR4wKgqiG8vNeYwhjFMbEkfju7wx2GYH0P2gevGvFw== - dependencies: - "@jest/environment" "^29.7.0" - "@jest/fake-timers" "^29.7.0" - "@jest/types" "^29.6.3" - "@types/node" "*" - jest-mock "^29.7.0" - jest-util "^29.7.0" - jest-get-type@^27.5.1: version "27.5.1" resolved "https://registry.yarnpkg.com/jest-get-type/-/jest-get-type-27.5.1.tgz#3cd613c507b0f7ace013df407a1c1cd578bcb4f1" @@ -12795,25 +12067,6 @@ jest-haste-map@^27.5.1: optionalDependencies: fsevents "^2.3.2" -jest-haste-map@^29.7.0: - version "29.7.0" - resolved "https://registry.yarnpkg.com/jest-haste-map/-/jest-haste-map-29.7.0.tgz#3c2396524482f5a0506376e6c858c3bbcc17b104" - integrity sha512-fP8u2pyfqx0K1rGn1R9pyE0/KTn+G7PxktWidOBTqFPLYX0b9ksaMFkhK5vrS3DVun09pckLdlx90QthlW7AmA== - dependencies: - "@jest/types" "^29.6.3" - "@types/graceful-fs" "^4.1.3" - "@types/node" "*" - anymatch "^3.0.3" - fb-watchman "^2.0.0" - graceful-fs "^4.2.9" - jest-regex-util "^29.6.3" - jest-util "^29.7.0" - jest-worker "^29.7.0" - micromatch "^4.0.4" - walker "^1.0.8" - optionalDependencies: - fsevents "^2.3.2" - jest-jasmine2@^27.5.1: version "27.5.1" resolved "https://registry.yarnpkg.com/jest-jasmine2/-/jest-jasmine2-27.5.1.tgz#a037b0034ef49a9f3d71c4375a796f3b230d1ac4" @@ -12845,14 +12098,6 @@ jest-leak-detector@^27.5.1: jest-get-type "^27.5.1" pretty-format "^27.5.1" -jest-leak-detector@^29.7.0: - version "29.7.0" - resolved "https://registry.yarnpkg.com/jest-leak-detector/-/jest-leak-detector-29.7.0.tgz#5b7ec0dadfdfec0ca383dc9aa016d36b5ea4c728" - integrity sha512-kYA8IJcSYtST2BY9I+SMC32nDpBT3J2NvWJx8+JCuCdl/CR1I4EKUJROiP8XtCcxqgTTBGJNdbB1A8XRKbTetw== - dependencies: - jest-get-type "^29.6.3" - pretty-format "^29.7.0" - jest-matcher-utils@^27.0.0, jest-matcher-utils@^27.5.1: version "27.5.1" resolved "https://registry.yarnpkg.com/jest-matcher-utils/-/jest-matcher-utils-27.5.1.tgz#9c0cdbda8245bc22d2331729d1091308b40cf8ab" @@ -12936,15 +12181,6 @@ jest-mock@^27.0.6, jest-mock@^27.5.1: "@jest/types" "^27.5.1" "@types/node" "*" -jest-mock@^29.7.0: - version "29.7.0" - resolved "https://registry.yarnpkg.com/jest-mock/-/jest-mock-29.7.0.tgz#4e836cf60e99c6fcfabe9f99d017f3fdd50a6347" - integrity sha512-ITOMZn+UkYS4ZFh83xYAOzWStloNzJFO2s8DWrE4lhtGD+AorgnbkiKERe4wQVBydIGPx059g6riW5Btp6Llnw== - dependencies: - "@jest/types" "^29.6.3" - "@types/node" "*" - jest-util "^29.7.0" - jest-pnp-resolver@^1.2.2: version "1.2.3" resolved "https://registry.yarnpkg.com/jest-pnp-resolver/-/jest-pnp-resolver-1.2.3.tgz#930b1546164d4ad5937d5540e711d4d38d4cad2e" @@ -12960,11 +12196,6 @@ jest-regex-util@^27.5.1: resolved "https://registry.yarnpkg.com/jest-regex-util/-/jest-regex-util-27.5.1.tgz#4da143f7e9fd1e542d4aa69617b38e4a78365b95" integrity sha512-4bfKq2zie+x16okqDXjXn9ql2B0dScQu+vcwe4TvFVhkVyuWLqpZrZtXxLLWoXYgn0E87I6r6GRYHF7wFZBUvg== -jest-regex-util@^29.6.3: - version "29.6.3" - resolved "https://registry.yarnpkg.com/jest-regex-util/-/jest-regex-util-29.6.3.tgz#4a556d9c776af68e1c5f48194f4d0327d24e8a52" - integrity sha512-KJJBsRCyyLNWCNBOvZyRDnAIfUiRJ8v+hOBQYGn8gDyF3UegwiP4gwRR3/SDa42g1YbVycTidUF3rKjyLFDWbg== - jest-resolve-dependencies@^27.5.1: version "27.5.1" resolved "https://registry.yarnpkg.com/jest-resolve-dependencies/-/jest-resolve-dependencies-27.5.1.tgz#d811ecc8305e731cc86dd79741ee98fed06f1da8" @@ -12974,14 +12205,6 @@ jest-resolve-dependencies@^27.5.1: jest-regex-util "^27.5.1" jest-snapshot "^27.5.1" -jest-resolve-dependencies@^29.7.0: - version "29.7.0" - resolved "https://registry.yarnpkg.com/jest-resolve-dependencies/-/jest-resolve-dependencies-29.7.0.tgz#1b04f2c095f37fc776ff40803dc92921b1e88428" - integrity sha512-un0zD/6qxJ+S0et7WxeI3H5XSe9lTBBR7bOHCHXkKR6luG5mwDDlIzVQ0V5cZCuoTgEdcdwzTghYkTWfubi+nA== - dependencies: - jest-regex-util "^29.6.3" - jest-snapshot "^29.7.0" - jest-resolve@^27.5.1: version "27.5.1" resolved "https://registry.yarnpkg.com/jest-resolve/-/jest-resolve-27.5.1.tgz#a2f1c5a0796ec18fe9eb1536ac3814c23617b384" @@ -12998,21 +12221,6 @@ jest-resolve@^27.5.1: resolve.exports "^1.1.0" slash "^3.0.0" -jest-resolve@^29.7.0: - version "29.7.0" - resolved "https://registry.yarnpkg.com/jest-resolve/-/jest-resolve-29.7.0.tgz#64d6a8992dd26f635ab0c01e5eef4399c6bcbc30" - integrity sha512-IOVhZSrg+UvVAshDSDtHyFCCBUl/Q3AAJv8iZ6ZjnZ74xzvwuzLXid9IIIPgTnY62SJjfuupMKZsZQRsCvxEgA== - dependencies: - chalk "^4.0.0" - graceful-fs "^4.2.9" - jest-haste-map "^29.7.0" - jest-pnp-resolver "^1.2.2" - jest-util "^29.7.0" - jest-validate "^29.7.0" - resolve "^1.20.0" - resolve.exports "^2.0.0" - slash "^3.0.0" - jest-runner@^27.5.1: version "27.5.1" resolved "https://registry.yarnpkg.com/jest-runner/-/jest-runner-27.5.1.tgz#071b27c1fa30d90540805c5645a0ec167c7b62e5" @@ -13040,33 +12248,6 @@ jest-runner@^27.5.1: source-map-support "^0.5.6" throat "^6.0.1" -jest-runner@^29.7.0: - version "29.7.0" - resolved "https://registry.yarnpkg.com/jest-runner/-/jest-runner-29.7.0.tgz#809af072d408a53dcfd2e849a4c976d3132f718e" - integrity sha512-fsc4N6cPCAahybGBfTRcq5wFR6fpLznMg47sY5aDpsoejOcVYFb07AHuSnR0liMcPTgBsA3ZJL6kFOjPdoNipQ== - dependencies: - "@jest/console" "^29.7.0" - "@jest/environment" "^29.7.0" - "@jest/test-result" "^29.7.0" - "@jest/transform" "^29.7.0" - "@jest/types" "^29.6.3" - "@types/node" "*" - chalk "^4.0.0" - emittery "^0.13.1" - graceful-fs "^4.2.9" - jest-docblock "^29.7.0" - jest-environment-node "^29.7.0" - jest-haste-map "^29.7.0" - jest-leak-detector "^29.7.0" - jest-message-util "^29.7.0" - jest-resolve "^29.7.0" - jest-runtime "^29.7.0" - jest-util "^29.7.0" - jest-watcher "^29.7.0" - jest-worker "^29.7.0" - p-limit "^3.1.0" - source-map-support "0.5.13" - jest-runtime@^27.5.1: version "27.5.1" resolved "https://registry.yarnpkg.com/jest-runtime/-/jest-runtime-27.5.1.tgz#4896003d7a334f7e8e4a53ba93fb9bcd3db0a1af" @@ -13095,34 +12276,6 @@ jest-runtime@^27.5.1: slash "^3.0.0" strip-bom "^4.0.0" -jest-runtime@^29.7.0: - version "29.7.0" - resolved "https://registry.yarnpkg.com/jest-runtime/-/jest-runtime-29.7.0.tgz#efecb3141cf7d3767a3a0cc8f7c9990587d3d817" - integrity sha512-gUnLjgwdGqW7B4LvOIkbKs9WGbn+QLqRQQ9juC6HndeDiezIwhDP+mhMwHWCEcfQ5RUXa6OPnFF8BJh5xegwwQ== - dependencies: - "@jest/environment" "^29.7.0" - "@jest/fake-timers" "^29.7.0" - "@jest/globals" "^29.7.0" - "@jest/source-map" "^29.6.3" - "@jest/test-result" "^29.7.0" - "@jest/transform" "^29.7.0" - "@jest/types" "^29.6.3" - "@types/node" "*" - chalk "^4.0.0" - cjs-module-lexer "^1.0.0" - collect-v8-coverage "^1.0.0" - glob "^7.1.3" - graceful-fs "^4.2.9" - jest-haste-map "^29.7.0" - jest-message-util "^29.7.0" - jest-mock "^29.7.0" - jest-regex-util "^29.6.3" - jest-resolve "^29.7.0" - jest-snapshot "^29.7.0" - jest-util "^29.7.0" - slash "^3.0.0" - strip-bom "^4.0.0" - jest-serializer@^26.6.2: version "26.6.2" resolved "https://registry.yarnpkg.com/jest-serializer/-/jest-serializer-26.6.2.tgz#d139aafd46957d3a448f3a6cdabe2919ba0742d1" @@ -13167,32 +12320,6 @@ jest-snapshot@^27.5.1: pretty-format "^27.5.1" semver "^7.3.2" -jest-snapshot@^29.7.0: - version "29.7.0" - resolved "https://registry.yarnpkg.com/jest-snapshot/-/jest-snapshot-29.7.0.tgz#c2c574c3f51865da1bb329036778a69bf88a6be5" - integrity sha512-Rm0BMWtxBcioHr1/OX5YCP8Uov4riHvKPknOGs804Zg9JGZgmIBkbtlxJC/7Z4msKYVbIJtfU+tKb8xlYNfdkw== - dependencies: - "@babel/core" "^7.11.6" - "@babel/generator" "^7.7.2" - "@babel/plugin-syntax-jsx" "^7.7.2" - "@babel/plugin-syntax-typescript" "^7.7.2" - "@babel/types" "^7.3.3" - "@jest/expect-utils" "^29.7.0" - "@jest/transform" "^29.7.0" - "@jest/types" "^29.6.3" - babel-preset-current-node-syntax "^1.0.0" - chalk "^4.0.0" - expect "^29.7.0" - graceful-fs "^4.2.9" - jest-diff "^29.7.0" - jest-get-type "^29.6.3" - jest-matcher-utils "^29.7.0" - jest-message-util "^29.7.0" - jest-util "^29.7.0" - natural-compare "^1.4.0" - pretty-format "^29.7.0" - semver "^7.5.3" - jest-util@^26.6.2: version "26.6.2" resolved "https://registry.yarnpkg.com/jest-util/-/jest-util-26.6.2.tgz#907535dbe4d5a6cb4c47ac9b926f6af29576cbc1" @@ -13229,7 +12356,7 @@ jest-util@^28.1.3: graceful-fs "^4.2.9" picomatch "^2.2.3" -jest-util@^29.0.0, jest-util@^29.7.0: +jest-util@^29.7.0: version "29.7.0" resolved "https://registry.yarnpkg.com/jest-util/-/jest-util-29.7.0.tgz#23c2b62bfb22be82b44de98055802ff3710fc0bc" integrity sha512-z6EbKajIpqGKU56y5KBUgy1dt1ihhQJgWzUlZHArA/+X2ad7Cb5iF+AK1EWVL/Bo7Rz9uurpqw6SiBCefUbCGA== @@ -13253,18 +12380,6 @@ jest-validate@^27.5.1: leven "^3.1.0" pretty-format "^27.5.1" -jest-validate@^29.7.0: - version "29.7.0" - resolved "https://registry.yarnpkg.com/jest-validate/-/jest-validate-29.7.0.tgz#7bf705511c64da591d46b15fce41400d52147d9c" - integrity sha512-ZB7wHqaRGVw/9hST/OuFUReG7M8vKeq0/J2egIGLdvjHCmYqGARhzXmtgi+gVeZ5uXFF219aOc3Ls2yLg27tkw== - dependencies: - "@jest/types" "^29.6.3" - camelcase "^6.2.0" - chalk "^4.0.0" - jest-get-type "^29.6.3" - leven "^3.1.0" - pretty-format "^29.7.0" - jest-watcher@^27.5.1: version "27.5.1" resolved "https://registry.yarnpkg.com/jest-watcher/-/jest-watcher-27.5.1.tgz#71bd85fb9bde3a2c2ec4dc353437971c43c642a2" @@ -13278,20 +12393,6 @@ jest-watcher@^27.5.1: jest-util "^27.5.1" string-length "^4.0.1" -jest-watcher@^29.7.0: - version "29.7.0" - resolved "https://registry.yarnpkg.com/jest-watcher/-/jest-watcher-29.7.0.tgz#7810d30d619c3a62093223ce6bb359ca1b28a2f2" - integrity sha512-49Fg7WXkU3Vl2h6LbLtMQ/HyB6rXSIX7SqvBLQmssRBGN9I0PNvPmAmCWSOY6SOvrjhI/F7/bGAv9RtnsPA03g== - dependencies: - "@jest/test-result" "^29.7.0" - "@jest/types" "^29.6.3" - "@types/node" "*" - ansi-escapes "^4.2.1" - chalk "^4.0.0" - emittery "^0.13.1" - jest-util "^29.7.0" - string-length "^4.0.1" - jest-worker@^26.5.0, jest-worker@^26.6.2: version "26.6.2" resolved "https://registry.yarnpkg.com/jest-worker/-/jest-worker-26.6.2.tgz#7f72cbc4d643c365e27b9fd775f9d0eaa9c7a8ed" @@ -13310,16 +12411,6 @@ jest-worker@^27.0.2, jest-worker@^27.4.5, jest-worker@^27.5.1: merge-stream "^2.0.0" supports-color "^8.0.0" -jest-worker@^29.4.3, jest-worker@^29.7.0: - version "29.7.0" - resolved "https://registry.yarnpkg.com/jest-worker/-/jest-worker-29.7.0.tgz#acad073acbbaeb7262bd5389e1bcf43e10058d4a" - integrity sha512-eIz2msL/EzL9UFTFFx7jBTkeZfku0yUAyZZZmJ93H2TYEiroIx2PQjEXcwYtYl8zXCxb+PAmA2hLIt/6ZEkPHw== - dependencies: - "@types/node" "*" - jest-util "^29.7.0" - merge-stream "^2.0.0" - supports-color "^8.0.0" - jest@^27.1.0: version "27.5.1" resolved "https://registry.yarnpkg.com/jest/-/jest-27.5.1.tgz#dadf33ba70a779be7a6fc33015843b51494f63fc" @@ -13329,16 +12420,6 @@ jest@^27.1.0: import-local "^3.0.2" jest-cli "^27.5.1" -jest@^29.5.0: - version "29.7.0" - resolved "https://registry.yarnpkg.com/jest/-/jest-29.7.0.tgz#994676fc24177f088f1c5e3737f5697204ff2613" - integrity sha512-NIy3oAFp9shda19hy4HK0HRTWKtPJmGdnvywu01nOqNC2vZg+Z+fvJDxpMQA88eb2I9EcafcdjYgsDthnYTvGw== - dependencies: - "@jest/core" "^29.7.0" - "@jest/types" "^29.6.3" - import-local "^3.0.2" - jest-cli "^29.7.0" - js-sha3@^0.8.0: version "0.8.0" resolved "https://registry.yarnpkg.com/js-sha3/-/js-sha3-0.8.0.tgz#b9b7a5da73afad7dedd0f8c463954cbde6818840" @@ -13464,7 +12545,7 @@ json5@^1.0.1, json5@^1.0.2: dependencies: minimist "^1.2.0" -jsonc-parser@3.2.0, jsonc-parser@^3.0.0, jsonc-parser@^3.2.0: +jsonc-parser@3.2.0, jsonc-parser@^3.0.0: version "3.2.0" resolved "https://registry.yarnpkg.com/jsonc-parser/-/jsonc-parser-3.2.0.tgz#31ff3f4c2b9793f89c67212627c51c6394f88e76" integrity sha512-gfFQZrcTc8CnKXp6Y4/CBT3fTc0OVuDofpre4aEeEpSBPV5X5v4+Vmx+8snU7RLPrNHPKSgLxGo9YuQzz20o+w== @@ -13780,7 +12861,7 @@ lie@3.1.1: dependencies: immediate "~3.0.5" -lilconfig@^2.0.3, lilconfig@^2.1.0: +lilconfig@^2.0.3: version "2.1.0" resolved "https://registry.yarnpkg.com/lilconfig/-/lilconfig-2.1.0.tgz#78e23ac89ebb7e1bfbf25b18043de756548e7f52" integrity sha512-utWOt/GHzuUxnLKxB6dk81RoOeoNeHgbrXiuGk4yyF5qlRz+iIVWu56E2fqGHFrXz0QNUhLB/8nKqvRH66JKGQ== @@ -13891,13 +12972,6 @@ locate-path@^6.0.0: dependencies: p-locate "^5.0.0" -locate-path@^7.1.0: - version "7.2.0" - resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-7.2.0.tgz#69cb1779bd90b35ab1e771e1f2f89a202c2a8a8a" - integrity sha512-gvVijfZvn7R+2qyPX8mAuKcFGDf6Nc61GdvGafQsHL0sBIxfKzA+usWn4GFC/bk+QdwPUD4kWFJLhElipq+0VA== - dependencies: - p-locate "^6.0.0" - lodash-es@^4.17.21: version "4.17.21" resolved "https://registry.yarnpkg.com/lodash-es/-/lodash-es-4.17.21.tgz#43e626c46e6591b7750beb2b50117390c609e3ee" @@ -14022,13 +13096,6 @@ lru-cache@^7.4.4, lru-cache@^7.5.1, lru-cache@^7.7.1: resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-10.0.1.tgz#0a3be479df549cca0e5d693ac402ff19537a6b7a" integrity sha512-IJ4uwUTi2qCccrioU6g9g/5rvvVl13bsdczUUcqbciD9iLr095yj8DQKdObriEvuNSx325N1rV1O0sJFszx75g== -lru-queue@^0.1.0: - version "0.1.0" - resolved "https://registry.yarnpkg.com/lru-queue/-/lru-queue-0.1.0.tgz#2738bd9f0d3cf4f84490c5736c48699ac632cda3" - integrity sha512-BpdYkt9EvGl8OfWHDQPISVpcl5xZthb+XPsbELj5AQXxIC8IriDZIQYjBJPEm5rS420sjZ0TLEzRcq5KdBhYrQ== - dependencies: - es5-ext "~0.10.2" - lunr@^2.3.9: version "2.3.9" resolved "https://registry.yarnpkg.com/lunr/-/lunr-2.3.9.tgz#18b123142832337dd6e964df1a5a7707b25d35e1" @@ -14164,7 +13231,7 @@ markdown-extensions@^1.0.0: resolved "https://registry.yarnpkg.com/markdown-extensions/-/markdown-extensions-1.1.1.tgz#fea03b539faeaee9b4ef02a3769b455b189f7fc3" integrity sha512-WWC0ZuMzCyDHYCasEGs4IPvLyTGftYwh6wIEOULOF0HXcqZlhwRzrK0w2VUlxWA98xnvb/jszw4ZSkJ6ADpM6Q== -marked@^4.0.16, marked@^4.3.0: +marked@^4.0.16: version "4.3.0" resolved "https://registry.yarnpkg.com/marked/-/marked-4.3.0.tgz#796362821b019f734054582038b116481b456cf3" integrity sha512-PRsaiG84bK+AMvxziE/lCFss8juXjNaWzVbN5tXAm4XjeaS9NAHhop+PjQxz2A9h8Q4M/xGmzP8vqNwy6JeK0A== @@ -14337,16 +13404,6 @@ mdn-data@2.0.14: resolved "https://registry.yarnpkg.com/mdn-data/-/mdn-data-2.0.14.tgz#7113fc4281917d63ce29b43446f701e68c25ba50" integrity sha512-dn6wd0uw5GsdswPFfsgMp5NSB0/aDe6fK94YJV/AJDYXL6HVLWBsxeq7js7Ad+mU2K9LAlwpk6kN2D5mwCPVow== -mdn-data@2.0.28: - version "2.0.28" - resolved "https://registry.yarnpkg.com/mdn-data/-/mdn-data-2.0.28.tgz#5ec48e7bef120654539069e1ae4ddc81ca490eba" - integrity sha512-aylIc7Z9y4yzHYAJNuESG3hfhC+0Ibp/MAMiaOZgNv4pmEdFyfZhhhny4MNiAfWdBQ1RQ2mfDWmM1x8SvGyp8g== - -mdn-data@2.0.30: - version "2.0.30" - resolved "https://registry.yarnpkg.com/mdn-data/-/mdn-data-2.0.30.tgz#ce4df6f80af6cfbe218ecd5c552ba13c4dfa08cc" - integrity sha512-GaqWWShW4kv/G9IEucWScBx9G1/vsFZZJUO+tD26M8J8z3Kw5RDQjaoZe03YAClgeS/SWPOcb4nkFBTEi5DUEA== - mdurl@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/mdurl/-/mdurl-1.0.1.tgz#fe85b2ec75a59037f2adfec100fd6c601761152e" @@ -14372,20 +13429,6 @@ memfs@^3.1.2, memfs@^3.2.2, memfs@^3.4.1, memfs@^3.4.3: dependencies: fs-monkey "^1.0.4" -memoizee@^0.4.15: - version "0.4.15" - resolved "https://registry.yarnpkg.com/memoizee/-/memoizee-0.4.15.tgz#e6f3d2da863f318d02225391829a6c5956555b72" - integrity sha512-UBWmJpLZd5STPm7PMUlOw/TSy972M+z8gcyQ5veOnSDRREz/0bmpyTfKt3/51DhEBqCZQn1udM/5flcSPYhkdQ== - dependencies: - d "^1.0.1" - es5-ext "^0.10.53" - es6-weak-map "^2.0.3" - event-emitter "^0.3.5" - is-promise "^2.2.2" - lru-queue "^0.1.0" - next-tick "^1.1.0" - timers-ext "^0.1.7" - memoizerific@^1.11.3: version "1.11.3" resolved "https://registry.yarnpkg.com/memoizerific/-/memoizerific-1.11.3.tgz#7c87a4646444c32d75438570905f2dbd1b1a805a" @@ -14817,11 +13860,6 @@ mime@^2.4.4: resolved "https://registry.yarnpkg.com/mime/-/mime-2.6.0.tgz#a2a682a95cd4d0cb1d6257e28f83da7e35800367" integrity sha512-USPkMeET31rOMiarsBNIHZKLGgvKc/LrjofAnBlOttf5ajRvqiRA8QsenbcooctK6d6Ts6aqZXBA+XbkKthiQg== -mime@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/mime/-/mime-3.0.0.tgz#b374550dca3a0c18443b0c950a6a58f1931cf7a7" - integrity sha512-jSCU7/VB1loIWBZe14aEYHU/+1UMEHoaO7qxCOVJOw9GgH72VAWppxNcjU+x9a2k3GSIBXNKxXQFqRvvZ7vr3A== - mimic-fn@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-2.1.0.tgz#7ed2c2ccccaf84d3ffcb7a69b57711fc2083401b" @@ -14849,7 +13887,7 @@ min-indent@^1.0.0: resolved "https://registry.yarnpkg.com/min-indent/-/min-indent-1.0.1.tgz#a63f681673b30571fbe8bc25686ae746eefa9869" integrity sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg== -mini-css-extract-plugin@^2.2.2, mini-css-extract-plugin@^2.7.6: +mini-css-extract-plugin@^2.2.2: version "2.7.6" resolved "https://registry.yarnpkg.com/mini-css-extract-plugin/-/mini-css-extract-plugin-2.7.6.tgz#282a3d38863fddcd2e0c220aaed5b90bc156564d" integrity sha512-Qk7HcgaPkGG6eD77mLvZS1nmxlao3j+9PkrT9Uc7HAE1id3F41+DdBRYRYkbyfNRGzm8/YWtzhw7nVPmwhqTQw== @@ -14917,7 +13955,7 @@ minimist-options@4.1.0: is-plain-obj "^1.1.0" kind-of "^6.0.3" -minimist@^1.1.1, minimist@^1.1.3, minimist@^1.2.0, minimist@^1.2.3, minimist@^1.2.5, minimist@^1.2.6, minimist@~1.2.0: +minimist@^1.1.1, minimist@^1.1.3, minimist@^1.2.0, minimist@^1.2.3, minimist@^1.2.5, minimist@^1.2.6: version "1.2.8" resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.8.tgz#c1a464e7693302e082a075cee0c057741ac4772c" integrity sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA== @@ -15212,11 +14250,6 @@ nested-error-stacks@^2.0.0, nested-error-stacks@^2.1.0: resolved "https://registry.yarnpkg.com/nested-error-stacks/-/nested-error-stacks-2.1.1.tgz#26c8a3cee6cc05fbcf1e333cd2fc3e003326c0b5" integrity sha512-9iN1ka/9zmX1ZvLV9ewJYEk9h7RyRRtqdK0woXcqohu8EWIerfPUjYJPg0ULy0UqP7cslmdGc8xKDJcojlKiaw== -next-tick@1, next-tick@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/next-tick/-/next-tick-1.1.0.tgz#1836ee30ad56d67ef281b22bd199f709449b35eb" - integrity sha512-CXdUiJembsNjuToQvxayPZF9Vqht7hewsvy2sOWafLvi2awflj9mOC6bHIg50orX8IJvWKY9wYQ/zB2kogPslQ== - nice-try@^1.0.4: version "1.0.5" resolved "https://registry.yarnpkg.com/nice-try/-/nice-try-1.0.5.tgz#a3378a7696ce7d223e88fc9b764bd7ef1089e366" @@ -15349,22 +14382,6 @@ node-releases@^2.0.13: resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-2.0.13.tgz#d5ed1627c23e3461e819b02e57b75e4899b1c81d" integrity sha512-uYr7J37ae/ORWdZeQ1xxMJe3NtdmqMC/JZK+geofDrkLUApKRHPd18/TxtBOJ4A0/+uUIliorNrfYV6s1b02eQ== -nodemon@3.0.1: - version "3.0.1" - resolved "https://registry.yarnpkg.com/nodemon/-/nodemon-3.0.1.tgz#affe822a2c5f21354466b2fc8ae83277d27dadc7" - integrity sha512-g9AZ7HmkhQkqXkRc20w+ZfQ73cHLbE8hnPbtaFbFtCumZsjyMhKk9LajQ07U5Ux28lvFjZ5X7HvWR1xzU8jHVw== - dependencies: - chokidar "^3.5.2" - debug "^3.2.7" - ignore-by-default "^1.0.1" - minimatch "^3.1.2" - pstree.remy "^1.1.8" - semver "^7.5.3" - simple-update-notifier "^2.0.0" - supports-color "^5.5.0" - touch "^3.1.0" - undefsafe "^2.0.5" - nodemon@^2.0.21: version "2.0.22" resolved "https://registry.yarnpkg.com/nodemon/-/nodemon-2.0.22.tgz#182c45c3a78da486f673d6c1702e00728daf5258" @@ -15820,7 +14837,7 @@ open@^7.0.3: is-docker "^2.0.0" is-wsl "^2.1.1" -open@^8.0.0, open@^8.0.9, open@^8.4.0: +open@^8.0.9, open@^8.4.0: version "8.4.2" resolved "https://registry.yarnpkg.com/open/-/open-8.4.2.tgz#5b5ffe2a8f793dcd2aad73e550cb87b59cb084f9" integrity sha512-7x81NCL719oNbsq/3mh+hVrAWmFuEYUqrq/Iw3kUzH8ReypT9QQ0BLoJS7/G9k6N81XjW4qHWtjWwe/9eLy1EQ== @@ -15916,20 +14933,13 @@ p-limit@^2.0.0, p-limit@^2.2.0: dependencies: p-try "^2.0.0" -p-limit@^3.0.2, p-limit@^3.1.0: +p-limit@^3.0.2: version "3.1.0" resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-3.1.0.tgz#e1daccbe78d0d1388ca18c64fea38e3e57e3706b" integrity sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ== dependencies: yocto-queue "^0.1.0" -p-limit@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-4.0.0.tgz#914af6544ed32bfa54670b061cafcbd04984b644" - integrity sha512-5b0R4txpzjPWVw/cXXUResoD4hb6U/x9BH08L7nw+GN1sezDzPdxeRvpc9c433fZhBan/wusjbCsqwqm4EIBIQ== - dependencies: - yocto-queue "^1.0.0" - p-locate@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-2.0.0.tgz#20a0103b222a70c8fd39cc2e580680f3dde5ec43" @@ -15958,13 +14968,6 @@ p-locate@^5.0.0: dependencies: p-limit "^3.0.2" -p-locate@^6.0.0: - version "6.0.0" - resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-6.0.0.tgz#3da9a49d4934b901089dca3302fa65dc5a05c04f" - integrity sha512-wPrq66Llhl7/4AGC6I+cqxT07LhXvWL08LNXz1fENOw0Ap4sRZZ/gZpTTJ5jpurzzzfS2W/Ge9BY3LgLjCShcw== - dependencies: - p-limit "^4.0.0" - p-map-series@2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/p-map-series/-/p-map-series-2.1.0.tgz#7560d4c452d9da0c07e692fdbfe6e2c81a2a91f2" @@ -16235,11 +15238,6 @@ path-exists@^4.0.0: resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-4.0.0.tgz#513bdbe2d3b95d7762e8c1137efa195c6c61b5b3" integrity sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w== -path-exists@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-5.0.0.tgz#a6aad9489200b21fab31e49cf09277e5116fb9e7" - integrity sha512-RjhtfwJOxzcFmNOi6ltcbcu4Iu+FL3zEj83dk4kAS+fVpTxXLO1b38RvJgT/0QwvV/L3aY9TAnyv0EOqW4GoMQ== - path-is-absolute@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f" @@ -16329,7 +15327,7 @@ picocolors@^1.0.0: resolved "https://registry.yarnpkg.com/picocolors/-/picocolors-1.0.0.tgz#cb5bdc74ff3f51892236eaf79d68bc44564ab81c" integrity sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ== -picomatch@^2.0.4, picomatch@^2.2.1, picomatch@^2.2.2, picomatch@^2.2.3, picomatch@^2.3.0, picomatch@^2.3.1: +picomatch@^2.0.4, picomatch@^2.2.1, picomatch@^2.2.3, picomatch@^2.3.0, picomatch@^2.3.1: version "2.3.1" resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.3.1.tgz#3ba3833733646d9d3e4995946c1365a67fb07a42" integrity sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA== @@ -16397,13 +15395,6 @@ pkg-dir@^5.0.0: dependencies: find-up "^5.0.0" -pkg-dir@^7.0.0: - version "7.0.0" - resolved "https://registry.yarnpkg.com/pkg-dir/-/pkg-dir-7.0.0.tgz#8f0c08d6df4476756c5ff29b3282d0bab7517d11" - integrity sha512-Ie9z/WINcxxLp27BKOCHGde4ITq9UklYKDzVo1nhk5sqGEXU3FpkwP5GM2voTGJkGd9B3Otl+Q4uwSOeSUtOBA== - dependencies: - find-up "^6.3.0" - pnp-webpack-plugin@1.6.4: version "1.6.4" resolved "https://registry.yarnpkg.com/pnp-webpack-plugin/-/pnp-webpack-plugin-1.6.4.tgz#c9711ac4dc48a685dabafc86f8b6dd9f8df84149" @@ -16431,14 +15422,6 @@ postcss-calc@^8.2.3: postcss-selector-parser "^6.0.9" postcss-value-parser "^4.2.0" -postcss-calc@^9.0.0: - version "9.0.1" - resolved "https://registry.yarnpkg.com/postcss-calc/-/postcss-calc-9.0.1.tgz#a744fd592438a93d6de0f1434c572670361eb6c6" - integrity sha512-TipgjGyzP5QzEhsOZUaIkeO5mKeMFpebWzRogWG/ysonUlnHcq5aJe0jOjpfzUU8PeSaBQnrE8ehR0QA5vs8PQ== - dependencies: - postcss-selector-parser "^6.0.11" - postcss-value-parser "^4.2.0" - postcss-colormin@^5.3.1: version "5.3.1" resolved "https://registry.yarnpkg.com/postcss-colormin/-/postcss-colormin-5.3.1.tgz#86c27c26ed6ba00d96c79e08f3ffb418d1d1988f" @@ -16449,16 +15432,6 @@ postcss-colormin@^5.3.1: colord "^2.9.1" postcss-value-parser "^4.2.0" -postcss-colormin@^6.0.0: - version "6.0.0" - resolved "https://registry.yarnpkg.com/postcss-colormin/-/postcss-colormin-6.0.0.tgz#d4250652e952e1c0aca70c66942da93d3cdeaafe" - integrity sha512-EuO+bAUmutWoZYgHn2T1dG1pPqHU6L4TjzPlu4t1wZGXQ/fxV16xg2EJmYi0z+6r+MGV1yvpx1BHkUaRrPa2bw== - dependencies: - browserslist "^4.21.4" - caniuse-api "^3.0.0" - colord "^2.9.1" - postcss-value-parser "^4.2.0" - postcss-convert-values@^5.1.3: version "5.1.3" resolved "https://registry.yarnpkg.com/postcss-convert-values/-/postcss-convert-values-5.1.3.tgz#04998bb9ba6b65aa31035d669a6af342c5f9d393" @@ -16467,54 +15440,26 @@ postcss-convert-values@^5.1.3: browserslist "^4.21.4" postcss-value-parser "^4.2.0" -postcss-convert-values@^6.0.0: - version "6.0.0" - resolved "https://registry.yarnpkg.com/postcss-convert-values/-/postcss-convert-values-6.0.0.tgz#ec94a954957e5c3f78f0e8f65dfcda95280b8996" - integrity sha512-U5D8QhVwqT++ecmy8rnTb+RL9n/B806UVaS3m60lqle4YDFcpbS3ae5bTQIh3wOGUSDHSEtMYLs/38dNG7EYFw== - dependencies: - browserslist "^4.21.4" - postcss-value-parser "^4.2.0" - postcss-discard-comments@^5.1.2: version "5.1.2" resolved "https://registry.yarnpkg.com/postcss-discard-comments/-/postcss-discard-comments-5.1.2.tgz#8df5e81d2925af2780075840c1526f0660e53696" integrity sha512-+L8208OVbHVF2UQf1iDmRcbdjJkuBF6IS29yBDSiWUIzpYaAhtNl6JYnYm12FnkeCwQqF5LeklOu6rAqgfBZqQ== -postcss-discard-comments@^6.0.0: - version "6.0.0" - resolved "https://registry.yarnpkg.com/postcss-discard-comments/-/postcss-discard-comments-6.0.0.tgz#9ca335e8b68919f301b24ba47dde226a42e535fe" - integrity sha512-p2skSGqzPMZkEQvJsgnkBhCn8gI7NzRH2683EEjrIkoMiwRELx68yoUJ3q3DGSGuQ8Ug9Gsn+OuDr46yfO+eFw== - postcss-discard-duplicates@^5.1.0: version "5.1.0" resolved "https://registry.yarnpkg.com/postcss-discard-duplicates/-/postcss-discard-duplicates-5.1.0.tgz#9eb4fe8456706a4eebd6d3b7b777d07bad03e848" integrity sha512-zmX3IoSI2aoenxHV6C7plngHWWhUOV3sP1T8y2ifzxzbtnuhk1EdPwm0S1bIUNaJ2eNbWeGLEwzw8huPD67aQw== -postcss-discard-duplicates@^6.0.0: - version "6.0.0" - resolved "https://registry.yarnpkg.com/postcss-discard-duplicates/-/postcss-discard-duplicates-6.0.0.tgz#c26177a6c33070922e67e9a92c0fd23d443d1355" - integrity sha512-bU1SXIizMLtDW4oSsi5C/xHKbhLlhek/0/yCnoMQany9k3nPBq+Ctsv/9oMmyqbR96HYHxZcHyK2HR5P/mqoGA== - postcss-discard-empty@^5.1.1: version "5.1.1" resolved "https://registry.yarnpkg.com/postcss-discard-empty/-/postcss-discard-empty-5.1.1.tgz#e57762343ff7f503fe53fca553d18d7f0c369c6c" integrity sha512-zPz4WljiSuLWsI0ir4Mcnr4qQQ5e1Ukc3i7UfE2XcrwKK2LIPIqE5jxMRxO6GbI3cv//ztXDsXwEWT3BHOGh3A== -postcss-discard-empty@^6.0.0: - version "6.0.0" - resolved "https://registry.yarnpkg.com/postcss-discard-empty/-/postcss-discard-empty-6.0.0.tgz#06c1c4fce09e22d2a99e667c8550eb8a3a1b9aee" - integrity sha512-b+h1S1VT6dNhpcg+LpyiUrdnEZfICF0my7HAKgJixJLW7BnNmpRH34+uw/etf5AhOlIhIAuXApSzzDzMI9K/gQ== - postcss-discard-overridden@^5.1.0: version "5.1.0" resolved "https://registry.yarnpkg.com/postcss-discard-overridden/-/postcss-discard-overridden-5.1.0.tgz#7e8c5b53325747e9d90131bb88635282fb4a276e" integrity sha512-21nOL7RqWR1kasIVdKs8HNqQJhFxLsyRfAnUDm4Fe4t4mCWL9OJiHvlHPjcd8zc5Myu89b/7wZDnOSjFgeWRtw== -postcss-discard-overridden@^6.0.0: - version "6.0.0" - resolved "https://registry.yarnpkg.com/postcss-discard-overridden/-/postcss-discard-overridden-6.0.0.tgz#49c5262db14e975e349692d9024442de7cd8e234" - integrity sha512-4VELwssYXDFigPYAZ8vL4yX4mUepF/oCBeeIT4OXsJPYOtvJumyz9WflmJWTfDwCUcpDR+z0zvCWBXgTx35SVw== - postcss-flexbugs-fixes@^4.2.1: version "4.2.1" resolved "https://registry.yarnpkg.com/postcss-flexbugs-fixes/-/postcss-flexbugs-fixes-4.2.1.tgz#9218a65249f30897deab1033aced8578562a6690" @@ -16541,14 +15486,6 @@ postcss-merge-longhand@^5.1.7: postcss-value-parser "^4.2.0" stylehacks "^5.1.1" -postcss-merge-longhand@^6.0.0: - version "6.0.0" - resolved "https://registry.yarnpkg.com/postcss-merge-longhand/-/postcss-merge-longhand-6.0.0.tgz#6f627b27db939bce316eaa97e22400267e798d69" - integrity sha512-4VSfd1lvGkLTLYcxFuISDtWUfFS4zXe0FpF149AyziftPFQIWxjvFSKhA4MIxMe4XM3yTDgQMbSNgzIVxChbIg== - dependencies: - postcss-value-parser "^4.2.0" - stylehacks "^6.0.0" - postcss-merge-rules@^5.1.4: version "5.1.4" resolved "https://registry.yarnpkg.com/postcss-merge-rules/-/postcss-merge-rules-5.1.4.tgz#2f26fa5cacb75b1402e213789f6766ae5e40313c" @@ -16559,16 +15496,6 @@ postcss-merge-rules@^5.1.4: cssnano-utils "^3.1.0" postcss-selector-parser "^6.0.5" -postcss-merge-rules@^6.0.1: - version "6.0.1" - resolved "https://registry.yarnpkg.com/postcss-merge-rules/-/postcss-merge-rules-6.0.1.tgz#39f165746404e646c0f5c510222ccde4824a86aa" - integrity sha512-a4tlmJIQo9SCjcfiCcCMg/ZCEe0XTkl/xK0XHBs955GWg9xDX3NwP9pwZ78QUOWB8/0XCjZeJn98Dae0zg6AAw== - dependencies: - browserslist "^4.21.4" - caniuse-api "^3.0.0" - cssnano-utils "^4.0.0" - postcss-selector-parser "^6.0.5" - postcss-minify-font-values@^5.1.0: version "5.1.0" resolved "https://registry.yarnpkg.com/postcss-minify-font-values/-/postcss-minify-font-values-5.1.0.tgz#f1df0014a726083d260d3bd85d7385fb89d1f01b" @@ -16576,13 +15503,6 @@ postcss-minify-font-values@^5.1.0: dependencies: postcss-value-parser "^4.2.0" -postcss-minify-font-values@^6.0.0: - version "6.0.0" - resolved "https://registry.yarnpkg.com/postcss-minify-font-values/-/postcss-minify-font-values-6.0.0.tgz#68d4a028f9fa5f61701974724b2cc9445d8e6070" - integrity sha512-zNRAVtyh5E8ndZEYXA4WS8ZYsAp798HiIQ1V2UF/C/munLp2r1UGHwf1+6JFu7hdEhJFN+W1WJQKBrtjhFgEnA== - dependencies: - postcss-value-parser "^4.2.0" - postcss-minify-gradients@^5.1.1: version "5.1.1" resolved "https://registry.yarnpkg.com/postcss-minify-gradients/-/postcss-minify-gradients-5.1.1.tgz#f1fe1b4f498134a5068240c2f25d46fcd236ba2c" @@ -16592,15 +15512,6 @@ postcss-minify-gradients@^5.1.1: cssnano-utils "^3.1.0" postcss-value-parser "^4.2.0" -postcss-minify-gradients@^6.0.0: - version "6.0.0" - resolved "https://registry.yarnpkg.com/postcss-minify-gradients/-/postcss-minify-gradients-6.0.0.tgz#22b5c88cc63091dadbad34e31ff958404d51d679" - integrity sha512-wO0F6YfVAR+K1xVxF53ueZJza3L+R3E6cp0VwuXJQejnNUH0DjcAFe3JEBeTY1dLwGa0NlDWueCA1VlEfiKgAA== - dependencies: - colord "^2.9.1" - cssnano-utils "^4.0.0" - postcss-value-parser "^4.2.0" - postcss-minify-params@^5.1.4: version "5.1.4" resolved "https://registry.yarnpkg.com/postcss-minify-params/-/postcss-minify-params-5.1.4.tgz#c06a6c787128b3208b38c9364cfc40c8aa5d7352" @@ -16610,15 +15521,6 @@ postcss-minify-params@^5.1.4: cssnano-utils "^3.1.0" postcss-value-parser "^4.2.0" -postcss-minify-params@^6.0.0: - version "6.0.0" - resolved "https://registry.yarnpkg.com/postcss-minify-params/-/postcss-minify-params-6.0.0.tgz#2b3a85a9e3b990d7a16866f430f5fd1d5961b539" - integrity sha512-Fz/wMQDveiS0n5JPcvsMeyNXOIMrwF88n7196puSuQSWSa+/Ofc1gDOSY2xi8+A4PqB5dlYCKk/WfqKqsI+ReQ== - dependencies: - browserslist "^4.21.4" - cssnano-utils "^4.0.0" - postcss-value-parser "^4.2.0" - postcss-minify-selectors@^5.2.1: version "5.2.1" resolved "https://registry.yarnpkg.com/postcss-minify-selectors/-/postcss-minify-selectors-5.2.1.tgz#d4e7e6b46147b8117ea9325a915a801d5fe656c6" @@ -16626,13 +15528,6 @@ postcss-minify-selectors@^5.2.1: dependencies: postcss-selector-parser "^6.0.5" -postcss-minify-selectors@^6.0.0: - version "6.0.0" - resolved "https://registry.yarnpkg.com/postcss-minify-selectors/-/postcss-minify-selectors-6.0.0.tgz#5046c5e8680a586e5a0cad52cc9aa36d6be5bda2" - integrity sha512-ec/q9JNCOC2CRDNnypipGfOhbYPuUkewGwLnbv6omue/PSASbHSU7s6uSQ0tcFRVv731oMIx8k0SP4ZX6be/0g== - dependencies: - postcss-selector-parser "^6.0.5" - postcss-modules-extract-imports@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/postcss-modules-extract-imports/-/postcss-modules-extract-imports-2.0.0.tgz#818719a1ae1da325f9832446b01136eeb493cd7e" @@ -16699,11 +15594,6 @@ postcss-normalize-charset@^5.1.0: resolved "https://registry.yarnpkg.com/postcss-normalize-charset/-/postcss-normalize-charset-5.1.0.tgz#9302de0b29094b52c259e9b2cf8dc0879879f0ed" integrity sha512-mSgUJ+pd/ldRGVx26p2wz9dNZ7ji6Pn8VWBajMXFf8jk7vUoSrZ2lt/wZR7DtlZYKesmZI680qjr2CeFF2fbUg== -postcss-normalize-charset@^6.0.0: - version "6.0.0" - resolved "https://registry.yarnpkg.com/postcss-normalize-charset/-/postcss-normalize-charset-6.0.0.tgz#36cc12457259064969fb96f84df491652a4b0975" - integrity sha512-cqundwChbu8yO/gSWkuFDmKrCZ2vJzDAocheT2JTd0sFNA4HMGoKMfbk2B+J0OmO0t5GUkiAkSM5yF2rSLUjgQ== - postcss-normalize-display-values@^5.1.0: version "5.1.0" resolved "https://registry.yarnpkg.com/postcss-normalize-display-values/-/postcss-normalize-display-values-5.1.0.tgz#72abbae58081960e9edd7200fcf21ab8325c3da8" @@ -16711,13 +15601,6 @@ postcss-normalize-display-values@^5.1.0: dependencies: postcss-value-parser "^4.2.0" -postcss-normalize-display-values@^6.0.0: - version "6.0.0" - resolved "https://registry.yarnpkg.com/postcss-normalize-display-values/-/postcss-normalize-display-values-6.0.0.tgz#8d2961415078644d8c6bbbdaf9a2fdd60f546cd4" - integrity sha512-Qyt5kMrvy7dJRO3OjF7zkotGfuYALETZE+4lk66sziWSPzlBEt7FrUshV6VLECkI4EN8Z863O6Nci4NXQGNzYw== - dependencies: - postcss-value-parser "^4.2.0" - postcss-normalize-positions@^5.1.1: version "5.1.1" resolved "https://registry.yarnpkg.com/postcss-normalize-positions/-/postcss-normalize-positions-5.1.1.tgz#ef97279d894087b59325b45c47f1e863daefbb92" @@ -16725,13 +15608,6 @@ postcss-normalize-positions@^5.1.1: dependencies: postcss-value-parser "^4.2.0" -postcss-normalize-positions@^6.0.0: - version "6.0.0" - resolved "https://registry.yarnpkg.com/postcss-normalize-positions/-/postcss-normalize-positions-6.0.0.tgz#25b96df99a69f8925f730eaee0be74416865e301" - integrity sha512-mPCzhSV8+30FZyWhxi6UoVRYd3ZBJgTRly4hOkaSifo0H+pjDYcii/aVT4YE6QpOil15a5uiv6ftnY3rm0igPg== - dependencies: - postcss-value-parser "^4.2.0" - postcss-normalize-repeat-style@^5.1.1: version "5.1.1" resolved "https://registry.yarnpkg.com/postcss-normalize-repeat-style/-/postcss-normalize-repeat-style-5.1.1.tgz#e9eb96805204f4766df66fd09ed2e13545420fb2" @@ -16739,13 +15615,6 @@ postcss-normalize-repeat-style@^5.1.1: dependencies: postcss-value-parser "^4.2.0" -postcss-normalize-repeat-style@^6.0.0: - version "6.0.0" - resolved "https://registry.yarnpkg.com/postcss-normalize-repeat-style/-/postcss-normalize-repeat-style-6.0.0.tgz#ddf30ad8762feb5b1eb97f39f251acd7b8353299" - integrity sha512-50W5JWEBiOOAez2AKBh4kRFm2uhrT3O1Uwdxz7k24aKtbD83vqmcVG7zoIwo6xI2FZ/HDlbrCopXhLeTpQib1A== - dependencies: - postcss-value-parser "^4.2.0" - postcss-normalize-string@^5.1.0: version "5.1.0" resolved "https://registry.yarnpkg.com/postcss-normalize-string/-/postcss-normalize-string-5.1.0.tgz#411961169e07308c82c1f8c55f3e8a337757e228" @@ -16753,13 +15622,6 @@ postcss-normalize-string@^5.1.0: dependencies: postcss-value-parser "^4.2.0" -postcss-normalize-string@^6.0.0: - version "6.0.0" - resolved "https://registry.yarnpkg.com/postcss-normalize-string/-/postcss-normalize-string-6.0.0.tgz#948282647a51e409d69dde7910f0ac2ff97cb5d8" - integrity sha512-KWkIB7TrPOiqb8ZZz6homet2KWKJwIlysF5ICPZrXAylGe2hzX/HSf4NTX2rRPJMAtlRsj/yfkrWGavFuB+c0w== - dependencies: - postcss-value-parser "^4.2.0" - postcss-normalize-timing-functions@^5.1.0: version "5.1.0" resolved "https://registry.yarnpkg.com/postcss-normalize-timing-functions/-/postcss-normalize-timing-functions-5.1.0.tgz#d5614410f8f0b2388e9f240aa6011ba6f52dafbb" @@ -16767,13 +15629,6 @@ postcss-normalize-timing-functions@^5.1.0: dependencies: postcss-value-parser "^4.2.0" -postcss-normalize-timing-functions@^6.0.0: - version "6.0.0" - resolved "https://registry.yarnpkg.com/postcss-normalize-timing-functions/-/postcss-normalize-timing-functions-6.0.0.tgz#5f13e650b8c43351989fc5de694525cc2539841c" - integrity sha512-tpIXWciXBp5CiFs8sem90IWlw76FV4oi6QEWfQwyeREVwUy39VSeSqjAT7X0Qw650yAimYW5gkl2Gd871N5SQg== - dependencies: - postcss-value-parser "^4.2.0" - postcss-normalize-unicode@^5.1.1: version "5.1.1" resolved "https://registry.yarnpkg.com/postcss-normalize-unicode/-/postcss-normalize-unicode-5.1.1.tgz#f67297fca3fea7f17e0d2caa40769afc487aa030" @@ -16782,14 +15637,6 @@ postcss-normalize-unicode@^5.1.1: browserslist "^4.21.4" postcss-value-parser "^4.2.0" -postcss-normalize-unicode@^6.0.0: - version "6.0.0" - resolved "https://registry.yarnpkg.com/postcss-normalize-unicode/-/postcss-normalize-unicode-6.0.0.tgz#741b3310f874616bdcf07764f5503695d3604730" - integrity sha512-ui5crYkb5ubEUDugDc786L/Me+DXp2dLg3fVJbqyAl0VPkAeALyAijF2zOsnZyaS1HyfPuMH0DwyY18VMFVNkg== - dependencies: - browserslist "^4.21.4" - postcss-value-parser "^4.2.0" - postcss-normalize-url@^5.1.0: version "5.1.0" resolved "https://registry.yarnpkg.com/postcss-normalize-url/-/postcss-normalize-url-5.1.0.tgz#ed9d88ca82e21abef99f743457d3729a042adcdc" @@ -16798,13 +15645,6 @@ postcss-normalize-url@^5.1.0: normalize-url "^6.0.1" postcss-value-parser "^4.2.0" -postcss-normalize-url@^6.0.0: - version "6.0.0" - resolved "https://registry.yarnpkg.com/postcss-normalize-url/-/postcss-normalize-url-6.0.0.tgz#d0a31e962a16401fb7deb7754b397a323fb650b4" - integrity sha512-98mvh2QzIPbb02YDIrYvAg4OUzGH7s1ZgHlD3fIdTHLgPLRpv1ZTKJDnSAKr4Rt21ZQFzwhGMXxpXlfrUBKFHw== - dependencies: - postcss-value-parser "^4.2.0" - postcss-normalize-whitespace@^5.1.1: version "5.1.1" resolved "https://registry.yarnpkg.com/postcss-normalize-whitespace/-/postcss-normalize-whitespace-5.1.1.tgz#08a1a0d1ffa17a7cc6efe1e6c9da969cc4493cfa" @@ -16812,13 +15652,6 @@ postcss-normalize-whitespace@^5.1.1: dependencies: postcss-value-parser "^4.2.0" -postcss-normalize-whitespace@^6.0.0: - version "6.0.0" - resolved "https://registry.yarnpkg.com/postcss-normalize-whitespace/-/postcss-normalize-whitespace-6.0.0.tgz#accb961caa42e25ca4179b60855b79b1f7129d4d" - integrity sha512-7cfE1AyLiK0+ZBG6FmLziJzqQCpTQY+8XjMhMAz8WSBSCsCNNUKujgIgjCAmDT3cJ+3zjTXFkoD15ZPsckArVw== - dependencies: - postcss-value-parser "^4.2.0" - postcss-ordered-values@^5.1.3: version "5.1.3" resolved "https://registry.yarnpkg.com/postcss-ordered-values/-/postcss-ordered-values-5.1.3.tgz#b6fd2bd10f937b23d86bc829c69e7732ce76ea38" @@ -16827,14 +15660,6 @@ postcss-ordered-values@^5.1.3: cssnano-utils "^3.1.0" postcss-value-parser "^4.2.0" -postcss-ordered-values@^6.0.0: - version "6.0.0" - resolved "https://registry.yarnpkg.com/postcss-ordered-values/-/postcss-ordered-values-6.0.0.tgz#374704cdff25560d44061d17ba3c6308837a3218" - integrity sha512-K36XzUDpvfG/nWkjs6d1hRBydeIxGpKS2+n+ywlKPzx1nMYDYpoGbcjhj5AwVYJK1qV2/SDoDEnHzlPD6s3nMg== - dependencies: - cssnano-utils "^4.0.0" - postcss-value-parser "^4.2.0" - postcss-reduce-initial@^5.1.2: version "5.1.2" resolved "https://registry.yarnpkg.com/postcss-reduce-initial/-/postcss-reduce-initial-5.1.2.tgz#798cd77b3e033eae7105c18c9d371d989e1382d6" @@ -16843,14 +15668,6 @@ postcss-reduce-initial@^5.1.2: browserslist "^4.21.4" caniuse-api "^3.0.0" -postcss-reduce-initial@^6.0.0: - version "6.0.0" - resolved "https://registry.yarnpkg.com/postcss-reduce-initial/-/postcss-reduce-initial-6.0.0.tgz#7d16e83e60e27e2fa42f56ec0b426f1da332eca7" - integrity sha512-s2UOnidpVuXu6JiiI5U+fV2jamAw5YNA9Fdi/GRK0zLDLCfXmSGqQtzpUPtfN66RtCbb9fFHoyZdQaxOB3WxVA== - dependencies: - browserslist "^4.21.4" - caniuse-api "^3.0.0" - postcss-reduce-transforms@^5.1.0: version "5.1.0" resolved "https://registry.yarnpkg.com/postcss-reduce-transforms/-/postcss-reduce-transforms-5.1.0.tgz#333b70e7758b802f3dd0ddfe98bb1ccfef96b6e9" @@ -16858,14 +15675,7 @@ postcss-reduce-transforms@^5.1.0: dependencies: postcss-value-parser "^4.2.0" -postcss-reduce-transforms@^6.0.0: - version "6.0.0" - resolved "https://registry.yarnpkg.com/postcss-reduce-transforms/-/postcss-reduce-transforms-6.0.0.tgz#28ff2601a6d9b96a2f039b3501526e1f4d584a46" - integrity sha512-FQ9f6xM1homnuy1wLe9lP1wujzxnwt1EwiigtWwuyf8FsqqXUDUp2Ulxf9A5yjlUOTdCJO6lonYjg1mgqIIi2w== - dependencies: - postcss-value-parser "^4.2.0" - -postcss-selector-parser@^6.0.0, postcss-selector-parser@^6.0.11, postcss-selector-parser@^6.0.2, postcss-selector-parser@^6.0.4, postcss-selector-parser@^6.0.5, postcss-selector-parser@^6.0.9: +postcss-selector-parser@^6.0.0, postcss-selector-parser@^6.0.2, postcss-selector-parser@^6.0.4, postcss-selector-parser@^6.0.5, postcss-selector-parser@^6.0.9: version "6.0.13" resolved "https://registry.yarnpkg.com/postcss-selector-parser/-/postcss-selector-parser-6.0.13.tgz#d05d8d76b1e8e173257ef9d60b706a8e5e99bf1b" integrity sha512-EaV1Gl4mUEV4ddhDnv/xtj7sxwrwxdetHdWUGnT4VJQf+4d05v6lHYZr8N573k5Z0BViss7BDhfWtKS3+sfAqQ== @@ -16881,14 +15691,6 @@ postcss-svgo@^5.1.0: postcss-value-parser "^4.2.0" svgo "^2.7.0" -postcss-svgo@^6.0.0: - version "6.0.0" - resolved "https://registry.yarnpkg.com/postcss-svgo/-/postcss-svgo-6.0.0.tgz#7b18742d38d4505a0455bbe70d52b49f00eaf69d" - integrity sha512-r9zvj/wGAoAIodn84dR/kFqwhINp5YsJkLoujybWG59grR/IHx+uQ2Zo+IcOwM0jskfYX3R0mo+1Kip1VSNcvw== - dependencies: - postcss-value-parser "^4.2.0" - svgo "^3.0.2" - postcss-unique-selectors@^5.1.1: version "5.1.1" resolved "https://registry.yarnpkg.com/postcss-unique-selectors/-/postcss-unique-selectors-5.1.1.tgz#a9f273d1eacd09e9aa6088f4b0507b18b1b541b6" @@ -16896,13 +15698,6 @@ postcss-unique-selectors@^5.1.1: dependencies: postcss-selector-parser "^6.0.5" -postcss-unique-selectors@^6.0.0: - version "6.0.0" - resolved "https://registry.yarnpkg.com/postcss-unique-selectors/-/postcss-unique-selectors-6.0.0.tgz#c94e9b0f7bffb1203894e42294b5a1b3fb34fbe1" - integrity sha512-EPQzpZNxOxP7777t73RQpZE5e9TrnCrkvp7AH7a0l89JmZiPnS82y216JowHXwpBCQitfyxrof9TK3rYbi7/Yw== - dependencies: - postcss-selector-parser "^6.0.5" - postcss-value-parser@^3.3.0: version "3.3.1" resolved "https://registry.yarnpkg.com/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz#9ff822547e2893213cf1c30efa51ac5fd1ba8281" @@ -16921,7 +15716,7 @@ postcss@^7.0.14, postcss@^7.0.26, postcss@^7.0.32, postcss@^7.0.36, postcss@^7.0 picocolors "^0.2.1" source-map "^0.6.1" -postcss@^8.2.15, postcss@^8.3.5, postcss@^8.4.21, postcss@^8.4.24: +postcss@^8.2.15, postcss@^8.3.5, postcss@^8.4.21: version "8.4.29" resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.4.29.tgz#33bc121cf3b3688d4ddef50be869b2a54185a1dd" integrity sha512-cbI+jaqIeu/VGqXEarWkRCCffhjgXc0qjBtXpqJhTBohMUjUQnbBr0xqX3vEKudc4iviTewcJo5ajcec5+wdJw== @@ -17237,11 +16032,6 @@ punycode@^2.1.0, punycode@^2.1.1: resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.3.0.tgz#f67fa67c94da8f4d0cfff981aee4118064199b8f" integrity sha512-rRV+zQD8tVFys26lAGR9WUuS4iUAngJScM+ZRSKtvl5tKeZ2t5bvdNFdNHBW9FWR4guGHlgmsZ1G7BSm2wTbuA== -pure-rand@^6.0.0: - version "6.0.3" - resolved "https://registry.yarnpkg.com/pure-rand/-/pure-rand-6.0.3.tgz#3c9e6b53c09e52ac3cedffc85ab7c1c7094b38cb" - integrity sha512-KddyFewCsO0j3+np81IQ+SweXLDnDQTs5s67BOnrYmYe/yNmUhttQyGsYzy8yUnoljGAQ9sl38YB4vH8ur7Y+w== - qr.js@0.0.0: version "0.0.0" resolved "https://registry.yarnpkg.com/qr.js/-/qr.js-0.0.0.tgz#cace86386f59a0db8050fa90d9b6b0e88a1e364f" @@ -17738,13 +16528,6 @@ rechoir@^0.7.0: dependencies: resolve "^1.9.0" -rechoir@^0.8.0: - version "0.8.0" - resolved "https://registry.yarnpkg.com/rechoir/-/rechoir-0.8.0.tgz#49f866e0d32146142da3ad8f0eff352b3215ff22" - integrity sha512-/vxpCXddiX8NGfGO/mTafwjq4aFa/71pvamip0++IQk3zG8cbCj0fifNPrjjF1XMXUne91jL9OoxmdykoEtifQ== - dependencies: - resolve "^1.20.0" - redent@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/redent/-/redent-1.0.0.tgz#cf916ab1fd5f1f16dfb20822dd6ec7f730c2afde" @@ -17856,20 +16639,6 @@ relateurl@^0.2.7: resolved "https://registry.yarnpkg.com/relateurl/-/relateurl-0.2.7.tgz#54dbf377e51440aca90a4cd274600d3ff2d888a9" integrity sha512-G08Dxvm4iDN3MLM0EsP62EDV9IuhXPR6blNz6Utcp7zyV3tr4HVNINt6MpaRWbxoOHT3Q7YN2P+jaHX8vUbgog== -reload@^3.2.1: - version "3.2.1" - resolved "https://registry.yarnpkg.com/reload/-/reload-3.2.1.tgz#42d43e33e327efe1348c723272c6835fe333349a" - integrity sha512-ZdM8ZSEeI72zkhh6heMEvJ0vHZoovZXcJI6Zae8CzS7o5vO/WjZsAMMr0y1+3I/fCN7y7ZxABoUwwCswcLHkjQ== - dependencies: - cli-color "~2.0.0" - commander "~9.4.0" - finalhandler "~1.2.0" - minimist "~1.2.0" - open "^8.0.0" - serve-static "~1.15.0" - supervisor "~0.12.0" - ws "~8.11.0" - remark-external-links@^8.0.0: version "8.0.0" resolved "https://registry.yarnpkg.com/remark-external-links/-/remark-external-links-8.0.0.tgz#308de69482958b5d1cd3692bc9b725ce0240f345" @@ -18066,11 +16835,6 @@ resolve.exports@^1.1.0: resolved "https://registry.yarnpkg.com/resolve.exports/-/resolve.exports-1.1.1.tgz#05cfd5b3edf641571fd46fa608b610dda9ead999" integrity sha512-/NtpHNDN7jWhAaQ9BvBUYZ6YTXsRBgfqWFWP7BZBaoMJO/I3G5OFzvTuWNlZC3aPjins1F+TNrLKsGbH4rfsRQ== -resolve.exports@^2.0.0: - version "2.0.2" - resolved "https://registry.yarnpkg.com/resolve.exports/-/resolve.exports-2.0.2.tgz#f8c934b8e6a13f539e38b7098e2e36134f01e800" - integrity sha512-X2UW6Nw3n/aMgDVy+0rSqgHlv39WZAlZrXCdnbyEiKm17DSqHX4MmQMaST3FbeWR5FTuRcUwYAziZajji0Y7mg== - resolve@^1.10.0, resolve@^1.14.2, resolve@^1.19.0, resolve@^1.20.0, resolve@^1.22.1, resolve@^1.22.4, resolve@^1.3.2, resolve@^1.9.0: version "1.22.4" resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.22.4.tgz#1dc40df46554cdaf8948a486a10f6ba1e2026c34" @@ -18151,13 +16915,6 @@ ripemd160@^2.0.0, ripemd160@^2.0.1, ripemd160@^2.0.2: hash-base "^3.0.0" inherits "^2.0.1" -rollup-plugin-base64@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/rollup-plugin-base64/-/rollup-plugin-base64-1.0.1.tgz#b3529b94d23baeb66e1e3bffd04477fa792985eb" - integrity sha512-IbdX8fjuXO/Op3hYmRPjVo0VwcSenwsQDaDTFdoe+70B5ZGoLMtr96L2yhHXCfxv7HwZVvxZqLsuWj6VwzRt3g== - dependencies: - "@rollup/pluginutils" "^3.1.0" - rollup-plugin-dts@^5.0.0, rollup-plugin-dts@^5.2.0: version "5.3.1" resolved "https://registry.yarnpkg.com/rollup-plugin-dts/-/rollup-plugin-dts-5.3.1.tgz#c2841269a3a5cb986b7791b0328e6a178eba108f" @@ -18183,11 +16940,6 @@ rollup-plugin-node-polyfills@^0.2.1: dependencies: rollup-plugin-inject "^3.0.0" -rollup-plugin-web-worker-loader@^1.6.1: - version "1.6.1" - resolved "https://registry.yarnpkg.com/rollup-plugin-web-worker-loader/-/rollup-plugin-web-worker-loader-1.6.1.tgz#9d7a27575b64b0780fe4e8b3bc87470d217e485f" - integrity sha512-4QywQSz1NXFHKdyiou16mH3ijpcfLtLGOrAqvAqu1Gx+P8+zj+3gwC2BSL/VW1d+LW4nIHC8F7d7OXhs9UdR2A== - rollup-pluginutils@^2.8.1: version "2.8.2" resolved "https://registry.yarnpkg.com/rollup-pluginutils/-/rollup-pluginutils-2.8.2.tgz#72f2af0748b592364dbd3389e600e5a9444a351e" @@ -18195,7 +16947,7 @@ rollup-pluginutils@^2.8.1: dependencies: estree-walker "^0.6.1" -rollup@^3.17.2, rollup@^3.2.1, rollup@^3.9.1: +rollup@^3.17.2, rollup@^3.2.1: version "3.29.1" resolved "https://registry.yarnpkg.com/rollup/-/rollup-3.29.1.tgz#ba53a179d46ac3cd79e162dca6ab70d93cd26f78" integrity sha512-c+ebvQz0VIH4KhhCpDsI+Bik0eT8ZFEVZEYw0cGMVqIP8zc+gnwl7iXCamTw7vzv2MeuZFZfdx5JJIq+ehzDlg== @@ -18356,7 +17108,7 @@ schema-utils@^3.0.0, schema-utils@^3.1.1, schema-utils@^3.2.0: ajv "^6.12.5" ajv-keywords "^3.5.2" -schema-utils@^4.0.0, schema-utils@^4.0.1: +schema-utils@^4.0.0: version "4.2.0" resolved "https://registry.yarnpkg.com/schema-utils/-/schema-utils-4.2.0.tgz#70d7c93e153a273a805801882ebd3bff20d89c8b" integrity sha512-L0jRsrPpjdckP3oPug3/VxNKt2trR8TcabrM6FOAAlvC/9Phcmm+cuAgTlxBqdBR1WJx7Naj9WHw+aOmheSVbw== @@ -18478,7 +17230,7 @@ serve-index@^1.9.1: mime-types "~2.1.17" parseurl "~1.3.2" -serve-static@1.15.0, serve-static@~1.15.0: +serve-static@1.15.0: version "1.15.0" resolved "https://registry.yarnpkg.com/serve-static/-/serve-static-1.15.0.tgz#faaef08cffe0a1a62f60cad0c4e513cff0ac9540" integrity sha512-XGuRDNjXUijsUL0vl6nSD7cwURuzEgglbOaFuZM9g3kwDXOWVTck0jLzjPzGD+TazWbboZYu52/9/XPdUgne9g== @@ -18607,16 +17359,6 @@ shiki@^0.10.1: vscode-oniguruma "^1.6.1" vscode-textmate "5.2.0" -shiki@^0.14.1: - version "0.14.4" - resolved "https://registry.yarnpkg.com/shiki/-/shiki-0.14.4.tgz#2454969b466a5f75067d0f2fa0d7426d32881b20" - integrity sha512-IXCRip2IQzKwxArNNq1S+On4KPML3Yyn8Zzs/xRgcgOWIr8ntIK3IKzjFPfjy/7kt9ZMjc+FItfqHRBg8b6tNQ== - dependencies: - ansi-sequence-parser "^1.1.0" - jsonc-parser "^3.2.0" - vscode-oniguruma "^1.7.0" - vscode-textmate "^8.0.0" - side-channel@^1.0.4: version "1.0.4" resolved "https://registry.yarnpkg.com/side-channel/-/side-channel-1.0.4.tgz#efce5c8fdc104ee751b25c58d4290011fa5ea2cf" @@ -18675,13 +17417,6 @@ simple-update-notifier@^1.0.7: dependencies: semver "~7.0.0" -simple-update-notifier@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/simple-update-notifier/-/simple-update-notifier-2.0.0.tgz#d70b92bdab7d6d90dfd73931195a30b6e3d7cebb" - integrity sha512-a2B9Y0KlNXl9u/vsW6sTIu9vGEpfKu2wRV6l1H3XEas/0gUIzGzBoP/IouTcUQbm9JWZLH3COxyn03TYlFax6w== - dependencies: - semver "^7.5.3" - sisteransi@^1.0.5: version "1.0.5" resolved "https://registry.yarnpkg.com/sisteransi/-/sisteransi-1.0.5.tgz#134d681297756437cc05ca01370d3a7a571075ed" @@ -18702,11 +17437,6 @@ slash@^2.0.0: resolved "https://registry.yarnpkg.com/slash/-/slash-2.0.0.tgz#de552851a1759df3a8f206535442f5ec4ddeab44" integrity sha512-ZYKh3Wh2z1PpEXWr0MpSBZ0V6mZHAQfYevttO11c51CaWjGTaadiKZ+wVt1PbMlDV5qhMFslpZCemhwOK7C89A== -slash@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/slash/-/slash-4.0.0.tgz#2422372176c4c6c5addb5e2ada885af984b396a7" - integrity sha512-3dOsAHXXUkQTpOYcoAxLIorMTp4gIQr5IW3iVb7A7lFIp0VHhnynm9izx6TssdrIcVIESAlVjtnO2K8bg+Coew== - slice-ansi@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/slice-ansi/-/slice-ansi-4.0.0.tgz#500e8dd0fd55b05815086255b3195adf2a45fe6b" @@ -18721,11 +17451,6 @@ smart-buffer@^4.2.0: resolved "https://registry.yarnpkg.com/smart-buffer/-/smart-buffer-4.2.0.tgz#6e1d71fa4f18c05f7d0ff216dd16a481d0e8d9ae" integrity sha512-94hK0Hh8rPqQl2xXc3HsaBoOXKV20MToPkcXvwbISWLEs+64sBq5kFgn2kJDHb1Pry9yrP0dxrCI9RRci7RXKg== -smob@^0.0.6: - version "0.0.6" - resolved "https://registry.yarnpkg.com/smob/-/smob-0.0.6.tgz#09b268fea916158a2781c152044c6155adbb8aa1" - integrity sha512-V21+XeNni+tTyiST1MHsa84AQhT1aFZipzPpOFAVB8DkHzwJyjjAmt9bgwnuZiZWnIbMo2duE29wybxv/7HWUw== - snapdragon-node@^2.0.1: version "2.1.1" resolved "https://registry.yarnpkg.com/snapdragon-node/-/snapdragon-node-2.1.1.tgz#6c175f86ff14bdb0724563e8f3c1b021a286853b" @@ -18794,7 +17519,7 @@ source-list-map@^2.0.0: resolved "https://registry.yarnpkg.com/source-list-map/-/source-list-map-2.0.1.tgz#3993bd873bfc48479cca9ea3a547835c7c154b34" integrity sha512-qnQ7gVMxGNxsiL4lEuJwe/To8UnK7fAnmbGEEH8RpLouuKbeEm0lhbQVFIrNSuB+G7tVrAlVsZgETT5nljf+Iw== -source-map-js@^1.0.1, source-map-js@^1.0.2: +source-map-js@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/source-map-js/-/source-map-js-1.0.2.tgz#adbc361d9c62df380125e7f161f71c826f1e490c" integrity sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw== @@ -18810,14 +17535,6 @@ source-map-resolve@^0.5.0: source-map-url "^0.4.0" urix "^0.1.0" -source-map-support@0.5.13: - version "0.5.13" - resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.13.tgz#31b24a9c2e73c2de85066c0feb7d44767ed52932" - integrity sha512-SHSKFHadjVA5oR4PPqhtAVdcBWwRYVd6g6cAXnIbRiIwc2EhPrTuKUBdSLvlEKyIP3GCf89fltvcZiP9MMFA1w== - dependencies: - buffer-from "^1.0.0" - source-map "^0.6.0" - source-map-support@^0.5.16, source-map-support@^0.5.6, source-map-support@~0.5.12, source-map-support@~0.5.20: version "0.5.21" resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.21.tgz#04fe7c7f9e1ed2d662233c28cb2b35b9f63f6e4f" @@ -19273,7 +17990,7 @@ style-loader@^2.0.0: loader-utils "^2.0.0" schema-utils "^3.0.0" -style-loader@^3.3.1, style-loader@^3.3.3: +style-loader@^3.3.1: version "3.3.3" resolved "https://registry.yarnpkg.com/style-loader/-/style-loader-3.3.3.tgz#bba8daac19930169c0c9c96706749a597ae3acff" integrity sha512-53BiGLXAcll9maCYtZi2RCQZKa8NQQai5C4horqKyRmHj9H7QmcUyucrH+4KW/gBQbXM2AsB0axoEcFZPlfPcw== @@ -19300,24 +18017,11 @@ stylehacks@^5.1.1: browserslist "^4.21.4" postcss-selector-parser "^6.0.4" -stylehacks@^6.0.0: - version "6.0.0" - resolved "https://registry.yarnpkg.com/stylehacks/-/stylehacks-6.0.0.tgz#9fdd7c217660dae0f62e14d51c89f6c01b3cb738" - integrity sha512-+UT589qhHPwz6mTlCLSt/vMNTJx8dopeJlZAlBMJPWA3ORqu6wmQY7FBXf+qD+FsqoBJODyqNxOUP3jdntFRdw== - dependencies: - browserslist "^4.21.4" - postcss-selector-parser "^6.0.4" - stylis@4.2.0: version "4.2.0" resolved "https://registry.yarnpkg.com/stylis/-/stylis-4.2.0.tgz#79daee0208964c8fe695a42fcffcac633a211a51" integrity sha512-Orov6g6BB1sDfYgzWfTHDOxamtX1bE/zo104Dh9e6fqJ3PooipYyfJ0pUmrZO2wAvO8YbEyeFrkV91XTsGMSrw== -supervisor@~0.12.0: - version "0.12.0" - resolved "https://registry.yarnpkg.com/supervisor/-/supervisor-0.12.0.tgz#de7e6337015b291851c10f3538c4a7f04917ecc1" - integrity sha512-iBYeU5Or4WiiIa3+ns1DpHIiHjNNXSuYUiixKcznewwo4ImBJ8EobktaAo2csOcauhrz4SvKRTou8Z2C3W28+A== - supports-color@8.1.1, supports-color@^8.0.0: version "8.1.1" resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-8.1.1.tgz#cd6fc17e28500cff56c1b86c0a7fd4a54a73005c" @@ -19370,18 +18074,6 @@ svgo@^2.7.0, svgo@^2.8.0: picocolors "^1.0.0" stable "^0.1.8" -svgo@^3.0.2: - version "3.0.2" - resolved "https://registry.yarnpkg.com/svgo/-/svgo-3.0.2.tgz#5e99eeea42c68ee0dc46aa16da093838c262fe0a" - integrity sha512-Z706C1U2pb1+JGP48fbazf3KxHrWOsLme6Rv7imFBn5EnuanDW1GPaA/P1/dvObE670JDePC3mnj0k0B7P0jjQ== - dependencies: - "@trysound/sax" "0.2.0" - commander "^7.2.0" - css-select "^5.1.0" - css-tree "^2.2.1" - csso "^5.0.5" - picocolors "^1.0.0" - symbol-observable@^2.0.3: version "2.0.3" resolved "https://registry.yarnpkg.com/symbol-observable/-/symbol-observable-2.0.3.tgz#5b521d3d07a43c351055fa43b8355b62d33fd16a" @@ -19575,7 +18267,7 @@ terser@^4.1.2, terser@^4.6.3: source-map "~0.6.1" source-map-support "~0.5.12" -terser@^5.10.0, terser@^5.15.1, terser@^5.16.8, terser@^5.3.4: +terser@^5.10.0, terser@^5.16.8, terser@^5.3.4: version "5.19.4" resolved "https://registry.yarnpkg.com/terser/-/terser-5.19.4.tgz#941426fa482bf9b40a0308ab2b3cd0cf7c775ebd" integrity sha512-6p1DjHeuluwxDXcuT9VR8p64klWJKo1ILiy19s6C9+0Bh2+NWTX6nD9EPppiER4ICkHDVB1RkVpin/YW2nQn/g== @@ -19615,16 +18307,6 @@ thread-loader@^3.0.4: neo-async "^2.6.2" schema-utils "^3.0.0" -thread-loader@^4.0.2: - version "4.0.2" - resolved "https://registry.yarnpkg.com/thread-loader/-/thread-loader-4.0.2.tgz#f7b4484beab1f928818d8ecd96ef20c618d1fadc" - integrity sha512-UOk/KBydsQjh4Ja5kocxDUzhv11KYptHN/h8gdSwo6/MBkYrWqQua6K2qwlpXnCXS9c/uLs8F/JF8rpveF0+fA== - dependencies: - json-parse-better-errors "^1.0.2" - loader-runner "^4.1.0" - neo-async "^2.6.2" - schema-utils "^4.0.1" - throat@^6.0.1: version "6.0.2" resolved "https://registry.yarnpkg.com/throat/-/throat-6.0.2.tgz#51a3fbb5e11ae72e2cf74861ed5c8020f89f29fe" @@ -19662,14 +18344,6 @@ timers-browserify@^2.0.4: dependencies: setimmediate "^1.0.4" -timers-ext@^0.1.7: - version "0.1.7" - resolved "https://registry.yarnpkg.com/timers-ext/-/timers-ext-0.1.7.tgz#6f57ad8578e07a3fb9f91d9387d65647555e25c6" - integrity sha512-b85NUNzTSdodShTIbky6ZF02e8STtVVfD+fu4aXXShEELpozH+bCpJLYMPZbsABN2wDH7fJpqIoXxJpzbf0NqQ== - dependencies: - es5-ext "~0.10.46" - next-tick "1" - tiny-case@^1.0.3: version "1.0.3" resolved "https://registry.yarnpkg.com/tiny-case/-/tiny-case-1.0.3.tgz#d980d66bc72b5d5a9ca86fb7c9ffdb9c898ddd03" @@ -19846,21 +18520,7 @@ ts-jest@^27.0.5: semver "7.x" yargs-parser "20.x" -ts-jest@^29.1.0: - version "29.1.1" - resolved "https://registry.yarnpkg.com/ts-jest/-/ts-jest-29.1.1.tgz#f58fe62c63caf7bfcc5cc6472082f79180f0815b" - integrity sha512-D6xjnnbP17cC85nliwGiL+tpoKN0StpgE0TeOjXQTU6MVCfsB4v7aW05CgQ/1OywGb0x/oy9hHFnN+sczTiRaA== - dependencies: - bs-logger "0.x" - fast-json-stable-stringify "2.x" - jest-util "^29.0.0" - json5 "^2.2.3" - lodash.memoize "4.x" - make-error "1.x" - semver "^7.5.3" - yargs-parser "^21.0.1" - -ts-loader@^9.4.2, ts-loader@^9.4.4: +ts-loader@^9.4.2: version "9.4.4" resolved "https://registry.yarnpkg.com/ts-loader/-/ts-loader-9.4.4.tgz#6ceaf4d58dcc6979f84125335904920884b7cee4" integrity sha512-MLukxDHBl8OJ5Dk3y69IsKVFRA/6MwzEqBgh+OXMPB/OD01KQuWPFd1WAQP8a5PeSCAxfnkhiuWqfmFJzJQt9w== @@ -19926,15 +18586,6 @@ tsconfig-paths-webpack-plugin@^3.5.2: enhanced-resolve "^5.7.0" tsconfig-paths "^3.9.0" -tsconfig-paths-webpack-plugin@^4.1.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/tsconfig-paths-webpack-plugin/-/tsconfig-paths-webpack-plugin-4.1.0.tgz#3c6892c5e7319c146eee1e7302ed9e6f2be4f763" - integrity sha512-xWFISjviPydmtmgeUAuXp4N1fky+VCtfhOkDUFIv5ea7p4wuTomI4QTrXvFBX2S4jZsmyTSrStQl+E+4w+RzxA== - dependencies: - chalk "^4.1.0" - enhanced-resolve "^5.7.0" - tsconfig-paths "^4.1.2" - tsconfig-paths@^3.14.2, tsconfig-paths@^3.5.0, tsconfig-paths@^3.9.0: version "3.14.2" resolved "https://registry.yarnpkg.com/tsconfig-paths/-/tsconfig-paths-3.14.2.tgz#6e32f1f79412decd261f92d633a9dc1cfa99f088" @@ -20062,16 +18713,6 @@ type-is@~1.6.18: media-typer "0.3.0" mime-types "~2.1.24" -type@^1.0.1: - version "1.2.0" - resolved "https://registry.yarnpkg.com/type/-/type-1.2.0.tgz#848dd7698dafa3e54a6c479e759c4bc3f18847a0" - integrity sha512-+5nt5AAniqsCnu2cEQQdpzCAh33kVx8n0VoFidKpB1dVVLAN/F+bgVOqOJqOnEnrhp222clB5p3vUlD+1QAnfg== - -type@^2.7.2: - version "2.7.2" - resolved "https://registry.yarnpkg.com/type/-/type-2.7.2.tgz#2376a15a3a28b1efa0f5350dcf72d24df6ef98d0" - integrity sha512-dzlvlNlt6AXU7EBSfpAscydQ7gXB+pPGsPnfJnZpiNJBDj7IaJzQlBZYGdEi4R9HmPdBv2XmWJ6YUtoTa7lmCw== - typed-array-buffer@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/typed-array-buffer/-/typed-array-buffer-1.0.0.tgz#18de3e7ed7974b0a729d3feecb94338d1472cd60" @@ -20134,16 +18775,6 @@ typedoc@^0.22.13: minimatch "^5.1.0" shiki "^0.10.1" -typedoc@^0.24.8: - version "0.24.8" - resolved "https://registry.yarnpkg.com/typedoc/-/typedoc-0.24.8.tgz#cce9f47ba6a8d52389f5e583716a2b3b4335b63e" - integrity sha512-ahJ6Cpcvxwaxfu4KtjA8qZNqS43wYt6JL27wYiIgl1vd38WW/KWX11YuAeZhuz9v+ttrutSsgK+XO1CjL1kA3w== - dependencies: - lunr "^2.3.9" - marked "^4.3.0" - minimatch "^9.0.0" - shiki "^0.14.1" - "typescript@>=3 < 6": version "5.2.2" resolved "https://registry.yarnpkg.com/typescript/-/typescript-5.2.2.tgz#5ebb5e5a5b75f085f22bc3f8460fba308310fa78" @@ -20587,7 +19218,7 @@ v8-to-istanbul@^8.1.0: convert-source-map "^1.6.0" source-map "^0.7.3" -v8-to-istanbul@^9.0.0, v8-to-istanbul@^9.0.1: +v8-to-istanbul@^9.0.0: version "9.1.0" resolved "https://registry.yarnpkg.com/v8-to-istanbul/-/v8-to-istanbul-9.1.0.tgz#1b83ed4e397f58c85c266a570fc2558b5feb9265" integrity sha512-6z3GW9x8G1gd+JIIgQQQxXuiJtCXeAjp6RaPEPLv62mH3iPHPxV6W3robxtCzNErRo6ZwTmzWhsbNvjyEBKzKA== @@ -20701,7 +19332,7 @@ vm-browserify@^1.0.1: resolved "https://registry.yarnpkg.com/vm-browserify/-/vm-browserify-1.1.2.tgz#78641c488b8e6ca91a75f511e7a3b32a86e5dda0" integrity sha512-2ham8XPWTONajOR0ohOKOHXkm3+gaBmGut3SRuu75xLd/RRaY6vqgh8NBYYk7+RW3u5AtzPQZG8F10LHkl0lAQ== -vscode-oniguruma@^1.6.1, vscode-oniguruma@^1.7.0: +vscode-oniguruma@^1.6.1: version "1.7.0" resolved "https://registry.yarnpkg.com/vscode-oniguruma/-/vscode-oniguruma-1.7.0.tgz#439bfad8fe71abd7798338d1cd3dc53a8beea94b" integrity sha512-L9WMGRfrjOhgHSdOYgCt/yRMsXzLDJSL7BPrOZt73gU0iWO4mpqzqQzOz5srxqTvMBaR0XZTSrVWo4j55Rc6cA== @@ -20711,11 +19342,6 @@ vscode-textmate@5.2.0: resolved "https://registry.yarnpkg.com/vscode-textmate/-/vscode-textmate-5.2.0.tgz#01f01760a391e8222fe4f33fbccbd1ad71aed74e" integrity sha512-Uw5ooOQxRASHgu6C7GVvUxisKXfSgW4oFlO+aa+PAkgmH89O3CXxEEzNRNtHSqtXFTl0nAC1uYj0GMSH27uwtQ== -vscode-textmate@^8.0.0: - version "8.0.0" - resolved "https://registry.yarnpkg.com/vscode-textmate/-/vscode-textmate-8.0.0.tgz#2c7a3b1163ef0441097e0b5d6389cd5504b59e5d" - integrity sha512-AFbieoL7a5LMqcnOF04ji+rpXadgOXnZsxQr//r83kLPr7biP7am3g9zbaZIaBGwBRWeSvoMD4mgPdX3e4NWBg== - w3c-hr-time@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/w3c-hr-time/-/w3c-hr-time-1.0.2.tgz#0a89cdf5cc15822df9c360543676963e0cc308cd" @@ -20730,7 +19356,7 @@ w3c-xmlserializer@^2.0.0: dependencies: xml-name-validator "^3.0.0" -walker@^1.0.7, walker@^1.0.8, walker@~1.0.5: +walker@^1.0.7, walker@~1.0.5: version "1.0.8" resolved "https://registry.yarnpkg.com/walker/-/walker-1.0.8.tgz#bd498db477afe573dc04185f011d3ab8a8d7653f" integrity sha512-ts/8E8l5b7kY0vlWLewOkDXMmPdLcVV4GmOQLyxuSswIJsweeFZtAsMF7k1Nszz+TYBQrlYRmzOnr398y1JemQ== @@ -20815,25 +19441,6 @@ webpack-cli@^4.8.0: rechoir "^0.7.0" webpack-merge "^5.7.3" -webpack-cli@^5.1.4: - version "5.1.4" - resolved "https://registry.yarnpkg.com/webpack-cli/-/webpack-cli-5.1.4.tgz#c8e046ba7eaae4911d7e71e2b25b776fcc35759b" - integrity sha512-pIDJHIEI9LR0yxHXQ+Qh95k2EvXpWzZ5l+d+jIo+RdSm9MiHfzazIxwwni/p7+x4eJZuvG1AJwgC4TNQ7NRgsg== - dependencies: - "@discoveryjs/json-ext" "^0.5.0" - "@webpack-cli/configtest" "^2.1.1" - "@webpack-cli/info" "^2.0.2" - "@webpack-cli/serve" "^2.0.5" - colorette "^2.0.14" - commander "^10.0.1" - cross-spawn "^7.0.3" - envinfo "^7.7.3" - fastest-levenshtein "^1.0.12" - import-local "^3.0.2" - interpret "^3.1.1" - rechoir "^0.8.0" - webpack-merge "^5.7.3" - webpack-dev-middleware@^3.7.3: version "3.7.3" resolved "https://registry.yarnpkg.com/webpack-dev-middleware/-/webpack-dev-middleware-3.7.3.tgz#0639372b143262e2b84ab95d3b91a7597061c2c5" @@ -20868,7 +19475,7 @@ webpack-dev-middleware@^5.3.1: range-parser "^1.2.1" schema-utils "^4.0.0" -webpack-dev-server@^4.15.1, webpack-dev-server@^4.5.0: +webpack-dev-server@^4.5.0: version "4.15.1" resolved "https://registry.yarnpkg.com/webpack-dev-server/-/webpack-dev-server-4.15.1.tgz#8944b29c12760b3a45bdaa70799b17cb91b03df7" integrity sha512-5hbAst3h3C3L8w6W4P96L5vaV0PxSmJhxZvWKYIdgxOQm8pNZ5dEOmmSLBVpP85ReeyRt6AS1QJNyo/oFFPeVA== @@ -20933,7 +19540,7 @@ webpack-log@^2.0.0: ansi-colors "^3.0.0" uuid "^3.3.2" -webpack-merge@^5.7.3, webpack-merge@^5.8.0, webpack-merge@^5.9.0: +webpack-merge@^5.7.3, webpack-merge@^5.8.0: version "5.9.0" resolved "https://registry.yarnpkg.com/webpack-merge/-/webpack-merge-5.9.0.tgz#dc160a1c4cf512ceca515cc231669e9ddb133826" integrity sha512-6NbRQw4+Sy50vYNTw7EyOn41OZItPiXB8GNv3INSoe3PSFaHJEz3SHTrYVaRm2LilNGnFUzh0FAwqPEmU/CwDg== @@ -20995,7 +19602,7 @@ webpack@4: watchpack "^1.7.4" webpack-sources "^1.4.1" -"webpack@>=4.43.0 <6.0.0", webpack@^5.75.0, webpack@^5.88.2, webpack@^5.9.0: +"webpack@>=4.43.0 <6.0.0", webpack@^5.75.0, webpack@^5.9.0: version "5.88.2" resolved "https://registry.yarnpkg.com/webpack/-/webpack-5.88.2.tgz#f62b4b842f1c6ff580f3fcb2ed4f0b579f4c210e" integrity sha512-JmcgNZ1iKj+aiR0OvTYtWQqJwq37Pf683dY9bVORwVbUrDhLhdn/PlO2sHsFHPkj7sHNQF3JwaAkp49V+Sq1tQ== @@ -21241,14 +19848,6 @@ write-file-atomic@^3.0.0: signal-exit "^3.0.2" typedarray-to-buffer "^3.1.5" -write-file-atomic@^4.0.2: - version "4.0.2" - resolved "https://registry.yarnpkg.com/write-file-atomic/-/write-file-atomic-4.0.2.tgz#a9df01ae5b77858a027fd2e80768ee433555fcfd" - integrity sha512-7KxauUdBmSdWnmpaGFg+ppNjKF8uNLry8LyzjauQDOVONfFLNKrKvQOxZ/VuTIcS/gge/YNahf5RIIQWTSarlg== - dependencies: - imurmurhash "^0.1.4" - signal-exit "^3.0.7" - write-json-file@^3.2.0: version "3.2.0" resolved "https://registry.yarnpkg.com/write-json-file/-/write-json-file-3.2.0.tgz#65bbdc9ecd8a1458e15952770ccbadfcff5fe62a" @@ -21280,11 +19879,6 @@ ws@^8.13.0, ws@^8.2.3: resolved "https://registry.yarnpkg.com/ws/-/ws-8.14.1.tgz#4b9586b4f70f9e6534c7bb1d3dc0baa8b8cf01e0" integrity sha512-4OOseMUq8AzRBI/7SLMUwO+FEDnguetSk7KMb1sHwvF2w2Wv5Hoj0nlifx8vtGsftE/jWHojPy8sMMzYLJ2G/A== -ws@~8.11.0: - version "8.11.0" - resolved "https://registry.yarnpkg.com/ws/-/ws-8.11.0.tgz#6a0d36b8edfd9f96d8b25683db2f8d7de6e8e143" - integrity sha512-HPG3wQd9sNQoT9xHyNCXoDUa+Xw/VevmY9FoHyQ+g+rrMn4j6FB4np7Z0OhdTgjx6MgQLK7jwSy1YecU1+4Asg== - x-default-browser@^0.4.0: version "0.4.0" resolved "https://registry.yarnpkg.com/x-default-browser/-/x-default-browser-0.4.0.tgz#70cf0da85da7c0ab5cb0f15a897f2322a6bdd481" @@ -21385,7 +19979,7 @@ yargs-parser@20.x, yargs-parser@^20.2.2, yargs-parser@^20.2.3, yargs-parser@^20. resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-20.2.9.tgz#2eb7dc3b0289718fc295f362753845c41a0c94ee" integrity sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w== -yargs-parser@21.1.1, yargs-parser@^21.0.1, yargs-parser@^21.1.1: +yargs-parser@21.1.1, yargs-parser@^21.1.1: version "21.1.1" resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-21.1.1.tgz#9096bceebf990d21bb31fa9516e0ede294a77d35" integrity sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw== @@ -21413,7 +20007,7 @@ yargs@16.2.0, yargs@^16.2.0: y18n "^5.0.5" yargs-parser "^20.2.2" -yargs@^17.3.1, yargs@^17.6.2: +yargs@^17.6.2: version "17.7.2" resolved "https://registry.yarnpkg.com/yargs/-/yargs-17.7.2.tgz#991df39aca675a192b816e1e0363f9d75d2aa269" integrity sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w== @@ -21441,11 +20035,6 @@ yocto-queue@^0.1.0: resolved "https://registry.yarnpkg.com/yocto-queue/-/yocto-queue-0.1.0.tgz#0294eb3dee05028d31ee1a5fa2c556a6aaf10a1b" integrity sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q== -yocto-queue@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/yocto-queue/-/yocto-queue-1.0.0.tgz#7f816433fb2cbc511ec8bf7d263c3b58a1a3c251" - integrity sha512-9bnSc/HEW2uRy67wc+T8UwauLuPJVn28jb+GtJY16iiKWyvmYJRXVT4UamsAEGQfPohgr2q4Tq0sQbQlxTfi1g== - yup@^0.32.9: version "0.32.11" resolved "https://registry.yarnpkg.com/yup/-/yup-0.32.11.tgz#d67fb83eefa4698607982e63f7ca4c5ed3cf18c5" From 82d6d203f05b06f803e14b2dd273b4296dabbbc9 Mon Sep 17 00:00:00 2001 From: serinko <97586125+serinko@users.noreply.github.com> Date: Thu, 12 Oct 2023 10:15:02 +0200 Subject: [PATCH 009/347] initialize legal forum --- documentation/operators/src/SUMMARY.md | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/documentation/operators/src/SUMMARY.md b/documentation/operators/src/SUMMARY.md index 0a7e0312a1..0e2cdb2323 100644 --- a/documentation/operators/src/SUMMARY.md +++ b/documentation/operators/src/SUMMARY.md @@ -24,6 +24,10 @@ - [Mix Nodes](./faq/mixnodes-faq.md) - [Project Smoosh](./faq/smoosh-faq.md) +# Legal Forum + +- [Exit Gateway](./legal/exit-gateway.md) + --- # Misc. - [Code of Conduct](coc.md) From 02dfd775a91904ebdddbe8619b9d8a4edbddcb24 Mon Sep 17 00:00:00 2001 From: serinko <97586125+serinko@users.noreply.github.com> Date: Thu, 12 Oct 2023 10:28:27 +0200 Subject: [PATCH 010/347] add summary of smoosh legal impact --- .../operators/src/legal/exit-gateway.md | 53 +++++++++++++++++++ 1 file changed, 53 insertions(+) create mode 100644 documentation/operators/src/legal/exit-gateway.md diff --git a/documentation/operators/src/legal/exit-gateway.md b/documentation/operators/src/legal/exit-gateway.md new file mode 100644 index 0000000000..e825151001 --- /dev/null +++ b/documentation/operators/src/legal/exit-gateway.md @@ -0,0 +1,53 @@ +# Nym operators - Running Exit Gateway + +```admonish-info +**The entire content of this page is under [Creative Commons Attribution 4.0 International Public License](https://creativecommons.org/licenses/by/4.0/).** +``` + +This page is a part of Nym Community Legal Forum and its content is composed by shared advices in [Node Operators Matrix channel](https://matrix.to/#/#operators:nymtech.chat) as well as though direct pull requests done by the node operators directly to our repository. + +This document presents an initiative to further support Nym’s mission of allowing privacy for everyone everywhere. This would be achieved with the support of Nym node operators operating gateways and opening these to any online service with the safeguards of the [Tor Null ‘deny’ list](https://tornull.org/). + +## Summary + +* This document outlines a plan to change Nym Gateways from operating with an ‘allow’ to a ‘deny’ list to enable broader uptake and usage of the Nym mixnet. It provides operators with an overview of the plan, pros and cons, legal as well as technical advice. + +* Nym is committed to ensuring privacy for all users, regardless of their location and for the broadest possible range of online services. In order to achieve this aim, the Nym mixnet needs to increase its usability across a broad range of apps and services. + +* Currently, Nym Gateway nodes only enable access to apps and services that are on an ‘allow’ list that is maintained by the core team. + +* To decentralise and enable privacy for a broader range of services, this initiative will have to transition from the current ‘allow’ list to a ‘deny’ list (based on the [Tor Null advisory BL](https://tornull.org/)). + +* This will enhance the usage and appeal of Nym products for end users. As a result, increased usage will ultimately lead to higher revenues for Nym operators. + +* Nym core team cannot provide operators with definitive answers regarding the potential risks of operating open Gateways. However, there is online evidence of operating Tor exit relays: + * From a technical perspective, Nym node operators may need to implement additional controls, such as dedicated hardware and IP usage, or setting up an HTML exit notice on port 80. + * From an operational standpoint, node operators may be expected to actively manage their relationship with their ISP or VPS provider and respond to abuse requests using the proposed templates. + * Legally, exit relays are typically considered "telecommunication networks" and are subject to intermediary liability protection. However, there may be exceptions, particularly in cases involving criminal law and copyright claims. Operators could seek advice from local privacy associations and may consider running nodes under an entity rather than as individuals. + +* This document serves as the basis for a consultation with Nym node operators on any concerns or additional support and information you need for this change to be successful and ensure maximum availability, usability and adoption. + +## Goal of the initiative + +**Nym supports privacy for everyone, everywhere.** + +To offer a better and more private everyday experience for its users, Nym would like them to use any online services they please, without limiting its access to a few messaging apps or crypto wallets. + +To achieve this, operators running “gateways” would have to “open” their nodes to a wider range of online services, in a similar fashion to Tor exit relays. + +## Pros and cons of the initiative + +Previous setup setup: Running nodes supporting strict SOCKS5 app-based traffic + +| **Dimension** | **Pros** | **Cons** | +| :--- | :--- | :--- | +| Aspirational | | - Very limited use cases, not supportive of the “Privacy for everyone everywhere” aspiration\ - Limited appeal to users, low competitiveness in the market, thus low usage | +| Technical | - No changes required in technical setup | | +| Operational | - No impact on operators operations (e.g., relationships with VPS providers)\ - Low overhead\ - Can be run as an individual | | +| Legal | - Limited legal risks for operators | | +| Financial | | - Low revenues for operators due to limited product traction | + + + + + From 95f0dd8979afad3dfcda2b8d58dd86824e574b5b Mon Sep 17 00:00:00 2001 From: serinko <97586125+serinko@users.noreply.github.com> Date: Thu, 12 Oct 2023 10:53:18 +0000 Subject: [PATCH 011/347] add in-sheet-break-lines
--- documentation/operators/src/legal/exit-gateway.md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/documentation/operators/src/legal/exit-gateway.md b/documentation/operators/src/legal/exit-gateway.md index e825151001..c282d93bbb 100644 --- a/documentation/operators/src/legal/exit-gateway.md +++ b/documentation/operators/src/legal/exit-gateway.md @@ -1,7 +1,7 @@ # Nym operators - Running Exit Gateway ```admonish-info -**The entire content of this page is under [Creative Commons Attribution 4.0 International Public License](https://creativecommons.org/licenses/by/4.0/).** +The entire content of this page is under [Creative Commons Attribution 4.0 International Public License](https://creativecommons.org/licenses/by/4.0/). ``` This page is a part of Nym Community Legal Forum and its content is composed by shared advices in [Node Operators Matrix channel](https://matrix.to/#/#operators:nymtech.chat) as well as though direct pull requests done by the node operators directly to our repository. @@ -37,13 +37,13 @@ To achieve this, operators running “gateways” would have to “open” their ## Pros and cons of the initiative -Previous setup setup: Running nodes supporting strict SOCKS5 app-based traffic +Previous setup: Running nodes supporting strict SOCKS5 app-based traffic | **Dimension** | **Pros** | **Cons** | | :--- | :--- | :--- | -| Aspirational | | - Very limited use cases, not supportive of the “Privacy for everyone everywhere” aspiration\ - Limited appeal to users, low competitiveness in the market, thus low usage | +| Aspirational | | - Very limited use cases, not supportive of the “Privacy for everyone everywhere” aspiration
- Limited appeal to users, low competitiveness in the market, thus low usage | | Technical | - No changes required in technical setup | | -| Operational | - No impact on operators operations (e.g., relationships with VPS providers)\ - Low overhead\ - Can be run as an individual | | +| Operational | - No impact on operators operations (e.g., relationships with VPS providers)
- Low overhead
- Can be run as an individual | | | Legal | - Limited legal risks for operators | | | Financial | | - Low revenues for operators due to limited product traction | From 12a058d91b57a02ddd2becc65a3f9ab99fd32802 Mon Sep 17 00:00:00 2001 From: serinko <97586125+serinko@users.noreply.github.com> Date: Thu, 12 Oct 2023 13:46:30 +0200 Subject: [PATCH 012/347] update mdbook-admonish --- documentation/operators/book.toml | 4 +- documentation/operators/mdbook-admonish.css | 173 ++++++++---------- .../operators/src/legal/exit-gateway.md | 24 ++- 3 files changed, 104 insertions(+), 97 deletions(-) diff --git a/documentation/operators/book.toml b/documentation/operators/book.toml index 870118ee61..56a5b00162 100644 --- a/documentation/operators/book.toml +++ b/documentation/operators/book.toml @@ -42,7 +42,7 @@ turn-off = true [preprocessor.admonish] command = "mdbook-admonish" -assets_version = "2.0.0" # do not edit: managed by `mdbook-admonish install` +assets_version = "3.0.0" # do not edit: managed by `mdbook-admonish install` # variables preprocessor: import variables into files # https://gitlab.com/tglman/mdbook-variables/ @@ -83,7 +83,7 @@ curly-quotes = true # mathjax-support = false # useful if we want to pull equations in copy-fonts = true no-section-label = false -additional-css = ["theme/pagetoc.css", "././mdbook-admonish.css","./custom.css"] +additional-css = ["theme/pagetoc.css", "././mdbook-admonish.css","./custom.css", "./mdbook-admonish.css"] additional-js = ["theme/pagetoc.js"] git-repository-url = "https://github.com/nymtech/nym" git-repository-icon = "fa-github" diff --git a/documentation/operators/mdbook-admonish.css b/documentation/operators/mdbook-admonish.css index 5e360387df..e0a3365532 100644 --- a/documentation/operators/mdbook-admonish.css +++ b/documentation/operators/mdbook-admonish.css @@ -1,31 +1,18 @@ @charset "UTF-8"; :root { - --md-admonition-icon--note: - url("data:image/svg+xml;charset=utf-8,"); - --md-admonition-icon--abstract: - url("data:image/svg+xml;charset=utf-8,"); - --md-admonition-icon--info: - url("data:image/svg+xml;charset=utf-8,"); - --md-admonition-icon--tip: - url("data:image/svg+xml;charset=utf-8,"); - --md-admonition-icon--success: - url("data:image/svg+xml;charset=utf-8,"); - --md-admonition-icon--question: - url("data:image/svg+xml;charset=utf-8,"); - --md-admonition-icon--warning: - url("data:image/svg+xml;charset=utf-8,"); - --md-admonition-icon--failure: - url("data:image/svg+xml;charset=utf-8,"); - --md-admonition-icon--danger: - url("data:image/svg+xml;charset=utf-8,"); - --md-admonition-icon--bug: - url("data:image/svg+xml;charset=utf-8,"); - --md-admonition-icon--example: - url("data:image/svg+xml;charset=utf-8,"); - --md-admonition-icon--quote: - url("data:image/svg+xml;charset=utf-8,"); - --md-details-icon: - url("data:image/svg+xml;charset=utf-8,"); + --md-admonition-icon--admonish-note: url("data:image/svg+xml;charset=utf-8,"); + --md-admonition-icon--admonish-abstract: url("data:image/svg+xml;charset=utf-8,"); + --md-admonition-icon--admonish-info: url("data:image/svg+xml;charset=utf-8,"); + --md-admonition-icon--admonish-tip: url("data:image/svg+xml;charset=utf-8,"); + --md-admonition-icon--admonish-success: url("data:image/svg+xml;charset=utf-8,"); + --md-admonition-icon--admonish-question: url("data:image/svg+xml;charset=utf-8,"); + --md-admonition-icon--admonish-warning: url("data:image/svg+xml;charset=utf-8,"); + --md-admonition-icon--admonish-failure: url("data:image/svg+xml;charset=utf-8,"); + --md-admonition-icon--admonish-danger: url("data:image/svg+xml;charset=utf-8,"); + --md-admonition-icon--admonish-bug: url("data:image/svg+xml;charset=utf-8,"); + --md-admonition-icon--admonish-example: url("data:image/svg+xml;charset=utf-8,"); + --md-admonition-icon--admonish-quote: url("data:image/svg+xml;charset=utf-8,"); + --md-details-icon: url("data:image/svg+xml;charset=utf-8,"); } :is(.admonition) { @@ -75,8 +62,9 @@ a.admonition-anchor-link::before { content: "§"; } -:is(.admonition-title, summary) { +:is(.admonition-title, summary.admonition-title) { position: relative; + min-height: 4rem; margin-block: 0; margin-inline: -1.6rem -1.2rem; padding-block: 0.8rem; @@ -85,13 +73,13 @@ a.admonition-anchor-link::before { background-color: rgba(68, 138, 255, 0.1); display: flex; } -:is(.admonition-title, summary) p { +:is(.admonition-title, summary.admonition-title) p { margin: 0; } -html :is(.admonition-title, summary):last-child { +html :is(.admonition-title, summary.admonition-title):last-child { margin-bottom: 0; } -:is(.admonition-title, summary)::before { +:is(.admonition-title, summary.admonition-title)::before { position: absolute; top: 0.625em; inset-inline-start: 1.6rem; @@ -106,7 +94,7 @@ html :is(.admonition-title, summary):last-child { -webkit-mask-size: contain; content: ""; } -:is(.admonition-title, summary):hover a.admonition-anchor-link { +:is(.admonition-title, summary.admonition-title):hover a.admonition-anchor-link { display: initial; } @@ -131,204 +119,204 @@ details[open].admonition > summary.admonition-title::after { transform: rotate(90deg); } -:is(.admonition):is(.note) { +:is(.admonition):is(.admonish-note) { border-color: #448aff; } -:is(.note) > :is(.admonition-title, summary) { +:is(.admonish-note) > :is(.admonition-title, summary.admonition-title) { background-color: rgba(68, 138, 255, 0.1); } -:is(.note) > :is(.admonition-title, summary)::before { +:is(.admonish-note) > :is(.admonition-title, summary.admonition-title)::before { background-color: #448aff; - mask-image: var(--md-admonition-icon--note); - -webkit-mask-image: var(--md-admonition-icon--note); + mask-image: var(--md-admonition-icon--admonish-note); + -webkit-mask-image: var(--md-admonition-icon--admonish-note); mask-repeat: no-repeat; -webkit-mask-repeat: no-repeat; mask-size: contain; -webkit-mask-repeat: no-repeat; } -:is(.admonition):is(.abstract, .summary, .tldr) { +:is(.admonition):is(.admonish-abstract, .admonish-summary, .admonish-tldr) { border-color: #00b0ff; } -:is(.abstract, .summary, .tldr) > :is(.admonition-title, summary) { +:is(.admonish-abstract, .admonish-summary, .admonish-tldr) > :is(.admonition-title, summary.admonition-title) { background-color: rgba(0, 176, 255, 0.1); } -:is(.abstract, .summary, .tldr) > :is(.admonition-title, summary)::before { +:is(.admonish-abstract, .admonish-summary, .admonish-tldr) > :is(.admonition-title, summary.admonition-title)::before { background-color: #00b0ff; - mask-image: var(--md-admonition-icon--abstract); - -webkit-mask-image: var(--md-admonition-icon--abstract); + mask-image: var(--md-admonition-icon--admonish-abstract); + -webkit-mask-image: var(--md-admonition-icon--admonish-abstract); mask-repeat: no-repeat; -webkit-mask-repeat: no-repeat; mask-size: contain; -webkit-mask-repeat: no-repeat; } -:is(.admonition):is(.info, .todo) { +:is(.admonition):is(.admonish-info, .admonish-todo) { border-color: #00b8d4; } -:is(.info, .todo) > :is(.admonition-title, summary) { +:is(.admonish-info, .admonish-todo) > :is(.admonition-title, summary.admonition-title) { background-color: rgba(0, 184, 212, 0.1); } -:is(.info, .todo) > :is(.admonition-title, summary)::before { +:is(.admonish-info, .admonish-todo) > :is(.admonition-title, summary.admonition-title)::before { background-color: #00b8d4; - mask-image: var(--md-admonition-icon--info); - -webkit-mask-image: var(--md-admonition-icon--info); + mask-image: var(--md-admonition-icon--admonish-info); + -webkit-mask-image: var(--md-admonition-icon--admonish-info); mask-repeat: no-repeat; -webkit-mask-repeat: no-repeat; mask-size: contain; -webkit-mask-repeat: no-repeat; } -:is(.admonition):is(.tip, .hint, .important) { +:is(.admonition):is(.admonish-tip, .admonish-hint, .admonish-important) { border-color: #00bfa5; } -:is(.tip, .hint, .important) > :is(.admonition-title, summary) { +:is(.admonish-tip, .admonish-hint, .admonish-important) > :is(.admonition-title, summary.admonition-title) { background-color: rgba(0, 191, 165, 0.1); } -:is(.tip, .hint, .important) > :is(.admonition-title, summary)::before { +:is(.admonish-tip, .admonish-hint, .admonish-important) > :is(.admonition-title, summary.admonition-title)::before { background-color: #00bfa5; - mask-image: var(--md-admonition-icon--tip); - -webkit-mask-image: var(--md-admonition-icon--tip); + mask-image: var(--md-admonition-icon--admonish-tip); + -webkit-mask-image: var(--md-admonition-icon--admonish-tip); mask-repeat: no-repeat; -webkit-mask-repeat: no-repeat; mask-size: contain; -webkit-mask-repeat: no-repeat; } -:is(.admonition):is(.success, .check, .done) { +:is(.admonition):is(.admonish-success, .admonish-check, .admonish-done) { border-color: #00c853; } -:is(.success, .check, .done) > :is(.admonition-title, summary) { +:is(.admonish-success, .admonish-check, .admonish-done) > :is(.admonition-title, summary.admonition-title) { background-color: rgba(0, 200, 83, 0.1); } -:is(.success, .check, .done) > :is(.admonition-title, summary)::before { +:is(.admonish-success, .admonish-check, .admonish-done) > :is(.admonition-title, summary.admonition-title)::before { background-color: #00c853; - mask-image: var(--md-admonition-icon--success); - -webkit-mask-image: var(--md-admonition-icon--success); + mask-image: var(--md-admonition-icon--admonish-success); + -webkit-mask-image: var(--md-admonition-icon--admonish-success); mask-repeat: no-repeat; -webkit-mask-repeat: no-repeat; mask-size: contain; -webkit-mask-repeat: no-repeat; } -:is(.admonition):is(.question, .help, .faq) { +:is(.admonition):is(.admonish-question, .admonish-help, .admonish-faq) { border-color: #64dd17; } -:is(.question, .help, .faq) > :is(.admonition-title, summary) { +:is(.admonish-question, .admonish-help, .admonish-faq) > :is(.admonition-title, summary.admonition-title) { background-color: rgba(100, 221, 23, 0.1); } -:is(.question, .help, .faq) > :is(.admonition-title, summary)::before { +:is(.admonish-question, .admonish-help, .admonish-faq) > :is(.admonition-title, summary.admonition-title)::before { background-color: #64dd17; - mask-image: var(--md-admonition-icon--question); - -webkit-mask-image: var(--md-admonition-icon--question); + mask-image: var(--md-admonition-icon--admonish-question); + -webkit-mask-image: var(--md-admonition-icon--admonish-question); mask-repeat: no-repeat; -webkit-mask-repeat: no-repeat; mask-size: contain; -webkit-mask-repeat: no-repeat; } -:is(.admonition):is(.warning, .caution, .attention) { +:is(.admonition):is(.admonish-warning, .admonish-caution, .admonish-attention) { border-color: #ff9100; } -:is(.warning, .caution, .attention) > :is(.admonition-title, summary) { +:is(.admonish-warning, .admonish-caution, .admonish-attention) > :is(.admonition-title, summary.admonition-title) { background-color: rgba(255, 145, 0, 0.1); } -:is(.warning, .caution, .attention) > :is(.admonition-title, summary)::before { +:is(.admonish-warning, .admonish-caution, .admonish-attention) > :is(.admonition-title, summary.admonition-title)::before { background-color: #ff9100; - mask-image: var(--md-admonition-icon--warning); - -webkit-mask-image: var(--md-admonition-icon--warning); + mask-image: var(--md-admonition-icon--admonish-warning); + -webkit-mask-image: var(--md-admonition-icon--admonish-warning); mask-repeat: no-repeat; -webkit-mask-repeat: no-repeat; mask-size: contain; -webkit-mask-repeat: no-repeat; } -:is(.admonition):is(.failure, .fail, .missing) { +:is(.admonition):is(.admonish-failure, .admonish-fail, .admonish-missing) { border-color: #ff5252; } -:is(.failure, .fail, .missing) > :is(.admonition-title, summary) { +:is(.admonish-failure, .admonish-fail, .admonish-missing) > :is(.admonition-title, summary.admonition-title) { background-color: rgba(255, 82, 82, 0.1); } -:is(.failure, .fail, .missing) > :is(.admonition-title, summary)::before { +:is(.admonish-failure, .admonish-fail, .admonish-missing) > :is(.admonition-title, summary.admonition-title)::before { background-color: #ff5252; - mask-image: var(--md-admonition-icon--failure); - -webkit-mask-image: var(--md-admonition-icon--failure); + mask-image: var(--md-admonition-icon--admonish-failure); + -webkit-mask-image: var(--md-admonition-icon--admonish-failure); mask-repeat: no-repeat; -webkit-mask-repeat: no-repeat; mask-size: contain; -webkit-mask-repeat: no-repeat; } -:is(.admonition):is(.danger, .error) { +:is(.admonition):is(.admonish-danger, .admonish-error) { border-color: #ff1744; } -:is(.danger, .error) > :is(.admonition-title, summary) { +:is(.admonish-danger, .admonish-error) > :is(.admonition-title, summary.admonition-title) { background-color: rgba(255, 23, 68, 0.1); } -:is(.danger, .error) > :is(.admonition-title, summary)::before { +:is(.admonish-danger, .admonish-error) > :is(.admonition-title, summary.admonition-title)::before { background-color: #ff1744; - mask-image: var(--md-admonition-icon--danger); - -webkit-mask-image: var(--md-admonition-icon--danger); + mask-image: var(--md-admonition-icon--admonish-danger); + -webkit-mask-image: var(--md-admonition-icon--admonish-danger); mask-repeat: no-repeat; -webkit-mask-repeat: no-repeat; mask-size: contain; -webkit-mask-repeat: no-repeat; } -:is(.admonition):is(.bug) { +:is(.admonition):is(.admonish-bug) { border-color: #f50057; } -:is(.bug) > :is(.admonition-title, summary) { +:is(.admonish-bug) > :is(.admonition-title, summary.admonition-title) { background-color: rgba(245, 0, 87, 0.1); } -:is(.bug) > :is(.admonition-title, summary)::before { +:is(.admonish-bug) > :is(.admonition-title, summary.admonition-title)::before { background-color: #f50057; - mask-image: var(--md-admonition-icon--bug); - -webkit-mask-image: var(--md-admonition-icon--bug); + mask-image: var(--md-admonition-icon--admonish-bug); + -webkit-mask-image: var(--md-admonition-icon--admonish-bug); mask-repeat: no-repeat; -webkit-mask-repeat: no-repeat; mask-size: contain; -webkit-mask-repeat: no-repeat; } -:is(.admonition):is(.example) { +:is(.admonition):is(.admonish-example) { border-color: #7c4dff; } -:is(.example) > :is(.admonition-title, summary) { +:is(.admonish-example) > :is(.admonition-title, summary.admonition-title) { background-color: rgba(124, 77, 255, 0.1); } -:is(.example) > :is(.admonition-title, summary)::before { +:is(.admonish-example) > :is(.admonition-title, summary.admonition-title)::before { background-color: #7c4dff; - mask-image: var(--md-admonition-icon--example); - -webkit-mask-image: var(--md-admonition-icon--example); + mask-image: var(--md-admonition-icon--admonish-example); + -webkit-mask-image: var(--md-admonition-icon--admonish-example); mask-repeat: no-repeat; -webkit-mask-repeat: no-repeat; mask-size: contain; -webkit-mask-repeat: no-repeat; } -:is(.admonition):is(.quote, .cite) { +:is(.admonition):is(.admonish-quote, .admonish-cite) { border-color: #9e9e9e; } -:is(.quote, .cite) > :is(.admonition-title, summary) { +:is(.admonish-quote, .admonish-cite) > :is(.admonition-title, summary.admonition-title) { background-color: rgba(158, 158, 158, 0.1); } -:is(.quote, .cite) > :is(.admonition-title, summary)::before { +:is(.admonish-quote, .admonish-cite) > :is(.admonition-title, summary.admonition-title)::before { background-color: #9e9e9e; - mask-image: var(--md-admonition-icon--quote); - -webkit-mask-image: var(--md-admonition-icon--quote); + mask-image: var(--md-admonition-icon--admonish-quote); + -webkit-mask-image: var(--md-admonition-icon--admonish-quote); mask-repeat: no-repeat; -webkit-mask-repeat: no-repeat; mask-size: contain; @@ -339,7 +327,8 @@ details[open].admonition > summary.admonition-title::after { background-color: var(--sidebar-bg); } -.ayu :is(.admonition), .coal :is(.admonition) { +.ayu :is(.admonition), +.coal :is(.admonition) { background-color: var(--theme-hover); } diff --git a/documentation/operators/src/legal/exit-gateway.md b/documentation/operators/src/legal/exit-gateway.md index c282d93bbb..7d8a80f0f8 100644 --- a/documentation/operators/src/legal/exit-gateway.md +++ b/documentation/operators/src/legal/exit-gateway.md @@ -1,10 +1,10 @@ # Nym operators - Running Exit Gateway -```admonish-info +```admonish info The entire content of this page is under [Creative Commons Attribution 4.0 International Public License](https://creativecommons.org/licenses/by/4.0/). ``` -This page is a part of Nym Community Legal Forum and its content is composed by shared advices in [Node Operators Matrix channel](https://matrix.to/#/#operators:nymtech.chat) as well as though direct pull requests done by the node operators directly to our repository. +This page is a part of Nym Community Legal Forum and its content is composed by shared advices in [Node Operators Matrix channel](https://matrix.to/#/#operators:nymtech.chat) as well as though direct pull requests done by the node operators directly to our [repository](https://github.com/nymtech/nym/tree/develop/documentation/operators/src). This document presents an initiative to further support Nym’s mission of allowing privacy for everyone everywhere. This would be achieved with the support of Nym node operators operating gateways and opening these to any online service with the safeguards of the [Tor Null ‘deny’ list](https://tornull.org/). @@ -43,11 +43,29 @@ Previous setup: Running nodes supporting strict SOCKS5 app-based traffic | :--- | :--- | :--- | | Aspirational | | - Very limited use cases, not supportive of the “Privacy for everyone everywhere” aspiration
- Limited appeal to users, low competitiveness in the market, thus low usage | | Technical | - No changes required in technical setup | | -| Operational | - No impact on operators operations (e.g., relationships with VPS providers)
- Low overhead
- Can be run as an individual | | +| Operational | - No impact on operators operations (e.g., relationships with VPS providers)
- Low overhead
- Can be run as an individual | | | Legal | - Limited legal risks for operators | | | Financial | | - Low revenues for operators due to limited product traction | +The new setup: Running nodes supporting traffic of any online service (with safeguards in the form of an denylist) + +| **Dimension** | **Pros** | **Cons** | +| :--- | :--- | :--- | +| Aspirational | - Higher market appeal of a fully-fledged product able to answer all users’ use cases
- Relevance in the market, driving higher usage | | +| Technical | - Very limited changes required in the technical setup (changes in the allow -> denylist) | - Increased monitoring required to detect and prevent abuse (e.g. spam) | +| Operational | | - Higher operational overhead, such as dealing with DMCA / abuse complaints, managing the VPS provider questions, or helping the community to maintain the denylist
- Administrative overhead if running nodes as a company or an entity | +| Legal | | - Ideally requires to check legal environment with local privacy association or lawyer | Financial | - Higher revenue potential for operators due to the increase in network usage | - If not running VPS with an unlimited bandwidth plan, higher costs due to higher network usage | + +## New gateway setup + +In our previous technical setup, network requesters acted as a proxy, and only made requests that match an allow list. That was a default IP based list of allowed domains stored at Nym page in a centralised fashion possibly re-defined by any Network requester operator. + +This restricts the hosts that the NymConnect app can connect to and has the effect of selectively supporting messaging services (e.g. Telegram, Matrix) or crypto wallets (e.g. Electrum or Monero). Operators of network requesters can have confidence that the infrastructure they run only connects to a limited set of public internet hosts. + +In the new setup, the main change is to expand this short allow list to a more permissive setup. An exit policy will constrain the hosts that the users of the Nym Mixnet and Nym VPN can connect to. This will be done in an effort to protect the operators, as Gateways will act both as SOCKS5 Network Requesters, and exit nodes for IP traffic from Nym Mixnet VPN and VPN clients (both wrapped in the same app). + + From 3ce936edac9e0451745ad3dd8656218d3365587e Mon Sep 17 00:00:00 2001 From: fmtabbara Date: Thu, 12 Oct 2023 11:09:05 +0100 Subject: [PATCH 013/347] move delgation sorting logic to hook + update storybook data values for testing --- nym-wallet/package.json | 2 +- .../Delegation/DelegationList.stories.tsx | 44 +- .../components/Delegation/DelegationList.tsx | 44 +- nym-wallet/src/context/mocks/delegations.tsx | 6 +- nym-wallet/src/hooks/useSortDelegations.tsx | 34 + yarn.lock | 1870 +++++++++-------- 6 files changed, 1009 insertions(+), 991 deletions(-) create mode 100644 nym-wallet/src/hooks/useSortDelegations.tsx diff --git a/nym-wallet/package.json b/nym-wallet/package.json index b7b6aafddd..6524d58a47 100644 --- a/nym-wallet/package.json +++ b/nym-wallet/package.json @@ -31,7 +31,7 @@ "@nymproject/mui-theme": "^1.0.0", "@nymproject/react": "^1.0.0", "@nymproject/types": "^1.0.0", - "@nymproject/node-tester": ">=1.2.0-rc.8", + "@nymproject/node-tester": "^1.0.0", "@storybook/react": "^6.5.15", "@tauri-apps/api": "^1.2.0", "@tauri-apps/tauri-forage": "^1.0.0-beta.2", diff --git a/nym-wallet/src/components/Delegation/DelegationList.stories.tsx b/nym-wallet/src/components/Delegation/DelegationList.stories.tsx index 57ed73c380..9683d268ca 100644 --- a/nym-wallet/src/components/Delegation/DelegationList.stories.tsx +++ b/nym-wallet/src/components/Delegation/DelegationList.stories.tsx @@ -29,7 +29,7 @@ export const items: DelegationWithEverything[] = [ accumulated_by_operator: { amount: '100', denom: 'nym' }, owner: '', block_height: BigInt(100), - stake_saturation: '0.5', + stake_saturation: '0.25', avg_uptime_percent: 0.5, uses_vesting_contract_tokens: false, pending_events: [], @@ -38,7 +38,7 @@ export const items: DelegationWithEverything[] = [ { mix_id: 2, node_identity: 'DT8S942S8AQs2zKHS9SVo1GyHmuca3pfL2uLhLksJ3D8', - amount: { amount: '100', denom: 'nym' }, + amount: { amount: '1010', denom: 'nym' }, delegated_on_iso_datetime: new Date(2021, 1, 2).toDateString(), unclaimed_rewards: { amount: '0.05', denom: 'nym' }, cost_params: { @@ -49,11 +49,11 @@ export const items: DelegationWithEverything[] = [ }, }, accumulated_by_delegates: { amount: '50', denom: 'nym' }, - accumulated_by_operator: { amount: '100', denom: 'nym' }, + accumulated_by_operator: { amount: '200', denom: 'nym' }, owner: '', block_height: BigInt(4000), - stake_saturation: '0.5', - avg_uptime_percent: 0.1, + stake_saturation: '0.43', + avg_uptime_percent: 0.22, uses_vesting_contract_tokens: true, pending_events: [], mixnode_is_unbonding: true, @@ -61,18 +61,18 @@ export const items: DelegationWithEverything[] = [ { mix_id: 3, node_identity: '', - amount: { amount: '100', denom: 'nym' }, + amount: { amount: '300', denom: 'nym' }, delegated_on_iso_datetime: new Date(2021, 1, 2).toDateString(), unclaimed_rewards: { amount: '0.05', denom: 'nym' }, cost_params: { profit_margin_percent: '0.1122323949234', interval_operating_cost: { - amount: '40', + amount: '50', denom: 'nym', }, }, accumulated_by_delegates: { amount: '50', denom: 'nym' }, - accumulated_by_operator: { amount: '100', denom: 'nym' }, + accumulated_by_operator: { amount: '300', denom: 'nym' }, owner: '', block_height: BigInt(4000), stake_saturation: '0.5', @@ -84,18 +84,18 @@ export const items: DelegationWithEverything[] = [ { mix_id: 4, node_identity: 'DT8S942S8AQs2zKHS9SVo1GyHmuca3pfL2uLhLksJ3D8', - amount: { amount: '100', denom: 'nym' }, + amount: { amount: '201', denom: 'nym' }, delegated_on_iso_datetime: new Date(2021, 1, 2).toDateString(), unclaimed_rewards: { amount: '0.05', denom: 'nym' }, cost_params: { profit_margin_percent: '0.1122323949234', interval_operating_cost: { - amount: '40', + amount: '60', denom: 'nym', }, }, accumulated_by_delegates: { amount: '50', denom: 'nym' }, - accumulated_by_operator: { amount: '100', denom: 'nym' }, + accumulated_by_operator: { amount: '202', denom: 'nym' }, owner: '', block_height: BigInt(4000), stake_saturation: '0.5', @@ -113,7 +113,7 @@ export const items: DelegationWithEverything[] = [ cost_params: { profit_margin_percent: '0.1122323949234', interval_operating_cost: { - amount: '40', + amount: '80', denom: 'nym', }, }, @@ -130,11 +130,11 @@ export const items: DelegationWithEverything[] = [ { mix_id: 6, node_identity: '', - amount: { amount: '100', denom: 'nym' }, + amount: { amount: '202', denom: 'nym' }, delegated_on_iso_datetime: new Date(2021, 1, 2).toDateString(), unclaimed_rewards: { amount: '0.05', denom: 'nym' }, cost_params: { - profit_margin_percent: '0.1122323949234', + profit_margin_percent: '0.8', interval_operating_cost: { amount: '40', denom: 'nym', @@ -155,9 +155,9 @@ export const items: DelegationWithEverything[] = [ node_identity: 'FiojKW7oY9WQmLCiYAsCA21tpowZHS6zcUoyYm319p6Z', delegated_on_iso_datetime: new Date(2021, 1, 1).toDateString(), unclaimed_rewards: { amount: '0.05', denom: 'nym' }, - amount: { amount: '10', denom: 'nym' }, + amount: { amount: '202', denom: 'nym' }, cost_params: { - profit_margin_percent: '0.1122323949234', + profit_margin_percent: '0.59', interval_operating_cost: { amount: '40', denom: 'nym', @@ -190,7 +190,7 @@ export const items: DelegationWithEverything[] = [ accumulated_by_operator: { amount: '100', denom: 'nym' }, owner: '', block_height: BigInt(4000), - stake_saturation: '0.5', + stake_saturation: '0.9', avg_uptime_percent: 0.1, uses_vesting_contract_tokens: true, pending_events: [], @@ -199,11 +199,11 @@ export const items: DelegationWithEverything[] = [ { mix_id: 9, node_identity: '', - amount: { amount: '100', denom: 'nym' }, + amount: { amount: '1000', denom: 'nym' }, delegated_on_iso_datetime: new Date(2021, 1, 2).toDateString(), unclaimed_rewards: { amount: '0.05', denom: 'nym' }, cost_params: { - profit_margin_percent: '0.1122323949234', + profit_margin_percent: '0.4', interval_operating_cost: { amount: '40', denom: 'nym', @@ -213,7 +213,7 @@ export const items: DelegationWithEverything[] = [ accumulated_by_operator: { amount: '100', denom: 'nym' }, owner: '', block_height: BigInt(4000), - stake_saturation: '0.5', + stake_saturation: '0.9', avg_uptime_percent: 0.1, uses_vesting_contract_tokens: true, pending_events: [], @@ -259,8 +259,8 @@ export const items: DelegationWithEverything[] = [ accumulated_by_operator: { amount: '100', denom: 'nym' }, owner: '', block_height: BigInt(4000), - stake_saturation: '0.5', - avg_uptime_percent: 0.1, + stake_saturation: '0.56', + avg_uptime_percent: 0.9, uses_vesting_contract_tokens: true, pending_events: [], mixnode_is_unbonding: true, diff --git a/nym-wallet/src/components/Delegation/DelegationList.tsx b/nym-wallet/src/components/Delegation/DelegationList.tsx index c5e0a896dd..0396506a37 100644 --- a/nym-wallet/src/components/Delegation/DelegationList.tsx +++ b/nym-wallet/src/components/Delegation/DelegationList.tsx @@ -2,17 +2,17 @@ import React from 'react'; import { Box, Table, TableBody, TableCell, TableContainer, TableHead, TableRow, TableSortLabel } from '@mui/material'; import { visuallyHidden } from '@mui/utils'; import ArrowDropDownIcon from '@mui/icons-material/ArrowDropDown'; -import { orderBy as _orderBy } from 'lodash'; import { DelegationWithEverything } from '@nymproject/types'; +import { useSortDelegations } from 'src/hooks/useSortDelegations'; import { DelegationListItemActions } from './DelegationActions'; -import { isDelegation, isPendingDelegation, TDelegations } from '../../context/delegations'; import { DelegationItem } from './DelegationItem'; import { PendingDelegationItem } from './PendingDelegationItem'; import { LoadingModal } from '../Modals/LoadingModal'; +import { isDelegation, isPendingDelegation, TDelegations } from '../../context/delegations'; -type Order = 'asc' | 'desc'; +export type Order = 'asc' | 'desc'; type AdditionalTypes = { profit_margin_percent: number; operating_cost: number }; -type SortingKeys = keyof AdditionalTypes | keyof DelegationWithEverything; +export type SortingKeys = keyof AdditionalTypes | keyof DelegationWithEverything; interface EnhancedTableProps { onRequestSort: (event: React.MouseEvent, property: string) => void; @@ -83,10 +83,6 @@ const EnhancedTableHead: FCWithChildren = ({ order, orderBy, }; // Pin delegations on unbonded nodes to the top of the list -const sortByUnbondedMixnodeFirst = (a: any) => { - if (!a.node_identity) return -1; - return 1; -}; export const DelegationList: FCWithChildren<{ isLoading?: boolean; @@ -98,37 +94,13 @@ export const DelegationList: FCWithChildren<{ const [order, setOrder] = React.useState('asc'); const [orderBy, setOrderBy] = React.useState('delegated_on_iso_datetime'); - const handleRequestSort = (event: React.MouseEvent, property: any) => { + const handleRequestSort = (_: React.MouseEvent, property: any) => { const isAsc = orderBy === property && order === 'asc'; setOrder(isAsc ? 'desc' : 'asc'); setOrderBy(property); }; - // if sorting by either amount or unclaimed_rewards - // base sorting on their number counterparts - const mapOrderBy = (key: SortingKeys) => { - if (key === 'amount') return 'delegationValue'; - if (key === 'unclaimed_rewards') return 'operatorReward'; - if (key === 'profit_margin_percent') return 'profitMarginValue'; - if (key === 'operating_cost') return 'operatorCostValue'; - return key; - }; - - const mapAndSort = (_items: TDelegations) => { - const map = _items.map((item) => - isDelegation(item) - ? { - ...item, - delegationValue: Number(item.amount.amount), - operatorReward: Number(item.unclaimed_rewards?.amount), - profitMarginValue: Number(item.cost_params?.profit_margin_percent), - operatorCostValue: Number(item.cost_params?.interval_operating_cost), - } - : item, - ); - - return _orderBy(map, mapOrderBy(orderBy), order).sort(sortByUnbondedMixnodeFirst); - }; + const sorted = useSortDelegations(items, order, orderBy); return ( @@ -136,8 +108,8 @@ export const DelegationList: FCWithChildren<{ - {items?.length - ? mapAndSort(items).map((item: any) => { + {sorted?.length + ? sorted.map((item: any) => { if (isPendingDelegation(item)) return ; if (isDelegation(item)) return ( diff --git a/nym-wallet/src/context/mocks/delegations.tsx b/nym-wallet/src/context/mocks/delegations.tsx index 0c42a2b2e4..2a9609b022 100644 --- a/nym-wallet/src/context/mocks/delegations.tsx +++ b/nym-wallet/src/context/mocks/delegations.tsx @@ -26,11 +26,11 @@ let mockDelegations: DelegationWithEverything[] = [ cost_params: { profit_margin_percent: '0.04', interval_operating_cost: { - amount: '40', + amount: '20', denom: 'nym', }, }, - stake_saturation: '0.5', + stake_saturation: '0.2', avg_uptime_percent: 0.5, accumulated_by_delegates: { amount: '0', denom: 'nym' }, accumulated_by_operator: { amount: '0', denom: 'nym' }, @@ -51,7 +51,7 @@ let mockDelegations: DelegationWithEverything[] = [ cost_params: { profit_margin_percent: '0.04', interval_operating_cost: { - amount: '40', + amount: '60', denom: 'nym', }, }, diff --git a/nym-wallet/src/hooks/useSortDelegations.tsx b/nym-wallet/src/hooks/useSortDelegations.tsx new file mode 100644 index 0000000000..dfa7adbe2a --- /dev/null +++ b/nym-wallet/src/hooks/useSortDelegations.tsx @@ -0,0 +1,34 @@ +import { orderBy as _orderBy } from 'lodash'; +import { Order, SortingKeys } from 'src/components/Delegation/DelegationList'; +import { TDelegations, isDelegation } from 'src/context/delegations'; + +export const useSortDelegations = (delegationItems: TDelegations, order: Order, orderBy: SortingKeys) => { + const unbondedDelegations = delegationItems.filter((delegation) => !delegation.node_identity); + const delegations = delegationItems.filter((delegation) => delegation.node_identity); + + const mapOrderBy = (key: SortingKeys) => { + if (key === 'amount') return 'delegationValue'; + if (key === 'unclaimed_rewards') return 'operatorReward'; + if (key === 'profit_margin_percent') return 'profitMarginValue'; + if (key === 'operating_cost') return 'operatorCostValue'; + return key; + }; + + const mapAndSort = (_items: TDelegations) => { + const mapToNumberType = _items.map((item) => + isDelegation(item) + ? { + ...item, + delegationValue: Number(item.amount.amount), + operatorReward: Number(item.unclaimed_rewards?.amount), + profitMarginValue: Number(item.cost_params?.profit_margin_percent), + operatorCostValue: Number(item.cost_params?.interval_operating_cost.amount), + } + : item, + ); + const ordered = _orderBy(mapToNumberType, mapOrderBy(orderBy), order).sort(); + return ordered; + }; + + return [...unbondedDelegations, ...mapAndSort(delegations)]; +}; diff --git a/yarn.lock b/yarn.lock index 024fb6dd07..389fe27904 100644 --- a/yarn.lock +++ b/yarn.lock @@ -35,10 +35,10 @@ "@babel/highlight" "^7.22.13" chalk "^2.4.2" -"@babel/compat-data@^7.20.5", "@babel/compat-data@^7.22.6", "@babel/compat-data@^7.22.9": - version "7.22.9" - resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.22.9.tgz#71cdb00a1ce3a329ce4cbec3a44f9fef35669730" - integrity sha512-5UamI7xkUcJ3i9qVDS+KFDEK8/7oJ55/sJMB1Ge7IEapr7KfdfV/HErR+koZwOfd+SgtFKOKRhRakdg++DcJpQ== +"@babel/compat-data@^7.20.5", "@babel/compat-data@^7.22.20", "@babel/compat-data@^7.22.6", "@babel/compat-data@^7.22.9": + version "7.22.20" + resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.22.20.tgz#8df6e96661209623f1975d66c35ffca66f3306d0" + integrity sha512-BQYjKbpXjoXwFW5jGqiizJQQT/aC7pFm9Ok1OWssonuguICi264lbgMzRp2ZMmRSlfkX6DsWDDcsrctK8Rwfiw== "@babel/core@7.12.9": version "7.12.9" @@ -63,32 +63,32 @@ source-map "^0.5.0" "@babel/core@^7.1.0", "@babel/core@^7.11.6", "@babel/core@^7.12.10", "@babel/core@^7.12.3", "@babel/core@^7.15.0", "@babel/core@^7.17.5", "@babel/core@^7.19.6", "@babel/core@^7.22.10", "@babel/core@^7.7.2", "@babel/core@^7.7.5", "@babel/core@^7.8.0": - version "7.22.17" - resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.22.17.tgz#2f9b0b395985967203514b24ee50f9fd0639c866" - integrity sha512-2EENLmhpwplDux5PSsZnSbnSkB3tZ6QTksgO25xwEL7pIDcNOMhF5v/s6RzwjMZzZzw9Ofc30gHv5ChCC8pifQ== + version "7.23.0" + resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.23.0.tgz#f8259ae0e52a123eb40f552551e647b506a94d83" + integrity sha512-97z/ju/Jy1rZmDxybphrBuI+jtJjFVoz7Mr9yUQVVVi+DNZE333uFQeMOqcCIy1x3WYBIbWftUSLmbNXNT7qFQ== dependencies: "@ampproject/remapping" "^2.2.0" "@babel/code-frame" "^7.22.13" - "@babel/generator" "^7.22.15" + "@babel/generator" "^7.23.0" "@babel/helper-compilation-targets" "^7.22.15" - "@babel/helper-module-transforms" "^7.22.17" - "@babel/helpers" "^7.22.15" - "@babel/parser" "^7.22.16" + "@babel/helper-module-transforms" "^7.23.0" + "@babel/helpers" "^7.23.0" + "@babel/parser" "^7.23.0" "@babel/template" "^7.22.15" - "@babel/traverse" "^7.22.17" - "@babel/types" "^7.22.17" - convert-source-map "^1.7.0" + "@babel/traverse" "^7.23.0" + "@babel/types" "^7.23.0" + convert-source-map "^2.0.0" debug "^4.1.0" gensync "^1.0.0-beta.2" json5 "^2.2.3" semver "^6.3.1" -"@babel/generator@^7.12.11", "@babel/generator@^7.12.5", "@babel/generator@^7.22.15", "@babel/generator@^7.7.2": - version "7.22.15" - resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.22.15.tgz#1564189c7ec94cb8f77b5e8a90c4d200d21b2339" - integrity sha512-Zu9oWARBqeVOW0dZOjXc3JObrzuqothQ3y/n1kUtrjCoCPLkXUwMvOo/F/TCfoHMbWIFlWwpZtkZVb9ga4U2pA== +"@babel/generator@^7.12.11", "@babel/generator@^7.12.5", "@babel/generator@^7.23.0", "@babel/generator@^7.7.2": + version "7.23.0" + resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.23.0.tgz#df5c386e2218be505b34837acbcb874d7a983420" + integrity sha512-lN85QRR+5IbYrMWM6Y4pE/noaQtg4pNiqeNGX60eqOfo6gtEj6uw/JagelB8vVztSd7R6M5n1+PQkDbHbBRU4g== dependencies: - "@babel/types" "^7.22.15" + "@babel/types" "^7.23.0" "@jridgewell/gen-mapping" "^0.3.2" "@jridgewell/trace-mapping" "^0.3.17" jsesc "^2.5.1" @@ -167,18 +167,18 @@ lodash.debounce "^4.0.8" resolve "^1.14.2" -"@babel/helper-environment-visitor@^7.22.5": - version "7.22.5" - resolved "https://registry.yarnpkg.com/@babel/helper-environment-visitor/-/helper-environment-visitor-7.22.5.tgz#f06dd41b7c1f44e1f8da6c4055b41ab3a09a7e98" - integrity sha512-XGmhECfVA/5sAt+H+xpSg0mfrHq6FzNr9Oxh7PSEBBRUb/mL7Kz3NICXb194rCqAEdxkhPT1a88teizAFyvk8Q== +"@babel/helper-environment-visitor@^7.22.20", "@babel/helper-environment-visitor@^7.22.5": + version "7.22.20" + resolved "https://registry.yarnpkg.com/@babel/helper-environment-visitor/-/helper-environment-visitor-7.22.20.tgz#96159db61d34a29dba454c959f5ae4a649ba9167" + integrity sha512-zfedSIzFhat/gFhWfHtgWvlec0nqB9YEIVrpuwjruLlXfUSnA8cJB0miHKwqDnQ7d32aKo2xt88/xZptwxbfhA== -"@babel/helper-function-name@^7.22.5": - version "7.22.5" - resolved "https://registry.yarnpkg.com/@babel/helper-function-name/-/helper-function-name-7.22.5.tgz#ede300828905bb15e582c037162f99d5183af1be" - integrity sha512-wtHSq6jMRE3uF2otvfuD3DIvVhOsSNshQl0Qrd7qC9oQJzHvOL4qQXlQn2916+CXGywIjpGuIkoyZRRxHPiNQQ== +"@babel/helper-function-name@^7.22.5", "@babel/helper-function-name@^7.23.0": + version "7.23.0" + resolved "https://registry.yarnpkg.com/@babel/helper-function-name/-/helper-function-name-7.23.0.tgz#1f9a3cdbd5b2698a670c30d2735f9af95ed52759" + integrity sha512-OErEqsrxjZTJciZ4Oo+eoZqeW9UIiOcuYKRJA4ZAgV9myA+pOXhhmpfNCKjEH/auVfEYVFJ6y1Tc4r0eIApqiw== dependencies: - "@babel/template" "^7.22.5" - "@babel/types" "^7.22.5" + "@babel/template" "^7.22.15" + "@babel/types" "^7.23.0" "@babel/helper-hoist-variables@^7.22.5": version "7.22.5" @@ -187,12 +187,12 @@ dependencies: "@babel/types" "^7.22.5" -"@babel/helper-member-expression-to-functions@^7.22.15", "@babel/helper-member-expression-to-functions@^7.22.5": - version "7.22.15" - resolved "https://registry.yarnpkg.com/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.22.15.tgz#b95a144896f6d491ca7863576f820f3628818621" - integrity sha512-qLNsZbgrNh0fDQBCPocSL8guki1hcPvltGDv/NxvUoABwFq7GkKSu1nRXeJkVZc+wJvne2E0RKQz+2SQrz6eAA== +"@babel/helper-member-expression-to-functions@^7.22.15": + version "7.23.0" + resolved "https://registry.yarnpkg.com/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.23.0.tgz#9263e88cc5e41d39ec18c9a3e0eced59a3e7d366" + integrity sha512-6gfrPwh7OuT6gZyJZvd6WbTfrqAo7vm4xCzAXOusKqq/vWdKXphTpj5klHKNmRUU6/QRGlBsyU9mAIPaWHlqJA== dependencies: - "@babel/types" "^7.22.15" + "@babel/types" "^7.23.0" "@babel/helper-module-imports@^7.12.13", "@babel/helper-module-imports@^7.16.7", "@babel/helper-module-imports@^7.22.15", "@babel/helper-module-imports@^7.22.5": version "7.22.15" @@ -201,16 +201,16 @@ dependencies: "@babel/types" "^7.22.15" -"@babel/helper-module-transforms@^7.12.1", "@babel/helper-module-transforms@^7.22.15", "@babel/helper-module-transforms@^7.22.17", "@babel/helper-module-transforms@^7.22.5", "@babel/helper-module-transforms@^7.22.9": - version "7.22.17" - resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.22.17.tgz#7edf129097a51ccc12443adbc6320e90eab76693" - integrity sha512-XouDDhQESrLHTpnBtCKExJdyY4gJCdrvH2Pyv8r8kovX2U8G0dRUOT45T9XlbLtuu9CLXP15eusnkprhoPV5iQ== +"@babel/helper-module-transforms@^7.12.1", "@babel/helper-module-transforms@^7.22.5", "@babel/helper-module-transforms@^7.23.0": + version "7.23.0" + resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.23.0.tgz#3ec246457f6c842c0aee62a01f60739906f7047e" + integrity sha512-WhDWw1tdrlT0gMgUJSlX0IQvoO1eN279zrAUbVB+KpV2c3Tylz8+GnKOLllCS6Z/iZQEyVYxhZVUdPTqs2YYPw== dependencies: - "@babel/helper-environment-visitor" "^7.22.5" + "@babel/helper-environment-visitor" "^7.22.20" "@babel/helper-module-imports" "^7.22.15" "@babel/helper-simple-access" "^7.22.5" "@babel/helper-split-export-declaration" "^7.22.6" - "@babel/helper-validator-identifier" "^7.22.15" + "@babel/helper-validator-identifier" "^7.22.20" "@babel/helper-optimise-call-expression@^7.22.5": version "7.22.5" @@ -230,21 +230,21 @@ integrity sha512-uLls06UVKgFG9QD4OeFYLEGteMIAa5kpTPcFL28yuCIIzsf6ZyKZMllKVOCZFhiZ5ptnwX4mtKdWCBE/uT4amg== "@babel/helper-remap-async-to-generator@^7.22.5", "@babel/helper-remap-async-to-generator@^7.22.9": - version "7.22.17" - resolved "https://registry.yarnpkg.com/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.22.17.tgz#dabaa50622b3b4670bd6546fc8db23eb12d89da0" - integrity sha512-bxH77R5gjH3Nkde6/LuncQoLaP16THYPscurp1S8z7S9ZgezCyV3G8Hc+TZiCmY8pz4fp8CvKSgtJMW0FkLAxA== + version "7.22.20" + resolved "https://registry.yarnpkg.com/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.22.20.tgz#7b68e1cb4fa964d2996fd063723fb48eca8498e0" + integrity sha512-pBGyV4uBqOns+0UvhsTO8qgl8hO89PmiDYv+/COyp1aeMcmfrfruz+/nCMFiYyFF/Knn0yfrC85ZzNFjembFTw== dependencies: "@babel/helper-annotate-as-pure" "^7.22.5" - "@babel/helper-environment-visitor" "^7.22.5" - "@babel/helper-wrap-function" "^7.22.17" + "@babel/helper-environment-visitor" "^7.22.20" + "@babel/helper-wrap-function" "^7.22.20" -"@babel/helper-replace-supers@^7.22.5", "@babel/helper-replace-supers@^7.22.9": - version "7.22.9" - resolved "https://registry.yarnpkg.com/@babel/helper-replace-supers/-/helper-replace-supers-7.22.9.tgz#cbdc27d6d8d18cd22c81ae4293765a5d9afd0779" - integrity sha512-LJIKvvpgPOPUThdYqcX6IXRuIcTkcAub0IaDRGCZH0p5GPUp7PhRU9QVgFcDDd51BaPkk77ZjqFwh6DZTAEmGg== +"@babel/helper-replace-supers@^7.22.20", "@babel/helper-replace-supers@^7.22.5", "@babel/helper-replace-supers@^7.22.9": + version "7.22.20" + resolved "https://registry.yarnpkg.com/@babel/helper-replace-supers/-/helper-replace-supers-7.22.20.tgz#e37d367123ca98fe455a9887734ed2e16eb7a793" + integrity sha512-qsW0In3dbwQUbK8kejJ4R7IHVGwHJlV6lpG6UA7a9hSa2YEiAib+N1T2kr6PEeUT+Fl7najmSOS6SmAwCHK6Tw== dependencies: - "@babel/helper-environment-visitor" "^7.22.5" - "@babel/helper-member-expression-to-functions" "^7.22.5" + "@babel/helper-environment-visitor" "^7.22.20" + "@babel/helper-member-expression-to-functions" "^7.22.15" "@babel/helper-optimise-call-expression" "^7.22.5" "@babel/helper-simple-access@^7.22.5": @@ -273,47 +273,47 @@ resolved "https://registry.yarnpkg.com/@babel/helper-string-parser/-/helper-string-parser-7.22.5.tgz#533f36457a25814cf1df6488523ad547d784a99f" integrity sha512-mM4COjgZox8U+JcXQwPijIZLElkgEpO5rsERVDJTc2qfCDfERyob6k5WegS14SX18IIjv+XD+GrqNumY5JRCDw== -"@babel/helper-validator-identifier@^7.22.15", "@babel/helper-validator-identifier@^7.22.5": - version "7.22.15" - resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.22.15.tgz#601fa28e4cc06786c18912dca138cec73b882044" - integrity sha512-4E/F9IIEi8WR94324mbDUMo074YTheJmd7eZF5vITTeYchqAi6sYXRLHUVsmkdmY4QjfKTcB2jB7dVP3NaBElQ== +"@babel/helper-validator-identifier@^7.22.20": + version "7.22.20" + resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.22.20.tgz#c4ae002c61d2879e724581d96665583dbc1dc0e0" + integrity sha512-Y4OZ+ytlatR8AI+8KZfKuL5urKp7qey08ha31L8b3BwewJAoJamTzyvxPR/5D+KkdJCGPq/+8TukHBlY10FX9A== "@babel/helper-validator-option@^7.22.15": version "7.22.15" resolved "https://registry.yarnpkg.com/@babel/helper-validator-option/-/helper-validator-option-7.22.15.tgz#694c30dfa1d09a6534cdfcafbe56789d36aba040" integrity sha512-bMn7RmyFjY/mdECUbgn9eoSY4vqvacUnS9i9vGAGttgFWesO6B4CYWA7XlpbWgBt71iv/hfbPlynohStqnu5hA== -"@babel/helper-wrap-function@^7.22.17": - version "7.22.17" - resolved "https://registry.yarnpkg.com/@babel/helper-wrap-function/-/helper-wrap-function-7.22.17.tgz#222ac3ff9cc8f9b617cc1e5db75c0b538e722801" - integrity sha512-nAhoheCMlrqU41tAojw9GpVEKDlTS8r3lzFmF0lP52LwblCPbuFSO7nGIZoIcoU5NIm1ABrna0cJExE4Ay6l2Q== +"@babel/helper-wrap-function@^7.22.20": + version "7.22.20" + resolved "https://registry.yarnpkg.com/@babel/helper-wrap-function/-/helper-wrap-function-7.22.20.tgz#15352b0b9bfb10fc9c76f79f6342c00e3411a569" + integrity sha512-pms/UwkOpnQe/PDAEdV/d7dVCoBbB+R4FvYoHGZz+4VPcg7RtYy2KP7S2lbuWM6FCSgob5wshfGESbC/hzNXZw== dependencies: "@babel/helper-function-name" "^7.22.5" "@babel/template" "^7.22.15" - "@babel/types" "^7.22.17" + "@babel/types" "^7.22.19" -"@babel/helpers@^7.12.5", "@babel/helpers@^7.22.15": - version "7.22.15" - resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.22.15.tgz#f09c3df31e86e3ea0b7ff7556d85cdebd47ea6f1" - integrity sha512-7pAjK0aSdxOwR+CcYAqgWOGy5dcfvzsTIfFTb2odQqW47MDfv14UaJDY6eng8ylM2EaeKXdxaSWESbkmaQHTmw== +"@babel/helpers@^7.12.5", "@babel/helpers@^7.23.0": + version "7.23.1" + resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.23.1.tgz#44e981e8ce2b9e99f8f0b703f3326a4636c16d15" + integrity sha512-chNpneuK18yW5Oxsr+t553UZzzAs3aZnFm4bxhebsNTeshrC95yA7l5yl7GBAG+JG1rF0F7zzD2EixK9mWSDoA== dependencies: "@babel/template" "^7.22.15" - "@babel/traverse" "^7.22.15" - "@babel/types" "^7.22.15" + "@babel/traverse" "^7.23.0" + "@babel/types" "^7.23.0" "@babel/highlight@^7.10.4", "@babel/highlight@^7.22.13": - version "7.22.13" - resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.22.13.tgz#9cda839e5d3be9ca9e8c26b6dd69e7548f0cbf16" - integrity sha512-C/BaXcnnvBCmHTpz/VGZ8jgtE2aYlW4hxDhseJAWZb7gqGM/qtCK6iZUb0TyKFf7BOUsBH7Q7fkRsDRhg1XklQ== + version "7.22.20" + resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.22.20.tgz#4ca92b71d80554b01427815e06f2df965b9c1f54" + integrity sha512-dkdMCN3py0+ksCgYmGG8jKeGA/8Tk+gJwSYYlFGxG5lmhfKNoAy004YpLxpS1W2J8m/EK2Ew+yOs9pVRwO89mg== dependencies: - "@babel/helper-validator-identifier" "^7.22.5" + "@babel/helper-validator-identifier" "^7.22.20" chalk "^2.4.2" js-tokens "^4.0.0" -"@babel/parser@^7.1.0", "@babel/parser@^7.12.11", "@babel/parser@^7.12.7", "@babel/parser@^7.14.7", "@babel/parser@^7.20.7", "@babel/parser@^7.22.15", "@babel/parser@^7.22.16": - version "7.22.16" - resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.22.16.tgz#180aead7f247305cce6551bea2720934e2fa2c95" - integrity sha512-+gPfKv8UWeKKeJTUxe59+OobVcrYHETCsORl61EmSkmgymguYk/X5bp7GuUIXaFsc6y++v8ZxPsLSSuujqDphA== +"@babel/parser@^7.1.0", "@babel/parser@^7.12.11", "@babel/parser@^7.12.7", "@babel/parser@^7.14.7", "@babel/parser@^7.20.7", "@babel/parser@^7.22.15", "@babel/parser@^7.23.0": + version "7.23.0" + resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.23.0.tgz#da950e622420bf96ca0d0f2909cdddac3acd8719" + integrity sha512-vvPKKdMemU85V9WE/l5wZEmImpCtLqbnTvqDS2U1fJ96KrxoW7KrXhNsNCblQlg8Ck4b85yxdTyelsMUgFUXiw== "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@^7.22.15": version "7.22.15" @@ -340,13 +340,13 @@ "@babel/helper-plugin-utils" "^7.18.6" "@babel/plugin-proposal-decorators@^7.12.12": - version "7.22.15" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-decorators/-/plugin-proposal-decorators-7.22.15.tgz#dc774eae73ab8c28a644d490b45aa47a85bb0bf5" - integrity sha512-kc0VvbbUyKelvzcKOSyQUSVVXS5pT3UhRB0e3c9An86MvLqs+gx0dN4asllrDluqSa3m9YyooXKGOFVomnyFkg== + version "7.23.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-decorators/-/plugin-proposal-decorators-7.23.0.tgz#66d9014173b3267a9ced3e69935138bc64ffb5c8" + integrity sha512-kYsT+f5ARWF6AdFmqoEEp+hpqxEB8vGmRWfw2aj78M2vTwS2uHW91EF58iFm1Z9U8Y/RrLu2XKJn46P9ca1b0w== dependencies: "@babel/helper-create-class-features-plugin" "^7.22.15" "@babel/helper-plugin-utils" "^7.22.5" - "@babel/helper-replace-supers" "^7.22.9" + "@babel/helper-replace-supers" "^7.22.20" "@babel/helper-split-export-declaration" "^7.22.6" "@babel/plugin-syntax-decorators" "^7.22.10" @@ -628,9 +628,9 @@ "@babel/helper-plugin-utils" "^7.22.5" "@babel/plugin-transform-block-scoping@^7.12.12", "@babel/plugin-transform-block-scoping@^7.22.15": - version "7.22.15" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.22.15.tgz#494eb82b87b5f8b1d8f6f28ea74078ec0a10a841" - integrity sha512-G1czpdJBZCtngoK1sJgloLiOHUnkb/bLZwqVZD8kXmq0ZnVfTTWUcs9OWtp0mBtYJ+4LQY1fllqBkOIPhXmFmw== + version "7.23.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.23.0.tgz#8744d02c6c264d82e1a4bc5d2d501fd8aff6f022" + integrity sha512-cOsrbmIOXmf+5YbL99/S49Y3j46k/T16b9ml8bm9lP6N9US5iQ2yBK7gpui1pg0V/WMcXdkfKbTb7HXq9u+v4g== dependencies: "@babel/helper-plugin-utils" "^7.22.5" @@ -675,9 +675,9 @@ "@babel/template" "^7.22.5" "@babel/plugin-transform-destructuring@^7.12.1", "@babel/plugin-transform-destructuring@^7.22.15": - version "7.22.15" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.22.15.tgz#e7404ea5bb3387073b9754be654eecb578324694" - integrity sha512-HzG8sFl1ZVGTme74Nw+X01XsUTqERVQ6/RLHo3XjGRzm7XD6QTtfS3NJotVgCGy8BzkDqRjRBD8dAyJn5TuvSQ== + version "7.23.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.23.0.tgz#6447aa686be48b32eaf65a73e0e2c0bd010a266c" + integrity sha512-vaMdgNXFkYrB+8lbgniSYWHsgqK5gjaMNcc84bMIOMRLH0L9AqYq3hwMdvnyqj1OPqea8UtjPEuS/DCenah1wg== dependencies: "@babel/helper-plugin-utils" "^7.22.5" @@ -775,31 +775,31 @@ "@babel/helper-plugin-utils" "^7.22.5" "@babel/plugin-transform-modules-amd@^7.22.5": - version "7.22.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.22.5.tgz#4e045f55dcf98afd00f85691a68fc0780704f526" - integrity sha512-R+PTfLTcYEmb1+kK7FNkhQ1gP4KgjpSO6HfH9+f8/yfp2Nt3ggBjiVpRwmwTlfqZLafYKJACy36yDXlEmI9HjQ== + version "7.23.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.23.0.tgz#05b2bc43373faa6d30ca89214731f76f966f3b88" + integrity sha512-xWT5gefv2HGSm4QHtgc1sYPbseOyf+FFDo2JbpE25GWl5BqTGO9IMwTYJRoIdjsF85GE+VegHxSCUt5EvoYTAw== dependencies: - "@babel/helper-module-transforms" "^7.22.5" + "@babel/helper-module-transforms" "^7.23.0" "@babel/helper-plugin-utils" "^7.22.5" -"@babel/plugin-transform-modules-commonjs@^7.22.15": - version "7.22.15" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.22.15.tgz#b11810117ed4ee7691b29bd29fd9f3f98276034f" - integrity sha512-jWL4eh90w0HQOTKP2MoXXUpVxilxsB2Vl4ji69rSjS3EcZ/v4sBmn+A3NpepuJzBhOaEBbR7udonlHHn5DWidg== +"@babel/plugin-transform-modules-commonjs@^7.22.15", "@babel/plugin-transform-modules-commonjs@^7.23.0": + version "7.23.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.23.0.tgz#b3dba4757133b2762c00f4f94590cf6d52602481" + integrity sha512-32Xzss14/UVc7k9g775yMIvkVK8xwKE0DPdP5JTapr3+Z9w4tzeOuLNY6BXDQR6BdnzIlXnCGAzsk/ICHBLVWQ== dependencies: - "@babel/helper-module-transforms" "^7.22.15" + "@babel/helper-module-transforms" "^7.23.0" "@babel/helper-plugin-utils" "^7.22.5" "@babel/helper-simple-access" "^7.22.5" "@babel/plugin-transform-modules-systemjs@^7.22.11": - version "7.22.11" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.22.11.tgz#3386be5875d316493b517207e8f1931d93154bb1" - integrity sha512-rIqHmHoMEOhI3VkVf5jQ15l539KrwhzqcBO6wdCNWPWc/JWt9ILNYNUssbRpeq0qWns8svuw8LnMNCvWBIJ8wA== + version "7.23.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.23.0.tgz#77591e126f3ff4132a40595a6cccd00a6b60d160" + integrity sha512-qBej6ctXZD2f+DhlOC9yO47yEYgUh5CZNz/aBoH4j/3NOlRfJXJbY7xDQCqQVf9KbrqGzIWER1f23doHGrIHFg== dependencies: "@babel/helper-hoist-variables" "^7.22.5" - "@babel/helper-module-transforms" "^7.22.9" + "@babel/helper-module-transforms" "^7.23.0" "@babel/helper-plugin-utils" "^7.22.5" - "@babel/helper-validator-identifier" "^7.22.5" + "@babel/helper-validator-identifier" "^7.22.20" "@babel/plugin-transform-modules-umd@^7.22.5": version "7.22.5" @@ -868,9 +868,9 @@ "@babel/plugin-syntax-optional-catch-binding" "^7.8.3" "@babel/plugin-transform-optional-chaining@^7.22.15": - version "7.22.15" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-optional-chaining/-/plugin-transform-optional-chaining-7.22.15.tgz#d7a5996c2f7ca4ad2ad16dbb74444e5c4385b1ba" - integrity sha512-ngQ2tBhq5vvSJw2Q2Z9i7ealNkpDMU0rGWnHPKqRZO0tzZ5tlaoz4hDvhXioOoaE0X2vfNss1djwg0DXlfu30A== + version "7.23.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-optional-chaining/-/plugin-transform-optional-chaining-7.23.0.tgz#73ff5fc1cf98f542f09f29c0631647d8ad0be158" + integrity sha512-sBBGXbLJjxTzLBF5rFWaikMnOGOk/BmK6vVByIdEggZ7Vn6CvWXZyRkkLFK6WE0IF8jSliyOkUN6SScFgzCM0g== dependencies: "@babel/helper-plugin-utils" "^7.22.5" "@babel/helper-skip-transparent-expression-wrappers" "^7.22.5" @@ -1041,11 +1041,11 @@ "@babel/helper-plugin-utils" "^7.22.5" "@babel/preset-env@^7.12.11", "@babel/preset-env@^7.15.0", "@babel/preset-env@^7.19.4", "@babel/preset-env@^7.22.10": - version "7.22.15" - resolved "https://registry.yarnpkg.com/@babel/preset-env/-/preset-env-7.22.15.tgz#142716f8e00bc030dae5b2ac6a46fbd8b3e18ff8" - integrity sha512-tZFHr54GBkHk6hQuVA8w4Fmq+MSPsfvMG0vPnOYyTnJpyfMqybL8/MbNCPRT9zc2KBO2pe4tq15g6Uno4Jpoag== + version "7.22.20" + resolved "https://registry.yarnpkg.com/@babel/preset-env/-/preset-env-7.22.20.tgz#de9e9b57e1127ce0a2f580831717f7fb677ceedb" + integrity sha512-11MY04gGC4kSzlPHRfvVkNAZhUxOvm7DCJ37hPDnUENwe06npjIRAfInEMTGSb4LZK5ZgDFkv5hw0lGebHeTyg== dependencies: - "@babel/compat-data" "^7.22.9" + "@babel/compat-data" "^7.22.20" "@babel/helper-compilation-targets" "^7.22.15" "@babel/helper-plugin-utils" "^7.22.5" "@babel/helper-validator-option" "^7.22.15" @@ -1119,7 +1119,7 @@ "@babel/plugin-transform-unicode-regex" "^7.22.5" "@babel/plugin-transform-unicode-sets-regex" "^7.22.5" "@babel/preset-modules" "0.1.6-no-external-plugins" - "@babel/types" "^7.22.15" + "@babel/types" "^7.22.19" babel-plugin-polyfill-corejs2 "^0.4.5" babel-plugin-polyfill-corejs3 "^0.8.3" babel-plugin-polyfill-regenerator "^0.5.2" @@ -1157,14 +1157,14 @@ "@babel/plugin-transform-react-pure-annotations" "^7.22.5" "@babel/preset-typescript@^7.12.7", "@babel/preset-typescript@^7.15.0", "@babel/preset-typescript@^7.18.6", "@babel/preset-typescript@^7.22.5": - version "7.22.15" - resolved "https://registry.yarnpkg.com/@babel/preset-typescript/-/preset-typescript-7.22.15.tgz#43db30516fae1d417d748105a0bc95f637239d48" - integrity sha512-HblhNmh6yM+cU4VwbBRpxFhxsTdfS1zsvH9W+gEjD0ARV9+8B4sNfpI6GuhePti84nuvhiwKS539jKPFHskA9A== + version "7.23.0" + resolved "https://registry.yarnpkg.com/@babel/preset-typescript/-/preset-typescript-7.23.0.tgz#cc6602d13e7e5b2087c811912b87cf937a9129d9" + integrity sha512-6P6VVa/NM/VlAYj5s2Aq/gdVg8FSENCg3wlZ6Qau9AcPaoF5LbN1nyGlR9DTRIw9PpxI94e+ReydsJHcjwAweg== dependencies: "@babel/helper-plugin-utils" "^7.22.5" "@babel/helper-validator-option" "^7.22.15" "@babel/plugin-syntax-jsx" "^7.22.5" - "@babel/plugin-transform-modules-commonjs" "^7.22.15" + "@babel/plugin-transform-modules-commonjs" "^7.23.0" "@babel/plugin-transform-typescript" "^7.22.15" "@babel/register@^7.12.1": @@ -1190,10 +1190,10 @@ dependencies: regenerator-runtime "^0.13.2" -"@babel/runtime@^7.0.0", "@babel/runtime@^7.1.2", "@babel/runtime@^7.11.2", "@babel/runtime@^7.12.5", "@babel/runtime@^7.15.4", "@babel/runtime@^7.17.8", "@babel/runtime@^7.18.3", "@babel/runtime@^7.18.9", "@babel/runtime@^7.20.7", "@babel/runtime@^7.21.0", "@babel/runtime@^7.22.10", "@babel/runtime@^7.22.6", "@babel/runtime@^7.3.1", "@babel/runtime@^7.5.0", "@babel/runtime@^7.5.5", "@babel/runtime@^7.7.6", "@babel/runtime@^7.8.3", "@babel/runtime@^7.8.4", "@babel/runtime@^7.8.7", "@babel/runtime@^7.9.2": - version "7.22.15" - resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.22.15.tgz#38f46494ccf6cf020bd4eed7124b425e83e523b8" - integrity sha512-T0O+aa+4w0u06iNmapipJXMV4HoUir03hpx3/YqXXhu9xim3w+dVphjFWl1OH8NbZHw5Lbm9k45drDkgq2VNNA== +"@babel/runtime@^7.0.0", "@babel/runtime@^7.1.2", "@babel/runtime@^7.11.2", "@babel/runtime@^7.12.5", "@babel/runtime@^7.15.4", "@babel/runtime@^7.17.8", "@babel/runtime@^7.18.3", "@babel/runtime@^7.18.9", "@babel/runtime@^7.20.7", "@babel/runtime@^7.21.0", "@babel/runtime@^7.22.6", "@babel/runtime@^7.23.1", "@babel/runtime@^7.3.1", "@babel/runtime@^7.5.0", "@babel/runtime@^7.5.5", "@babel/runtime@^7.7.6", "@babel/runtime@^7.8.3", "@babel/runtime@^7.8.4", "@babel/runtime@^7.8.7", "@babel/runtime@^7.9.2": + version "7.23.1" + resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.23.1.tgz#72741dc4d413338a91dcb044a86f3c0bc402646d" + integrity sha512-hC2v6p8ZSI/W0HUzh3V8C5g+NwSKzKPtJwSpTjwl0o297GP9+ZLQSkdvHz46CM3LqyoXxq+5G9komY+eSqSO0g== dependencies: regenerator-runtime "^0.14.0" @@ -1213,29 +1213,29 @@ "@babel/parser" "^7.22.15" "@babel/types" "^7.22.15" -"@babel/traverse@^7.1.6", "@babel/traverse@^7.12.11", "@babel/traverse@^7.12.9", "@babel/traverse@^7.13.0", "@babel/traverse@^7.22.15", "@babel/traverse@^7.22.17", "@babel/traverse@^7.7.2": - version "7.22.17" - resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.22.17.tgz#b23c203ab3707e3be816043081b4a994fcacec44" - integrity sha512-xK4Uwm0JnAMvxYZxOVecss85WxTEIbTa7bnGyf/+EgCL5Zt3U7htUpEOWv9detPlamGKuRzCqw74xVglDWpPdg== +"@babel/traverse@^7.1.6", "@babel/traverse@^7.12.11", "@babel/traverse@^7.12.9", "@babel/traverse@^7.13.0", "@babel/traverse@^7.23.0", "@babel/traverse@^7.7.2": + version "7.23.0" + resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.23.0.tgz#18196ddfbcf4ccea324b7f6d3ada00d8c5a99c53" + integrity sha512-t/QaEvyIoIkwzpiZ7aoSKK8kObQYeF7T2v+dazAYCb8SXtp58zEVkWW7zAnju8FNKNdr4ScAOEDmMItbyOmEYw== dependencies: "@babel/code-frame" "^7.22.13" - "@babel/generator" "^7.22.15" - "@babel/helper-environment-visitor" "^7.22.5" - "@babel/helper-function-name" "^7.22.5" + "@babel/generator" "^7.23.0" + "@babel/helper-environment-visitor" "^7.22.20" + "@babel/helper-function-name" "^7.23.0" "@babel/helper-hoist-variables" "^7.22.5" "@babel/helper-split-export-declaration" "^7.22.6" - "@babel/parser" "^7.22.16" - "@babel/types" "^7.22.17" + "@babel/parser" "^7.23.0" + "@babel/types" "^7.23.0" debug "^4.1.0" globals "^11.1.0" -"@babel/types@^7.0.0", "@babel/types@^7.12.11", "@babel/types@^7.12.7", "@babel/types@^7.2.0", "@babel/types@^7.20.0", "@babel/types@^7.20.7", "@babel/types@^7.22.15", "@babel/types@^7.22.17", "@babel/types@^7.22.5", "@babel/types@^7.3.3", "@babel/types@^7.4.4": - version "7.22.17" - resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.22.17.tgz#f753352c4610ffddf9c8bc6823f9ff03e2303eee" - integrity sha512-YSQPHLFtQNE5xN9tHuZnzu8vPr61wVTBZdfv1meex1NBosa4iT05k/Jw06ddJugi4bk7The/oSwQGFcksmEJQg== +"@babel/types@^7.0.0", "@babel/types@^7.12.11", "@babel/types@^7.12.7", "@babel/types@^7.2.0", "@babel/types@^7.20.0", "@babel/types@^7.20.7", "@babel/types@^7.22.15", "@babel/types@^7.22.19", "@babel/types@^7.22.5", "@babel/types@^7.23.0", "@babel/types@^7.3.3", "@babel/types@^7.4.4": + version "7.23.0" + resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.23.0.tgz#8c1f020c9df0e737e4e247c0619f58c68458aaeb" + integrity sha512-0oIyUfKoI3mSqMvsxBdclDwxXKXAUA8v/apZbc+iSyARYou1o8ZGDxbUYyLFoW2arqS2jDGqJuZvv1d/io1axg== dependencies: "@babel/helper-string-parser" "^7.22.5" - "@babel/helper-validator-identifier" "^7.22.15" + "@babel/helper-validator-identifier" "^7.22.20" to-fast-properties "^2.0.0" "@base2/pretty-print-object@1.0.1": @@ -1737,9 +1737,9 @@ eslint-visitor-keys "^3.3.0" "@eslint-community/regexpp@^4.4.0", "@eslint-community/regexpp@^4.6.1": - version "4.8.1" - resolved "https://registry.yarnpkg.com/@eslint-community/regexpp/-/regexpp-4.8.1.tgz#8c4bb756cc2aa7eaf13cfa5e69c83afb3260c20c" - integrity sha512-PWiOzLIUAjN/w5K17PoF4n6sKBw0gqLHPhywmYHP4t1VFQQVYeb1yWsJwnMVEMl3tUHME7X/SJPZLmtG7XBDxQ== + version "4.9.1" + resolved "https://registry.yarnpkg.com/@eslint-community/regexpp/-/regexpp-4.9.1.tgz#449dfa81a57a1d755b09aa58d826c1262e4283b4" + integrity sha512-Y27x+MBLjXa+0JWDhykM3+JE+il3kHKAEqabfEWq3SDhZjLYb6/BHL/JKFnH3fe207JaXkyDo685Oc2Glt6ifA== "@eslint/eslintrc@^0.4.3": version "0.4.3" @@ -1771,10 +1771,10 @@ minimatch "^3.1.2" strip-json-comments "^3.1.1" -"@eslint/js@8.49.0": - version "8.49.0" - resolved "https://registry.yarnpkg.com/@eslint/js/-/js-8.49.0.tgz#86f79756004a97fa4df866835093f1df3d03c333" - integrity sha512-1S8uAY/MTJqVx0SC4epBq+N2yhuwtNwLbJYNZyhL2pO1ZVKn5HFXav5T41Ryzy9K9V7ZId2JB2oy/W4aCd9/2w== +"@eslint/js@8.51.0": + version "8.51.0" + resolved "https://registry.yarnpkg.com/@eslint/js/-/js-8.51.0.tgz#6d419c240cfb2b66da37df230f7e7eef801c32fa" + integrity sha512-HxjQ8Qn+4SI3/AFv6sOrDB+g6PpUTDwSJiQqOrnneEk8L71161srI9gjzzZvYVbzHiVg/BvcH95+cK/zfIt4pg== "@favware/rollup-type-bundler@^2.0.0": version "2.0.0" @@ -1789,32 +1789,32 @@ rollup-plugin-dts "^5.0.0" typescript "^4.8.4" -"@floating-ui/core@^1.4.1": - version "1.4.1" - resolved "https://registry.yarnpkg.com/@floating-ui/core/-/core-1.4.1.tgz#0d633f4b76052668afb932492ac452f7ebe97f17" - integrity sha512-jk3WqquEJRlcyu7997NtR5PibI+y5bi+LS3hPmguVClypenMsCY3CBa3LAQnozRCtCrYWSEtAdiskpamuJRFOQ== +"@floating-ui/core@^1.4.2": + version "1.5.0" + resolved "https://registry.yarnpkg.com/@floating-ui/core/-/core-1.5.0.tgz#5c05c60d5ae2d05101c3021c1a2a350ddc027f8c" + integrity sha512-kK1h4m36DQ0UHGj5Ah4db7R0rHemTqqO0QLvUqi1/mUUp3LuAWbWxdxSIf/XsnH9VS6rRVPLJCncjRzUvyCLXg== dependencies: - "@floating-ui/utils" "^0.1.1" + "@floating-ui/utils" "^0.1.3" "@floating-ui/dom@^1.0.0", "@floating-ui/dom@^1.5.1": - version "1.5.2" - resolved "https://registry.yarnpkg.com/@floating-ui/dom/-/dom-1.5.2.tgz#6812e89d1d4d4ea32f10d15c3b81feb7f9836d89" - integrity sha512-6ArmenS6qJEWmwzczWyhvrXRdI/rI78poBcW0h/456+onlabit+2G+QxHx5xTOX60NBJQXjsCLFbW2CmsXpUog== + version "1.5.3" + resolved "https://registry.yarnpkg.com/@floating-ui/dom/-/dom-1.5.3.tgz#54e50efcb432c06c23cd33de2b575102005436fa" + integrity sha512-ClAbQnEqJAKCJOEbbLo5IUlZHkNszqhuxS4fHAVxRPXPya6Ysf2G8KypnYcOTpx6I8xcgF9bbHb6g/2KpbV8qA== dependencies: - "@floating-ui/core" "^1.4.1" - "@floating-ui/utils" "^0.1.1" + "@floating-ui/core" "^1.4.2" + "@floating-ui/utils" "^0.1.3" -"@floating-ui/react-dom@^2.0.1": +"@floating-ui/react-dom@^2.0.2": version "2.0.2" resolved "https://registry.yarnpkg.com/@floating-ui/react-dom/-/react-dom-2.0.2.tgz#fab244d64db08e6bed7be4b5fcce65315ef44d20" integrity sha512-5qhlDvjaLmAst/rKb3VdlCinwTF4EYMiVxuuc/HVUjs46W0zgtbMmAZ1UTsDrRTxRmUEzl92mOtWbeeXL26lSQ== dependencies: "@floating-ui/dom" "^1.5.1" -"@floating-ui/utils@^0.1.1": - version "0.1.2" - resolved "https://registry.yarnpkg.com/@floating-ui/utils/-/utils-0.1.2.tgz#b7e9309ccce5a0a40ac482cb894f120dba2b357f" - integrity sha512-ou3elfqG/hZsbmF4bxeJhPHIf3G2pm0ujc39hYEZrfVqt7Vk/Zji6CXc3W0pmYM8BW1g40U+akTl9DKZhFhInQ== +"@floating-ui/utils@^0.1.3": + version "0.1.6" + resolved "https://registry.yarnpkg.com/@floating-ui/utils/-/utils-0.1.6.tgz#22958c042e10b67463997bd6ea7115fe28cbcaf9" + integrity sha512-OfX7E2oUDYxtBvsuS4e/jSn4Q9Qb6DzgeYtsAdkPZ47znpoNsMgZw0+tVijiv3uGNR6dgNlty6r9rzIzHjtd/A== "@gar/promisify@^1.0.1": version "1.1.3" @@ -2513,59 +2513,56 @@ call-me-maybe "^1.0.1" glob-to-regexp "^0.3.0" -"@mui/base@5.0.0-beta.14": - version "5.0.0-beta.14" - resolved "https://registry.yarnpkg.com/@mui/base/-/base-5.0.0-beta.14.tgz#315b67b0fd231cbd47e8d54f8f92be23122e4d66" - integrity sha512-Je/9JzzYObsuLCIClgE8XvXNFb55IEz8n2NtStUfASfNiVrwiR8t6VVFFuhofehkyTIN34tq1qbBaOjCnOovBw== +"@mui/base@5.0.0-beta.18": + version "5.0.0-beta.18" + resolved "https://registry.yarnpkg.com/@mui/base/-/base-5.0.0-beta.18.tgz#f95d393cf80974e77c0823170cc15c854d5af84b" + integrity sha512-e9ZCy/ndhyt5MTshAS3qAUy/40UiO0jX+kAo6a+XirrPJE+rrQW+mKPSI0uyp+5z4Vh+z0pvNoJ2S2gSrNz3BQ== dependencies: - "@babel/runtime" "^7.22.10" - "@emotion/is-prop-valid" "^1.2.1" - "@floating-ui/react-dom" "^2.0.1" - "@mui/types" "^7.2.4" - "@mui/utils" "^5.14.8" + "@babel/runtime" "^7.23.1" + "@floating-ui/react-dom" "^2.0.2" + "@mui/types" "^7.2.5" + "@mui/utils" "^5.14.12" "@popperjs/core" "^2.11.8" clsx "^2.0.0" prop-types "^15.8.1" - react-is "^18.2.0" -"@mui/core-downloads-tracker@^5.14.8": - version "5.14.8" - resolved "https://registry.yarnpkg.com/@mui/core-downloads-tracker/-/core-downloads-tracker-5.14.8.tgz#9117bd29e94e96dc376f93a28e024666a2456696" - integrity sha512-8V7ZOC/lKkM03TRHqaThQFIq6bWPnj7L/ZWPh0ymldYFFyh8XdF0ywTgafsofDNYT4StlNknbaTjVHBma3SNjQ== +"@mui/core-downloads-tracker@^5.14.12": + version "5.14.12" + resolved "https://registry.yarnpkg.com/@mui/core-downloads-tracker/-/core-downloads-tracker-5.14.12.tgz#7be13094ef0c2fc7c3854da2b90a7eae456ebefd" + integrity sha512-WZhCkKqhrXaSVBzoC6LNcVkIawS000OOt7gmnp4g9HhyvN0PSclRXc/JrkC7EwfzUAZJh+hiK2LaVsbtOpNuOg== "@mui/icons-material@^5.0.0", "@mui/icons-material@^5.2.0": - version "5.14.8" - resolved "https://registry.yarnpkg.com/@mui/icons-material/-/icons-material-5.14.8.tgz#e07418e792050eae611afd74f810ed1c234be687" - integrity sha512-YXcReLydTuNWb1/PxduAH5LgnHNH6spSQBaA0JOz9HD4J+vwst0IanAQgsXy9KKCJSjCsHywE3DB8X+w/b4eeQ== + version "5.14.12" + resolved "https://registry.yarnpkg.com/@mui/icons-material/-/icons-material-5.14.12.tgz#6634cdc3198bc438e8d38ce591c96d63d5df99a0" + integrity sha512-aFm6g/AIB3RQN9h/4MKoBoBybLZXeR3aDHWNx6KzemEpIlElUxv5uXRX5Qk1VC6v/YPkhbaPsiLLjsRSTiZF3w== dependencies: - "@babel/runtime" "^7.22.10" + "@babel/runtime" "^7.23.1" "@mui/lab@^5.0.0-alpha.72": - version "5.0.0-alpha.143" - resolved "https://registry.yarnpkg.com/@mui/lab/-/lab-5.0.0-alpha.143.tgz#0fef89f8780f819a28d7f7e62383ab964d121ae2" - integrity sha512-2lpzJCSyrb0yNhxzKK2G25w9+Tk+vjlmjgAXh+j8NS2fyRD7F992DuChRqNaoZmg1aoAbFli6qZh6XJE/5cymA== + version "5.0.0-alpha.147" + resolved "https://registry.yarnpkg.com/@mui/lab/-/lab-5.0.0-alpha.147.tgz#5586ef727c355617c499d0e13ab7dbd33ece1e09" + integrity sha512-AZjDEl31/co9baYrOBHMlXI8BCrV9JTCGDE2+IswVm32HNPYL5V2gHL3wKqn+MIFeCEg+z2es+8CU/Bau0JNSQ== dependencies: - "@babel/runtime" "^7.22.10" - "@mui/base" "5.0.0-beta.14" - "@mui/system" "^5.14.8" - "@mui/types" "^7.2.4" - "@mui/utils" "^5.14.8" - "@mui/x-tree-view" "https://pkg.csb.dev/mui/mui-x/commit/1f23b33d/@mui/x-tree-view" + "@babel/runtime" "^7.23.1" + "@mui/base" "5.0.0-beta.18" + "@mui/system" "^5.14.12" + "@mui/types" "^7.2.5" + "@mui/utils" "^5.14.12" + "@mui/x-tree-view" "6.0.0-alpha.1" clsx "^2.0.0" prop-types "^15.8.1" - react-is "^18.2.0" "@mui/material@^5.0.1", "@mui/material@^5.2.2": - version "5.14.8" - resolved "https://registry.yarnpkg.com/@mui/material/-/material-5.14.8.tgz#1cad40f106f7c983639376589c3f21485fb1d166" - integrity sha512-fqvDGGF1pXwOOL/f0Gw+KHo/67hasRpf2ApTIJkbuONOk9AUb2jnYMEqCWmL2sUcbbE3ShMbHl8N7HPSsRv1/A== + version "5.14.12" + resolved "https://registry.yarnpkg.com/@mui/material/-/material-5.14.12.tgz#8fa5bebd1a096796a288b548f1ba867e068601c8" + integrity sha512-EelF2L46VcVqhg3KjzIGBBpOtcBgRh0MMy9Efuk6Do81QdcZsFC9RebCVAflo5jIdbHiBmxBs5/l5Q9NjONozg== dependencies: - "@babel/runtime" "^7.22.10" - "@mui/base" "5.0.0-beta.14" - "@mui/core-downloads-tracker" "^5.14.8" - "@mui/system" "^5.14.8" - "@mui/types" "^7.2.4" - "@mui/utils" "^5.14.8" + "@babel/runtime" "^7.23.1" + "@mui/base" "5.0.0-beta.18" + "@mui/core-downloads-tracker" "^5.14.12" + "@mui/system" "^5.14.12" + "@mui/types" "^7.2.5" + "@mui/utils" "^5.14.12" "@types/react-transition-group" "^4.4.6" clsx "^2.0.0" csstype "^3.1.2" @@ -2573,35 +2570,35 @@ react-is "^18.2.0" react-transition-group "^4.4.5" -"@mui/private-theming@^5.14.7", "@mui/private-theming@^5.14.8": - version "5.14.8" - resolved "https://registry.yarnpkg.com/@mui/private-theming/-/private-theming-5.14.8.tgz#8e224cd10c531d12b871dc59b1f9376028dd13bb" - integrity sha512-iBzpcl3Mh92XaYpYPdgzzRxNGkjpoDz8rf8/q5m+EBPowFEHV+CCS9hC0Q2pOKLW3VFFikA7w/GHt7n++40JGQ== +"@mui/private-theming@^5.14.12": + version "5.14.12" + resolved "https://registry.yarnpkg.com/@mui/private-theming/-/private-theming-5.14.12.tgz#b07f710b9794c928052ee4c91bf67fc3e0a442ea" + integrity sha512-TWwm+9+BgHFpoR3w04FG+IqID4ALa74A27RuKq2CEaWgxliBZB24EVeI6djfjFt5t4FYmIb8BMw2ZJEir7YjLQ== dependencies: - "@babel/runtime" "^7.22.10" - "@mui/utils" "^5.14.8" + "@babel/runtime" "^7.23.1" + "@mui/utils" "^5.14.12" prop-types "^15.8.1" -"@mui/styled-engine@^5.14.8": - version "5.14.8" - resolved "https://registry.yarnpkg.com/@mui/styled-engine/-/styled-engine-5.14.8.tgz#b7a4d5dc6cbe3ecaa5af5189eb5ad90a62a255eb" - integrity sha512-LGwOav/Y40PZWZ2yDk4beUoRlc57Vg+Vpxi9V9BBtT2ESAucCgFobkt+T8eVLMWF9huUou5pwKgLSU5pF90hBg== +"@mui/styled-engine@^5.14.12": + version "5.14.12" + resolved "https://registry.yarnpkg.com/@mui/styled-engine/-/styled-engine-5.14.12.tgz#bfacc045f14f8f8bef735c76ecfd90bc99427c43" + integrity sha512-bocxt1nDmXfB3gpLfCCmFCyJ7sVmscFs+PuheO210QagZwHVp47UIRT1AiswLDYSQo1ZqmVGn7KLEJEYK0d4Xw== dependencies: - "@babel/runtime" "^7.22.10" + "@babel/runtime" "^7.23.1" "@emotion/cache" "^11.11.0" csstype "^3.1.2" prop-types "^15.8.1" "@mui/styles@^5.0.1", "@mui/styles@^5.2.2": - version "5.14.7" - resolved "https://registry.yarnpkg.com/@mui/styles/-/styles-5.14.7.tgz#e704f465b39e6dbfcd30090b191cf8140f7a9e42" - integrity sha512-5qA81gIRBUd3ur2FtGO10UmArpqaGWL+eUGFVSf68SjhahhHr86/JgqsXqUPyW/LPnyW92SZxhQ6El6Co8i7AQ== + version "5.14.12" + resolved "https://registry.yarnpkg.com/@mui/styles/-/styles-5.14.12.tgz#8a2e9b1165dd0a746fb15e64591bffab398122d7" + integrity sha512-nrtF23SRd7eRHTRebE1qnBQ4u5XojNlp3kvL54xIhuAi+mMuSXtJgwkRL04uoz0NZPalfdF8RaeFVN2INIkHKg== dependencies: - "@babel/runtime" "^7.22.10" + "@babel/runtime" "^7.23.1" "@emotion/hash" "^0.9.1" - "@mui/private-theming" "^5.14.7" - "@mui/types" "^7.2.4" - "@mui/utils" "^5.14.7" + "@mui/private-theming" "^5.14.12" + "@mui/types" "^7.2.5" + "@mui/utils" "^5.14.12" clsx "^2.0.0" csstype "^3.1.2" hoist-non-react-statics "^3.3.2" @@ -2615,33 +2612,32 @@ jss-plugin-vendor-prefixer "^10.10.0" prop-types "^15.8.1" -"@mui/system@>= 5", "@mui/system@^5.0.1", "@mui/system@^5.14.8": - version "5.14.8" - resolved "https://registry.yarnpkg.com/@mui/system/-/system-5.14.8.tgz#1ca201b948310083e670352bae2d7963ad6f971e" - integrity sha512-Dxnasv7Pj5hYe4ZZFKJZu4ufKm6cxpitWt3A+qMPps22YhqyeEqgDBq/HsAB3GOjqDP40fTAvQvS/Hguf4SJuw== +"@mui/system@>= 5", "@mui/system@^5.0.1", "@mui/system@^5.14.12": + version "5.14.12" + resolved "https://registry.yarnpkg.com/@mui/system/-/system-5.14.12.tgz#da5b32c2a10bbe58f8b4839c5d5de449dc35e425" + integrity sha512-6DXfjjLhW0/ia5qU3Crke7j+MnfDbMBOHlLIrqbrEqNs0AuSBv8pXniEGb+kqO0H804NJreRTEJRjCngwOX5CA== dependencies: - "@babel/runtime" "^7.22.10" - "@mui/private-theming" "^5.14.8" - "@mui/styled-engine" "^5.14.8" - "@mui/types" "^7.2.4" - "@mui/utils" "^5.14.8" + "@babel/runtime" "^7.23.1" + "@mui/private-theming" "^5.14.12" + "@mui/styled-engine" "^5.14.12" + "@mui/types" "^7.2.5" + "@mui/utils" "^5.14.12" clsx "^2.0.0" csstype "^3.1.2" prop-types "^15.8.1" -"@mui/types@^7.2.4": - version "7.2.4" - resolved "https://registry.yarnpkg.com/@mui/types/-/types-7.2.4.tgz#b6fade19323b754c5c6de679a38f068fd50b9328" - integrity sha512-LBcwa8rN84bKF+f5sDyku42w1NTxaPgPyYKODsh01U1fVstTClbUoSA96oyRBnSNyEiAVjKm6Gwx9vjR+xyqHA== +"@mui/types@^7.2.5": + version "7.2.5" + resolved "https://registry.yarnpkg.com/@mui/types/-/types-7.2.5.tgz#cd62a1fc5eb1044137ccab2053b431dd7cfc3cb8" + integrity sha512-S2BwfNczr7VwS6ki8GoAXJyARoeSJDLuxOEPs3vEMyTALlf9PrdHv+sluX7kk3iKrCg/ML2mIWwapZvWbkMCQA== -"@mui/utils@^5.10.3", "@mui/utils@^5.13.7", "@mui/utils@^5.14.7", "@mui/utils@^5.14.8", "@mui/utils@^5.7.0": - version "5.14.8" - resolved "https://registry.yarnpkg.com/@mui/utils/-/utils-5.14.8.tgz#e1737d5fcd54aa413d6b1aaea3ea670af2919402" - integrity sha512-1Ls2FfyY2yVSz9NEqedh3J8JAbbZAnUWkOWLE2f4/Hc4T5UWHMfzBLLrCqExfqyfyU+uXYJPGeNIsky6f8Gh5Q== +"@mui/utils@^5.10.3", "@mui/utils@^5.14.12", "@mui/utils@^5.14.3", "@mui/utils@^5.7.0": + version "5.14.12" + resolved "https://registry.yarnpkg.com/@mui/utils/-/utils-5.14.12.tgz#58b570839e22e0fba71e17d37d9c083fe233704d" + integrity sha512-RFNXnhKQlzIkIUig6mmv0r5VbtjPdWoaBPYicq25LETdZux59HAqoRdWw15T7lp3c7gXOoE8y67+hTB8C64m2g== dependencies: - "@babel/runtime" "^7.22.10" - "@types/prop-types" "^15.7.5" - "@types/react-is" "^18.2.1" + "@babel/runtime" "^7.23.1" + "@types/prop-types" "^15.7.7" prop-types "^15.8.1" react-is "^18.2.0" @@ -2656,14 +2652,15 @@ prop-types "^15.8.1" reselect "^4.1.6" -"@mui/x-tree-view@https://pkg.csb.dev/mui/mui-x/commit/1f23b33d/@mui/x-tree-view": - version "6.0.0-alpha.0" - resolved "https://pkg.csb.dev/mui/mui-x/commit/1f23b33d/@mui/x-tree-view#93cbc61c818ed2d6c40554cdbada969f7dcbaab1" +"@mui/x-tree-view@6.0.0-alpha.1": + version "6.0.0-alpha.1" + resolved "https://registry.yarnpkg.com/@mui/x-tree-view/-/x-tree-view-6.0.0-alpha.1.tgz#fe499f8c43c01d28aca95cfb17491746ffcc3080" + integrity sha512-JUG3HmBrmGEALbCFg1b+i7h726e1dWYZs4db3syO1j+Q++E3nbvE4Lehp5yGTFm+8esH0Tny50tuJaa4WX6VSA== dependencies: "@babel/runtime" "^7.22.6" - "@mui/utils" "^5.13.7" + "@mui/utils" "^5.14.3" "@types/react-transition-group" "^4.4.6" - clsx "^1.2.1" + clsx "^2.0.0" prop-types "^15.8.1" react-transition-group "^4.4.5" @@ -2766,27 +2763,27 @@ read-package-json-fast "^3.0.0" which "^3.0.0" -"@nrwl/devkit@16.8.1": - version "16.8.1" - resolved "https://registry.yarnpkg.com/@nrwl/devkit/-/devkit-16.8.1.tgz#18f90c9bddbac182ca2cd6b08c90f09caf9f4aa0" - integrity sha512-Y7yYDh62Hi4q99Q4+ipIQ3K9iLuAld3WcwjLv6vtl6Livu+TU3eqbraBEno7DQL8JuIuwgBT4lX7Bp3w3N9RDg== +"@nrwl/devkit@16.10.0": + version "16.10.0" + resolved "https://registry.yarnpkg.com/@nrwl/devkit/-/devkit-16.10.0.tgz#ac8c5b4db00f12c4b817c937be2f7c4eb8f2593c" + integrity sha512-fRloARtsDQoQgQ7HKEy0RJiusg/HSygnmg4gX/0n/Z+SUS+4KoZzvHjXc6T5ZdEiSjvLypJ+HBM8dQzIcVACPQ== dependencies: - "@nx/devkit" "16.8.1" + "@nx/devkit" "16.10.0" -"@nrwl/tao@16.8.1": - version "16.8.1" - resolved "https://registry.yarnpkg.com/@nrwl/tao/-/tao-16.8.1.tgz#640522eef8905f358ce087e1f6a8489c69e3ebfb" - integrity sha512-hgGFLyEgONSofxnJsXN9NlUx4J8/YSLUkfZKdR8Qa97+JGZT8FEuk7NLFJOWdYYqROoCzXLHK0d+twFFNPS5BQ== +"@nrwl/tao@16.10.0": + version "16.10.0" + resolved "https://registry.yarnpkg.com/@nrwl/tao/-/tao-16.10.0.tgz#94642a0380709b8e387e1e33705a5a9624933375" + integrity sha512-QNAanpINbr+Pod6e1xNgFbzK1x5wmZl+jMocgiEFXZ67KHvmbD6MAQQr0MMz+GPhIu7EE4QCTLTyCEMlAG+K5Q== dependencies: - nx "16.8.1" + nx "16.10.0" tslib "^2.3.0" -"@nx/devkit@16.8.1", "@nx/devkit@>=16.5.1 < 17": - version "16.8.1" - resolved "https://registry.yarnpkg.com/@nx/devkit/-/devkit-16.8.1.tgz#830a6f3daf774aabe1a95e257eb4c832ee85d497" - integrity sha512-I+Cg+lXk0wRz6KC9FZbWFuJWQTXAt5O3bNl9ksISmzqmEyuy72Cv+/MBHvF7o54Sq80DNw+RKWB1re5HFOsqCA== +"@nx/devkit@16.10.0", "@nx/devkit@>=16.5.1 < 17": + version "16.10.0" + resolved "https://registry.yarnpkg.com/@nx/devkit/-/devkit-16.10.0.tgz#7e466be2dee2dcb1ccaf286786ca2a0a639aa007" + integrity sha512-IvKQqRJFDDiaj33SPfGd3ckNHhHi6ceEoqCbAP4UuMXOPPVOX6H0KVk+9tknkPb48B7jWIw6/AgOeWkBxPRO5w== dependencies: - "@nrwl/devkit" "16.8.1" + "@nrwl/devkit" "16.10.0" ejs "^3.1.7" enquirer "~2.3.6" ignore "^5.0.4" @@ -2794,55 +2791,75 @@ tmp "~0.2.1" tslib "^2.3.0" -"@nx/nx-darwin-arm64@16.8.1": - version "16.8.1" - resolved "https://registry.yarnpkg.com/@nx/nx-darwin-arm64/-/nx-darwin-arm64-16.8.1.tgz#fd85ed007d63d232700272cd07138ecac046525d" - integrity sha512-xOflqyIVcyLPzdJOZcucI+5ClwnTgK8zIvpjbxHokrO9McJJglhfUyP0bbTHpEpWqzA+GaPA/6/Qdu0ATzqQBQ== +"@nx/nx-darwin-arm64@16.10.0": + version "16.10.0" + resolved "https://registry.yarnpkg.com/@nx/nx-darwin-arm64/-/nx-darwin-arm64-16.10.0.tgz#0c73010cac7a502549483b12bad347da9014e6f1" + integrity sha512-YF+MIpeuwFkyvM5OwgY/rTNRpgVAI/YiR0yTYCZR+X3AAvP775IVlusNgQ3oedTBRUzyRnI4Tknj1WniENFsvQ== -"@nx/nx-darwin-x64@16.8.1": - version "16.8.1" - resolved "https://registry.yarnpkg.com/@nx/nx-darwin-x64/-/nx-darwin-x64-16.8.1.tgz#de75b5052cb7ec93e238af632f0ea0f2d8822e66" - integrity sha512-JJGrlOvEpDMWnM6YKaA1WOnzHgiw5vRKEowX9ba+jxhmCvtdjbLSxi228kv92JtQPPQ91zvtsNM+BFY0EbPOlA== +"@nx/nx-darwin-x64@16.10.0": + version "16.10.0" + resolved "https://registry.yarnpkg.com/@nx/nx-darwin-x64/-/nx-darwin-x64-16.10.0.tgz#2ccf270418d552fd0a8e0d6089aee4944315adaa" + integrity sha512-ypi6YxwXgb0kg2ixKXE3pwf5myVNUgWf1CsV5OzVccCM8NzheMO51KDXTDmEpXdzUsfT0AkO1sk5GZeCjhVONg== -"@nx/nx-freebsd-x64@16.8.1": - version "16.8.1" - resolved "https://registry.yarnpkg.com/@nx/nx-freebsd-x64/-/nx-freebsd-x64-16.8.1.tgz#733dbe731af814b87a1429d7c087c4879192536c" - integrity sha512-aZdJQ7cIQfXOmfk4vRXvVYxuV68xz8YyhNZ0IvBfJ16uZQ+YNl4BpklRLEIdaloSbwz9M1NNewmL+AgklEBxlA== +"@nx/nx-freebsd-x64@16.10.0": + version "16.10.0" + resolved "https://registry.yarnpkg.com/@nx/nx-freebsd-x64/-/nx-freebsd-x64-16.10.0.tgz#c3ee6914256e69493fed9355b0d6661d0e86da44" + integrity sha512-UeEYFDmdbbDkTQamqvtU8ibgu5jQLgFF1ruNb/U4Ywvwutw2d4ruOMl2e0u9hiNja9NFFAnDbvzrDcMo7jYqYw== -"@nx/nx-linux-arm-gnueabihf@16.8.1": - version "16.8.1" - resolved "https://registry.yarnpkg.com/@nx/nx-linux-arm-gnueabihf/-/nx-linux-arm-gnueabihf-16.8.1.tgz#3d1e2130d26ecc335df21bf8a8afa566bd6b4ed5" - integrity sha512-JzjrTf7FFgikoVUbRs0hKvwHRR6SyqT4yIdk/YyiCt2mWY9w4m5DWtHM/9kJzhckkH9MY66m+X/zG6+NKsEMvg== +"@nx/nx-linux-arm-gnueabihf@16.10.0": + version "16.10.0" + resolved "https://registry.yarnpkg.com/@nx/nx-linux-arm-gnueabihf/-/nx-linux-arm-gnueabihf-16.10.0.tgz#a961eccbb38acb2da7fc125b29d1fead0b39152f" + integrity sha512-WV3XUC2DB6/+bz1sx+d1Ai9q2Cdr+kTZRN50SOkfmZUQyEBaF6DRYpx/a4ahhxH3ktpNfyY8Maa9OEYxGCBkQA== -"@nx/nx-linux-arm64-gnu@16.8.1": - version "16.8.1" - resolved "https://registry.yarnpkg.com/@nx/nx-linux-arm64-gnu/-/nx-linux-arm64-gnu-16.8.1.tgz#f0f96dc4be17cac8a387367eaafe71a6b1948fc3" - integrity sha512-CF0s981myBWusW7iW2+fKPa7ceYYe+NO5EdKe9l27fpHDkcA71KZU3q7U823QpO/7tYvVdBevJp3CCn2/GBURQ== +"@nx/nx-linux-arm64-gnu@16.10.0": + version "16.10.0" + resolved "https://registry.yarnpkg.com/@nx/nx-linux-arm64-gnu/-/nx-linux-arm64-gnu-16.10.0.tgz#795f20072549d03822b5c4639ef438e473dbb541" + integrity sha512-aWIkOUw995V3ItfpAi5FuxQ+1e9EWLS1cjWM1jmeuo+5WtaKToJn5itgQOkvSlPz+HSLgM3VfXMvOFALNk125g== -"@nx/nx-linux-arm64-musl@16.8.1": - version "16.8.1" - resolved "https://registry.yarnpkg.com/@nx/nx-linux-arm64-musl/-/nx-linux-arm64-musl-16.8.1.tgz#65ed581e702ef882afd9d7f25b660e34e4c13690" - integrity sha512-X4TobxRt1dALvoeKC3/t1CqZCMUqtEhGG+KQLT/51sG54HdxmTAWRFlvj8PvLH0QSBk4e+uRZAo45qpt3iSnBg== +"@nx/nx-linux-arm64-musl@16.10.0": + version "16.10.0" + resolved "https://registry.yarnpkg.com/@nx/nx-linux-arm64-musl/-/nx-linux-arm64-musl-16.10.0.tgz#f2428ee6dbe2b2c326e8973f76c97666def33607" + integrity sha512-uO6Gg+irqpVcCKMcEPIQcTFZ+tDI02AZkqkP7koQAjniLEappd8DnUBSQdcn53T086pHpdc264X/ZEpXFfrKWQ== -"@nx/nx-linux-x64-gnu@16.8.1": - version "16.8.1" - resolved "https://registry.yarnpkg.com/@nx/nx-linux-x64-gnu/-/nx-linux-x64-gnu-16.8.1.tgz#cc5c782a67e5b17f4e395d358d87ea5076606dba" - integrity sha512-lHvv2FD14Lpxh7muMLStH2tC1opQOaepO4nXwb1LaaoIpMym7kBgCK8AQuI98/oNQiMDXMNDKWQZCjxnJGDIPw== +"@nx/nx-linux-x64-gnu@16.10.0": + version "16.10.0" + resolved "https://registry.yarnpkg.com/@nx/nx-linux-x64-gnu/-/nx-linux-x64-gnu-16.10.0.tgz#d36c2bcf94d49eaa24e3880ddaf6f1f617de539b" + integrity sha512-134PW/u/arNFAQKpqMJniC7irbChMPz+W+qtyKPAUXE0XFKPa7c1GtlI/wK2dvP9qJDZ6bKf0KtA0U/m2HMUOA== -"@nx/nx-linux-x64-musl@16.8.1": - version "16.8.1" - resolved "https://registry.yarnpkg.com/@nx/nx-linux-x64-musl/-/nx-linux-x64-musl-16.8.1.tgz#2837fb7d6590b5fe9f2eb42603d0e064771a8ded" - integrity sha512-c4gQvNgIjggD1A5sYhftQEC1PtAhV3sEnv60X00v9wmjl57Wj4Ty0TgyzpYglLysVRiko/B58S8NYS0jKvMmeA== +"@nx/nx-linux-x64-musl@16.10.0": + version "16.10.0" + resolved "https://registry.yarnpkg.com/@nx/nx-linux-x64-musl/-/nx-linux-x64-musl-16.10.0.tgz#78bd2ab97a583b3d4ea3387b67fd7b136907493c" + integrity sha512-q8sINYLdIJxK/iUx9vRk5jWAWb/2O0PAbOJFwv4qkxBv4rLoN7y+otgCZ5v0xfx/zztFgk/oNY4lg5xYjIso2Q== -"@nx/nx-win32-arm64-msvc@16.8.1": - version "16.8.1" - resolved "https://registry.yarnpkg.com/@nx/nx-win32-arm64-msvc/-/nx-win32-arm64-msvc-16.8.1.tgz#d45d8abdd99f3b0dda83a673592299ffdc819895" - integrity sha512-GKHPy/MyGFoV9cdKgcWLZZK2vDdxt5bQ53ss0k+BDKRP+YwLKm7tJl23eeM7JdB4GLCBntEQPC+dBqxOA8Ze/w== +"@nx/nx-win32-arm64-msvc@16.10.0": + version "16.10.0" + resolved "https://registry.yarnpkg.com/@nx/nx-win32-arm64-msvc/-/nx-win32-arm64-msvc-16.10.0.tgz#ef20ec8d0c83d66e73e20df12d2c788b8f866396" + integrity sha512-moJkL9kcqxUdJSRpG7dET3UeLIciwrfP08mzBQ12ewo8K8FzxU8ZUsTIVVdNrwt01CXOdXoweGfdQLjJ4qTURA== -"@nx/nx-win32-x64-msvc@16.8.1": - version "16.8.1" - resolved "https://registry.yarnpkg.com/@nx/nx-win32-x64-msvc/-/nx-win32-x64-msvc-16.8.1.tgz#6ec1930aaf4d9dea19149d6b3d100b2c7e69d582" - integrity sha512-yHZ5FAcx54rVc31R0yIpniepkHMPwaxG23l8E/ZYbL1iPwE/Wc1HeUzUvxUuSXtguRp7ihcRhaUEPkcSl2EAVw== +"@nx/nx-win32-x64-msvc@16.10.0": + version "16.10.0" + resolved "https://registry.yarnpkg.com/@nx/nx-win32-x64-msvc/-/nx-win32-x64-msvc-16.10.0.tgz#7410a51d0f8be631eec9552f01b2e5946285927c" + integrity sha512-5iV2NKZnzxJwZZ4DM5JVbRG/nkhAbzEskKaLBB82PmYGKzaDHuMHP1lcPoD/rtYMlowZgNA/RQndfKvPBPwmXA== + +"@nymproject/mix-fetch-wasm@>=1.2.0-rc.7 || 1": + version "1.2.0-rc.10" + resolved "https://registry.yarnpkg.com/@nymproject/mix-fetch-wasm/-/mix-fetch-wasm-1.2.0-rc.10.tgz#c9e42d04f67b630d5c751dbdc28b539ddc68629e" + integrity sha512-Mz2+HKOa/Yflo46XvTbxz2fD+8kw/GHhH/dWVHKNXaGVQeRnRxSApEnf+WzssaOkDgAn0j3ty7o98UJ3928rsA== + +"@nymproject/nym-client-wasm-node@>=1.2.0-rc.10 || ^1": + version "1.2.0-rc.10" + resolved "https://registry.yarnpkg.com/@nymproject/nym-client-wasm-node/-/nym-client-wasm-node-1.2.0-rc.10.tgz#90ab7a446497b401d786c22cca57809d145f8644" + integrity sha512-XlpV62Krhs8e8uhazaj69Y7sng9UVBqt+eWiTlzvKyY0NY6GI/KjiM4ya5udiT/B0E13lT6WcCDepprDvkJmtA== + +"@nymproject/nym-client-wasm@>=1.2.0-rc.7 || ^1": + version "1.2.0-rc.10" + resolved "https://registry.yarnpkg.com/@nymproject/nym-client-wasm/-/nym-client-wasm-1.2.0-rc.10.tgz#9964d2c0ab9147c2437e7d44c23c4915752effc6" + integrity sha512-h/QOg0vkTMORiV3yV2IcO5zzK9LQubDq8JFf9CfnoJ/1iWmVJcfTIj/GiMs9vZIwn3fKRgdhfLujvuwzuUp2Zw== + +"@nymproject/nym-node-tester-wasm@>=1.2.0-rc.7 || ^1": + version "1.2.0-rc.10" + resolved "https://registry.yarnpkg.com/@nymproject/nym-node-tester-wasm/-/nym-node-tester-wasm-1.2.0-rc.10.tgz#6f60e195977b5b74eaf062db69989be9fd950999" + integrity sha512-oaKHtcS7X52VqVoB1cHYXRqmUwgnUzmzuxK5fnZUlw6IL0Nn9QzY9okEyRDnHerGEmqW4H/H0oEXyp0Wrj/GqQ== "@nymproject/nym-validator-client@^0.18.0": version "0.18.0" @@ -2892,9 +2909,9 @@ universal-user-agent "^6.0.0" "@octokit/openapi-types@^18.0.0": - version "18.0.0" - resolved "https://registry.yarnpkg.com/@octokit/openapi-types/-/openapi-types-18.0.0.tgz#f43d765b3c7533fd6fb88f3f25df079c24fccf69" - integrity sha512-V8GImKs3TeQRxRtXFpG2wl19V7444NIOTDF24AWuIbmNaNYOQMWRbjcGDXV5B+0n887fgDcuMNOmlul+k+oJtw== + version "18.1.1" + resolved "https://registry.yarnpkg.com/@octokit/openapi-types/-/openapi-types-18.1.1.tgz#09bdfdabfd8e16d16324326da5148010d765f009" + integrity sha512-VRaeH8nCDtF5aXWnjPuEMIYf1itK/s3JYyJcWFJT8X9pSNnBtriDf7wlEWsGuhPLl4QIH4xM8fqTXDwJ3Mu6sw== "@octokit/plugin-enterprise-rest@6.0.1": version "6.0.1" @@ -3057,10 +3074,10 @@ resolved "https://registry.yarnpkg.com/@protobufjs/utf8/-/utf8-1.1.0.tgz#a777360b5b39a1a2e5106f8e858f2fd2d060c570" integrity sha512-Vvn3zZrhQZkkBE8LSuW3em98c0FwgO4nxzv6OdSxPKJIEKY2bGbHn+mhGIPerzI4twdxaP8/0+06HBpwf345Lw== -"@remix-run/router@1.8.0": - version "1.8.0" - resolved "https://registry.yarnpkg.com/@remix-run/router/-/router-1.8.0.tgz#e848d2f669f601544df15ce2a313955e4bf0bafc" - integrity sha512-mrfKqIHnSZRyIzBcanNJmVQELTnX+qagEDlcKO90RgRBVOZGSGvZKeDihTRfWcqoDn5N/NkUcwWTccnpN18Tfg== +"@remix-run/router@1.9.0": + version "1.9.0" + resolved "https://registry.yarnpkg.com/@remix-run/router/-/router-1.9.0.tgz#9033238b41c4cbe1e961eccb3f79e2c588328cf6" + integrity sha512-bV63itrKBC0zdT27qYm6SDZHlkXwFL1xMBuhkn+X7l0+IIhNaH5wuuvZKp6eKhCD4KFhujhfhCT1YxXW6esUIA== "@rollup/plugin-commonjs@^24.0.1": version "24.1.0" @@ -3075,25 +3092,25 @@ magic-string "^0.27.0" "@rollup/plugin-inject@^5.0.3": - version "5.0.3" - resolved "https://registry.yarnpkg.com/@rollup/plugin-inject/-/plugin-inject-5.0.3.tgz#0783711efd93a9547d52971db73b2fb6140a67b1" - integrity sha512-411QlbL+z2yXpRWFXSmw/teQRMkXcAAC8aYTemc15gwJRpvEVDQwoe+N/HTFD8RFG8+88Bme9DK2V9CVm7hJdA== + version "5.0.4" + resolved "https://registry.yarnpkg.com/@rollup/plugin-inject/-/plugin-inject-5.0.4.tgz#7116970c2cde6ce150734cabac9165d7b60ad6f1" + integrity sha512-dM93Nyqp9Ah14jvThFFA30ifjB8cDKk3Bx69M1nIIHGytXug3VrTv5HEuYBzevu45HvZ0ho7t+40bmScmkzZhg== dependencies: "@rollup/pluginutils" "^5.0.1" estree-walker "^2.0.2" magic-string "^0.27.0" "@rollup/plugin-json@^6.0.0": - version "6.0.0" - resolved "https://registry.yarnpkg.com/@rollup/plugin-json/-/plugin-json-6.0.0.tgz#199fea6670fd4dfb1f4932250569b14719db234a" - integrity sha512-i/4C5Jrdr1XUarRhVu27EEwjt4GObltD7c+MkCIpO2QIbojw8MUs+CCTqOphQi3Qtg1FLmYt+l+6YeoIf51J7w== + version "6.0.1" + resolved "https://registry.yarnpkg.com/@rollup/plugin-json/-/plugin-json-6.0.1.tgz#7e2efcf5ed549963f1444e010611d22f463931c0" + integrity sha512-RgVfl5hWMkxN1h/uZj8FVESvPuBJ/uf6ly6GTj0GONnkfoBN5KC0MSz+PN2OLDgYXMhtG0mWpTrkiOjoxAIevw== dependencies: "@rollup/pluginutils" "^5.0.1" "@rollup/plugin-node-resolve@^15.0.1": - version "15.2.1" - resolved "https://registry.yarnpkg.com/@rollup/plugin-node-resolve/-/plugin-node-resolve-15.2.1.tgz#a15b14fb7969229e26a30feff2816d39eff503f0" - integrity sha512-nsbUg588+GDSu8/NS8T4UAshO6xeaOfINNuXeVHcKV02LJtoRaM1SiOacClw4kws1SFiNhdLGxlbMY9ga/zs/w== + version "15.2.3" + resolved "https://registry.yarnpkg.com/@rollup/plugin-node-resolve/-/plugin-node-resolve-15.2.3.tgz#e5e0b059bd85ca57489492f295ce88c2d4b0daf9" + integrity sha512-j/lym8nf5E21LwBT4Df1VD6hRO2L2iwUeUmP7litikRsVp1H6NWx20NEp0Y7su+7XGc476GnXXc4kFeZNGmaSQ== dependencies: "@rollup/pluginutils" "^5.0.1" "@types/resolve" "1.20.2" @@ -3103,9 +3120,9 @@ resolve "^1.22.1" "@rollup/plugin-replace@^5.0.2": - version "5.0.2" - resolved "https://registry.yarnpkg.com/@rollup/plugin-replace/-/plugin-replace-5.0.2.tgz#45f53501b16311feded2485e98419acb8448c61d" - integrity sha512-M9YXNekv/C/iHHK+cvORzfRYfPbq0RDD8r0G+bMiTXjNGKulPnCT9O3Ss46WfhI6ZOCgApOP7xAdmCQJ+U2LAA== + version "5.0.3" + resolved "https://registry.yarnpkg.com/@rollup/plugin-replace/-/plugin-replace-5.0.3.tgz#55a4550bd6d5e83a65df3d201e0b3d219be7b4b2" + integrity sha512-je7fu05B800IrMlWjb2wzJcdXzHYW46iTipfChnBDbIbDXhASZs27W1B58T2Yf45jZtJUONegpbce+9Ut2Ti/Q== dependencies: "@rollup/pluginutils" "^5.0.1" magic-string "^0.27.0" @@ -3128,26 +3145,28 @@ resolve "^1.22.1" "@rollup/plugin-typescript@^11.0.0": - version "11.1.3" - resolved "https://registry.yarnpkg.com/@rollup/plugin-typescript/-/plugin-typescript-11.1.3.tgz#8172858a1e5f4c181aebc61f8920002fd5e04b91" - integrity sha512-8o6cNgN44kQBcpsUJTbTXMTtb87oR1O0zgP3Dxm71hrNgparap3VujgofEilTYJo+ivf2ke6uy3/E5QEaiRlDA== + version "11.1.5" + resolved "https://registry.yarnpkg.com/@rollup/plugin-typescript/-/plugin-typescript-11.1.5.tgz#039c763bf943a5921f3f42be255895e75764cb91" + integrity sha512-rnMHrGBB0IUEv69Q8/JGRD/n4/n6b3nfpufUu26axhUcboUzv/twfZU8fIBbTOphRAe0v8EyxzeDpKXqGHfyDA== dependencies: "@rollup/pluginutils" "^5.0.1" resolve "^1.22.1" "@rollup/plugin-url@^8.0.1": - version "8.0.1" - resolved "https://registry.yarnpkg.com/@rollup/plugin-url/-/plugin-url-8.0.1.tgz#8da005d4be8cb4439357c929c73c85ceb5d979a4" - integrity sha512-8ajztphXb5e19dk3Iwjtm2eSYJR8jFQubZ8pJ1GG2MBMM7/qUedLnZAN+Vt4jqbcT/m27jfjIBocvrzV0giNRw== + version "8.0.2" + resolved "https://registry.yarnpkg.com/@rollup/plugin-url/-/plugin-url-8.0.2.tgz#aab4e209e9e012f65582bd99eb80b3bbdfe15afb" + integrity sha512-5yW2LP5NBEgkvIRSSEdJkmxe5cUNZKG3eenKtfJvSkxVm/xTTu7w+ayBtNwhozl1ZnTUCU0xFaRQR+cBl2H7TQ== dependencies: "@rollup/pluginutils" "^5.0.1" make-dir "^3.1.0" mime "^3.0.0" "@rollup/plugin-wasm@^6.1.1": - version "6.1.3" - resolved "https://registry.yarnpkg.com/@rollup/plugin-wasm/-/plugin-wasm-6.1.3.tgz#8d26a320780b15bf89d8d266ceda50823d5f978b" - integrity sha512-7ItTTeyauE6lwdDtQWceEHZ9+txbi4RRy0mYPFn9BW7rD7YdgBDu7HTHsLtHrRzJc313RM/1m6GKgV3np/aEaw== + version "6.2.2" + resolved "https://registry.yarnpkg.com/@rollup/plugin-wasm/-/plugin-wasm-6.2.2.tgz#ea75fd8cc5ddba1e30bdc22e07cdbaf8d6d160bf" + integrity sha512-gpC4R1G9Ni92ZIRTexqbhX7U+9estZrbhP+9SRb0DW9xpB9g7j34r+J2hqrcW/lRI7dJaU84MxZM0Rt82tqYPQ== + dependencies: + "@rollup/pluginutils" "^5.0.2" "@rollup/pluginutils@^3.1.0": version "3.1.0" @@ -3158,10 +3177,10 @@ estree-walker "^1.0.1" picomatch "^2.2.2" -"@rollup/pluginutils@^5.0.1": - version "5.0.4" - resolved "https://registry.yarnpkg.com/@rollup/pluginutils/-/pluginutils-5.0.4.tgz#74f808f9053d33bafec0cc98e7b835c9667d32ba" - integrity sha512-0KJnIoRI8A+a1dqOYLxH8vBf8bphDmty5QvIm2hqm7oFCFYKCAZWWd2hXgMibaPsNDhI0AtpYfQZJG47pt/k4g== +"@rollup/pluginutils@^5.0.1", "@rollup/pluginutils@^5.0.2": + version "5.0.5" + resolved "https://registry.yarnpkg.com/@rollup/pluginutils/-/pluginutils-5.0.5.tgz#bbb4c175e19ebfeeb8c132c2eea0ecb89941a66c" + integrity sha512-6aEYR910NyP73oHiJglti74iRyOwgFU4x3meH/H8OJx6Ry0j6cOVZ5X/wTvub7G7Ao6qaHBEaNsV3GLJkSsF+Q== dependencies: "@types/estree" "^1.0.0" estree-walker "^2.0.2" @@ -3172,78 +3191,79 @@ resolved "https://registry.yarnpkg.com/@sapphire/utilities/-/utilities-3.13.0.tgz#04fd73281ad4cd63c2c87ffbac3faa393d77cf95" integrity sha512-BD5ycPjZX5dXxrAb90dJTY8ukpPVBXgU17gA5ghK2memS4hwAzFYpvK+R+6zh4d6HYIKVuqrVhGXjvZenAa/Aw== -"@sentry-internal/tracing@7.69.0": - version "7.69.0" - resolved "https://registry.yarnpkg.com/@sentry-internal/tracing/-/tracing-7.69.0.tgz#8d8eb740b72967b6ba3fdc0a5173aa55331b7d35" - integrity sha512-4BgeWZUj9MO6IgfO93C9ocP3+AdngqujF/+zB2rFdUe+y9S6koDyUC7jr9Knds/0Ta72N/0D6PwhgSCpHK8s0Q== +"@sentry-internal/tracing@7.73.0": + version "7.73.0" + resolved "https://registry.yarnpkg.com/@sentry-internal/tracing/-/tracing-7.73.0.tgz#4838f31e41d23a6041ef4520519b80f788bf1cac" + integrity sha512-ig3WL/Nqp8nRQ52P205NaypGKNfIl/G+cIqge9xPW6zfRb5kJdM1YParw9GSJ1SPjEZBkBORGAML0on5H2FILw== dependencies: - "@sentry/core" "7.69.0" - "@sentry/types" "7.69.0" - "@sentry/utils" "7.69.0" + "@sentry/core" "7.73.0" + "@sentry/types" "7.73.0" + "@sentry/utils" "7.73.0" tslib "^2.4.1 || ^1.9.3" -"@sentry/browser@7.69.0": - version "7.69.0" - resolved "https://registry.yarnpkg.com/@sentry/browser/-/browser-7.69.0.tgz#65427c90fb71c1775e2c1e38431efb7f4aec1e34" - integrity sha512-5ls+zu2PrMhHCIIhclKQsWX5u6WH0Ez5/GgrCMZTtZ1d70ukGSRUvpZG9qGf5Cw1ezS1LY+1HCc3whf8x8lyPw== +"@sentry/browser@7.73.0": + version "7.73.0" + resolved "https://registry.yarnpkg.com/@sentry/browser/-/browser-7.73.0.tgz#a8eaeb50cf16ca32f0039a81719c503d7045495f" + integrity sha512-e301hUixcJ5+HNKCJwajFF5smF4opXEFSclyWsJuFNufv5J/1C1SDhbwG2JjBt5zzdSoKWJKT1ewR6vpICyoDw== dependencies: - "@sentry-internal/tracing" "7.69.0" - "@sentry/core" "7.69.0" - "@sentry/replay" "7.69.0" - "@sentry/types" "7.69.0" - "@sentry/utils" "7.69.0" + "@sentry-internal/tracing" "7.73.0" + "@sentry/core" "7.73.0" + "@sentry/replay" "7.73.0" + "@sentry/types" "7.73.0" + "@sentry/utils" "7.73.0" tslib "^2.4.1 || ^1.9.3" -"@sentry/core@7.69.0": - version "7.69.0" - resolved "https://registry.yarnpkg.com/@sentry/core/-/core-7.69.0.tgz#ebbe01df573f438f8613107020a4e18eb9adca4d" - integrity sha512-V6jvK2lS8bhqZDMFUtvwe2XvNstFQf5A+2LMKCNBOV/NN6eSAAd6THwEpginabjet9dHsNRmMk7WNKvrUfQhZw== +"@sentry/core@7.73.0": + version "7.73.0" + resolved "https://registry.yarnpkg.com/@sentry/core/-/core-7.73.0.tgz#1caeeec44f42c4d58c06cc05dec39e5497b65aa3" + integrity sha512-9FEz4Gq848LOgVN2OxJGYuQqxv7cIVw69VlAzWHEm3njt8mjvlTq+7UiFsGRo84+59V2FQuHxzA7vVjl90WfSg== dependencies: - "@sentry/types" "7.69.0" - "@sentry/utils" "7.69.0" + "@sentry/types" "7.73.0" + "@sentry/utils" "7.73.0" tslib "^2.4.1 || ^1.9.3" "@sentry/integrations@^7.54.0": - version "7.69.0" - resolved "https://registry.yarnpkg.com/@sentry/integrations/-/integrations-7.69.0.tgz#04c0206d9436ec7b79971e3bde5d6e1e9194595f" - integrity sha512-FEFtFqXuCo9+L7bENZxFpEAlIODwHl6FyW/DwLfniy9jOXHU7BhP/oICLrFE5J7rh1gNY7N/8VlaiQr3hCnS/g== + version "7.73.0" + resolved "https://registry.yarnpkg.com/@sentry/integrations/-/integrations-7.73.0.tgz#f12d4a6422787cc6d50471bbdec52ed32611a444" + integrity sha512-IjVpn4d+aSL9L1Ntu/oAdRwujz4BzzavDsZf96Xgc/AjBnjAEUT+wT1dAwluThfuKDXmWOJHhZ2cHHMfqI+7vw== dependencies: - "@sentry/types" "7.69.0" - "@sentry/utils" "7.69.0" + "@sentry/core" "7.73.0" + "@sentry/types" "7.73.0" + "@sentry/utils" "7.73.0" localforage "^1.8.1" tslib "^2.4.1 || ^1.9.3" "@sentry/react@^7.54.0": - version "7.69.0" - resolved "https://registry.yarnpkg.com/@sentry/react/-/react-7.69.0.tgz#b9931ac590d8dad3390a9a03a516f1b1bd75615e" - integrity sha512-J+DciRRVuruf1nMmBOi2VeJkOLGeCb4vTOFmHzWTvRJNByZ0flyo8E/fyROL7+23kBq1YbcVY6IloUlH73hneQ== + version "7.73.0" + resolved "https://registry.yarnpkg.com/@sentry/react/-/react-7.73.0.tgz#8591bb70ac683b43fbe41736c2c321a4661ce22d" + integrity sha512-RCGlxW0Xp5vsC38LGxUO0Xf11LBzfg75VN+KS3D2FS5GXl0R0JwgUyPNVlod7YMCfwytsKGhfP+YpQvHGQAVwg== dependencies: - "@sentry/browser" "7.69.0" - "@sentry/types" "7.69.0" - "@sentry/utils" "7.69.0" + "@sentry/browser" "7.73.0" + "@sentry/types" "7.73.0" + "@sentry/utils" "7.73.0" hoist-non-react-statics "^3.3.2" tslib "^2.4.1 || ^1.9.3" -"@sentry/replay@7.69.0": - version "7.69.0" - resolved "https://registry.yarnpkg.com/@sentry/replay/-/replay-7.69.0.tgz#d727f96292d2b7c25df022fa53764fd39910fcda" - integrity sha512-oUqWyBPFUgShdVvgJtV65EQH9pVDmoYVQMOu59JI6FHVeL3ald7R5Mvz6GaNLXsirvvhp0yAkcAd2hc5Xi6hDw== +"@sentry/replay@7.73.0": + version "7.73.0" + resolved "https://registry.yarnpkg.com/@sentry/replay/-/replay-7.73.0.tgz#4e6c522bac5c12f596ef76afe15ecb3807407669" + integrity sha512-a8IC9SowBisLYD2IdLkXzx7gN4iVwHDJhQvLp2B8ARs1PyPjJ7gCxSMHeGrYp94V0gOXtorNYkrxvuX8ayPROA== dependencies: - "@sentry/core" "7.69.0" - "@sentry/types" "7.69.0" - "@sentry/utils" "7.69.0" + "@sentry/core" "7.73.0" + "@sentry/types" "7.73.0" + "@sentry/utils" "7.73.0" -"@sentry/types@7.69.0": - version "7.69.0" - resolved "https://registry.yarnpkg.com/@sentry/types/-/types-7.69.0.tgz#012b8d90d270a473cc2a5cf58a56870542739292" - integrity sha512-zPyCox0mzitzU6SIa1KIbNoJAInYDdUpdiA+PoUmMn2hFMH1llGU/cS7f4w/mAsssTlbtlBi72RMnWUCy578bw== +"@sentry/types@7.73.0": + version "7.73.0" + resolved "https://registry.yarnpkg.com/@sentry/types/-/types-7.73.0.tgz#6d811bbe413d319df0a592a672d6d72a94a8e716" + integrity sha512-/v8++bly8jW7r4cP2wswYiiVpn7eLLcqwnfPUMeCQze4zj3F3nTRIKc9BGHzU0V+fhHa3RwRC2ksqTGq1oJMDg== -"@sentry/utils@7.69.0": - version "7.69.0" - resolved "https://registry.yarnpkg.com/@sentry/utils/-/utils-7.69.0.tgz#b7594e4eb2a88b9b25298770b841dd3f81bd2aa4" - integrity sha512-4eBixe5Y+0EGVU95R4NxH3jkkjtkE4/CmSZD4In8SCkWGSauogePtq6hyiLsZuP1QHdpPb9Kt0+zYiBb2LouBA== +"@sentry/utils@7.73.0": + version "7.73.0" + resolved "https://registry.yarnpkg.com/@sentry/utils/-/utils-7.73.0.tgz#530cf023f7c395aa7708cd3824e5a45948449c10" + integrity sha512-h3ZK/qpf4k76FhJV9uiSbvMz3V/0Ovy94C+5/9UgPMVCJXFmVsdw8n/dwANJ7LupVPfYP23xFGgebDMFlK1/2w== dependencies: - "@sentry/types" "7.69.0" + "@sentry/types" "7.73.0" tslib "^2.4.1 || ^1.9.3" "@sigstore/bundle@^1.1.0": @@ -3699,13 +3719,13 @@ ts-dedent "^2.0.0" util-deprecate "^1.0.2" -"@storybook/channels@7.4.1": - version "7.4.1" - resolved "https://registry.yarnpkg.com/@storybook/channels/-/channels-7.4.1.tgz#20ec7a52db11c1bbcebf9ce209dc391181276026" - integrity sha512-gnE1mNrRF+9oCVRMq6MS/tLXJbYmf9P02PCC3KpMLcSsABdH5jcrACejzJVo/kE223knFH7NJc4BBj7+5h0uXA== +"@storybook/channels@7.4.6": + version "7.4.6" + resolved "https://registry.yarnpkg.com/@storybook/channels/-/channels-7.4.6.tgz#cadd16b91db08005c2b9e4938d3e1d1290d27a40" + integrity sha512-yPv/sfo2c18fM3fvG0i1xse63vG8l33Al/OU0k/dtovltPu001/HVa1QgBgsb/QrEfZtvGjGhmtdVeYb39fv3A== dependencies: - "@storybook/client-logger" "7.4.1" - "@storybook/core-events" "7.4.1" + "@storybook/client-logger" "7.4.6" + "@storybook/core-events" "7.4.6" "@storybook/global" "^5.0.0" qs "^6.10.0" telejson "^7.2.0" @@ -3745,10 +3765,10 @@ core-js "^3.8.2" global "^4.4.0" -"@storybook/client-logger@7.4.1", "@storybook/client-logger@^6.4.0 || >=6.5.0-0": - version "7.4.1" - resolved "https://registry.yarnpkg.com/@storybook/client-logger/-/client-logger-7.4.1.tgz#2973878a201c4d563a831165b90f2b11ffa2e71b" - integrity sha512-2j0DQlKlPNY8XAaEZv+mUYEUm4dOWg6/Q92UNbvYPRK5qbXUvbMiQco5nmvg4LvMT6y99LhRSW2xrwEx5xKAKw== +"@storybook/client-logger@7.4.6", "@storybook/client-logger@^6.4.0 || >=6.5.0-0": + version "7.4.6" + resolved "https://registry.yarnpkg.com/@storybook/client-logger/-/client-logger-7.4.6.tgz#3346f3ae51abb3ce61bf1a7d083d32f27b8f718f" + integrity sha512-XDw31ZziU//86PKuMRnmc+L/G0VopaGKENQOGEpvAXCU9IZASwGKlKAtcyosjrpi+ZiUXlMgUXCpXM7x3b1Ehw== dependencies: "@storybook/global" "^5.0.0" @@ -3855,10 +3875,10 @@ dependencies: core-js "^3.8.2" -"@storybook/core-events@7.4.1": - version "7.4.1" - resolved "https://registry.yarnpkg.com/@storybook/core-events/-/core-events-7.4.1.tgz#4346db1717495b39404ca14b12e58afa03c07fbd" - integrity sha512-F1tGb32XZ4FRfbtXdi4b+zdzWUjFz5rn3TF18mSuBGGXvxKU+4tywgjGQ3dKGdvuP754czn3poSdz2ZW08bLsQ== +"@storybook/core-events@7.4.6": + version "7.4.6" + resolved "https://registry.yarnpkg.com/@storybook/core-events/-/core-events-7.4.6.tgz#f0b652c623c1afebda42d1702d631cecc1c137bf" + integrity sha512-r5vrE+32lwrJh1NGFr1a0mWjvxo7q8FXYShylcwRWpacmL5NTtLkrXOoJSeGvJ4yKNYkvxQFtOPId4lzDxa32w== dependencies: ts-dedent "^2.0.0" @@ -3992,15 +4012,15 @@ global "^4.4.0" "@storybook/instrumenter@^6.4.0 || >=6.5.0-0": - version "7.4.1" - resolved "https://registry.yarnpkg.com/@storybook/instrumenter/-/instrumenter-7.4.1.tgz#de55b3d2acd3cc917815b816e49d9339583b1b9b" - integrity sha512-Nwu6MErUORKqQv/cYCZfWcvycuQQFOP5fEYAsbtgD2pRn+DXXOWeFyv6iHEbekqzfG2YTQ72koR0lZEFWnDl4w== + version "7.4.6" + resolved "https://registry.yarnpkg.com/@storybook/instrumenter/-/instrumenter-7.4.6.tgz#7a941a31aeae6cc1864689288d66cb282368b602" + integrity sha512-K5atRoVFCl6HEgkSxIbwygpzgE/iROc7BrtJ3z3a7E70sanFr6Jxt6Egu6fz2QkL3ef4EWpXMnle2vhEfG29pA== dependencies: - "@storybook/channels" "7.4.1" - "@storybook/client-logger" "7.4.1" - "@storybook/core-events" "7.4.1" + "@storybook/channels" "7.4.6" + "@storybook/client-logger" "7.4.6" + "@storybook/core-events" "7.4.6" "@storybook/global" "^5.0.0" - "@storybook/preview-api" "7.4.1" + "@storybook/preview-api" "7.4.6" "@storybook/manager-webpack4@6.5.16": version "6.5.16" @@ -4116,17 +4136,17 @@ dependencies: core-js "^3.8.2" -"@storybook/preview-api@7.4.1": - version "7.4.1" - resolved "https://registry.yarnpkg.com/@storybook/preview-api/-/preview-api-7.4.1.tgz#392b8bf0d25266f65772850288efef7b28db3afb" - integrity sha512-swmosWK73lP0CXDKMOwYIaaId28+muPDYX2V/0JmIOA+45HFXimeXZs3XsgVgQMutVF51QqnDA0pfrNgRofHgQ== +"@storybook/preview-api@7.4.6": + version "7.4.6" + resolved "https://registry.yarnpkg.com/@storybook/preview-api/-/preview-api-7.4.6.tgz#a42749ff867216b89849ada6ac0f49f4fa8f03a8" + integrity sha512-byUS/Opt3ytWD4cWz3sNEKw5Yks8MkQgRN+GDSyIomaEAQkLAM0rchPC0MYjwCeUSecV7IIQweNX5RbV4a34BA== dependencies: - "@storybook/channels" "7.4.1" - "@storybook/client-logger" "7.4.1" - "@storybook/core-events" "7.4.1" + "@storybook/channels" "7.4.6" + "@storybook/client-logger" "7.4.6" + "@storybook/core-events" "7.4.6" "@storybook/csf" "^0.1.0" "@storybook/global" "^5.0.0" - "@storybook/types" "7.4.1" + "@storybook/types" "7.4.6" "@types/qs" "^6.9.5" dequal "^2.0.2" lodash "^4.17.21" @@ -4307,12 +4327,12 @@ memoizerific "^1.11.3" regenerator-runtime "^0.13.7" -"@storybook/types@7.4.1": - version "7.4.1" - resolved "https://registry.yarnpkg.com/@storybook/types/-/types-7.4.1.tgz#1eb706f2a73e634694c2a6d576cda7160d689f05" - integrity sha512-bjt1YDG9AocFBhIFRvGGbYZPlD223p+qAFcFgYdezU16fFE4ZGFUzUuq2ERkOofL7a2+OzLTCQ/SKe1jFkXCxQ== +"@storybook/types@7.4.6": + version "7.4.6" + resolved "https://registry.yarnpkg.com/@storybook/types/-/types-7.4.6.tgz#536f21b82e1f809052b4d09802f99a580e960175" + integrity sha512-6QLXtMVsFZFpzPkdGWsu/iuc8na9dnS67AMOBKm5qCLPwtUJOYkwhMdFRSSeJthLRpzV7JLAL8Kwvl7MFP3QSw== dependencies: - "@storybook/channels" "7.4.1" + "@storybook/channels" "7.4.6" "@types/babel__core" "^7.0.0" "@types/express" "^4.7.0" file-system-cache "2.3.0" @@ -4444,75 +4464,75 @@ "@svgr/plugin-svgo" "^6.5.1" "@tauri-apps/api@^1.2.0": - version "1.4.0" - resolved "https://registry.yarnpkg.com/@tauri-apps/api/-/api-1.4.0.tgz#b4013ca3d17b853f7df29fe14079ebb4d52dbffa" - integrity sha512-Jd6HPoTM1PZSFIzq7FB8VmMu3qSSyo/3lSwLpoapW+lQ41CL5Dow2KryLg+gyazA/58DRWI9vu/XpEeHK4uMdw== + version "1.5.0" + resolved "https://registry.yarnpkg.com/@tauri-apps/api/-/api-1.5.0.tgz#46a0f9b6edd4bfc39be32afc4ad242e0b8cca3ea" + integrity sha512-yQY9wpVNuiYhLLuyDlu1nBpqJELT1fGp7OctN4rW9I2W1T2p7A3tqPxsEzQprEwneQRBAlPM9vC8NsnMbct+pg== -"@tauri-apps/cli-darwin-arm64@1.4.0": - version "1.4.0" - resolved "https://registry.yarnpkg.com/@tauri-apps/cli-darwin-arm64/-/cli-darwin-arm64-1.4.0.tgz#e76bb8515ae31f03f2cbd440c1a09b237a79b3ac" - integrity sha512-nA/ml0SfUt6/CYLVbHmT500Y+ijqsuv5+s9EBnVXYSLVg9kbPUZJJHluEYK+xKuOj6xzyuT/+rZFMRapmJD3jQ== +"@tauri-apps/cli-darwin-arm64@1.5.2": + version "1.5.2" + resolved "https://registry.yarnpkg.com/@tauri-apps/cli-darwin-arm64/-/cli-darwin-arm64-1.5.2.tgz#a579fadfc20be7119151d24f99d0416ac95a0afb" + integrity sha512-3mYN15jpYjuuHRWii5Xk6JvB3ZLEgAZkeVgc5Hg7k3Yw1ZBrEGiUNe3Ku4DjbkYWL/QDd7oteIJnQk3j0mXwEg== -"@tauri-apps/cli-darwin-x64@1.4.0": - version "1.4.0" - resolved "https://registry.yarnpkg.com/@tauri-apps/cli-darwin-x64/-/cli-darwin-x64-1.4.0.tgz#dd1472460550d0aa0ec6e699b073be2d77e5b962" - integrity sha512-ov/F6Zr+dg9B0PtRu65stFo2G0ow2TUlneqYYrkj+vA3n+moWDHfVty0raDjMLQbQt3rv3uayFMXGPMgble9OA== +"@tauri-apps/cli-darwin-x64@1.5.2": + version "1.5.2" + resolved "https://registry.yarnpkg.com/@tauri-apps/cli-darwin-x64/-/cli-darwin-x64-1.5.2.tgz#d2251c0a1c3782645b90dd0c753b30a44d98ef6f" + integrity sha512-8Jsl+EKBGdBoRUIR5ohjiTV6uG+pFpkNwHB4WaOzzR//v6p0lGULk2ohPIjJxhoQIFIN9oBd8bsSSNbZO/57/g== -"@tauri-apps/cli-linux-arm-gnueabihf@1.4.0": - version "1.4.0" - resolved "https://registry.yarnpkg.com/@tauri-apps/cli-linux-arm-gnueabihf/-/cli-linux-arm-gnueabihf-1.4.0.tgz#325e90e47d260ba71a499850ce769b5a6bdfd48d" - integrity sha512-zwjbiMncycXDV7doovymyKD7sCg53ouAmfgpUqEBOTY3vgBi9TwijyPhJOqoG5vUVWhouNBC08akGmE4dja15g== +"@tauri-apps/cli-linux-arm-gnueabihf@1.5.2": + version "1.5.2" + resolved "https://registry.yarnpkg.com/@tauri-apps/cli-linux-arm-gnueabihf/-/cli-linux-arm-gnueabihf-1.5.2.tgz#0fb25b4842195f425084be93524b2e7d11459b58" + integrity sha512-oWzcQtZogchdCSdQ+eEbDJHjJO9BGPO9EZNfvI2u3JzS/hJj4wCwnGHvZGI4jJ/6cnmcNvtt9ZftYYN4rpQW7A== -"@tauri-apps/cli-linux-arm64-gnu@1.4.0": - version "1.4.0" - resolved "https://registry.yarnpkg.com/@tauri-apps/cli-linux-arm64-gnu/-/cli-linux-arm64-gnu-1.4.0.tgz#b5d8f5cba3f8f7c7d44d071681f0ab0a37f2c46e" - integrity sha512-5MCBcziqXC72mMXnkZU68mutXIR6zavDxopArE2gQtK841IlE06bIgtLi0kUUhlFJk2nhPRgiDgdLbrPlyt7fw== +"@tauri-apps/cli-linux-arm64-gnu@1.5.2": + version "1.5.2" + resolved "https://registry.yarnpkg.com/@tauri-apps/cli-linux-arm64-gnu/-/cli-linux-arm64-gnu-1.5.2.tgz#4d6d86584861b8221e9ad679989b74be495766c7" + integrity sha512-hfIUtys+SrrGEpLhQJwmL16g1FDhfObR4AGahCMqvMwA25uQKhtzRhxieO4X3k03vBeboTyJla5a2rX4TQ4lXA== -"@tauri-apps/cli-linux-arm64-musl@1.4.0": - version "1.4.0" - resolved "https://registry.yarnpkg.com/@tauri-apps/cli-linux-arm64-musl/-/cli-linux-arm64-musl-1.4.0.tgz#f805ab2ee415875900f4b456f17dc4900d2a7911" - integrity sha512-7J3pRB6n6uNYgIfCeKt2Oz8J7oSaz2s8GGFRRH2HPxuTHrBNCinzVYm68UhVpJrL3bnGkU0ziVZLsW/iaOGfUg== +"@tauri-apps/cli-linux-arm64-musl@1.5.2": + version "1.5.2" + resolved "https://registry.yarnpkg.com/@tauri-apps/cli-linux-arm64-musl/-/cli-linux-arm64-musl-1.5.2.tgz#caa1da5f21ce231dd1916f4525444a368cc4aec5" + integrity sha512-ZpFX4HyjkJHfF0geVVpq5fNjEXG8766LRg/BL4/wKy8MNbqcc/aW3sLEpVj0GvdulxOnd2trDb1FJdZ206Kp8g== -"@tauri-apps/cli-linux-x64-gnu@1.4.0": - version "1.4.0" - resolved "https://registry.yarnpkg.com/@tauri-apps/cli-linux-x64-gnu/-/cli-linux-x64-gnu-1.4.0.tgz#d3f5e69c22420c7ac9e4021b7a94bce2e48cb45d" - integrity sha512-Zh5gfAJxOv5AVWxcwuueaQ2vIAhlg0d6nZui6nMyfIJ8dbf3aZQ5ZzP38sYow5h/fbvgL+3GSQxZRBIa3c2E1w== +"@tauri-apps/cli-linux-x64-gnu@1.5.2": + version "1.5.2" + resolved "https://registry.yarnpkg.com/@tauri-apps/cli-linux-x64-gnu/-/cli-linux-x64-gnu-1.5.2.tgz#b8a7d75c8562fdf134abd037a4fc45c28671bd89" + integrity sha512-/kEZrDVZv1+qYpZigtLntX4s+gx7WQqp8cmxKZL5GrzAjUNSTnfWK5VL7o0lYm09QBJAdTvjcJu2aPzNHLDS+Q== -"@tauri-apps/cli-linux-x64-musl@1.4.0": - version "1.4.0" - resolved "https://registry.yarnpkg.com/@tauri-apps/cli-linux-x64-musl/-/cli-linux-x64-musl-1.4.0.tgz#2e7f718272ffdd9ace80f57a35023ba0c74767ad" - integrity sha512-OLAYoICU3FaYiTdBsI+lQTKnDHeMmFMXIApN0M+xGiOkoIOQcV9CConMPjgmJQ867+NHRNgUGlvBEAh9CiJodQ== +"@tauri-apps/cli-linux-x64-musl@1.5.2": + version "1.5.2" + resolved "https://registry.yarnpkg.com/@tauri-apps/cli-linux-x64-musl/-/cli-linux-x64-musl-1.5.2.tgz#6309639fd01a3771637aa3e6800fc06b5458d017" + integrity sha512-vOrTqfW7NZLYmB1ZXjEq9JC8Z5knIHVGltN3jfyq9UY+tu7d6jNaSHuDdsVHLaKIRQajTHz+5cphDMoL+6/MUQ== -"@tauri-apps/cli-win32-arm64-msvc@1.4.0": - version "1.4.0" - resolved "https://registry.yarnpkg.com/@tauri-apps/cli-win32-arm64-msvc/-/cli-win32-arm64-msvc-1.4.0.tgz#85cdb52a06feb92da785def4d02512099464525e" - integrity sha512-gZ05GENFbI6CB5MlOUsLlU0kZ9UtHn9riYtSXKT6MYs8HSPRffPHaHSL0WxsJweWh9nR5Hgh/TUU8uW3sYCzCg== +"@tauri-apps/cli-win32-arm64-msvc@1.5.2": + version "1.5.2" + resolved "https://registry.yarnpkg.com/@tauri-apps/cli-win32-arm64-msvc/-/cli-win32-arm64-msvc-1.5.2.tgz#7a6b89ee7d992e51084f1427e3885dfe5bcf5bae" + integrity sha512-PCAIxH8TvIy1PlJK2qrdwpRCa7pZV648whRhmoLwj9lvn9PR4+vwuUWhSTXmp1ISHWZm/mEJpYuVq0ZxJDQKZQ== -"@tauri-apps/cli-win32-ia32-msvc@1.4.0": - version "1.4.0" - resolved "https://registry.yarnpkg.com/@tauri-apps/cli-win32-ia32-msvc/-/cli-win32-ia32-msvc-1.4.0.tgz#0b7c921204058215aec9a5a00f735e73909bd330" - integrity sha512-JsetT/lTx/Zq98eo8T5CiRyF1nKeX04RO8JlJrI3ZOYsZpp/A5RJvMd/szQ17iOzwiHdge+tx7k2jHysR6oBlQ== +"@tauri-apps/cli-win32-ia32-msvc@1.5.2": + version "1.5.2" + resolved "https://registry.yarnpkg.com/@tauri-apps/cli-win32-ia32-msvc/-/cli-win32-ia32-msvc-1.5.2.tgz#17e02c30e29596d815f0ad0458a11bc752502921" + integrity sha512-0rCXZC/9qyWZI2cgVnsT4JEjcxjQcZlrZjaSwhGynPUMkIUUBsWDimzkQeOP8abw5j/kLS2QPQRHAHqd0IF6Rg== -"@tauri-apps/cli-win32-x64-msvc@1.4.0": - version "1.4.0" - resolved "https://registry.yarnpkg.com/@tauri-apps/cli-win32-x64-msvc/-/cli-win32-x64-msvc-1.4.0.tgz#23abe3f08c0df89111c29602f91c21a23577b908" - integrity sha512-z8Olcnwp5aYhzqUAarFjqF+oELCjuYWnB2HAJHlfsYNfDCAORY5kct3Fklz8PSsubC3U2EugWn8n42DwnThurg== +"@tauri-apps/cli-win32-x64-msvc@1.5.2": + version "1.5.2" + resolved "https://registry.yarnpkg.com/@tauri-apps/cli-win32-x64-msvc/-/cli-win32-x64-msvc-1.5.2.tgz#bec591ca7c8a6ed77f705da73c0213c454582e5a" + integrity sha512-HrOwIujKTql8yUOvR+IEGW/SXwMwPrGWrcM35cDfCxpkLH6h3F5i4JtRqYTAiFdSfTk1J2rcFVQXfFJYIDntnA== "@tauri-apps/cli@^1.0.5", "@tauri-apps/cli@^1.2.2": - version "1.4.0" - resolved "https://registry.yarnpkg.com/@tauri-apps/cli/-/cli-1.4.0.tgz#72732ae61e6b7d097e44a8a2ef5f211b2d01d98b" - integrity sha512-VXYr2i2iVFl98etQSQsqLzXgX96bnWiNZd1YADgatqwy/qecbd6Kl5ZAPB5R4ynsgE8A1gU7Fbzh7dCEQYFfmA== + version "1.5.2" + resolved "https://registry.yarnpkg.com/@tauri-apps/cli/-/cli-1.5.2.tgz#c945eed048774bf5a7418cabed5b63e7048b4eb4" + integrity sha512-x4rPinrdyWLdTU5TbV7wrXudOyMilv0nmi1rngm/jwN3MmZdAj5J2xaS2rYtA8BU3oM/SE34qQwYxv1a2sM9ug== optionalDependencies: - "@tauri-apps/cli-darwin-arm64" "1.4.0" - "@tauri-apps/cli-darwin-x64" "1.4.0" - "@tauri-apps/cli-linux-arm-gnueabihf" "1.4.0" - "@tauri-apps/cli-linux-arm64-gnu" "1.4.0" - "@tauri-apps/cli-linux-arm64-musl" "1.4.0" - "@tauri-apps/cli-linux-x64-gnu" "1.4.0" - "@tauri-apps/cli-linux-x64-musl" "1.4.0" - "@tauri-apps/cli-win32-arm64-msvc" "1.4.0" - "@tauri-apps/cli-win32-ia32-msvc" "1.4.0" - "@tauri-apps/cli-win32-x64-msvc" "1.4.0" + "@tauri-apps/cli-darwin-arm64" "1.5.2" + "@tauri-apps/cli-darwin-x64" "1.5.2" + "@tauri-apps/cli-linux-arm-gnueabihf" "1.5.2" + "@tauri-apps/cli-linux-arm64-gnu" "1.5.2" + "@tauri-apps/cli-linux-arm64-musl" "1.5.2" + "@tauri-apps/cli-linux-x64-gnu" "1.5.2" + "@tauri-apps/cli-linux-x64-musl" "1.5.2" + "@tauri-apps/cli-win32-arm64-msvc" "1.5.2" + "@tauri-apps/cli-win32-ia32-msvc" "1.5.2" + "@tauri-apps/cli-win32-x64-msvc" "1.5.2" "@tauri-apps/tauri-forage@^1.0.0-beta.2": version "1.0.0-beta.2" @@ -4625,14 +4645,14 @@ "@types/estree" "*" "@types/aria-query@^5.0.1": - version "5.0.1" - resolved "https://registry.yarnpkg.com/@types/aria-query/-/aria-query-5.0.1.tgz#3286741fb8f1e1580ac28784add4c7a1d49bdfbc" - integrity sha512-XTIieEY+gvJ39ChLcB4If5zHtPxt3Syj5rgZR+e1ctpmK8NjPf0zFqsz4JpLJT0xla9GFDKjy8Cpu331nrmE1Q== + version "5.0.2" + resolved "https://registry.yarnpkg.com/@types/aria-query/-/aria-query-5.0.2.tgz#6f1225829d89794fd9f891989c9ce667422d7f64" + integrity sha512-PHKZuMN+K5qgKIWhBodXzQslTo5P+K/6LqeKXS6O/4liIDdZqaX5RXrCK++LAw+y/nptN48YmUMFiQHRSWYwtQ== "@types/babel__core@^7.0.0", "@types/babel__core@^7.1.14": - version "7.20.1" - resolved "https://registry.yarnpkg.com/@types/babel__core/-/babel__core-7.20.1.tgz#916ecea274b0c776fec721e333e55762d3a9614b" - integrity sha512-aACu/U/omhdk15O4Nfb+fHgH/z3QsfQzpnvRZhYhThms83ZnAOZz7zZAWO7mn2yyNQaA4xTO8GLK3uqFU4bYYw== + version "7.20.2" + resolved "https://registry.yarnpkg.com/@types/babel__core/-/babel__core-7.20.2.tgz#215db4f4a35d710256579784a548907237728756" + integrity sha512-pNpr1T1xLUc2l3xJKuPtsEky3ybxN3m4fJkknfIpTCTfIZCDW57oAg+EfCgIIp2rvCe0Wn++/FfodDS4YXxBwA== dependencies: "@babel/parser" "^7.20.7" "@babel/types" "^7.20.7" @@ -4641,24 +4661,24 @@ "@types/babel__traverse" "*" "@types/babel__generator@*": - version "7.6.4" - resolved "https://registry.yarnpkg.com/@types/babel__generator/-/babel__generator-7.6.4.tgz#1f20ce4c5b1990b37900b63f050182d28c2439b7" - integrity sha512-tFkciB9j2K755yrTALxD44McOrk+gfpIpvC3sxHjRawj6PfnQxrse4Clq5y/Rq+G3mrBurMax/lG8Qn2t9mSsg== + version "7.6.5" + resolved "https://registry.yarnpkg.com/@types/babel__generator/-/babel__generator-7.6.5.tgz#281f4764bcbbbc51fdded0f25aa587b4ce14da95" + integrity sha512-h9yIuWbJKdOPLJTbmSpPzkF67e659PbQDba7ifWm5BJ8xTv+sDmS7rFmywkWOvXedGTivCdeGSIIX8WLcRTz8w== dependencies: "@babel/types" "^7.0.0" "@types/babel__template@*": - version "7.4.1" - resolved "https://registry.yarnpkg.com/@types/babel__template/-/babel__template-7.4.1.tgz#3d1a48fd9d6c0edfd56f2ff578daed48f36c8969" - integrity sha512-azBFKemX6kMg5Io+/rdGT0dkGreboUVR0Cdm3fz9QJWpaQGJRQXl7C+6hOTCZcMll7KFyEQpgbYI2lHdsS4U7g== + version "7.4.2" + resolved "https://registry.yarnpkg.com/@types/babel__template/-/babel__template-7.4.2.tgz#843e9f1f47c957553b0c374481dc4772921d6a6b" + integrity sha512-/AVzPICMhMOMYoSx9MoKpGDKdBRsIXMNByh1PXSZoa+v6ZoLa8xxtsT/uLQ/NJm0XVAWl/BvId4MlDeXJaeIZQ== dependencies: "@babel/parser" "^7.1.0" "@babel/types" "^7.0.0" "@types/babel__traverse@*", "@types/babel__traverse@^7.0.4", "@types/babel__traverse@^7.0.6": - version "7.20.1" - resolved "https://registry.yarnpkg.com/@types/babel__traverse/-/babel__traverse-7.20.1.tgz#dd6f1d2411ae677dcb2db008c962598be31d6acf" - integrity sha512-MitHFXnhtgwsGZWtT68URpOvLN4EREih1u3QtQiN4VdAxWKRVvGCSvw/Qth0M0Qq3pJpnGOu5JaM/ydK7OGbqg== + version "7.20.2" + resolved "https://registry.yarnpkg.com/@types/babel__traverse/-/babel__traverse-7.20.2.tgz#4ddf99d95cfdd946ff35d2b65c978d9c9bf2645d" + integrity sha512-ojlGK1Hsfce93J0+kn3H5R73elidKUaZonirN33GSmgTUMpzI/MIFfSpF3haANe3G1bEBS9/9/QEqwTzwqFsKw== dependencies: "@babel/types" "^7.20.7" @@ -4668,24 +4688,24 @@ integrity sha512-ubLURWoc4tCw/8Yds0P3CE9cBG5q+aoycwWBiXXx4gp7XPYZy9ch0L9+Pv6osSoSRgvuQNqJdlwEhP5QhKKl6w== "@types/body-parser@*": - version "1.19.2" - resolved "https://registry.yarnpkg.com/@types/body-parser/-/body-parser-1.19.2.tgz#aea2059e28b7658639081347ac4fab3de166e6f0" - integrity sha512-ALYone6pm6QmwZoAgeyNksccT9Q4AWZQ6PvfwR37GT6r6FWUPguq6sUmNGSMV2Wr761oQoBxwGGa6DR5o1DC9g== + version "1.19.3" + resolved "https://registry.yarnpkg.com/@types/body-parser/-/body-parser-1.19.3.tgz#fb558014374f7d9e56c8f34bab2042a3a07d25cd" + integrity sha512-oyl4jvAfTGX9Bt6Or4H9ni1Z447/tQuxnZsytsCaExKlmJiU8sFgnIBRzJUpKwB5eWn9HuBYlUlVA74q/yN0eQ== dependencies: "@types/connect" "*" "@types/node" "*" "@types/bonjour@^3.5.9": - version "3.5.10" - resolved "https://registry.yarnpkg.com/@types/bonjour/-/bonjour-3.5.10.tgz#0f6aadfe00ea414edc86f5d106357cda9701e275" - integrity sha512-p7ienRMiS41Nu2/igbJxxLDWrSZ0WxM8UQgCeO9KhoVF7cOVFkrKsiDr1EsJIla8vV3oEEjGcz11jc5yimhzZw== + version "3.5.11" + resolved "https://registry.yarnpkg.com/@types/bonjour/-/bonjour-3.5.11.tgz#fbaa46a1529ea5c5e46cde36e4be6a880db55b84" + integrity sha512-isGhjmBtLIxdHBDl2xGwUzEM8AOyOvWsADWq7rqirdi/ZQoHnLWErHvsThcEzTX8juDRiZtzp2Qkv5bgNh6mAg== dependencies: "@types/node" "*" "@types/bs58@^4.0.1": - version "4.0.1" - resolved "https://registry.yarnpkg.com/@types/bs58/-/bs58-4.0.1.tgz#3d51222aab067786d3bc3740a84a7f5a0effaa37" - integrity sha512-yfAgiWgVLjFCmRv8zAcOIHywYATEwiTVccTLnRp6UxTNavT55M9d/uhK3T03St/+8/z/wW+CRjGKUNmEqoHHCA== + version "4.0.2" + resolved "https://registry.yarnpkg.com/@types/bs58/-/bs58-4.0.2.tgz#2f266fb45d19aab4028a9488e7941aa39a537e9a" + integrity sha512-ytn3FpvB9LRQGxK2vMHD12tgmUhx7TUTbA8A2VbhDVC0eqzgfvoU1rYBOeCl7hJDtTMaOg/Sl9xIOQhkY0G4uw== dependencies: base-x "^3.0.6" @@ -4705,24 +4725,24 @@ "@types/node" "*" "@types/d3-array@^3.0.3": - version "3.0.7" - resolved "https://registry.yarnpkg.com/@types/d3-array/-/d3-array-3.0.7.tgz#b128a0c0b0d9481d3281df47de0955730db384a1" - integrity sha512-4/Q0FckQ8TBjsB0VdGFemJOG8BLXUB2KKlL0VmZ+eOYeOnTb/wDRQqYWpBmQ6IlvWkXwkYiot+n9Px2aTJ7zGQ== + version "3.0.8" + resolved "https://registry.yarnpkg.com/@types/d3-array/-/d3-array-3.0.8.tgz#a5d0687a12b48142c6f124d5e3796054e91bcea5" + integrity sha512-2xAVyAUgaXHX9fubjcCbGAUOqYfRJN1em1EKR2HfzWBpObZhwfnZKvofTN4TplMqJdFQao61I+NVSai/vnBvDQ== "@types/d3-color@*": - version "3.1.0" - resolved "https://registry.yarnpkg.com/@types/d3-color/-/d3-color-3.1.0.tgz#6594da178ded6c7c3842f3cc0ac84b156f12f2d4" - integrity sha512-HKuicPHJuvPgCD+np6Se9MQvS6OCbJmOjGvylzMJRlDwUXjKTTXs6Pwgk79O09Vj/ho3u1ofXnhFOaEWWPrlwA== + version "3.1.1" + resolved "https://registry.yarnpkg.com/@types/d3-color/-/d3-color-3.1.1.tgz#43a2aa7836fdae19ce32fabe97742e787f4b2e08" + integrity sha512-CSAVrHAtM9wfuLJ2tpvvwCU/F22sm7rMHNN+yh9D6O6hyAms3+O0cgMpC1pm6UEUMOntuZC8bMt74PteiDUdCg== "@types/d3-color@^1": - version "1.4.2" - resolved "https://registry.yarnpkg.com/@types/d3-color/-/d3-color-1.4.2.tgz#944f281d04a0f06e134ea96adbb68303515b2784" - integrity sha512-fYtiVLBYy7VQX+Kx7wU/uOIkGQn8aAEY8oWMoyja3N4dLd8Yf6XgSIR/4yWvMuveNOH5VShnqCgRqqh/UNanBA== + version "1.4.3" + resolved "https://registry.yarnpkg.com/@types/d3-color/-/d3-color-1.4.3.tgz#147ef0d582ef7c0ee2b4e4a24b862af553dcc54b" + integrity sha512-jcHMwBcuuQ1LPt43jdbOhdOFczfDfhzvAZ1+1L0KiXPv4VqGsWAltxfxUDvtSuIMsvTZ2eeua+tOtxI6qqxYUg== "@types/d3-dsv@*": - version "3.0.2" - resolved "https://registry.yarnpkg.com/@types/d3-dsv/-/d3-dsv-3.0.2.tgz#0504c17388714e28a601dcaaf400147271ea14c2" - integrity sha512-DooW5AOkj4AGmseVvbwHvwM/Ltu0Ks0WrhG6r5FG9riHT5oUUTHz6xHsHqJSVU8ZmPkOqlUEY2obS5C9oCIi2g== + version "3.0.4" + resolved "https://registry.yarnpkg.com/@types/d3-dsv/-/d3-dsv-3.0.4.tgz#f2706ed90f72e8c16d3858b3c3060dfd47b7f161" + integrity sha512-YxfUVJ55HxR8oq88136w09mBMPNhgH7PZjteq72onWXWOohGif/cLQnQv8V4A5lEGjXF04LhwSTpmzpY9wyVyA== "@types/d3-ease@^3.0.0": version "3.0.0" @@ -4730,37 +4750,37 @@ integrity sha512-aMo4eaAOijJjA6uU+GIeW018dvy9+oH5Y2VPPzjjfxevvGQ/oRDs+tfYC9b50Q4BygRR8yE2QCLsrT0WtAVseA== "@types/d3-fetch@^3.0.1": - version "3.0.3" - resolved "https://registry.yarnpkg.com/@types/d3-fetch/-/d3-fetch-3.0.3.tgz#ae55cc49bd71b448182deff0cc4b448eff1f9b33" - integrity sha512-/EsDKRiQkby3Z/8/AiZq8bsuLDo/tYHnNIZkUpSeEHWV7fHUl6QFBjvMPbhkKGk9jZutzfOkGygCV7eR/MkcXA== + version "3.0.4" + resolved "https://registry.yarnpkg.com/@types/d3-fetch/-/d3-fetch-3.0.4.tgz#e54ab1286f859c8f0edb261c3ce4b155a3232c37" + integrity sha512-RleYajubALkGjrvatxWhlygfvB1KNF0Uzz9guRUeeA+M/2B7l8rxObYdktaX9zU1st04lMCHjZWe4vbl+msH2Q== dependencies: "@types/d3-dsv" "*" "@types/d3-geo@^1": - version "1.12.4" - resolved "https://registry.yarnpkg.com/@types/d3-geo/-/d3-geo-1.12.4.tgz#7fbd90b6fdb25e34ce4f557c0de73360d662850f" - integrity sha512-lNDaAuOaML6w2d1XE0Txr5YOXLBQSF1q2IU6eXh/u1TTPQSm2Ah+TMIub1+CIMq8J/7DOzi5Cr8/yHqjNvqLKA== + version "1.12.5" + resolved "https://registry.yarnpkg.com/@types/d3-geo/-/d3-geo-1.12.5.tgz#49eeec89e0816c5e47dd2faca65072948bff39ce" + integrity sha512-YRqBbphH5XZuNtsVsjWKDZZYparpwxDlEiQSdROePXJYZ+Ibi4UwCkSA3hIH484c/kvUv8Dpx5ViefKTLsC1Ow== dependencies: "@types/geojson" "*" "@types/d3-geo@^3.0.2": - version "3.0.4" - resolved "https://registry.yarnpkg.com/@types/d3-geo/-/d3-geo-3.0.4.tgz#fa38f02256c3023ea3b88cb011cff1426eb7ff52" - integrity sha512-kmUK8rVVIBPKJ1/v36bk2aSgwRj2N/ZkjDT+FkMT5pgedZoPlyhaG62J+9EgNIgUXE6IIL0b7bkLxCzhE6U4VQ== + version "3.0.5" + resolved "https://registry.yarnpkg.com/@types/d3-geo/-/d3-geo-3.0.5.tgz#4407202458b306c97c90c9a5271b3b7e1fc687af" + integrity sha512-ysEEU93Wv9p2UZBxTK3kUP7veHgyhTA0qYtI7bxK5EMXb3JxGv0D4IH54PxprAF26n+uHci24McVmzwIdLgvgQ== dependencies: "@types/geojson" "*" "@types/d3-interpolate@^1": - version "1.4.2" - resolved "https://registry.yarnpkg.com/@types/d3-interpolate/-/d3-interpolate-1.4.2.tgz#88902a205f682773a517612299a44699285eed7b" - integrity sha512-ylycts6llFf8yAEs1tXzx2loxxzDZHseuhPokrqKprTQSTcD3JbJI1omZP1rphsELZO3Q+of3ff0ZS7+O6yVzg== + version "1.4.3" + resolved "https://registry.yarnpkg.com/@types/d3-interpolate/-/d3-interpolate-1.4.3.tgz#a4d58d84b0b0feb5a6e25de4df4e1e9bb647bcb3" + integrity sha512-eosrP1F0BPnpok+3/dK12/ZusskELe2mZBJfuynIhTw6oCpNcBsVHEJ2dyfTMkm1mv+OX7vQ4G89sYqh9+jHWg== dependencies: "@types/d3-color" "^1" "@types/d3-interpolate@^3.0.1": - version "3.0.1" - resolved "https://registry.yarnpkg.com/@types/d3-interpolate/-/d3-interpolate-3.0.1.tgz#e7d17fa4a5830ad56fe22ce3b4fac8541a9572dc" - integrity sha512-jx5leotSeac3jr0RePOH1KdR9rISG91QIE4Q2PYTu4OymLTZfA3SrnURSLzKH48HmXVUru50b8nje4E79oQSQw== + version "3.0.2" + resolved "https://registry.yarnpkg.com/@types/d3-interpolate/-/d3-interpolate-3.0.2.tgz#b5928cca26fc20dbfe689ff37d62f7bac434c74e" + integrity sha512-zAbCj9lTqW9J9PlF4FwnvEjXZUy75NQqPm7DMHZXuxCFTpuTrdK2NMYGQekf4hlasL78fCYOLu4EE3/tXElwow== dependencies: "@types/d3-color" "*" @@ -4770,28 +4790,28 @@ integrity sha512-0g/A+mZXgFkQxN3HniRDbXMN79K3CdTpLsevj+PXiTcb2hVyvkZUBg37StmgCQkaD84cUJ4uaDAWq7UJOQy2Tg== "@types/d3-scale@^4.0.1", "@types/d3-scale@^4.0.2": - version "4.0.4" - resolved "https://registry.yarnpkg.com/@types/d3-scale/-/d3-scale-4.0.4.tgz#3c5e2263eea5a3670cd91043b9f4d150a94c43f1" - integrity sha512-eq1ZeTj0yr72L8MQk6N6heP603ubnywSDRfNpi5enouR112HzGLS6RIvExCzZTraFF4HdzNpJMwA/zGiMoHUUw== + version "4.0.5" + resolved "https://registry.yarnpkg.com/@types/d3-scale/-/d3-scale-4.0.5.tgz#daa4faa5438315a37a1f5eb1bcdc5aeb3d3e5a2d" + integrity sha512-w/C++3W394MHzcLKO2kdsIn5KKNTOqeQVzyPSGPLzQbkPw/jpeaGtSRlakcKevGgGsjJxGsbqS0fPrVFDbHrDA== dependencies: "@types/d3-time" "*" "@types/d3-selection@^1": - version "1.4.3" - resolved "https://registry.yarnpkg.com/@types/d3-selection/-/d3-selection-1.4.3.tgz#36928bbe64eb8e0bbcbaa01fb05c21ff6c71fa93" - integrity sha512-GjKQWVZO6Sa96HiKO6R93VBE8DUW+DDkFpIMf9vpY5S78qZTlRRSNUsHr/afDpF7TvLDV7VxrUFOWW7vdIlYkA== + version "1.4.4" + resolved "https://registry.yarnpkg.com/@types/d3-selection/-/d3-selection-1.4.4.tgz#7d1f4c75678ec7c04b42653438000a9afedf769c" + integrity sha512-nbt9x1vP2C1Wz0JxZ2aSYFvJQIukc1QdL1zGHe5O989bDHpgrVz1mgmA/8n+vapb7g3mjUPe2YoLrqEalmtxKA== "@types/d3-shape@^3.1.0": - version "3.1.2" - resolved "https://registry.yarnpkg.com/@types/d3-shape/-/d3-shape-3.1.2.tgz#a3d421d8b0bc0c6c67cb3f4b4471ddc133cb0117" - integrity sha512-NN4CXr3qeOUNyK5WasVUV8NCSAx/CRVcwcb0BuuS1PiTqwIm6ABi1SyasLZ/vsVCFDArF+W4QiGzSry1eKYQ7w== + version "3.1.3" + resolved "https://registry.yarnpkg.com/@types/d3-shape/-/d3-shape-3.1.3.tgz#20eee7aad70f2562041af18e305fec6b48fd511d" + integrity sha512-cHMdIq+rhF5IVwAV7t61pcEXfEHsEsrbBUPkFGBwTXuxtTAkBBrnrNA8++6OWm3jwVsXoZYQM8NEekg6CPJ3zw== dependencies: "@types/d3-path" "*" "@types/d3-time@*", "@types/d3-time@^3.0.0": - version "3.0.0" - resolved "https://registry.yarnpkg.com/@types/d3-time/-/d3-time-3.0.0.tgz#e1ac0f3e9e195135361fa1a1d62f795d87e6e819" - integrity sha512-sZLCdHvBUcNby1cB6Fd3ZBrABbjz3v1Vm90nysCQ6Vt7vd6e/h9Lt7SiJUoEX0l4Dzc7P5llKyhqSi1ycSf1Hg== + version "3.0.1" + resolved "https://registry.yarnpkg.com/@types/d3-time/-/d3-time-3.0.1.tgz#f0c8f9037632cc4511ae55e7e1459dcb95fb3619" + integrity sha512-5j/AnefKAhCw4HpITmLDTPlf4vhi8o/dES+zbegfPb7LaGfNyqkLxBR6E+4yvTAgnJLmhe80EXFMzUs38fw4oA== "@types/d3-timer@^3.0.0": version "3.0.0" @@ -4799,47 +4819,47 @@ integrity sha512-HNB/9GHqu7Fo8AQiugyJbv6ZxYz58wef0esl4Mv828w1ZKpAshw/uFWVDUcIB9KKFeFKoxS3cHY07FFgtTRZ1g== "@types/d3-zoom@^1": - version "1.8.4" - resolved "https://registry.yarnpkg.com/@types/d3-zoom/-/d3-zoom-1.8.4.tgz#c36181cef6d9458641d555d4375649d0d7acaabc" - integrity sha512-K+6jCM9llyC5U4WvkmiXbCoOIuUX03Wi72C/L9PMPVxymWDaxTHzDgHD/HYlEyDRGiVp7D77m7XPcD/m/TRDrw== + version "1.8.5" + resolved "https://registry.yarnpkg.com/@types/d3-zoom/-/d3-zoom-1.8.5.tgz#7461f8cb2201e7e4fee3e6c18db1d5d58ef993e0" + integrity sha512-h79/ayrjJUaXNuTvO1L4pAwBCe1kzLywoE1zjRmHsFftxtHzWco5od9Lv7FCtcwuhSOp1SKS2q3RWolcdJhLOw== dependencies: "@types/d3-interpolate" "^1" "@types/d3-selection" "^1" "@types/debug@^4.0.0": - version "4.1.8" - resolved "https://registry.yarnpkg.com/@types/debug/-/debug-4.1.8.tgz#cef723a5d0a90990313faec2d1e22aee5eecb317" - integrity sha512-/vPO1EPOs306Cvhwv7KfVfYvOJqA/S/AXjaHQiJboCZzcNDb+TIJFN9/2C9DZ//ijSKWioNyUxD792QmDJ+HKQ== + version "4.1.9" + resolved "https://registry.yarnpkg.com/@types/debug/-/debug-4.1.9.tgz#906996938bc672aaf2fb8c0d3733ae1dda05b005" + integrity sha512-8Hz50m2eoS56ldRlepxSBa6PWEVCtzUo/92HgLc2qTMnotJNIm7xP+UZhyWoYsyOdd5dxZ+NZLb24rsKyFs2ow== dependencies: "@types/ms" "*" "@types/eslint-scope@^3.7.3": - version "3.7.4" - resolved "https://registry.yarnpkg.com/@types/eslint-scope/-/eslint-scope-3.7.4.tgz#37fc1223f0786c39627068a12e94d6e6fc61de16" - integrity sha512-9K4zoImiZc3HlIp6AVUDE4CWYx22a+lhSZMYNpbjW04+YF0KWj4pJXnEMjdnFTiQibFFmElcsasJXDbdI/EPhA== + version "3.7.5" + resolved "https://registry.yarnpkg.com/@types/eslint-scope/-/eslint-scope-3.7.5.tgz#e28b09dbb1d9d35fdfa8a884225f00440dfc5a3e" + integrity sha512-JNvhIEyxVW6EoMIFIvj93ZOywYFatlpu9deeH6eSx6PE3WHYvHaQtmHmQeNw7aA81bYGBPPQqdtBm6b1SsQMmA== dependencies: "@types/eslint" "*" "@types/estree" "*" "@types/eslint@*": - version "8.44.2" - resolved "https://registry.yarnpkg.com/@types/eslint/-/eslint-8.44.2.tgz#0d21c505f98a89b8dd4d37fa162b09da6089199a" - integrity sha512-sdPRb9K6iL5XZOmBubg8yiFp5yS/JdUDQsq5e6h95km91MCYMuvp7mh1fjPEYUhvHepKpZOjnEaMBR4PxjWDzg== + version "8.44.3" + resolved "https://registry.yarnpkg.com/@types/eslint/-/eslint-8.44.3.tgz#96614fae4875ea6328f56de38666f582d911d962" + integrity sha512-iM/WfkwAhwmPff3wZuPLYiHX18HI24jU8k1ZSH7P8FHwxTjZ2P6CoX2wnF43oprR+YXJM6UUxATkNvyv/JHd+g== dependencies: "@types/estree" "*" "@types/json-schema" "*" "@types/estree-jsx@^1.0.0": - version "1.0.0" - resolved "https://registry.yarnpkg.com/@types/estree-jsx/-/estree-jsx-1.0.0.tgz#7bfc979ab9f692b492017df42520f7f765e98df1" - integrity sha512-3qvGd0z8F2ENTGr/GG1yViqfiKmRfrXVx5sJyHGFu3z7m5g5utCQtGp/g29JnjflhtQJBv1WDQukHiT58xPcYQ== + version "1.0.1" + resolved "https://registry.yarnpkg.com/@types/estree-jsx/-/estree-jsx-1.0.1.tgz#cc26c8566c67f27795bbc025f57cf0499d7cedd6" + integrity sha512-sHyakZlAezNFxmYRo0fopDZW+XvK6ipeZkkp5EAOLjdPfZp8VjZBJ67vSRI99RSCAoqXVmXOHS4fnWoxpuGQtQ== dependencies: "@types/estree" "*" "@types/estree@*", "@types/estree@^1.0.0": - version "1.0.1" - resolved "https://registry.yarnpkg.com/@types/estree/-/estree-1.0.1.tgz#aa22750962f3bf0e79d753d3cc067f010c95f194" - integrity sha512-LG4opVs2ANWZ1TJoKc937iMmNstM/d0ae1vNbnBvBhqCSezgVUOzcLCqbI5elV8Vy6WKwKjaqR+zO9VKirBBCA== + version "1.0.2" + resolved "https://registry.yarnpkg.com/@types/estree/-/estree-1.0.2.tgz#ff02bc3dc8317cd668dfec247b750ba1f1d62453" + integrity sha512-VeiPZ9MMwXjO32/Xu7+OwflfmeoRwkE/qzndw42gGtgJwZopBnzy2gD//NN1+go1mADzkDcqf/KnFRSjTJ8xJA== "@types/estree@0.0.39": version "0.0.39" @@ -4852,9 +4872,9 @@ integrity sha512-CuPgU6f3eT/XgKKPqKd/gLZV1Xmvf1a2R5POBOGQa6uv82xpls89HU5zKeVoyR8XzHd1RGNOlQlvUe3CFkjWNQ== "@types/express-serve-static-core@*", "@types/express-serve-static-core@^4.17.33": - version "4.17.36" - resolved "https://registry.yarnpkg.com/@types/express-serve-static-core/-/express-serve-static-core-4.17.36.tgz#baa9022119bdc05a4adfe740ffc97b5f9360e545" - integrity sha512-zbivROJ0ZqLAtMzgzIUC4oNqDG9iF0lSsAqpOD9kbs5xcIM3dTiyuHvBc7R8MtWBp3AAWGaovJa+wzWPjLYW7Q== + version "4.17.37" + resolved "https://registry.yarnpkg.com/@types/express-serve-static-core/-/express-serve-static-core-4.17.37.tgz#7e4b7b59da9142138a2aaa7621f5abedce8c7320" + integrity sha512-ZohaCYTgGFcOP7u6aJOhY9uIZQgZ2vxC2yWoArY+FeDXlqeH66ZVBjgvg+RLVAS/DWNq4Ap9ZXu1+SUQiiWYMg== dependencies: "@types/node" "*" "@types/qs" "*" @@ -4862,9 +4882,9 @@ "@types/send" "*" "@types/express@*", "@types/express@^4.17.13", "@types/express@^4.7.0": - version "4.17.17" - resolved "https://registry.yarnpkg.com/@types/express/-/express-4.17.17.tgz#01d5437f6ef9cfa8668e616e13c2f2ac9a491ae4" - integrity sha512-Q4FmmuLGBG58btUnfS1c1r/NQdlp3DMfGDGig8WhfpA2YRUtEkxAjkZb0yvplJGYdF1fsQ81iMDcH24sSCNC/Q== + version "4.17.18" + resolved "https://registry.yarnpkg.com/@types/express/-/express-4.17.18.tgz#efabf5c4495c1880df1bdffee604b143b29c4a95" + integrity sha512-Sxv8BSLLgsBYmcnGdGjjEjqET2U+AKAdCRODmMiq02FgjwuV75Ut85DRpvFjyw/Mk0vgUOliGRU0UUmuuZHByQ== dependencies: "@types/body-parser" "*" "@types/express-serve-static-core" "^4.17.33" @@ -4879,14 +4899,14 @@ "@types/node" "*" "@types/flat@^5.0.2": - version "5.0.2" - resolved "https://registry.yarnpkg.com/@types/flat/-/flat-5.0.2.tgz#642a51a037d1f52fda082312b0e4566dc09a9f8f" - integrity sha512-3zsplnP2djeps5P9OyarTxwRpMLoe5Ash8aL9iprw0JxB+FAHjY+ifn4yZUuW4/9hqtnmor6uvjSRzJhiVbrEQ== + version "5.0.3" + resolved "https://registry.yarnpkg.com/@types/flat/-/flat-5.0.3.tgz#1f8045859a7e0955acf2a50e8c2979899e7b1801" + integrity sha512-uG/4x6EXYbq4VDsBJLNDHQAQmtRPg3x4tAXcBspxlnEknz8NiJxnHoxSiJKGNExiS00q4mJNvuEBgVA3jsDIdQ== "@types/geojson@*", "@types/geojson@^7946.0.8": - version "7946.0.10" - resolved "https://registry.yarnpkg.com/@types/geojson/-/geojson-7946.0.10.tgz#6dfbf5ea17142f7f9a043809f1cd4c448cb68249" - integrity sha512-Nmh0K3iWQJzniTuPRcJn5hxXkfB1T1pgB89SBig5PlJQU5yocazeu4jATJlaA0GYFKWMqDdvYemoSnF2pXgLVA== + version "7946.0.11" + resolved "https://registry.yarnpkg.com/@types/geojson/-/geojson-7946.0.11.tgz#012c17cb2256ad8de78560da851ab914a7b9b40e" + integrity sha512-L7A0AINMXQpVwxHJ4jxD6/XjZ4NDufaRlUJHjNIFKYUFBH1SvOW+neaqb0VTRSLW5suSrSu19ObFEFnfNcr+qg== "@types/glob@*": version "8.1.0" @@ -4905,16 +4925,16 @@ "@types/node" "*" "@types/graceful-fs@^4.1.2", "@types/graceful-fs@^4.1.3": - version "4.1.6" - resolved "https://registry.yarnpkg.com/@types/graceful-fs/-/graceful-fs-4.1.6.tgz#e14b2576a1c25026b7f02ede1de3b84c3a1efeae" - integrity sha512-Sig0SNORX9fdW+bQuTEovKj3uHcUL6LQKbCrrqb1X7J6/ReAbhCXRAhc+SMejhLELFj2QcyuxmUooZ4bt5ReSw== + version "4.1.7" + resolved "https://registry.yarnpkg.com/@types/graceful-fs/-/graceful-fs-4.1.7.tgz#30443a2e64fd51113bc3e2ba0914d47109695e2a" + integrity sha512-MhzcwU8aUygZroVwL2jeYk6JisJrPl/oov/gsgGCue9mkgl9wjGbzReYQClxiUgFDnib9FuHqTndccKeZKxTRw== dependencies: "@types/node" "*" "@types/hast@^2.0.0": - version "2.3.5" - resolved "https://registry.yarnpkg.com/@types/hast/-/hast-2.3.5.tgz#08caac88b44d0fdd04dc17a19142355f43bd8a7a" - integrity sha512-SvQi0L/lNpThgPoleH53cdjB3y9zpLlVjRbqB3rH8hx1jiRSBGAhyjV3H+URFjNVRqt2EdYNrbZE5IsGlNfpRg== + version "2.3.6" + resolved "https://registry.yarnpkg.com/@types/hast/-/hast-2.3.6.tgz#bb8b05602112a26d22868acb70c4b20984ec7086" + integrity sha512-47rJE80oqPmFdVDCD7IheXBrVdwuBgsYwoczFvKmwfo2Mzsnt+V9OONsYauFmICb6lQPpCuXYJWejBNs4pDJRg== dependencies: "@types/unist" "^2" @@ -4929,14 +4949,14 @@ integrity sha512-oh/6byDPnL1zeNXFrDXFLyZjkr1MsBG667IM792caf1L2UPOOMf65NFzjUH/ltyfwjAGfs1rsX1eftK0jC/KIg== "@types/http-errors@*": - version "2.0.1" - resolved "https://registry.yarnpkg.com/@types/http-errors/-/http-errors-2.0.1.tgz#20172f9578b225f6c7da63446f56d4ce108d5a65" - integrity sha512-/K3ds8TRAfBvi5vfjuz8y6+GiAYBZ0x4tXv1Av6CWBWn0IlADc+ZX9pMq7oU0fNQPnBwIZl3rmeLp6SBApbxSQ== + version "2.0.2" + resolved "https://registry.yarnpkg.com/@types/http-errors/-/http-errors-2.0.2.tgz#a86e00bbde8950364f8e7846687259ffcd96e8c2" + integrity sha512-lPG6KlZs88gef6aD85z3HNkztpj7w2R7HmR3gygjfXCQmsLloWNARFkMuzKiiY8FGdh1XDpgBdrSf4aKDiA7Kg== "@types/http-proxy@^1.17.8": - version "1.17.11" - resolved "https://registry.yarnpkg.com/@types/http-proxy/-/http-proxy-1.17.11.tgz#0ca21949a5588d55ac2b659b69035c84bd5da293" - integrity sha512-HC8G7c1WmaF2ekqpnFq626xd3Zz0uvaqFmBJNRZCGEZCXkvSdJoNFn/8Ygbd9fKNQj8UzLdCETaI0UWPAjK7IA== + version "1.17.12" + resolved "https://registry.yarnpkg.com/@types/http-proxy/-/http-proxy-1.17.12.tgz#86e849e9eeae0362548803c37a0a1afc616bd96b" + integrity sha512-kQtujO08dVtQ2wXAuSFfk9ASy3sug4+ogFR8Kd8UgP8PEuc1/G/8yjYRmp//PcDNJEUKOza/MrQu15bouEUCiw== dependencies: "@types/node" "*" @@ -4951,23 +4971,23 @@ integrity sha512-z/QT1XN4K4KYuslS23k62yDIDLwLFkzxOuMplDtObz0+y7VqJCaO2o+SPwHCvLFZh7xazvvoor2tA/hPz9ee7g== "@types/istanbul-lib-report@*": - version "3.0.0" - resolved "https://registry.yarnpkg.com/@types/istanbul-lib-report/-/istanbul-lib-report-3.0.0.tgz#c14c24f18ea8190c118ee7562b7ff99a36552686" - integrity sha512-plGgXAPfVKFoYfa9NpYDAkseG+g6Jr294RqeqcqDixSbU34MZVJRi/P+7Y8GDpzkEwLaGZZOpKIEmeVZNtKsrg== + version "3.0.1" + resolved "https://registry.yarnpkg.com/@types/istanbul-lib-report/-/istanbul-lib-report-3.0.1.tgz#412e0725ef41cde73bfa03e0e833eaff41e0fd63" + integrity sha512-gPQuzaPR5h/djlAv2apEG1HVOyj1IUs7GpfMZixU0/0KXT3pm64ylHuMUI1/Akh+sq/iikxg6Z2j+fcMDXaaTQ== dependencies: "@types/istanbul-lib-coverage" "*" "@types/istanbul-reports@^3.0.0": - version "3.0.1" - resolved "https://registry.yarnpkg.com/@types/istanbul-reports/-/istanbul-reports-3.0.1.tgz#9153fe98bba2bd565a63add9436d6f0d7f8468ff" - integrity sha512-c3mAZEuK0lvBp8tmuL74XRKn1+y2dcwOUpH7x4WrF6gk1GIgiluDRgMYQtw2OFcBvAJWlt6ASU3tSqxp0Uu0Aw== + version "3.0.2" + resolved "https://registry.yarnpkg.com/@types/istanbul-reports/-/istanbul-reports-3.0.2.tgz#edc8e421991a3b4df875036d381fc0a5a982f549" + integrity sha512-kv43F9eb3Lhj+lr/Hn6OcLCs/sSM8bt+fIaP11rCYngfV6NVjzWXJ17owQtDQTL9tQ8WSLUrGsSJ6rJz0F1w1A== dependencies: "@types/istanbul-lib-report" "*" "@types/jest@*": - version "29.5.4" - resolved "https://registry.yarnpkg.com/@types/jest/-/jest-29.5.4.tgz#9d0a16edaa009a71e6a71a999acd582514dab566" - integrity sha512-PhglGmhWeD46FYOVLt3X7TiWjzwuVGW9wG/4qocPevXMjCmrIc5b6db9WjeGE4QYVpUAWMDv3v0IiBwObY289A== + version "29.5.5" + resolved "https://registry.yarnpkg.com/@types/jest/-/jest-29.5.5.tgz#727204e06228fe24373df9bae76b90f3e8236a2a" + integrity sha512-ebylz2hnsWR9mYvmBFbXJXr+33UPc4+ZdxyDXh5w0FlPBTfCVN3wPL+kuOiQt3xvrK419v7XWeAs+AeOksafXg== dependencies: expect "^29.0.0" pretty-format "^29.0.0" @@ -4981,9 +5001,9 @@ pretty-format "^27.0.0" "@types/json-schema@*", "@types/json-schema@^7.0.4", "@types/json-schema@^7.0.5", "@types/json-schema@^7.0.8", "@types/json-schema@^7.0.9": - version "7.0.12" - resolved "https://registry.yarnpkg.com/@types/json-schema/-/json-schema-7.0.12.tgz#d70faba7039d5fca54c83c7dbab41051d2b6f6cb" - integrity sha512-Hr5Jfhc9eYOQNPYO5WLDq/n4jqijdHNlDXjuAQkkt+mWdQR+XJToOHrsD4cPaMXpn6KO7y2+wM8AZEs8VpBLVA== + version "7.0.13" + resolved "https://registry.yarnpkg.com/@types/json-schema/-/json-schema-7.0.13.tgz#02c24f4363176d2d18fc8b70b9f3c54aba178a85" + integrity sha512-RbSSoHliUbnXj3ny0CNFOoxrIDV6SUGyStHsvDqosw6CkdPV8TtWGlfecuK4ToyMEAql6pzNxgCFKanovUzlgQ== "@types/json5@^0.0.29": version "0.0.29" @@ -4991,9 +5011,9 @@ integrity sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ== "@types/lodash@^4.14.167", "@types/lodash@^4.14.175": - version "4.14.198" - resolved "https://registry.yarnpkg.com/@types/lodash/-/lodash-4.14.198.tgz#4d27465257011aedc741a809f1269941fa2c5d4c" - integrity sha512-trNJ/vtMZYMLhfN45uLq4ShQSw0/S7xCTLLVM+WM1rmFpba/VS42jVUgaO3w/NOLiWR/09lnYk0yMaA/atdIsg== + version "4.14.199" + resolved "https://registry.yarnpkg.com/@types/lodash/-/lodash-4.14.199.tgz#c3edb5650149d847a277a8961a7ad360c474e9bf" + integrity sha512-Vrjz5N5Ia4SEzWWgIVwnHNEnb1UE1XMkvY5DGXrAeOGE9imk0hgTHh5GyDjLDJi9OTCn9oo9dXH1uToK1VRfrg== "@types/long@^4.0.1": version "4.0.2" @@ -5006,26 +5026,26 @@ integrity sha512-oCavjEjRXuR6URJEtQm0eBdfsBiEcGBZbq21of8iGkeKxU1+1xgKuFPClaBZl2KB8ZZBSWlgk61tH6Mf+nvZVw== "@types/mdast@^3.0.0": - version "3.0.12" - resolved "https://registry.yarnpkg.com/@types/mdast/-/mdast-3.0.12.tgz#beeb511b977c875a5b0cc92eab6fcac2f0895514" - integrity sha512-DT+iNIRNX884cx0/Q1ja7NyUPpZuv0KPyL5rGNxm1WC1OtHstl7n4Jb7nk+xacNShQMbczJjt8uFzznpp6kYBg== + version "3.0.13" + resolved "https://registry.yarnpkg.com/@types/mdast/-/mdast-3.0.13.tgz#b7ba6e52d0faeb9c493e32c205f3831022be4e1b" + integrity sha512-HjiGiWedR0DVFkeNljpa6Lv4/IZU1+30VY5d747K7lBudFc3R0Ibr6yJ9lN3BE28VnZyDfLF/VB1Ql1ZIbKrmg== dependencies: "@types/unist" "^2" "@types/mdx@^2.0.0": - version "2.0.7" - resolved "https://registry.yarnpkg.com/@types/mdx/-/mdx-2.0.7.tgz#c7482e995673e01b83f8e96df83b3843ea76401f" - integrity sha512-BG4tyr+4amr3WsSEmHn/fXPqaCba/AYZ7dsaQTiavihQunHSIxk+uAtqsjvicNpyHN6cm+B9RVrUOtW9VzIKHw== + version "2.0.8" + resolved "https://registry.yarnpkg.com/@types/mdx/-/mdx-2.0.8.tgz#585229ff7057ab30c5e4a23fe126858881d818e5" + integrity sha512-r7/zWe+f9x+zjXqGxf821qz++ld8tp6Z4jUS6qmPZUXH6tfh4riXOhAqb12tWGWAevCFtMt1goLWkQMqIJKpsA== "@types/mime@*": - version "3.0.1" - resolved "https://registry.yarnpkg.com/@types/mime/-/mime-3.0.1.tgz#5f8f2bca0a5863cb69bc0b0acd88c96cb1d4ae10" - integrity sha512-Y4XFY5VJAuw0FgAqPNd6NNoV44jbq9Bz2L7Rh/J6jLTiHBSBJa9fxqQIvkIld4GsoDOcCbvzOUAbLPsSKKg+uA== + version "3.0.2" + resolved "https://registry.yarnpkg.com/@types/mime/-/mime-3.0.2.tgz#c1ae807f13d308ee7511a5b81c74f327028e66e8" + integrity sha512-Wj+fqpTLtTbG7c0tH47dkahefpLKEbB+xAZuLq7b4/IDHPl/n6VoXcyUQ2bypFlbSwvCr0y+bD4euTTqTJsPxQ== "@types/mime@^1": - version "1.3.2" - resolved "https://registry.yarnpkg.com/@types/mime/-/mime-1.3.2.tgz#93e25bf9ee75fe0fd80b594bc4feb0e862111b5a" - integrity sha512-YATxVxgRqNH6nHEIsvg6k2Boc1JHI9ZbH5iWFFv/MTkchz3b1ieGDa5T0a9RznNdI0KhVbdbWSN+KWWrQZRxTw== + version "1.3.3" + resolved "https://registry.yarnpkg.com/@types/mime/-/mime-1.3.3.tgz#bbe64987e0eb05de150c305005055c7ad784a9ce" + integrity sha512-Ys+/St+2VF4+xuY6+kDIXGxbNRO0mesVg0bbxEfB97Od1Vjpjx9KD1qxs64Gcb3CWPirk9Xe+PT4YiiHQ9T+eg== "@types/minimatch@*", "@types/minimatch@^5.1.2": version "5.1.2" @@ -5038,27 +5058,29 @@ integrity sha512-Klz949h02Gz2uZCMGwDUSDS1YBlTdDDgbWHi+81l29tQALUtvz4rAYi5uoVhE5Lagoq6DeqAUlbrHvW/mXDgdQ== "@types/minimist@^1.2.0": - version "1.2.2" - resolved "https://registry.yarnpkg.com/@types/minimist/-/minimist-1.2.2.tgz#ee771e2ba4b3dc5b372935d549fd9617bf345b8c" - integrity sha512-jhuKLIRrhvCPLqwPcx6INqmKeiA5EWrsCOPhrlFSrbrmU4ZMPjj5Ul/oLCMDO98XRUIwVm78xICz4EPCektzeQ== + version "1.2.3" + resolved "https://registry.yarnpkg.com/@types/minimist/-/minimist-1.2.3.tgz#dd249cef80c6fff2ba6a0d4e5beca913e04e25f8" + integrity sha512-ZYFzrvyWUNhaPomn80dsMNgMeXxNWZBdkuG/hWlUvXvbdUH8ZERNBGXnU87McuGcWDsyzX2aChCv/SVN348k3A== "@types/ms@*": - version "0.7.31" - resolved "https://registry.yarnpkg.com/@types/ms/-/ms-0.7.31.tgz#31b7ca6407128a3d2bbc27fe2d21b345397f6197" - integrity sha512-iiUgKzV9AuaEkZqkOLDIvlQiL6ltuZd9tGcW3gwpnX8JbuiuhFlEGmmFXEXkN50Cvq7Os88IY2v0dkDqXYWVgA== + version "0.7.32" + resolved "https://registry.yarnpkg.com/@types/ms/-/ms-0.7.32.tgz#f6cd08939ae3ad886fcc92ef7f0109dacddf61ab" + integrity sha512-xPSg0jm4mqgEkNhowKgZFBNtwoEwF6gJ4Dhww+GFpm3IgtNseHQZ5IqdNwnquZEoANxyDAKDRAdVo4Z72VvD/g== "@types/node-fetch@^2.5.7": - version "2.6.4" - resolved "https://registry.yarnpkg.com/@types/node-fetch/-/node-fetch-2.6.4.tgz#1bc3a26de814f6bf466b25aeb1473fa1afe6a660" - integrity sha512-1ZX9fcN4Rvkvgv4E6PAY5WXUFWFcRWxZa3EW83UjycOB9ljJCedb2CupIP4RZMEwF/M3eTcCihbBRgwtGbg5Rg== + version "2.6.6" + resolved "https://registry.yarnpkg.com/@types/node-fetch/-/node-fetch-2.6.6.tgz#b72f3f4bc0c0afee1c0bc9cff68e041d01e3e779" + integrity sha512-95X8guJYhfqiuVVhRFxVQcf4hW/2bCuoPwDasMf/531STFoNoWTT7YDnWdXHEZKqAGUigmpG31r2FE70LwnzJw== dependencies: "@types/node" "*" - form-data "^3.0.0" + form-data "^4.0.0" "@types/node@*", "@types/node@>=13.7.0": - version "20.6.0" - resolved "https://registry.yarnpkg.com/@types/node/-/node-20.6.0.tgz#9d7daa855d33d4efec8aea88cd66db1c2f0ebe16" - integrity sha512-najjVq5KN2vsH2U/xyh2opaSEz6cZMR2SetLIlxlj08nOcmPOemJmUK2o4kUzfLqfrWE0PIrNeE16XhYDd3nqg== + version "20.8.4" + resolved "https://registry.yarnpkg.com/@types/node/-/node-20.8.4.tgz#0e9ebb2ff29d5c3302fc84477d066fa7c6b441aa" + integrity sha512-ZVPnqU58giiCjSxjVUESDtdPk4QR5WQhhINbc9UBrKLU68MX5BF6kbQzTrkwbolyr0X8ChBpXfavr5mZFKZQ5A== + dependencies: + undici-types "~5.25.1" "@types/node@^13.7.0": version "13.13.52" @@ -5066,14 +5088,14 @@ integrity sha512-s3nugnZumCC//n4moGGe6tkNMyYEdaDBitVjwPxXmR5lnMG5dHePinH2EdxkG3Rh1ghFHHixAG4NJhpJW1rthQ== "@types/node@^14.0.10 || ^16.0.0", "@types/node@^14.14.20 || ^16.0.0", "@types/node@^16.7.13": - version "16.18.50" - resolved "https://registry.yarnpkg.com/@types/node/-/node-16.18.50.tgz#93003cf0251a2ecd26dad6dc757168d648519805" - integrity sha512-OiDU5xRgYTJ203v4cprTs0RwOCd5c5Zjv+K5P8KSqfiCsB1W3LcamTUMcnQarpq5kOYbhHfSOgIEJvdPyb5xyw== + version "16.18.58" + resolved "https://registry.yarnpkg.com/@types/node/-/node-16.18.58.tgz#bf66f63983104ed57c754f4e84ccaf16f8235adb" + integrity sha512-YGncyA25/MaVtQkjWW9r0EFBukZ+JulsLcVZBlGUfIb96OBMjkoRWwQo5IEWJ8Fj06Go3GHw+bjYDitv6BaGsA== "@types/normalize-package-data@^2.4.0": - version "2.4.1" - resolved "https://registry.yarnpkg.com/@types/normalize-package-data/-/normalize-package-data-2.4.1.tgz#d3357479a0fdfdd5907fe67e17e0a85c906e1301" - integrity sha512-Gj7cI7z+98M282Tqmp2K5EIsoouUEzbBJhQQzDE3jSIRk6r9gsz0oUokqIUR4u1R3dMHo0pDHM7sNOHyhulypw== + version "2.4.2" + resolved "https://registry.yarnpkg.com/@types/normalize-package-data/-/normalize-package-data-2.4.2.tgz#9b0e3e8533fe5024ad32d6637eb9589988b6fdca" + integrity sha512-lqa4UEhhv/2sjjIQgjX8B+RBjj47eo0mzGasklVJ78UKGQY1r0VpB9XHDaZZO9qzEFDdy4MrXLuEaSmPrPSe/A== "@types/npmlog@^4.1.2": version "4.1.4" @@ -5100,10 +5122,10 @@ resolved "https://registry.yarnpkg.com/@types/pretty-hrtime/-/pretty-hrtime-1.0.1.tgz#72a26101dc567b0d68fd956cf42314556e42d601" integrity sha512-VjID5MJb1eGKthz2qUerWT8+R4b9N+CHvGCzg9fn4kWZgaF9AhdYikQio3R7wV8YY1NsQKPaCwKz1Yff+aHNUQ== -"@types/prop-types@*", "@types/prop-types@^15.0.0", "@types/prop-types@^15.7.5": - version "15.7.5" - resolved "https://registry.yarnpkg.com/@types/prop-types/-/prop-types-15.7.5.tgz#5f19d2b85a98e9558036f6a3cacc8819420f05cf" - integrity sha512-JCB8C6SnDoQf0cNycqd/35A7MjcnK+ZTqE7judS6o7utxUCg6imJg3QK2qzHKszlTjcj2cn+NwMB2i96ubpj7w== +"@types/prop-types@*", "@types/prop-types@^15.0.0", "@types/prop-types@^15.7.7": + version "15.7.8" + resolved "https://registry.yarnpkg.com/@types/prop-types/-/prop-types-15.7.8.tgz#805eae6e8f41bd19e88917d2ea200dc992f405d3" + integrity sha512-kMpQpfZKSCBqltAJwskgePRaYRFukDkm1oItcAbC3gNELR20XIBcN9VRgg4+m8DKsTfkWeA4m4Imp4DDuWy7FQ== "@types/qrcode.react@^1.0.2": version "1.0.3" @@ -5118,28 +5140,21 @@ integrity sha512-u95svzDlTysU5xecFNTgfFG5RUWu1A9P0VzgpcIiGZA9iraHOdSzcxMxQ55DyeRaGCSxQi7LxXDI4rzq/MYfdg== "@types/range-parser@*": - version "1.2.4" - resolved "https://registry.yarnpkg.com/@types/range-parser/-/range-parser-1.2.4.tgz#cd667bcfdd025213aafb7ca5915a932590acdcdc" - integrity sha512-EEhsLsD6UsDM1yFhAvy0Cjr6VwmpMWqFBCb9w07wVugF7w9nfajxLuVmngTIpgS6svCnm6Vaw+MZhoDCKnOfsw== + version "1.2.5" + resolved "https://registry.yarnpkg.com/@types/range-parser/-/range-parser-1.2.5.tgz#38bd1733ae299620771bd414837ade2e57757498" + integrity sha512-xrO9OoVPqFuYyR/loIHjnbvvyRZREYKLjxV4+dY6v3FQR3stQ9ZxIGkaclF7YhI9hfjpuTbu14hZEy94qKLtOA== "@types/react-dom@<18.0.0": - version "17.0.20" - resolved "https://registry.yarnpkg.com/@types/react-dom/-/react-dom-17.0.20.tgz#e0c8901469d732b36d8473b40b679ad899da1b53" - integrity sha512-4pzIjSxDueZZ90F52mU3aPoogkHIoSIDG+oQ+wQK7Cy2B9S+MvOqY0uEA/qawKz381qrEDkvpwyt8Bm31I8sbA== + version "17.0.21" + resolved "https://registry.yarnpkg.com/@types/react-dom/-/react-dom-17.0.21.tgz#85d56965483ce4850f5f03f9234e54a1f47786e5" + integrity sha512-3rQEFUNUUz2MYiRwJJj6UekcW7rFLOtmK7ajQP7qJpjNdggInl3I/xM4I3Hq1yYPdCGVMgax1gZsB7BBTtayXg== dependencies: "@types/react" "^17" "@types/react-dom@^18.0.10": - version "18.2.7" - resolved "https://registry.yarnpkg.com/@types/react-dom/-/react-dom-18.2.7.tgz#67222a08c0a6ae0a0da33c3532348277c70abb63" - integrity sha512-GRaAEriuT4zp9N4p1i8BDBYmEyfo+xQ3yHjJU4eiK5NDa1RmUZG+unZABUTK4/Ox/M+GaHwb6Ow8rUITrtjszA== - dependencies: - "@types/react" "*" - -"@types/react-is@^18.2.1": - version "18.2.1" - resolved "https://registry.yarnpkg.com/@types/react-is/-/react-is-18.2.1.tgz#61d01c2a6fc089a53520c0b66996d458fdc46863" - integrity sha512-wyUkmaaSZEzFZivD8F2ftSyAfk6L+DfFliVj/mYdOXbVjRcS87fQJLTnhk6dRZPuJjI+9g6RZJO4PNCngUrmyw== + version "18.2.12" + resolved "https://registry.yarnpkg.com/@types/react-dom/-/react-dom-18.2.12.tgz#58479c463d1e0b7f1ee7cd80e09186189f9ec32d" + integrity sha512-QWZuiA/7J/hPIGocXreCRbx7wyoeet9ooxfbSA+zbIWqyQEE7GMtRn4A37BdYyksnN+/NDnWgfxZH9UVGDw1hg== dependencies: "@types/react" "*" @@ -5161,25 +5176,25 @@ react-tooltip "*" "@types/react-transition-group@^4.4.6": - version "4.4.6" - resolved "https://registry.yarnpkg.com/@types/react-transition-group/-/react-transition-group-4.4.6.tgz#18187bcda5281f8e10dfc48f0943e2fdf4f75e2e" - integrity sha512-VnCdSxfcm08KjsJVQcfBmhEQAPnLB8G08hAxn39azX1qYBQ/5RVQuoHuKIcfKOdncuaUvEpFKFzEvbtIMsfVew== + version "4.4.7" + resolved "https://registry.yarnpkg.com/@types/react-transition-group/-/react-transition-group-4.4.7.tgz#bf69f269d74aa78b99097673ca6dd6824a68ef1c" + integrity sha512-ICCyBl5mvyqYp8Qeq9B5G/fyBSRC0zx3XM3sCC6KkcMsNeAHqXBKkmat4GqdJET5jtYUpZXrxI5flve5qhi2Eg== dependencies: "@types/react" "*" "@types/react@*", "@types/react@^18.0.26": - version "18.2.21" - resolved "https://registry.yarnpkg.com/@types/react/-/react-18.2.21.tgz#774c37fd01b522d0b91aed04811b58e4e0514ed9" - integrity sha512-neFKG/sBAwGxHgXiIxnbm3/AAVQ/cMRS93hvBpg8xYRbeQSPVABp9U2bRnPf0iI4+Ucdv3plSxKK+3CW2ENJxA== + version "18.2.27" + resolved "https://registry.yarnpkg.com/@types/react/-/react-18.2.27.tgz#746e52b06f3ccd5d7a724fd53769b70792601440" + integrity sha512-Wfv7B7FZiR2r3MIqbAlXoY1+tXm4bOqfz4oRr+nyXdBqapDBZ0l/IGcSlAfvxIHEEJjkPU0MYAc/BlFPOcrgLw== dependencies: "@types/prop-types" "*" "@types/scheduler" "*" csstype "^3.0.2" "@types/react@^17": - version "17.0.65" - resolved "https://registry.yarnpkg.com/@types/react/-/react-17.0.65.tgz#95f6a2ab61145ffb69129d07982d047f9e0870cd" - integrity sha512-oxur785xZYHvnI7TRS61dXbkIhDPnGfsXKv0cNXR/0ml4SipRIFpSMzA7HMEfOywFwJ5AOnPrXYTEiTRUQeGlQ== + version "17.0.67" + resolved "https://registry.yarnpkg.com/@types/react/-/react-17.0.67.tgz#1c224738f203829a4692aa48e33a732c34fd014a" + integrity sha512-zE76EIJ0Y58Oy9yDX/9csb/NuKjt0Eq2YgWb/8Wxo91YmuLzzbyiRoaqJE9h8iDlsT7n35GdpoLomHlaB1kFbg== dependencies: "@types/prop-types" "*" "@types/scheduler" "*" @@ -5196,50 +5211,50 @@ integrity sha512-wWKOClTTiizcZhXnPY4wikVAwmdYHp8q6DmC+EJUzAMsycb7HB32Kh9RN4+0gExjmPmZSAQjgURXIGATPegAvA== "@types/scheduler@*": - version "0.16.3" - resolved "https://registry.yarnpkg.com/@types/scheduler/-/scheduler-0.16.3.tgz#cef09e3ec9af1d63d2a6cc5b383a737e24e6dcf5" - integrity sha512-5cJ8CB4yAx7BH1oMvdU0Jh9lrEXyPkar6F9G/ERswkCuvP4KQZfZkSjcMbAICCpQTN4OuZn8tz0HiKv9TGZgrQ== + version "0.16.4" + resolved "https://registry.yarnpkg.com/@types/scheduler/-/scheduler-0.16.4.tgz#fedc3e5b15c26dc18faae96bf1317487cb3658cf" + integrity sha512-2L9ifAGl7wmXwP4v3pN4p2FLhD0O1qsJpvKmNin5VA8+UvNVb447UDaAEV6UdrkA+m/Xs58U1RFps44x6TFsVQ== "@types/semver@^7.3.12", "@types/semver@^7.3.8": - version "7.5.1" - resolved "https://registry.yarnpkg.com/@types/semver/-/semver-7.5.1.tgz#0480eeb7221eb9bc398ad7432c9d7e14b1a5a367" - integrity sha512-cJRQXpObxfNKkFAZbJl2yjWtJCqELQIdShsogr1d2MilP8dKD9TE/nEKHkJgUNHdGKCQaf9HbIynuV2csLGVLg== + version "7.5.3" + resolved "https://registry.yarnpkg.com/@types/semver/-/semver-7.5.3.tgz#9a726e116beb26c24f1ccd6850201e1246122e04" + integrity sha512-OxepLK9EuNEIPxWNME+C6WwbRAOOI2o2BaQEGzz5Lu2e4Z5eDnEo+/aVEDMIXywoJitJ7xWd641wrGLZdtwRyw== "@types/send@*": - version "0.17.1" - resolved "https://registry.yarnpkg.com/@types/send/-/send-0.17.1.tgz#ed4932b8a2a805f1fe362a70f4e62d0ac994e301" - integrity sha512-Cwo8LE/0rnvX7kIIa3QHCkcuF21c05Ayb0ZfxPiv0W8VRiZiNW/WuRupHKpqqGVGf7SUA44QSOUKaEd9lIrd/Q== + version "0.17.2" + resolved "https://registry.yarnpkg.com/@types/send/-/send-0.17.2.tgz#af78a4495e3c2b79bfbdac3955fdd50e03cc98f2" + integrity sha512-aAG6yRf6r0wQ29bkS+x97BIs64ZLxeE/ARwyS6wrldMm3C1MdKwCcnnEwMC1slI8wuxJOpiUH9MioC0A0i+GJw== dependencies: "@types/mime" "^1" "@types/node" "*" "@types/serve-index@^1.9.1": - version "1.9.1" - resolved "https://registry.yarnpkg.com/@types/serve-index/-/serve-index-1.9.1.tgz#1b5e85370a192c01ec6cec4735cf2917337a6278" - integrity sha512-d/Hs3nWDxNL2xAczmOVZNj92YZCS6RGxfBPjKzuu/XirCgXdpKEb88dYNbrYGint6IVWLNP+yonwVAuRC0T2Dg== + version "1.9.2" + resolved "https://registry.yarnpkg.com/@types/serve-index/-/serve-index-1.9.2.tgz#cb26e775678a8526b73a5d980a147518740aaecd" + integrity sha512-asaEIoc6J+DbBKXtO7p2shWUpKacZOoMBEGBgPG91P8xhO53ohzHWGCs4ScZo5pQMf5ukQzVT9fhX1WzpHihig== dependencies: "@types/express" "*" "@types/serve-static@*", "@types/serve-static@^1.13.10": - version "1.15.2" - resolved "https://registry.yarnpkg.com/@types/serve-static/-/serve-static-1.15.2.tgz#3e5419ecd1e40e7405d34093f10befb43f63381a" - integrity sha512-J2LqtvFYCzaj8pVYKw8klQXrLLk7TBZmQ4ShlcdkELFKGwGMfevMLneMMRkMgZxotOD9wg497LpC7O8PcvAmfw== + version "1.15.3" + resolved "https://registry.yarnpkg.com/@types/serve-static/-/serve-static-1.15.3.tgz#2cfacfd1fd4520bbc3e292cca432d5e8e2e3ee61" + integrity sha512-yVRvFsEMrv7s0lGhzrggJjNOSmZCdgCjw9xWrPr/kNNLp6FaDfMC1KaYl3TSJ0c58bECwNBMoQrZJ8hA8E1eFg== dependencies: "@types/http-errors" "*" "@types/mime" "*" "@types/node" "*" "@types/sockjs@^0.3.33": - version "0.3.33" - resolved "https://registry.yarnpkg.com/@types/sockjs/-/sockjs-0.3.33.tgz#570d3a0b99ac995360e3136fd6045113b1bd236f" - integrity sha512-f0KEEe05NvUnat+boPTZ0dgaLZ4SfSouXUgv5noUiefG2ajgKjmETo9ZJyuqsl7dfl2aHlLJUiki6B4ZYldiiw== + version "0.3.34" + resolved "https://registry.yarnpkg.com/@types/sockjs/-/sockjs-0.3.34.tgz#43e10e549b36d2ba2589278f00f81b5d7ccda167" + integrity sha512-R+n7qBFnm/6jinlteC9DBL5dGiDGjWAvjo4viUanpnc/dG1y7uDoacXPIQ/PQEg1fI912SMHIa014ZjRpvDw4g== dependencies: "@types/node" "*" "@types/source-list-map@*": - version "0.1.2" - resolved "https://registry.yarnpkg.com/@types/source-list-map/-/source-list-map-0.1.2.tgz#0078836063ffaf17412349bba364087e0ac02ec9" - integrity sha512-K5K+yml8LTo9bWJI/rECfIPrGgxdpeNbj+d53lwN4QjW1MCwlkhUms+gtdzigTeUyBr09+u8BwOIY3MXvHdcsA== + version "0.1.3" + resolved "https://registry.yarnpkg.com/@types/source-list-map/-/source-list-map-0.1.3.tgz#077e15c87fe06520e30396a533bd9848e735ce9b" + integrity sha512-I9R/7fUjzUOyDy6AFkehCK711wWoAXEaBi80AfjZt1lIkbe6AcXKd3ckQc3liMvQExWvfOeh/8CtKzrfUFN5gA== "@types/stack-utils@^2.0.0": version "2.0.1" @@ -5291,23 +5306,23 @@ integrity sha512-c/I8ZRb51j+pYGAu5CrFMRxqZ2ke4y2grEBO5AUjgSkSk+qT2Ea+OdWElz/OiMf5MNpn2b17kuVBwZLQJXzihw== "@types/webpack-env@^1.16.0": - version "1.18.1" - resolved "https://registry.yarnpkg.com/@types/webpack-env/-/webpack-env-1.18.1.tgz#49699bb508961e14a3bfb68c78cd87b296889d1d" - integrity sha512-D0HJET2/UY6k9L6y3f5BL+IDxZmPkYmPT4+qBrRdmRLYRuV0qNKizMgTvYxXZYn+36zjPeoDZAEYBCM6XB+gww== + version "1.18.2" + resolved "https://registry.yarnpkg.com/@types/webpack-env/-/webpack-env-1.18.2.tgz#0264bc30c0c4a073118ce5b26c5ef143da4374df" + integrity sha512-BFqcTHHTrrI8EBmIzNAmLPP3IqtEG9J1IPFWbPeS/F0/TGNmo0pI5svOa7JbMF9vSCXQCvJWT2gxLJNVuf9blw== "@types/webpack-sources@*": - version "3.2.0" - resolved "https://registry.yarnpkg.com/@types/webpack-sources/-/webpack-sources-3.2.0.tgz#16d759ba096c289034b26553d2df1bf45248d38b" - integrity sha512-Ft7YH3lEVRQ6ls8k4Ff1oB4jN6oy/XmU6tQISKdhfh+1mR+viZFphS6WL0IrtDOzvefmJg5a0s7ZQoRXwqTEFg== + version "3.2.1" + resolved "https://registry.yarnpkg.com/@types/webpack-sources/-/webpack-sources-3.2.1.tgz#98670b35fa799c44ac235910f3fda9bfdcdbc2c6" + integrity sha512-iLC3Fsx62ejm3ST3PQ8vBMC54Rb3EoCprZjeJGI5q+9QjfDLGt9jeg/k245qz1G9AQnORGk0vqPicJFPT1QODQ== dependencies: "@types/node" "*" "@types/source-list-map" "*" source-map "^0.7.3" "@types/webpack@^4.41.26", "@types/webpack@^4.41.8": - version "4.41.33" - resolved "https://registry.yarnpkg.com/@types/webpack/-/webpack-4.41.33.tgz#16164845a5be6a306bcbe554a8e67f9cac215ffc" - integrity sha512-PPajH64Ft2vWevkerISMtnZ8rTs4YmRbs+23c402J0INmxDKCrhZNvwZYtzx96gY2wAtXdrK1BS2fiC8MlLr3g== + version "4.41.34" + resolved "https://registry.yarnpkg.com/@types/webpack/-/webpack-4.41.34.tgz#8cf616be84b39c8fb26f9459d4470a5514df2477" + integrity sha512-CN2aOGrR3zbMc2v+cKqzaClYP1ldkpPOgtdNvgX+RmlWCSWxHxpzz6WSCVQZRkF8D60ROlkRzAoEpgjWQ+bd2g== dependencies: "@types/node" "*" "@types/tapable" "^1" @@ -5317,35 +5332,35 @@ source-map "^0.6.0" "@types/ws@^8.5.5": - version "8.5.5" - resolved "https://registry.yarnpkg.com/@types/ws/-/ws-8.5.5.tgz#af587964aa06682702ee6dcbc7be41a80e4b28eb" - integrity sha512-lwhs8hktwxSjf9UaZ9tG5M03PGogvFaH8gUgLNbN9HKIg0dvv6q+gkSuJ8HN4/VbyxkuLzCjlN7GquQ0gUJfIg== + version "8.5.6" + resolved "https://registry.yarnpkg.com/@types/ws/-/ws-8.5.6.tgz#e9ad51f0ab79b9110c50916c9fcbddc36d373065" + integrity sha512-8B5EO9jLVCy+B58PLHvLDuOD8DRVMgQzq8d55SjLCOn9kqGyqOvy27exVaTio1q1nX5zLu8/6N0n2ThSxOM6tg== dependencies: "@types/node" "*" "@types/yargs-parser@*": - version "21.0.0" - resolved "https://registry.yarnpkg.com/@types/yargs-parser/-/yargs-parser-21.0.0.tgz#0c60e537fa790f5f9472ed2776c2b71ec117351b" - integrity sha512-iO9ZQHkZxHn4mSakYV0vFHAVDyEOIJQrV2uZ06HxEPcx+mt8swXoZHIbaaJ2crJYFfErySgktuTZ3BeLz+XmFA== + version "21.0.1" + resolved "https://registry.yarnpkg.com/@types/yargs-parser/-/yargs-parser-21.0.1.tgz#07773d7160494d56aa882d7531aac7319ea67c3b" + integrity sha512-axdPBuLuEJt0c4yI5OZssC19K2Mq1uKdrfZBzuxLvaztgqUtFYZUNw7lETExPYJR9jdEoIg4mb7RQKRQzOkeGQ== "@types/yargs@^15.0.0": - version "15.0.15" - resolved "https://registry.yarnpkg.com/@types/yargs/-/yargs-15.0.15.tgz#e609a2b1ef9e05d90489c2f5f45bbfb2be092158" - integrity sha512-IziEYMU9XoVj8hWg7k+UJrXALkGFjWJhn5QFEv9q4p+v40oZhSuC135M38st8XPjICL7Ey4TV64ferBGUoJhBg== + version "15.0.16" + resolved "https://registry.yarnpkg.com/@types/yargs/-/yargs-15.0.16.tgz#258009dc52907e8f03041eb64ffdac297ba4b208" + integrity sha512-2FeD5qezW3FvLpZ0JpfuaEWepgNLl9b2gQYiz/ce0NhoB1W/D+VZu98phITXkADYerfr/jb7JcDcVhITsc9bwg== dependencies: "@types/yargs-parser" "*" "@types/yargs@^16.0.0": - version "16.0.5" - resolved "https://registry.yarnpkg.com/@types/yargs/-/yargs-16.0.5.tgz#12cc86393985735a283e387936398c2f9e5f88e3" - integrity sha512-AxO/ADJOBFJScHbWhq2xAhlWP24rY4aCEG/NFaMvbT3X2MgRsLjhjQwsn0Zi5zn0LG9jUhCCZMeX9Dkuw6k+vQ== + version "16.0.6" + resolved "https://registry.yarnpkg.com/@types/yargs/-/yargs-16.0.6.tgz#cc0c63684d68d23498cf0b5f32aa4c3fb437c638" + integrity sha512-oTP7/Q13GSPrgcwEwdlnkoZSQ1Hg9THe644qq8PG6hhJzjZ3qj1JjEFPIwWV/IXVs5XGIVqtkNOS9kh63WIJ+A== dependencies: "@types/yargs-parser" "*" "@types/yargs@^17.0.8": - version "17.0.24" - resolved "https://registry.yarnpkg.com/@types/yargs/-/yargs-17.0.24.tgz#b3ef8d50ad4aa6aecf6ddc97c580a00f5aa11902" - integrity sha512-6i0aC7jV6QzQB8ne1joVZ0eSFIstHsCrobmOtghM11yGlH0j43FKL2UhWdELkyps0zuf7qVTUVCCR+tgSlyLLw== + version "17.0.28" + resolved "https://registry.yarnpkg.com/@types/yargs/-/yargs-17.0.28.tgz#d106e4301fbacde3d1796ab27374dd16588ec851" + integrity sha512-N3e3fkS86hNhtk6BEnc0rj3zcehaxx8QWhCROJkqpl5Zaoi7nAic3jH8q94jVD3zu5LGk+PUB6KAiDmimYOEQw== dependencies: "@types/yargs-parser" "*" @@ -6249,7 +6264,7 @@ array.prototype.tosorted@^1.1.1: es-shim-unscopables "^1.0.0" get-intrinsic "^1.2.1" -arraybuffer.prototype.slice@^1.0.1: +arraybuffer.prototype.slice@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/arraybuffer.prototype.slice/-/arraybuffer.prototype.slice-1.0.2.tgz#98bd561953e3e74bb34938e77647179dfe6e9f12" integrity sha512-yMBKppFur/fbHu9/6USUe03bZ4knMYiwFBcyiaXB8Go0qNehwX6inYPzK9U0NeQvGxKthcmHcaR8P5MStSRBAw== @@ -6373,9 +6388,9 @@ available-typed-arrays@^1.0.5: integrity sha512-DMD0KiN46eipeziST1LPP/STfDU0sufISXmjSgvVsoU2tqxctQeASejWcfNtxYKqETM1UxQ8sp2OrSBWpHY6sw== axe-core@^4.6.2: - version "4.8.1" - resolved "https://registry.yarnpkg.com/axe-core/-/axe-core-4.8.1.tgz#6948854183ee7e7eae336b9877c5bafa027998ea" - integrity sha512-9l850jDDPnKq48nbad8SiEelCv4OrUWrKab/cPj0GScVg6cb6NbCCt/Ulk26QEq5jP9NnGr04Bit1BHyV6r5CQ== + version "4.8.2" + resolved "https://registry.yarnpkg.com/axe-core/-/axe-core-4.8.2.tgz#2f6f3cde40935825cf4465e3c1c9e77b240ff6ae" + integrity sha512-/dlp0fxyM3R8YW7MFzaHWXrf4zzbr0vaYb23VBFCl83R7nWNPg/yaQw2Dc8jzCMmDVLhSdzH8MjrsuIUuvX+6g== axios@^0.21.1, axios@^0.21.2: version "0.21.4" @@ -6385,9 +6400,9 @@ axios@^0.21.1, axios@^0.21.2: follow-redirects "^1.14.0" axios@^1.0.0, axios@^1.3.3: - version "1.5.0" - resolved "https://registry.yarnpkg.com/axios/-/axios-1.5.0.tgz#f02e4af823e2e46a9768cfc74691fdd0517ea267" - integrity sha512-D4DdjDo5CY50Qms0qGQTTw6Q44jl7zRwY7bthds06pUGfChBCTcQs+N743eFWGEd6pRTMd6A+I87aWyFV5wiZQ== + version "1.5.1" + resolved "https://registry.yarnpkg.com/axios/-/axios-1.5.1.tgz#11fbaa11fc35f431193a9564109c88c1f27b585f" + integrity sha512-Q28iYCWzNHjAm+yEAot5QaAMxhMghWLFVf7rRdwhUI+c2jix2DUXjAHXVi+s1ibs3mjPO/cCgbA++3BjD0vP/A== dependencies: follow-redirects "^1.15.0" form-data "^4.0.0" @@ -6533,12 +6548,12 @@ babel-plugin-polyfill-corejs3@^0.1.0: core-js-compat "^3.8.1" babel-plugin-polyfill-corejs3@^0.8.3: - version "0.8.3" - resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.8.3.tgz#b4f719d0ad9bb8e0c23e3e630c0c8ec6dd7a1c52" - integrity sha512-z41XaniZL26WLrvjy7soabMXrfPWARN25PZoriDEiLMxAp50AUW3t35BGQUMg5xK3UrpVTtagIDklxYa+MhiNA== + version "0.8.4" + resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.8.4.tgz#1fac2b1dcef6274e72b3c72977ed8325cb330591" + integrity sha512-9l//BZZsPR+5XjyJMPtZSK4jv0BsTO1zDac2GC6ygx9WLGlcsnRd1Co0B2zT5fF5Ic6BZy+9m3HNZ3QcOeDKfg== dependencies: "@babel/helper-define-polyfill-provider" "^0.4.2" - core-js-compat "^3.31.0" + core-js-compat "^3.32.2" babel-plugin-polyfill-regenerator@^0.5.2: version "0.5.2" @@ -6902,15 +6917,15 @@ browserify-zlib@^0.2.0: dependencies: pako "~1.0.5" -browserslist@^4.0.0, browserslist@^4.12.0, browserslist@^4.14.5, browserslist@^4.21.10, browserslist@^4.21.4, browserslist@^4.21.9: - version "4.21.10" - resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.21.10.tgz#dbbac576628c13d3b2231332cb2ec5a46e015bb0" - integrity sha512-bipEBdZfVH5/pwrvqc+Ub0kUPVfGUhlKxbvfD+z1BDnPEO/X98ruXGA1WP5ASpAFKan7Qr6j736IacbZQuAlKQ== +browserslist@^4.0.0, browserslist@^4.12.0, browserslist@^4.14.5, browserslist@^4.21.4, browserslist@^4.21.9, browserslist@^4.22.1: + version "4.22.1" + resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.22.1.tgz#ba91958d1a59b87dab6fed8dfbcb3da5e2e9c619" + integrity sha512-FEVc202+2iuClEhZhrWy6ZiAcRLvNMyYcxZ8raemul1DYVOVdFsbqckWLdsixQZCpJlwe77Z3UTalE7jsjnKfQ== dependencies: - caniuse-lite "^1.0.30001517" - electron-to-chromium "^1.4.477" + caniuse-lite "^1.0.30001541" + electron-to-chromium "^1.4.535" node-releases "^2.0.13" - update-browserslist-db "^1.0.11" + update-browserslist-db "^1.0.13" bs-logger@0.x: version "0.2.6" @@ -7166,10 +7181,10 @@ caniuse-api@^3.0.0: lodash.memoize "^4.1.2" lodash.uniq "^4.5.0" -caniuse-lite@^1.0.0, caniuse-lite@^1.0.30001109, caniuse-lite@^1.0.30001517: - version "1.0.30001534" - resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001534.tgz#f24a9b2a6d39630bac5c132b5dff89b39a12e7dd" - integrity sha512-vlPVrhsCS7XaSh2VvWluIQEzVhefrUQcEsQWSS5A5V+dM07uv1qHeQzAOTGIMy9i3e9bH15+muvI/UHojVgS/Q== +caniuse-lite@^1.0.0, caniuse-lite@^1.0.30001109, caniuse-lite@^1.0.30001541: + version "1.0.30001547" + resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001547.tgz#d4f92efc488aab3c7f92c738d3977c2a3180472b" + integrity sha512-W7CrtIModMAxobGhz8iXmDfuJiiKg1WADMO/9x7/CLNin5cpSbuBjooyoIUVB5eyCc36QuTVlkVa1iB2S5+/eA== capture-exit@^2.0.0: version "2.0.0" @@ -7326,9 +7341,9 @@ ci-info@^2.0.0: integrity sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ== ci-info@^3.2.0, ci-info@^3.6.1: - version "3.8.0" - resolved "https://registry.yarnpkg.com/ci-info/-/ci-info-3.8.0.tgz#81408265a5380c929f0bc665d62256628ce9ef91" - integrity sha512-eXTggHWSooYhq49F2opQhuHWgzucfF2YgODK4e1566GQs5BIfP30B0oenwBJHfWxAs2fyPB1s7Mg949zLf61Yw== + version "3.9.0" + resolved "https://registry.yarnpkg.com/ci-info/-/ci-info-3.9.0.tgz#4279a62028a7b1f262f3473fc9605f5e218c59b4" + integrity sha512-NIxF55hv4nSqQswkAeiOi1r83xy8JldOFDTWiug55KBu9Jnblncd2U6ViHmYgHf01TPZS77NJBhBMKdWj9HQMQ== cipher-base@^1.0.0, cipher-base@^1.0.1, cipher-base@^1.0.3: version "1.0.4" @@ -7902,22 +7917,22 @@ copy-webpack-plugin@^11.0.0: schema-utils "^4.0.0" serialize-javascript "^6.0.0" -core-js-compat@^3.31.0, core-js-compat@^3.8.1: - version "3.32.2" - resolved "https://registry.yarnpkg.com/core-js-compat/-/core-js-compat-3.32.2.tgz#8047d1a8b3ac4e639f0d4f66d4431aa3b16e004c" - integrity sha512-+GjlguTDINOijtVRUxrQOv3kfu9rl+qPNdX2LTbJ/ZyVTuxK+ksVSAGX1nHstu4hrv1En/uPTtWgq2gI5wt4AQ== +core-js-compat@^3.31.0, core-js-compat@^3.32.2, core-js-compat@^3.8.1: + version "3.33.0" + resolved "https://registry.yarnpkg.com/core-js-compat/-/core-js-compat-3.33.0.tgz#24aa230b228406450b2277b7c8bfebae932df966" + integrity sha512-0w4LcLXsVEuNkIqwjjf9rjCoPhK8uqA4tMRh4Ge26vfLtUutshn+aRJU21I9LCJlh2QQHfisNToLjw1XEJLTWw== dependencies: - browserslist "^4.21.10" + browserslist "^4.22.1" core-js-pure@^3.23.3: - version "3.32.2" - resolved "https://registry.yarnpkg.com/core-js-pure/-/core-js-pure-3.32.2.tgz#b7dbdac528625cf87eb0523b532eb61551b9a6d1" - integrity sha512-Y2rxThOuNywTjnX/PgA5vWM6CZ9QB9sz9oGeCixV8MqXZO70z/5SHzf9EeBrEBK0PN36DnEBBu9O/aGWzKuMZQ== + version "3.33.0" + resolved "https://registry.yarnpkg.com/core-js-pure/-/core-js-pure-3.33.0.tgz#938a28754b4d82017a7a8cbd2727b1abecc63591" + integrity sha512-FKSIDtJnds/YFIEaZ4HszRX7hkxGpNKM7FC9aJ9WLJbSd3lD4vOltFuVIBLR8asSx9frkTSqL0dw90SKQxgKrg== core-js@^3.0.4, core-js@^3.6.5, core-js@^3.8.2: - version "3.32.2" - resolved "https://registry.yarnpkg.com/core-js/-/core-js-3.32.2.tgz#172fb5949ef468f93b4be7841af6ab1f21992db7" - integrity sha512-pxXSw1mYZPDGvTQqEc5vgIb83jGQKFGYWY76z4a7weZXUolw3G+OvpZqSRcfYOoOVUQJYEPsWeQK8pKEnUtWxQ== + version "3.33.0" + resolved "https://registry.yarnpkg.com/core-js/-/core-js-3.33.0.tgz#70366dbf737134761edb017990cf5ce6c6369c40" + integrity sha512-HoZr92+ZjFEKar5HS6MC776gYslNOKHt75mEBKWKnPeFDpZ6nH5OeF3S6HFT1mUAUZKrzkez05VboaX8myjSuw== core-util-is@~1.0.0: version "1.0.3" @@ -8707,9 +8722,9 @@ defaults@^1.0.3: clone "^1.0.2" define-data-property@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/define-data-property/-/define-data-property-1.0.1.tgz#37589faaa735405b557fcb9537b46b575655c4cb" - integrity sha512-22M+6zEspQHx10bfFQl2ET39IvfuQ7+rZIH7+ard8fCC4hPmkOSy+8JhKxBRLaWUziJ0O63NTYT97LR8zUfPTw== + version "1.1.0" + resolved "https://registry.yarnpkg.com/define-data-property/-/define-data-property-1.1.0.tgz#0db13540704e1d8d479a0656cf781267531b9451" + integrity sha512-UzGwzcjyv3OtAvolTj1GoyNYzfFR+iqbGjcnBEENZVCpM4/Ng1yhGNvS3lR/xDS74Tb2wGG9WzNSNIOS9UVb2g== dependencies: get-intrinsic "^1.2.1" gopd "^1.0.1" @@ -8720,7 +8735,7 @@ define-lazy-prop@^2.0.0: resolved "https://registry.yarnpkg.com/define-lazy-prop/-/define-lazy-prop-2.0.0.tgz#3f7ae421129bcaaac9bc74905c98a0009ec9ee7f" integrity sha512-Ds09qNh8yw3khSjiJjiUInaGX9xlqZDY7JVryGxdxV7NPeuqQfplOpQ66yJFZut3jLa5zOwkXw1g9EI2uKh4Og== -define-properties@^1.1.2, define-properties@^1.1.3, define-properties@^1.1.4, define-properties@^1.2.0: +define-properties@^1.1.2, define-properties@^1.1.3, define-properties@^1.1.4, define-properties@^1.2.0, define-properties@^1.2.1: version "1.2.1" resolved "https://registry.yarnpkg.com/define-properties/-/define-properties-1.2.1.tgz#10781cc616eb951a80a034bafcaa7377f6af2b6c" integrity sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg== @@ -9130,10 +9145,10 @@ ejs@^3.1.7: dependencies: jake "^10.8.5" -electron-to-chromium@^1.4.477: - version "1.4.519" - resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.4.519.tgz#01b9bc3f1bb50c4971bdd1eeca6d9a73575bd581" - integrity sha512-kqs9oGYL4UFVkLKhqCTgBCYZv+wZ374yABDMqlDda9HvlkQxvSr7kgf4hfWVjMieDbX+1MwPHFBsOGCMIBaFKg== +electron-to-chromium@^1.4.535: + version "1.4.548" + resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.4.548.tgz#e695d769e0e801fa6d438b63f6bc9b80372000d6" + integrity sha512-R77KD6mXv37DOyKLN/eW1rGS61N6yHOfapNSX9w+y9DdPG83l9Gkuv7qkCFZ4Ta4JPhrjgQfYbv4Y3TnM1Hi2Q== elliptic@^6.5.3, elliptic@^6.5.4: version "6.5.4" @@ -9285,17 +9300,17 @@ error-stack-parser@^2.0.6: stackframe "^1.3.4" es-abstract@^1.22.1: - version "1.22.1" - resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.22.1.tgz#8b4e5fc5cefd7f1660f0f8e1a52900dfbc9d9ccc" - integrity sha512-ioRRcXMO6OFyRpyzV3kE1IIBd4WG5/kltnzdxSCqoP8CMGs/Li+M1uF5o7lOkZVFjDs+NLesthnF66Pg/0q0Lw== + version "1.22.2" + resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.22.2.tgz#90f7282d91d0ad577f505e423e52d4c1d93c1b8a" + integrity sha512-YoxfFcDmhjOgWPWsV13+2RNjq1F6UQnfs+8TftwNqtzlmFzEXvlUwdrNrYeaizfjQzRMxkZ6ElWMOJIFKdVqwA== dependencies: array-buffer-byte-length "^1.0.0" - arraybuffer.prototype.slice "^1.0.1" + arraybuffer.prototype.slice "^1.0.2" available-typed-arrays "^1.0.5" call-bind "^1.0.2" es-set-tostringtag "^2.0.1" es-to-primitive "^1.2.1" - function.prototype.name "^1.1.5" + function.prototype.name "^1.1.6" get-intrinsic "^1.2.1" get-symbol-description "^1.0.0" globalthis "^1.0.3" @@ -9311,23 +9326,23 @@ es-abstract@^1.22.1: is-regex "^1.1.4" is-shared-array-buffer "^1.0.2" is-string "^1.0.7" - is-typed-array "^1.1.10" + is-typed-array "^1.1.12" is-weakref "^1.0.2" object-inspect "^1.12.3" object-keys "^1.1.1" object.assign "^4.1.4" - regexp.prototype.flags "^1.5.0" - safe-array-concat "^1.0.0" + regexp.prototype.flags "^1.5.1" + safe-array-concat "^1.0.1" safe-regex-test "^1.0.0" - string.prototype.trim "^1.2.7" - string.prototype.trimend "^1.0.6" - string.prototype.trimstart "^1.0.6" + string.prototype.trim "^1.2.8" + string.prototype.trimend "^1.0.7" + string.prototype.trimstart "^1.0.7" typed-array-buffer "^1.0.0" typed-array-byte-length "^1.0.0" typed-array-byte-offset "^1.0.0" typed-array-length "^1.0.4" unbox-primitive "^1.0.2" - which-typed-array "^1.1.10" + which-typed-array "^1.1.11" es-array-method-boxes-properly@^1.0.0: version "1.0.0" @@ -9350,13 +9365,13 @@ es-get-iterator@^1.0.2, es-get-iterator@^1.1.3: stop-iteration-iterator "^1.0.0" es-iterator-helpers@^1.0.12: - version "1.0.14" - resolved "https://registry.yarnpkg.com/es-iterator-helpers/-/es-iterator-helpers-1.0.14.tgz#19cd7903697d97e21198f3293b55e8985791c365" - integrity sha512-JgtVnwiuoRuzLvqelrvN3Xu7H9bu2ap/kQ2CrM62iidP8SKuD99rWU3CJy++s7IVL2qb/AjXPGR/E7i9ngd/Cw== + version "1.0.15" + resolved "https://registry.yarnpkg.com/es-iterator-helpers/-/es-iterator-helpers-1.0.15.tgz#bd81d275ac766431d19305923707c3efd9f1ae40" + integrity sha512-GhoY8uYqd6iwUl2kgjTm4CZAf6oo5mHK7BPqx3rKgx893YSsy0LGHV6gfqqQvZt/8xM8xeOnfXBCfqclMKkJ5g== dependencies: asynciterator.prototype "^1.0.0" call-bind "^1.0.2" - define-properties "^1.2.0" + define-properties "^1.2.1" es-abstract "^1.22.1" es-set-tostringtag "^2.0.1" function-bind "^1.1.1" @@ -9366,8 +9381,8 @@ es-iterator-helpers@^1.0.12: has-proto "^1.0.1" has-symbols "^1.0.3" internal-slot "^1.0.5" - iterator.prototype "^1.1.0" - safe-array-concat "^1.0.0" + iterator.prototype "^1.1.2" + safe-array-concat "^1.0.1" es-module-lexer@^1.2.1: version "1.3.1" @@ -9589,12 +9604,12 @@ eslint-plugin-jsx-a11y@^6.5.1: semver "^6.3.0" eslint-plugin-mocha@^10.0.3: - version "10.1.0" - resolved "https://registry.yarnpkg.com/eslint-plugin-mocha/-/eslint-plugin-mocha-10.1.0.tgz#69325414f875be87fb2cb00b2ef33168d4eb7c8d" - integrity sha512-xLqqWUF17llsogVOC+8C6/jvQ+4IoOREbN7ZCHuOHuD6cT5cDD4h7f2LgsZuzMAiwswWE21tO7ExaknHVDrSkw== + version "10.2.0" + resolved "https://registry.yarnpkg.com/eslint-plugin-mocha/-/eslint-plugin-mocha-10.2.0.tgz#15b05ce5be4b332bb0d76826ec1c5ebf67102ad6" + integrity sha512-ZhdxzSZnd1P9LqDPF0DBcFLpRIGdh1zkF2JHnQklKQOvrQtT73kdP5K9V2mzvbLR+cCAO9OI48NXK/Ax9/ciCQ== dependencies: eslint-utils "^3.0.0" - rambda "^7.1.0" + rambda "^7.4.0" eslint-plugin-prettier@^4.0.0: version "4.2.1" @@ -9739,14 +9754,14 @@ eslint@^7.18.0: v8-compile-cache "^2.0.3" eslint@^8.10.0: - version "8.49.0" - resolved "https://registry.yarnpkg.com/eslint/-/eslint-8.49.0.tgz#09d80a89bdb4edee2efcf6964623af1054bf6d42" - integrity sha512-jw03ENfm6VJI0jA9U+8H5zfl5b+FvuU3YYvZRdZHOlU2ggJkxrlkJH4HcDrZpj6YwD8kuYqvQM8LyesoazrSOQ== + version "8.51.0" + resolved "https://registry.yarnpkg.com/eslint/-/eslint-8.51.0.tgz#4a82dae60d209ac89a5cff1604fea978ba4950f3" + integrity sha512-2WuxRZBrlwnXi+/vFSJyjMqrNjtJqiasMzehF0shoLaW7DzS3/9Yvrmq5JiT66+pNjiX4UBnLDiKHcWAr/OInA== dependencies: "@eslint-community/eslint-utils" "^4.2.0" "@eslint-community/regexpp" "^4.6.1" "@eslint/eslintrc" "^2.1.2" - "@eslint/js" "8.49.0" + "@eslint/js" "8.51.0" "@humanwhocodes/config-array" "^0.11.11" "@humanwhocodes/module-importer" "^1.0.1" "@nodelib/fs.walk" "^1.2.8" @@ -10148,17 +10163,6 @@ fast-fifo@^1.1.0, fast-fifo@^1.2.0: resolved "https://registry.yarnpkg.com/fast-fifo/-/fast-fifo-1.3.2.tgz#286e31de96eb96d38a97899815740ba2a4f3640c" integrity sha512-/d9sfos4yxzpwkDkuN7k2SqFKtYNmCTzgfEpz82x34IM9/zc8KGxQoXg1liNC/izpRM/MBdt44Nmx41ZWqk+FQ== -fast-glob@3.2.7: - version "3.2.7" - resolved "https://registry.yarnpkg.com/fast-glob/-/fast-glob-3.2.7.tgz#fd6cb7a2d7e9aa7a7846111e85a196d6b2f766a1" - integrity sha512-rYGMRwip6lUMvYD3BTScMwT1HtAs2d71SMv66Vrxs0IekGZEjhM0pcMfjQPnknBt2zeCwQMEupiN02ZP4DiT1Q== - dependencies: - "@nodelib/fs.stat" "^2.0.2" - "@nodelib/fs.walk" "^1.2.3" - glob-parent "^5.1.2" - merge2 "^1.3.0" - micromatch "^4.0.4" - fast-glob@^2.2.6: version "2.2.7" resolved "https://registry.yarnpkg.com/fast-glob/-/fast-glob-2.2.7.tgz#6953857c3afa475fff92ee6015d52da70a4cd39d" @@ -10425,11 +10429,11 @@ find-up@^6.3.0: path-exists "^5.0.0" flat-cache@^3.0.4: - version "3.1.0" - resolved "https://registry.yarnpkg.com/flat-cache/-/flat-cache-3.1.0.tgz#0e54ab4a1a60fe87e2946b6b00657f1c99e1af3f" - integrity sha512-OHx4Qwrrt0E4jEIcI5/Xb+f+QmJYNj2rrK8wiIdQOIrB9WrrJL8cjZvXdXuBTkkEwEqLycb5BeZDV1o2i9bTew== + version "3.1.1" + resolved "https://registry.yarnpkg.com/flat-cache/-/flat-cache-3.1.1.tgz#a02a15fdec25a8f844ff7cc658f03dd99eb4609b" + integrity sha512-/qM2b3LUIaIgviBQovTLvijfyOQXPtSRnRK26ksj2J7rzPIecePUIpJsZ4T02Qg+xiAEKIs5K8dsHEd+VaKa/Q== dependencies: - flatted "^3.2.7" + flatted "^3.2.9" keyv "^4.5.3" rimraf "^3.0.2" @@ -10438,10 +10442,10 @@ flat@^5.0.2: resolved "https://registry.yarnpkg.com/flat/-/flat-5.0.2.tgz#8ca6fe332069ffa9d324c327198c598259ceb241" integrity sha512-b6suED+5/3rTpUBdG1gupIl8MPFCAMA0QXwmljLhvCUKcUvdE4gWky9zpuGCcXHOsz4J9wPGNWq6OKpmIzz3hQ== -flatted@^3.2.7: - version "3.2.7" - resolved "https://registry.yarnpkg.com/flatted/-/flatted-3.2.7.tgz#609f39207cb614b89d0765b477cb2d437fbf9787" - integrity sha512-5nqDSxl8nn5BSNxyR3n4I6eDmbolI6WT+QqR547RwxQapgjQBmtktdP+HTBb/a/zLsbzERTONyUB5pefh5TtjQ== +flatted@^3.2.9: + version "3.2.9" + resolved "https://registry.yarnpkg.com/flatted/-/flatted-3.2.9.tgz#7eb4c67ca1ba34232ca9d2d93e9886e611ad7daf" + integrity sha512-36yxDn5H7OFZQla0/jFJmbIKTdZAQHngCedGxiMmpNfEZM0sdEeT+WczLQrjK6D7o2aiyLYDnkw0R3JK0Qv1RQ== flush-write-stream@^1.0.0: version "1.1.1" @@ -10459,9 +10463,9 @@ focus-lock@^0.8.0: tslib "^1.9.3" follow-redirects@^1.0.0, follow-redirects@^1.14.0, follow-redirects@^1.15.0: - version "1.15.2" - resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.15.2.tgz#b460864144ba63f2681096f274c4e57026da2c13" - integrity sha512-VQLG33o04KaQ8uYi2tVNbdrWp1QWxNNea+nmIB4EVM28v0hmP17z7aG1+wAkNzVq4KeXTq3221ye5qTJP91JwA== + version "1.15.3" + resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.15.3.tgz#fe2f3ef2690afce7e82ed0b44db08165b207123a" + integrity sha512-1VzOtuEM8pC9SFU1E+8KfTjZyMztRsgEfwQl44z8A25uy13jSzTj6dyK2Df52iV0vgHCfBwLhDWevLn95w5v6Q== for-each@^0.3.3: version "0.3.3" @@ -10650,9 +10654,9 @@ fs-minipass@^3.0.0: minipass "^7.0.3" fs-monkey@^1.0.4: - version "1.0.4" - resolved "https://registry.yarnpkg.com/fs-monkey/-/fs-monkey-1.0.4.tgz#ee8c1b53d3fe8bb7e5d2c5c5dfc0168afdd2f747" - integrity sha512-INM/fWAxMICjttnD0DX1rBvinKskj5G1w+oy/pnm9u/tSlnBrzFonJMcalKJ30P8RRsPzKcCG7Q8l0jx5Fh9YQ== + version "1.0.5" + resolved "https://registry.yarnpkg.com/fs-monkey/-/fs-monkey-1.0.5.tgz#fe450175f0db0d7ea758102e1d84096acb925788" + integrity sha512-8uMbBjrhzW76TYgEV27Y5E//W2f/lTFmx78P2w19FZSxarhI/798APGQyuGCwmkNxgwGRhrLfvWyLBvNtuOmew== fs-write-stream-atomic@^1.0.8: version "1.0.10" @@ -10687,7 +10691,7 @@ function-bind@^1.1.1: resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.1.tgz#a56899d3ea3c9bab874bb9773b7c5ede92f4895d" integrity sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A== -function.prototype.name@^1.1.0, function.prototype.name@^1.1.5: +function.prototype.name@^1.1.0, function.prototype.name@^1.1.5, function.prototype.name@^1.1.6: version "1.1.6" resolved "https://registry.yarnpkg.com/function.prototype.name/-/function.prototype.name-1.1.6.tgz#cdf315b7d90ee77a4c6ee216c3c3362da07533fd" integrity sha512-Z5kx79swU5P27WEayXM1tBi5Ze/lbIyiNgU3qyXUOf9b2rgXYyF9Dy9Cx+IQv/Lc8WCG6L82zwUPpSS9hGehIg== @@ -10932,12 +10936,12 @@ glob@7.2.0: path-is-absolute "^1.0.0" glob@^10.2.2: - version "10.3.4" - resolved "https://registry.yarnpkg.com/glob/-/glob-10.3.4.tgz#c85c9c7ab98669102b6defda76d35c5b1ef9766f" - integrity sha512-6LFElP3A+i/Q8XQKEvZjkEWEOTgAIALR9AO2rwT8bgPhDd1anmqDJDZ6lLddI4ehxxxR1S5RIqKe1uapMQfYaQ== + version "10.3.10" + resolved "https://registry.yarnpkg.com/glob/-/glob-10.3.10.tgz#0351ebb809fd187fe421ab96af83d3a70715df4b" + integrity sha512-fa46+tv1Ak0UPK1TOy/pZrIybNNt4HCv7SDzwyfiOZkvZLEbjsZkJBPtDHVshZjbecAoAGSC20MjLDG/qr679g== dependencies: foreground-child "^3.1.0" - jackspeak "^2.0.3" + jackspeak "^2.3.5" minimatch "^9.0.1" minipass "^5.0.0 || ^6.0.2 || ^7.0.0" path-scurry "^1.10.1" @@ -10989,9 +10993,9 @@ globals@^11.1.0: integrity sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA== globals@^13.19.0, globals@^13.6.0, globals@^13.9.0: - version "13.21.0" - resolved "https://registry.yarnpkg.com/globals/-/globals-13.21.0.tgz#163aae12f34ef502f5153cfbdd3600f36c63c571" - integrity sha512-ybyme3s4yy/t/3s35bewwXKOf7cvzfreG2lH0lZl0JB7I4GxRP2ghxOK/Nb9EkRXdbBXZLfq/p/0W2JUONB/Gg== + version "13.23.0" + resolved "https://registry.yarnpkg.com/globals/-/globals-13.23.0.tgz#ef31673c926a0976e1f61dab4dca57e0c0a8af02" + integrity sha512-XAmF0RjlrjY23MA51q3HltdlGxUpXPvg0GioKiD9X6HD28iMjo2dKC8Vqwm7lne4GNr78+RHTfliktR6ZH09wA== dependencies: type-fest "^0.20.2" @@ -11172,11 +11176,9 @@ has-values@^1.0.0: kind-of "^4.0.0" has@^1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/has/-/has-1.0.3.tgz#722d7cbfc1f6aa8241f16dd814e011e1f41e8796" - integrity sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw== - dependencies: - function-bind "^1.1.1" + version "1.0.4" + resolved "https://registry.yarnpkg.com/has/-/has-1.0.4.tgz#2eb2860e000011dae4f1406a86fe80e530fb2ec6" + integrity sha512-qdSAmqLF6209RFj4VVItywPMbm3vWylknmB3nvNiUIs72xAimcM8nVYxYr7ncvZq5qzk9MKIZR8ijqD/1QuYjQ== hash-base@^3.0.0: version "3.1.0" @@ -12255,7 +12257,7 @@ is-text-path@^1.0.1: dependencies: text-extensions "^1.0.0" -is-typed-array@^1.1.10, is-typed-array@^1.1.9: +is-typed-array@^1.1.10, is-typed-array@^1.1.12, is-typed-array@^1.1.9: version "1.1.12" resolved "https://registry.yarnpkg.com/is-typed-array/-/is-typed-array-1.1.12.tgz#d0bab5686ef4a76f7a73097b95470ab199c57d4a" integrity sha512-Z14TF2JNG8Lss5/HMqt0//T9JeHXttXy5pH/DBU4vi98ozO2btxzq9MwYDZYnKwU8nRsz/+GVFVRDq3DkVuSPg== @@ -12391,9 +12393,9 @@ istanbul-lib-instrument@^5.0.4, istanbul-lib-instrument@^5.1.0: semver "^6.3.0" istanbul-lib-instrument@^6.0.0: - version "6.0.0" - resolved "https://registry.yarnpkg.com/istanbul-lib-instrument/-/istanbul-lib-instrument-6.0.0.tgz#7a8af094cbfff1d5bb280f62ce043695ae8dd5b8" - integrity sha512-x58orMzEVfzPUKqlbLd1hXCnySCxKdDKa6Rjg97CwuLLRI4g3FHTdnExu1OqffVFay6zeMW+T6/DowFLndWnIw== + version "6.0.1" + resolved "https://registry.yarnpkg.com/istanbul-lib-instrument/-/istanbul-lib-instrument-6.0.1.tgz#71e87707e8041428732518c6fb5211761753fbdf" + integrity sha512-EAMEJBsYuyyztxMxW3g7ugGPkrZsV57v0Hmv3mm1uQsmB+QnZuepg731CRaIgeUVSdmsTngOkSnauNF8p7FIhA== dependencies: "@babel/core" "^7.12.3" "@babel/parser" "^7.14.7" @@ -12440,20 +12442,21 @@ iterate-value@^1.0.2: es-get-iterator "^1.0.2" iterate-iterator "^1.0.1" -iterator.prototype@^1.1.0: - version "1.1.1" - resolved "https://registry.yarnpkg.com/iterator.prototype/-/iterator.prototype-1.1.1.tgz#ab5b790e23ec00658f5974e032a2b05188bd3a5c" - integrity sha512-9E+nePc8C9cnQldmNl6bgpTY6zI4OPRZd97fhJ/iVZ1GifIUDVV5F6x1nEDqpe8KaMEZGT4xgrwKQDxXnjOIZQ== +iterator.prototype@^1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/iterator.prototype/-/iterator.prototype-1.1.2.tgz#5e29c8924f01916cb9335f1ff80619dcff22b0c0" + integrity sha512-DR33HMMr8EzwuRL8Y9D3u2BMj8+RqSE850jfGu59kS7tbmPLzGkZmVSfyCFSDxuZiEY6Rzt3T2NA/qU+NwVj1w== dependencies: - define-properties "^1.2.0" + define-properties "^1.2.1" get-intrinsic "^1.2.1" has-symbols "^1.0.3" - reflect.getprototypeof "^1.0.3" + reflect.getprototypeof "^1.0.4" + set-function-name "^2.0.1" -jackspeak@^2.0.3: - version "2.3.3" - resolved "https://registry.yarnpkg.com/jackspeak/-/jackspeak-2.3.3.tgz#95e4cbcc03b3eb357bf6bcce14a903fb3d1151e1" - integrity sha512-R2bUw+kVZFS/h1AZqBKrSgDmdmjApzgY0AlCPumopFiAlbUxE2gf+SCuBzQ0cP5hHmUmFYF5yw55T97Th5Kstg== +jackspeak@^2.3.5: + version "2.3.6" + resolved "https://registry.yarnpkg.com/jackspeak/-/jackspeak-2.3.6.tgz#647ecc472238aee4b06ac0e461acc21a8c505ca8" + integrity sha512-N3yCS/NegsOBokc8GAdM8UcmfsKiSS8cipheD/nivzr700H+nsMOxJjQnvwOcRYVuFkdH0wGUvW2WbXGmrZGbQ== dependencies: "@isaacs/cliui" "^8.0.2" optionalDependencies: @@ -12636,7 +12639,7 @@ jest-config@^29.7.0: slash "^3.0.0" strip-json-comments "^3.1.1" -"jest-diff@>=29.4.3 < 30", jest-diff@^29.7.0: +"jest-diff@>=29.4.3 < 30", jest-diff@^29.4.1, jest-diff@^29.7.0: version "29.7.0" resolved "https://registry.yarnpkg.com/jest-diff/-/jest-diff-29.7.0.tgz#017934a66ebb7ecf6f205e84699be10afd70458a" integrity sha512-LMIgiIrhigmPrs03JHpxUh2yISK3vLFPkAodPeo0+BuF7wA2FoQbkEg1u8gBYBThncu7e1oEDUfIXVuTqLRUjw== @@ -13569,9 +13572,9 @@ junk@^3.1.0: integrity sha512-pBxcB3LFc8QVgdggvZWyeys+hnrNWg4OcZIU/1X59k5jQdLBlCsYGRQaz234SqoRLTCgMH00fY0xRJH+F9METQ== keyv@^4.5.3: - version "4.5.3" - resolved "https://registry.yarnpkg.com/keyv/-/keyv-4.5.3.tgz#00873d2b046df737963157bd04f294ca818c9c25" - integrity sha512-QCiSav9WaX1PgETJ+SpNnx2PRRapJ/oRSXM4VO5OGYGSjrxbKPVFVhB3l2OCbLCk329N8qyAtsJjSjvVBWzEug== + version "4.5.4" + resolved "https://registry.yarnpkg.com/keyv/-/keyv-4.5.4.tgz#a879a99e29452f942439f2a405e3af8b31d4de93" + integrity sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw== dependencies: json-buffer "3.0.1" @@ -13627,12 +13630,12 @@ language-tags@=1.0.5: language-subtag-registry "~0.3.2" launch-editor@^2.6.0: - version "2.6.0" - resolved "https://registry.yarnpkg.com/launch-editor/-/launch-editor-2.6.0.tgz#4c0c1a6ac126c572bd9ff9a30da1d2cae66defd7" - integrity sha512-JpDCcQnyAAzZZaZ7vEiSqL690w7dAEyLao+KC96zBplnYbJS7TYNjvM3M7y3dGz+v7aIsJk3hllWuc0kWAjyRQ== + version "2.6.1" + resolved "https://registry.yarnpkg.com/launch-editor/-/launch-editor-2.6.1.tgz#f259c9ef95cbc9425620bbbd14b468fcdb4ffe3c" + integrity sha512-eB/uXmFVpY4zezmGp5XtU21kwo7GBbKB+EQ+UZeWtGb9yAM5xt/Evk+lYH3eRNAtId+ej4u7TYPFZ07w4s7rRw== dependencies: picocolors "^1.0.0" - shell-quote "^1.7.3" + shell-quote "^1.8.1" lazy-universal-dotenv@^3.0.1: version "3.0.1" @@ -13762,16 +13765,16 @@ libnpmpublish@7.3.0: ssri "^10.0.1" libsodium-wrappers@^0.7.6: - version "0.7.11" - resolved "https://registry.yarnpkg.com/libsodium-wrappers/-/libsodium-wrappers-0.7.11.tgz#53bd20606dffcc54ea2122133c7da38218f575f7" - integrity sha512-SrcLtXj7BM19vUKtQuyQKiQCRJPgbpauzl3s0rSwD+60wtHqSUuqcoawlMDheCJga85nKOQwxNYQxf/CKAvs6Q== + version "0.7.13" + resolved "https://registry.yarnpkg.com/libsodium-wrappers/-/libsodium-wrappers-0.7.13.tgz#83299e06ee1466057ba0e64e532777d2929b90d3" + integrity sha512-kasvDsEi/r1fMzKouIDv7B8I6vNmknXwGiYodErGuESoFTohGSKZplFtVxZqHaoQ217AynyIFgnOVRitpHs0Qw== dependencies: - libsodium "^0.7.11" + libsodium "^0.7.13" -libsodium@^0.7.11: - version "0.7.11" - resolved "https://registry.yarnpkg.com/libsodium/-/libsodium-0.7.11.tgz#cd10aae7bcc34a300cc6ad0ac88fcca674cfbc2e" - integrity sha512-WPfJ7sS53I2s4iM58QxY3Inb83/6mjlYgcmZs7DJsvDlnmVUwNinBCi5vBT43P6bHRy01O4zsMU2CoVR6xJ40A== +libsodium@^0.7.13: + version "0.7.13" + resolved "https://registry.yarnpkg.com/libsodium/-/libsodium-0.7.13.tgz#230712ec0b7447c57b39489c48a4af01985fb393" + integrity sha512-mK8ju0fnrKXXfleL53vtp9xiPq5hKM0zbDQtcxQIsSmxNgSxqCj6R7Hl9PkrNe2j29T4yoDaF7DJLK9/i5iWUw== lie@3.1.1: version "3.1.1" @@ -14059,9 +14062,9 @@ magic-string@^0.27.0: "@jridgewell/sourcemap-codec" "^1.4.13" magic-string@^0.30.2: - version "0.30.3" - resolved "https://registry.yarnpkg.com/magic-string/-/magic-string-0.30.3.tgz#403755dfd9d6b398dfa40635d52e96c5ac095b85" - integrity sha512-B7xGbll2fG/VjP+SWg4sX3JynwIU0mjoTc6MPpKNuIvftk6u6vqhDnk1R80b8C2GBR6ywqy+1DcKBrevBg+bmw== + version "0.30.4" + resolved "https://registry.yarnpkg.com/magic-string/-/magic-string-0.30.4.tgz#c2c683265fc18dda49b56fc7318d33ca0332c98c" + integrity sha512-Q/TKtsC5BPm0kGqgBIF9oXAs/xEf2vRKiIB4wCRQTJOQIByZ1d+NnUOotvJOvNpi5RNIgVOMC3pOuaP1ZTDlVg== dependencies: "@jridgewell/sourcemap-codec" "^1.4.15" @@ -14987,9 +14990,9 @@ minipass@^5.0.0: integrity sha512-3FnjYuehv9k6ovOEbyOswadCDPX1piCfhV8ncmYtHOjuPwylVWsghTLo7rabjC3Rx5xD4HDx8Wm1xnMF7S5qFQ== "minipass@^5.0.0 || ^6.0.2 || ^7.0.0", minipass@^7.0.3: - version "7.0.3" - resolved "https://registry.yarnpkg.com/minipass/-/minipass-7.0.3.tgz#05ea638da44e475037ed94d1c7efcc76a25e1974" - integrity sha512-LhbbwCfz3vsb12j/WkWQPZfKTsgqIe1Nf/ti1pKjYESGLHIVjWU96G9/ljLH4F9mWNVhlQOm0VySdAWzf05dpg== + version "7.0.4" + resolved "https://registry.yarnpkg.com/minipass/-/minipass-7.0.4.tgz#dbce03740f50a4786ba994c1fb908844d27b038c" + integrity sha512-jYofLM5Dam9279rdkWzqHozUo4ybjdZmCsDHePy5V/PbBcVMiSZR97gmAy45aqi8CK1lG2ECd356FU86avfwUQ== minizlib@^2.1.1, minizlib@^2.1.2: version "2.1.2" @@ -15231,9 +15234,9 @@ no-case@^3.0.4: tslib "^2.0.3" node-abi@^3.3.0: - version "3.47.0" - resolved "https://registry.yarnpkg.com/node-abi/-/node-abi-3.47.0.tgz#6cbfa2916805ae25c2b7156ca640131632eb05e8" - integrity sha512-2s6B2CWZM//kPgwnuI0KrYwNjfdByE25zvAaEpq9IH4zcNsarH8Ihu/UuX6XMPEogDAxkuUFeZn60pXNHAqn3A== + version "3.48.0" + resolved "https://registry.yarnpkg.com/node-abi/-/node-abi-3.48.0.tgz#122d132ae1ac097b0d711144560b17922de026ab" + integrity sha512-uWR/uwQyVV2iN5+Wkf1/oQxOR9YjU7gBclJLg2qK7GDvVohcnY6LaBXKV89N79EQFyN4/e43O32yQYE5QdFYTA== dependencies: semver "^7.3.5" @@ -15470,9 +15473,9 @@ npm-bundled@^3.0.0: npm-normalize-package-bin "^3.0.0" npm-install-checks@^6.0.0: - version "6.2.0" - resolved "https://registry.yarnpkg.com/npm-install-checks/-/npm-install-checks-6.2.0.tgz#fae55b9967b03ac309695ec96629492d5cedf371" - integrity sha512-744wat5wAAHsxa4590mWO0tJ8PKxR8ORZsH9wGpQc3nWTzozMAgBN/XyqYw7mg3yqLM8dLwEnwSfKMmXAjF69g== + version "6.3.0" + resolved "https://registry.yarnpkg.com/npm-install-checks/-/npm-install-checks-6.3.0.tgz#046552d8920e801fa9f919cad569545d60e826fe" + integrity sha512-W29RiK/xtpCGqn6f3ixfRYGk+zRyr+Ew9F2E20BfXxT5/euLdA/Nm7fO7OeTGuAmTs30cpgInyJ0cYe708YTZw== dependencies: semver "^7.1.1" @@ -15611,12 +15614,12 @@ nwsapi@^2.2.0: resolved "https://registry.yarnpkg.com/nwsapi/-/nwsapi-2.2.7.tgz#738e0707d3128cb750dddcfe90e4610482df0f30" integrity sha512-ub5E4+FBPKwAZx0UwIQOjYWGHTEq5sPqHQNRN8Z9e4A7u3Tj1weLJsL59yH9vmvqEtBHaOmT6cYQKIZOxp35FQ== -nx@16.8.1, "nx@>=16.5.1 < 17": - version "16.8.1" - resolved "https://registry.yarnpkg.com/nx/-/nx-16.8.1.tgz#b3b084da5f880c638debbefbf33eeccb96633595" - integrity sha512-K5KrwNdPz0eEe6SY5wrnhZcigjfIJkttPrIJRXNBQTE50NGcOfz1TjMXPdTWBxBCCua5PAealO3OrE8jpv+QnQ== +nx@16.10.0, "nx@>=16.5.1 < 17": + version "16.10.0" + resolved "https://registry.yarnpkg.com/nx/-/nx-16.10.0.tgz#b070461f7de0a3d7988bd78558ea84cda3543ace" + integrity sha512-gZl4iCC0Hx0Qe1VWmO4Bkeul2nttuXdPpfnlcDKSACGu3ZIo+uySqwOF8yBAxSTIf8xe2JRhgzJN1aFkuezEBg== dependencies: - "@nrwl/tao" "16.8.1" + "@nrwl/tao" "16.10.0" "@parcel/watcher" "2.0.4" "@yarnpkg/lockfile" "^1.1.0" "@yarnpkg/parsers" "3.0.0-rc.46" @@ -15625,16 +15628,16 @@ nx@16.8.1, "nx@>=16.5.1 < 17": chalk "^4.1.0" cli-cursor "3.1.0" cli-spinners "2.6.1" - cliui "^7.0.2" + cliui "^8.0.1" dotenv "~16.3.1" dotenv-expand "~10.0.0" enquirer "~2.3.6" - fast-glob "3.2.7" figures "3.2.0" flat "^5.0.2" fs-extra "^11.1.0" glob "7.1.4" ignore "^5.0.4" + jest-diff "^29.4.1" js-yaml "4.1.0" jsonc-parser "3.2.0" lines-and-columns "~2.0.3" @@ -15653,16 +15656,16 @@ nx@16.8.1, "nx@>=16.5.1 < 17": yargs "^17.6.2" yargs-parser "21.1.1" optionalDependencies: - "@nx/nx-darwin-arm64" "16.8.1" - "@nx/nx-darwin-x64" "16.8.1" - "@nx/nx-freebsd-x64" "16.8.1" - "@nx/nx-linux-arm-gnueabihf" "16.8.1" - "@nx/nx-linux-arm64-gnu" "16.8.1" - "@nx/nx-linux-arm64-musl" "16.8.1" - "@nx/nx-linux-x64-gnu" "16.8.1" - "@nx/nx-linux-x64-musl" "16.8.1" - "@nx/nx-win32-arm64-msvc" "16.8.1" - "@nx/nx-win32-x64-msvc" "16.8.1" + "@nx/nx-darwin-arm64" "16.10.0" + "@nx/nx-darwin-x64" "16.10.0" + "@nx/nx-freebsd-x64" "16.10.0" + "@nx/nx-linux-arm-gnueabihf" "16.10.0" + "@nx/nx-linux-arm64-gnu" "16.10.0" + "@nx/nx-linux-arm64-musl" "16.10.0" + "@nx/nx-linux-x64-gnu" "16.10.0" + "@nx/nx-linux-x64-musl" "16.10.0" + "@nx/nx-win32-arm64-msvc" "16.10.0" + "@nx/nx-win32-x64-msvc" "16.10.0" object-assign@^4.0.1, object-assign@^4.1.1: version "4.1.1" @@ -16922,9 +16925,9 @@ postcss@^7.0.14, postcss@^7.0.26, postcss@^7.0.32, postcss@^7.0.36, postcss@^7.0 source-map "^0.6.1" postcss@^8.2.15, postcss@^8.3.5, postcss@^8.4.21, postcss@^8.4.24: - version "8.4.29" - resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.4.29.tgz#33bc121cf3b3688d4ddef50be869b2a54185a1dd" - integrity sha512-cbI+jaqIeu/VGqXEarWkRCCffhjgXc0qjBtXpqJhTBohMUjUQnbBr0xqX3vEKudc4iviTewcJo5ajcec5+wdJw== + version "8.4.31" + resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.4.31.tgz#92b451050a9f914da6755af352bdc0192508656d" + integrity sha512-PS08Iboia9mts/2ygV3eLpY5ghnUcfLV/EXTOW1E2qYxJKGGBUtNjN76FYHnMs36RmARn41bC0AZmn+rR0OVpQ== dependencies: nanoid "^3.3.6" picocolors "^1.0.0" @@ -17070,13 +17073,15 @@ promise.allsettled@^1.0.0: iterate-value "^1.0.2" promise.prototype.finally@^3.1.0: - version "3.1.5" - resolved "https://registry.yarnpkg.com/promise.prototype.finally/-/promise.prototype.finally-3.1.5.tgz#94ba0a29f925e6da0709faddf85163cd8ed892c2" - integrity sha512-4TQ3Dk8yyUZGyU+UXInKdkQ2b6xtiBXAIScGAtGnXVmJtG1uOrxRgbF1ggIu72uzoWFzUfT3nUKa1SuMm9NBdg== + version "3.1.7" + resolved "https://registry.yarnpkg.com/promise.prototype.finally/-/promise.prototype.finally-3.1.7.tgz#9d163f58edf3004d14878c988a22b1cb45e03407" + integrity sha512-iL9OcJRUZcCE5xn6IwhZxO+eMM0VEXjkETHy+Nk+d9q3s7kxVtPg+mBlMO+ZGxNKNMODyKmy/bOyt/yhxTnvEw== dependencies: call-bind "^1.0.2" - define-properties "^1.2.0" + define-properties "^1.2.1" es-abstract "^1.22.1" + get-intrinsic "^1.2.1" + set-function-name "^2.0.1" prompts@^2.0.1, prompts@^2.4.0: version "2.4.2" @@ -17238,9 +17243,9 @@ punycode@^2.1.0, punycode@^2.1.1: integrity sha512-rRV+zQD8tVFys26lAGR9WUuS4iUAngJScM+ZRSKtvl5tKeZ2t5bvdNFdNHBW9FWR4guGHlgmsZ1G7BSm2wTbuA== pure-rand@^6.0.0: - version "6.0.3" - resolved "https://registry.yarnpkg.com/pure-rand/-/pure-rand-6.0.3.tgz#3c9e6b53c09e52ac3cedffc85ab7c1c7094b38cb" - integrity sha512-KddyFewCsO0j3+np81IQ+SweXLDnDQTs5s67BOnrYmYe/yNmUhttQyGsYzy8yUnoljGAQ9sl38YB4vH8ur7Y+w== + version "6.0.4" + resolved "https://registry.yarnpkg.com/pure-rand/-/pure-rand-6.0.4.tgz#50b737f6a925468679bff00ad20eade53f37d5c7" + integrity sha512-LA0Y9kxMYv47GIPJy6MI84fqTd2HmYZI83W/kM/SkKfDlajnZYfmXFTxkbY+xSBPkLJxltMa9hIkmdc29eguMA== qr.js@0.0.0: version "0.0.0" @@ -17295,7 +17300,7 @@ quick-lru@^4.0.1: resolved "https://registry.yarnpkg.com/quick-lru/-/quick-lru-4.0.1.tgz#5b8878f113a58217848c6482026c73e1ba57727f" integrity sha512-ARhCpm70fzdcvNQfPoy49IaanKkTlRWF2JMzqhcJbhSFRZv7nPTvZJdcY7301IPmvW+/p0RgIWnQDLJxifsQ7g== -rambda@^7.1.0: +rambda@^7.4.0: version "7.5.0" resolved "https://registry.yarnpkg.com/rambda/-/rambda-7.5.0.tgz#1865044c59bc0b16f63026c6e5a97e4b1bbe98fe" integrity sha512-y/M9weqWAH4iopRd7EHDEQQvpFPHj1AA3oHozE9tfITHUtTR7Z9PSlIRRG2l1GuW7sefC1cXFfIcF+cgnShdBA== @@ -17416,9 +17421,9 @@ react-google-charts@^3.0.15: react-load-script "^0.0.6" react-hook-form@^7.14.2: - version "7.46.1" - resolved "https://registry.yarnpkg.com/react-hook-form/-/react-hook-form-7.46.1.tgz#39347dbff19d980cb41087ac32a57abdc6045bb3" - integrity sha512-0GfI31LRTBd5tqbXMGXT1Rdsv3rnvy0FjEk8Gn9/4tp6+s77T7DPZuGEpBRXOauL+NhyGT5iaXzdIM2R6F/E+w== + version "7.47.0" + resolved "https://registry.yarnpkg.com/react-hook-form/-/react-hook-form-7.47.0.tgz#a42f07266bd297ddf1f914f08f4b5f9783262f31" + integrity sha512-F/TroLjTICipmHeFlMrLtNLceO2xr1jU3CyiNla5zdwsGUGu2UOxxR4UyJgLlhMwLW/Wzp4cpJ7CPfgJIeKdSg== react-identicons@^1.2.5: version "1.2.5" @@ -17508,19 +17513,19 @@ react-resize-detector@^8.0.4: lodash "^4.17.21" react-router-dom@6, react-router-dom@^6.7.0: - version "6.15.0" - resolved "https://registry.yarnpkg.com/react-router-dom/-/react-router-dom-6.15.0.tgz#6da7db61e56797266fbbef0d5e324d6ac443ee40" - integrity sha512-aR42t0fs7brintwBGAv2+mGlCtgtFQeOzK0BM1/OiqEzRejOZtpMZepvgkscpMUnKb8YO84G7s3LsHnnDNonbQ== + version "6.16.0" + resolved "https://registry.yarnpkg.com/react-router-dom/-/react-router-dom-6.16.0.tgz#86f24658da35eb66727e75ecbb1a029e33ee39d9" + integrity sha512-aTfBLv3mk/gaKLxgRDUPbPw+s4Y/O+ma3rEN1u8EgEpLpPe6gNjIsWt9rxushMHHMb7mSwxRGdGlGdvmFsyPIg== dependencies: - "@remix-run/router" "1.8.0" - react-router "6.15.0" + "@remix-run/router" "1.9.0" + react-router "6.16.0" -react-router@6.15.0: - version "6.15.0" - resolved "https://registry.yarnpkg.com/react-router/-/react-router-6.15.0.tgz#bf2cb5a4a7ed57f074d4ea88db0d95033f39cac8" - integrity sha512-NIytlzvzLwJkCQj2HLefmeakxxWHWAP+02EGqWEZy+DgfHHKQMUoBBjUQLOtFInBMhWtb3hiUy6MfFgwLjXhqg== +react-router@6.16.0: + version "6.16.0" + resolved "https://registry.yarnpkg.com/react-router/-/react-router-6.16.0.tgz#abbf3d5bdc9c108c9b822a18be10ee004096fb81" + integrity sha512-VT4Mmc4jj5YyjpOi5jOf0I+TYzGpvzERy4ckNSvSh2RArv8LLoCxlsZ2D+tc7zgjxcY34oTz2hZaeX5RVprKqA== dependencies: - "@remix-run/router" "1.8.0" + "@remix-run/router" "1.9.0" react-simple-maps@^2.3.0: version "2.3.0" @@ -17541,9 +17546,9 @@ react-smooth@^2.0.2: react-transition-group "2.9.0" react-tooltip@*: - version "5.21.3" - resolved "https://registry.yarnpkg.com/react-tooltip/-/react-tooltip-5.21.3.tgz#131d578c7ea69f96c65dbd09f071880c34b4f83d" - integrity sha512-z3Q+Uka4D6uYxfsssPqfx1W8vw7NIHyC2ZMq+NJkWg4EpUD3w7Fwz/o+dezyUQMCHL7nO/2sFbtWIrkyxktq2Q== + version "5.21.5" + resolved "https://registry.yarnpkg.com/react-tooltip/-/react-tooltip-5.21.5.tgz#3e1bc02a0e674369dea81bb201d6106724dd60cf" + integrity sha512-ey70qf6pBGi4U6xpyNlZAHobAhlo2dfxmImR2Bzd/DbLTsAYWz3TEaK+RMFuUZMq6hSPRbUHQSkP2rHBq4uFVg== dependencies: "@floating-ui/dom" "^1.0.0" classnames "^2.3.0" @@ -17769,7 +17774,7 @@ reduce-css-calc@^2.1.8: css-unit-converter "^1.1.1" postcss-value-parser "^3.3.0" -reflect.getprototypeof@^1.0.3: +reflect.getprototypeof@^1.0.4: version "1.0.4" resolved "https://registry.yarnpkg.com/reflect.getprototypeof/-/reflect.getprototypeof-1.0.4.tgz#aaccbf41aca3821b87bb71d9dcbc7ad0ba50a3f3" integrity sha512-ECkTw8TmJwW60lOTR+ZkODISW6RQ8+2CL3COqtiJKLd6MmB45hN51HprHFziKLGkAuTGQhBb91V8cy+KHlaCjw== @@ -17782,9 +17787,9 @@ reflect.getprototypeof@^1.0.3: which-builtin-type "^1.1.3" regenerate-unicode-properties@^10.1.0: - version "10.1.0" - resolved "https://registry.yarnpkg.com/regenerate-unicode-properties/-/regenerate-unicode-properties-10.1.0.tgz#7c3192cab6dd24e21cb4461e5ddd7dd24fa8374c" - integrity sha512-d1VudCLoIGitcU/hEg2QqvyGZQmdC0Lf8BqdOMXGFSvJP4bNV1+XqbPQeHHLD51Jh4QJJ225dlIFvY4Ly6MXmQ== + version "10.1.1" + resolved "https://registry.yarnpkg.com/regenerate-unicode-properties/-/regenerate-unicode-properties-10.1.1.tgz#6b0e05489d9076b04c436f318d9b067bba459480" + integrity sha512-X007RyZLsCJVVrjgEFVpLUTZwyOZk3oiL75ZcuYjlIWd6rNJtOjkBwQc5AsRrpbKVkxN6sklw/k/9m2jJYOf8Q== dependencies: regenerate "^1.4.2" @@ -17818,7 +17823,7 @@ regex-not@^1.0.0, regex-not@^1.0.2: extend-shallow "^3.0.2" safe-regex "^1.1.0" -regexp.prototype.flags@^1.5.0: +regexp.prototype.flags@^1.5.0, regexp.prototype.flags@^1.5.1: version "1.5.1" resolved "https://registry.yarnpkg.com/regexp.prototype.flags/-/regexp.prototype.flags-1.5.1.tgz#90ce989138db209f81492edd734183ce99f9677e" integrity sha512-sy6TXMN+hnP/wMy+ISxg3krXx7BAtWVO4UouuCN/ziM9UEne0euamVNafDfvC83bRNr95y0V5iijeDQFUNpvrg== @@ -18072,9 +18077,9 @@ resolve.exports@^2.0.0: integrity sha512-X2UW6Nw3n/aMgDVy+0rSqgHlv39WZAlZrXCdnbyEiKm17DSqHX4MmQMaST3FbeWR5FTuRcUwYAziZajji0Y7mg== resolve@^1.10.0, resolve@^1.14.2, resolve@^1.19.0, resolve@^1.20.0, resolve@^1.22.1, resolve@^1.22.4, resolve@^1.3.2, resolve@^1.9.0: - version "1.22.4" - resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.22.4.tgz#1dc40df46554cdaf8948a486a10f6ba1e2026c34" - integrity sha512-PXNdCiPqDqeUou+w1C2eTQbNfxKSuMxqTCuvlmmMsk1NWHL5fRrhY6Pl0qEYYc6+QqGClco1Qj8XnjPego4wfg== + version "1.22.6" + resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.22.6.tgz#dd209739eca3aef739c626fea1b4f3c506195362" + integrity sha512-njhxM7mV12JfufShqGy3Rz8j11RPdLy4xi15UurGJeoHLfJpVXKdh3ueuOqbYUcDZnffr6X739JBo5LzyahEsw== dependencies: is-core-module "^2.13.0" path-parse "^1.0.7" @@ -18196,9 +18201,9 @@ rollup-pluginutils@^2.8.1: estree-walker "^0.6.1" rollup@^3.17.2, rollup@^3.2.1, rollup@^3.9.1: - version "3.29.1" - resolved "https://registry.yarnpkg.com/rollup/-/rollup-3.29.1.tgz#ba53a179d46ac3cd79e162dca6ab70d93cd26f78" - integrity sha512-c+ebvQz0VIH4KhhCpDsI+Bik0eT8ZFEVZEYw0cGMVqIP8zc+gnwl7iXCamTw7vzv2MeuZFZfdx5JJIq+ehzDlg== + version "3.29.4" + resolved "https://registry.yarnpkg.com/rollup/-/rollup-3.29.4.tgz#4d70c0f9834146df8705bfb69a9a19c9e1109981" + integrity sha512-oWzmBZwvYrU0iJHtDmhsm662rC15FRXmcjCk1xD771dFDx5jJ02ufAQQTn0etB2emNk4J9EZg/yWKpsn9BWGRw== optionalDependencies: fsevents "~2.3.2" @@ -18240,7 +18245,7 @@ sade@^1.7.3: dependencies: mri "^1.1.0" -safe-array-concat@^1.0.0: +safe-array-concat@^1.0.0, safe-array-concat@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/safe-array-concat/-/safe-array-concat-1.0.1.tgz#91686a63ce3adbea14d61b14c99572a8ff84754c" integrity sha512-6XbUAseYE2KtOuGueyeobCySj9L4+66Tn6KQMOPQJrAJEowYKW/YR/MGJZl7FdydUdaFu4LYyDZjxf4/Nmo23Q== @@ -18302,9 +18307,9 @@ sane@^4.0.3: walker "~1.0.5" sax@>=0.6.0: - version "1.2.4" - resolved "https://registry.yarnpkg.com/sax/-/sax-1.2.4.tgz#2816234e2378bddc4e5354fab5caa895df7100d9" - integrity sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw== + version "1.3.0" + resolved "https://registry.yarnpkg.com/sax/-/sax-1.3.0.tgz#a5dbe77db3be05c9d1ee7785dbd3ea9de51593d0" + integrity sha512-0s+oAmw9zLl1V1cS9BtZN7JAd0cW5e0QH4W3LWEK6a4LaLEA2OTpGYWDY+6XasBLtz6wkm3u1xRw95mRuJ59WA== saxes@^5.0.1: version "5.0.1" @@ -18493,12 +18498,13 @@ set-blocking@^2.0.0: resolved "https://registry.yarnpkg.com/set-blocking/-/set-blocking-2.0.0.tgz#045f9782d011ae9a6803ddd382b24392b3d890f7" integrity sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw== -set-function-name@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/set-function-name/-/set-function-name-2.0.0.tgz#e59e53e7fa23f9c2da1c0999fa202d5ed09c4756" - integrity sha512-WmS8UHojv5s1eSoRSmzO5zzgDq8PE1/X/ij0k+9fMYmINCc6+j+SF3Om8YyucKn2yjnK4ItNZOoQycNnHsZJTw== +set-function-name@^2.0.0, set-function-name@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/set-function-name/-/set-function-name-2.0.1.tgz#12ce38b7954310b9f61faa12701620a0c882793a" + integrity sha512-tMNCiqYVkXIZgc2Hnoy2IvC/f8ezc5koaRFkCjrpWzGpCd3qbZXPzVy9MAZzK1ch/X0jvSkojys3oqJN0qCmdA== dependencies: define-data-property "^1.0.1" + functions-have-names "^1.2.3" has-property-descriptors "^1.0.0" set-value@^2.0.0, set-value@^2.0.1: @@ -18556,9 +18562,9 @@ sharp@^0.29.1: tunnel-agent "^0.6.0" sharp@^0.32.4: - version "0.32.5" - resolved "https://registry.yarnpkg.com/sharp/-/sharp-0.32.5.tgz#9ddc78ead6446094f51e50355a2d4ec6e7220cd4" - integrity sha512-0dap3iysgDkNaPOaOL4X/0akdu0ma62GcdC2NBQ+93eqpePdDdr2/LM0sFdDSMmN7yS+odyZtPsb7tx/cYBKnQ== + version "0.32.6" + resolved "https://registry.yarnpkg.com/sharp/-/sharp-0.32.6.tgz#6ad30c0b7cd910df65d5f355f774aa4fce45732a" + integrity sha512-KyLTWwgcR9Oe4d9HwCwNM2l7+J0dUQwn/yf7S0EnTtb0eVS4RxO0eUSvxPtzT4F3SY+C4K6fqdv/DO27sJ/v/w== dependencies: color "^4.2.3" detect-libc "^2.0.2" @@ -18593,7 +18599,7 @@ shebang-regex@^3.0.0: resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-3.0.0.tgz#ae16f1644d873ecad843b0307b143362d4c42172" integrity sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A== -shell-quote@^1.6.1, shell-quote@^1.7.3: +shell-quote@^1.6.1, shell-quote@^1.8.1: version "1.8.1" resolved "https://registry.yarnpkg.com/shell-quote/-/shell-quote-1.8.1.tgz#6dbf4db75515ad5bac63b4f1894c3a154c766680" integrity sha512-6j1W9l1iAs/4xYBI1SYOVZyFcCis9b4KCLQ8fgAGG07QvzaRLVVRQvAy85yNmmZSjYjg4MWh4gNvlPujU/5LpA== @@ -18841,7 +18847,7 @@ source-map@^0.6.0, source-map@^0.6.1, source-map@~0.6.0, source-map@~0.6.1: resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263" integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g== -source-map@^0.7.0, source-map@^0.7.3: +source-map@^0.7.0, source-map@^0.7.3, source-map@^0.7.4: version "0.7.4" resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.7.4.tgz#a9bbe705c9d8846f4e08ff6765acf0f1b0898656" integrity sha512-l3BikUxvPOcn5E74dZiq5BGsTb5yEwhaTSzccU6t4sDOH8NWJCstKO5QT2CvtFoK6F0saL7p9xHAqHOlCPJygA== @@ -18883,9 +18889,9 @@ spdx-expression-parse@^3.0.0: spdx-license-ids "^3.0.0" spdx-license-ids@^3.0.0: - version "3.0.13" - resolved "https://registry.yarnpkg.com/spdx-license-ids/-/spdx-license-ids-3.0.13.tgz#7189a474c46f8d47c7b0da4b987bb45e908bd2d5" - integrity sha512-XkD+zwiqXHikFZm4AX/7JSCXA98U5Db4AFd5XUg/+9UNtnH75+Z9KxtpYiJZx36mUDVOwH83pl7yvCer6ewM3w== + version "3.0.16" + resolved "https://registry.yarnpkg.com/spdx-license-ids/-/spdx-license-ids-3.0.16.tgz#a14f64e0954f6e25cc6587bd4f392522db0d998f" + integrity sha512-eWN+LnM3GR6gPu35WxNgbGl8rmY1AEmoMDvL/QD6zYmPWgywxWqJWNdLGT+ke8dKNWrcYgYjPpG5gbTfghP8rw== spdy-transport@^3.0.0: version "3.0.0" @@ -19127,7 +19133,7 @@ string.prototype.padstart@^3.0.0: define-properties "^1.2.0" es-abstract "^1.22.1" -string.prototype.trim@^1.2.7: +string.prototype.trim@^1.2.8: version "1.2.8" resolved "https://registry.yarnpkg.com/string.prototype.trim/-/string.prototype.trim-1.2.8.tgz#f9ac6f8af4bd55ddfa8895e6aea92a96395393bd" integrity sha512-lfjY4HcixfQXOfaqCvcBuOIapyaroTXhbkfJN3gcB1OtyupngWK4sEET9Knd0cXd28kTUqu/kHoV4HKSJdnjiQ== @@ -19136,7 +19142,7 @@ string.prototype.trim@^1.2.7: define-properties "^1.2.0" es-abstract "^1.22.1" -string.prototype.trimend@^1.0.6: +string.prototype.trimend@^1.0.7: version "1.0.7" resolved "https://registry.yarnpkg.com/string.prototype.trimend/-/string.prototype.trimend-1.0.7.tgz#1bb3afc5008661d73e2dc015cd4853732d6c471e" integrity sha512-Ni79DqeB72ZFq1uH/L6zJ+DKZTkOtPIHovb3YZHQViE+HDouuU4mBrLOLDn5Dde3RF8qw5qVETEjhu9locMLvA== @@ -19145,7 +19151,7 @@ string.prototype.trimend@^1.0.6: define-properties "^1.2.0" es-abstract "^1.22.1" -string.prototype.trimstart@^1.0.6: +string.prototype.trimstart@^1.0.7: version "1.0.7" resolved "https://registry.yarnpkg.com/string.prototype.trimstart/-/string.prototype.trimstart-1.0.7.tgz#d4cdb44b83a4737ffbac2d406e405d43d0184298" integrity sha512-NGhtDFu3jCEm7B4Fy0DpLewdJQOZcQ0rGbwQ/+stjnrp2i+rlKeCvos9hOIeCmqwratM47OBxY7uFZzjxHXmrg== @@ -19576,9 +19582,9 @@ terser@^4.1.2, terser@^4.6.3: source-map-support "~0.5.12" terser@^5.10.0, terser@^5.15.1, terser@^5.16.8, terser@^5.3.4: - version "5.19.4" - resolved "https://registry.yarnpkg.com/terser/-/terser-5.19.4.tgz#941426fa482bf9b40a0308ab2b3cd0cf7c775ebd" - integrity sha512-6p1DjHeuluwxDXcuT9VR8p64klWJKo1ILiy19s6C9+0Bh2+NWTX6nD9EPppiER4ICkHDVB1RkVpin/YW2nQn/g== + version "5.21.0" + resolved "https://registry.yarnpkg.com/terser/-/terser-5.21.0.tgz#d2b27e92b5e56650bc83b6defa00a110f0b124b2" + integrity sha512-WtnFKrxu9kaoXuiZFSGrcAvvBqAdmKx0SFNmVNYdJamMu9yyN3I/QF0FbH4QcqJQ+y1CJnzxGIKH0cSj+FGYRw== dependencies: "@jridgewell/source-map" "^0.3.3" acorn "^8.8.2" @@ -19861,14 +19867,15 @@ ts-jest@^29.1.0: yargs-parser "^21.0.1" ts-loader@^9.4.2, ts-loader@^9.4.4: - version "9.4.4" - resolved "https://registry.yarnpkg.com/ts-loader/-/ts-loader-9.4.4.tgz#6ceaf4d58dcc6979f84125335904920884b7cee4" - integrity sha512-MLukxDHBl8OJ5Dk3y69IsKVFRA/6MwzEqBgh+OXMPB/OD01KQuWPFd1WAQP8a5PeSCAxfnkhiuWqfmFJzJQt9w== + version "9.5.0" + resolved "https://registry.yarnpkg.com/ts-loader/-/ts-loader-9.5.0.tgz#f0a51dda37cc4d8e43e6cb14edebbc599b0c3aa2" + integrity sha512-LLlB/pkB4q9mW2yLdFMnK3dEHbrBjeZTYguaaIfusyojBgAGf5kF+O6KcWqiGzWqHk0LBsoolrp4VftEURhybg== dependencies: chalk "^4.1.0" enhanced-resolve "^5.0.0" micromatch "^4.0.0" semver "^7.3.4" + source-map "^0.7.4" ts-mocha@^10.0.0: version "10.0.0" @@ -20174,6 +20181,11 @@ undefsafe@^2.0.5: resolved "https://registry.yarnpkg.com/undefsafe/-/undefsafe-2.0.5.tgz#38733b9327bdcd226db889fb723a6efd162e6e2c" integrity sha512-WxONCrssBM8TSPRqN5EmsjVrsv4A8X12J4ArBiiayv3DyyG3ZlIg6yysuuSYdZsVz3TKcTg2fd//Ujd4CHV1iA== +undici-types@~5.25.1: + version "5.25.3" + resolved "https://registry.yarnpkg.com/undici-types/-/undici-types-5.25.3.tgz#e044115914c85f0bcbb229f346ab739f064998c3" + integrity sha512-Ga1jfYwRn7+cP9v8auvEXN1rX3sWqlayd4HP7OKk4mZWylEmu3KzXDUGrQUN6Ol7qo1gPvB2e5gX6udnyEPgdA== + unfetch@^4.2.0: version "4.2.0" resolved "https://registry.yarnpkg.com/unfetch/-/unfetch-4.2.0.tgz#7e21b0ef7d363d8d9af0fb929a5555f6ef97a3be" @@ -20434,10 +20446,10 @@ upath@^1.1.1: resolved "https://registry.yarnpkg.com/upath/-/upath-1.2.0.tgz#8f66dbcd55a883acdae4408af8b035a5044c1894" integrity sha512-aZwGpamFO61g3OlfT7OQCHqhGnW43ieH9WZeP7QxN/G/jS4jfqUkZxoryvJgVPEcrl5NL/ggHsSmLMHuH64Lhg== -update-browserslist-db@^1.0.11: - version "1.0.11" - resolved "https://registry.yarnpkg.com/update-browserslist-db/-/update-browserslist-db-1.0.11.tgz#9a2a641ad2907ae7b3616506f4b977851db5b940" - integrity sha512-dCwEFf0/oT85M1fHBg4F0jtLwJrutGoHSQXCh7u4o2t1drG+c0a9Flnqww6XUKSfQMPpJBRjU8d4RXB09qtvaA== +update-browserslist-db@^1.0.13: + version "1.0.13" + resolved "https://registry.yarnpkg.com/update-browserslist-db/-/update-browserslist-db-1.0.13.tgz#3c5e4f5c083661bd38ef64b6328c26ed6c8248c4" + integrity sha512-xebP81SNcPuNpPP3uzeW1NYXxI3rxyJzF3pD6sH4jE7o/IX+WtSpwnVU+qIsDPyk0d3hmFQ7mjqc6AtV604hbg== dependencies: escalade "^3.1.1" picocolors "^1.0.0" @@ -20472,9 +20484,9 @@ url-parse@^1.5.3: requires-port "^1.0.0" url@^0.11.0: - version "0.11.2" - resolved "https://registry.yarnpkg.com/url/-/url-0.11.2.tgz#02f250a6e0d992b781828cd456d44f49bf2e19dd" - integrity sha512-7yIgNnrST44S7PJ5+jXbdIupfU1nWUdQJBFBeJRclPXiWgCvrSq5Frw8lr/i//n5sqDfzoKmBymMS81l4U/7cg== + version "0.11.3" + resolved "https://registry.yarnpkg.com/url/-/url-0.11.3.tgz#6f495f4b935de40ce4a0a52faee8954244f3d3ad" + integrity sha512-6hxOLGfZASQK/cijlZnZJTq8OXAkt/3YGfQX45vvMYXpZoo8NdWZcY73K108Jf759lS1Bv/8wXnHDTSz17dSRw== dependencies: punycode "^1.4.1" qs "^6.11.2" @@ -20588,13 +20600,13 @@ v8-to-istanbul@^8.1.0: source-map "^0.7.3" v8-to-istanbul@^9.0.0, v8-to-istanbul@^9.0.1: - version "9.1.0" - resolved "https://registry.yarnpkg.com/v8-to-istanbul/-/v8-to-istanbul-9.1.0.tgz#1b83ed4e397f58c85c266a570fc2558b5feb9265" - integrity sha512-6z3GW9x8G1gd+JIIgQQQxXuiJtCXeAjp6RaPEPLv62mH3iPHPxV6W3robxtCzNErRo6ZwTmzWhsbNvjyEBKzKA== + version "9.1.3" + resolved "https://registry.yarnpkg.com/v8-to-istanbul/-/v8-to-istanbul-9.1.3.tgz#ea456604101cd18005ac2cae3cdd1aa058a6306b" + integrity sha512-9lDD+EVI2fjFsMWXc6dy5JJzBsVTcQ2fVkfBvncZ6xJWG9wtBhOldG+mHkSL0+V1K/xgZz0JDO5UT5hFwHUghg== dependencies: "@jridgewell/trace-mapping" "^0.3.12" "@types/istanbul-lib-coverage" "^2.0.1" - convert-source-map "^1.6.0" + convert-source-map "^2.0.0" validate-npm-package-license@3.0.4, validate-npm-package-license@^3.0.1, validate-npm-package-license@^3.0.4: version "3.0.4" @@ -21107,7 +21119,7 @@ which-collection@^1.0.1: is-weakmap "^2.0.1" is-weakset "^2.0.1" -which-typed-array@^1.1.10, which-typed-array@^1.1.11, which-typed-array@^1.1.9: +which-typed-array@^1.1.11, which-typed-array@^1.1.9: version "1.1.11" resolved "https://registry.yarnpkg.com/which-typed-array/-/which-typed-array-1.1.11.tgz#99d691f23c72aab6768680805a271b69761ed61a" integrity sha512-qe9UWWpkeG5yzZ0tNYxDmd7vo58HDBc39mZ0xWWpolAGADdFOzkfamWLDxkOWcvHQKVmdTyQdLD4NOfjLWTKew== @@ -21276,9 +21288,9 @@ ws@^7, ws@^7.4.6: integrity sha512-F+P9Jil7UiSKSkppIiD94dN07AwvFixvLIj1Og1Rl9GGMuNipJnV9JzjD6XuqmAeiswGvUmNLjr5cFuXwNS77Q== ws@^8.13.0, ws@^8.2.3: - version "8.14.1" - resolved "https://registry.yarnpkg.com/ws/-/ws-8.14.1.tgz#4b9586b4f70f9e6534c7bb1d3dc0baa8b8cf01e0" - integrity sha512-4OOseMUq8AzRBI/7SLMUwO+FEDnguetSk7KMb1sHwvF2w2Wv5Hoj0nlifx8vtGsftE/jWHojPy8sMMzYLJ2G/A== + version "8.14.2" + resolved "https://registry.yarnpkg.com/ws/-/ws-8.14.2.tgz#6c249a806eb2db7a20d26d51e7709eab7b2e6c7f" + integrity sha512-wEBG1ftX4jcglPxgFCMJmZ2PLtSbJ2Peg6TmpJFTbe9GZYOQCDPdMYu/Tm0/bGZkw8paZnJY45J4K2PZrLYq8g== ws@~8.11.0: version "8.11.0" @@ -21460,9 +21472,9 @@ yup@^0.32.9: toposort "^2.0.2" yup@^1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/yup/-/yup-1.2.0.tgz#9e51af0c63bdfc9be0fdc6c10aa0710899d8aff6" - integrity sha512-PPqYKSAXjpRCgLgLKVGPA33v5c/WgEx3wi6NFjIiegz90zSwyMpvTFp/uGcVnnbx6to28pgnzp/q8ih3QRjLMQ== + version "1.3.2" + resolved "https://registry.yarnpkg.com/yup/-/yup-1.3.2.tgz#afffc458f1513ed386e6aaf4bcaa4e67a9e270dc" + integrity sha512-6KCM971iQtJ+/KUaHdrhVr2LDkfhBtFPRnsG1P8F4q3uUVQ2RfEM9xekpha9aA4GXWJevjM10eDcPQ1FfWlmaQ== dependencies: property-expr "^2.0.5" tiny-case "^1.0.3" From 393d348306ff17fb839e82ca9c1a8f52312ec46c Mon Sep 17 00:00:00 2001 From: fmtabbara Date: Thu, 12 Oct 2023 14:28:46 +0100 Subject: [PATCH 014/347] fix sorting for mixnodes and gateways --- explorer/src/components/Gateways.ts | 8 ++++---- explorer/src/components/MixNodes/index.tsx | 18 +++++++++--------- explorer/src/pages/Mixnodes/index.tsx | 6 +++--- explorer/src/utils/index.ts | 1 + 4 files changed, 17 insertions(+), 16 deletions(-) diff --git a/explorer/src/components/Gateways.ts b/explorer/src/components/Gateways.ts index 4072a33db7..966a3c987e 100644 --- a/explorer/src/components/Gateways.ts +++ b/explorer/src/components/Gateways.ts @@ -1,5 +1,5 @@ import { GatewayResponse, GatewayBond, GatewayReportResponse } from '../typeDefs/explorer-api'; -import { toPercentIntegerString } from '../utils'; +import { toPercentInteger } from '../utils'; export type GatewayRowType = { id: string; @@ -9,7 +9,7 @@ export type GatewayRowType = { host: string; location: string; version: string; - node_performance: string; + node_performance: number; }; export type GatewayEnrichedRowType = GatewayRowType & { @@ -30,7 +30,7 @@ export function gatewayToGridRow(arrayOfGateways: GatewayResponse): GatewayRowTy bond: gw.pledge_amount.amount || 0, host: gw.gateway.host || '', version: gw.gateway.version || '', - node_performance: toPercentIntegerString(gw.node_performance.last_24h), + node_performance: toPercentInteger(gw.node_performance.last_24h), })); } @@ -47,6 +47,6 @@ export function gatewayEnrichedToGridRow(gateway: GatewayBond, report: GatewayRe mixPort: gateway.gateway.mix_port || 0, routingScore: `${report.most_recent}%`, avgUptime: `${report.last_day || report.last_hour}%`, - node_performance: toPercentIntegerString(gateway.node_performance.most_recent), + node_performance: toPercentInteger(gateway.node_performance.most_recent), }; } diff --git a/explorer/src/components/MixNodes/index.tsx b/explorer/src/components/MixNodes/index.tsx index 596f56f57c..aba4c6fdca 100644 --- a/explorer/src/components/MixNodes/index.tsx +++ b/explorer/src/components/MixNodes/index.tsx @@ -1,6 +1,6 @@ /* eslint-disable camelcase */ -import { MixNodeResponse, MixNodeResponseItem, MixnodeStatus, NodePerformance } from '../../typeDefs/explorer-api'; -import { toPercentIntegerString } from '../../utils'; +import { MixNodeResponse, MixNodeResponseItem, MixnodeStatus } from '../../typeDefs/explorer-api'; +import { toPercentInteger, toPercentIntegerString } from '../../utils'; import { unymToNym } from '../../utils/currency'; export type MixnodeRowType = { @@ -15,11 +15,11 @@ export type MixnodeRowType = { pledge_amount: number; host: string; layer: string; - profit_percentage: string; + profit_percentage: number; avg_uptime: string; stake_saturation: React.ReactNode; - operating_cost: string; - node_performance: NodePerformance['most_recent']; + operating_cost: number; + node_performance: number; blacklisted: boolean; }; @@ -32,7 +32,7 @@ export function mixNodeResponseItemToMixnodeRowType(item: MixNodeResponseItem): const delegations = Number(item.total_delegation.amount) || 0; const totalBond = pledge + delegations; const selfPercentage = ((pledge * 100) / totalBond).toFixed(2); - const profitPercentage = toPercentIntegerString(item.profit_margin_percent) || 0; + const profitPercentage = toPercentInteger(item.profit_margin_percent) || 0; const uncappedSaturation = typeof item.uncapped_saturation === 'number' ? item.uncapped_saturation * 100 : 0; return { @@ -47,11 +47,11 @@ export function mixNodeResponseItemToMixnodeRowType(item: MixNodeResponseItem): pledge_amount: pledge, host: item?.mix_node?.host || '', layer: item?.layer || '', - profit_percentage: `${profitPercentage}%`, + profit_percentage: profitPercentage, avg_uptime: `${toPercentIntegerString(item.node_performance.last_24h)}%`, stake_saturation: Number(uncappedSaturation.toFixed(2)), - operating_cost: `${unymToNym(item.operating_cost?.amount, 6)} NYM`, - node_performance: `${toPercentIntegerString(item.node_performance.most_recent)}%`, + operating_cost: Number(unymToNym(item.operating_cost?.amount, 6)) || 0, + node_performance: toPercentInteger(item.node_performance.most_recent), blacklisted: item.blacklisted, }; } diff --git a/explorer/src/pages/Mixnodes/index.tsx b/explorer/src/pages/Mixnodes/index.tsx index afd6bdd234..04a9384b61 100644 --- a/explorer/src/pages/Mixnodes/index.tsx +++ b/explorer/src/pages/Mixnodes/index.tsx @@ -210,7 +210,7 @@ export const PageMixnodes: FCWithChildren = () => { component={RRDLink} to={`/network-components/mixnode/${params.row.mix_id}`} > - {params.value} + {params.value}% ), }, @@ -233,7 +233,7 @@ export const PageMixnodes: FCWithChildren = () => { component={RRDLink} to={`/network-components/mixnode/${params.row.mix_id}`} > - {params.value} + {params.value} NYM ), }, @@ -256,7 +256,7 @@ export const PageMixnodes: FCWithChildren = () => { component={RRDLink} to={`/network-components/mixnode/${params.row.mix_id}`} > - {params.value} + {params.value}% ), }, diff --git a/explorer/src/utils/index.ts b/explorer/src/utils/index.ts index 4f922d870d..4994d73dbb 100644 --- a/explorer/src/utils/index.ts +++ b/explorer/src/utils/index.ts @@ -55,6 +55,7 @@ export const splice = (start: number, deleteCount: number, address?: string): st * @returns A stringified integer */ export const toPercentIntegerString = (value: string) => Math.round(Number(value) * 100).toString(); +export const toPercentInteger = (value: string) => Math.round(Number(value) * 100); export const textColour = (value: EconomicsRowsType, field: string, theme: Theme) => { const progressBarValue = value?.progressBarValue || 0; From 3d506cfa015287cc2514cb533ed9bb56895e8df2 Mon Sep 17 00:00:00 2001 From: fmtabbara Date: Thu, 12 Oct 2023 16:12:03 +0100 Subject: [PATCH 015/347] use switch statement for key mapping --- nym-wallet/src/hooks/useSortDelegations.tsx | 23 +++++++++++++++------ 1 file changed, 17 insertions(+), 6 deletions(-) diff --git a/nym-wallet/src/hooks/useSortDelegations.tsx b/nym-wallet/src/hooks/useSortDelegations.tsx index dfa7adbe2a..b2bdcce787 100644 --- a/nym-wallet/src/hooks/useSortDelegations.tsx +++ b/nym-wallet/src/hooks/useSortDelegations.tsx @@ -2,16 +2,27 @@ import { orderBy as _orderBy } from 'lodash'; import { Order, SortingKeys } from 'src/components/Delegation/DelegationList'; import { TDelegations, isDelegation } from 'src/context/delegations'; +type MappedTypes = 'delegationValue' | 'operatorReward' | 'profitMarginValue' | 'operatorCostValue'; + export const useSortDelegations = (delegationItems: TDelegations, order: Order, orderBy: SortingKeys) => { const unbondedDelegations = delegationItems.filter((delegation) => !delegation.node_identity); const delegations = delegationItems.filter((delegation) => delegation.node_identity); - const mapOrderBy = (key: SortingKeys) => { - if (key === 'amount') return 'delegationValue'; - if (key === 'unclaimed_rewards') return 'operatorReward'; - if (key === 'profit_margin_percent') return 'profitMarginValue'; - if (key === 'operating_cost') return 'operatorCostValue'; - return key; + // example of a mapped type in typescript + + const mapOrderBy = (key: SortingKeys): MappedTypes | SortingKeys => { + switch (key) { + case 'amount': + return 'delegationValue'; + case 'unclaimed_rewards': + return 'operatorReward'; + case 'profit_margin_percent': + return 'profitMarginValue'; + case 'operating_cost': + return 'operatorCostValue'; + default: + return key; + } }; const mapAndSort = (_items: TDelegations) => { From 0a7826d286db0500f6fb14bdea01567c002d6494 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C4=99drzej=20Stuczy=C5=84ski?= Date: Fri, 13 Oct 2023 10:57:58 +0100 Subject: [PATCH 016/347] allow setting custom bind address for socks5 client --- clients/socks5/src/commands/init.rs | 16 ++- clients/socks5/src/commands/mod.rs | 46 ++++++-- clients/socks5/src/commands/run.rs | 6 + clients/socks5/src/config/mod.rs | 13 ++- .../socks5/src/config/old_config_v1_1_20_2.rs | 8 +- .../socks5/src/config/old_config_v1_1_30.rs | 44 ++++++++ common/socks5-client-core/src/config/mod.rs | 21 +++- .../src/config/old_config_v1_1_20_2.rs | 21 ++-- .../src/config/old_config_v1_1_30.rs | 106 ++++++++++++++++++ common/socks5-client-core/src/lib.rs | 2 +- common/socks5-client-core/src/socks/server.rs | 9 +- sdk/rust/nym-sdk/src/mixnet/socks5_client.rs | 2 +- 12 files changed, 251 insertions(+), 43 deletions(-) create mode 100644 clients/socks5/src/config/old_config_v1_1_30.rs create mode 100644 common/socks5-client-core/src/config/old_config_v1_1_30.rs diff --git a/clients/socks5/src/commands/init.rs b/clients/socks5/src/commands/init.rs index 8adc4e891b..3c6a2a943f 100644 --- a/clients/socks5/src/commands/init.rs +++ b/clients/socks5/src/commands/init.rs @@ -22,6 +22,7 @@ use nym_sphinx::addressing::clients::Recipient; use nym_topology::NymTopology; use serde::Serialize; use std::fmt::Display; +use std::net::{IpAddr, SocketAddr}; use std::path::PathBuf; use std::{fs, io}; use tap::TapFallible; @@ -77,6 +78,10 @@ pub(crate) struct Init { #[clap(short, long)] port: Option, + /// The custom host on which the socks5 client will be listening for requests + #[clap(long)] + host: Option, + /// Path to .json file containing custom network specification. #[clap(long, group = "network", hide = true)] custom_mixnet: Option, @@ -103,6 +108,7 @@ impl From for OverrideConfig { fn from(init_config: Init) -> Self { OverrideConfig { nym_apis: init_config.nym_apis, + ip: init_config.host, port: init_config.port, use_anonymous_replies: init_config.use_reply_surbs, fastmode: init_config.fastmode, @@ -120,7 +126,7 @@ impl From for OverrideConfig { pub struct InitResults { #[serde(flatten)] client_core: nym_client_core::init::types::InitResults, - socks5_listening_port: u16, + socks5_listening_address: SocketAddr, client_address: String, } @@ -132,7 +138,7 @@ impl InitResults { address, gateway, ), - socks5_listening_port: config.core.socks5.listening_port, + socks5_listening_address: config.core.socks5.bind_adddress, client_address: address.to_string(), } } @@ -141,7 +147,11 @@ impl InitResults { impl Display for InitResults { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { writeln!(f, "{}", self.client_core)?; - writeln!(f, "SOCKS5 listening port: {}", self.socks5_listening_port)?; + writeln!( + f, + "SOCKS5 listening address: {}", + self.socks5_listening_address + )?; write!(f, "Address of this client: {}", self.client_address) } } diff --git a/clients/socks5/src/commands/mod.rs b/clients/socks5/src/commands/mod.rs index 1f42cdc905..eeef6559b4 100644 --- a/clients/socks5/src/commands/mod.rs +++ b/clients/socks5/src/commands/mod.rs @@ -4,7 +4,8 @@ use crate::config::old_config_v1_1_13::OldConfigV1_1_13; use crate::config::old_config_v1_1_20::ConfigV1_1_20; use crate::config::old_config_v1_1_20_2::ConfigV1_1_20_2; -use crate::config::{BaseClientConfig, Config}; +use crate::config::old_config_v1_1_30::ConfigV1_1_30; +use crate::config::{BaseClientConfig, Config, SocksClientPaths}; use crate::error::Socks5ClientError; use clap::CommandFactory; use clap::{Parser, Subcommand}; @@ -22,6 +23,7 @@ use nym_client_core::error::ClientCoreError; use nym_config::OptionalSet; use nym_sphinx::params::{PacketSize, PacketType}; use std::error::Error; +use std::net::IpAddr; pub(crate) mod build_info; pub mod init; @@ -72,6 +74,7 @@ pub(crate) enum Commands { // Configuration that can be overridden. pub(crate) struct OverrideConfig { nym_apis: Option>, + ip: Option, port: Option, use_anonymous_replies: Option, fastmode: bool, @@ -145,6 +148,7 @@ pub(crate) fn override_config(config: Config, args: OverrideConfig) -> Config { ) .with_optional(Config::with_anonymous_replies, args.use_anonymous_replies) .with_optional(Config::with_port, args.port) + .with_optional(Config::with_ip, args.ip) .with_optional_base_custom_env( BaseClientConfig::with_custom_nym_apis, args.nym_apis, @@ -164,12 +168,11 @@ pub(crate) fn override_config(config: Config, args: OverrideConfig) -> Config { } fn persist_gateway_details( - config: &Config, + storage_paths: &SocksClientPaths, details: GatewayEndpointConfig, ) -> Result<(), Socks5ClientError> { - let details_store = - OnDiskGatewayDetails::new(&config.storage_paths.common_paths.gateway_details); - let keys_store = OnDiskKeys::new(config.storage_paths.common_paths.keys.clone()); + let details_store = OnDiskGatewayDetails::new(&storage_paths.common_paths.gateway_details); + let keys_store = OnDiskKeys::new(storage_paths.common_paths.keys.clone()); let shared_keys = keys_store.ephemeral_load_gateway_keys().map_err(|source| { Socks5ClientError::ClientCoreError(ClientCoreError::KeyStoreError { source: Box::new(source), @@ -199,9 +202,10 @@ fn try_upgrade_v1_1_13_config(id: &str) -> Result { let updated_step1: ConfigV1_1_20 = old_config.into(); let updated_step2: ConfigV1_1_20_2 = updated_step1.into(); - let (updated, gateway_config) = updated_step2.upgrade()?; - persist_gateway_details(&updated, gateway_config)?; + let (updated_step3, gateway_config) = updated_step2.upgrade()?; + persist_gateway_details(&updated_step3.storage_paths, gateway_config)?; + let updated: Config = updated_step3.into(); updated.save_to_default_location()?; Ok(true) } @@ -219,9 +223,10 @@ fn try_upgrade_v1_1_20_config(id: &str) -> Result { info!("It is going to get updated to the current specification."); let updated_step1: ConfigV1_1_20_2 = old_config.into(); - let (updated, gateway_config) = updated_step1.upgrade()?; - persist_gateway_details(&updated, gateway_config)?; + let (updated_step2, gateway_config) = updated_step1.upgrade()?; + persist_gateway_details(&updated_step2.storage_paths, gateway_config)?; + let updated: Config = updated_step2.into(); updated.save_to_default_location()?; Ok(true) } @@ -236,9 +241,25 @@ fn try_upgrade_v1_1_20_2_config(id: &str) -> Result { info!("It seems the client is using <= v1.1.20_2 config template."); info!("It is going to get updated to the current specification."); - let (updated, gateway_config) = old_config.upgrade()?; - persist_gateway_details(&updated, gateway_config)?; + let (updated_step1, gateway_config) = old_config.upgrade()?; + persist_gateway_details(&updated_step1.storage_paths, gateway_config)?; + let updated: Config = updated_step1.into(); + updated.save_to_default_location()?; + Ok(true) +} + +fn try_upgrade_v1_1_30_config(id: &str) -> Result { + // explicitly load it as v1.1.20_2 (which is incompatible with the current one, i.e. +1.1.21) + let Ok(old_config) = ConfigV1_1_30::read_from_default_path(id) else { + // if we failed to load it, there might have been nothing to upgrade + // or maybe it was an even older file. in either way. just ignore it and carry on with our day + return Ok(false); + }; + info!("It seems the client is using <= v1.1.30 config template."); + info!("It is going to get updated to the current specification."); + + let updated: Config = old_config.into(); updated.save_to_default_location()?; Ok(true) } @@ -253,6 +274,9 @@ fn try_upgrade_config(id: &str) -> Result<(), Socks5ClientError> { if try_upgrade_v1_1_20_2_config(id)? { return Ok(()); } + if try_upgrade_v1_1_30_config(id)? { + return Ok(()); + } Ok(()) } diff --git a/clients/socks5/src/commands/run.rs b/clients/socks5/src/commands/run.rs index 46bd9cd361..51efa4fdb6 100644 --- a/clients/socks5/src/commands/run.rs +++ b/clients/socks5/src/commands/run.rs @@ -1,6 +1,7 @@ // Copyright 2021-2023 - Nym Technologies SA // SPDX-License-Identifier: Apache-2.0 +use std::net::IpAddr; use crate::commands::try_load_current_config; use crate::config::Config; use crate::{ @@ -53,6 +54,10 @@ pub(crate) struct Run { #[clap(short, long)] port: Option, + /// The custom host on which the socks5 client will be listening for requests + #[clap(long)] + host: Option, + /// Path to .json file containing custom network specification. #[clap(long, group = "network", group = "routing", hide = true)] custom_mixnet: Option, @@ -88,6 +93,7 @@ impl From for OverrideConfig { fn from(run_config: Run) -> Self { OverrideConfig { nym_apis: run_config.nym_apis, + ip: run_config.host, port: run_config.port, use_anonymous_replies: run_config.use_anonymous_replies, fastmode: run_config.fastmode, diff --git a/clients/socks5/src/config/mod.rs b/clients/socks5/src/config/mod.rs index 6f9c0c7fa4..8a8681c50f 100644 --- a/clients/socks5/src/config/mod.rs +++ b/clients/socks5/src/config/mod.rs @@ -1,7 +1,6 @@ // Copyright 2021-2023 - Nym Technologies SA // SPDX-License-Identifier: Apache-2.0 -use crate::config::persistence::SocksClientPaths; use crate::config::template::CONFIG_TEMPLATE; use nym_bin_common::logging::LoggingSettings; use nym_config::{ @@ -11,15 +10,18 @@ use nym_config::{ use serde::{Deserialize, Serialize}; use std::fmt::Debug; use std::io; +use std::net::IpAddr; use std::path::{Path, PathBuf}; use std::str::FromStr; +pub use crate::config::persistence::SocksClientPaths; pub use nym_client_core::config::Config as BaseClientConfig; pub use nym_socks5_client_core::config::Config as CoreConfig; pub mod old_config_v1_1_13; pub mod old_config_v1_1_20; pub mod old_config_v1_1_20_2; +pub mod old_config_v1_1_30; mod persistence; mod template; @@ -102,8 +104,15 @@ impl Config { self.core.validate() } + #[must_use] pub fn with_port(mut self, port: u16) -> Self { - self.core.socks5.listening_port = port; + self.core = self.core.with_port(port); + self + } + + #[must_use] + pub fn with_ip(mut self, ip: IpAddr) -> Self { + self.core = self.core.with_ip(ip); self } diff --git a/clients/socks5/src/config/old_config_v1_1_20_2.rs b/clients/socks5/src/config/old_config_v1_1_20_2.rs index 998bd90b32..4668e3ea9d 100644 --- a/clients/socks5/src/config/old_config_v1_1_20_2.rs +++ b/clients/socks5/src/config/old_config_v1_1_20_2.rs @@ -1,11 +1,11 @@ // Copyright 2023 - Nym Technologies SA // SPDX-License-Identifier: Apache-2.0 +use crate::config::old_config_v1_1_30::ConfigV1_1_30; use crate::{ - config::{default_config_filepath, persistence::SocksClientPaths, Config}, + config::{default_config_filepath, persistence::SocksClientPaths}, error::Socks5ClientError, }; - use nym_bin_common::logging::LoggingSettings; use nym_client_core::config::disk_persistence::old_v1_1_20_2::CommonClientPathsV1_1_20_2; use nym_client_core::config::GatewayEndpointConfig; @@ -43,9 +43,9 @@ impl ConfigV1_1_20_2 { // in this upgrade, gateway endpoint configuration was moved out of the config file, // so its returned to be stored elsewhere. - pub fn upgrade(self) -> Result<(Config, GatewayEndpointConfig), Socks5ClientError> { + pub fn upgrade(self) -> Result<(ConfigV1_1_30, GatewayEndpointConfig), Socks5ClientError> { let gateway_details = self.core.base.client.gateway_endpoint.clone().into(); - let config = Config { + let config = ConfigV1_1_30 { core: self.core.into(), storage_paths: SocksClientPaths { common_paths: self.storage_paths.common_paths.upgrade_default()?, diff --git a/clients/socks5/src/config/old_config_v1_1_30.rs b/clients/socks5/src/config/old_config_v1_1_30.rs new file mode 100644 index 0000000000..cd7a5ab9e4 --- /dev/null +++ b/clients/socks5/src/config/old_config_v1_1_30.rs @@ -0,0 +1,44 @@ +// Copyright 2023 - Nym Technologies SA +// SPDX-License-Identifier: Apache-2.0 + +use crate::config::persistence::SocksClientPaths; +use crate::config::{default_config_filepath, Config}; +use nym_bin_common::logging::LoggingSettings; +use nym_config::read_config_from_toml_file; +use nym_socks5_client_core::config::old_config_v1_1_30::ConfigV1_1_30 as CoreConfigV1_1_30; +use serde::{Deserialize, Serialize}; +use std::io; +use std::path::Path; + +#[derive(Clone, Debug, Deserialize, PartialEq, Serialize)] +#[serde(deny_unknown_fields)] +pub struct ConfigV1_1_30 { + pub core: CoreConfigV1_1_30, + + // I'm leaving a landmine here for when the paths actually do change the next time, + // but propagating the change right now (in ALL clients) would be such a hassle..., + // so sorry for the next person looking at it : ) + pub storage_paths: SocksClientPaths, + + pub logging: LoggingSettings, +} + +impl From for Config { + fn from(value: ConfigV1_1_30) -> Self { + Config { + core: value.core.into(), + storage_paths: value.storage_paths, + logging: LoggingSettings::default(), + } + } +} + +impl ConfigV1_1_30 { + pub fn read_from_toml_file>(path: P) -> io::Result { + read_config_from_toml_file(path) + } + + pub fn read_from_default_path>(id: P) -> io::Result { + Self::read_from_toml_file(default_config_filepath(id)) + } +} diff --git a/common/socks5-client-core/src/config/mod.rs b/common/socks5-client-core/src/config/mod.rs index a560645140..8c5c722093 100644 --- a/common/socks5-client-core/src/config/mod.rs +++ b/common/socks5-client-core/src/config/mod.rs @@ -7,9 +7,11 @@ use nym_config::OptionalSet; use nym_sphinx::addressing::clients::Recipient; use serde::{Deserialize, Serialize}; use std::fmt::Debug; +use std::net::{IpAddr, Ipv4Addr, SocketAddr}; use std::str::FromStr; pub mod old_config_v1_1_20_2; +pub mod old_config_v1_1_30; pub use nym_service_providers_common::interface::ProviderInterfaceVersion; pub use nym_socks5_requests::Socks5ProtocolVersion; @@ -43,8 +45,15 @@ impl Config { self.base.validate() } + #[must_use] pub fn with_port(mut self, port: u16) -> Self { - self.socks5.listening_port = port; + self.socks5.bind_adddress = SocketAddr::new(self.socks5.bind_adddress.ip(), port); + self + } + + #[must_use] + pub fn with_ip(mut self, ip: IpAddr) -> Self { + self.socks5.bind_adddress = SocketAddr::new(ip, self.socks5.bind_adddress.port()); self } @@ -101,8 +110,9 @@ impl Config { #[derive(Clone, Debug, Deserialize, PartialEq, Eq, Serialize)] #[serde(deny_unknown_fields)] pub struct Socks5 { - /// The port on which the client will be listening for incoming requests - pub listening_port: u16, + /// The address on which the client will be listening for incoming requests + /// (default: 127.0.0.1:1080) + pub bind_adddress: SocketAddr, /// The mix address of the provider to which all requests are going to be sent. pub provider_mix_address: String, @@ -131,7 +141,10 @@ pub struct Socks5 { impl Socks5 { pub fn new>(provider_mix_address: S) -> Self { Socks5 { - listening_port: DEFAULT_SOCKS5_LISTENING_PORT, + bind_adddress: SocketAddr::new( + IpAddr::V4(Ipv4Addr::LOCALHOST), + DEFAULT_SOCKS5_LISTENING_PORT, + ), provider_mix_address: provider_mix_address.into(), provider_interface_version: ProviderInterfaceVersion::Legacy, socks5_protocol_version: Socks5ProtocolVersion::Legacy, diff --git a/common/socks5-client-core/src/config/old_config_v1_1_20_2.rs b/common/socks5-client-core/src/config/old_config_v1_1_20_2.rs index 2269a0fa01..dc24de4131 100644 --- a/common/socks5-client-core/src/config/old_config_v1_1_20_2.rs +++ b/common/socks5-client-core/src/config/old_config_v1_1_20_2.rs @@ -1,13 +1,12 @@ // Copyright 2023 - Nym Technologies SA // SPDX-License-Identifier: Apache-2.0 +use super::old_config_v1_1_30::{ConfigV1_1_30, Socks5DebugV1_1_30, Socks5V1_1_30}; pub use nym_client_core::config::old_config_v1_1_20_2::ConfigV1_1_20_2 as BaseClientConfigV1_1_20_2; -use serde::{Deserialize, Serialize}; -use std::fmt::Debug; - -use crate::config::{Config, Socks5, Socks5Debug}; pub use nym_service_providers_common::interface::ProviderInterfaceVersion; pub use nym_socks5_requests::Socks5ProtocolVersion; +use serde::{Deserialize, Serialize}; +use std::fmt::Debug; const DEFAULT_CONNECTION_START_SURBS: u32 = 20; const DEFAULT_PER_REQUEST_SURBS: u32 = 3; @@ -21,10 +20,10 @@ pub struct ConfigV1_1_20_2 { pub socks5: Socks5V1_1_20_2, } -impl From for Config { +impl From for ConfigV1_1_30 { fn from(value: ConfigV1_1_20_2) -> Self { - Config { - base: value.base.into(), + ConfigV1_1_30 { + base: value.base, socks5: value.socks5.into(), } } @@ -45,9 +44,9 @@ pub struct Socks5V1_1_20_2 { pub socks5_debug: Socks5DebugV1_1_20_2, } -impl From for Socks5 { +impl From for Socks5V1_1_30 { fn from(value: Socks5V1_1_20_2) -> Self { - Socks5 { + Socks5V1_1_30 { listening_port: value.listening_port, provider_mix_address: value.provider_mix_address, provider_interface_version: value.provider_interface_version, @@ -68,9 +67,9 @@ pub struct Socks5DebugV1_1_20_2 { pub per_request_surbs: u32, } -impl From for Socks5Debug { +impl From for Socks5DebugV1_1_30 { fn from(value: Socks5DebugV1_1_20_2) -> Self { - Socks5Debug { + Socks5DebugV1_1_30 { connection_start_surbs: value.connection_start_surbs, per_request_surbs: value.per_request_surbs, } diff --git a/common/socks5-client-core/src/config/old_config_v1_1_30.rs b/common/socks5-client-core/src/config/old_config_v1_1_30.rs new file mode 100644 index 0000000000..e84eb7011b --- /dev/null +++ b/common/socks5-client-core/src/config/old_config_v1_1_30.rs @@ -0,0 +1,106 @@ +// Copyright 2021-2023 - Nym Technologies SA +// SPDX-License-Identifier: Apache-2.0 + +use super::old_config_v1_1_20_2::BaseClientConfigV1_1_20_2; +use super::{Config, Socks5, Socks5Debug}; +use serde::{Deserialize, Serialize}; +use std::fmt::Debug; +use std::net::{IpAddr, Ipv4Addr, SocketAddr}; + +// TODO: those should really be redefined here in case we change them... +use nym_service_providers_common::interface::ProviderInterfaceVersion; +use nym_socks5_requests::Socks5ProtocolVersion; + +const DEFAULT_CONNECTION_START_SURBS: u32 = 20; +const DEFAULT_PER_REQUEST_SURBS: u32 = 3; + +#[derive(Clone, Debug, Deserialize, PartialEq, Serialize)] +#[serde(deny_unknown_fields)] +pub struct ConfigV1_1_30 { + #[serde(flatten)] + // base client config hasn't changed between v1.1.20 and v1.1.30 + pub base: BaseClientConfigV1_1_20_2, + + pub socks5: Socks5V1_1_30, +} + +impl From for Config { + fn from(value: ConfigV1_1_30) -> Self { + Config { + base: value.base.into(), + socks5: value.socks5.into(), + } + } +} + +#[derive(Clone, Debug, Deserialize, PartialEq, Eq, Serialize)] +#[serde(deny_unknown_fields)] +pub struct Socks5V1_1_30 { + /// The port on which the client will be listening for incoming requests + pub listening_port: u16, + + /// The mix address of the provider to which all requests are going to be sent. + pub provider_mix_address: String, + + /// The version of the 'service provider' this client is going to use in its communication with the + /// specified socks5 provider. + // if in doubt, use the legacy version as initially nobody will be using the updated binaries + #[serde(default)] + pub provider_interface_version: ProviderInterfaceVersion, + + #[serde(default)] + pub socks5_protocol_version: Socks5ProtocolVersion, + + /// Specifies whether this client is going to use an anonymous sender tag for communication with the service provider. + /// While this is going to hide its actual address information, it will make the actual communication + /// slower and consume nearly double the bandwidth as it will require sending reply SURBs. + /// + /// Note that some service providers might not support this. + #[serde(default)] + pub send_anonymously: bool, + + #[serde(default)] + pub socks5_debug: Socks5DebugV1_1_30, +} + +impl From for Socks5 { + fn from(value: Socks5V1_1_30) -> Self { + Socks5 { + // in <= 1.1.30 the address was hardcoded to 127.0.0.1 + bind_adddress: SocketAddr::new(IpAddr::V4(Ipv4Addr::LOCALHOST), value.listening_port), + provider_mix_address: value.provider_mix_address, + provider_interface_version: value.provider_interface_version, + socks5_protocol_version: value.socks5_protocol_version, + send_anonymously: value.send_anonymously, + socks5_debug: value.socks5_debug.into(), + } + } +} + +#[derive(Clone, Copy, Debug, Deserialize, PartialEq, Eq, Serialize)] +#[serde(default, deny_unknown_fields)] +pub struct Socks5DebugV1_1_30 { + /// Number of reply SURBs attached to each `Request::Connect` message. + pub connection_start_surbs: u32, + + /// Number of reply SURBs attached to each `Request::Send` message. + pub per_request_surbs: u32, +} + +impl From for Socks5Debug { + fn from(value: Socks5DebugV1_1_30) -> Self { + Socks5Debug { + connection_start_surbs: value.connection_start_surbs, + per_request_surbs: value.per_request_surbs, + } + } +} + +impl Default for Socks5DebugV1_1_30 { + fn default() -> Self { + Socks5DebugV1_1_30 { + connection_start_surbs: DEFAULT_CONNECTION_START_SURBS, + per_request_surbs: DEFAULT_PER_REQUEST_SURBS, + } + } +} diff --git a/common/socks5-client-core/src/lib.rs b/common/socks5-client-core/src/lib.rs index bbf9b7ed72..44747c8753 100644 --- a/common/socks5-client-core/src/lib.rs +++ b/common/socks5-client-core/src/lib.rs @@ -123,7 +123,7 @@ where let authenticator = Authenticator::new(auth_methods, allowed_users); let mut sphinx_socks = NymSocksServer::new( - socks5_config.listening_port, + socks5_config.bind_adddress, authenticator, socks5_config.get_provider_mix_address(), self_address, diff --git a/common/socks5-client-core/src/socks/server.rs b/common/socks5-client-core/src/socks/server.rs index 1fd5703113..a67ed64e19 100644 --- a/common/socks5-client-core/src/socks/server.rs +++ b/common/socks5-client-core/src/socks/server.rs @@ -33,7 +33,7 @@ impl NymSocksServer { /// Create a new SphinxSocks instance #[allow(clippy::too_many_arguments)] pub(crate) fn new( - port: u16, + bind_adddress: SocketAddr, authenticator: Authenticator, service_provider: Recipient, self_address: Recipient, @@ -42,13 +42,10 @@ impl NymSocksServer { shutdown: TaskClient, packet_type: PacketType, ) -> Self { - // hardcode ip as we (presumably) ONLY want to listen locally. If we change it, we can - // just modify the config - let ip = "127.0.0.1"; - info!("Listening on {}:{}", ip, port); + info!("Listening on {bind_adddress}"); NymSocksServer { authenticator, - listening_address: format!("{ip}:{port}").parse().unwrap(), + listening_address: bind_adddress, service_provider, self_address, client_config, diff --git a/sdk/rust/nym-sdk/src/mixnet/socks5_client.rs b/sdk/rust/nym-sdk/src/mixnet/socks5_client.rs index 776fd8b9b3..ab340447f9 100644 --- a/sdk/rust/nym-sdk/src/mixnet/socks5_client.rs +++ b/sdk/rust/nym-sdk/src/mixnet/socks5_client.rs @@ -56,7 +56,7 @@ impl Socks5MixnetClient { /// Get the SOCKS5 proxy URL that a HTTP(S) client can connect to. pub fn socks5_url(&self) -> String { - format!("socks5h://127.0.0.1:{}", self.socks5_config.listening_port) + format!("socks5h://{}", self.socks5_config.bind_adddress) } /// Get a shallow clone of [`LaneQueueLengths`]. This is useful to manually implement some form From 0f38f35aba67fa334f2550bebce242e6f9ba81a1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C4=99drzej=20Stuczy=C5=84ski?= Date: Fri, 13 Oct 2023 10:58:50 +0100 Subject: [PATCH 017/347] updated client config template --- clients/socks5/src/config/template.rs | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/clients/socks5/src/config/template.rs b/clients/socks5/src/config/template.rs index 22d047bb16..764a7c6884 100644 --- a/clients/socks5/src/config/template.rs +++ b/clients/socks5/src/config/template.rs @@ -75,8 +75,9 @@ gateway_details = '{{ storage_paths.gateway_details }}' # The mix address of the provider to which all requests are going to be sent. provider_mix_address = '{{ core.socks5.provider_mix_address }}' -# The port on which the client will be listening for incoming requests -listening_port = {{ core.socks5.listening_port }} +# The address on which the client will be listening for incoming requests +# (default: 127.0.0.1:1080) +bind_adddress = '{{ core.socks5.bind_adddress }}' # Specifies whether this client is going to use an anonymous sender tag for communication with the service provider. # While this is going to hide its actual address information, it will make the actual communication From 85938113b7d070cf6518155097c7b922fee16487 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C4=99drzej=20Stuczy=C5=84ski?= Date: Fri, 13 Oct 2023 11:02:15 +0100 Subject: [PATCH 018/347] cargo fmt --- clients/socks5/src/commands/run.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/clients/socks5/src/commands/run.rs b/clients/socks5/src/commands/run.rs index 51efa4fdb6..8be21ef808 100644 --- a/clients/socks5/src/commands/run.rs +++ b/clients/socks5/src/commands/run.rs @@ -1,7 +1,6 @@ // Copyright 2021-2023 - Nym Technologies SA // SPDX-License-Identifier: Apache-2.0 -use std::net::IpAddr; use crate::commands::try_load_current_config; use crate::config::Config; use crate::{ @@ -16,6 +15,7 @@ use nym_client_core::client::topology_control::geo_aware_provider::CountryGroup; use nym_crypto::asymmetric::identity; use nym_socks5_client_core::NymClient; use nym_sphinx::addressing::clients::Recipient; +use std::net::IpAddr; use std::path::PathBuf; #[derive(Args, Clone)] From 078365c467d3bbea4b51a6451d84c6cc4715e90d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C4=99drzej=20Stuczy=C5=84ski?= Date: Fri, 13 Oct 2023 11:07:30 +0100 Subject: [PATCH 019/347] nym connect fix --- nym-connect/desktop/src-tauri/src/config/mod.rs | 2 +- .../desktop/src-tauri/src/config/old_config_v1_1_20_2.rs | 3 ++- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/nym-connect/desktop/src-tauri/src/config/mod.rs b/nym-connect/desktop/src-tauri/src/config/mod.rs index 0b8d9b0789..c62e48ce26 100644 --- a/nym-connect/desktop/src-tauri/src/config/mod.rs +++ b/nym-connect/desktop/src-tauri/src/config/mod.rs @@ -254,7 +254,7 @@ fn print_saved_config(config: &Config, gateway_details: &GatewayEndpointConfig) ); log::info!( "Service provider port: {}", - config.core.socks5.listening_port + config.core.socks5.bind_adddress.port() ); log::info!("Client configuration completed."); } diff --git a/nym-connect/desktop/src-tauri/src/config/old_config_v1_1_20_2.rs b/nym-connect/desktop/src-tauri/src/config/old_config_v1_1_20_2.rs index 0a2f017a75..f4effd9e23 100644 --- a/nym-connect/desktop/src-tauri/src/config/old_config_v1_1_20_2.rs +++ b/nym-connect/desktop/src-tauri/src/config/old_config_v1_1_20_2.rs @@ -9,6 +9,7 @@ use nym_client_core::config::disk_persistence::old_v1_1_20_2::CommonClientPathsV use nym_client_core::config::GatewayEndpointConfig; use nym_config::read_config_from_toml_file; pub use nym_socks5_client_core::config::old_config_v1_1_20_2::ConfigV1_1_20_2 as CoreConfigV1_1_20_2; +pub use nym_socks5_client_core::config::old_config_v1_1_30::ConfigV1_1_30 as CoreConfigV1_1_30; use serde::{Deserialize, Serialize}; use std::io; use std::path::Path; @@ -43,7 +44,7 @@ impl ConfigV1_1_20_2 { pub fn upgrade(self) -> Result<(Config, GatewayEndpointConfig)> { let gateway_details = self.core.base.client.gateway_endpoint.clone().into(); let config = Config { - core: self.core.into(), + core: CoreConfigV1_1_30::from(self.core).into(), storage_paths: NymConnectPaths { common_paths: self.storage_paths.common_paths.upgrade_default()?, }, From 180927bcacf608e45b42cce7ce7652973918537a Mon Sep 17 00:00:00 2001 From: serinko <97586125+serinko@users.noreply.github.com> Date: Fri, 13 Oct 2023 16:39:05 +0200 Subject: [PATCH 020/347] add legal chat room --- .../operators/src/legal/exit-gateway.md | 33 ++++++++++++++++++- 1 file changed, 32 insertions(+), 1 deletion(-) diff --git a/documentation/operators/src/legal/exit-gateway.md b/documentation/operators/src/legal/exit-gateway.md index 7d8a80f0f8..228fef95dc 100644 --- a/documentation/operators/src/legal/exit-gateway.md +++ b/documentation/operators/src/legal/exit-gateway.md @@ -4,10 +4,16 @@ The entire content of this page is under [Creative Commons Attribution 4.0 International Public License](https://creativecommons.org/licenses/by/4.0/). ``` -This page is a part of Nym Community Legal Forum and its content is composed by shared advices in [Node Operators Matrix channel](https://matrix.to/#/#operators:nymtech.chat) as well as though direct pull requests done by the node operators directly to our [repository](https://github.com/nymtech/nym/tree/develop/documentation/operators/src). +This page is a part of Nym Community Legal Forum and its content is composed by shared advices in [Node Operators Legal Forum](https://matrix.to/#/!YfoUFsJjsXbWmijbPG:nymtech.chat?via=nymtech.chat&via=matrix.org) (Matrix chat) as well as though pull requests done by the node operators directly to our [repository](https://github.com/nymtech/nym/tree/develop/documentation/operators/src), reviewed by Nym DevRels. This document presents an initiative to further support Nym’s mission of allowing privacy for everyone everywhere. This would be achieved with the support of Nym node operators operating gateways and opening these to any online service with the safeguards of the [Tor Null ‘deny’ list](https://tornull.org/). + +```admonish warning +Nym core team cannot provide comprehensive legal advice across all jurisdictions. Knowledge and experience with the legalities are being built up with the help of our counsel and with you, the community of Nym node operators. We encourage Nym node operators to join the operator channels ([Element](https://matrix.to/#/#operators:nymtech.chat), [Discord](https://discord.com/invite/nym), [Telegram](https://t.me/nymchan_help_chat)) to share best practices and experiences. +``` + + ## Summary * This document outlines a plan to change Nym Gateways from operating with an ‘allow’ to a ‘deny’ list to enable broader uptake and usage of the Nym mixnet. It provides operators with an overview of the plan, pros and cons, legal as well as technical advice. @@ -65,7 +71,32 @@ This restricts the hosts that the NymConnect app can connect to and has the effe In the new setup, the main change is to expand this short allow list to a more permissive setup. An exit policy will constrain the hosts that the users of the Nym Mixnet and Nym VPN can connect to. This will be done in an effort to protect the operators, as Gateways will act both as SOCKS5 Network Requesters, and exit nodes for IP traffic from Nym Mixnet VPN and VPN clients (both wrapped in the same app). +As of now we the gateways will be defaulted to Tornull’s (note: Not affiliated with Tor) deny list - reproduction permitted under Creative Commons Attribution 3.0 United States License which is IP-based, e.g., `ExitPolicy reject 5.188.10.0/23:*`. Whether we will stick with this list, do modifications (likely) or compile another one is still a subject of discussion. +<:-- +These policies will be either reused without modification from Tor / Tornull (license permitting), or customised and updated in a Nym crowdsourced community effort. +--> +The Gateways will display an HTML page similar to that suggested by [Tor](https://gitlab.torproject.org/tpo/core/tor/-/raw/HEAD/contrib/operator-tools/tor-exit-notice.html) for exit relays on port 80 and port 443. This will allow the operator to provide information about their Gateway, possibly including the currently configured exit policy, without having to actively communicate with law enforcement or regulatory authorities. It also makes the behaviour of the Gateway transparent and even computable (a possible feature would be to offer a machine readable form of the notice in JSON or YAML). +We also recommend operators to check the technical advice from [Tor](https://community.torproject.org/relay/setup/exit/). +## Legal environment - Findings from our legal team + +The Swiss legal counsel and US legal counsel have so far provided the following advice: + +### Switzerland + +TBD soon. + +### United States + +A US counsel shared the following advice: + +The legal risk faced by VPN operators subject to United States jurisdiction depends on various statutes and regulations related to privacy, anonymity, and electronic communications. The key areas to consider are: intermediary liability and exceptions, data protection, copyright infringement, export controls, criminal law, government requests for data and assistance, and third party liability. + +As outlined in Part A, the United States treats VPNs as telecommunications networks subject to intermediary liability protection from wrongful conduct that occurs on its network. However, such protections do have exceptions including criminal law and copyright claims that are worth considering. In the United States, I am not aware of an individual ever being prosecuted or convicted for running a node for a dVPN or a Privacy Enhancing Network. + +However, as discussed in Part B-C, VPN operators are subject to law enforcement requests for access or assistance in obtaining access to data relevant to an investigation into allegedly unlawful conduct that was facilitated by the network as an intermediary. As shown in Part C, governments may also request assistance from node operators for certain high-level and national security targets. + +Finally, as outlined in Parts D-G, VPN operators may also be subject to non-criminal liability including (Part D) failing to respond to notices under the DMCA, (Part E) privacy and data protection law, (Part F) third party lawsuits stemming from wrongful acts committed using the network, and (G) export control violations. From b5cc7b8e494c294511b47286da8b8f2616ba9787 Mon Sep 17 00:00:00 2001 From: Lorexia Date: Fri, 13 Oct 2023 18:35:29 +0200 Subject: [PATCH 021/347] Add TS SDK info and links to developers documentation --- documentation/dev-portal/src/events/hcpp23-max.md | 3 +-- documentation/dev-portal/src/introduction.md | 6 +++++- documentation/dev-portal/src/tutorials/typescript.md | 2 +- 3 files changed, 7 insertions(+), 4 deletions(-) diff --git a/documentation/dev-portal/src/events/hcpp23-max.md b/documentation/dev-portal/src/events/hcpp23-max.md index 00729791ea..441094bb80 100644 --- a/documentation/dev-portal/src/events/hcpp23-max.md +++ b/documentation/dev-portal/src/events/hcpp23-max.md @@ -17,8 +17,7 @@ This is a *reference page*, to see the entire presentation join Max's talk at [H ## SDKs * [Rust SDK](https://nymtech.net/docs/sdk/rust.html) -* [Typescript SDK](https://nymtech.net/docs/sdk/typescript.html) -* [Interactive Typescript SDK docs](https://sdk.nymtech.net) +* [Typescript SDK](https://sdk.nymtech.net/) ### Rust examples diff --git a/documentation/dev-portal/src/introduction.md b/documentation/dev-portal/src/introduction.md index c28c708921..6085a3038b 100644 --- a/documentation/dev-portal/src/introduction.md +++ b/documentation/dev-portal/src/introduction.md @@ -2,4 +2,8 @@ Welcome to the Nym Developer Portal, containing quickstart resources, user manuals, integration information, and tutorials outlining to start building privacy enhanced apps. -For more in-depth information about nodes, network traffic flows, clients, coconut etc check out the [docs](https://nymtech.net/docs). If you are looking for information and setup guides for the various pieces of Nym mixnet infrastructure (mix nodes, gateways and network requesters) and Nyx blockchain validators see the **new [Operators Guides](https://nymtech.net/operators)** book. +For more in-depth information about nodes, network traffic flows, clients, coconut etc check out the [docs](https://nymtech.net/docs). + +If you are looking for information and setup guides for the various pieces of Nym mixnet infrastructure (mix nodes, gateways and network requesters) and Nyx blockchain validators see the **new [Operators Guides](https://nymtech.net/operators)** book. + +If you're looking for TypeScript/JavaScript related information such as SDKs to build your own tools, step-by-step tutorials, live playgrounds and more, make sure to check out the **new [TS SDK Handbook](https://sdk.nymtech.net/)** ! \ No newline at end of file diff --git a/documentation/dev-portal/src/tutorials/typescript.md b/documentation/dev-portal/src/tutorials/typescript.md index 8c6e758ff4..c1c6ef688a 100644 --- a/documentation/dev-portal/src/tutorials/typescript.md +++ b/documentation/dev-portal/src/tutorials/typescript.md @@ -1,3 +1,3 @@ # Typescript -Tutorial code in this section is built to interact with a standalone Nym client. You can read about interacting with standalone clients [here](https://nymtech.net/docs/clients/websocket-client.html#connecting-to-the-local-websocket), although it is usually preferable to use the [Typescript SDK](https://nymtech.net/docs/sdk/typescript.html). \ No newline at end of file +Tutorial code in this section is built to interact with a standalone Nym client. You can read about interacting with standalone clients [here](https://nymtech.net/docs/clients/websocket-client.html#connecting-to-the-local-websocket), although it is usually preferable to use the [Typescript SDK](https://sdk.nymtech.net/). \ No newline at end of file From 52d5eb444b9e0332f9d5dcb2a8a599eed9a7d6f9 Mon Sep 17 00:00:00 2001 From: Mark Sinclair Date: Fri, 13 Oct 2023 18:40:47 +0100 Subject: [PATCH 022/347] Fix up Typescript CI and linting --- .github/workflows/ci-build-ts.yml | 5 +++-- .github/workflows/ci-lint-typescript.yml | 2 +- package.json | 16 ++++++++-------- .../examples/react/mui-theme/tsconfig.json | 2 +- .../examples/react/mui-theme/tsconfig.prod.json | 2 +- sdk/typescript/scripts/dev-mode-add.mjs | 12 ++++++++++++ sdk/typescript/scripts/dev-mode-remove.mjs | 11 +++++++++++ 7 files changed, 37 insertions(+), 13 deletions(-) create mode 100644 sdk/typescript/scripts/dev-mode-add.mjs create mode 100644 sdk/typescript/scripts/dev-mode-remove.mjs diff --git a/.github/workflows/ci-build-ts.yml b/.github/workflows/ci-build-ts.yml index 725144fd3f..f05873033c 100644 --- a/.github/workflows/ci-build-ts.yml +++ b/.github/workflows/ci-build-ts.yml @@ -3,7 +3,8 @@ name: ci-build-ts on: push: paths: - - 'ts-packages/**' + - "ts-packages/**" + - "sdk/typescript/**" jobs: build: @@ -20,7 +21,7 @@ jobs: - name: Setup yarn run: npm install -g yarn - name: Build - run: yarn && yarn build && yarn build:ci + run: yarn && yarn build && yarn build:ci:storybook - name: Deploy branch to CI www (storybook) continue-on-error: true uses: easingthemes/ssh-deploy@main diff --git a/.github/workflows/ci-lint-typescript.yml b/.github/workflows/ci-lint-typescript.yml index 61e7d3976b..5b2f662756 100644 --- a/.github/workflows/ci-lint-typescript.yml +++ b/.github/workflows/ci-lint-typescript.yml @@ -49,7 +49,7 @@ jobs: run: yarn - name: Build packages - run: yarn build:ci:sdk + run: yarn build:ci - name: Lint run: yarn lint diff --git a/package.json b/package.json index 634c8512b8..3470d1ee79 100644 --- a/package.json +++ b/package.json @@ -21,10 +21,6 @@ "nuke": "npx rimraf **/node_modules node_modules", "scrub": "npx rimraf **/dist dist", "clean": "lerna run clean", - - "build:ci:sdk": "run-s build:types build:packages build:wasm build:sdk:ci", - "build:sdk:ci": "lerna run --scope '{@nymproject/sdk,@nymproject/node-tester,@nymproject/sdk-react,@nymproject/mix-fetch}' build:dev --stream", - "build": "run-s build:types build:packages", "build:wasm": "make sdk-wasm-build", "build:types": "lerna run --scope @nymproject/types build --stream", @@ -33,8 +29,10 @@ "build:packages:react": "lerna run --scope @nymproject/react build", "build:react-example": "lerna run --scope @nymproject/react-webpack-with-theme-example build --stream", "build:playground": "lerna run --scope @nymproject/react storybook:build --stream", - "build:ci": "yarn build && run-p build:react-example build:playground && yarn build:ci:collect-artifacts", - "build:ci:collect-artifacts": "mkdir -p ts-packages/dist && mv ts-packages/react-components/storybook-static ts-packages/dist/storybook && mv ts-packages/react-webpack-with-theme-example/dist ts-packages/dist/example", + "build:ci:storybook": "yarn build && yarn dev:on && run-p build:react-example build:playground && yarn build:ci:storybook:collect-artifacts", + "build:ci:storybook:collect-artifacts": "mkdir -p ts-packages/dist && mv sdk/typescript/packages/react-components/storybook-static ts-packages/dist/storybook && mv sdk/typescript/examples/react/mui-theme/dist ts-packages/dist/example", + "build:ci": "run-s build:types build:packages build:wasm dev:on build:ci:sdk dev:off", + "build:ci:sdk": "lerna run --scope '{@nymproject/sdk,@nymproject/node-tester,@nymproject/sdk-react,@nymproject/mix-fetch}' build:dev --stream", "docs:prod:build": "run-s docs:prod:build:ws", "docs:prod:build:ws": "lerna run docs:prod:build --stream", "sdk:build": "./sdk/typescript/scripts/build-prod-sdk.sh", @@ -43,7 +41,9 @@ "lint:fix": "lerna run lint:fix --stream", "tsc": "lerna run tsc --stream", "types:lint:fix": "lerna run lint:fix --scope @nymproject/types --scope @nymproject/nym-wallet-app", - "audit:fix": "npm_config_yes=true npx yarn-audit-fix -- --dry-run" + "audit:fix": "npm_config_yes=true npx yarn-audit-fix -- --dry-run", + "dev:on": "node sdk/typescript/scripts/dev-mode-add.mjs", + "dev:off": "node sdk/typescript/scripts/dev-mode-remove.mjs" }, "devDependencies": { "lerna": "^7.3.0", @@ -51,4 +51,4 @@ "@npmcli/node-gyp": "^3.0.0", "node-gyp": "^9.3.1" } -} +} \ No newline at end of file diff --git a/sdk/typescript/examples/react/mui-theme/tsconfig.json b/sdk/typescript/examples/react/mui-theme/tsconfig.json index 16a2991aa8..61a0369036 100644 --- a/sdk/typescript/examples/react/mui-theme/tsconfig.json +++ b/sdk/typescript/examples/react/mui-theme/tsconfig.json @@ -1,5 +1,5 @@ { - "extends": "../tsconfig.json", + "extends": "../../../tsconfig.json", "compilerOptions": { "jsx": "react-jsx", "outDir": "./dist" diff --git a/sdk/typescript/examples/react/mui-theme/tsconfig.prod.json b/sdk/typescript/examples/react/mui-theme/tsconfig.prod.json index ea260ca2f9..91c06f5938 100644 --- a/sdk/typescript/examples/react/mui-theme/tsconfig.prod.json +++ b/sdk/typescript/examples/react/mui-theme/tsconfig.prod.json @@ -1,5 +1,5 @@ { - "extends": "../tsconfig.json", + "extends": "../../../tsconfig.json", "compilerOptions": { "jsx": "react-jsx", "outDir": "./dist", diff --git a/sdk/typescript/scripts/dev-mode-add.mjs b/sdk/typescript/scripts/dev-mode-add.mjs new file mode 100644 index 0000000000..24bffbfbc2 --- /dev/null +++ b/sdk/typescript/scripts/dev-mode-add.mjs @@ -0,0 +1,12 @@ +import fs from 'fs'; + +const packageJson = JSON.parse(fs.readFileSync('package.json').toString()); + +const devWorkspace = ['sdk/typescript/packages/**', 'sdk/typescript/examples/**']; +if (!packageJson.workspaces.includes(devWorkspace)) { + // add + packageJson.workspaces.push(...devWorkspace); + + // write out modified file + fs.writeFileSync('package.json', JSON.stringify(packageJson, null, 2)); +} diff --git a/sdk/typescript/scripts/dev-mode-remove.mjs b/sdk/typescript/scripts/dev-mode-remove.mjs new file mode 100644 index 0000000000..a8317d8e7f --- /dev/null +++ b/sdk/typescript/scripts/dev-mode-remove.mjs @@ -0,0 +1,11 @@ +import fs from 'fs'; + +const packageJson = JSON.parse(fs.readFileSync('package.json').toString()); + +const devWorkspace = ['sdk/typescript/packages/**', 'sdk/typescript/examples/**']; + +// remove +packageJson.workspaces = packageJson.workspaces.filter((w) => !devWorkspace.includes(w)); + +// write out modified file +fs.writeFileSync('package.json', JSON.stringify(packageJson, null, 2)); From ffcfa9435fe737f21267e651e875684607d88002 Mon Sep 17 00:00:00 2001 From: Mark Sinclair Date: Fri, 13 Oct 2023 18:58:32 +0100 Subject: [PATCH 023/347] Run GitHub Actions for Typescript and MacOS on large runners --- .github/workflows/ci-build-ts.yml | 2 +- .github/workflows/ci-lint-typescript.yml | 2 +- .github/workflows/publish-nym-connect-macos.yml | 2 +- .github/workflows/publish-nym-wallet-macos.yml | 2 +- .github/workflows/publish-sdk-npm.yml | 2 +- 5 files changed, 5 insertions(+), 5 deletions(-) diff --git a/.github/workflows/ci-build-ts.yml b/.github/workflows/ci-build-ts.yml index f05873033c..29d986f5ce 100644 --- a/.github/workflows/ci-build-ts.yml +++ b/.github/workflows/ci-build-ts.yml @@ -8,7 +8,7 @@ on: jobs: build: - runs-on: custom-runner-linux + runs-on: ubuntu-20.04-16-core steps: - uses: actions/checkout@v2 - name: Install rsync diff --git a/.github/workflows/ci-lint-typescript.yml b/.github/workflows/ci-lint-typescript.yml index 5b2f662756..c13443aec1 100644 --- a/.github/workflows/ci-lint-typescript.yml +++ b/.github/workflows/ci-lint-typescript.yml @@ -22,7 +22,7 @@ on: jobs: build: - runs-on: custom-runner-linux + runs-on: ubuntu-20.04-16-core steps: - uses: actions/checkout@v2 - uses: rlespinasse/github-slug-action@v3.x diff --git a/.github/workflows/publish-nym-connect-macos.yml b/.github/workflows/publish-nym-connect-macos.yml index e5060b7aad..4a17f090e0 100644 --- a/.github/workflows/publish-nym-connect-macos.yml +++ b/.github/workflows/publish-nym-connect-macos.yml @@ -14,7 +14,7 @@ jobs: strategy: fail-fast: false matrix: - platform: [macos-latest] + platform: [macos-12-large] runs-on: ${{ matrix.platform }} outputs: diff --git a/.github/workflows/publish-nym-wallet-macos.yml b/.github/workflows/publish-nym-wallet-macos.yml index 497f367047..63cb7426a7 100644 --- a/.github/workflows/publish-nym-wallet-macos.yml +++ b/.github/workflows/publish-nym-wallet-macos.yml @@ -14,7 +14,7 @@ jobs: strategy: fail-fast: false matrix: - platform: [macos-latest] + platform: [macos-12-large] runs-on: ${{ matrix.platform }} outputs: diff --git a/.github/workflows/publish-sdk-npm.yml b/.github/workflows/publish-sdk-npm.yml index e5164d6dec..1cc937827b 100644 --- a/.github/workflows/publish-sdk-npm.yml +++ b/.github/workflows/publish-sdk-npm.yml @@ -4,7 +4,7 @@ on: jobs: publish: - runs-on: [custom-runner-linux] + runs-on: ubuntu-20.04-16-core steps: - uses: actions/checkout@v2 From 1abcad05c1566c643afd11a3dcbe028b85a23c14 Mon Sep 17 00:00:00 2001 From: Mark Sinclair Date: Fri, 13 Oct 2023 19:10:39 +0100 Subject: [PATCH 024/347] GitHub Actions install wasm-opt --- .github/workflows/ci-lint-typescript.yml | 2 ++ .github/workflows/publish-sdk-npm.yml | 3 +++ 2 files changed, 5 insertions(+) diff --git a/.github/workflows/ci-lint-typescript.yml b/.github/workflows/ci-lint-typescript.yml index c13443aec1..bf9e4bf924 100644 --- a/.github/workflows/ci-lint-typescript.yml +++ b/.github/workflows/ci-lint-typescript.yml @@ -39,6 +39,8 @@ jobs: toolchain: stable - name: Install wasm-pack run: curl https://rustwasm.github.io/wasm-pack/installer/init.sh -sSf | sh + - name: Install wasm-opt + run: cargo install wasm-opt - name: Set up Go uses: actions/setup-go@v4 diff --git a/.github/workflows/publish-sdk-npm.yml b/.github/workflows/publish-sdk-npm.yml index 1cc937827b..5836a12e37 100644 --- a/.github/workflows/publish-sdk-npm.yml +++ b/.github/workflows/publish-sdk-npm.yml @@ -25,6 +25,9 @@ jobs: - name: Install wasm-pack run: curl https://rustwasm.github.io/wasm-pack/installer/init.sh -sSf | sh + - name: Install wasm-opt + run: cargo install wasm-opt + - name: Install dependencies run: yarn From e381e9e37f4a1228b5c008be40b7ec5cb84923b8 Mon Sep 17 00:00:00 2001 From: Mark Sinclair Date: Fri, 13 Oct 2023 19:22:33 +0100 Subject: [PATCH 025/347] Fix pre and post CI package loading --- package.json | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/package.json b/package.json index 3470d1ee79..dd72164411 100644 --- a/package.json +++ b/package.json @@ -31,7 +31,9 @@ "build:playground": "lerna run --scope @nymproject/react storybook:build --stream", "build:ci:storybook": "yarn build && yarn dev:on && run-p build:react-example build:playground && yarn build:ci:storybook:collect-artifacts", "build:ci:storybook:collect-artifacts": "mkdir -p ts-packages/dist && mv sdk/typescript/packages/react-components/storybook-static ts-packages/dist/storybook && mv sdk/typescript/examples/react/mui-theme/dist ts-packages/dist/example", - "build:ci": "run-s build:types build:packages build:wasm dev:on build:ci:sdk dev:off", + "prebuild:ci": "yarn dev:on && yarn", + "build:ci": "run-s build:types build:packages build:wasm build:ci:sdk", + "postbuild:ci": "yarn dev:off", "build:ci:sdk": "lerna run --scope '{@nymproject/sdk,@nymproject/node-tester,@nymproject/sdk-react,@nymproject/mix-fetch}' build:dev --stream", "docs:prod:build": "run-s docs:prod:build:ws", "docs:prod:build:ws": "lerna run docs:prod:build --stream", From edc100e67eecf3fad41d8f8dfa4ebda74a417a72 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jon=20H=C3=A4ggblad?= Date: Sun, 15 Oct 2023 22:39:52 +0200 Subject: [PATCH 026/347] clippy::needless-pass-by-ref-mut --- common/client-libs/gateway-client/src/socket_state.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/common/client-libs/gateway-client/src/socket_state.rs b/common/client-libs/gateway-client/src/socket_state.rs index 6f82ef4939..421e8c4c92 100644 --- a/common/client-libs/gateway-client/src/socket_state.rs +++ b/common/client-libs/gateway-client/src/socket_state.rs @@ -74,7 +74,7 @@ impl PartiallyDelegated { fn route_socket_messages( ws_msgs: Vec, - packet_router: &mut PacketRouter, + packet_router: &PacketRouter, shared_key: &SharedKeys, ) -> Result<(), GatewayClientError> { let plaintexts = Self::recover_received_plaintexts(ws_msgs, shared_key); From f9063a298b1aa8818239a39f70a5a807298fa6ea Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jon=20H=C3=A4ggblad?= Date: Sun, 15 Oct 2023 22:40:52 +0200 Subject: [PATCH 027/347] clippy::unnecessary-mut-passed --- common/client-libs/gateway-client/src/socket_state.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/common/client-libs/gateway-client/src/socket_state.rs b/common/client-libs/gateway-client/src/socket_state.rs index 421e8c4c92..813ab0ebd3 100644 --- a/common/client-libs/gateway-client/src/socket_state.rs +++ b/common/client-libs/gateway-client/src/socket_state.rs @@ -115,7 +115,7 @@ impl PartiallyDelegated { Ok(msgs) => msgs }; - if let Err(err) = Self::route_socket_messages(ws_msgs, &mut packet_router, shared_key.as_ref()) { + if let Err(err) = Self::route_socket_messages(ws_msgs, &packet_router, shared_key.as_ref()) { log::warn!("Route socket messages failed: {err}"); } } From a12c733b01a081fa6b1f210b988440bb784ca749 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jon=20H=C3=A4ggblad?= Date: Sun, 15 Oct 2023 22:41:46 +0200 Subject: [PATCH 028/347] clippy::needless-pass-by-ref-mut --- common/client-libs/gateway-client/src/socket_state.rs | 1 - 1 file changed, 1 deletion(-) diff --git a/common/client-libs/gateway-client/src/socket_state.rs b/common/client-libs/gateway-client/src/socket_state.rs index 813ab0ebd3..6f325b3520 100644 --- a/common/client-libs/gateway-client/src/socket_state.rs +++ b/common/client-libs/gateway-client/src/socket_state.rs @@ -97,7 +97,6 @@ impl PartiallyDelegated { let mixnet_receiver_future = async move { let mut notify_receiver = notify_receiver; let mut chunk_stream = (&mut stream).ready_chunks(8); - let mut packet_router = packet_router; let ret_err = loop { tokio::select! { From ea606857c2e2b5e5eda65a074432d5166818180f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jon=20H=C3=A4ggblad?= Date: Sun, 15 Oct 2023 22:48:31 +0200 Subject: [PATCH 029/347] clippy in ephemera (not all) --- ephemera/src/core/api_cmd.rs | 2 +- ephemera/src/core/builder.rs | 6 +++--- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/ephemera/src/core/api_cmd.rs b/ephemera/src/core/api_cmd.rs index 2895d8a79a..a247305412 100644 --- a/ephemera/src/core/api_cmd.rs +++ b/ephemera/src/core/api_cmd.rs @@ -101,7 +101,7 @@ impl ApiCmdProcessor { } fn ephemera_config( - ephemera: &mut Ephemera, + ephemera: &Ephemera, reply: Sender>, ) { let node_info = ephemera.node_info.clone(); diff --git a/ephemera/src/core/builder.rs b/ephemera/src/core/builder.rs index 0c89f9ecfd..31d466420e 100644 --- a/ephemera/src/core/builder.rs +++ b/ephemera/src/core/builder.rs @@ -191,10 +191,10 @@ impl EphemeraStarterWithApplication { let block_manager = self.init_block_manager(&mut storage)?; - let (mut shutdown_manager, shutdown_handle) = ShutdownManager::init(); + let (shutdown_manager, shutdown_handle) = ShutdownManager::init(); let mut service_data = ServiceInfo::default(); - let services = self.init_services(&mut service_data, &mut shutdown_manager, provider)?; + let services = self.init_services(&mut service_data, &shutdown_manager, provider)?; Ok(EphemeraStarterWithProvider { with_application: self, @@ -237,7 +237,7 @@ impl EphemeraStarterWithApplication { >( &mut self, service_data: &mut ServiceInfo, - shutdown_manager: &mut ShutdownManager, + shutdown_manager: &ShutdownManager, provider: P, ) -> anyhow::Result>>> { let services = vec![ From 2c8187eb6ced14643a982db669b61e70d27f0638 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jon=20H=C3=A4ggblad?= Date: Mon, 16 Oct 2023 09:44:10 +0200 Subject: [PATCH 030/347] wireguard: parse the public key up front in the UDP handler (#3977) * wireguard: try to have a flow where we parse the public key up front * Fix bug with continue instead of return in loop * fix clippy::enum-variant-names --- common/wireguard/src/event.rs | 16 ++- .../src/platform/linux/tun_device.rs | 2 +- common/wireguard/src/udp_listener.rs | 116 ++++++++++++++---- common/wireguard/src/wg_tunnel.rs | 25 ++-- 4 files changed, 122 insertions(+), 37 deletions(-) diff --git a/common/wireguard/src/event.rs b/common/wireguard/src/event.rs index 7d425cd5d6..9b62bf2b4e 100644 --- a/common/wireguard/src/event.rs +++ b/common/wireguard/src/event.rs @@ -3,23 +3,29 @@ use std::fmt::{Display, Formatter}; use bytes::Bytes; #[allow(unused)] -#[derive(Debug, Clone)] +#[derive(Debug)] pub enum Event { /// IP packet received from the WireGuard tunnel that should be passed through to the corresponding virtual device/internet. /// Original implementation also has protocol here since it understands it, but we'll have to infer it downstream - WgPacket(Bytes), + Wg(Bytes), + /// IP packet received from the UDP listener that was verified as part of the handshake + WgVerified(Bytes), /// IP packet to be sent through the WireGuard tunnel as crafted by the virtual device. - IpPacket(Bytes), + Ip(Bytes), } impl Display for Event { fn fmt(&self, f: &mut Formatter<'_>) -> std::fmt::Result { match self { - Event::WgPacket(data) => { + Event::Wg(data) => { let size = data.len(); write!(f, "WgPacket{{ size={size} }}") } - Event::IpPacket(data) => { + Event::WgVerified(data) => { + let size = data.len(); + write!(f, "WgVerifiedPacket{{ size={size} }}") + } + Event::Ip(data) => { let size = data.len(); write!(f, "IpPacket{{ size={size} }}") } diff --git a/common/wireguard/src/platform/linux/tun_device.rs b/common/wireguard/src/platform/linux/tun_device.rs index 0e0b71da28..96b8ffeaa1 100644 --- a/common/wireguard/src/platform/linux/tun_device.rs +++ b/common/wireguard/src/platform/linux/tun_device.rs @@ -63,7 +63,7 @@ pub(crate) fn start_tun_device(peers_by_ip: Arc>) -> if let Some(peer_tx) = peers_by_ip.lock().unwrap().longest_match(dst_addr).map(|(_, tx)| tx) { log::info!("Forward packet to wg tunnel"); peer_tx - .send(Event::IpPacket(packet.to_vec().into())) + .send(Event::Ip(packet.to_vec().into())) .tap_err(|err| log::error!("{err}")) .unwrap(); } else { diff --git a/common/wireguard/src/udp_listener.rs b/common/wireguard/src/udp_listener.rs index 8435955670..7539b343a7 100644 --- a/common/wireguard/src/udp_listener.rs +++ b/common/wireguard/src/udp_listener.rs @@ -1,7 +1,12 @@ -use std::{net::SocketAddr, sync::Arc}; +use std::{collections::HashMap, net::SocketAddr, sync::Arc}; +use boringtun::{ + noise::{handshake::parse_handshake_anon, rate_limiter::RateLimiter, TunnResult}, + x25519, +}; use dashmap::DashMap; use futures::StreamExt; +use ip_network::IpNetwork; use log::error; use nym_task::TaskClient; use tap::TapFallible; @@ -20,9 +25,16 @@ use crate::{ const MAX_PACKET: usize = 65535; pub(crate) type PeerIdx = u32; -pub(crate) type ActivePeers = DashMap>; +pub(crate) type ActivePeers = DashMap>; pub(crate) type PeersByIp = NetworkTable>; +#[derive(Debug)] +struct RegisteredPeer { + public_key: x25519::PublicKey, + allowed_ips: IpNetwork, + // endpoint: SocketAddr, +} + pub(crate) async fn start_udp_listener( tun_task_tx: TunTaskTx, active_peers: Arc, @@ -33,19 +45,37 @@ pub(crate) async fn start_udp_listener( log::info!("Starting wireguard UDP listener on {wg_address}"); let udp_socket = Arc::new(UdpSocket::bind(wg_address).await?); - // Setup static key for development + // Setup our own keys let static_private = setup::server_static_private_key(); + let static_public = x25519::PublicKey::from(&static_private); + let handshake_max_rate = 100u64; + let rate_limiter = RateLimiter::new(&static_public, handshake_max_rate); - // A single hardcoded peer + // Test peer let peer_static_public = setup::peer_static_public_key(); let peer_allowed_ips = setup::peer_allowed_ips(); let peer_index = 0; + let test_peer = Arc::new(tokio::sync::Mutex::new(RegisteredPeer { + public_key: peer_static_public, + allowed_ips: peer_allowed_ips, + })); + + type PeerIdx = u32; + let mut registered_peers: HashMap>> = + HashMap::new(); + let mut registered_peers_by_idx: HashMap>> = + HashMap::new(); + + registered_peers.insert(peer_static_public, Arc::clone(&test_peer)); + registered_peers_by_idx.insert(0, test_peer); tokio::spawn(async move { // Each tunnel is run in its own task, and the task handle is stored here so we can remove // it from `active_peers` when the tunnel is closed let mut active_peers_task_handles = futures::stream::FuturesUnordered::new(); + let mut buf = [0u8; MAX_PACKET]; + let mut dst_buf = [0u8; MAX_PACKET]; while !task_client.is_shutdown() { tokio::select! { @@ -54,11 +84,11 @@ pub(crate) async fn start_udp_listener( break; } // Handle tunnel closing - Some(addr) = active_peers_task_handles.next() => { - match addr { - Ok(addr) => { - log::info!("Removing peer: {addr:?}"); - active_peers.remove(&addr); + Some(public_key) = active_peers_task_handles.next() => { + match public_key { + Ok(public_key) => { + log::info!("Removing peer: {public_key:?}"); + active_peers.remove(&public_key); // TODO: remove from peers_by_ip } Err(err) => { @@ -70,38 +100,78 @@ pub(crate) async fn start_udp_listener( Ok((len, addr)) = udp_socket.recv_from(&mut buf) => { log::trace!("udp: received {} bytes from {}", len, addr); - if let Some(peer_tx) = active_peers.get_mut(&addr) { + // Verify the incoming packet + let verified_packet = match rate_limiter.verify_packet(Some(addr.ip()), &buf[..len], &mut dst_buf) { + Ok(packet) => packet, + Err(TunnResult::WriteToNetwork(cookie)) => { + log::info!("WireGuard UDP listener: send back cookie"); + udp_socket.send_to(cookie, addr).await.unwrap(); + continue; + } + Err(err) => { + log::warn!("{err:?}"); + continue; + } + }; + + // Check if this is a registered peer, if not, just skip + let registered_peer = match verified_packet { + boringtun::noise::Packet::HandshakeInit(ref packet) => { + let Ok(handshake) = parse_handshake_anon(&static_private, &static_public, packet) else { + log::warn!("Handshake failed"); + continue; + }; + registered_peers.get(&x25519::PublicKey::from(handshake.peer_static_public)) + }, + boringtun::noise::Packet::HandshakeResponse(packet) => { + let peer_idx = packet.receiver_idx >> 8; + registered_peers_by_idx.get(&peer_idx) + }, + boringtun::noise::Packet::PacketCookieReply(packet) => { + let peer_idx = packet.receiver_idx >> 8; + registered_peers_by_idx.get(&peer_idx) + }, + boringtun::noise::Packet::PacketData(packet) => { + let peer_idx = packet.receiver_idx >> 8; + registered_peers_by_idx.get(&peer_idx) + }, + }; + + let registered_peer = if let Some(registered_peer) = registered_peer { + registered_peer.lock().await + } else { + log::warn!("Peer not registered"); + continue; + }; + + // Look up if the peer is already connected + if let Some(peer_tx) = active_peers.get_mut(®istered_peer.public_key) { + // If it is, send it the packet to deal with log::info!("udp: received {len} bytes from {addr} from known peer"); - peer_tx.send(Event::WgPacket(buf[..len].to_vec().into())) + peer_tx.send(Event::WgVerified(buf[..len].to_vec().into())) .tap_err(|err| log::error!("{err}")) .unwrap(); } else { + // If it isn't, start a new tunnel log::info!("udp: received {len} bytes from {addr} from unknown peer, starting tunnel"); - // TODO: this is a temporary solution for development since this - // assumes we know the peer_static_public this corresponds to. - // TODO: rework this before production! This is likely not secure! - log::warn!("Assuming peer_static_public is known"); - log::warn!("SECURITY: Rework me to do proper handshake before creating the tunnel!"); let (join_handle, peer_tx) = crate::wg_tunnel::start_wg_tunnel( addr, udp_socket.clone(), static_private.clone(), - peer_static_public, - peer_allowed_ips, + registered_peer.public_key, + registered_peer.allowed_ips, peer_index, tun_task_tx.clone(), ); - peers_by_ip.lock().unwrap().insert(peer_allowed_ips, peer_tx.clone()); + peers_by_ip.lock().unwrap().insert(registered_peer.allowed_ips, peer_tx.clone()); - peer_tx.send(Event::WgPacket(buf[..len].to_vec().into())) + peer_tx.send(Event::Wg(buf[..len].to_vec().into())) .tap_err(|err| log::error!("{err}")) .unwrap(); - // WIP(JON): active peers should probably be keyed by peer_static_public - // instead. Does this current setup lead to any issues? log::info!("Adding peer: {addr}"); - active_peers.insert(addr, peer_tx); + active_peers.insert(registered_peer.public_key, peer_tx); active_peers_task_handles.push(join_handle); } }, diff --git a/common/wireguard/src/wg_tunnel.rs b/common/wireguard/src/wg_tunnel.rs index 2d44a03fb1..11f8485cf3 100644 --- a/common/wireguard/src/wg_tunnel.rs +++ b/common/wireguard/src/wg_tunnel.rs @@ -61,6 +61,7 @@ impl WireGuardTunnel { peer_static_public: x25519::PublicKey, peer_allowed_ips: ip_network::IpNetwork, index: PeerIdx, + // rate_limiter: Option, tunnel_tx: TunTaskTx, ) -> (Self, mpsc::UnboundedSender) { let local_addr = udp.local_addr().unwrap(); @@ -126,12 +127,17 @@ impl WireGuardTunnel { Some(packet) => { info!("event loop: {packet}"); match packet { - Event::WgPacket(data) => { + Event::Wg(data) => { let _ = self.consume_wg(&data) .await .tap_err(|err| error!("WireGuard tunnel: consume_wg error: {err}")); }, - Event::IpPacket(data) => self.consume_eth(&data).await, + Event::WgVerified(data) => { + let _ = self.consume_verified_wg(&data) + .await + .tap_err(|err| error!("WireGuard tunnel: consume_verified_wg error: {err}")); + } + Event::Ip(data) => self.consume_eth(&data).await, } }, None => { @@ -191,8 +197,6 @@ impl WireGuardTunnel { } } TunnResult::WriteToTunnelV4(packet, addr) => { - // TODO: once the flow is redone, we should add updating the endpoint dynamically - // self.set_endpoint(addr); if self.allowed_ips.longest_match(addr).is_some() { self.tun_task_tx.send(packet.to_vec()).unwrap(); } else { @@ -200,8 +204,6 @@ impl WireGuardTunnel { } } TunnResult::WriteToTunnelV6(packet, addr) => { - // TODO: once the flow is redone, we should add updating the endpoint dynamically - // self.set_endpoint(addr); if self.allowed_ips.longest_match(addr).is_some() { self.tun_task_tx.send(packet.to_vec()).unwrap(); } else { @@ -218,6 +220,13 @@ impl WireGuardTunnel { Ok(()) } + async fn consume_verified_wg(&mut self, data: &[u8]) -> Result<(), WgError> { + // Potentially we could take some shortcuts here in the name of performance, but currently + // I don't see that the needed functions in boringtun is exposed in the public API. + // TODO: make sure we don't put double pressure on the rate limiter! + self.consume_wg(data).await + } + async fn consume_eth(&self, data: &Bytes) { info!("consume_eth: raw packet size: {}", data.len()); let encapsulated_packet = self.encapsulate_packet(data).await; @@ -300,7 +309,7 @@ pub(crate) fn start_wg_tunnel( peer_index: PeerIdx, tunnel_tx: TunTaskTx, ) -> ( - tokio::task::JoinHandle, + tokio::task::JoinHandle, mpsc::UnboundedSender, ) { let (mut tunnel, peer_tx) = WireGuardTunnel::new( @@ -314,7 +323,7 @@ pub(crate) fn start_wg_tunnel( ); let join_handle = tokio::spawn(async move { tunnel.spin_off().await; - endpoint + peer_static_public }); (join_handle, peer_tx) } From 611a945a3bcffca00a4311c6e5a94ca762d9b33d Mon Sep 17 00:00:00 2001 From: Lorexia Date: Tue, 19 Sep 2023 14:00:11 +0200 Subject: [PATCH 031/347] Fix examples code --- .../docs/pages/guides/mix-fetch.mdx | 61 ++++++++++++++---- sdk/typescript/docs/pages/guides/mixnet.mdx | 10 ++- .../docs/pages/guides/nym-smart-contracts.mdx | 64 +++---------------- sdk/typescript/docs/pages/installation.mdx | 10 +-- 4 files changed, 67 insertions(+), 78 deletions(-) diff --git a/sdk/typescript/docs/pages/guides/mix-fetch.mdx b/sdk/typescript/docs/pages/guides/mix-fetch.mdx index 6cdeaae7c0..e6c9b448c0 100644 --- a/sdk/typescript/docs/pages/guides/mix-fetch.mdx +++ b/sdk/typescript/docs/pages/guides/mix-fetch.mdx @@ -1,30 +1,63 @@ +import { Callout } from 'nextra/components' + # `mixFetch` An easy way to secure parts or all of your web app is to replace calls to [`fetch`](https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API/Using_Fetch) with `mixFetch`: ``` -npm install @nymproject/mix-fetch +npm install @nymproject/mix-fetch-full-fat ``` -And then: +Mixfetch works the same as vanilla `fetch` as it's a proxied wrapper around the original function: + + + Again, for this example, we will be using the `full-fat` version of the ESM SDK. + ```ts -import { mixFetch } from '@nymproject/mix-fetch'; +import { mixFetch } from '@nymproject/mix-fetch-full-fat'; +import React from 'react'; -... +export function HttpGET() { + const [html, setHtml] = React.useState('') + async function get () { + const response = await mixFetch('https://nymtech.net') + const text = await response.text() + console.log('response was', text) + setHtml(html) + } -// HTTP GET -const response = await mixFetch('https://nymtech.net'); -const html = await response.text(); + return ( + <> + + + ) +} -... +export function HttpPOST() { + async function post () { + const apiResponse = await mixFetch('https://api.example.com', { + method: 'POST', + body: JSON.stringify({ foo: 'bar' }), + headers: { [`Content-Type`]: 'application/json', Authorization: `Bearer ${import.meta.env.VITE_AUTH_TOKEN}` } + }) + console.log(apiResponse) + } + return ( + <> + + + ) +} -// HTTP POST -const apiResponse = await mixFetch('https://api.example.com', { - method: 'POST', - body: JSON.stringify({ foo: 'bar' }), - headers: { [`Content-Type`]: 'application/json', Authorization: `Bearer ${AUTH_TOKEN}` } -}); +export default function App() { + return ( + <> + + + + ) +} ``` Sounds great, are there any catches? Well, there are a few (for now): diff --git a/sdk/typescript/docs/pages/guides/mixnet.mdx b/sdk/typescript/docs/pages/guides/mixnet.mdx index 4e3f6025ad..63f95b6581 100644 --- a/sdk/typescript/docs/pages/guides/mixnet.mdx +++ b/sdk/typescript/docs/pages/guides/mixnet.mdx @@ -10,6 +10,12 @@ Replying can be done in two ways: - reveal the sender's address to the recipient (as part of the payload) - use a SURB (single use reply block) that allows the recipient to reply to the sender without compromising the identity of either party +##### Set-up your environment +Create your directory and set-up your app environment: +```bash +npm create vite@latest +``` + ##### Imports Import the SDK's Mixnet Client as well as the payload in your app: ````js @@ -32,7 +38,7 @@ import { const nymApiUrl = "https://validator.nymtech.net/api"; -export const Traffic = () => { +export default function Traffic() { const [nym, setNym] = useState(); const [selfAddress, setSelfAddress] = useState(); const [recipient, setRecipient] = useState(); @@ -101,6 +107,4 @@ export const Traffic = () => { ); }; - - ``` diff --git a/sdk/typescript/docs/pages/guides/nym-smart-contracts.mdx b/sdk/typescript/docs/pages/guides/nym-smart-contracts.mdx index b0fcbc472f..d31b017ff4 100644 --- a/sdk/typescript/docs/pages/guides/nym-smart-contracts.mdx +++ b/sdk/typescript/docs/pages/guides/nym-smart-contracts.mdx @@ -21,15 +21,16 @@ Lists of the diffent available clients and methods from the `Contract Clients` c Depending on your app or project's architecture, this could be any of the ESM or CJS versions of the `Contract Clients`. ##### Set-up your environment + Create your directory and set-up your app environment: -``` -npx create-react-app my-app +```bash +npm create vite@latest ``` ##### Installation Install the package and its dependencies from Cosmos Stargate: -``` -npm install @nymproject/contract-clients @cosmjs/cosmwasm-stargate @cosmjs/proto-signing +```bash +npm install @nymproject/contract-clients @cosmjs/cosmwasm-stargate @cosmjs/proto-signing --save ``` ## Query clients @@ -40,53 +41,6 @@ import { contracts } from '@nymproject/contract-clients'; import { SigningCosmWasmClient } from "@cosmjs/cosmwasm-stargate"; ```` -##### Polyfills - -You will need to install: - -`npm install --save url fs assert crypto-browserify stream-http https-browserify os-browserify buffer stream-browserify process react-app-rewired` - -and create a `config-overrides.js`file: -```js -const webpack = require('webpack'); -module.exports = function override(config, env) { - config.resolve.fallback = { - url: require.resolve('url'), - fs: require.resolve('fs'), - assert: require.resolve('assert'), - crypto: require.resolve('crypto-browserify'), - http: require.resolve('stream-http'), - https: require.resolve('https-browserify'), - os: require.resolve('os-browserify/browser'), - buffer: require.resolve('buffer'), - stream: require.resolve('stream-browserify'), - }; - config.plugins.push( - new webpack.ProvidePlugin({ - process: 'process/browser', - Buffer: ['buffer', 'Buffer'], - }), - ); - - return config; -} -``` -Update your `package.json` file: -```json -"scripts": { - "start": "react-app-rewired start", - "build": "react-app-rewired build", - "test": "react-app-rewired test", - "eject": "react-scripts eject" // don't change the eject - }, - ``` - - - - - - - ##### Example: using the Mixnet smart contract client to query In this example, we will use the `MixnetQueryClient`from the `Contract Clients` to simply query the contract and return a list of Mixnodes. @@ -158,9 +112,9 @@ Note that for the `settings.ts` file, we have used the following structure: export const mySettings = { url: "wss://rpc.nymtech.net:443", - mixnetContractAddress: , - mnemonic: ', - address: + mixnetContractAddress: '', + mnemonic: '', + address: '' }; export const settings = mySettings; @@ -337,6 +291,4 @@ export default function Exec() { ); } - ``` - diff --git a/sdk/typescript/docs/pages/installation.mdx b/sdk/typescript/docs/pages/installation.mdx index 37b2a8883a..1ef32dc172 100644 --- a/sdk/typescript/docs/pages/installation.mdx +++ b/sdk/typescript/docs/pages/installation.mdx @@ -5,14 +5,14 @@ import { Callout } from 'nextra/components' The Typescript SDK's different modules allow developers to start building browser-based applications quickly, by simply importing the SDK module of their choice - depending on the component from the Nym architecture they want to use - into their code via NPM as they would any other Typescript library. - SDK modules come in four different flavours (ESM, CJS and full-fat for ESM and CJS). - This documentation only shows instructions and examples for the unbundled ESM variant. + Other than the `Contract Clients`, SDK modules come in four different flavours (ESM, CJS and full-fat for ESM and CJS). + This documentation focuses on examples using the `full-fat` versions. #### Install all ``` -npm install @nymproject/contract-clients @cosmjs/cosmwasm-stargate @cosmjs/proto-signing @nymproject/sdk @nymproject/mix-fetch --save +npm install @nymproject/contract-clients @cosmjs/cosmwasm-stargate @cosmjs/proto-signing @nymproject/sdk-full-fat @nymproject/mix-fetch-full-fat --save ``` ## Nym Smart Contracts @@ -46,7 +46,7 @@ In order to send or receive traffic over the mixnet, you'll need to use the [`Mi First install the package and its dependencies: ``` -npm install @nymproject/sdk --save +npm install @nymproject/sdk-full-fat --save ``` ## MixFetch @@ -59,7 +59,7 @@ In order to fetch data through mixFetch you'll need to use the [`MixFetch packag First install the package and its dependencies: ``` -npm install @nymproject/mix-fetch --save +npm install @nymproject/mix-fetch-full-fat --save ``` From 1412ca8fdd3e7d27f2d9251597f615e31563aafd Mon Sep 17 00:00:00 2001 From: Lorexia Date: Tue, 19 Sep 2023 15:12:02 +0200 Subject: [PATCH 032/347] Detail Cosmoskit example and add more fixes --- .../docs/pages/guides/cosmos-kit.mdx | 73 ++++++++++++++++--- sdk/typescript/docs/pages/installation.mdx | 8 +- 2 files changed, 67 insertions(+), 14 deletions(-) diff --git a/sdk/typescript/docs/pages/guides/cosmos-kit.mdx b/sdk/typescript/docs/pages/guides/cosmos-kit.mdx index 7d5fc11291..4697f384c5 100644 --- a/sdk/typescript/docs/pages/guides/cosmos-kit.mdx +++ b/sdk/typescript/docs/pages/guides/cosmos-kit.mdx @@ -7,35 +7,88 @@ Nym, these include: - using the [Ledger hardware wallet](https://docs.cosmoskit.com/integrating-wallets/ledger) from the browser - any wallet that supports [Wallet Connect v2.0](https://docs.cosmoskit.com/integrating-wallets/adding-new-wallets) +```bash +npm install @cosmos-kit/react @cosmos-kit/keplr @cosmos-kit/ledger chain-registry +``` + +You need to polyfill some nodejs modules in order to use keplr and ledger wallets by modifying your vite.config.js: +```bash +npm install @esbuild-plugins/node-globals-polyfill +``` + +```js +// vite.config.js +import { defineConfig } from 'vite' +import react from '@vitejs/plugin-react' +import { NodeGlobalsPolyfillPlugin } from '@esbuild-plugins/node-globals-polyfill' +export default defineConfig({ + plugins: [react()], + optimizeDeps: { + esbuildOptions: { + define: { + global: 'globalThis' + }, + plugins: [ + NodeGlobalsPolyfillPlugin({ + buffer: true + }) + ] + } + } +}) +``` + +Your components have to be wrapped into a [ChainProvider](https://docs.cosmoskit.com/chain-provider), +in order to use the `useChain('nyx')` hook. The nyx chain is provided in the 'chain-registry' NPM package by default. + ```ts import React from 'react'; -import { useChain } from '@cosmos-kit/react'; +import { ChainProvider, useChain } from '@cosmos-kit/react'; import { assets, chains } from 'chain-registry'; -import { wallets } from '@cosmos-kit/keplr'; - -export const MyComponent = () => { - const { wallet, address, connect, getOfflineSignerDirect } = - useChain('nyx'); +import { wallets as ledger } from '@cosmos-kit/ledger'; +import { wallets as keplr } from '@cosmos-kit/keplr'; +function MyComponent() { + const {wallet, address, connect, getOfflineSignerDirect } = + useChain('nyx'); React.useEffect(() => { connect(); }, []); const sign = async () => { - const doc = { ... }; + const doc = {foo: 'bar'}; return getOfflineSignerDirect().signDirect(address, doc); }; return (
- Connected to {wallet.prettyName} + Connected to {wallet?.prettyName}
- Address: {address} + { wallet &&
Address: {address}
}
+
+ ); } -``` +export default function App() { + return ( + c.chain_id === 'nyx')]} + assetLists={[assets.find((a) => a.chain_name === 'nyx')]} + wallets={[...ledger, ...keplr]} + signerOptions={{ + preferredSignType: () => 'amino', + }} + > + + + + + ) +} + +``` diff --git a/sdk/typescript/docs/pages/installation.mdx b/sdk/typescript/docs/pages/installation.mdx index 1ef32dc172..b11ddb64fd 100644 --- a/sdk/typescript/docs/pages/installation.mdx +++ b/sdk/typescript/docs/pages/installation.mdx @@ -11,7 +11,7 @@ The Typescript SDK's different modules allow developers to start building browse #### Install all -``` +```bash npm install @nymproject/contract-clients @cosmjs/cosmwasm-stargate @cosmjs/proto-signing @nymproject/sdk-full-fat @nymproject/mix-fetch-full-fat --save ``` @@ -29,7 +29,7 @@ In order to query or execute on any of the Nym smart contracts, you'll need to u First install the package and its dependencies from Cosmos Stargate: -``` +```bash npm install @nymproject/contract-clients @cosmjs/cosmwasm-stargate @cosmjs/proto-signing --save ``` @@ -45,7 +45,7 @@ In order to send or receive traffic over the mixnet, you'll need to use the [`Mi First install the package and its dependencies: -``` +```bash npm install @nymproject/sdk-full-fat --save ``` @@ -58,7 +58,7 @@ In order to fetch data through mixFetch you'll need to use the [`MixFetch packag First install the package and its dependencies: -``` +```bash npm install @nymproject/mix-fetch-full-fat --save ``` From 3cdfcfff2c56b91e713799856d2887bc91dabbcc Mon Sep 17 00:00:00 2001 From: Lorexia Date: Tue, 19 Sep 2023 15:36:43 +0200 Subject: [PATCH 033/347] Fix buttons styling --- sdk/typescript/docs/pages/styles.css | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/sdk/typescript/docs/pages/styles.css b/sdk/typescript/docs/pages/styles.css index 205f4add44..b0935331bc 100644 --- a/sdk/typescript/docs/pages/styles.css +++ b/sdk/typescript/docs/pages/styles.css @@ -74,13 +74,13 @@ div.nextra-code-block > div { /* Buttons */ .MuiButton-root { - color: var(--colorPrimary); - border-color: var(--colorPrimary); + color: var(--colorPrimary) !important; + border-color: var(--colorPrimary) !important; } .MuiButton-root:hover { - color: white; - background-color: var(--colorPrimary); + color: white !important; + background-color: var(--colorPrimary) !important; } .MuiCircularProgress-root { From f3fa86deb456926c81a3a636060170c065b66cc0 Mon Sep 17 00:00:00 2001 From: Lorexia Date: Tue, 19 Sep 2023 16:03:46 +0200 Subject: [PATCH 034/347] Fix css issues --- sdk/typescript/docs/pages/styles.css | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/sdk/typescript/docs/pages/styles.css b/sdk/typescript/docs/pages/styles.css index b0935331bc..81d8b042f7 100644 --- a/sdk/typescript/docs/pages/styles.css +++ b/sdk/typescript/docs/pages/styles.css @@ -4,12 +4,12 @@ body { } div.nextra-code-block > div { - background:var(--colorPrimary)!important; + background:var(--colorPrimary) !important; } .nextra-code-block > pre { - max-height: 350px; - scroll-y: auto; + max-height: 350px !important; + scroll-y: auto !important; } /* Code blocks*/ @@ -20,7 +20,7 @@ div.nextra-code-block > div { :is(html[class~=dark] .dark\:nx-bg-primary-300\/10) { - background-color: hsl(var(black)100% 77%/.1); + background-color: hsl(var(black)100% 77%/.1) !important; } @@ -69,7 +69,7 @@ div.nextra-code-block > div { /* Chips*/ .css-sv2u65-MuiChip-root { - background-color: var(--colorPrimary); + background-color: var(--colorPrimary) !important; } /* Buttons */ @@ -84,7 +84,7 @@ div.nextra-code-block > div { } .MuiCircularProgress-root { - color: var(--colorPrimary); + color: var(--colorPrimary) !important; } .nextra-scrollbar.nx-sticky{ From 7938c41fcf0478c4b67eb8735f3e6d8c7f40da2f Mon Sep 17 00:00:00 2001 From: Lorexia Date: Tue, 19 Sep 2023 16:12:01 +0200 Subject: [PATCH 035/347] Fix chips css --- sdk/typescript/docs/components/npm.tsx | 2 +- sdk/typescript/docs/pages/styles.css | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/sdk/typescript/docs/components/npm.tsx b/sdk/typescript/docs/components/npm.tsx index 1836e18b38..90a4a78955 100644 --- a/sdk/typescript/docs/components/npm.tsx +++ b/sdk/typescript/docs/components/npm.tsx @@ -12,6 +12,6 @@ export const NPMLink: FC<{ packageName: string; kind: 'esm' | 'cjs'; preBundled? sx={{ whiteSpace: 'nowrap', textDecoration: 'none' }} > {packageName} {' '} - {preBundled && } + {preBundled && } ); diff --git a/sdk/typescript/docs/pages/styles.css b/sdk/typescript/docs/pages/styles.css index 81d8b042f7..32c5779ca7 100644 --- a/sdk/typescript/docs/pages/styles.css +++ b/sdk/typescript/docs/pages/styles.css @@ -68,7 +68,7 @@ div.nextra-code-block > div { } /* Chips*/ -.css-sv2u65-MuiChip-root { +.chipContained{ background-color: var(--colorPrimary) !important; } From 9627fa05008e54da6f16998db8e3af814888fc14 Mon Sep 17 00:00:00 2001 From: Lorexia Date: Tue, 19 Sep 2023 17:15:10 +0200 Subject: [PATCH 036/347] Add small fixes --- sdk/typescript/docs/pages/guides/cosmos-kit.mdx | 8 ++++++++ sdk/typescript/docs/pages/guides/mix-fetch.mdx | 8 ++++++++ sdk/typescript/docs/pages/guides/mixnet.mdx | 6 ++++++ sdk/typescript/docs/pages/playground/wallet.mdx | 4 ++-- sdk/typescript/docs/pages/styles.css | 3 +++ 5 files changed, 27 insertions(+), 2 deletions(-) diff --git a/sdk/typescript/docs/pages/guides/cosmos-kit.mdx b/sdk/typescript/docs/pages/guides/cosmos-kit.mdx index 4697f384c5..cf1cfd3c59 100644 --- a/sdk/typescript/docs/pages/guides/cosmos-kit.mdx +++ b/sdk/typescript/docs/pages/guides/cosmos-kit.mdx @@ -7,6 +7,14 @@ Nym, these include: - using the [Ledger hardware wallet](https://docs.cosmoskit.com/integrating-wallets/ledger) from the browser - any wallet that supports [Wallet Connect v2.0](https://docs.cosmoskit.com/integrating-wallets/adding-new-wallets) +##### Set-up your environment +Create your directory and set-up your app environment: +```bash +npm create vite@latest +``` + +##### Installation +Install the required package: ```bash npm install @cosmos-kit/react @cosmos-kit/keplr @cosmos-kit/ledger chain-registry ``` diff --git a/sdk/typescript/docs/pages/guides/mix-fetch.mdx b/sdk/typescript/docs/pages/guides/mix-fetch.mdx index e6c9b448c0..edd527b85b 100644 --- a/sdk/typescript/docs/pages/guides/mix-fetch.mdx +++ b/sdk/typescript/docs/pages/guides/mix-fetch.mdx @@ -4,7 +4,15 @@ import { Callout } from 'nextra/components' An easy way to secure parts or all of your web app is to replace calls to [`fetch`](https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API/Using_Fetch) with `mixFetch`: +##### Set-up your environment +Create your directory and set-up your app environment: +```bash +npm create vite@latest ``` + +##### Installation +Install the required package: +```bash npm install @nymproject/mix-fetch-full-fat ``` diff --git a/sdk/typescript/docs/pages/guides/mixnet.mdx b/sdk/typescript/docs/pages/guides/mixnet.mdx index 63f95b6581..3373c0d384 100644 --- a/sdk/typescript/docs/pages/guides/mixnet.mdx +++ b/sdk/typescript/docs/pages/guides/mixnet.mdx @@ -16,6 +16,12 @@ Create your directory and set-up your app environment: npm create vite@latest ``` +##### Installation +Install the required package: +```bash +npm install @nymproject/sdk-full-fat --save +``` + ##### Imports Import the SDK's Mixnet Client as well as the payload in your app: ````js diff --git a/sdk/typescript/docs/pages/playground/wallet.mdx b/sdk/typescript/docs/pages/playground/wallet.mdx index 1e6a2b8905..68af228851 100644 --- a/sdk/typescript/docs/pages/playground/wallet.mdx +++ b/sdk/typescript/docs/pages/playground/wallet.mdx @@ -4,8 +4,8 @@ import { Wallet } from '../../components/wallet' import Box from '@mui/material/Box'; import FormattedWalletExampleCode from '../../code-examples/wallet-example-code.mdx'; -Here's a small wallet example for you to test some of the methods of our clients. -You can use the testnet address provided as recipient address, and to delegate just go to the Mixnodes list and paste in the Mix ID number of the Mixnode you'd like to delegate to. +Here's a small wallet example for you to test out! + \ No newline at end of file diff --git a/sdk/typescript/docs/pages/styles.css b/sdk/typescript/docs/pages/styles.css index 32c5779ca7..94738ed641 100644 --- a/sdk/typescript/docs/pages/styles.css +++ b/sdk/typescript/docs/pages/styles.css @@ -103,3 +103,6 @@ input:focus-visible { border-color: var(--colorPrimary) !important; } +a.MuiLink-root { + color: var(--colorPrimary) !important; +} \ No newline at end of file From 63d2ed2fecc299d1e5eb526fe065437c47e91523 Mon Sep 17 00:00:00 2001 From: Lorexia Date: Sun, 24 Sep 2023 11:07:31 +0200 Subject: [PATCH 037/347] add type annotations to examples --- .../docs/pages/guides/cosmos-kit.mdx | 2 +- .../docs/pages/guides/mix-fetch.mdx | 2 +- .../docs/pages/guides/nym-smart-contracts.mdx | 199 ++++++++---------- 3 files changed, 90 insertions(+), 113 deletions(-) diff --git a/sdk/typescript/docs/pages/guides/cosmos-kit.mdx b/sdk/typescript/docs/pages/guides/cosmos-kit.mdx index cf1cfd3c59..dbbe010422 100644 --- a/sdk/typescript/docs/pages/guides/cosmos-kit.mdx +++ b/sdk/typescript/docs/pages/guides/cosmos-kit.mdx @@ -77,6 +77,7 @@ function MyComponent() { { wallet &&
Address: {address}
} + {address && } ); @@ -98,5 +99,4 @@ export default function App() { ) } - ``` diff --git a/sdk/typescript/docs/pages/guides/mix-fetch.mdx b/sdk/typescript/docs/pages/guides/mix-fetch.mdx index edd527b85b..a3339b7b6b 100644 --- a/sdk/typescript/docs/pages/guides/mix-fetch.mdx +++ b/sdk/typescript/docs/pages/guides/mix-fetch.mdx @@ -27,7 +27,7 @@ import { mixFetch } from '@nymproject/mix-fetch-full-fat'; import React from 'react'; export function HttpGET() { - const [html, setHtml] = React.useState('') + const [html, setHtml] = React.useState('') async function get () { const response = await mixFetch('https://nymtech.net') const text = await response.text() diff --git a/sdk/typescript/docs/pages/guides/nym-smart-contracts.mdx b/sdk/typescript/docs/pages/guides/nym-smart-contracts.mdx index d31b017ff4..de851e7a78 100644 --- a/sdk/typescript/docs/pages/guides/nym-smart-contracts.mdx +++ b/sdk/typescript/docs/pages/guides/nym-smart-contracts.mdx @@ -44,53 +44,50 @@ import { SigningCosmWasmClient } from "@cosmjs/cosmwasm-stargate"; ##### Example: using the Mixnet smart contract client to query In this example, we will use the `MixnetQueryClient`from the `Contract Clients` to simply query the contract and return a list of Mixnodes. -```js +```ts import "./App.css"; import { contracts } from "@nymproject/contract-clients"; import { SigningCosmWasmClient } from "@cosmjs/cosmwasm-stargate"; import { useEffect, useState } from "react"; +import { MixnodeDetails } from '@nymproject/types'; export default function Mixnodes() { - const [mixnodes, setMixnodes] = useState(null); + const [mixnodes, setMixnodes] = useState([]); async function fetchMixnodes(){ // Set-up the CosmWasm Client const cosmWasmClient = await SigningCosmWasmClient.connect("wss://rpc.nymtech.net:443"); - const client = new contracts.Mixnet.MixnetQueryClient( cosmWasmClient, "n17srjznxl9dvzdkpwpw24gg668wc73val88a6m5ajg6ankwvz9wtst0cznr" // the contract address (which is different on mainnet, QA, etc) ); - console.log("client:", client) const result = await client.getMixNodesDetailed({}); - console.log(result) setMixnodes(result.nodes) - } useEffect(() => { fetchMixnodes(); }, []) - return( - <> -
- - {mixnodes?.map((value, index) => { - return( - - - - ) - }) - } - -
{value?.bond_information?.mix_node?.identity_key}
- - ) - } - ``` + return( + <> + + + {mixnodes?.map((value, index) => { + return( + + + + ) + }) + } + +
{value?.bond_information?.mix_node?.identity_key}
+ + ) +} +``` @@ -120,66 +117,63 @@ export const mySettings = { export const settings = mySettings; ``` - -```js - +```ts import "./App.css"; import { contracts } from "@nymproject/contract-clients"; import { SigningCosmWasmClient } from "@cosmjs/cosmwasm-stargate"; import { DirectSecp256k1HdWallet } from "@cosmjs/proto-signing"; import { GasPrice } from "@cosmjs/stargate"; -import { settings } from "./settings.ts"; +import { MixnetClient } from '@nymproject/types'; + const mainnetSettings = { + url: "wss://rpc.nymtech.net:443", + mixnetContractAddress: 'n17srjznxl9dvzdkpwpw24gg668wc73val88a6m5ajg6ankwvz9wtst0cznr', + mnemonic: 'charge solid adjust talk rose there because bridge screen next swear rose uphold hammer grant agree slam damp lazy position coconut cabbage endless welcome', + address: 'n1c7y676pe3av76r5usala759xgj0yplmvngu8u8' +}; + + const qaSettings = { + url: "wss://sandbox-validator1.nymtech.net/", + mixnetContractAddress: 'n1xr3rq8yvd7qplsw5yx90ftsr2zdhg4e9z60h5duusgxpv72hud3sjkxkav', + mnemonic: 'summer under connect sadness unveil region charge feed tank grant drift mass side ramp winter fit verb rare huge high garment moment achieve since', + address: 'n13uryxldwdllpakevsmt6n0uyfn3kgr2wvj5dnf' +}; + + const settings = qaSettings; export default function Exec() { - let signer = null; - let address = null; - let signerMixnetClient = null; - let cosmWasmSigningClient = null; - let mixId = null; - let amountToDelegate = null; - let balance = null; - let nodeAddress = null; - let amountToSend = null; - let delegations = null; + let signer: DirectSecp256k1HdWallet; + let signerMixnetClient: MixnetClient; + let cosmWasmSigningClient: SigningCosmWasmClient; + let mixId: number; + let amountToDelegate: string; + let nodeAddress: string; + let amountToSend: string; + let delegations: any; async function ExecuteOnNyx() { - // Signer - try { - // Generate a signer from a mnemonic - signer = await DirectSecp256k1HdWallet.fromMnemonic(settings.mnemonic, { - prefix: "n", - }); - const accounts = await signer.getAccounts(); - address = accounts[0].address; - } catch (error) { - console.error("Problem getting the signer: ", error); - } - - try { - const cosmWasmClient = await SigningCosmWasmClient.connectWithSigner( - settings.url, - signer, - { - gasPrice: GasPrice.fromString("0.025unym"), - } - ); - cosmWasmSigningClient = cosmWasmClient; - try { - balance = await cosmWasmSigningClient?.getBalance(address, "unym"); - console.log("balance", balance); - } catch (error) { - console.error("problem geting the balance: ", error); + // cosmos client + signer = await DirectSecp256k1HdWallet.fromMnemonic(settings.mnemonic, { + prefix: "n", + }); + const cosmWasmClient = await SigningCosmWasmClient.connectWithSigner( + settings.url, + signer, + { + gasPrice: GasPrice.fromString("0.025unym"), } + ); + // save globally + cosmWasmSigningClient = cosmWasmClient; + + // nym client + const mixnetClient = new contracts.Mixnet.MixnetClient( + cosmWasmSigningClient, + settings.address, // sender (that account of the signer) + settings.mixnetContractAddress // contract address (different on mainnet, QA, etc) + ); + // save globally + signerMixnetClient = mixnetClient; - const mixnetClient = new contracts.Mixnet.MixnetClient( - cosmWasmSigningClient, - settings.address, // sender (that account of the signer) - settings.mixnetContractAddress // contract address (different on mainnet, QA, etc) - ); - signerMixnetClient = mixnetClient; - } catch (error) { - console.error("Problem getting the cosmWasmSigningClient: ", error); - } } // Get delegations @@ -198,53 +192,36 @@ export default function Exec() { if (!signerMixnetClient) { return; } - try { - const res = await signerMixnetClient.delegateToMixnode( - { mixId }, - "auto", - undefined, - [{ amount: `${amountToDelegate}`, denom: "unym" }] - ); - console.log("delegations: ", res); - } catch (error) { - console.error(error); - } + const res = await signerMixnetClient.delegateToMixnode( + { mixId }, + "auto", + undefined, + [{ amount: `${amountToDelegate}`, denom: "unym" }] + ); + console.log(res); }; // Undelegate all const doUndelegateAll = async () => { - if (!signerMixnetClient) { - return; - } - console.log("delegations", delegations); - try { - for (const delegation of delegations.delegations) { - await signerMixnetClient.undelegateFromMixnode( - { mixId: delegation.mix_id }, - "auto" - ); - } - } catch (error) { - console.error(error); + for (const delegation of delegations.delegations) { + await signerMixnetClient.undelegateFromMixnode( + { mixId: delegation.mix_id }, + "auto" + ); } }; // Sending tokens const doSendTokens = async () => { const memo = "test sending tokens"; - - try { - const res = await cosmWasmSigningClient.sendTokens( - settings.address, - nodeAddress, - [{ amount: amountToSend, denom: "unym" }], - "auto", - memo - ); - console.log("res", res); - } catch (error) { - console.error(error); - } + const res = await cosmWasmSigningClient.sendTokens( + settings.address, + nodeAddress, + [{ amount: amountToSend, denom: "unym" }], + "auto", + memo + ); + console.log(res); }; ExecuteOnNyx(); @@ -274,7 +251,7 @@ export default function Exec() { (mixId = e.target.value)} + onChange={(e) => (mixId = +e.target.value)} /> Date: Sat, 30 Sep 2023 22:42:41 +0200 Subject: [PATCH 038/347] update query and execute examples --- sdk/typescript/docs/components/traffic.tsx | 3 +- sdk/typescript/docs/pages/guides/mixnet.mdx | 13 +++- .../docs/pages/guides/nym-smart-contracts.mdx | 70 +++++++++++-------- 3 files changed, 52 insertions(+), 34 deletions(-) diff --git a/sdk/typescript/docs/components/traffic.tsx b/sdk/typescript/docs/components/traffic.tsx index e6ff0cd605..9e3b3e01e7 100644 --- a/sdk/typescript/docs/components/traffic.tsx +++ b/sdk/typescript/docs/components/traffic.tsx @@ -50,7 +50,8 @@ export const Traffic = () => { await nym?.client.stop(); }; - const send = () => nym.client.send({ payload, recipient }); + const send = () => + payload && recipient && nym?.client.send({ payload, recipient }); useEffect(() => { init(); diff --git a/sdk/typescript/docs/pages/guides/mixnet.mdx b/sdk/typescript/docs/pages/guides/mixnet.mdx index 3373c0d384..a3aecea890 100644 --- a/sdk/typescript/docs/pages/guides/mixnet.mdx +++ b/sdk/typescript/docs/pages/guides/mixnet.mdx @@ -11,15 +11,23 @@ Replying can be done in two ways: - use a SURB (single use reply block) that allows the recipient to reply to the sender without compromising the identity of either party ##### Set-up your environment + Create your directory and set-up your app environment: ```bash npm create vite@latest ``` +Select `React` and later `Typescript` as you go to your environment set-up if you want your app to work off the bat following this tutorial. +Then, +```bash +cd +npm i +npm run dev +``` ##### Installation Install the required package: ```bash -npm install @nymproject/sdk-full-fat --save +npm install @nymproject/sdk-full-fat ``` ##### Imports @@ -79,7 +87,8 @@ export default function Traffic() { }); }; - const send = () => nym.client.send({ payload, recipient }); + const send = () => + payload && recipient && nym?.client.send({ payload, recipient }); useEffect(() => { init(); diff --git a/sdk/typescript/docs/pages/guides/nym-smart-contracts.mdx b/sdk/typescript/docs/pages/guides/nym-smart-contracts.mdx index de851e7a78..56002ddfde 100644 --- a/sdk/typescript/docs/pages/guides/nym-smart-contracts.mdx +++ b/sdk/typescript/docs/pages/guides/nym-smart-contracts.mdx @@ -19,21 +19,34 @@ Lists of the diffent available clients and methods from the `Contract Clients` c Depending on your app or project's architecture, this could be any of the ESM or CJS versions of the `Contract Clients`. - + + This and the following examples will use the ESbuild bundler as they should work off the bat without any polyfill need. + If you'd like to use another one, we will document different bundlers in the [bundling](https://sdk.nymtech.net/bundling) page. + ##### Set-up your environment Create your directory and set-up your app environment: ```bash npm create vite@latest ``` +Select `React` and later `Typescript` as you go to your environment set-up if you want your app to work off the bat following this tutorial. +Then, +```bash +cd +npm i +npm run dev +``` ##### Installation -Install the package and its dependencies from Cosmos Stargate: +Install the packages and their dependencies if you don't already have them: ```bash -npm install @nymproject/contract-clients @cosmjs/cosmwasm-stargate @cosmjs/proto-signing --save +npm install @nymproject/contract-clients @cosmjs/cosmwasm-stargate ``` + ## Query clients +In the `src` folder, open the `App.tsx` file and delete all the code. + ##### Imports Import the contracts' client in your app: ````js @@ -49,11 +62,10 @@ import "./App.css"; import { contracts } from "@nymproject/contract-clients"; import { SigningCosmWasmClient } from "@cosmjs/cosmwasm-stargate"; import { useEffect, useState } from "react"; -import { MixnodeDetails } from '@nymproject/types'; export default function Mixnodes() { - const [mixnodes, setMixnodes] = useState([]); + const [mixnodes, setMixnodes] = useState([]); async function fetchMixnodes(){ // Set-up the CosmWasm Client @@ -89,10 +101,21 @@ export default function Mixnodes() { } ``` +By pasting the above code in the `App.tsx` file and `npm run dev` your app from the terminal, you should see an unstyled printed list of Nym mixnodes! + + ## Execute clients +##### Installation +Install the packages and their dependencies if you don't already have them: + +```bash +npm install @nymproject/contract-clients @cosmjs/cosmwasm-stargate @cosmjs/proto-signing +``` + + ##### Imports Import the contracts' execute clients in your app: ````js @@ -104,7 +127,7 @@ import { DirectSecp256k1HdWallet } from "@cosmjs/proto-signing"; ##### Example: using the Mixnet smart contract client to execute methods In this example, we will use the `MixnetClient`and the `signer` from the [`Contract Clients`](https://www.npmjs.com/package/@nymproject/contract-clients) to execute methods. -Note that for the `settings.ts` file, we have used the following structure: +Note that you will need to create a `settings.ts` file (here created in the same directory), using the following structure: ```json export const mySettings = { @@ -123,23 +146,8 @@ import { contracts } from "@nymproject/contract-clients"; import { SigningCosmWasmClient } from "@cosmjs/cosmwasm-stargate"; import { DirectSecp256k1HdWallet } from "@cosmjs/proto-signing"; import { GasPrice } from "@cosmjs/stargate"; +import { settings } from "./settings"; -import { MixnetClient } from '@nymproject/types'; - const mainnetSettings = { - url: "wss://rpc.nymtech.net:443", - mixnetContractAddress: 'n17srjznxl9dvzdkpwpw24gg668wc73val88a6m5ajg6ankwvz9wtst0cznr', - mnemonic: 'charge solid adjust talk rose there because bridge screen next swear rose uphold hammer grant agree slam damp lazy position coconut cabbage endless welcome', - address: 'n1c7y676pe3av76r5usala759xgj0yplmvngu8u8' -}; - - const qaSettings = { - url: "wss://sandbox-validator1.nymtech.net/", - mixnetContractAddress: 'n1xr3rq8yvd7qplsw5yx90ftsr2zdhg4e9z60h5duusgxpv72hud3sjkxkav', - mnemonic: 'summer under connect sadness unveil region charge feed tank grant drift mass side ramp winter fit verb rare huge high garment moment achieve since', - address: 'n13uryxldwdllpakevsmt6n0uyfn3kgr2wvj5dnf' -}; - - const settings = qaSettings; export default function Exec() { let signer: DirectSecp256k1HdWallet; let signerMixnetClient: MixnetClient; @@ -149,7 +157,7 @@ export default function Exec() { let nodeAddress: string; let amountToSend: string; let delegations: any; - + async function ExecuteOnNyx() { // cosmos client signer = await DirectSecp256k1HdWallet.fromMnemonic(settings.mnemonic, { @@ -164,7 +172,7 @@ export default function Exec() { ); // save globally cosmWasmSigningClient = cosmWasmClient; - + // nym client const mixnetClient = new contracts.Mixnet.MixnetClient( cosmWasmSigningClient, @@ -173,9 +181,9 @@ export default function Exec() { ); // save globally signerMixnetClient = mixnetClient; - + } - + // Get delegations const getDelegations = async () => { if (!signerMixnetClient) { @@ -186,7 +194,7 @@ export default function Exec() { }); delegations = delegationsObject; }; - + // Make delegation const doDelegation = async () => { if (!signerMixnetClient) { @@ -200,7 +208,7 @@ export default function Exec() { ); console.log(res); }; - + // Undelegate all const doUndelegateAll = async () => { for (const delegation of delegations.delegations) { @@ -210,7 +218,7 @@ export default function Exec() { ); } }; - + // Sending tokens const doSendTokens = async () => { const memo = "test sending tokens"; @@ -223,10 +231,10 @@ export default function Exec() { ); console.log(res); }; - + ExecuteOnNyx(); setTimeout(() => getDelegations(), 1000); - + return (

Exec

From d569bf6b09e1900488d85bc7c7d2be833db25a3f Mon Sep 17 00:00:00 2001 From: Lorexia Date: Sat, 30 Sep 2023 22:52:41 +0200 Subject: [PATCH 039/347] update mixnet example --- sdk/typescript/docs/pages/guides/mixnet.mdx | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/sdk/typescript/docs/pages/guides/mixnet.mdx b/sdk/typescript/docs/pages/guides/mixnet.mdx index a3aecea890..41a877589a 100644 --- a/sdk/typescript/docs/pages/guides/mixnet.mdx +++ b/sdk/typescript/docs/pages/guides/mixnet.mdx @@ -31,7 +31,9 @@ npm install @nymproject/sdk-full-fat ``` ##### Imports -Import the SDK's Mixnet Client as well as the payload in your app: +In the `src` folder, open the `App.tsx` file and delete all the code. + +Import the SDK's Mixnet Client in your app: ````js import { createNymMixnetClient, NymMixnetClient, Payload } from "@nymproject/sdk-full-fat"; ```` From 502acd5b204834324c5b48de5eeefc9ceb4ed484 Mon Sep 17 00:00:00 2001 From: Lorexia Date: Sat, 30 Sep 2023 23:28:58 +0200 Subject: [PATCH 040/347] update mixfetch example --- .../docs/pages/guides/mix-fetch.mdx | 171 +++++++++++------- sdk/typescript/docs/pages/guides/mixnet.mdx | 3 + 2 files changed, 111 insertions(+), 63 deletions(-) diff --git a/sdk/typescript/docs/pages/guides/mix-fetch.mdx b/sdk/typescript/docs/pages/guides/mix-fetch.mdx index a3339b7b6b..c514c3a6f6 100644 --- a/sdk/typescript/docs/pages/guides/mix-fetch.mdx +++ b/sdk/typescript/docs/pages/guides/mix-fetch.mdx @@ -4,70 +4,7 @@ import { Callout } from 'nextra/components' An easy way to secure parts or all of your web app is to replace calls to [`fetch`](https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API/Using_Fetch) with `mixFetch`: -##### Set-up your environment -Create your directory and set-up your app environment: -```bash -npm create vite@latest -``` - -##### Installation -Install the required package: -```bash -npm install @nymproject/mix-fetch-full-fat -``` - Mixfetch works the same as vanilla `fetch` as it's a proxied wrapper around the original function: - - - Again, for this example, we will be using the `full-fat` version of the ESM SDK. - - -```ts -import { mixFetch } from '@nymproject/mix-fetch-full-fat'; -import React from 'react'; - -export function HttpGET() { - const [html, setHtml] = React.useState('') - async function get () { - const response = await mixFetch('https://nymtech.net') - const text = await response.text() - console.log('response was', text) - setHtml(html) - } - - return ( - <> - - - ) -} - -export function HttpPOST() { - async function post () { - const apiResponse = await mixFetch('https://api.example.com', { - method: 'POST', - body: JSON.stringify({ foo: 'bar' }), - headers: { [`Content-Type`]: 'application/json', Authorization: `Bearer ${import.meta.env.VITE_AUTH_TOKEN}` } - }) - console.log(apiResponse) - } - return ( - <> - - - ) -} - -export default function App() { - return ( - <> - - - - ) -} -``` - Sounds great, are there any catches? Well, there are a few (for now): 1. Currently, the operators of Network Requesters that make the final request at the egress part of the Nym Mixnet to @@ -117,3 +54,111 @@ const mixFetchOptions: SetupMixFetchOps = { extra, // manually set the gateway details for WSS so certificates will work for hostname }; ``` + +##### Set-up your environment + +Create your directory and set-up your app environment: +```bash +npm create vite@latest +``` +Select `React` and later `Typescript` as you go to your environment set-up if you want your app to work off the bat following this tutorial. +Then, +```bash +cd +npm i +npm run dev +``` + +##### Installation +Install the required package: +```bash +npm install @nymproject/mix-fetch-full-fat +``` + +##### Imports +In the `src` folder, open the `App.tsx` file and delete all the code. + +Import the client in your app: +````js +import { mixFetch } from "@nymproject/mix-fetch-full-fat"; +```` + + +##### Example: using the `mixFetch` client: + + + Again, for this example, we will be using the `full-fat` version of the ESM SDK. + + +```ts +import { mixFetch, SetupMixFetchOps } from '@nymproject/mix-fetch-full-fat'; +import React from 'react'; + +const extra = { + hiddenGateways: [ + { + owner: 'n1kymvkx6vsq7pvn6hfurkpg06h3j4gxj4em7tlg', + host: 'gateway1.nymtech.net', + explicitIp: '213.219.38.119', + identityKey: 'E3mvZTHQCdBvhfr178Swx9g4QG3kkRUun7YnToLMcMbM', + sphinxKey: 'CYcrjoJ8GT7Dp54zViUyyRUfegeRCyPifWQZHRgMZrfX', + }, + ], +}; + +const mixFetchOptions: SetupMixFetchOps = { + preferredGateway: 'E3mvZTHQCdBvhfr178Swx9g4QG3kkRUun7YnToLMcMbM', // with WSS + preferredNetworkRequester: + 'GiRjFWrMxt58pEMuusm4yT3RxoMD1MMPrR9M2N4VWRJP.3CNZBPq4vg7v7qozjGjdPMXcvDmkbWPCgbGCjQVw9n6Z@2xU4CBE6QiiYt6EyBXSALwxkNvM7gqJfjHXaMkjiFmYW', + mixFetchOverride: { + requestTimeoutMs: 60_000, + }, + forceTls: true, // force WSS + extra +}; + + +export function HttpGET() { + const [html, setHtml] = React.useState('') + async function get () { + const response = await mixFetch('https://nymtech.net', { mode: 'unsafe-ignore-cors' }, mixFetchOptions) + const text = await response.text() + console.log('response was', text) + setHtml(html) + } + + return ( + <> + + + ) +} + +export function HttpPOST() { + async function post () { + const apiResponse = await mixFetch('https://api.example.com', { + method: 'POST', + mode: 'unsafe-ignore-cors', + body: JSON.stringify({ foo: 'bar' }), + headers: { [`Content-Type`]: 'application/json', Authorization: `Bearer ${process.env.AUTH_TOKEN}` } + }, mixFetchOptions) + console.log(apiResponse) + } + return ( + <> + + + ) +} + +export default function App() { + return ( + <> + + + + ) +} + +``` + diff --git a/sdk/typescript/docs/pages/guides/mixnet.mdx b/sdk/typescript/docs/pages/guides/mixnet.mdx index 41a877589a..c8fba3dc97 100644 --- a/sdk/typescript/docs/pages/guides/mixnet.mdx +++ b/sdk/typescript/docs/pages/guides/mixnet.mdx @@ -39,6 +39,7 @@ import { createNymMixnetClient, NymMixnetClient, Payload } from "@nymproject/sdk ```` ##### Example: using the SDK's Mixnet Client to send and receive messages over the Nym Mixnet +By pasting the below code example, you should be able to send and receive messages through the mixnet through an unstyled mixnet app template! For this example, we will be using the `full-fat` version of the ESM SDK. If you'd like to use the unbundled ESM one, make sure your [bundler configuration](../../bundling) copies the WebAssembly (WASM) and web worker files to the output bundle. @@ -125,3 +126,5 @@ export default function Traffic() { ); }; ``` + + From 4753766d16839f4c62ba373e8aaa9baabcbd9c75 Mon Sep 17 00:00:00 2001 From: Lorexia Date: Sun, 1 Oct 2023 16:18:09 +0200 Subject: [PATCH 041/347] update query, execute, mixnet examples --- sdk/typescript/docs/pages/guides/mixnet.mdx | 19 ++++++++++++++++--- .../docs/pages/guides/nym-smart-contracts.mdx | 6 +++--- 2 files changed, 19 insertions(+), 6 deletions(-) diff --git a/sdk/typescript/docs/pages/guides/mixnet.mdx b/sdk/typescript/docs/pages/guides/mixnet.mdx index c8fba3dc97..7edecbfc08 100644 --- a/sdk/typescript/docs/pages/guides/mixnet.mdx +++ b/sdk/typescript/docs/pages/guides/mixnet.mdx @@ -55,7 +55,7 @@ import { const nymApiUrl = "https://validator.nymtech.net/api"; -export default function Traffic() { +export function MixnetClient() { const [nym, setNym] = useState(); const [selfAddress, setSelfAddress] = useState(); const [recipient, setRecipient] = useState(); @@ -90,11 +90,16 @@ export default function Traffic() { }); }; - const send = () => - payload && recipient && nym?.client.send({ payload, recipient }); + const send = () => { + if (!nym || !payload || !recipient) return + nym.client.send({ payload, recipient }); + } useEffect(() => { init(); + return () => { + nym?.client.stop(); + } }, []); if (!nym) return
waiting for the mixnet client...
; @@ -125,6 +130,14 @@ export default function Traffic() {
); }; + +export default function App () { + return ( + <> + + + ) +} ``` diff --git a/sdk/typescript/docs/pages/guides/nym-smart-contracts.mdx b/sdk/typescript/docs/pages/guides/nym-smart-contracts.mdx index 56002ddfde..fee5123987 100644 --- a/sdk/typescript/docs/pages/guides/nym-smart-contracts.mdx +++ b/sdk/typescript/docs/pages/guides/nym-smart-contracts.mdx @@ -86,7 +86,7 @@ export default function Mixnodes() { <> - {mixnodes?.map((value, index) => { + {mixnodes?.map((value: any, index: number) => { return( @@ -147,10 +147,10 @@ import { SigningCosmWasmClient } from "@cosmjs/cosmwasm-stargate"; import { DirectSecp256k1HdWallet } from "@cosmjs/proto-signing"; import { GasPrice } from "@cosmjs/stargate"; import { settings } from "./settings"; - + export default function Exec() { let signer: DirectSecp256k1HdWallet; - let signerMixnetClient: MixnetClient; + let signerMixnetClient: any; let cosmWasmSigningClient: SigningCosmWasmClient; let mixId: number; let amountToDelegate: string; From 98898054c3d2b858327425bd0145bdc267da1332 Mon Sep 17 00:00:00 2001 From: Lorexia Date: Sun, 1 Oct 2023 17:00:06 +0200 Subject: [PATCH 042/347] update mixfetch, cosmoskit examples --- .../docs/pages/guides/cosmos-kit.mdx | 49 ++++++++++++++++--- .../docs/pages/guides/mix-fetch.mdx | 6 +-- 2 files changed, 45 insertions(+), 10 deletions(-) diff --git a/sdk/typescript/docs/pages/guides/cosmos-kit.mdx b/sdk/typescript/docs/pages/guides/cosmos-kit.mdx index dbbe010422..a90a3e8182 100644 --- a/sdk/typescript/docs/pages/guides/cosmos-kit.mdx +++ b/sdk/typescript/docs/pages/guides/cosmos-kit.mdx @@ -55,8 +55,32 @@ import { ChainProvider, useChain } from '@cosmos-kit/react'; import { assets, chains } from 'chain-registry'; import { wallets as ledger } from '@cosmos-kit/ledger'; import { wallets as keplr } from '@cosmos-kit/keplr'; +import { AminoMsg, makeSignDoc } from '@cosmjs/amino'; +import { MsgSend } from 'cosmjs-types/cosmos/bank/v1beta1/tx'; + +export const getDoc = (address: string) => { + const chainId = 'nyx'; + const msg: AminoMsg = { + type: '/cosmos.bank.v1beta1.MsgSend', + value: MsgSend.fromPartial({ + fromAddress: address, + toAddress: 'n1nn8tghp94n8utsgyg3kfttlxm0exgjrsqkuwu9', + amount: [{ amount: '1000', denom: 'unym' }], + }), + }; + const fee = { + amount: [{ amount: '2000', denom: 'ucosm' }], + gas: '180000', // 180k + }; + const memo = 'Use your power wisely'; + const accountNumber = 15; + const sequence = 16; + const doc = makeSignDoc([msg], fee, chainId, memo, accountNumber, sequence); + return doc +}; + function MyComponent() { - const {wallet, address, connect, getOfflineSignerDirect } = + const {wallet, address, connect, getOfflineSignerAmino } = useChain('nyx'); React.useEffect(() => { @@ -64,8 +88,9 @@ function MyComponent() { }, []); const sign = async () => { - const doc = {foo: 'bar'}; - return getOfflineSignerDirect().signDirect(address, doc); + if (!address) return + const doc = getDoc(address); + return getOfflineSignerAmino().signAmino(address, doc); }; return ( @@ -77,17 +102,28 @@ function MyComponent() { { wallet &&
Address: {address}
} - {address && } ); } export default function App() { + const assetsFixedUp = React.useMemo(() => { + const nyx = assets.find((a) => a.chain_name === 'nyx'); + if (nyx) { + const nyxCoin = nyx.assets.find((a) => a.name === 'nyx'); + if (nyxCoin) { + nyxCoin.coingecko_id = 'nyx'; + } + nyx.assets = nyx.assets.reverse(); + } + return assets; + }, [assets]); + return ( c.chain_id === 'nyx')]} - assetLists={[assets.find((a) => a.chain_name === 'nyx')]} + chains={[chains.find((c) => c.chain_id === 'nyx')!]} + assetLists={assetsFixedUp} wallets={[...ledger, ...keplr]} signerOptions={{ preferredSignType: () => 'amino', @@ -99,4 +135,5 @@ export default function App() { ) } + ``` diff --git a/sdk/typescript/docs/pages/guides/mix-fetch.mdx b/sdk/typescript/docs/pages/guides/mix-fetch.mdx index c514c3a6f6..3bfec67f34 100644 --- a/sdk/typescript/docs/pages/guides/mix-fetch.mdx +++ b/sdk/typescript/docs/pages/guides/mix-fetch.mdx @@ -136,11 +136,10 @@ export function HttpGET() { export function HttpPOST() { async function post () { - const apiResponse = await mixFetch('https://api.example.com', { + const apiResponse = await mixFetch('https://postman-echo.com/post', { method: 'POST', - mode: 'unsafe-ignore-cors', body: JSON.stringify({ foo: 'bar' }), - headers: { [`Content-Type`]: 'application/json', Authorization: `Bearer ${process.env.AUTH_TOKEN}` } + headers: { 'Content-Type': 'application/json' } }, mixFetchOptions) console.log(apiResponse) } @@ -159,6 +158,5 @@ export default function App() { ) } - ``` From 587f500a0ccfd79773d5caa04c24c7e13f68fb53 Mon Sep 17 00:00:00 2001 From: Lorexia Date: Sun, 1 Oct 2023 17:19:58 +0200 Subject: [PATCH 043/347] add polyfills details to bundling page --- sdk/typescript/docs/pages/bundling.mdx | 79 +++++++++++++++++++ .../docs/pages/guides/nym-smart-contracts.mdx | 4 +- 2 files changed, 81 insertions(+), 2 deletions(-) diff --git a/sdk/typescript/docs/pages/bundling.mdx b/sdk/typescript/docs/pages/bundling.mdx index 7d69a1d9df..b7f3f2fa44 100644 --- a/sdk/typescript/docs/pages/bundling.mdx +++ b/sdk/typescript/docs/pages/bundling.mdx @@ -53,3 +53,82 @@ If you are using a `*-full-fat` package, or if you inline WASM or web workers, y You'll have to experiment with either adjusting the CSP or use another variant that is unbundled. +## Webpack > 5 ESM + +You´ll need the following rule in your `webpack.config.js` above version 5: +```json +{ + test: /\.(m?js)$/, + resolve: { + fullySpecified: false + } +} +``` + +### Nextjs + +NextJS doesn´t allow you access to the webpack config without ejecting, which you override as follows: + +```bash +npx create-react-app nymapp --template typescript +cd nymapp +``` + +#### Install contract-clients dependencies + +```bash +npm install @nymproject/contract-clients @cosmjs/cosmwasm-stargate @cosmjs/proto-signing --save +``` + +#### polyfilling + +Copy the following to your terminal and run: + +```bash +npm install react-app-rewired +npm install --save-dev crypto-browserify stream-browserify assert stream-http https-browserify os-browserify url buffer process +cat < config-overrides.js +const webpack = require('webpack'); +const path = require('path') + +module.exports = function override(config) { + const fallback = config.resolve.fallback || {}; + Object.assign(fallback, { + "crypto": require.resolve("crypto-browserify"), + "stream": require.resolve("stream-browserify"), + "assert": require.resolve("assert"), + "http": require.resolve("stream-http"), + "https": require.resolve("https-browserify"), + "os": require.resolve("os-browserify"), + "url": require.resolve("url") + }) + config.resolve.fallback = fallback; + config.plugins = (config.plugins || []).concat([ + new webpack.ProvidePlugin({ + process: 'process/browser', + Buffer: ['buffer', 'Buffer'] + }) + ]) + config.module.rules = (config.module.rules || []).concat([ + { + test: /\.(m?js)$/, + resolve: { + fullySpecified: false + } + } + ]) + return config; +} +EOF +``` + +#### Edit the `package.json` file as follows: + +```json + "scripts": { + "start": "react-app-rewired start", + "build": "react-app-rewired build", + "test": "react-app-rewired test", + "eject": "react-scripts eject" + }, +``` \ No newline at end of file diff --git a/sdk/typescript/docs/pages/guides/nym-smart-contracts.mdx b/sdk/typescript/docs/pages/guides/nym-smart-contracts.mdx index fee5123987..152711a98f 100644 --- a/sdk/typescript/docs/pages/guides/nym-smart-contracts.mdx +++ b/sdk/typescript/docs/pages/guides/nym-smart-contracts.mdx @@ -20,8 +20,8 @@ Lists of the diffent available clients and methods from the `Contract Clients` c Depending on your app or project's architecture, this could be any of the ESM or CJS versions of the `Contract Clients`. - This and the following examples will use the ESbuild bundler as they should work off the bat without any polyfill need. - If you'd like to use another one, we will document different bundlers in the [bundling](https://sdk.nymtech.net/bundling) page. + This and the following examples will use the ESbuild bundler. + If you'd like to use another one, we will document different bundlers and polyfills in the [bundling](https://sdk.nymtech.net/bundling) page. ##### Set-up your environment From 4aa7d08e656fad8e1e54de64884ff831a2165feb Mon Sep 17 00:00:00 2001 From: Lorexia Date: Mon, 2 Oct 2023 16:30:16 +0200 Subject: [PATCH 044/347] push last updates --- sdk/typescript/docs/pages/bundling.mdx | 2 +- sdk/typescript/docs/pages/guides/cosmos-kit.mdx | 8 ++++++++ sdk/typescript/docs/pages/guides/mix-fetch.mdx | 2 +- sdk/typescript/docs/pages/guides/mixnet.mdx | 2 +- .../docs/pages/guides/nym-smart-contracts.mdx | 2 +- sdk/typescript/docs/pages/index.mdx | 11 +++++------ 6 files changed, 17 insertions(+), 10 deletions(-) diff --git a/sdk/typescript/docs/pages/bundling.mdx b/sdk/typescript/docs/pages/bundling.mdx index b7f3f2fa44..026fefc81f 100644 --- a/sdk/typescript/docs/pages/bundling.mdx +++ b/sdk/typescript/docs/pages/bundling.mdx @@ -77,7 +77,7 @@ cd nymapp #### Install contract-clients dependencies ```bash -npm install @nymproject/contract-clients @cosmjs/cosmwasm-stargate @cosmjs/proto-signing --save +npm install @nymproject/contract-clients @cosmjs/cosmwasm-stargate @cosmjs/proto-signing ``` #### polyfilling diff --git a/sdk/typescript/docs/pages/guides/cosmos-kit.mdx b/sdk/typescript/docs/pages/guides/cosmos-kit.mdx index a90a3e8182..2d197f71d7 100644 --- a/sdk/typescript/docs/pages/guides/cosmos-kit.mdx +++ b/sdk/typescript/docs/pages/guides/cosmos-kit.mdx @@ -8,10 +8,18 @@ Nym, these include: - any wallet that supports [Wallet Connect v2.0](https://docs.cosmoskit.com/integrating-wallets/adding-new-wallets) ##### Set-up your environment + Create your directory and set-up your app environment: ```bash npm create vite@latest ``` +Select `React` and later `Typescript` as you go to your environment set-up if you want your app to work off the bat following this tutorial. +Then, +```bash +cd < YOUR_APP > +npm i +npm run dev +``` ##### Installation Install the required package: diff --git a/sdk/typescript/docs/pages/guides/mix-fetch.mdx b/sdk/typescript/docs/pages/guides/mix-fetch.mdx index 3bfec67f34..62826d2b75 100644 --- a/sdk/typescript/docs/pages/guides/mix-fetch.mdx +++ b/sdk/typescript/docs/pages/guides/mix-fetch.mdx @@ -64,7 +64,7 @@ npm create vite@latest Select `React` and later `Typescript` as you go to your environment set-up if you want your app to work off the bat following this tutorial. Then, ```bash -cd +cd < YOUR_APP > npm i npm run dev ``` diff --git a/sdk/typescript/docs/pages/guides/mixnet.mdx b/sdk/typescript/docs/pages/guides/mixnet.mdx index 7edecbfc08..290f55b0f6 100644 --- a/sdk/typescript/docs/pages/guides/mixnet.mdx +++ b/sdk/typescript/docs/pages/guides/mixnet.mdx @@ -19,7 +19,7 @@ npm create vite@latest Select `React` and later `Typescript` as you go to your environment set-up if you want your app to work off the bat following this tutorial. Then, ```bash -cd +cd < YOUR_APP > npm i npm run dev ``` diff --git a/sdk/typescript/docs/pages/guides/nym-smart-contracts.mdx b/sdk/typescript/docs/pages/guides/nym-smart-contracts.mdx index 152711a98f..305bee00ea 100644 --- a/sdk/typescript/docs/pages/guides/nym-smart-contracts.mdx +++ b/sdk/typescript/docs/pages/guides/nym-smart-contracts.mdx @@ -32,7 +32,7 @@ npm create vite@latest Select `React` and later `Typescript` as you go to your environment set-up if you want your app to work off the bat following this tutorial. Then, ```bash -cd +cd < YOUR_APP > npm i npm run dev ``` diff --git a/sdk/typescript/docs/pages/index.mdx b/sdk/typescript/docs/pages/index.mdx index 1b14188e7c..a6126152f7 100644 --- a/sdk/typescript/docs/pages/index.mdx +++ b/sdk/typescript/docs/pages/index.mdx @@ -1,15 +1,14 @@ # Introduction -Welcome to the documentation for Nym's TypeScript SDK!
+Welcome to the documentation for Nym's TypeScript SDK!
-This guide contains valuable information about the various TypeScript SDK modules that facilitate interaction with different components of the Nym stack, including the mixnet, Nyx chain, and Coconut credentials. +This comprehensive guide contains information about the various TypeScript SDK modules that facilitate interaction with different components of the Nym stack, including the Nym mixnet, the Nyx blockchain, and Coconut credentials. +### Other developer guides -### Our other developer guides +If you're new to the Nym ecosystem and want to better understand the mixnet, explore kickstart options and demos, learn network integration, or follow developer tutorials, the [Developer Portal](https://nymtech.net/developers/) is your go-to resource. -If you're new to the Nym ecosystem and aiming to understand the mixnet concept, explore kickstart options and demos, learn network integration, or follow developer tutorials, the [Developer Portal](https://nymtech.net/developers/) is your go-to resource. - -For a more in-depth exploration of Nym's architecture, clients, nodes, and SDK examples, we recommend referring to the [Technical Documentation](https://nymtech.net/docs/) section. +For a more in-depth exploration of Nym's architecture, clients, nodes, and SDK examples, please refer to the [Technical Documentation](https://nymtech.net/docs/) section. If you're looking for information and setup guides for the various pieces of Nym mixnet infrastructure (mix nodes, gateways, network requesters) and Nyx blockchain validators, then have a look at our [Operators Guide](https://nymtech.net/operators/introduction.html). From 91f1552a8892bea98de0fefc8d99d30b0c414a0f Mon Sep 17 00:00:00 2001 From: Lorexia Date: Mon, 2 Oct 2023 17:29:21 +0200 Subject: [PATCH 045/347] Add bundling pages and details for ESbuild and Webpack --- sdk/typescript/docs/pages/_meta.json | 4 +- sdk/typescript/docs/pages/bundling.mdx | 134 ------------------ sdk/typescript/docs/pages/bundling/_meta.json | 6 + .../docs/pages/bundling/bundling.mdx | 54 +++++++ .../docs/pages/bundling/esbuild.mdx | 25 ++++ .../docs/pages/bundling/webpack.mdx | 82 +++++++++++ .../pages/{guides => examples}/_meta.json | 0 .../pages/{guides => examples}/cosmos-kit.mdx | 8 +- .../pages/{guides => examples}/mix-fetch.mdx | 8 +- .../pages/{guides => examples}/mixnet.mdx | 8 +- .../nym-smart-contracts.mdx | 9 +- 11 files changed, 186 insertions(+), 152 deletions(-) delete mode 100644 sdk/typescript/docs/pages/bundling.mdx create mode 100644 sdk/typescript/docs/pages/bundling/_meta.json create mode 100644 sdk/typescript/docs/pages/bundling/bundling.mdx create mode 100644 sdk/typescript/docs/pages/bundling/esbuild.mdx create mode 100644 sdk/typescript/docs/pages/bundling/webpack.mdx rename sdk/typescript/docs/pages/{guides => examples}/_meta.json (100%) rename sdk/typescript/docs/pages/{guides => examples}/cosmos-kit.mdx (92%) rename sdk/typescript/docs/pages/{guides => examples}/mix-fetch.mdx (93%) rename sdk/typescript/docs/pages/{guides => examples}/mixnet.mdx (92%) rename sdk/typescript/docs/pages/{guides => examples}/nym-smart-contracts.mdx (96%) diff --git a/sdk/typescript/docs/pages/_meta.json b/sdk/typescript/docs/pages/_meta.json index d0a3f5cdfc..8c91360078 100644 --- a/sdk/typescript/docs/pages/_meta.json +++ b/sdk/typescript/docs/pages/_meta.json @@ -3,9 +3,9 @@ "overview": "SDK overview", "installation": "Installation", "start": "Getting started", - "guides": "Examples", + "examples": "Step-by-step examples", "playground": "Live Playground", - + "bundling": "Bundling", "contact": { "title": "Contact ↗", diff --git a/sdk/typescript/docs/pages/bundling.mdx b/sdk/typescript/docs/pages/bundling.mdx deleted file mode 100644 index 026fefc81f..0000000000 --- a/sdk/typescript/docs/pages/bundling.mdx +++ /dev/null @@ -1,134 +0,0 @@ -# Troubleshooting Bundling - -You might need some help bundling packages from the Nym Typescript SDK into your package. - -Here are some things that could go wrong: - -## WebAssembly (WASM) and web worker not included in output bundle - -### Webpack - -You might need to use the CopyPlugin by adding this to your Webpack config: - -```js -const CopyPlugin = require('copy-webpack-plugin'); - -... - -module.exports = { - ... - plugins: [ - ... - new CopyPlugin({ - patterns: [ - { - from: path.resolve(path.dirname(require.resolve('@nymproject/mix-fetch/package.json')), '*.wasm'), - to: '[name][ext]', - }, - { - from: path.resolve(path.dirname(require.resolve('@nymproject/mix-fetch/package.json')), '*worker*.js'), - to: '[name][ext]', - }, - ], - }), - ], -} -``` - -How does this work? The statement `require.resolve('@nymproject/mix-fetch/package.json')` finds the disk location of -the Nym SDK package, and resolve the directory name is `path.dirname`, the add the `*.wasm` glob to the search pattern -list. Use `[name][ext]` to preserve the output filename, because the package expects the filename to stay the same. - -## ESM not supported - -If your bundler does not support ECMAScript Modules (ESM) we provide CommonJS packages for most parts of the SDK. - -For those that don't have ESM versions, you will need to use a tool like [Babel](https://babeljs.io/) to convert -ESM to CommonJS. - -## CSP prevents loading - -If you are using a `*-full-fat` package, or if you inline WASM or web workers, you may not be able to load them if the -[CSP](https://developer.mozilla.org/en-US/docs/Web/HTTP/CSP) prevents WASM from being instantiated from a string. - -You'll have to experiment with either adjusting the CSP or use another variant that is unbundled. - -## Webpack > 5 ESM - -You´ll need the following rule in your `webpack.config.js` above version 5: -```json -{ - test: /\.(m?js)$/, - resolve: { - fullySpecified: false - } -} -``` - -### Nextjs - -NextJS doesn´t allow you access to the webpack config without ejecting, which you override as follows: - -```bash -npx create-react-app nymapp --template typescript -cd nymapp -``` - -#### Install contract-clients dependencies - -```bash -npm install @nymproject/contract-clients @cosmjs/cosmwasm-stargate @cosmjs/proto-signing -``` - -#### polyfilling - -Copy the following to your terminal and run: - -```bash -npm install react-app-rewired -npm install --save-dev crypto-browserify stream-browserify assert stream-http https-browserify os-browserify url buffer process -cat < config-overrides.js -const webpack = require('webpack'); -const path = require('path') - -module.exports = function override(config) { - const fallback = config.resolve.fallback || {}; - Object.assign(fallback, { - "crypto": require.resolve("crypto-browserify"), - "stream": require.resolve("stream-browserify"), - "assert": require.resolve("assert"), - "http": require.resolve("stream-http"), - "https": require.resolve("https-browserify"), - "os": require.resolve("os-browserify"), - "url": require.resolve("url") - }) - config.resolve.fallback = fallback; - config.plugins = (config.plugins || []).concat([ - new webpack.ProvidePlugin({ - process: 'process/browser', - Buffer: ['buffer', 'Buffer'] - }) - ]) - config.module.rules = (config.module.rules || []).concat([ - { - test: /\.(m?js)$/, - resolve: { - fullySpecified: false - } - } - ]) - return config; -} -EOF -``` - -#### Edit the `package.json` file as follows: - -```json - "scripts": { - "start": "react-app-rewired start", - "build": "react-app-rewired build", - "test": "react-app-rewired test", - "eject": "react-scripts eject" - }, -``` \ No newline at end of file diff --git a/sdk/typescript/docs/pages/bundling/_meta.json b/sdk/typescript/docs/pages/bundling/_meta.json new file mode 100644 index 0000000000..5ee55efacc --- /dev/null +++ b/sdk/typescript/docs/pages/bundling/_meta.json @@ -0,0 +1,6 @@ +{ + "bundling": "General troubleshooting", + "esbuild": "ESbuild", + "webpack": "Webpack" +} + \ No newline at end of file diff --git a/sdk/typescript/docs/pages/bundling/bundling.mdx b/sdk/typescript/docs/pages/bundling/bundling.mdx new file mode 100644 index 0000000000..1fda031869 --- /dev/null +++ b/sdk/typescript/docs/pages/bundling/bundling.mdx @@ -0,0 +1,54 @@ +# Troubleshooting Bundling + +You might need some help bundling packages from the Nym Typescript SDK into your package. + +Here are some things that could go wrong: + +## WebAssembly (WASM) and web worker not included in output bundle + +### Webpack + +You might need to use the CopyPlugin by adding this to your Webpack config: + +```js +const CopyPlugin = require('copy-webpack-plugin'); + +... + +module.exports = { + ... + plugins: [ + ... + new CopyPlugin({ + patterns: [ + { + from: path.resolve(path.dirname(require.resolve('@nymproject/mix-fetch/package.json')), '*.wasm'), + to: '[name][ext]', + }, + { + from: path.resolve(path.dirname(require.resolve('@nymproject/mix-fetch/package.json')), '*worker*.js'), + to: '[name][ext]', + }, + ], + }), + ], +} +``` + +How does this work? The statement `require.resolve('@nymproject/mix-fetch/package.json')` finds the disk location of +the Nym SDK package, and resolve the directory name is `path.dirname`, the add the `*.wasm` glob to the search pattern +list. Use `[name][ext]` to preserve the output filename, because the package expects the filename to stay the same. + +## ESM not supported + +If your bundler does not support ECMAScript Modules (ESM) we provide CommonJS packages for most parts of the SDK. + +For those that don't have ESM versions, you will need to use a tool like [Babel](https://babeljs.io/) to convert +ESM to CommonJS. + +## CSP prevents loading + +If you are using a `*-full-fat` package, or if you inline WASM or web workers, you may not be able to load them if the +[CSP](https://developer.mozilla.org/en-US/docs/Web/HTTP/CSP) prevents WASM from being instantiated from a string. + +You'll have to experiment with either adjusting the CSP or use another variant that is unbundled. diff --git a/sdk/typescript/docs/pages/bundling/esbuild.mdx b/sdk/typescript/docs/pages/bundling/esbuild.mdx new file mode 100644 index 0000000000..2732aea63f --- /dev/null +++ b/sdk/typescript/docs/pages/bundling/esbuild.mdx @@ -0,0 +1,25 @@ +# Troubleshooting bundling with ESbuild + +If you've been following the steps outlined in the Examples section, your development environment should be configured as follows: + +#### Environment Setup +Begin by creating a directory and configuring your application environment: + +Create your directory and set-up your app environment: +```bash +npm create vite@latest +``` +During the environment setup, choose React and subsequently opt for Typescript if you want your application to function smoothly following this tutorial. Next, navigate to your application directory and run the following commands: +```bash +cd < YOUR_APP > +npm i +npm run dev +``` + +##### Installation +Install the required package: +```bash +npm install @nymproject/< PACKAGE_NAME > +``` + +By implementing the provided code for the various components in the step-by-step examples section, you should be able to set-up and run your application without encountering any bundling challenges! \ No newline at end of file diff --git a/sdk/typescript/docs/pages/bundling/webpack.mdx b/sdk/typescript/docs/pages/bundling/webpack.mdx new file mode 100644 index 0000000000..d52815f95f --- /dev/null +++ b/sdk/typescript/docs/pages/bundling/webpack.mdx @@ -0,0 +1,82 @@ + +# Troubleshooting bundling with Webpack + +## Webpack > 5 ESM + +You´ll need the following rule in your `webpack.config.js` above version 5: +```json +{ + test: /\.(m?js)$/, + resolve: { + fullySpecified: false + } +} +``` + +### Create-react-app + +Create-react-app doesn´t allow you access to the Webpack config without ejecting, which you override as follows: + +```bash +npx create-react-app nymapp --template typescript +cd nymapp +``` + +#### Install contract-clients dependencies + +```bash +npm install @nymproject/contract-clients @cosmjs/cosmwasm-stargate @cosmjs/proto-signing +``` + +#### Polyfilling + +Copy the following to your terminal and run: + +```bash +npm install react-app-rewired +npm install --save-dev crypto-browserify stream-browserify assert stream-http https-browserify os-browserify url buffer process +cat < config-overrides.js +const webpack = require('webpack'); +const path = require('path') + +module.exports = function override(config) { + const fallback = config.resolve.fallback || {}; + Object.assign(fallback, { + "crypto": require.resolve("crypto-browserify"), + "stream": require.resolve("stream-browserify"), + "assert": require.resolve("assert"), + "http": require.resolve("stream-http"), + "https": require.resolve("https-browserify"), + "os": require.resolve("os-browserify"), + "url": require.resolve("url") + }) + config.resolve.fallback = fallback; + config.plugins = (config.plugins || []).concat([ + new webpack.ProvidePlugin({ + process: 'process/browser', + Buffer: ['buffer', 'Buffer'] + }) + ]) + config.module.rules = (config.module.rules || []).concat([ + { + test: /\.(m?js)$/, + resolve: { + fullySpecified: false + } + } + ]) + return config; +} +EOF +``` + +#### Edit the `package.json` file as follows: + +```json + "scripts": { + "start": "react-app-rewired start", + "build": "react-app-rewired build", + "test": "react-app-rewired test", + "eject": "react-scripts eject" + }, +``` \ No newline at end of file diff --git a/sdk/typescript/docs/pages/guides/_meta.json b/sdk/typescript/docs/pages/examples/_meta.json similarity index 100% rename from sdk/typescript/docs/pages/guides/_meta.json rename to sdk/typescript/docs/pages/examples/_meta.json diff --git a/sdk/typescript/docs/pages/guides/cosmos-kit.mdx b/sdk/typescript/docs/pages/examples/cosmos-kit.mdx similarity index 92% rename from sdk/typescript/docs/pages/guides/cosmos-kit.mdx rename to sdk/typescript/docs/pages/examples/cosmos-kit.mdx index 2d197f71d7..52af063bd5 100644 --- a/sdk/typescript/docs/pages/guides/cosmos-kit.mdx +++ b/sdk/typescript/docs/pages/examples/cosmos-kit.mdx @@ -7,14 +7,14 @@ Nym, these include: - using the [Ledger hardware wallet](https://docs.cosmoskit.com/integrating-wallets/ledger) from the browser - any wallet that supports [Wallet Connect v2.0](https://docs.cosmoskit.com/integrating-wallets/adding-new-wallets) -##### Set-up your environment +##### Environment Setup +Begin by creating a directory and configuring your application environment: -Create your directory and set-up your app environment: ```bash npm create vite@latest ``` -Select `React` and later `Typescript` as you go to your environment set-up if you want your app to work off the bat following this tutorial. -Then, + +During the environment setup, choose React and subsequently opt for Typescript if you want your application to function smoothly following this tutorial. Next, navigate to your application directory and run the following commands: ```bash cd < YOUR_APP > npm i diff --git a/sdk/typescript/docs/pages/guides/mix-fetch.mdx b/sdk/typescript/docs/pages/examples/mix-fetch.mdx similarity index 93% rename from sdk/typescript/docs/pages/guides/mix-fetch.mdx rename to sdk/typescript/docs/pages/examples/mix-fetch.mdx index 62826d2b75..83d3a4a15e 100644 --- a/sdk/typescript/docs/pages/guides/mix-fetch.mdx +++ b/sdk/typescript/docs/pages/examples/mix-fetch.mdx @@ -55,14 +55,14 @@ const mixFetchOptions: SetupMixFetchOps = { }; ``` -##### Set-up your environment +##### Environment Setup +Begin by creating a directory and configuring your application environment: -Create your directory and set-up your app environment: ```bash npm create vite@latest ``` -Select `React` and later `Typescript` as you go to your environment set-up if you want your app to work off the bat following this tutorial. -Then, + +During the environment setup, choose React and subsequently opt for Typescript if you want your application to function smoothly following this tutorial. Next, navigate to your application directory and run the following commands: ```bash cd < YOUR_APP > npm i diff --git a/sdk/typescript/docs/pages/guides/mixnet.mdx b/sdk/typescript/docs/pages/examples/mixnet.mdx similarity index 92% rename from sdk/typescript/docs/pages/guides/mixnet.mdx rename to sdk/typescript/docs/pages/examples/mixnet.mdx index 290f55b0f6..50fef0e394 100644 --- a/sdk/typescript/docs/pages/guides/mixnet.mdx +++ b/sdk/typescript/docs/pages/examples/mixnet.mdx @@ -10,14 +10,14 @@ Replying can be done in two ways: - reveal the sender's address to the recipient (as part of the payload) - use a SURB (single use reply block) that allows the recipient to reply to the sender without compromising the identity of either party -##### Set-up your environment +##### Environment Setup +Begin by creating a directory and configuring your application environment: -Create your directory and set-up your app environment: ```bash npm create vite@latest ``` -Select `React` and later `Typescript` as you go to your environment set-up if you want your app to work off the bat following this tutorial. -Then, + +During the environment setup, choose React and subsequently opt for Typescript if you want your application to function smoothly following this tutorial. Next, navigate to your application directory and run the following commands: ```bash cd < YOUR_APP > npm i diff --git a/sdk/typescript/docs/pages/guides/nym-smart-contracts.mdx b/sdk/typescript/docs/pages/examples/nym-smart-contracts.mdx similarity index 96% rename from sdk/typescript/docs/pages/guides/nym-smart-contracts.mdx rename to sdk/typescript/docs/pages/examples/nym-smart-contracts.mdx index 305bee00ea..2322ba6a16 100644 --- a/sdk/typescript/docs/pages/guides/nym-smart-contracts.mdx +++ b/sdk/typescript/docs/pages/examples/nym-smart-contracts.mdx @@ -23,14 +23,15 @@ Depending on your app or project's architecture, this could be any of the ESM or This and the following examples will use the ESbuild bundler. If you'd like to use another one, we will document different bundlers and polyfills in the [bundling](https://sdk.nymtech.net/bundling) page. -##### Set-up your environment -Create your directory and set-up your app environment: +##### Environment Setup +Begin by creating a directory and configuring your application environment: + ```bash npm create vite@latest ``` -Select `React` and later `Typescript` as you go to your environment set-up if you want your app to work off the bat following this tutorial. -Then, + +During the environment setup, choose React and subsequently opt for Typescript if you want your application to function smoothly following this tutorial. Next, navigate to your application directory and run the following commands: ```bash cd < YOUR_APP > npm i From 272909d250ade2ef3865d255d3eee2d389f99dea Mon Sep 17 00:00:00 2001 From: Lorexia Date: Mon, 2 Oct 2023 19:10:45 +0200 Subject: [PATCH 046/347] Add FAQ page details and rework bundling structure --- sdk/typescript/docs/pages/FAQ/_meta.json | 4 ++ sdk/typescript/docs/pages/FAQ/general.mdx | 59 +++++++++++++++++++ .../docs/pages/FAQ/integrations.mdx | 1 + sdk/typescript/docs/pages/_meta.json | 1 + sdk/typescript/docs/pages/index.mdx | 3 +- 5 files changed, 66 insertions(+), 2 deletions(-) create mode 100644 sdk/typescript/docs/pages/FAQ/_meta.json create mode 100644 sdk/typescript/docs/pages/FAQ/general.mdx create mode 100644 sdk/typescript/docs/pages/FAQ/integrations.mdx diff --git a/sdk/typescript/docs/pages/FAQ/_meta.json b/sdk/typescript/docs/pages/FAQ/_meta.json new file mode 100644 index 0000000000..767f1ddbdd --- /dev/null +++ b/sdk/typescript/docs/pages/FAQ/_meta.json @@ -0,0 +1,4 @@ +{ + "general": "General FAQ" + } + \ No newline at end of file diff --git a/sdk/typescript/docs/pages/FAQ/general.mdx b/sdk/typescript/docs/pages/FAQ/general.mdx new file mode 100644 index 0000000000..70961a3988 --- /dev/null +++ b/sdk/typescript/docs/pages/FAQ/general.mdx @@ -0,0 +1,59 @@ +# Welcome to the TS SDK FAQ! + +#### __How can I interact with Nym?__ + +##### For existing projects: +You'd like to integrate parts of the Nym stack to your existing app? Please check our dedicated Integrations page. + +##### For builders: +###### SDKs +You'd like to build or Nymify existing solutions? If you develop in Rust or TS/JS, then our SDKs are your go-to. +Please refer [here](https://nymtech.net/developers/tutorials/rust-sdk.html) for more RUST information and tutorials and here (you are there) for using the TypeScript SDK. +These SDKs abstract away much of the messaging and core logic from your app, and allow you to run a Nym client as part of your application process, instead of having to run them seperately. + +###### Nym clients: Websocket, WebAssembly, SOCKS5 +Alternatively, you can also use one of the three Nym clients to connect your application to the mixnet. These clients do the majority of the heavy-lifting with regards to cryptographic operations and routing under the hood, and all do basically the same thing: create a connection to a gateway, encrypt and decrypt packets sent to and received from the mixnet, and send cover traffic to hide the flow of actual app traffic from observers. You can learn more about the Nym clients [here](https://nymtech.net/developers/integrations/mixnet-integration.html). + +###### Network requesters: +In order to ensure uptime and reliability, it is recommended that you run some pieces of mixnet infrastructure. What infrastructure is necessary to run depends on the architecture of your application, and the endpoints that it needs to hit! + +- If you’re running a purely P2P application, then just integrating clients and having some method of sharing addresses should be enough to route your traffic through the mixnet. +- If you’re wanting to place the mixnet between your users’ application instances and a server-based backend, you can use the [network requester service provider binary](https://nymtech.net/operators/nodes/network-requester-setup.html) to proxy these requests to your application backend, with the mixnet ‘between’ the user and your service, in order to prevent metadata leakage being broadcast to the internet. +- If you’re wanting to route RPC requests through the mixnet to a blockchain, you will need to look into setting up some sort of service that does the transaction broadcasting for you. You can find examples of such projects on the [community applications page](https://nymtech.net/developers/community-resources/community-applications-and-guides.html). + +#### __Why gateways?__ +Nym apps have a stable, potentially long-lasting relation to a gateway node. A client will register itself with a gateway, and get back an authentication token that it can then use to retrieve messages from the gateway later on. + +Gateways serve a few different functions: + +- They act as an end-to-end encrypted message store in case your app goes offline; +- They send encrypted surb-acks for potentially offline recipients, to ensure reliable message delivery; +- They offer a stable addressing location for apps, although the IP may change frequently; + +If you want to learn more about gateways, you can check [this page.](https://nymtech.net/developers/integrations/mixnet-integration.html) + + +#### __Why and when does the mixnet client complain about insufficient topology?__ + +It will in one of the following cases: +- There are empty Mix layers (rare); +- The gateway you've registered with does not appear in the network topology -> it is either unbonded or got blacklisted; +- The gateway you want to send packets to does not appear in the network topology -> it is either unbonded or got blacklisted; + +To avoid the last two, you need to make sure the gateway you are calling is bonded and whitelisted. + +#### __How can I check whether the gateway I am connecting to is bonded and not blacklisted?__ + +The easiest way of checking what gateway you're registered with is to look at you client address. +Client addresses are in the format of: +`client-id . client-dh @ gateway-id. ` + +To illustrate this: `DpB3cHAchJiNBQi5FrZx2csXb1mrHkpYh9Wzf8Rjsuko.ANNWrvHqMYuertHGHUrZdBntQhpzfbWekB39qez9U2Vx@2BuMSfMW3zpeAjKXyKLhmY4QW1DXurrtSPEJ6CjX3SEh ` + +- `DpB3cHAchJiNBQi5FrZx2csXb1mrHkpYh9Wzf8Rjsuko`: is the client's identity key; +- `ANNWrvHqMYuertHGHUrZdBntQhpzfbWekB39qez9U2Vx`: is the client's Diffie Hellman key; +- `2BuMSfMW3zpeAjKXyKLhmY4QW1DXurrtSPEJ6CjX3SEh`: is the gateway's identity, which is what you'll need to check the state of the gateway in the [Nym Explorer](https://explorer.nymtech.net/network-components/gateways). + + +#### __How can I get my service URL whitelisted?__ + diff --git a/sdk/typescript/docs/pages/FAQ/integrations.mdx b/sdk/typescript/docs/pages/FAQ/integrations.mdx new file mode 100644 index 0000000000..a18debad1c --- /dev/null +++ b/sdk/typescript/docs/pages/FAQ/integrations.mdx @@ -0,0 +1 @@ +# Integrations page \ No newline at end of file diff --git a/sdk/typescript/docs/pages/_meta.json b/sdk/typescript/docs/pages/_meta.json index 8c91360078..678ed0bb56 100644 --- a/sdk/typescript/docs/pages/_meta.json +++ b/sdk/typescript/docs/pages/_meta.json @@ -6,6 +6,7 @@ "examples": "Step-by-step examples", "playground": "Live Playground", "bundling": "Bundling", + "FAQ": "FAQ", "contact": { "title": "Contact ↗", diff --git a/sdk/typescript/docs/pages/index.mdx b/sdk/typescript/docs/pages/index.mdx index a6126152f7..9253d04689 100644 --- a/sdk/typescript/docs/pages/index.mdx +++ b/sdk/typescript/docs/pages/index.mdx @@ -1,6 +1,6 @@ # Introduction -Welcome to the documentation for Nym's TypeScript SDK!
+Welcome to the documentation for Nym's TypeScript SDK! This comprehensive guide contains information about the various TypeScript SDK modules that facilitate interaction with different components of the Nym stack, including the Nym mixnet, the Nyx blockchain, and Coconut credentials. @@ -32,4 +32,3 @@ Read more to understand the differences in between Nym, TOR (and other mixnets) - From 81edbab511b6bb0c5ac7b2734e5f75c4cf0d42cb Mon Sep 17 00:00:00 2001 From: Lorexia Date: Tue, 3 Oct 2023 16:00:54 +0200 Subject: [PATCH 047/347] rebase to latest develop --- sdk/typescript/docs/pages/FAQ/general.mdx | 26 ++++-- .../docs/pages/FAQ/integrations.mdx | 92 ++++++++++++++++++- .../docs/pages/examples/mix-fetch.mdx | 7 +- 3 files changed, 111 insertions(+), 14 deletions(-) diff --git a/sdk/typescript/docs/pages/FAQ/general.mdx b/sdk/typescript/docs/pages/FAQ/general.mdx index 70961a3988..4095c74356 100644 --- a/sdk/typescript/docs/pages/FAQ/general.mdx +++ b/sdk/typescript/docs/pages/FAQ/general.mdx @@ -15,14 +15,20 @@ These SDKs abstract away much of the messaging and core logic from your app, and Alternatively, you can also use one of the three Nym clients to connect your application to the mixnet. These clients do the majority of the heavy-lifting with regards to cryptographic operations and routing under the hood, and all do basically the same thing: create a connection to a gateway, encrypt and decrypt packets sent to and received from the mixnet, and send cover traffic to hide the flow of actual app traffic from observers. You can learn more about the Nym clients [here](https://nymtech.net/developers/integrations/mixnet-integration.html). ###### Network requesters: -In order to ensure uptime and reliability, it is recommended that you run some pieces of mixnet infrastructure. What infrastructure is necessary to run depends on the architecture of your application, and the endpoints that it needs to hit! +Network requesters are a type of Service Provider, that in essence, act as a form of proxy (somewhat analagous to a Tor exit node). If you have access to a server, you can run the Network Requester, which allows Nym users to send outbound requests from their local machine through the mixnet to a server, which then makes the request on their behalf, shielding them (and their metadata) from clearnet, untrusted and unknown infrastructure, such as email or message client servers. + +By default the Network Requester is not an open proxy but rather uses a local and global [allow list](https://nymtech.net/.wellknown/network-requester/standard-allowed-list.txt) to whitelist host access. + +#### __Which Service Provider to run?__ +In order to ensure uptime and reliability, it is recommended that you run some pieces of mixnet infrastructure. What infrastructure is necessary to run depends on the architecture of your application, and the endpoints that it needs to hit: + +- No Service Provider (Network Requester) needed: If you’re running a purely P2P application, then just integrating clients and having some method of sharing addresses should be enough to route your traffic through the mixnet. +- Network Requester needed (existing or own): If you’re wanting to place the mixnet between your users’ application instances and a server-based backend, you will need a Network Requester. In this case, if your app supports SOCKS5, you could either use an existing NR or, if your app supports SOCKS5 but needs more extensive whitelisting, you could use the [network requester service provider binary](https://nymtech.net/operators/nodes/network-requester-setup.html) to proxy these requests to your application backend yourself, with the mixnet ‘between’ the user and your service, in order to prevent metadata leakage being broadcast to the internet. +- Running your own Service Provider: If your usecase is more complex, you’re wanting to route RPC requests through the mixnet to a blockchain for example, you will need to look into setting up some sort of Service that does the transaction broadcasting for you. You can find examples of such projects on the [community applications page](https://nymtech.net/developers/community-resources/community-applications-and-guides.html). -- If you’re running a purely P2P application, then just integrating clients and having some method of sharing addresses should be enough to route your traffic through the mixnet. -- If you’re wanting to place the mixnet between your users’ application instances and a server-based backend, you can use the [network requester service provider binary](https://nymtech.net/operators/nodes/network-requester-setup.html) to proxy these requests to your application backend, with the mixnet ‘between’ the user and your service, in order to prevent metadata leakage being broadcast to the internet. -- If you’re wanting to route RPC requests through the mixnet to a blockchain, you will need to look into setting up some sort of service that does the transaction broadcasting for you. You can find examples of such projects on the [community applications page](https://nymtech.net/developers/community-resources/community-applications-and-guides.html). #### __Why gateways?__ -Nym apps have a stable, potentially long-lasting relation to a gateway node. A client will register itself with a gateway, and get back an authentication token that it can then use to retrieve messages from the gateway later on. +Nym apps have a stable, potentially long-lasting relation to a gateway node. A client will establish a symmetric key share with a gateway that can be verified on subsequent connection attempts. Gateways serve a few different functions: @@ -44,7 +50,7 @@ To avoid the last two, you need to make sure the gateway you are calling is bond #### __How can I check whether the gateway I am connecting to is bonded and not blacklisted?__ -The easiest way of checking what gateway you're registered with is to look at you client address. +The easiest way of checking what gateway you're registered with is to look at your client address. Client addresses are in the format of: `client-id . client-dh @ gateway-id. ` @@ -55,5 +61,9 @@ To illustrate this: `DpB3cHAchJiNBQi5FrZx2csXb1mrHkpYh9Wzf8Rjsuko.ANNWrvHqMYuert - `2BuMSfMW3zpeAjKXyKLhmY4QW1DXurrtSPEJ6CjX3SEh`: is the gateway's identity, which is what you'll need to check the state of the gateway in the [Nym Explorer](https://explorer.nymtech.net/network-components/gateways). -#### __How can I get my service URL whitelisted?__ - +#### __How can I get my service host whitelisted?__ +Currently, the different options are: +- You can get it added to the local list of an existing Network Requester; +- You can ask the Nym team to add it to the global [allow list](https://nymtech.net/.wellknown/network-requester/standard-allowed-list.txt) if it's not already there; +- You can run your own Network Requester and locally configure it to allow the hosts you need to connect to; +If you'd like to learn more about Network Requesters and the global allow list, you can [visit this page](https://nymtech.net/operators/nodes/network-requester-setup.html). \ No newline at end of file diff --git a/sdk/typescript/docs/pages/FAQ/integrations.mdx b/sdk/typescript/docs/pages/FAQ/integrations.mdx index a18debad1c..3e65614ae7 100644 --- a/sdk/typescript/docs/pages/FAQ/integrations.mdx +++ b/sdk/typescript/docs/pages/FAQ/integrations.mdx @@ -1 +1,91 @@ -# Integrations page \ No newline at end of file +# Integrations page + +### Existing resources +If you'd like to learn more about potential integrations, please first make sure to read: +- The [integrations FAQ](https://nymtech.net/developers/faq/integrations-faq.html): which lists a set of common questions regarding integrating Nym and Nyx; +- The [Mixnet integration page](https://nymtech.net/developers/integrations/mixnet-integration.html): which will help you integrate with Nym to use the mixnet for application traffic; +- The [payment integration page](https://nymtech.net/developers/integrations/payment-integration.html): which will help you integrate with the Nyx blockchain and use Nym for payments; + +### Integrations options +If you're unsure where to start, the following set of questions should help you determine which path to follow in regards to integrations: + + __1. Does your app mostly rely on the `fetch` method?__ + +If yes, explore implementing `mixfetch`to route app traffic through the mixnet. + +If not: +__2. Is your app developed in TS/JS or Rust?__ + + If yes, you can use one of our SDKs and leverage either `mixfetch`or the `sdk client`to route app traffic through the mixnet. + + If it is developed in another language: + __3. You can use one of our Nym clients__ + + All Nym client packages present basically the same capabilities to the privacy application developer. They need to run as a persistent process in order to stay connected and ready to receive any incoming messages from their gateway nodes. They register and authenticate to gateways, and encrypt Sphinx packets. + You can find more information about the different clients and the ways to interact with them [in this page](https://nymtech.net/developers/integrations/mixnet-integration.html). + + +``` +For integration entry points: + + ,----------------------. + |SPA/WebApp fetch-based| + |----------------------| + `----------------------' + | | + yes no + | | + ,--------. ,----------. + |mixFetch| |Rust or TS| + |--------| |----------| ------------------. + `--------' `----------' | + | | + yes----------. no:other language + | | | + | | | + yes:TS/JS yes:RUST | + | | ,----------. + ,------. ,--------. |Nym-client| + |TS SDK| |Rust SDK| |----------| + |------| |--------| | | + `------' `--------' `----------' + + ``` + +### How to deal with Service Providers? + In a nutshell: that depends on your app's goal and architecture (and the endpoint it needs to hit). +Again, as detailed in the FAQ: + +- No Service Provider (Network Requester) needed: If you’re running a purely P2P application, then just integrating clients and having some method of sharing addresses should be enough to route your traffic through the mixnet. +- Network Requester needed (existing or own): If you’re wanting to place the mixnet between your users’ application instances and a server-based backend, you will need a Network Requester. In this case, if your app supports SOCKS5, you could either use an existing NR or, if your app supports SOCKS5 but needs more extensive whitelisting, you could use the [network requester service provider binary](https://nymtech.net/operators/nodes/network-requester-setup.html) to proxy these requests to your application backend yourself, with the mixnet ‘between’ the user and your service, in order to prevent metadata leakage being broadcast to the internet. +- Running your own Service Provider: If your usecase is more complex, you’re wanting to route RPC requests through the mixnet to a blockchain for example, you will need to look into setting up some sort of Service that does the transaction broadcasting for you. You can find examples of such projects on the [community applications page](https://nymtech.net/developers/community-resources/community-applications-and-guides.html). + +``` + ,--------------------. + |App supports SOCKS5?| + |--------------------| + `--------------------' + | | + yes no + | | + ,------------. ,-----------------. + |App use case| |Set Client + SP | + |------------| |-----------------| + `------------' `-----------------' + | | + needs needs + | | + ,----------------. ,-------------------. + |Simple whitelist| |Extensive whitelist| + |----------------| |-------------------| + `----------------' `-------------------' + | | + | | + ,-----------. ,-------------. + |Existing NR| |Run own SP/NR| + |-----------| |-------------| + `-----------' `-------------' + + +``` + diff --git a/sdk/typescript/docs/pages/examples/mix-fetch.mdx b/sdk/typescript/docs/pages/examples/mix-fetch.mdx index 83d3a4a15e..99270a3a70 100644 --- a/sdk/typescript/docs/pages/examples/mix-fetch.mdx +++ b/sdk/typescript/docs/pages/examples/mix-fetch.mdx @@ -4,15 +4,12 @@ import { Callout } from 'nextra/components' An easy way to secure parts or all of your web app is to replace calls to [`fetch`](https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API/Using_Fetch) with `mixFetch`: -Mixfetch works the same as vanilla `fetch` as it's a proxied wrapper around the original function: +MixFetch works the same as vanilla `fetch` as it's a proxied wrapper around the original function. Read [this article](https://blog.nymtech.net/mixfetch-like-the-fetch-api-but-via-the-mixnet-82acfd435c62) to learn more about mixFetch. Sounds great, are there any catches? Well, there are a few (for now): 1. Currently, the operators of Network Requesters that make the final request at the egress part of the Nym Mixnet to the internet use a [standard allow list](https://nymtech.net/.wellknown/network-requester/standard-allowed-list.txt) -in combination with their own configuration. If you are trying to access something that is not on the allow list, you -have two choices: -- run your own Network Requester and locally configure it to allow the hosts you need to connect to -- get in touch with us and give us more information about the sites you want included in the standard allow list +in combination with their own configuration. If you are trying to access something that is not on the allow list, please check the FAQ page. 2. We periodically update the CA certificates in `mixFetch` so if you get a certificate error, we may not have the root CA certificate you need in our list. [Send us a PR](https://github.com/nymtech/nym/pulls) if you need changes. From a6dc10ceecf2899d0594b8dc467c07af8f8473b3 Mon Sep 17 00:00:00 2001 From: Gala Date: Tue, 3 Oct 2023 15:22:21 +0200 Subject: [PATCH 048/347] updating dependencies --- sdk/typescript/docs/components/traffic.tsx | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/sdk/typescript/docs/components/traffic.tsx b/sdk/typescript/docs/components/traffic.tsx index 9e3b3e01e7..9205382d2d 100644 --- a/sdk/typescript/docs/components/traffic.tsx +++ b/sdk/typescript/docs/components/traffic.tsx @@ -50,8 +50,7 @@ export const Traffic = () => { await nym?.client.stop(); }; - const send = () => - payload && recipient && nym?.client.send({ payload, recipient }); + const send = () => payload && recipient && nym?.client.send({ payload, recipient }); useEffect(() => { init(); From 160ffbbcddcc18042d98207e2458894931f75a9b Mon Sep 17 00:00:00 2001 From: Lorexia Date: Tue, 3 Oct 2023 16:25:58 +0200 Subject: [PATCH 049/347] repair ASCII tree bug --- sdk/typescript/docs/pages/FAQ/integrations.mdx | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/sdk/typescript/docs/pages/FAQ/integrations.mdx b/sdk/typescript/docs/pages/FAQ/integrations.mdx index 3e65614ae7..d6fae5f170 100644 --- a/sdk/typescript/docs/pages/FAQ/integrations.mdx +++ b/sdk/typescript/docs/pages/FAQ/integrations.mdx @@ -40,11 +40,11 @@ For integration entry points: |--------| |----------| ------------------. `--------' `----------' | | | - yes----------. no:other language - | | | - | | | + yes----------. no:other language + | | | + | | | yes:TS/JS yes:RUST | - | | ,----------. + | | ,----------. ,------. ,--------. |Nym-client| |TS SDK| |Rust SDK| |----------| |------| |--------| | | @@ -69,7 +69,7 @@ Again, as detailed in the FAQ: yes no | | ,------------. ,-----------------. - |App use case| |Set Client + SP | + |App use case| | Set Client + SP | |------------| |-----------------| `------------' `-----------------' | | From 281c94c6b2dbc95cea6dceaab44a5edc022b17c9 Mon Sep 17 00:00:00 2001 From: Lorexia Date: Tue, 3 Oct 2023 16:49:01 +0200 Subject: [PATCH 050/347] correct FAQ --- sdk/typescript/docs/pages/FAQ/integrations.mdx | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/sdk/typescript/docs/pages/FAQ/integrations.mdx b/sdk/typescript/docs/pages/FAQ/integrations.mdx index d6fae5f170..c63a1ed133 100644 --- a/sdk/typescript/docs/pages/FAQ/integrations.mdx +++ b/sdk/typescript/docs/pages/FAQ/integrations.mdx @@ -16,7 +16,7 @@ If yes, explore implementing `mixfetch`to route app traffic through the mixnet. If not: __2. Is your app developed in TS/JS or Rust?__ - If yes, you can use one of our SDKs and leverage either `mixfetch`or the `sdk client`to route app traffic through the mixnet. + If yes, you can use one of our SDKs and leverage either `mixfetch` (note that this only works for JS/TS at the moment, as we do not currently have a RUST implementation of it) or the `sdk client`to route app traffic through the mixnet. If it is developed in another language: __3. You can use one of our Nym clients__ @@ -33,7 +33,7 @@ For integration entry points: |----------------------| `----------------------' | | - yes no + yes no | | ,--------. ,----------. |mixFetch| |Rust or TS| @@ -43,7 +43,7 @@ For integration entry points: yes----------. no:other language | | | | | | - yes:TS/JS yes:RUST | + yes:TS/JS yes:RUST | | | ,----------. ,------. ,--------. |Nym-client| |TS SDK| |Rust SDK| |----------| From 65125b5f1e521e353651a4e1144ec824970b93be Mon Sep 17 00:00:00 2001 From: Lorexia Date: Wed, 4 Oct 2023 09:57:04 +0200 Subject: [PATCH 051/347] Update documentation: introduction, overview and installation --- sdk/typescript/docs/pages/installation.mdx | 20 ++++++++++---------- sdk/typescript/docs/pages/overview.mdx | 10 +++++----- 2 files changed, 15 insertions(+), 15 deletions(-) diff --git a/sdk/typescript/docs/pages/installation.mdx b/sdk/typescript/docs/pages/installation.mdx index b11ddb64fd..06b0e1e897 100644 --- a/sdk/typescript/docs/pages/installation.mdx +++ b/sdk/typescript/docs/pages/installation.mdx @@ -2,7 +2,7 @@ import { Callout } from 'nextra/components' # Overview -The Typescript SDK's different modules allow developers to start building browser-based applications quickly, by simply importing the SDK module of their choice - depending on the component from the Nym architecture they want to use - into their code via NPM as they would any other Typescript library. +The different modules in the Typescript SDK allow developers to start building browser-based applications quickly. Simply import the SDK module of your choice – depending on the component from the Nym architecture you want to use – into your code via NPM, as you would any other TypeScript library. Other than the `Contract Clients`, SDK modules come in four different flavours (ESM, CJS and full-fat for ESM and CJS). @@ -12,15 +12,15 @@ The Typescript SDK's different modules allow developers to start building browse #### Install all ```bash -npm install @nymproject/contract-clients @cosmjs/cosmwasm-stargate @cosmjs/proto-signing @nymproject/sdk-full-fat @nymproject/mix-fetch-full-fat --save +npm install @nymproject/contract-clients @cosmjs/cosmwasm-stargate @cosmjs/proto-signing @nymproject/sdk-full-fat @nymproject/mix-fetch-full-fat ``` ## Nym Smart Contracts #### Overview The Nyx blockchain is a general-purpose CosmWasm-enabled smart contract platform, and the home of the smart contracts which keep track of the mixnet, amongst others. -Information about the chain can be found on the [Nyx blockchain explorer](https://nym.explorers.guru/). +Further information about the chain can be found on the [Nyx blockchain explorer](https://nym.explorers.guru/). -Using the [Nym Mixnet smart contract clients](https://nymtech.net/docs/nyx/smart-contracts.html), you will be able to query contract states or execute methods when providing a signing key. +Using the [Nym mixnet smart contract clients](https://nymtech.net/docs/nyx/smart-contracts.html), you will be able to query contract states or execute methods when providing a signing key. *You can learn about our different methods to interact with the chain [here](https://nymtech.net/docs/nyx/interacting-with-chain.html)*. @@ -30,14 +30,14 @@ In order to query or execute on any of the Nym smart contracts, you'll need to u First install the package and its dependencies from Cosmos Stargate: ```bash -npm install @nymproject/contract-clients @cosmjs/cosmwasm-stargate @cosmjs/proto-signing --save +npm install @nymproject/contract-clients @cosmjs/cosmwasm-stargate @cosmjs/proto-signing ``` ## Mixnet #### Overview -The [Nym mixnet](https://nymtech.net/docs/architecture/network-overview.html) provides very strong security guarantees against network-level surveillance. It wraps into packets and mixes together IP traffic from many users inside the mixnet. It encrypts and mixes [Sphinx packet](https://cypherpunks.ca/~iang/pubs/Sphinx_Oakland09.pdf) traffic so that it cannot be determined who is communicating with whom. Our mixnet is based on a modified version of the Loopix design. +The [Nym mixnet](https://nymtech.net/docs/architecture/network-overview.html) provides extremely robust protection against network-level surveillance. splits data into smaller, identically sized,[Sphinx encrypted packet](https://cypherpunks.ca/~iang/pubs/Sphinx_Oakland09.pdf), which are then mixed in with dummy traffic and dispersed through Nym nodes around the world at randomised intervals. Finally these are decrypted and reassembled, preventing the observation of metadata and providing pattern privacy so that it cannot be determined who is communicating with whom. The Nym mixnet is based on a modified version of the [Loopix design](https://www.usenix.org/sites/default/files/conference/protected-files/usenixsecurity17_slides_piotrowska.pdf). -*You can explore our mixnet using our [mixnet explorer](https://nymtech.net/docs/explorers/mixnet-explorer.html) here.* +*You can explore the Nym mixnet using the [mixnet explorer](https://nymtech.net/docs/explorers/mixnet-explorer.html) here.* #### Installation: Mixnet Client @@ -46,12 +46,12 @@ In order to send or receive traffic over the mixnet, you'll need to use the [`Mi First install the package and its dependencies: ```bash -npm install @nymproject/sdk-full-fat --save +npm install @nymproject/sdk-full-fat ``` ## MixFetch #### Overview -MixFetch is a drop-in replacement for [`fetch`](https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API/Using_Fetch) that sends HTTP requests through the Mixnet. It does this by grabbing the same arguments as traditional fetch and constructing a SOCKS5 request that will be made to the destination host on the Internet via a [SOCKS5](https://nymtech.net/developers/quickstart/socks-proxy.html) [Network Requester](https://nymtech.net/docs/nodes/network-requester.html). +MixFetch is a drop-in replacement for [`fetch`](https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API/Using_Fetch) that sends HTTP requests through the Nym mixnet. It does this by grabbing the same arguments as traditional fetch and constructing a SOCKS5 request that will be made to the destination host on the Internet via a [SOCKS5](https://nymtech.net/developers/quickstart/socks-proxy.html) [Network Requester](https://nymtech.net/docs/nodes/network-requester.html). #### Installation: MixFetch package In order to fetch data through mixFetch you'll need to use the [`MixFetch package`](https://www.npmjs.com/package/@nymproject/mix-fetch). @@ -59,7 +59,7 @@ In order to fetch data through mixFetch you'll need to use the [`MixFetch packag First install the package and its dependencies: ```bash -npm install @nymproject/mix-fetch-full-fat --save +npm install @nymproject/mix-fetch-full-fat ``` diff --git a/sdk/typescript/docs/pages/overview.mdx b/sdk/typescript/docs/pages/overview.mdx index 0b456b7fa9..b11d7d3b4a 100644 --- a/sdk/typescript/docs/pages/overview.mdx +++ b/sdk/typescript/docs/pages/overview.mdx @@ -3,9 +3,9 @@ import { TableContainer, Table, TableBody, TableCell, TableRow, Paper } from '@m import { NPMLink } from '../components/npm'; ## SDK overview -The Typescript SDK allows developers to start building browser-based mixnet applications quickly, by simply importing the SDK modules into their code via NPM as they would any other Typescript library. +The Typescript SDK allows developers to start building browser-based Nym-based applications quickly, by simply importing the SDK modules into their code via NPM as they would any other Typescript library. -Currently developers can use different packages from the Typescript SDK to do the following entirely in the browser: +Currently developers can use different packages from the Typescript SDK to run the following entirely in browser:
{value?.bond_information?.mix_node?.identity_key}
@@ -57,10 +57,10 @@ Currently developers can use different packages from the Typescript SDK to do th ## Which package should I use? All packages come in four different variations: -- **ESM**: For new projects with current tooling. These packages use the ECMAScript Modules (ESM) system. You may need to [configure your bundler](bundling) to handle the packages WASM and Web Worker components; +- **ESM**: For new projects with current tooling. These packages use the ECMAScript Modules (ESM) system. You may need to [configure your bundler](bundling) to handle the packages WASM and web worker components; - **ESM full-fat**: These ESM packages are pre-bundled and include inline WebAssembly and web worker code; -- **CommonJS**: For older projects that still use CommonJS. All WebAssembly (WASM) and Web Workers in the package need to be [bundled](bundling) to work correctly; -- **CommonJS full-fat**: These packages are already pre-bundled and should work in your project as is; +- **CommonJS**: For older projects that still use CommonJS. All WebAssembly (WASM) and web workers in the package need to be [bundled](bundling) to work correctly; +- **CommonJS full-fat**: These packages are already pre-bundled and should work in your project without additional configuration; All `*-full-fat` variants have large bundle sizes because they include all WASM and web-workers as inline Base64 strings. If you care about your app's bundle size, then use the ESM variant. From 4b830ce38bce887ad9fff94da2ec7d1fa7de8b36 Mon Sep 17 00:00:00 2001 From: Lorexia Date: Wed, 4 Oct 2023 10:23:09 +0200 Subject: [PATCH 052/347] Correct documentation --- sdk/typescript/docs/components/wallet.tsx | 2 +- sdk/typescript/docs/pages/FAQ/general.mdx | 10 +++++----- sdk/typescript/docs/pages/FAQ/integrations.mdx | 2 +- sdk/typescript/docs/pages/bundling/bundling.mdx | 4 ++-- sdk/typescript/docs/pages/examples/cosmos-kit.mdx | 8 ++++---- sdk/typescript/docs/pages/examples/mix-fetch.mdx | 5 ++--- sdk/typescript/docs/pages/examples/mixnet.mdx | 8 ++++---- .../docs/pages/examples/nym-smart-contracts.mdx | 8 ++++---- sdk/typescript/docs/pages/playground/cosmos-kit.mdx | 10 +++++----- sdk/typescript/docs/pages/playground/traffic.mdx | 2 +- sdk/typescript/docs/pages/start.mdx | 4 ++-- 11 files changed, 31 insertions(+), 32 deletions(-) diff --git a/sdk/typescript/docs/components/wallet.tsx b/sdk/typescript/docs/components/wallet.tsx index 538a55de03..b2f8664bed 100644 --- a/sdk/typescript/docs/components/wallet.tsx +++ b/sdk/typescript/docs/components/wallet.tsx @@ -277,7 +277,7 @@ export const Wallet = () => { ) : ( - Please, enter your nemonic to receive your account info + Please, enter your mnemonic to receive your account information )} diff --git a/sdk/typescript/docs/pages/FAQ/general.mdx b/sdk/typescript/docs/pages/FAQ/general.mdx index 4095c74356..9bb0b970f7 100644 --- a/sdk/typescript/docs/pages/FAQ/general.mdx +++ b/sdk/typescript/docs/pages/FAQ/general.mdx @@ -3,16 +3,16 @@ #### __How can I interact with Nym?__ ##### For existing projects: -You'd like to integrate parts of the Nym stack to your existing app? Please check our dedicated Integrations page. +You'd like to integrate parts of the Nym stack to your existing app? Please check the dedicated [integrations page](../FAQ/integrations). ##### For builders: ###### SDKs You'd like to build or Nymify existing solutions? If you develop in Rust or TS/JS, then our SDKs are your go-to. -Please refer [here](https://nymtech.net/developers/tutorials/rust-sdk.html) for more RUST information and tutorials and here (you are there) for using the TypeScript SDK. +Please visit the [RUST SDK documentation](https://nymtech.net/developers/tutorials/rust-sdk.html) for more RUST-related information and tutorials and go to the [TS SDK handbook](../) (you are here) for using the TypeScript SDK. These SDKs abstract away much of the messaging and core logic from your app, and allow you to run a Nym client as part of your application process, instead of having to run them seperately. ###### Nym clients: Websocket, WebAssembly, SOCKS5 -Alternatively, you can also use one of the three Nym clients to connect your application to the mixnet. These clients do the majority of the heavy-lifting with regards to cryptographic operations and routing under the hood, and all do basically the same thing: create a connection to a gateway, encrypt and decrypt packets sent to and received from the mixnet, and send cover traffic to hide the flow of actual app traffic from observers. You can learn more about the Nym clients [here](https://nymtech.net/developers/integrations/mixnet-integration.html). +Alternatively, you can also use one of the three Nym clients to connect your application to the mixnet. These clients do the majority of the heavy-lifting with regards to cryptographic operations and routing under the hood, and all do basically the same thing: create a connection to a gateway, encrypt and decrypt packets sent to and received from the mixnet, and send cover traffic to hide the flow of actual app traffic from observers. You can learn more about the Nym clients in this [Nym integration page](https://nymtech.net/developers/integrations/mixnet-integration.html). ###### Network requesters: Network requesters are a type of Service Provider, that in essence, act as a form of proxy (somewhat analagous to a Tor exit node). If you have access to a server, you can run the Network Requester, which allows Nym users to send outbound requests from their local machine through the mixnet to a server, which then makes the request on their behalf, shielding them (and their metadata) from clearnet, untrusted and unknown infrastructure, such as email or message client servers. @@ -36,7 +36,7 @@ Gateways serve a few different functions: - They send encrypted surb-acks for potentially offline recipients, to ensure reliable message delivery; - They offer a stable addressing location for apps, although the IP may change frequently; -If you want to learn more about gateways, you can check [this page.](https://nymtech.net/developers/integrations/mixnet-integration.html) +If you want to learn more about gateways, you can check the [mixnet integration page](https://nymtech.net/developers/integrations/mixnet-integration.html). #### __Why and when does the mixnet client complain about insufficient topology?__ @@ -66,4 +66,4 @@ Currently, the different options are: - You can get it added to the local list of an existing Network Requester; - You can ask the Nym team to add it to the global [allow list](https://nymtech.net/.wellknown/network-requester/standard-allowed-list.txt) if it's not already there; - You can run your own Network Requester and locally configure it to allow the hosts you need to connect to; -If you'd like to learn more about Network Requesters and the global allow list, you can [visit this page](https://nymtech.net/operators/nodes/network-requester-setup.html). \ No newline at end of file +If you'd like to learn more about Network Requesters and the global allow list, you can visit the [network requester set-up page](https://nymtech.net/operators/nodes/network-requester-setup.html). \ No newline at end of file diff --git a/sdk/typescript/docs/pages/FAQ/integrations.mdx b/sdk/typescript/docs/pages/FAQ/integrations.mdx index c63a1ed133..061087d6a5 100644 --- a/sdk/typescript/docs/pages/FAQ/integrations.mdx +++ b/sdk/typescript/docs/pages/FAQ/integrations.mdx @@ -54,7 +54,7 @@ For integration entry points: ### How to deal with Service Providers? In a nutshell: that depends on your app's goal and architecture (and the endpoint it needs to hit). -Again, as detailed in the FAQ: +Again, as detailed in the [FAQ](../FAQ/general): - No Service Provider (Network Requester) needed: If you’re running a purely P2P application, then just integrating clients and having some method of sharing addresses should be enough to route your traffic through the mixnet. - Network Requester needed (existing or own): If you’re wanting to place the mixnet between your users’ application instances and a server-based backend, you will need a Network Requester. In this case, if your app supports SOCKS5, you could either use an existing NR or, if your app supports SOCKS5 but needs more extensive whitelisting, you could use the [network requester service provider binary](https://nymtech.net/operators/nodes/network-requester-setup.html) to proxy these requests to your application backend yourself, with the mixnet ‘between’ the user and your service, in order to prevent metadata leakage being broadcast to the internet. diff --git a/sdk/typescript/docs/pages/bundling/bundling.mdx b/sdk/typescript/docs/pages/bundling/bundling.mdx index 1fda031869..667eea07ad 100644 --- a/sdk/typescript/docs/pages/bundling/bundling.mdx +++ b/sdk/typescript/docs/pages/bundling/bundling.mdx @@ -1,4 +1,4 @@ -# Troubleshooting Bundling +# Troubleshooting bundling You might need some help bundling packages from the Nym Typescript SDK into your package. @@ -41,7 +41,7 @@ list. Use `[name][ext]` to preserve the output filename, because the package exp ## ESM not supported -If your bundler does not support ECMAScript Modules (ESM) we provide CommonJS packages for most parts of the SDK. +If your bundler does not support ECMAScript Modules (ESM), CommonJS packages are supported for most parts of the SDK. For those that don't have ESM versions, you will need to use a tool like [Babel](https://babeljs.io/) to convert ESM to CommonJS. diff --git a/sdk/typescript/docs/pages/examples/cosmos-kit.mdx b/sdk/typescript/docs/pages/examples/cosmos-kit.mdx index 52af063bd5..9db187dd89 100644 --- a/sdk/typescript/docs/pages/examples/cosmos-kit.mdx +++ b/sdk/typescript/docs/pages/examples/cosmos-kit.mdx @@ -1,11 +1,11 @@ # Cosmos Kit The wonderful people of Cosmology have made some [fantastic components](https://cosmoskit.com/) that can be used with -Nym, these include: +Nym. These include: -- using the wallets such as Keplr, Cosmostation and others from your React application -- using the [Ledger hardware wallet](https://docs.cosmoskit.com/integrating-wallets/ledger) from the browser -- any wallet that supports [Wallet Connect v2.0](https://docs.cosmoskit.com/integrating-wallets/adding-new-wallets) +- Using the wallets such as Keplr, Cosmostation and others from your React application; +- Using the [Ledger hardware wallet](https://docs.cosmoskit.com/integrating-wallets/ledger) from your browser; +- Any wallet that supports [Wallet Connect v2.0](https://docs.cosmoskit.com/integrating-wallets/adding-new-wallets); ##### Environment Setup Begin by creating a directory and configuring your application environment: diff --git a/sdk/typescript/docs/pages/examples/mix-fetch.mdx b/sdk/typescript/docs/pages/examples/mix-fetch.mdx index 99270a3a70..9544d4a62f 100644 --- a/sdk/typescript/docs/pages/examples/mix-fetch.mdx +++ b/sdk/typescript/docs/pages/examples/mix-fetch.mdx @@ -7,12 +7,11 @@ An easy way to secure parts or all of your web app is to replace calls to [`fetc MixFetch works the same as vanilla `fetch` as it's a proxied wrapper around the original function. Read [this article](https://blog.nymtech.net/mixfetch-like-the-fetch-api-but-via-the-mixnet-82acfd435c62) to learn more about mixFetch. Sounds great, are there any catches? Well, there are a few (for now): -1. Currently, the operators of Network Requesters that make the final request at the egress part of the Nym Mixnet to +1. Currently, the operators of Network Requesters that make the final request at the egress part of the Nym mixnet to the internet use a [standard allow list](https://nymtech.net/.wellknown/network-requester/standard-allowed-list.txt) in combination with their own configuration. If you are trying to access something that is not on the allow list, please check the FAQ page. -2. We periodically update the CA certificates in `mixFetch` so if you get a certificate error, we may not have the -root CA certificate you need in our list. [Send us a PR](https://github.com/nymtech/nym/pulls) if you need changes. +2. CA certificates in `mixFetch` are periodically updated, so if you get a certificate error, the root certificate you need might not be in the [standard allow list](https://nymtech.net/.wellknown/network-requester/standard-allowed-list.txt). If that's the case, [send a PR](https://github.com/nymtech/nym/pulls) if you need changes. 3. If you are using `mixFetch` in a web app with HTTPS you will need to use a gateway that has Secure Websockets to avoid getting a [mixed content](https://developer.mozilla.org/en-US/docs/Web/Security/Mixed_content) error. diff --git a/sdk/typescript/docs/pages/examples/mixnet.mdx b/sdk/typescript/docs/pages/examples/mixnet.mdx index 50fef0e394..d98c99a6a9 100644 --- a/sdk/typescript/docs/pages/examples/mixnet.mdx +++ b/sdk/typescript/docs/pages/examples/mixnet.mdx @@ -2,11 +2,11 @@ import { Callout } from 'nextra/components' # Mixnet Client -As you know by now, in order to send or receive messages over the mixnet, you'll need to use the [`SDK Client`](https://www.npmjs.com/package/@nymproject/sdk), which will allow you to create apps that can use the Nym Mixnet and Coconut credentials. +As you know by now, in order to send or receive messages over the mixnet, you'll need to use the [`SDK Client`](https://www.npmjs.com/package/@nymproject/sdk), which will allow you to create apps that can use the Nym mixnet and Coconut credentials. This client is message based - it can only send a one-way message to another client's address. -Replying can be done in two ways: +Replying can be achieved in two ways: - reveal the sender's address to the recipient (as part of the payload) - use a SURB (single use reply block) that allows the recipient to reply to the sender without compromising the identity of either party @@ -38,10 +38,10 @@ Import the SDK's Mixnet Client in your app: import { createNymMixnetClient, NymMixnetClient, Payload } from "@nymproject/sdk-full-fat"; ```` -##### Example: using the SDK's Mixnet Client to send and receive messages over the Nym Mixnet +##### Example: using the SDK's Mixnet Client to send and receive messages over the Nym mixnet By pasting the below code example, you should be able to send and receive messages through the mixnet through an unstyled mixnet app template! - For this example, we will be using the `full-fat` version of the ESM SDK. If you'd like to use the unbundled ESM one, make sure your [bundler configuration](../../bundling) copies the WebAssembly (WASM) and web worker files to the output bundle. + For this example, we will be using the `full-fat` version of the ESM SDK. If you'd like to use the unbundled version of the ESM one, make sure your [bundler configuration](../../bundling/bundling) copies the WebAssembly (WASM) and web worker files to the output bundle. diff --git a/sdk/typescript/docs/pages/examples/nym-smart-contracts.mdx b/sdk/typescript/docs/pages/examples/nym-smart-contracts.mdx index 2322ba6a16..59e0bf817b 100644 --- a/sdk/typescript/docs/pages/examples/nym-smart-contracts.mdx +++ b/sdk/typescript/docs/pages/examples/nym-smart-contracts.mdx @@ -5,14 +5,14 @@ import { Callout } from 'nextra/components' As previously mentioned, to query or execute on any of the Nym contracts, you'll need to use one of the [`Contract Clients`](https://www.npmjs.com/package/@nymproject/contract-clients), which contains read-only query and signing clients for all of Nym's smart contracts. ##### Contract Clients list -Lists of the diffent available clients and methods from the `Contract Clients` can be found in the `.client.ts` files: +Lists of the different available clients and methods from the `Contract Clients` can be found in the `.client.ts` files: | Client name | Functionality| Methods list | | :-------------: | :----------: | :----------: | | Coconut Bandwidth Client| Manages the depositing and release of funds. Tracks double spending. | [Coconut Bandwidth](https://github.com/nymtech/nym/blob/develop/sdk/typescript/codegen/contract-clients/src/CoconutBandwidth.client.ts) | | Coconut DKG Client | Allows signers partcipating in issuing Coconut credentials to derive keys to be used. | [Coconut DKG](https://github.com/nymtech/nym/blob/develop/sdk/typescript/codegen/contract-clients/src/CoconutDkg.client.ts) | | Cw3FlexMultisig Client | Used by the Coconut APIs to issue credentials. [This](https://github.com/CosmWasm/cw-plus/tree/main/contracts/cw3-flex-multisig) is a multisig contract that is backed by the cw4 (group) contract, which independently maintains the voter set. | [Cw3Flex Multisig](https://github.com/nymtech/nym/blob/develop/sdk/typescript/codegen/contract-clients/src/Cw3FlexMultisig.client.ts) | | Cw4Group Client | Used by the Coconut APIs to issue credentials. [Cw4 Group](https://github.com/CosmWasm/cw-plus/tree/main/contracts/cw4-group) stores a set of members along with an admin, and allows the admin to update the state. | [Cw4Group](https://github.com/nymtech/nym/blob/develop/sdk/typescript/codegen/contract-clients/src/Cw4Group.client.ts) | -| Mixnet Client | Manages the network topology of the mixnet, tracking delegations and rewarding | [Mixnet](https://github.com/nymtech/nym/blob/develop/sdk/typescript/codegen/contract-clients/src/Mixnet.client.ts) | +| Mixnet Client | Manages the network topology of the mixnet, tracking delegations and rewards. | [Mixnet](https://github.com/nymtech/nym/blob/develop/sdk/typescript/codegen/contract-clients/src/Mixnet.client.ts) | | Name Service Client | Operates as a directory of user-defined aliases, analogous to a Domain Name System (DNS). | [Name service](https://github.com/nymtech/nym/blob/develop/sdk/typescript/codegen/contract-clients/src/NameService.client.ts) | | Service provider Directory Client| Allows users to register their service provider in a public directory. | [Service Provider](https://github.com/nymtech/nym/blob/develop/sdk/typescript/codegen/contract-clients/src/ServiceProviderDirectory.client.ts) | | Vesting Client | Manages NYM token vesting functionality. | [Vesting](https://github.com/nymtech/nym/blob/develop/sdk/typescript/codegen/contract-clients/src/Vesting.client.ts) | @@ -55,8 +55,8 @@ import { contracts } from '@nymproject/contract-clients'; import { SigningCosmWasmClient } from "@cosmjs/cosmwasm-stargate"; ```` -##### Example: using the Mixnet smart contract client to query -In this example, we will use the `MixnetQueryClient`from the `Contract Clients` to simply query the contract and return a list of Mixnodes. +##### Example: using the mixnet smart contract client to query +In this example, we will use the `MixnetQueryClient`from the `Contract Clients` to simply query the contract and return a list of mixnodes. ```ts import "./App.css"; diff --git a/sdk/typescript/docs/pages/playground/cosmos-kit.mdx b/sdk/typescript/docs/pages/playground/cosmos-kit.mdx index d99600a25e..9d0044d321 100644 --- a/sdk/typescript/docs/pages/playground/cosmos-kit.mdx +++ b/sdk/typescript/docs/pages/playground/cosmos-kit.mdx @@ -19,10 +19,10 @@ of the message will be displayed. If you are using the Ledger hardware wallet, please make sure: -- you have the `cosmoshub` app installed on the Ledger -- it is connected to your computer -- it is unlocked -- the Cosmos Hub app is open -- grant permissions to your browser when you click the button above to connect to the Ledger (if you do not see a prompt, try another browser) +- You have the `cosmoshub` app installed on the Ledger; +- It is connected to your computer; +- It is unlocked; +- The Cosmos Hub app is open; +- Grant permissions to your browser when you click the button above to connect to the Ledger (if you do not see a prompt, try another browser); diff --git a/sdk/typescript/docs/pages/playground/traffic.mdx b/sdk/typescript/docs/pages/playground/traffic.mdx index 76a85ab9fb..d1192095e8 100644 --- a/sdk/typescript/docs/pages/playground/traffic.mdx +++ b/sdk/typescript/docs/pages/playground/traffic.mdx @@ -4,7 +4,7 @@ import { Traffic } from '../../components/traffic'; import Box from '@mui/material/Box'; import FormattedTrafficExampleCode from '../../code-examples/traffic-example-code.mdx'; -Use this tool to experiment with the Mixnet: send and receive messages! +Use this tool to experiment with the mixnet: send and receive messages! \ No newline at end of file diff --git a/sdk/typescript/docs/pages/start.mdx b/sdk/typescript/docs/pages/start.mdx index 01151ea232..daada99b2a 100644 --- a/sdk/typescript/docs/pages/start.mdx +++ b/sdk/typescript/docs/pages/start.mdx @@ -60,7 +60,7 @@ const main = async () => { ## MixFetch -Use the [`mixFetch`](https://www.npmjs.com/package/@nymproject/mix-fetch) package as a drop-in replacement for `fetch`to send HTTP requests over the Nym Mixnet: +Use the [`mixFetch`](https://www.npmjs.com/package/@nymproject/mix-fetch) package as a drop-in replacement for `fetch`to send HTTP requests over the Nym mixnet: ```ts import { mixFetch } from '@nymproject/mix-fetch'; @@ -78,7 +78,7 @@ const apiResponse = await mixFetch('https://api.example.com', { ``` Check the [standard allowed list](https://nymtech.net/.wellknown/network-requester/standard-allowed-list.txt) to see -if the host you want to `mixFetch` from is allowed. +if the host you want to `mixFetch` from is whitelisted. From 4bf7096ee7e17272fd636658f39128d87ad629d7 Mon Sep 17 00:00:00 2001 From: Lorexia Date: Wed, 4 Oct 2023 10:37:48 +0200 Subject: [PATCH 053/347] Add callout to mixFetch page --- sdk/typescript/docs/pages/examples/mix-fetch.mdx | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/sdk/typescript/docs/pages/examples/mix-fetch.mdx b/sdk/typescript/docs/pages/examples/mix-fetch.mdx index 9544d4a62f..7e08663aff 100644 --- a/sdk/typescript/docs/pages/examples/mix-fetch.mdx +++ b/sdk/typescript/docs/pages/examples/mix-fetch.mdx @@ -4,7 +4,7 @@ import { Callout } from 'nextra/components' An easy way to secure parts or all of your web app is to replace calls to [`fetch`](https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API/Using_Fetch) with `mixFetch`: -MixFetch works the same as vanilla `fetch` as it's a proxied wrapper around the original function. Read [this article](https://blog.nymtech.net/mixfetch-like-the-fetch-api-but-via-the-mixnet-82acfd435c62) to learn more about mixFetch. +MixFetch works the same as vanilla `fetch` as it's a proxied wrapper around the original function. Sounds great, are there any catches? Well, there are a few (for now): 1. Currently, the operators of Network Requesters that make the final request at the egress part of the Nym mixnet to @@ -19,10 +19,13 @@ avoid getting a [mixed content](https://developer.mozilla.org/en-US/docs/Web/Sec 4. Workaround for Mixed Content Errors because you might be using `mixFetch` from web app served from HTTPS while connecting a gateway that only listens on a plain websocket, without HTTPS/TLS. -We are currently working on a feature that adds a Secure Websocket (WSS) listener with HTTPS (automatically generated with LetsEncrypt) to Nym's -gateways. +Read [this article](https://blog.nymtech.net/mixfetch-like-the-fetch-api-but-via-the-mixnet-82acfd435c62) to learn more about mixFetch. -While we are adding this feature, you can use a gateway that has Caddy providing HTTPS/WSS by adding this to the options when settings up `mixFetch`: + + We are currently working on a feature that adds a Secure Websocket (WSS) listener with HTTPS (automatically generated with LetsEncrypt) to Nym's + gateways. + While we are adding this feature, you can use a gateway that has Caddy providing HTTPS/WSS by adding this to the options when settings up `mixFetch`: + ```ts import type { SetupMixFetchOps } from '@nymproject/mix-fetch'; From f86cb859a7878646a676da7e88f06399930ceb22 Mon Sep 17 00:00:00 2001 From: serinko <97586125+serinko@users.noreply.github.com> Date: Wed, 4 Oct 2023 12:02:50 +0200 Subject: [PATCH 054/347] add test file --- sdk/typescript/docs/test | 1 + 1 file changed, 1 insertion(+) create mode 100644 sdk/typescript/docs/test diff --git a/sdk/typescript/docs/test b/sdk/typescript/docs/test new file mode 100644 index 0000000000..9f4c723bcd --- /dev/null +++ b/sdk/typescript/docs/test @@ -0,0 +1 @@ +t file to be deleted From 02a74aa448424381846b4f416eefffebb840aade Mon Sep 17 00:00:00 2001 From: serinko <97586125+serinko@users.noreply.github.com> Date: Wed, 4 Oct 2023 12:06:46 +0200 Subject: [PATCH 055/347] remove test file --- sdk/typescript/docs/test | 1 - 1 file changed, 1 deletion(-) delete mode 100644 sdk/typescript/docs/test diff --git a/sdk/typescript/docs/test b/sdk/typescript/docs/test deleted file mode 100644 index 9f4c723bcd..0000000000 --- a/sdk/typescript/docs/test +++ /dev/null @@ -1 +0,0 @@ -t file to be deleted From 305a374917866366efa3bfa0cd9ccc085602f2e9 Mon Sep 17 00:00:00 2001 From: Lorexia Date: Wed, 4 Oct 2023 13:11:40 +0200 Subject: [PATCH 056/347] Update integrations page --- .../docs/pages/FAQ/integrations.mdx | 25 +++++++++---------- 1 file changed, 12 insertions(+), 13 deletions(-) diff --git a/sdk/typescript/docs/pages/FAQ/integrations.mdx b/sdk/typescript/docs/pages/FAQ/integrations.mdx index 061087d6a5..c6e3918e40 100644 --- a/sdk/typescript/docs/pages/FAQ/integrations.mdx +++ b/sdk/typescript/docs/pages/FAQ/integrations.mdx @@ -9,7 +9,7 @@ If you'd like to learn more about potential integrations, please first make sure ### Integrations options If you're unsure where to start, the following set of questions should help you determine which path to follow in regards to integrations: - __1. Does your app mostly rely on the `fetch` method?__ + __1. Does your app rely on using `fetch` for its network traffic and remote connections?__ If yes, explore implementing `mixfetch`to route app traffic through the mixnet. @@ -19,10 +19,10 @@ __2. Is your app developed in TS/JS or Rust?__ If yes, you can use one of our SDKs and leverage either `mixfetch` (note that this only works for JS/TS at the moment, as we do not currently have a RUST implementation of it) or the `sdk client`to route app traffic through the mixnet. If it is developed in another language: - __3. You can use one of our Nym clients__ + __3. You can use one of our standalone Nym clients__ All Nym client packages present basically the same capabilities to the privacy application developer. They need to run as a persistent process in order to stay connected and ready to receive any incoming messages from their gateway nodes. They register and authenticate to gateways, and encrypt Sphinx packets. - You can find more information about the different clients and the ways to interact with them [in this page](https://nymtech.net/developers/integrations/mixnet-integration.html). + You can find more information about the different standalone clients and the ways to interact with them [in this page](https://nymtech.net/developers/integrations/mixnet-integration.html). ``` @@ -44,11 +44,11 @@ For integration entry points: | | | | | | yes:TS/JS yes:RUST | - | | ,----------. - ,------. ,--------. |Nym-client| - |TS SDK| |Rust SDK| |----------| - |------| |--------| | | - `------' `--------' `----------' + | | ,----------------------. + ,------. ,--------. |Nym standalone client| + |TS SDK| |Rust SDK| |----------------------| + |------| |--------| | | + `------' `--------' `----------------------' ``` @@ -68,10 +68,10 @@ Again, as detailed in the [FAQ](../FAQ/general): | | yes no | | - ,------------. ,-----------------. - |App use case| | Set Client + SP | - |------------| |-----------------| - `------------' `-----------------' + ,------------. ,----------------------------. + |App use case| | Set standalone Client + SP | + |------------| |----------------------------| + `------------' `----------------------------' | | needs needs | | @@ -86,6 +86,5 @@ Again, as detailed in the [FAQ](../FAQ/general): |-----------| |-------------| `-----------' `-------------' - ``` From cd5888636c51a936cb07966ec292b49631323fa5 Mon Sep 17 00:00:00 2001 From: Gala Date: Wed, 4 Oct 2023 16:19:41 +0200 Subject: [PATCH 057/347] divide a the wallet in operations --- .../code-examples/wallet-example-code.mdx | 35 ++++++++++++------- sdk/typescript/docs/components/wallet.tsx | 9 ++--- .../docs/pages/playground/wallet.mdx | 6 ++-- 3 files changed, 31 insertions(+), 19 deletions(-) diff --git a/sdk/typescript/docs/code-examples/wallet-example-code.mdx b/sdk/typescript/docs/code-examples/wallet-example-code.mdx index c131b74282..d7722cadd4 100644 --- a/sdk/typescript/docs/code-examples/wallet-example-code.mdx +++ b/sdk/typescript/docs/code-examples/wallet-example-code.mdx @@ -5,17 +5,14 @@ import { SigningCosmWasmClient } from '@cosmjs/cosmwasm-stargate'; import { DirectSecp256k1HdWallet } from '@cosmjs/proto-signing'; import { Coin, GasPrice } from '@cosmjs/stargate'; import Button from '@mui/material/Button'; -import Input from '@mui/material/Input'; import Paper from '@mui/material/Paper'; import Box from '@mui/material/Box'; import { TableBody, TableCell, TableHead, TableRow, TextField, Typography } from '@mui/material'; -import Divider from '@mui/material/Divider'; import Table from '@mui/material/Table'; -import LoadingButton from '@mui/lab/LoadingButton'; -import SaveIcon from '@mui/icons-material/Save'; import { settings } from './client'; const signerAccount = async (mnemonic) => { + // create a wallet to sign transactions with the mnemonic const signer = await DirectSecp256k1HdWallet.fromMnemonic(mnemonic, { prefix: 'n', }); @@ -23,9 +20,10 @@ const signerAccount = async (mnemonic) => { return signer; }; -const fetchSignerCosmosWasmClient = async (mnemonic) => { +const fetchSignerCosmosWasmClient = async (mnemonic: string) => { const signer = await signerAccount(mnemonic); + // create a signing client we don't need to set the gas price conversion for queries const cosmWasmClient = await SigningCosmWasmClient.connectWithSigner(settings.url, signer, { gasPrice: GasPrice.fromString('0.025unym'), }); @@ -36,6 +34,8 @@ const fetchSignerCosmosWasmClient = async (mnemonic) => { const fetchSignerClient = async (mnemonic) => { const signer = await signerAccount(mnemonic); + // create a signing client we don't need to set the gas price conversion for queries + // if you want to connect without signer you'd write ".connect" and "url" as param const cosmWasmClient = await SigningCosmWasmClient.connectWithSigner(settings.url, signer, { gasPrice: GasPrice.fromString('0.025unym'), }); @@ -75,6 +75,7 @@ export const Wallet = () => { const [delegationLoader, setDelegationLoader] = useState(false); const [undeledationLoader, setUndeledationLoader] = useState(false); const [withdrawLoading, setWithdrawLoading] = useState(false); + const [connectButtonText, setConnectButtonText] = useState('Connect'); const getBalance = useCallback(async () => { setBalanceLoading(true); @@ -229,11 +230,20 @@ export const Wallet = () => { } }, [signerClient, getDelegations, delegations]); + useEffect(() => { + if (accountLoading || clientLoading || balanceLoading) { + setConnectButtonText('Loading...'); + } else if (balance) { + setConnectButtonText('Connected'); + } + setConnectButtonText('Connect'); + }, [accountLoading, clientLoading, balanceLoading]); + return ( - Basic Wallet + Connect to your account Your account @@ -255,7 +265,7 @@ export const Wallet = () => { onClick={() => connect()} disabled={!mnemonic || accountLoading || clientLoading || balanceLoading} > - {accountLoading || clientLoading ? 'Loading...' : !balanceLoading ? 'Connect' : 'Connected'} + {connectButtonText} {account && balance ? ( @@ -267,11 +277,12 @@ export const Wallet = () => { ) : ( - Please, enter your nemonic to receive your account info + Please, enter your mnemonic to receive your account information )} - + + Send Tokens @@ -294,7 +305,8 @@ export const Wallet = () => { - + + Delegations @@ -380,5 +392,4 @@ export const Wallet = () => { ); }; - -``` +``` \ No newline at end of file diff --git a/sdk/typescript/docs/components/wallet.tsx b/sdk/typescript/docs/components/wallet.tsx index b2f8664bed..1691d103dd 100644 --- a/sdk/typescript/docs/components/wallet.tsx +++ b/sdk/typescript/docs/components/wallet.tsx @@ -7,7 +7,6 @@ import Button from '@mui/material/Button'; import Paper from '@mui/material/Paper'; import Box from '@mui/material/Box'; import { TableBody, TableCell, TableHead, TableRow, TextField, Typography } from '@mui/material'; -import Divider from '@mui/material/Divider'; import Table from '@mui/material/Table'; import { settings } from './client'; @@ -243,7 +242,7 @@ export const Wallet = () => { - Basic Wallet + Connect to your account Your account @@ -281,7 +280,8 @@ export const Wallet = () => { )} - + + Send Tokens @@ -304,7 +304,8 @@ export const Wallet = () => { - + + Delegations diff --git a/sdk/typescript/docs/pages/playground/wallet.mdx b/sdk/typescript/docs/pages/playground/wallet.mdx index 68af228851..7ceaa1c26d 100644 --- a/sdk/typescript/docs/pages/playground/wallet.mdx +++ b/sdk/typescript/docs/pages/playground/wallet.mdx @@ -1,11 +1,11 @@ # Wallet -import { Wallet } from '../../components/wallet' +import { Wallet } from '../../components/wallet'; import Box from '@mui/material/Box'; import FormattedWalletExampleCode from '../../code-examples/wallet-example-code.mdx'; -Here's a small wallet example for you to test out! +Here's a small wallet example for you to test out! - + \ No newline at end of file From 962d43ba3f0c541fdcf526d2fdd933bf6ba40de5 Mon Sep 17 00:00:00 2001 From: Gala Date: Wed, 4 Oct 2023 16:48:08 +0200 Subject: [PATCH 058/347] now give to each section it's own code example --- .../code-examples/wallet-connect-code.mdx | 75 ++++ .../code-examples/wallet-delegations-code.mdx | 116 +++++ .../code-examples/wallet-example-code.mdx | 395 ------------------ .../code-examples/wallet-sendTokens-code.mdx | 47 +++ sdk/typescript/docs/components/wallet.tsx | 198 ++------- .../docs/components/wallet/connect.tsx | 74 ++++ .../docs/components/wallet/delegations.tsx | 113 +++++ .../docs/components/wallet/index.ts | 3 + .../docs/components/wallet/sendTokens.tsx | 45 ++ .../docs/pages/playground/wallet.mdx | 14 +- 10 files changed, 530 insertions(+), 550 deletions(-) create mode 100644 sdk/typescript/docs/code-examples/wallet-connect-code.mdx create mode 100644 sdk/typescript/docs/code-examples/wallet-delegations-code.mdx delete mode 100644 sdk/typescript/docs/code-examples/wallet-example-code.mdx create mode 100644 sdk/typescript/docs/code-examples/wallet-sendTokens-code.mdx create mode 100644 sdk/typescript/docs/components/wallet/connect.tsx create mode 100644 sdk/typescript/docs/components/wallet/delegations.tsx create mode 100644 sdk/typescript/docs/components/wallet/index.ts create mode 100644 sdk/typescript/docs/components/wallet/sendTokens.tsx diff --git a/sdk/typescript/docs/code-examples/wallet-connect-code.mdx b/sdk/typescript/docs/code-examples/wallet-connect-code.mdx new file mode 100644 index 0000000000..fb0d786d22 --- /dev/null +++ b/sdk/typescript/docs/code-examples/wallet-connect-code.mdx @@ -0,0 +1,75 @@ +```ts copy filename="FormattedWalletConnectCode.tsx" +import React from 'react'; +import { Coin } from '@cosmjs/stargate'; +import Button from '@mui/material/Button'; +import Paper from '@mui/material/Paper'; +import Box from '@mui/material/Box'; +import Typography from '@mui/material/Typography'; +import TextField from '@mui/material/TextField'; + +export const ConnectWallet = ({ + setMnemonic, + connect, + mnemonic, + accountLoading, + clientLoading, + balanceLoading, + account, + balance, + connectButtonText, + }: { + setMnemonic: (value: string) => void; + connect: () => void; + mnemonic: string; + accountLoading: boolean; + clientLoading: boolean; + balanceLoading: boolean; + account: string; + balance: Coin; + connectButtonText: string; + }) => { + return ( + + + Connect to your account + + + Your account + + + Enter the mnemonic + + setMnemonic(e.target.value)} + fullWidth + multiline + maxRows={4} + sx={{ marginBottom: 3 }} + /> + + + {account && balance ? ( + + Address: {account} + + Balance: {balance?.amount} {balance?.denom} + + + ) : ( + + Please, enter your mnemonic to receive your account information + + )} + + + ); + }; +``` \ No newline at end of file diff --git a/sdk/typescript/docs/code-examples/wallet-delegations-code.mdx b/sdk/typescript/docs/code-examples/wallet-delegations-code.mdx new file mode 100644 index 0000000000..8d087615ff --- /dev/null +++ b/sdk/typescript/docs/code-examples/wallet-delegations-code.mdx @@ -0,0 +1,116 @@ +```ts copy filename="FormattedWalletDelegationsCode.tsx" +import React from 'react'; +import Button from '@mui/material/Button'; +import Paper from '@mui/material/Paper'; +import Box from '@mui/material/Box'; +import { TableBody, TableCell, TableHead, TableRow, TextField, Typography } from '@mui/material'; +import Table from '@mui/material/Table'; + +export const Delegations = ({ + delegations, + setDelegationNodeId, + setAmountToBeDelegated, + amountToBeDelegated, + delegationNodeId, + doDelegate, + delegationLoader, + undeledationLoader, + doUndelegateAll, + doWithdrawRewards, + withdrawLoading, +}: { + delegations: any; + setDelegationNodeId: (value: string) => void; + setAmountToBeDelegated: (value: string) => void; + amountToBeDelegated: string; + delegationNodeId: string; + doDelegate: ({ mixId, amount }: { mixId: number; amount: number }) => void; + delegationLoader: boolean; + undeledationLoader: boolean; + doUndelegateAll: () => void; + doWithdrawRewards: () => void; + withdrawLoading: boolean; +}) => { + return ( + + + Delegations + + + + Make a delegation + + setDelegationNodeId(e.target.value)} + size="small" + /> + + setAmountToBeDelegated(e.target.value)} + size="small" + /> + + + + + + Your delegations + + {!delegations?.delegations?.length ? ( + You do not have delegations + ) : ( + +
+ + + MixId + Owner + Amount + Cumulative Reward Ratio + + + + {delegations?.delegations.map((delegation: any) => ( + + {delegation.mix_id} + {delegation.owner} + {delegation.amount.amount} + {delegation.cumulative_reward_ratio} + + ))} + +
+ + )} + + {delegations && ( + + + + )} + + + + + + + ); +}; + +``` \ No newline at end of file diff --git a/sdk/typescript/docs/code-examples/wallet-example-code.mdx b/sdk/typescript/docs/code-examples/wallet-example-code.mdx deleted file mode 100644 index d7722cadd4..0000000000 --- a/sdk/typescript/docs/code-examples/wallet-example-code.mdx +++ /dev/null @@ -1,395 +0,0 @@ -```ts copy filename="WalletSigningClientExample.tsx" -import React, { useCallback, useEffect, useState } from 'react'; -import { contracts } from '@nymproject/contract-clients'; -import { SigningCosmWasmClient } from '@cosmjs/cosmwasm-stargate'; -import { DirectSecp256k1HdWallet } from '@cosmjs/proto-signing'; -import { Coin, GasPrice } from '@cosmjs/stargate'; -import Button from '@mui/material/Button'; -import Paper from '@mui/material/Paper'; -import Box from '@mui/material/Box'; -import { TableBody, TableCell, TableHead, TableRow, TextField, Typography } from '@mui/material'; -import Table from '@mui/material/Table'; -import { settings } from './client'; - -const signerAccount = async (mnemonic) => { - // create a wallet to sign transactions with the mnemonic - const signer = await DirectSecp256k1HdWallet.fromMnemonic(mnemonic, { - prefix: 'n', - }); - - return signer; -}; - -const fetchSignerCosmosWasmClient = async (mnemonic: string) => { - const signer = await signerAccount(mnemonic); - - // create a signing client we don't need to set the gas price conversion for queries - const cosmWasmClient = await SigningCosmWasmClient.connectWithSigner(settings.url, signer, { - gasPrice: GasPrice.fromString('0.025unym'), - }); - - return cosmWasmClient; -}; - -const fetchSignerClient = async (mnemonic) => { - const signer = await signerAccount(mnemonic); - - // create a signing client we don't need to set the gas price conversion for queries - // if you want to connect without signer you'd write ".connect" and "url" as param - const cosmWasmClient = await SigningCosmWasmClient.connectWithSigner(settings.url, signer, { - gasPrice: GasPrice.fromString('0.025unym'), - }); - - /** create a mixnet contract client - * @param cosmWasmClient the client to use for signing and querying - * @param settings.address the bech32 address prefix (human readable part) - * @param settings.mixnetContractAddress the bech32 address prefix (human readable part) - * @returns the client in MixnetClient form - */ - - const mixnetClient = new contracts.Mixnet.MixnetClient( - cosmWasmClient, - settings.address, // sender (that account of the signer) - settings.mixnetContractAddress, // contract address (different on mainnet, QA, etc) - ); - - return mixnetClient; -}; - -export const Wallet = () => { - const [mnemonic, setMnemonic] = useState(); - const [signerCosmosWasmClient, setSignerCosmosWasmClient] = useState(); - const [signerClient, setSignerClient] = useState(); - const [account, setAccount] = useState(); - const [accountLoading, setAccountLoading] = useState(false); - const [clientLoading, setClientLoading] = useState(false); - const [balance, setBalance] = useState(); - const [balanceLoading, setBalanceLoading] = useState(false); - const [log, setLog] = useState([]); - const [tokensToSend, setTokensToSend] = useState(); - const [sendingTokensLoader, setSendingTokensLoader] = useState(false); - const [delegations, setDelegations] = useState(); - const [recipientAddress, setRecipientAddress] = useState(''); - const [delegationNodeId, setDelegationNodeId] = useState(); - const [amountToBeDelegated, setAmountToBeDelegated] = useState(); - const [delegationLoader, setDelegationLoader] = useState(false); - const [undeledationLoader, setUndeledationLoader] = useState(false); - const [withdrawLoading, setWithdrawLoading] = useState(false); - const [connectButtonText, setConnectButtonText] = useState('Connect'); - - const getBalance = useCallback(async () => { - setBalanceLoading(true); - try { - const newBalance = await signerCosmosWasmClient?.getBalance(account, 'unym'); - setBalance(newBalance); - } catch (error) { - console.error(error); - } - setBalanceLoading(false); - }, [account, signerCosmosWasmClient]); - - const getSignerAccount = async () => { - setAccountLoading(true); - try { - const signer = await signerAccount(mnemonic); - const accounts = await signer.getAccounts(); - if (accounts[0]) { - setAccount(accounts[0].address); - } - } catch (error) { - console.error(error); - } - setAccountLoading(false); - }; - - const getClients = async () => { - setClientLoading(true); - try { - setSignerCosmosWasmClient(await fetchSignerCosmosWasmClient(mnemonic)); - setSignerClient(await fetchSignerClient(mnemonic)); - } catch (error) { - console.error(error); - } - setClientLoading(false); - }; - - const getDelegations = useCallback(async () => { - const newDelegations = await signerClient.getDelegatorDelegations({ - delegator: settings.address, - }); - setDelegations(newDelegations); - }, [signerClient]); - - const connect = () => { - getSignerAccount(); - getClients(); - }; - - const doUndelegateAll = async () => { - if (!signerClient) { - return; - } - setUndeledationLoader(true); - try { - // eslint-disable-next-line no-restricted-syntax - for (const delegation of delegations.delegations) { - // eslint-disable-next-line no-await-in-loop - await signerClient.undelegateFromMixnode({ mixId: delegation.mix_id }, 'auto'); - } - } catch (error) { - console.error(error); - } - setUndeledationLoader(false); - }; - - const doDelegate = async ({ mixId, amount }: { mixId: number; amount: number }) => { - if (!signerClient) { - return; - } - setDelegationLoader(true); - try { - const res = await signerClient.delegateToMixnode({ mixId }, 'auto', undefined, [ - { amount: `${amount}`, denom: 'unym' }, - ]); - console.log('res', res); - setLog((prev) => [ - ...prev, -
- {new Date().toLocaleTimeString()} -
{JSON.stringify(res, null, 2)}
-
, - ]); - } catch (error) { - console.error(error); - } - setDelegationLoader(false); - }; - // End delegate - - // Sending tokens - const doSendTokens = async () => { - const memo = 'test sending tokens'; - setSendingTokensLoader(true); - try { - const res = await signerCosmosWasmClient.sendTokens( - account, - recipientAddress, - [{ amount: tokensToSend, denom: 'unym' }], - 'auto', - memo, - ); - setLog((prev) => [ - ...prev, -
- {new Date().toLocaleTimeString()} -
{JSON.stringify(res, null, 2)}
-
, - ]); - } catch (error) { - console.error(error); - } - setSendingTokensLoader(false); - }; - // End send tokens - - // Withdraw Rewards - const doWithdrawRewards = async () => { - const delegatorAddress = ''; - const validatorAdress = ''; - const memo = 'test sending tokens'; - setWithdrawLoading(true); - try { - const res = await signerCosmosWasmClient.withdrawRewards(delegatorAddress, validatorAdress, 'auto', memo); - setLog((prev) => [ - ...prev, -
- {new Date().toLocaleTimeString()} -
{JSON.stringify(res, null, 2)}
-
, - ]); - } catch (error) { - console.error(error); - } - setWithdrawLoading(false); - }; - - useEffect(() => { - if (account && signerCosmosWasmClient) { - if (!balance) { - setBalanceLoading(true); - getBalance(); - setBalanceLoading(false); - } - } - }, [account, signerCosmosWasmClient, balance, getBalance]); - - useEffect(() => { - if (signerClient && !delegations) { - console.log('getDelegations'); - getDelegations(); - } - }, [signerClient, getDelegations, delegations]); - - useEffect(() => { - if (accountLoading || clientLoading || balanceLoading) { - setConnectButtonText('Loading...'); - } else if (balance) { - setConnectButtonText('Connected'); - } - setConnectButtonText('Connect'); - }, [accountLoading, clientLoading, balanceLoading]); - - return ( - - - - Connect to your account - - - Your account - - - Enter the mnemonic - - setMnemonic(e.target.value)} - fullWidth - multiline - maxRows={4} - sx={{ marginBottom: 3 }} - /> - - - {account && balance ? ( - - Address: {account} - - Balance: {balance?.amount} {balance?.denom} - - - ) : ( - - Please, enter your mnemonic to receive your account information - - )} - - - - - Send Tokens - - setRecipientAddress(e.target.value)} - size="small" - /> - - setTokensToSend(e.target.value)} - size="small" - /> - - - - - - - - Delegations - - - - Make a delegation - - setDelegationNodeId(e.target.value)} - size="small" - /> - - setAmountToBeDelegated(e.target.value)} - size="small" - /> - - - - - - Your delegations - - {!delegations?.delegations?.length ? ( - You do not have delegations - ) : ( - - - - - MixId - Owner - Amount - Cumulative Reward Ratio - - - - {delegations?.delegations.map((delegation: any) => ( - - {delegation.mix_id} - {delegation.owner} - {delegation.amount.amount} - {delegation.cumulative_reward_ratio} - - ))} - -
-
- )} -
- {delegations && ( - - - - )} - - - -
-
-
- - - Transaction Logs: - {log} - -
- ); -}; -``` \ No newline at end of file diff --git a/sdk/typescript/docs/code-examples/wallet-sendTokens-code.mdx b/sdk/typescript/docs/code-examples/wallet-sendTokens-code.mdx new file mode 100644 index 0000000000..44a36c05de --- /dev/null +++ b/sdk/typescript/docs/code-examples/wallet-sendTokens-code.mdx @@ -0,0 +1,47 @@ +```ts copy filename="FormattedWalletSendTokensCode.tsx" +import React from 'react'; +import Button from '@mui/material/Button'; +import Paper from '@mui/material/Paper'; +import Box from '@mui/material/Box'; +import Typography from '@mui/material/Typography'; +import TextField from '@mui/material/TextField'; + +export const SendTokes = ({ + setRecipientAddress, + setTokensToSend, + doSendTokens, + sendingTokensLoader, +}: { + setRecipientAddress: (value: string) => void; + setTokensToSend: (value: string) => void; + doSendTokens: () => void; + sendingTokensLoader: boolean; +}) => { + return ( + + + Send Tokens + + setRecipientAddress(e.target.value)} + size="small" + /> + + setTokensToSend(e.target.value)} + size="small" + /> + + + + + + ); +}; +``` \ No newline at end of file diff --git a/sdk/typescript/docs/components/wallet.tsx b/sdk/typescript/docs/components/wallet.tsx index 1691d103dd..4c654d4662 100644 --- a/sdk/typescript/docs/components/wallet.tsx +++ b/sdk/typescript/docs/components/wallet.tsx @@ -3,12 +3,12 @@ import { contracts } from '@nymproject/contract-clients'; import { SigningCosmWasmClient } from '@cosmjs/cosmwasm-stargate'; import { DirectSecp256k1HdWallet } from '@cosmjs/proto-signing'; import { Coin, GasPrice } from '@cosmjs/stargate'; -import Button from '@mui/material/Button'; -import Paper from '@mui/material/Paper'; import Box from '@mui/material/Box'; -import { TableBody, TableCell, TableHead, TableRow, TextField, Typography } from '@mui/material'; -import Table from '@mui/material/Table'; +import Typography from '@mui/material/Typography'; import { settings } from './client'; +import { ConnectWallet } from './wallet/connect'; +import { SendTokes } from './wallet/sendTokens'; +import { Delegations } from './wallet/delegations'; const signerAccount = async (mnemonic) => { // create a wallet to sign transactions with the mnemonic @@ -55,7 +55,7 @@ const fetchSignerClient = async (mnemonic) => { return mixnetClient; }; -export const Wallet = () => { +export const Wallet = ({ type }: { type: 'connect' | 'sendTokens' | 'delegations' }) => { const [mnemonic, setMnemonic] = useState(); const [signerCosmosWasmClient, setSignerCosmosWasmClient] = useState(); const [signerClient, setSignerClient] = useState(); @@ -240,154 +240,48 @@ export const Wallet = () => { return ( - - - Connect to your account - - - Your account - - - Enter the mnemonic - - setMnemonic(e.target.value)} - fullWidth - multiline - maxRows={4} - sx={{ marginBottom: 3 }} - /> - - - {account && balance ? ( - - Address: {account} - - Balance: {balance?.amount} {balance?.denom} - - - ) : ( - - Please, enter your mnemonic to receive your account information - - )} + {type === 'connect' && ( + + )} + {type === 'sendTokens' && ( + + )} + {type === 'delegations' && ( + + )} + {log.length > 0 && ( + + Transaction Logs: + {log} - - - - Send Tokens - - setRecipientAddress(e.target.value)} - size="small" - /> - - setTokensToSend(e.target.value)} - size="small" - /> - - - - - - - - Delegations - - - - Make a delegation - - setDelegationNodeId(e.target.value)} - size="small" - /> - - setAmountToBeDelegated(e.target.value)} - size="small" - /> - - - - - - Your delegations - - {!delegations?.delegations?.length ? ( - You do not have delegations - ) : ( - - - - - MixId - Owner - Amount - Cumulative Reward Ratio - - - - {delegations?.delegations.map((delegation: any) => ( - - {delegation.mix_id} - {delegation.owner} - {delegation.amount.amount} - {delegation.cumulative_reward_ratio} - - ))} - -
-
- )} -
- {delegations && ( - - - - )} - - - -
-
-
- - - Transaction Logs: - {log} - + )}
); }; diff --git a/sdk/typescript/docs/components/wallet/connect.tsx b/sdk/typescript/docs/components/wallet/connect.tsx new file mode 100644 index 0000000000..c15f148884 --- /dev/null +++ b/sdk/typescript/docs/components/wallet/connect.tsx @@ -0,0 +1,74 @@ +import React from 'react'; +import { Coin } from '@cosmjs/stargate'; +import Button from '@mui/material/Button'; +import Paper from '@mui/material/Paper'; +import Box from '@mui/material/Box'; +import Typography from '@mui/material/Typography'; +import TextField from '@mui/material/TextField'; + +export const ConnectWallet = ({ + setMnemonic, + connect, + mnemonic, + accountLoading, + clientLoading, + balanceLoading, + account, + balance, + connectButtonText, + }: { + setMnemonic: (value: string) => void; + connect: () => void; + mnemonic: string; + accountLoading: boolean; + clientLoading: boolean; + balanceLoading: boolean; + account: string; + balance: Coin; + connectButtonText: string; + }) => { + return ( + + + Connect to your account + + + Your account + + + Enter the mnemonic + + setMnemonic(e.target.value)} + fullWidth + multiline + maxRows={4} + sx={{ marginBottom: 3 }} + /> + + + {account && balance ? ( + + Address: {account} + + Balance: {balance?.amount} {balance?.denom} + + + ) : ( + + Please, enter your mnemonic to receive your account information + + )} + + + ); + }; + \ No newline at end of file diff --git a/sdk/typescript/docs/components/wallet/delegations.tsx b/sdk/typescript/docs/components/wallet/delegations.tsx new file mode 100644 index 0000000000..03d32d8edd --- /dev/null +++ b/sdk/typescript/docs/components/wallet/delegations.tsx @@ -0,0 +1,113 @@ +import React from 'react'; +import Button from '@mui/material/Button'; +import Paper from '@mui/material/Paper'; +import Box from '@mui/material/Box'; +import { TableBody, TableCell, TableHead, TableRow, TextField, Typography } from '@mui/material'; +import Table from '@mui/material/Table'; + +export const Delegations = ({ + delegations, + setDelegationNodeId, + setAmountToBeDelegated, + amountToBeDelegated, + delegationNodeId, + doDelegate, + delegationLoader, + undeledationLoader, + doUndelegateAll, + doWithdrawRewards, + withdrawLoading, +}: { + delegations: any; + setDelegationNodeId: (value: string) => void; + setAmountToBeDelegated: (value: string) => void; + amountToBeDelegated: string; + delegationNodeId: string; + doDelegate: ({ mixId, amount }: { mixId: number; amount: number }) => void; + delegationLoader: boolean; + undeledationLoader: boolean; + doUndelegateAll: () => void; + doWithdrawRewards: () => void; + withdrawLoading: boolean; +}) => { + return ( + + + Delegations + + + + Make a delegation + + setDelegationNodeId(e.target.value)} + size="small" + /> + + setAmountToBeDelegated(e.target.value)} + size="small" + /> + + + + + + Your delegations + + {!delegations?.delegations?.length ? ( + You do not have delegations + ) : ( + + + + + MixId + Owner + Amount + Cumulative Reward Ratio + + + + {delegations?.delegations.map((delegation: any) => ( + + {delegation.mix_id} + {delegation.owner} + {delegation.amount.amount} + {delegation.cumulative_reward_ratio} + + ))} + +
+
+ )} +
+ {delegations && ( + + + + )} + + + +
+
+
+ ); +}; diff --git a/sdk/typescript/docs/components/wallet/index.ts b/sdk/typescript/docs/components/wallet/index.ts new file mode 100644 index 0000000000..89ecc6b6ee --- /dev/null +++ b/sdk/typescript/docs/components/wallet/index.ts @@ -0,0 +1,3 @@ +export { ConnectWallet } from './connect'; +export { SendTokes } from './sendTokens'; +export { Delegations } from './delegations'; \ No newline at end of file diff --git a/sdk/typescript/docs/components/wallet/sendTokens.tsx b/sdk/typescript/docs/components/wallet/sendTokens.tsx new file mode 100644 index 0000000000..452fe5e4e0 --- /dev/null +++ b/sdk/typescript/docs/components/wallet/sendTokens.tsx @@ -0,0 +1,45 @@ +import React from 'react'; +import Button from '@mui/material/Button'; +import Paper from '@mui/material/Paper'; +import Box from '@mui/material/Box'; +import Typography from '@mui/material/Typography'; +import TextField from '@mui/material/TextField'; + +export const SendTokes = ({ + setRecipientAddress, + setTokensToSend, + doSendTokens, + sendingTokensLoader, +}: { + setRecipientAddress: (value: string) => void; + setTokensToSend: (value: string) => void; + doSendTokens: () => void; + sendingTokensLoader: boolean; +}) => { + return ( + + + Send Tokens + + setRecipientAddress(e.target.value)} + size="small" + /> + + setTokensToSend(e.target.value)} + size="small" + /> + + + + + + ); +}; \ No newline at end of file diff --git a/sdk/typescript/docs/pages/playground/wallet.mdx b/sdk/typescript/docs/pages/playground/wallet.mdx index 7ceaa1c26d..c5bc5c634e 100644 --- a/sdk/typescript/docs/pages/playground/wallet.mdx +++ b/sdk/typescript/docs/pages/playground/wallet.mdx @@ -2,10 +2,18 @@ import { Wallet } from '../../components/wallet'; import Box from '@mui/material/Box'; -import FormattedWalletExampleCode from '../../code-examples/wallet-example-code.mdx'; +import FormattedWalletConnectCode from '../../code-examples/wallet-connect-code.mdx'; +import FormattedWalletSendTokensCode from '../../code-examples/wallet-sendTokens-code.mdx'; +import FormattedWalletDelegationsCode from '../../code-examples/wallet-delegations-code.mdx'; Here's a small wallet example for you to test out! - - \ No newline at end of file + + + + + + + + \ No newline at end of file From 938e5ba19ca2ca8fa1a4d1e75e9bcbb07c55157e Mon Sep 17 00:00:00 2001 From: Gala Date: Wed, 4 Oct 2023 17:46:00 +0200 Subject: [PATCH 059/347] refactor --- .../code-examples/wallet-connect-code.mdx | 188 ++++++++++++------ .../code-examples/wallet-delegations-code.mdx | 93 ++++++++- .../code-examples/wallet-sendTokens-code.mdx | 35 +++- sdk/typescript/docs/components/wallet.tsx | 18 +- .../docs/components/wallet/delegations.tsx | 17 +- .../docs/components/wallet/sendTokens.tsx | 10 +- 6 files changed, 254 insertions(+), 107 deletions(-) diff --git a/sdk/typescript/docs/code-examples/wallet-connect-code.mdx b/sdk/typescript/docs/code-examples/wallet-connect-code.mdx index fb0d786d22..060e7a5106 100644 --- a/sdk/typescript/docs/code-examples/wallet-connect-code.mdx +++ b/sdk/typescript/docs/code-examples/wallet-connect-code.mdx @@ -1,5 +1,5 @@ ```ts copy filename="FormattedWalletConnectCode.tsx" -import React from 'react'; +import React from 'react'; import { Coin } from '@cosmjs/stargate'; import Button from '@mui/material/Button'; import Paper from '@mui/material/Paper'; @@ -7,69 +7,127 @@ import Box from '@mui/material/Box'; import Typography from '@mui/material/Typography'; import TextField from '@mui/material/TextField'; +// Connect method on Parent Component +const getSignerAccount = async () => { + setAccountLoading(true); + try { + const signer = await signerAccount(mnemonic); + const accounts = await signer.getAccounts(); + if (accounts[0]) { + setAccount(accounts[0].address); + } + } catch (error) { + console.error(error); + } + setAccountLoading(false); +}; + +// Get Balance on Parent Component +const getBalance = useCallback(async () => { + setBalanceLoading(true); + try { + const newBalance = await signerCosmosWasmClient?.getBalance(account, 'unym'); + setBalance(newBalance); + } catch (error) { + console.error(error); + } + setBalanceLoading(false); +}, [account, signerCosmosWasmClient]); + +const getClients = async () => { + setClientLoading(true); + try { + setSignerCosmosWasmClient(await fetchSignerCosmosWasmClient(mnemonic)); + setSignerClient(await fetchSignerClient(mnemonic)); + } catch (error) { + console.error(error); + } + setClientLoading(false); +}; + +const connect = () => { + getSignerAccount(); + getClients(); +}; + +// Get Signner Account on Parent Component +const getSignerAccount = async () => { + setAccountLoading(true); + try { + const signer = await signerAccount(mnemonic); + const accounts = await signer.getAccounts(); + if (accounts[0]) { + setAccount(accounts[0].address); + } + } catch (error) { + console.error(error); + } + setAccountLoading(false); +}; + export const ConnectWallet = ({ - setMnemonic, - connect, - mnemonic, - accountLoading, - clientLoading, - balanceLoading, - account, - balance, - connectButtonText, - }: { - setMnemonic: (value: string) => void; - connect: () => void; - mnemonic: string; - accountLoading: boolean; - clientLoading: boolean; - balanceLoading: boolean; - account: string; - balance: Coin; - connectButtonText: string; - }) => { - return ( - - - Connect to your account - - - Your account - - - Enter the mnemonic - - setMnemonic(e.target.value)} - fullWidth - multiline - maxRows={4} - sx={{ marginBottom: 3 }} - /> - - - {account && balance ? ( - - Address: {account} - - Balance: {balance?.amount} {balance?.denom} - - - ) : ( - - Please, enter your mnemonic to receive your account information - - )} + setMnemonic, + connect, + mnemonic, + accountLoading, + clientLoading, + balanceLoading, + account, + balance, + connectButtonText, +}: { + setMnemonic: (value: string) => void; + connect: () => void; + mnemonic: string; + accountLoading: boolean; + clientLoading: boolean; + balanceLoading: boolean; + account: string; + balance: Coin; + connectButtonText: string; +}) => { + return ( + + + Connect to your account + + + Your account + + + Enter the mnemonic + + setMnemonic(e.target.value)} + fullWidth + multiline + maxRows={4} + sx={{ marginBottom: 3 }} + /> + - - ); - }; -``` \ No newline at end of file + {account && balance ? ( + + Address: {account} + + Balance: {balance?.amount} {balance?.denom} + + + ) : ( + + Please, enter your mnemonic to receive your account information + + )} + + + ); +}; +``` diff --git a/sdk/typescript/docs/code-examples/wallet-delegations-code.mdx b/sdk/typescript/docs/code-examples/wallet-delegations-code.mdx index 8d087615ff..d70b5f1b79 100644 --- a/sdk/typescript/docs/code-examples/wallet-delegations-code.mdx +++ b/sdk/typescript/docs/code-examples/wallet-delegations-code.mdx @@ -6,31 +6,104 @@ import Box from '@mui/material/Box'; import { TableBody, TableCell, TableHead, TableRow, TextField, Typography } from '@mui/material'; import Table from '@mui/material/Table'; +// Get Delegations on parent component + const getDelegations = useCallback(async () => { + const newDelegations = await signerClient.getDelegatorDelegations({ + delegator: settings.address, + }); + setDelegations(newDelegations); + }, [signerClient]); + +// Make a Delegation on parent component + const doDelegate = async ({ mixId, amount }: { mixId: number; amount: number }) => { + if (!signerClient) { + return; + } + setDelegationLoader(true); + try { + const res = await signerClient.delegateToMixnode({ mixId }, 'auto', undefined, [ + { amount: `${amount}`, denom: 'unym' }, + ]); + console.log('res', res); + setLog((prev) => [ + ...prev, +
+ {new Date().toLocaleTimeString()} +
{JSON.stringify(res, null, 2)}
+
, + ]); + } catch (error) { + console.error(error); + } + setDelegationLoader(false); + }; + + // Undelegate All on Parent Component + const doUndelegateAll = async () => { + if (!signerClient) { + return; + } + setUndeledationLoader(true); + try { + // eslint-disable-next-line no-restricted-syntax + for (const delegation of delegations.delegations) { + // eslint-disable-next-line no-await-in-loop + await signerClient.undelegateFromMixnode({ mixId: delegation.mix_id }, 'auto'); + } + } catch (error) { + console.error(error); + } + setUndeledationLoader(false); + }; + + // Withdraw Rewards on Parent Component + const doWithdrawRewards = async () => { + const delegatorAddress = ''; + const validatorAdress = ''; + const memo = 'test sending tokens'; + setWithdrawLoading(true); + try { + const res = await signerCosmosWasmClient.withdrawRewards(delegatorAddress, validatorAdress, 'auto', memo); + setLog((prev) => [ + ...prev, +
+ {new Date().toLocaleTimeString()} +
{JSON.stringify(res, null, 2)}
+
, + ]); + } catch (error) { + console.error(error); + } + setWithdrawLoading(false); + }; + +import React, { useState } from 'react'; +import Button from '@mui/material/Button'; +import Paper from '@mui/material/Paper'; +import Box from '@mui/material/Box'; +import { TableBody, TableCell, TableHead, TableRow, TextField, Typography } from '@mui/material'; +import Table from '@mui/material/Table'; + export const Delegations = ({ delegations, - setDelegationNodeId, - setAmountToBeDelegated, - amountToBeDelegated, - delegationNodeId, doDelegate, delegationLoader, - undeledationLoader, doUndelegateAll, + undeledationLoader, doWithdrawRewards, withdrawLoading, }: { delegations: any; - setDelegationNodeId: (value: string) => void; - setAmountToBeDelegated: (value: string) => void; - amountToBeDelegated: string; - delegationNodeId: string; doDelegate: ({ mixId, amount }: { mixId: number; amount: number }) => void; delegationLoader: boolean; - undeledationLoader: boolean; doUndelegateAll: () => void; + undeledationLoader: boolean; doWithdrawRewards: () => void; withdrawLoading: boolean; }) => { + const [delegationNodeId, setDelegationNodeId] = useState(); + const [amountToBeDelegated, setAmountToBeDelegated] = useState(); + return ( diff --git a/sdk/typescript/docs/code-examples/wallet-sendTokens-code.mdx b/sdk/typescript/docs/code-examples/wallet-sendTokens-code.mdx index 44a36c05de..1b142ed936 100644 --- a/sdk/typescript/docs/code-examples/wallet-sendTokens-code.mdx +++ b/sdk/typescript/docs/code-examples/wallet-sendTokens-code.mdx @@ -1,22 +1,47 @@ ```ts copy filename="FormattedWalletSendTokensCode.tsx" -import React from 'react'; +import React, { useState } from 'react'; import Button from '@mui/material/Button'; import Paper from '@mui/material/Paper'; import Box from '@mui/material/Box'; import Typography from '@mui/material/Typography'; import TextField from '@mui/material/TextField'; +// Send tokens on Parent component + const doSendTokens = async (amount: string) => { + const memo = 'test sending tokens'; + setSendingTokensLoader(true); + try { + const res = await signerCosmosWasmClient.sendTokens( + account, + recipientAddress, + [{ amount, denom: 'unym' }], + 'auto', + memo, + ); + setLog((prev) => [ + ...prev, +
+ {new Date().toLocaleTimeString()} +
{JSON.stringify(res, null, 2)}
+
, + ]); + } catch (error) { + console.error(error); + } + setSendingTokensLoader(false); + }; + export const SendTokes = ({ setRecipientAddress, - setTokensToSend, doSendTokens, sendingTokensLoader, }: { setRecipientAddress: (value: string) => void; - setTokensToSend: (value: string) => void; - doSendTokens: () => void; + doSendTokens: (amount: string) => void; sendingTokensLoader: boolean; }) => { + const [tokensToSend, setTokensToSend] = useState(); + return ( @@ -35,7 +60,7 @@ export const SendTokes = ({ onChange={(e) => setTokensToSend(e.target.value)} size="small" /> - diff --git a/sdk/typescript/docs/components/wallet.tsx b/sdk/typescript/docs/components/wallet.tsx index 4c654d4662..3b8be9b787 100644 --- a/sdk/typescript/docs/components/wallet.tsx +++ b/sdk/typescript/docs/components/wallet.tsx @@ -65,12 +65,9 @@ export const Wallet = ({ type }: { type: 'connect' | 'sendTokens' | 'delegations const [balance, setBalance] = useState(); const [balanceLoading, setBalanceLoading] = useState(false); const [log, setLog] = useState([]); - const [tokensToSend, setTokensToSend] = useState(); const [sendingTokensLoader, setSendingTokensLoader] = useState(false); const [delegations, setDelegations] = useState(); const [recipientAddress, setRecipientAddress] = useState(''); - const [delegationNodeId, setDelegationNodeId] = useState(); - const [amountToBeDelegated, setAmountToBeDelegated] = useState(); const [delegationLoader, setDelegationLoader] = useState(false); const [undeledationLoader, setUndeledationLoader] = useState(false); const [withdrawLoading, setWithdrawLoading] = useState(false); @@ -124,6 +121,7 @@ export const Wallet = ({ type }: { type: 'connect' | 'sendTokens' | 'delegations getClients(); }; + // Start Undelgate All const doUndelegateAll = async () => { if (!signerClient) { return; @@ -140,7 +138,9 @@ export const Wallet = ({ type }: { type: 'connect' | 'sendTokens' | 'delegations } setUndeledationLoader(false); }; + // End Undelgate All + // Start Delegate const doDelegate = async ({ mixId, amount }: { mixId: number; amount: number }) => { if (!signerClient) { return; @@ -166,14 +166,14 @@ export const Wallet = ({ type }: { type: 'connect' | 'sendTokens' | 'delegations // End delegate // Sending tokens - const doSendTokens = async () => { + const doSendTokens = async (amount: string) => { const memo = 'test sending tokens'; setSendingTokensLoader(true); try { const res = await signerCosmosWasmClient.sendTokens( account, recipientAddress, - [{ amount: tokensToSend, denom: 'unym' }], + [{ amount, denom: 'unym' }], 'auto', memo, ); @@ -191,7 +191,7 @@ export const Wallet = ({ type }: { type: 'connect' | 'sendTokens' | 'delegations }; // End send tokens - // Withdraw Rewards + // Start Withdraw Rewards const doWithdrawRewards = async () => { const delegatorAddress = ''; const validatorAdress = ''; @@ -211,6 +211,7 @@ export const Wallet = ({ type }: { type: 'connect' | 'sendTokens' | 'delegations } setWithdrawLoading(false); }; + // End Withdraw Rewards useEffect(() => { if (account && signerCosmosWasmClient) { @@ -256,7 +257,6 @@ export const Wallet = ({ type }: { type: 'connect' | 'sendTokens' | 'delegations {type === 'sendTokens' && ( @@ -264,10 +264,6 @@ export const Wallet = ({ type }: { type: 'connect' | 'sendTokens' | 'delegations {type === 'delegations' && ( void; - setAmountToBeDelegated: (value: string) => void; - amountToBeDelegated: string; - delegationNodeId: string; doDelegate: ({ mixId, amount }: { mixId: number; amount: number }) => void; delegationLoader: boolean; - undeledationLoader: boolean; doUndelegateAll: () => void; + undeledationLoader: boolean; doWithdrawRewards: () => void; withdrawLoading: boolean; }) => { + const [delegationNodeId, setDelegationNodeId] = useState(); + const [amountToBeDelegated, setAmountToBeDelegated] = useState(); + return ( diff --git a/sdk/typescript/docs/components/wallet/sendTokens.tsx b/sdk/typescript/docs/components/wallet/sendTokens.tsx index 452fe5e4e0..a1e4e421b1 100644 --- a/sdk/typescript/docs/components/wallet/sendTokens.tsx +++ b/sdk/typescript/docs/components/wallet/sendTokens.tsx @@ -1,4 +1,4 @@ -import React from 'react'; +import React, { useState } from 'react'; import Button from '@mui/material/Button'; import Paper from '@mui/material/Paper'; import Box from '@mui/material/Box'; @@ -7,15 +7,15 @@ import TextField from '@mui/material/TextField'; export const SendTokes = ({ setRecipientAddress, - setTokensToSend, doSendTokens, sendingTokensLoader, }: { setRecipientAddress: (value: string) => void; - setTokensToSend: (value: string) => void; - doSendTokens: () => void; + doSendTokens: (amount: string) => void; sendingTokensLoader: boolean; }) => { + const [tokensToSend, setTokensToSend] = useState(); + return ( @@ -34,7 +34,7 @@ export const SendTokes = ({ onChange={(e) => setTokensToSend(e.target.value)} size="small" /> - From a0ca5fcf551d5718d015947902914adb26e7ccd0 Mon Sep 17 00:00:00 2001 From: Lorexia Date: Thu, 5 Oct 2023 11:18:33 +0200 Subject: [PATCH 060/347] Add RUST info --- sdk/typescript/docs/pages/index.mdx | 2 ++ 1 file changed, 2 insertions(+) diff --git a/sdk/typescript/docs/pages/index.mdx b/sdk/typescript/docs/pages/index.mdx index 9253d04689..f48da16649 100644 --- a/sdk/typescript/docs/pages/index.mdx +++ b/sdk/typescript/docs/pages/index.mdx @@ -10,6 +10,8 @@ If you're new to the Nym ecosystem and want to better understand the mixnet, exp For a more in-depth exploration of Nym's architecture, clients, nodes, and SDK examples, please refer to the [Technical Documentation](https://nymtech.net/docs/) section. +If you'd like to build your own app or integrate pieces of the Nym infrastructure using RUST, please use our [RUST SDK documentation](https://nymtech.net/developers/tutorials/rust-sdk.html). + If you're looking for information and setup guides for the various pieces of Nym mixnet infrastructure (mix nodes, gateways, network requesters) and Nyx blockchain validators, then have a look at our [Operators Guide](https://nymtech.net/operators/introduction.html). From 42fe861fbc7bf53f2d45d2fccc59e4a841798566 Mon Sep 17 00:00:00 2001 From: Lorexia Date: Thu, 5 Oct 2023 11:24:55 +0200 Subject: [PATCH 061/347] Add testnet info to wallet --- sdk/typescript/docs/components/wallet/connect.tsx | 4 ++-- sdk/typescript/docs/pages/examples/nym-smart-contracts.mdx | 2 +- sdk/typescript/docs/pages/playground/wallet.mdx | 2 +- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/sdk/typescript/docs/components/wallet/connect.tsx b/sdk/typescript/docs/components/wallet/connect.tsx index c15f148884..ec67bf0225 100644 --- a/sdk/typescript/docs/components/wallet/connect.tsx +++ b/sdk/typescript/docs/components/wallet/connect.tsx @@ -30,10 +30,10 @@ export const ConnectWallet = ({ return ( - Connect to your account + Connect to your testnet account - Your account + Your testnet account: Enter the mnemonic diff --git a/sdk/typescript/docs/pages/examples/nym-smart-contracts.mdx b/sdk/typescript/docs/pages/examples/nym-smart-contracts.mdx index 59e0bf817b..947ae28bd5 100644 --- a/sdk/typescript/docs/pages/examples/nym-smart-contracts.mdx +++ b/sdk/typescript/docs/pages/examples/nym-smart-contracts.mdx @@ -73,7 +73,7 @@ export default function Mixnodes() { const cosmWasmClient = await SigningCosmWasmClient.connect("wss://rpc.nymtech.net:443"); const client = new contracts.Mixnet.MixnetQueryClient( cosmWasmClient, - "n17srjznxl9dvzdkpwpw24gg668wc73val88a6m5ajg6ankwvz9wtst0cznr" // the contract address (which is different on mainnet, QA, etc) + "n17srjznxl9dvzdkpwpw24gg668wc73val88a6m5ajg6ankwvz9wtst0cznr" // the mainnet mixnet contract address (which will be different on mainnet, QA, etc) ); const result = await client.getMixNodesDetailed({}); setMixnodes(result.nodes) diff --git a/sdk/typescript/docs/pages/playground/wallet.mdx b/sdk/typescript/docs/pages/playground/wallet.mdx index c5bc5c634e..7dae8bc60e 100644 --- a/sdk/typescript/docs/pages/playground/wallet.mdx +++ b/sdk/typescript/docs/pages/playground/wallet.mdx @@ -6,7 +6,7 @@ import FormattedWalletConnectCode from '../../code-examples/wallet-connect-code. import FormattedWalletSendTokensCode from '../../code-examples/wallet-sendTokens-code.mdx'; import FormattedWalletDelegationsCode from '../../code-examples/wallet-delegations-code.mdx'; -Here's a small wallet example for you to test out! +Here's a small wallet example using testnet for you to test out! From f8c3f784c85a9b3a6ef92d693a1959adc9e28d22 Mon Sep 17 00:00:00 2001 From: Lorexia Date: Thu, 5 Oct 2023 12:06:37 +0200 Subject: [PATCH 062/347] Update general FAQ --- sdk/typescript/docs/pages/FAQ/general.mdx | 29 +++++++++++++---------- 1 file changed, 17 insertions(+), 12 deletions(-) diff --git a/sdk/typescript/docs/pages/FAQ/general.mdx b/sdk/typescript/docs/pages/FAQ/general.mdx index 9bb0b970f7..6f21d3a020 100644 --- a/sdk/typescript/docs/pages/FAQ/general.mdx +++ b/sdk/typescript/docs/pages/FAQ/general.mdx @@ -3,26 +3,31 @@ #### __How can I interact with Nym?__ ##### For existing projects: -You'd like to integrate parts of the Nym stack to your existing app? Please check the dedicated [integrations page](../FAQ/integrations). +If you would like to integrate parts of the Nym stack to your existing app, please check out the dedicated [integrations page](../FAQ/integrations). ##### For builders: ###### SDKs -You'd like to build or Nymify existing solutions? If you develop in Rust or TS/JS, then our SDKs are your go-to. -Please visit the [RUST SDK documentation](https://nymtech.net/developers/tutorials/rust-sdk.html) for more RUST-related information and tutorials and go to the [TS SDK handbook](../) (you are here) for using the TypeScript SDK. -These SDKs abstract away much of the messaging and core logic from your app, and allow you to run a Nym client as part of your application process, instead of having to run them seperately. +If you’re looking to build or ‘Nymify’ existing solutions, read on: For developing in Rust or TS/JS, then the Nym SDKs are your go-to. Please visit the [RUST SDK documentation](https://nymtech.net/developers/tutorials/rust-sdk.html) for more RUST-related information and tutorials. +Stay on this page, the [TS SDK handbook](../) (you are here) for using the TypeScript SDK. +These SDKs abstract away much of the messaging and core logic from your app, and allow you to run a Nym client as part of your application process, instead of having to run them separately. In short, they simplify building Nym clients into your project. ###### Nym clients: Websocket, WebAssembly, SOCKS5 -Alternatively, you can also use one of the three Nym clients to connect your application to the mixnet. These clients do the majority of the heavy-lifting with regards to cryptographic operations and routing under the hood, and all do basically the same thing: create a connection to a gateway, encrypt and decrypt packets sent to and received from the mixnet, and send cover traffic to hide the flow of actual app traffic from observers. You can learn more about the Nym clients in this [Nym integration page](https://nymtech.net/developers/integrations/mixnet-integration.html). +Alternatively, you can also use one of the three Nym clients to connect your application to the mixnet. +These clients do the majority of the heavy-lifting with regards to cryptographic operations and routing under the hood. +Essentially, they all do the same thing: create a connection to a gateway, encrypt and decrypt packets sent to and received from the mixnet, and send cover traffic to hide the flow of actual app traffic from observers. You can learn more about the Nym clients in this [Nym integration page](https://nymtech.net/developers/integrations/mixnet-integration.html). ###### Network requesters: -Network requesters are a type of Service Provider, that in essence, act as a form of proxy (somewhat analagous to a Tor exit node). If you have access to a server, you can run the Network Requester, which allows Nym users to send outbound requests from their local machine through the mixnet to a server, which then makes the request on their behalf, shielding them (and their metadata) from clearnet, untrusted and unknown infrastructure, such as email or message client servers. +Network requesters are a type of Service Provider that essentially act as a kind of proxy, somewhat similarly to a Tor exit node. If you have access to a server, you can run a Network Requester, which will perform the following functions: +- Send outbound requests from the local machine through the mixnet to a server; +- The Network Requester then makes a request on the user’s behalf, shielding the user and their metadata from the untrusted and unknown infrastructure, for example with email or instant messaging client servers; + By default the Network Requester is not an open proxy but rather uses a local and global [allow list](https://nymtech.net/.wellknown/network-requester/standard-allowed-list.txt) to whitelist host access. #### __Which Service Provider to run?__ -In order to ensure uptime and reliability, it is recommended that you run some pieces of mixnet infrastructure. What infrastructure is necessary to run depends on the architecture of your application, and the endpoints that it needs to hit: +In order to ensure uptime and reliability, it is recommended that you run some pieces of mixnet infrastructure. This infrastructure varies depending on the architecture of your application, as well as the endpoints that it needs to hit: -- No Service Provider (Network Requester) needed: If you’re running a purely P2P application, then just integrating clients and having some method of sharing addresses should be enough to route your traffic through the mixnet. +- No Service Provider (Network Requester) needed: If you’re running a purely P2P application, then just integrating clients and having some method of sharing addresses should be enough to route your traffic through the mixnet; - Network Requester needed (existing or own): If you’re wanting to place the mixnet between your users’ application instances and a server-based backend, you will need a Network Requester. In this case, if your app supports SOCKS5, you could either use an existing NR or, if your app supports SOCKS5 but needs more extensive whitelisting, you could use the [network requester service provider binary](https://nymtech.net/operators/nodes/network-requester-setup.html) to proxy these requests to your application backend yourself, with the mixnet ‘between’ the user and your service, in order to prevent metadata leakage being broadcast to the internet. - Running your own Service Provider: If your usecase is more complex, you’re wanting to route RPC requests through the mixnet to a blockchain for example, you will need to look into setting up some sort of Service that does the transaction broadcasting for you. You can find examples of such projects on the [community applications page](https://nymtech.net/developers/community-resources/community-applications-and-guides.html). @@ -33,7 +38,7 @@ Nym apps have a stable, potentially long-lasting relation to a gateway node. A c Gateways serve a few different functions: - They act as an end-to-end encrypted message store in case your app goes offline; -- They send encrypted surb-acks for potentially offline recipients, to ensure reliable message delivery; +- They send encrypted [surb-acks](https://nymtech.net/docs/architecture/traffic-flow.html) for potentially offline recipients, to ensure reliable message delivery; - They offer a stable addressing location for apps, although the IP may change frequently; If you want to learn more about gateways, you can check the [mixnet integration page](https://nymtech.net/developers/integrations/mixnet-integration.html). @@ -42,9 +47,9 @@ If you want to learn more about gateways, you can check the [mixnet integration #### __Why and when does the mixnet client complain about insufficient topology?__ It will in one of the following cases: -- There are empty Mix layers (rare); -- The gateway you've registered with does not appear in the network topology -> it is either unbonded or got blacklisted; -- The gateway you want to send packets to does not appear in the network topology -> it is either unbonded or got blacklisted; +- There are empty mix layers - although this is rare; +- The gateway you've registered with does not appear in the network topology -> it is either unbonded or was blacklisted; +- The gateway you want to send packets to does not appear in the network topology -> it is either unbonded or was blacklisted; To avoid the last two, you need to make sure the gateway you are calling is bonded and whitelisted. From 03099493aa1bfef7262b0d5f76a690b05c866a6e Mon Sep 17 00:00:00 2001 From: Lorexia Date: Thu, 5 Oct 2023 12:10:40 +0200 Subject: [PATCH 063/347] Correct client --- sdk/typescript/docs/pages/FAQ/general.mdx | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/sdk/typescript/docs/pages/FAQ/general.mdx b/sdk/typescript/docs/pages/FAQ/general.mdx index 6f21d3a020..b0417bdb5f 100644 --- a/sdk/typescript/docs/pages/FAQ/general.mdx +++ b/sdk/typescript/docs/pages/FAQ/general.mdx @@ -11,8 +11,8 @@ If you’re looking to build or ‘Nymify’ existing solutions, read on: For de Stay on this page, the [TS SDK handbook](../) (you are here) for using the TypeScript SDK. These SDKs abstract away much of the messaging and core logic from your app, and allow you to run a Nym client as part of your application process, instead of having to run them separately. In short, they simplify building Nym clients into your project. -###### Nym clients: Websocket, WebAssembly, SOCKS5 -Alternatively, you can also use one of the three Nym clients to connect your application to the mixnet. +###### Standalone Nym clients: Websocket, WebAssembly, SOCKS5 +Alternatively, you can also use one of the three standalone Nym clients to connect your application to the mixnet. These clients do the majority of the heavy-lifting with regards to cryptographic operations and routing under the hood. Essentially, they all do the same thing: create a connection to a gateway, encrypt and decrypt packets sent to and received from the mixnet, and send cover traffic to hide the flow of actual app traffic from observers. You can learn more about the Nym clients in this [Nym integration page](https://nymtech.net/developers/integrations/mixnet-integration.html). From 627ebf4614c8454a32ad15925db47e744662c799 Mon Sep 17 00:00:00 2001 From: Lorexia Date: Thu, 5 Oct 2023 12:49:49 +0200 Subject: [PATCH 064/347] Fix mixnet example code for starting client --- sdk/typescript/docs/pages/examples/mixnet.mdx | 55 ++++++++++--------- 1 file changed, 30 insertions(+), 25 deletions(-) diff --git a/sdk/typescript/docs/pages/examples/mixnet.mdx b/sdk/typescript/docs/pages/examples/mixnet.mdx index d98c99a6a9..8c173bb412 100644 --- a/sdk/typescript/docs/pages/examples/mixnet.mdx +++ b/sdk/typescript/docs/pages/examples/mixnet.mdx @@ -46,74 +46,78 @@ By pasting the below code example, you should be able to send and receive messag ```ts +import "./App.css"; import { useEffect, useState } from "react"; import { createNymMixnetClient, NymMixnetClient, Payload, } from "@nymproject/sdk-full-fat"; - + const nymApiUrl = "https://validator.nymtech.net/api"; - + export function MixnetClient() { const [nym, setNym] = useState(); const [selfAddress, setSelfAddress] = useState(); const [recipient, setRecipient] = useState(); const [payload, setPayload] = useState(); const [receivedMessage, setReceivedMessage] = useState(); - + const init = async () => { - const nym = await createNymMixnetClient(); - setNym(nym); - + const client = await createNymMixnetClient(); + setNym(client); + // start the client and connect to a gateway - await nym?.client.start({ + await client?.client.start({ clientId: crypto.randomUUID(), nymApiUrl, }); - + // check when is connected and set the self address - nym?.events.subscribeToConnected((e) => { + client?.events.subscribeToConnected((e) => { const { address } = e.args; setSelfAddress(address); }); - + // show whether the client is ready or not - nym?.events.subscribeToLoaded((e) => { + client?.events.subscribeToLoaded((e) => { console.log("Client ready: ", e.args); }); // show message payload content when received - nym?.events.subscribeToTextMessageReceivedEvent((e) => { + client?.events.subscribeToTextMessageReceivedEvent((e) => { console.log(e.args.payload); setReceivedMessage(e.args.payload); }); }; - const send = () => { - if (!nym || !payload || !recipient) return - nym.client.send({ payload, recipient }); - } + const stop = async () => { + await nym?.client.stop(); + }; + + const send = () => nym.client.send({ payload, recipient }); + useEffect(() => { init(); return () => { - nym?.client.stop(); - } + stop(); + }; }, []); + + if (!nym) return
Waiting for the mixnet client...
; + + if (!selfAddress) return
Connecting...
; - if (!nym) return
waiting for the mixnet client...
; - - if (!selfAddress) return
connecting...
; - + return (
-

Send messages through the Mixnet

+

Send messages through the Nym mixnet

My self address is: {selfAddress ? selfAddress : "loading"}

- + setRecipient(e.target.value)} @@ -130,7 +134,7 @@ export function MixnetClient() {
); }; - + export default function App () { return ( <> @@ -138,6 +142,7 @@ export default function App () { ) } + ``` From 8961d19fb8fd2a32a249aae4fa5635a4db132da8 Mon Sep 17 00:00:00 2001 From: Lorexia Date: Thu, 5 Oct 2023 13:26:42 +0200 Subject: [PATCH 065/347] Correct typo --- sdk/typescript/docs/pages/examples/mix-fetch.mdx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sdk/typescript/docs/pages/examples/mix-fetch.mdx b/sdk/typescript/docs/pages/examples/mix-fetch.mdx index 7e08663aff..074bdb628a 100644 --- a/sdk/typescript/docs/pages/examples/mix-fetch.mdx +++ b/sdk/typescript/docs/pages/examples/mix-fetch.mdx @@ -24,7 +24,7 @@ Read [this article](https://blog.nymtech.net/mixfetch-like-the-fetch-api-but-via We are currently working on a feature that adds a Secure Websocket (WSS) listener with HTTPS (automatically generated with LetsEncrypt) to Nym's gateways. - While we are adding this feature, you can use a gateway that has Caddy providing HTTPS/WSS by adding this to the options when settings up `mixFetch`: + While we are adding this feature, you can use a gateway that has Caddy providing HTTPS/WSS by adding this to the options when setting up `mixFetch`: ```ts From 988fb174fce7a61fda6eed85e1039e19298797f1 Mon Sep 17 00:00:00 2001 From: Lorexia Date: Thu, 5 Oct 2023 15:25:40 +0200 Subject: [PATCH 066/347] Add details to mixfetch --- sdk/typescript/docs/pages/examples/mix-fetch.mdx | 9 +++++++-- sdk/typescript/docs/pages/examples/mixnet.mdx | 8 ++++---- .../docs/pages/examples/nym-smart-contracts.mdx | 8 ++++---- 3 files changed, 15 insertions(+), 10 deletions(-) diff --git a/sdk/typescript/docs/pages/examples/mix-fetch.mdx b/sdk/typescript/docs/pages/examples/mix-fetch.mdx index 074bdb628a..5a0b05b5c9 100644 --- a/sdk/typescript/docs/pages/examples/mix-fetch.mdx +++ b/sdk/typescript/docs/pages/examples/mix-fetch.mdx @@ -86,10 +86,13 @@ import { mixFetch } from "@nymproject/mix-fetch-full-fat"; ##### Example: using the `mixFetch` client: - Again, for this example, we will be using the `full-fat` version of the ESM SDK. + Again, for this example, we will be using the `full-fat` version of the ESM SDK. +`Get` and `Post` outputs will be observable from your console. + ```ts +import "./App.css"; import { mixFetch, SetupMixFetchOps } from '@nymproject/mix-fetch-full-fat'; import React from 'react'; @@ -120,7 +123,8 @@ const mixFetchOptions: SetupMixFetchOps = { export function HttpGET() { const [html, setHtml] = React.useState('') async function get () { - const response = await mixFetch('https://nymtech.net', { mode: 'unsafe-ignore-cors' }, mixFetchOptions) + //Make sure the URL is whitelisted (see 'standard allowed list') otherwise you will get a network requester filter check error + const response = await mixFetch('https://nymtech.net/favicon.svg', { mode: 'unsafe-ignore-cors' }, mixFetchOptions) const text = await response.text() console.log('response was', text) setHtml(html) @@ -135,6 +139,7 @@ export function HttpGET() { export function HttpPOST() { async function post () { + //Make sure the URL is whitelisted (see 'standard allowed list') otherwise you will get a network requester filter check error const apiResponse = await mixFetch('https://postman-echo.com/post', { method: 'POST', body: JSON.stringify({ foo: 'bar' }), diff --git a/sdk/typescript/docs/pages/examples/mixnet.mdx b/sdk/typescript/docs/pages/examples/mixnet.mdx index 8c173bb412..4c307de480 100644 --- a/sdk/typescript/docs/pages/examples/mixnet.mdx +++ b/sdk/typescript/docs/pages/examples/mixnet.mdx @@ -67,24 +67,24 @@ export function MixnetClient() { const client = await createNymMixnetClient(); setNym(client); - // start the client and connect to a gateway + // Start the client and connect to a gateway await client?.client.start({ clientId: crypto.randomUUID(), nymApiUrl, }); - // check when is connected and set the self address + // Check when is connected and set the self address client?.events.subscribeToConnected((e) => { const { address } = e.args; setSelfAddress(address); }); - // show whether the client is ready or not + // Show whether the client is ready or not client?.events.subscribeToLoaded((e) => { console.log("Client ready: ", e.args); }); - // show message payload content when received + // Show message payload content when received client?.events.subscribeToTextMessageReceivedEvent((e) => { console.log(e.args.payload); setReceivedMessage(e.args.payload); diff --git a/sdk/typescript/docs/pages/examples/nym-smart-contracts.mdx b/sdk/typescript/docs/pages/examples/nym-smart-contracts.mdx index 947ae28bd5..6d3c9e8c21 100644 --- a/sdk/typescript/docs/pages/examples/nym-smart-contracts.mdx +++ b/sdk/typescript/docs/pages/examples/nym-smart-contracts.mdx @@ -160,7 +160,7 @@ export default function Exec() { let delegations: any; async function ExecuteOnNyx() { - // cosmos client + // Cosmos client signer = await DirectSecp256k1HdWallet.fromMnemonic(settings.mnemonic, { prefix: "n", }); @@ -171,16 +171,16 @@ export default function Exec() { gasPrice: GasPrice.fromString("0.025unym"), } ); - // save globally + // Save globally cosmWasmSigningClient = cosmWasmClient; - // nym client + // Nym client const mixnetClient = new contracts.Mixnet.MixnetClient( cosmWasmSigningClient, settings.address, // sender (that account of the signer) settings.mixnetContractAddress // contract address (different on mainnet, QA, etc) ); - // save globally + // Save globally signerMixnetClient = mixnetClient; } From 88fa090e23eb68962cb6ad8e9be47dc1948605d1 Mon Sep 17 00:00:00 2001 From: Lorexia Date: Fri, 6 Oct 2023 11:57:10 +0200 Subject: [PATCH 067/347] Update notes --- sdk/typescript/docs/pages/examples/nym-smart-contracts.mdx | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/sdk/typescript/docs/pages/examples/nym-smart-contracts.mdx b/sdk/typescript/docs/pages/examples/nym-smart-contracts.mdx index 6d3c9e8c21..0c9ffb73c1 100644 --- a/sdk/typescript/docs/pages/examples/nym-smart-contracts.mdx +++ b/sdk/typescript/docs/pages/examples/nym-smart-contracts.mdx @@ -73,7 +73,7 @@ export default function Mixnodes() { const cosmWasmClient = await SigningCosmWasmClient.connect("wss://rpc.nymtech.net:443"); const client = new contracts.Mixnet.MixnetQueryClient( cosmWasmClient, - "n17srjznxl9dvzdkpwpw24gg668wc73val88a6m5ajg6ankwvz9wtst0cznr" // the mainnet mixnet contract address (which will be different on mainnet, QA, etc) + "n17srjznxl9dvzdkpwpw24gg668wc73val88a6m5ajg6ankwvz9wtst0cznr" // The mainnet mixnet contract address (which will be different on mainnet, QA, etc) ); const result = await client.getMixNodesDetailed({}); setMixnodes(result.nodes) @@ -177,8 +177,8 @@ export default function Exec() { // Nym client const mixnetClient = new contracts.Mixnet.MixnetClient( cosmWasmSigningClient, - settings.address, // sender (that account of the signer) - settings.mixnetContractAddress // contract address (different on mainnet, QA, etc) + settings.address, // Sender (that account of the signer) + settings.mixnetContractAddress // Contract address (different on mainnet, QA, etc) ); // Save globally signerMixnetClient = mixnetClient; From aec136edc8c9e194993e9239db2ffd610c163e34 Mon Sep 17 00:00:00 2001 From: Lorexia Date: Fri, 6 Oct 2023 12:33:31 +0200 Subject: [PATCH 068/347] Update CosmosKit tutorial --- sdk/typescript/docs/pages/examples/cosmos-kit.mdx | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/sdk/typescript/docs/pages/examples/cosmos-kit.mdx b/sdk/typescript/docs/pages/examples/cosmos-kit.mdx index 9db187dd89..b3e17f0c65 100644 --- a/sdk/typescript/docs/pages/examples/cosmos-kit.mdx +++ b/sdk/typescript/docs/pages/examples/cosmos-kit.mdx @@ -27,7 +27,7 @@ Install the required package: npm install @cosmos-kit/react @cosmos-kit/keplr @cosmos-kit/ledger chain-registry ``` -You need to polyfill some nodejs modules in order to use keplr and ledger wallets by modifying your vite.config.js: +You need to polyfill some nodejs modules in order to use keplr and ledger wallets by modifying your `vite.config.js` file: ```bash npm install @esbuild-plugins/node-globals-polyfill ``` @@ -57,7 +57,10 @@ export default defineConfig({ Your components have to be wrapped into a [ChainProvider](https://docs.cosmoskit.com/chain-provider), in order to use the `useChain('nyx')` hook. The nyx chain is provided in the 'chain-registry' NPM package by default. +Now, go to the `src` folder and open your `App.tsx` file to replace all the code with the following: + ```ts +import "./App.css"; import React from 'react'; import { ChainProvider, useChain } from '@cosmos-kit/react'; import { assets, chains } from 'chain-registry'; From 618d0bdd3490e9bb7e5991a62f6c8062e4930f00 Mon Sep 17 00:00:00 2001 From: Lorexia Date: Fri, 6 Oct 2023 13:12:32 +0200 Subject: [PATCH 069/347] Add disconnect to cosmoskit example --- .../docs/pages/examples/cosmos-kit.mdx | 36 +++++++++++-------- 1 file changed, 22 insertions(+), 14 deletions(-) diff --git a/sdk/typescript/docs/pages/examples/cosmos-kit.mdx b/sdk/typescript/docs/pages/examples/cosmos-kit.mdx index b3e17f0c65..63f34df7a4 100644 --- a/sdk/typescript/docs/pages/examples/cosmos-kit.mdx +++ b/sdk/typescript/docs/pages/examples/cosmos-kit.mdx @@ -68,7 +68,7 @@ import { wallets as ledger } from '@cosmos-kit/ledger'; import { wallets as keplr } from '@cosmos-kit/keplr'; import { AminoMsg, makeSignDoc } from '@cosmjs/amino'; import { MsgSend } from 'cosmjs-types/cosmos/bank/v1beta1/tx'; - + export const getDoc = (address: string) => { const chainId = 'nyx'; const msg: AminoMsg = { @@ -89,35 +89,43 @@ export const getDoc = (address: string) => { const doc = makeSignDoc([msg], fee, chainId, memo, accountNumber, sequence); return doc }; - + function MyComponent() { - const {wallet, address, connect, getOfflineSignerAmino } = + const {wallet, address, connect, disconnect, getOfflineSignerAmino } = useChain('nyx'); - + React.useEffect(() => { connect(); + disconnect(); }, []); - + const sign = async () => { if (!address) return const doc = getDoc(address); return getOfflineSignerAmino().signAmino(address, doc); }; - + return (
Connected to {wallet?.prettyName}
- { wallet &&
Address: {address}
} + {wallet &&
Address: {address}
}
- + {wallet ? ( +
+ +
+ ) : ( +
+ +
+ )}
- ); } - + export default function App() { const assetsFixedUp = React.useMemo(() => { const nyx = assets.find((a) => a.chain_name === 'nyx'); @@ -130,7 +138,7 @@ export default function App() { } return assets; }, [assets]); - + return ( c.chain_id === 'nyx')!]} @@ -140,11 +148,11 @@ export default function App() { preferredSignType: () => 'amino', }} > - + - + ) } - + ``` From 422b9a3a86fcb32c9c9d0e20bec6e9cfaee37c16 Mon Sep 17 00:00:00 2001 From: Lorexia Date: Fri, 6 Oct 2023 17:09:40 +0200 Subject: [PATCH 070/347] Add esbuild callout --- sdk/typescript/docs/pages/bundling/esbuild.mdx | 9 ++++++++- sdk/typescript/docs/pages/examples/cosmos-kit.mdx | 3 +-- sdk/typescript/docs/pages/playground/cosmos-kit.mdx | 4 ++-- 3 files changed, 11 insertions(+), 5 deletions(-) diff --git a/sdk/typescript/docs/pages/bundling/esbuild.mdx b/sdk/typescript/docs/pages/bundling/esbuild.mdx index 2732aea63f..c794cf7ce6 100644 --- a/sdk/typescript/docs/pages/bundling/esbuild.mdx +++ b/sdk/typescript/docs/pages/bundling/esbuild.mdx @@ -1,3 +1,5 @@ +import { Callout } from 'nextra/components'; + # Troubleshooting bundling with ESbuild If you've been following the steps outlined in the Examples section, your development environment should be configured as follows: @@ -22,4 +24,9 @@ Install the required package: npm install @nymproject/< PACKAGE_NAME > ``` -By implementing the provided code for the various components in the step-by-step examples section, you should be able to set-up and run your application without encountering any bundling challenges! \ No newline at end of file + + Remember that the CosmosKit example will require you to make use of polyfills. + + +By implementing the provided code for the various components in the step-by-step examples section, you should be able to set-up and run your application without encountering any bundling challenges! + diff --git a/sdk/typescript/docs/pages/examples/cosmos-kit.mdx b/sdk/typescript/docs/pages/examples/cosmos-kit.mdx index 63f34df7a4..a143a148cf 100644 --- a/sdk/typescript/docs/pages/examples/cosmos-kit.mdx +++ b/sdk/typescript/docs/pages/examples/cosmos-kit.mdx @@ -57,7 +57,7 @@ export default defineConfig({ Your components have to be wrapped into a [ChainProvider](https://docs.cosmoskit.com/chain-provider), in order to use the `useChain('nyx')` hook. The nyx chain is provided in the 'chain-registry' NPM package by default. -Now, go to the `src` folder and open your `App.tsx` file to replace all the code with the following: +Now, go to the `src` folder and open your `App.tsx` file to replace all the code with the following, which will allow you to connect and disconnect a Ledger or Keplr wallet to Nyx: ```ts import "./App.css"; @@ -154,5 +154,4 @@ export default function App() { ) } - ``` diff --git a/sdk/typescript/docs/pages/playground/cosmos-kit.mdx b/sdk/typescript/docs/pages/playground/cosmos-kit.mdx index 9d0044d321..ca200c6f65 100644 --- a/sdk/typescript/docs/pages/playground/cosmos-kit.mdx +++ b/sdk/typescript/docs/pages/playground/cosmos-kit.mdx @@ -5,12 +5,12 @@ import FormattedCosmoskitExampleCode from '../../code-examples/cosmoskit-example # Cosmos Kit -Below is an example that uses [CosmosKit](https://cosmoskit.com/) to connect your [Keplr wallet](https://www.keplr.app/) or +Below is an example that uses [CosmosKit](https://cosmoskit.com/) to connect and sign a fake transaction with your [Keplr wallet](https://www.keplr.app/) or [Ledger hardware wallet](https://www.ledger.com/) to this page: -Once you connect either Keplr or your hardware Ledger, you can request a fake transaction to be signed. The hash +Once you connect either Keplr or your hardware Ledger, you can request the fake transaction to be signed. The hash of the message will be displayed. From 6619aed3b70876bdc524f6308c475cdb6103b2a3 Mon Sep 17 00:00:00 2001 From: Lorexia Date: Fri, 6 Oct 2023 17:45:30 +0200 Subject: [PATCH 071/347] Update mixfetch for webpack --- sdk/typescript/docs/pages/examples/mixnet.mdx | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/sdk/typescript/docs/pages/examples/mixnet.mdx b/sdk/typescript/docs/pages/examples/mixnet.mdx index 4c307de480..d0717a9b84 100644 --- a/sdk/typescript/docs/pages/examples/mixnet.mdx +++ b/sdk/typescript/docs/pages/examples/mixnet.mdx @@ -96,7 +96,10 @@ export function MixnetClient() { await nym?.client.stop(); }; - const send = () => nym.client.send({ payload, recipient }); + const send = () => { + if (!nym || !payload || !recipient) return + nym.client.send({ payload, recipient }); + } useEffect(() => { init(); @@ -142,7 +145,8 @@ export default function App () { ) } - ``` - + + If you experience a Gateway client error and a hard refresh isn't enough, you may need to open your console, go to `Application` and delete the databases under "IndexedDB". + From f3dfbeb2b720a461d7d947d17e100329f06a5c07 Mon Sep 17 00:00:00 2001 From: Lorexia Date: Fri, 6 Oct 2023 20:07:59 +0200 Subject: [PATCH 072/347] Update examples --- .../docs/pages/bundling/webpack.mdx | 19 +++++++++++++++---- .../docs/pages/examples/cosmos-kit.mdx | 11 ++++++----- 2 files changed, 21 insertions(+), 9 deletions(-) diff --git a/sdk/typescript/docs/pages/bundling/webpack.mdx b/sdk/typescript/docs/pages/bundling/webpack.mdx index d52815f95f..12878675e9 100644 --- a/sdk/typescript/docs/pages/bundling/webpack.mdx +++ b/sdk/typescript/docs/pages/bundling/webpack.mdx @@ -1,9 +1,10 @@ +import { Callout } from 'nextra/components'; # Troubleshooting bundling with Webpack ## Webpack > 5 ESM -You´ll need the following rule in your `webpack.config.js` above version 5: +For any project using Webpack, you´ll need the following rule in your `webpack.config.js` above version 5: ```json { test: /\.(m?js)$/, @@ -15,20 +16,30 @@ You´ll need the following rule in your `webpack.config.js` above version 5: ### Create-react-app -Create-react-app doesn´t allow you access to the Webpack config without ejecting, which you override as follows: +#### General cases + +If you wish to use Webpack for your app with the code provided in the step-by-step examples section, you'll need to: ```bash npx create-react-app nymapp --template typescript cd nymapp ``` +You'll then need to install the needed dependencies, head to your app's `App.tsx` file and paste the code provided in the step-by-step section. -#### Install contract-clients dependencies +#### Contract client + + Using webpack, the `Contract client` for querying or executing might need polyfills. As create-react-app doesn´t allow you access to the Webpack config without ejecting, you'll overwrite it as follow: + + +##### Install contract-clients dependencies ```bash npm install @nymproject/contract-clients @cosmjs/cosmwasm-stargate @cosmjs/proto-signing ``` -#### Polyfilling +Head to you app's `App.tsx` file and replace the code by the one provided in the step-by-step examples section. + +##### Polyfilling Copy the following to your terminal and run: diff --git a/sdk/typescript/docs/pages/examples/cosmos-kit.mdx b/sdk/typescript/docs/pages/examples/cosmos-kit.mdx index a143a148cf..c25403aa7f 100644 --- a/sdk/typescript/docs/pages/examples/cosmos-kit.mdx +++ b/sdk/typescript/docs/pages/examples/cosmos-kit.mdx @@ -106,12 +106,13 @@ function MyComponent() { }; return ( -
+
- Connected to {wallet?.prettyName} -
-
- {wallet &&
Address: {address}
} + {wallet && +
+
Connected to {wallet?.prettyName}
+
Address: {address}
+
}
{wallet ? (
From 4adf922b3fd0480e13cebcd445a253d00a66a936 Mon Sep 17 00:00:00 2001 From: Gala Date: Thu, 5 Oct 2023 19:11:10 +0200 Subject: [PATCH 073/347] adding a react context... imposible to avoid it at the end : ( --- .../docs/components/context/wallet.tsx | 171 +++++++++++ sdk/typescript/docs/components/wallet.tsx | 286 ++---------------- .../docs/components/wallet/connect.tsx | 127 ++++---- .../docs/components/wallet/delegations.tsx | 266 ++++++++++------ .../docs/components/wallet/sendTokens.tsx | 101 +++++-- 5 files changed, 501 insertions(+), 450 deletions(-) create mode 100644 sdk/typescript/docs/components/context/wallet.tsx diff --git a/sdk/typescript/docs/components/context/wallet.tsx b/sdk/typescript/docs/components/context/wallet.tsx new file mode 100644 index 0000000000..0e63f70905 --- /dev/null +++ b/sdk/typescript/docs/components/context/wallet.tsx @@ -0,0 +1,171 @@ +import * as React from 'react'; +import { contracts } from '@nymproject/contract-clients'; +import { SigningCosmWasmClient } from '@cosmjs/cosmwasm-stargate'; +import { DirectSecp256k1HdWallet } from '@cosmjs/proto-signing'; +import { Coin, GasPrice } from '@cosmjs/stargate'; +import { settings } from '../client'; + +const signerAccount = async (mnemonic: string) => { + // create a wallet to sign transactions with the mnemonic + const signer = await DirectSecp256k1HdWallet.fromMnemonic(mnemonic, { + prefix: 'n', + }); + + return signer; +}; + +const fetchSignerCosmosWasmClient = async (mnemonic: string) => { + const signer = await signerAccount(mnemonic); + + // create a signing client we don't need to set the gas price conversion for queries + const cosmWasmClient = await SigningCosmWasmClient.connectWithSigner(settings.url, signer, { + gasPrice: GasPrice.fromString('0.025unym'), + }); + + return cosmWasmClient; +}; + +const fetchSignerClient = async (mnemonic) => { + const signer = await signerAccount(mnemonic); + + // create a signing client we don't need to set the gas price conversion for queries + // if you want to connect without signer you'd write ".connect" and "url" as param + const cosmWasmClient = await SigningCosmWasmClient.connectWithSigner(settings.url, signer, { + gasPrice: GasPrice.fromString('0.025unym'), + }); + + /** create a mixnet contract client + * @param cosmWasmClient the client to use for signing and querying + * @param settings.address the bech32 address prefix (human readable part) + * @param settings.mixnetContractAddress the bech32 address prefix (human readable part) + * @returns the client in MixnetClient form + */ + + const mixnetClient = new contracts.Mixnet.MixnetClient( + cosmWasmClient, + settings.address, // sender (that account of the signer) + settings.mixnetContractAddress, // contract address (different on mainnet, QA, etc) + ); + + return mixnetClient; +}; + +interface ApiState { + isLoading: boolean; + data?: RESPONSE; + error?: Error; +} + +/** + * This context provides the state for wallet. + */ + +interface WalletState { + cosmWasmSigner?: { getAccounts: () => void }; + cosmWasmSignerClient?: { getBalance: (account: string, denom: string) => Coin }; + nymWasmSignerClient?: ApiState; + accountLoading: boolean; + account: string; + clientsAreLoading: boolean; + setConnectWithMnemonic?: (value: string) => void; + balance?: Coin; + balanceLoading: boolean; +} + +export const WalletContext = React.createContext({ + accountLoading: false, + account: '', + clientsAreLoading: false, + balanceLoading: false, +}); + +export const useWalletContext = (): React.ContextType => + React.useContext(WalletContext); + +export const WalletContextProvider = ({ children }: { children: JSX.Element }) => { + // wallet mnemonic + const [connectWithMnemonic, setConnectWithMnemonic] = React.useState(); + const [accountLoading, setAccountLoading] = React.useState(false); + const [account, setAccount] = React.useState(); + const [clientsAreLoading, setClientsAreLoading] = React.useState(false); + const [cosmWasmSignerClient, setCosmWasmSignerClient] = React.useState(); + const [nymWasmSignerClient, setNymWasmSignerClient] = React.useState(); + const [balance, setBalance] = React.useState(); + const [balanceLoading, setBalanceLoading] = React.useState(false); + + const getSignerAccount = async () => { + console.log('getSignerAccount'); + setAccountLoading(true); + try { + const signer = await signerAccount(connectWithMnemonic); + const accounts = await signer.getAccounts(); + if (accounts[0]) { + setAccount(accounts[0].address); + } + } catch (error) { + console.error(error); + } + setAccountLoading(false); + }; + const getClients = async () => { + setClientsAreLoading(true); + try { + setCosmWasmSignerClient(await fetchSignerCosmosWasmClient(connectWithMnemonic)); + setNymWasmSignerClient(await fetchSignerClient(connectWithMnemonic)); + } catch (error) { + console.error(error); + } + setClientsAreLoading(false); + }; + + const getBalance = React.useCallback(async () => { + setBalanceLoading(true); + try { + const newBalance = await cosmWasmSignerClient?.getBalance(account, 'unym'); + setBalance(newBalance); + } catch (error) { + console.error(error); + } + setBalanceLoading(false); + }, [account, cosmWasmSignerClient]); + + React.useEffect(() => { + if (connectWithMnemonic) { + // when the mnemonic changes, remove all previous data + Promise.all([getSignerAccount(), getClients()]); + } + }, [connectWithMnemonic]); + + React.useEffect(() => { + if (account && cosmWasmSignerClient) { + if (!balance) { + getBalance(); + } + } + }, [account, cosmWasmSignerClient, balance, getBalance]); + + const state = React.useMemo( + () => ({ + accountLoading, + account, + clientsAreLoading, + cosmWasmSignerClient, + nymWasmSignerClient, + setConnectWithMnemonic, + balance, + balanceLoading, + }), + [ + accountLoading, + account, + clientsAreLoading, + cosmWasmSignerClient, + nymWasmSignerClient, + setConnectWithMnemonic, + balance, + balanceLoading, + ], + ); + + return {children}; +}; diff --git a/sdk/typescript/docs/components/wallet.tsx b/sdk/typescript/docs/components/wallet.tsx index 3b8be9b787..4ec2d7cb09 100644 --- a/sdk/typescript/docs/components/wallet.tsx +++ b/sdk/typescript/docs/components/wallet.tsx @@ -1,283 +1,45 @@ -import React, { useCallback, useEffect, useState } from 'react'; -import { contracts } from '@nymproject/contract-clients'; -import { SigningCosmWasmClient } from '@cosmjs/cosmwasm-stargate'; -import { DirectSecp256k1HdWallet } from '@cosmjs/proto-signing'; -import { Coin, GasPrice } from '@cosmjs/stargate'; +import React, { useCallback, useEffect, useState, createContext } from 'react'; import Box from '@mui/material/Box'; import Typography from '@mui/material/Typography'; import { settings } from './client'; import { ConnectWallet } from './wallet/connect'; import { SendTokes } from './wallet/sendTokens'; import { Delegations } from './wallet/delegations'; +import { WalletContextProvider } from './context/wallet'; -const signerAccount = async (mnemonic) => { - // create a wallet to sign transactions with the mnemonic - const signer = await DirectSecp256k1HdWallet.fromMnemonic(mnemonic, { - prefix: 'n', - }); - - return signer; -}; - -const fetchSignerCosmosWasmClient = async (mnemonic: string) => { - const signer = await signerAccount(mnemonic); - - // create a signing client we don't need to set the gas price conversion for queries - const cosmWasmClient = await SigningCosmWasmClient.connectWithSigner(settings.url, signer, { - gasPrice: GasPrice.fromString('0.025unym'), - }); - - return cosmWasmClient; -}; - -const fetchSignerClient = async (mnemonic) => { - const signer = await signerAccount(mnemonic); - - // create a signing client we don't need to set the gas price conversion for queries - // if you want to connect without signer you'd write ".connect" and "url" as param - const cosmWasmClient = await SigningCosmWasmClient.connectWithSigner(settings.url, signer, { - gasPrice: GasPrice.fromString('0.025unym'), - }); - - /** create a mixnet contract client - * @param cosmWasmClient the client to use for signing and querying - * @param settings.address the bech32 address prefix (human readable part) - * @param settings.mixnetContractAddress the bech32 address prefix (human readable part) - * @returns the client in MixnetClient form - */ - - const mixnetClient = new contracts.Mixnet.MixnetClient( - cosmWasmClient, - settings.address, // sender (that account of the signer) - settings.mixnetContractAddress, // contract address (different on mainnet, QA, etc) - ); - - return mixnetClient; -}; export const Wallet = ({ type }: { type: 'connect' | 'sendTokens' | 'delegations' }) => { - const [mnemonic, setMnemonic] = useState(); const [signerCosmosWasmClient, setSignerCosmosWasmClient] = useState(); const [signerClient, setSignerClient] = useState(); const [account, setAccount] = useState(); - const [accountLoading, setAccountLoading] = useState(false); - const [clientLoading, setClientLoading] = useState(false); - const [balance, setBalance] = useState(); - const [balanceLoading, setBalanceLoading] = useState(false); - const [log, setLog] = useState([]); - const [sendingTokensLoader, setSendingTokensLoader] = useState(false); - const [delegations, setDelegations] = useState(); - const [recipientAddress, setRecipientAddress] = useState(''); - const [delegationLoader, setDelegationLoader] = useState(false); - const [undeledationLoader, setUndeledationLoader] = useState(false); - const [withdrawLoading, setWithdrawLoading] = useState(false); - const [connectButtonText, setConnectButtonText] = useState('Connect'); - - const getBalance = useCallback(async () => { - setBalanceLoading(true); - try { - const newBalance = await signerCosmosWasmClient?.getBalance(account, 'unym'); - setBalance(newBalance); - } catch (error) { - console.error(error); - } - setBalanceLoading(false); - }, [account, signerCosmosWasmClient]); - - const getSignerAccount = async () => { - setAccountLoading(true); - try { - const signer = await signerAccount(mnemonic); - const accounts = await signer.getAccounts(); - if (accounts[0]) { - setAccount(accounts[0].address); - } - } catch (error) { - console.error(error); - } - setAccountLoading(false); - }; - - const getClients = async () => { - setClientLoading(true); - try { - setSignerCosmosWasmClient(await fetchSignerCosmosWasmClient(mnemonic)); - setSignerClient(await fetchSignerClient(mnemonic)); - } catch (error) { - console.error(error); - } - setClientLoading(false); - }; - - const getDelegations = useCallback(async () => { - const newDelegations = await signerClient.getDelegatorDelegations({ - delegator: settings.address, - }); - setDelegations(newDelegations); - }, [signerClient]); - - const connect = () => { - getSignerAccount(); - getClients(); - }; - - // Start Undelgate All - const doUndelegateAll = async () => { - if (!signerClient) { - return; - } - setUndeledationLoader(true); - try { - // eslint-disable-next-line no-restricted-syntax - for (const delegation of delegations.delegations) { - // eslint-disable-next-line no-await-in-loop - await signerClient.undelegateFromMixnode({ mixId: delegation.mix_id }, 'auto'); - } - } catch (error) { - console.error(error); - } - setUndeledationLoader(false); - }; - // End Undelgate All - - // Start Delegate - const doDelegate = async ({ mixId, amount }: { mixId: number; amount: number }) => { - if (!signerClient) { - return; - } - setDelegationLoader(true); - try { - const res = await signerClient.delegateToMixnode({ mixId }, 'auto', undefined, [ - { amount: `${amount}`, denom: 'unym' }, - ]); - console.log('res', res); - setLog((prev) => [ - ...prev, -
- {new Date().toLocaleTimeString()} -
{JSON.stringify(res, null, 2)}
-
, - ]); - } catch (error) { - console.error(error); - } - setDelegationLoader(false); - }; - // End delegate - - // Sending tokens - const doSendTokens = async (amount: string) => { - const memo = 'test sending tokens'; - setSendingTokensLoader(true); - try { - const res = await signerCosmosWasmClient.sendTokens( - account, - recipientAddress, - [{ amount, denom: 'unym' }], - 'auto', - memo, - ); - setLog((prev) => [ - ...prev, -
- {new Date().toLocaleTimeString()} -
{JSON.stringify(res, null, 2)}
-
, - ]); - } catch (error) { - console.error(error); - } - setSendingTokensLoader(false); - }; - // End send tokens - - // Start Withdraw Rewards - const doWithdrawRewards = async () => { - const delegatorAddress = ''; - const validatorAdress = ''; - const memo = 'test sending tokens'; - setWithdrawLoading(true); - try { - const res = await signerCosmosWasmClient.withdrawRewards(delegatorAddress, validatorAdress, 'auto', memo); - setLog((prev) => [ - ...prev, -
- {new Date().toLocaleTimeString()} -
{JSON.stringify(res, null, 2)}
-
, - ]); - } catch (error) { - console.error(error); - } - setWithdrawLoading(false); - }; - // End Withdraw Rewards - - useEffect(() => { - if (account && signerCosmosWasmClient) { - if (!balance) { - setBalanceLoading(true); - getBalance(); - setBalanceLoading(false); - } - } - }, [account, signerCosmosWasmClient, balance, getBalance]); - - useEffect(() => { - if (signerClient && !delegations) { - console.log('getDelegations'); - getDelegations(); - } - }, [signerClient, getDelegations, delegations]); - - useEffect(() => { - if (accountLoading || clientLoading || balanceLoading) { - setConnectButtonText('Loading...'); - } else if (balance) { - setConnectButtonText('Connected'); - } - setConnectButtonText('Connect'); - }, [accountLoading, clientLoading, balanceLoading]); - return ( - - {type === 'connect' && ( - - )} - {type === 'sendTokens' && ( - + + + {type === 'connect' && ( + + )} + {/* {type === 'sendTokens' && ( + + + )} {type === 'delegations' && ( - - )} - {log.length > 0 && ( + + + + )} */} + {/* {log.length > 0 && ( Transaction Logs: {log} - )} - + )} */} + + ); }; diff --git a/sdk/typescript/docs/components/wallet/connect.tsx b/sdk/typescript/docs/components/wallet/connect.tsx index ec67bf0225..bfbc5d60c3 100644 --- a/sdk/typescript/docs/components/wallet/connect.tsx +++ b/sdk/typescript/docs/components/wallet/connect.tsx @@ -1,74 +1,69 @@ -import React from 'react'; +import React, { useState, useEffect, useCallback } from 'react'; import { Coin } from '@cosmjs/stargate'; import Button from '@mui/material/Button'; import Paper from '@mui/material/Paper'; import Box from '@mui/material/Box'; import Typography from '@mui/material/Typography'; import TextField from '@mui/material/TextField'; +import { useWalletContext } from '../context/wallet'; -export const ConnectWallet = ({ - setMnemonic, - connect, - mnemonic, - accountLoading, - clientLoading, - balanceLoading, - account, - balance, - connectButtonText, - }: { - setMnemonic: (value: string) => void; - connect: () => void; - mnemonic: string; - accountLoading: boolean; - clientLoading: boolean; - balanceLoading: boolean; - account: string; - balance: Coin; - connectButtonText: string; - }) => { - return ( - - - Connect to your testnet account - - - Your testnet account: - - - Enter the mnemonic - - setMnemonic(e.target.value)} - fullWidth - multiline - maxRows={4} - sx={{ marginBottom: 3 }} - /> - - - {account && balance ? ( - - Address: {account} - - Balance: {balance?.amount} {balance?.denom} - - - ) : ( - - Please, enter your mnemonic to receive your account information - - )} +export const ConnectWallet = () => { + const { balance, balanceLoading, accountLoading, setConnectWithMnemonic, account, clientsAreLoading } = + useWalletContext(); + + const [mnemonic, setMnemonic] = useState(); + const [connectButtonText, setConnectButtonText] = useState('Connect'); + + useEffect(() => { + if (accountLoading || clientsAreLoading || balanceLoading) { + setConnectButtonText('Loading...'); + } else if (balance) { + setConnectButtonText('Connected'); + } + setConnectButtonText('Connect'); + }, [accountLoading, clientsAreLoading, balanceLoading]); + + return ( + + + Connect to your testnet account + + + Your testnet account: + + + Enter the mnemonic + + setMnemonic(e.target.value)} + fullWidth + multiline + maxRows={4} + sx={{ marginBottom: 3 }} + /> + - - ); - }; - \ No newline at end of file + {account && balance ? ( + + Address: {account} + + Balance: {balance?.amount} {balance?.denom} + + + ) : ( + + Please, enter your mnemonic to receive your account information + + )} + + + ); +}; diff --git a/sdk/typescript/docs/components/wallet/delegations.tsx b/sdk/typescript/docs/components/wallet/delegations.tsx index d0198a32cd..fd22b03b80 100644 --- a/sdk/typescript/docs/components/wallet/delegations.tsx +++ b/sdk/typescript/docs/components/wallet/delegations.tsx @@ -5,104 +5,178 @@ import Box from '@mui/material/Box'; import { TableBody, TableCell, TableHead, TableRow, TextField, Typography } from '@mui/material'; import Table from '@mui/material/Table'; -export const Delegations = ({ - delegations, - doDelegate, - delegationLoader, - doUndelegateAll, - undeledationLoader, - doWithdrawRewards, - withdrawLoading, -}: { - delegations: any; - doDelegate: ({ mixId, amount }: { mixId: number; amount: number }) => void; - delegationLoader: boolean; - doUndelegateAll: () => void; - undeledationLoader: boolean; - doWithdrawRewards: () => void; - withdrawLoading: boolean; -}) => { +export const Delegations = () => { const [delegationNodeId, setDelegationNodeId] = useState(); const [amountToBeDelegated, setAmountToBeDelegated] = useState(); + const [log, setLog] = useState([]); + const [delegations, setDelegations] = useState(); + const [delegationLoader, setDelegationLoader] = useState(false); + const [undeledationLoader, setUndeledationLoader] = useState(false); + const [withdrawLoading, setWithdrawLoading] = useState(false); + + + + // const getDelegations = useCallback(async () => { + // const newDelegations = await signerClient.getDelegatorDelegations({ + // delegator: settings.address, + // }); + // setDelegations(newDelegations); + // }, [signerClient]); + + // // Start Undelgate All + // const doUndelegateAll = async () => { + // if (!signerClient) { + // return; + // } + // setUndeledationLoader(true); + // try { + // // eslint-disable-next-line no-restricted-syntax + // for (const delegation of delegations.delegations) { + // // eslint-disable-next-line no-await-in-loop + // await signerClient.undelegateFromMixnode({ mixId: delegation.mix_id }, 'auto'); + // } + // } catch (error) { + // console.error(error); + // } + // setUndeledationLoader(false); + // }; + // // End Undelgate All + + // // Start Delegate + // const doDelegate = async ({ mixId, amount }: { mixId: number; amount: number }) => { + // if (!signerClient) { + // return; + // } + // setDelegationLoader(true); + // try { + // const res = await signerClient.delegateToMixnode({ mixId }, 'auto', undefined, [ + // { amount: `${amount}`, denom: 'unym' }, + // ]); + // console.log('res', res); + // setLog((prev) => [ + // ...prev, + //
+ // {new Date().toLocaleTimeString()} + //
{JSON.stringify(res, null, 2)}
+ //
, + // ]); + // } catch (error) { + // console.error(error); + // } + // setDelegationLoader(false); + // }; + // // End delegate + + // // Start Withdraw Rewards + // const doWithdrawRewards = async () => { + // const delegatorAddress = ''; + // const validatorAdress = ''; + // const memo = 'test sending tokens'; + // setWithdrawLoading(true); + // try { + // const res = await signerCosmosWasmClient.withdrawRewards(delegatorAddress, validatorAdress, 'auto', memo); + // setLog((prev) => [ + // ...prev, + //
+ // {new Date().toLocaleTimeString()} + //
{JSON.stringify(res, null, 2)}
+ //
, + // ]); + // } catch (error) { + // console.error(error); + // } + // setWithdrawLoading(false); + // }; + // // End Withdraw Rewards + + // useEffect(() => { + // if (signerClient && !delegations) { + // getDelegations(); + // } + // }, [signerClient, getDelegations, delegations]); + + // return ( + // + // + // Delegations + // + // + // + // Make a delegation + // + // setDelegationNodeId(e.target.value)} + // size="small" + // /> + // + // setAmountToBeDelegated(e.target.value)} + // size="small" + // /> + // + // + // + // + // + // Your delegations + // + // {!delegations?.delegations?.length ? ( + // You do not have delegations + // ) : ( + // + // + // + // + // MixId + // Owner + // Amount + // Cumulative Reward Ratio + // + // + // + // {delegations?.delegations.map((delegation: any) => ( + // + // {delegation.mix_id} + // {delegation.owner} + // {delegation.amount.amount} + // {delegation.cumulative_reward_ratio} + // + // ))} + // + //
+ //
+ // )} + //
+ // {delegations && ( + // + // + // + // )} + // + // + // + //
+ //
+ //
+ // ); return ( - - - Delegations - - - - Make a delegation - - setDelegationNodeId(e.target.value)} - size="small" - /> - - setAmountToBeDelegated(e.target.value)} - size="small" - /> - - - - - - Your delegations - - {!delegations?.delegations?.length ? ( - You do not have delegations - ) : ( - - - - - MixId - Owner - Amount - Cumulative Reward Ratio - - - - {delegations?.delegations.map((delegation: any) => ( - - {delegation.mix_id} - {delegation.owner} - {delegation.amount.amount} - {delegation.cumulative_reward_ratio} - - ))} - -
-
- )} -
- {delegations && ( - - - - )} - - - -
-
-
- ); + Hello + ) }; diff --git a/sdk/typescript/docs/components/wallet/sendTokens.tsx b/sdk/typescript/docs/components/wallet/sendTokens.tsx index a1e4e421b1..6316f91480 100644 --- a/sdk/typescript/docs/components/wallet/sendTokens.tsx +++ b/sdk/typescript/docs/components/wallet/sendTokens.tsx @@ -1,45 +1,94 @@ -import React, { useState } from 'react'; +import React, { useState, useEffect } from 'react'; import Button from '@mui/material/Button'; import Paper from '@mui/material/Paper'; import Box from '@mui/material/Box'; import Typography from '@mui/material/Typography'; import TextField from '@mui/material/TextField'; +import { useWalletContext } from '../context/wallet'; export const SendTokes = ({ - setRecipientAddress, - doSendTokens, - sendingTokensLoader, + // setRecipientAddress, + // signerCosmosWasmClient, + // account, + // recipientAddress, }: { - setRecipientAddress: (value: string) => void; - doSendTokens: (amount: string) => void; - sendingTokensLoader: boolean; + // setRecipientAddress: (value: string) => void; + // signerCosmosWasmClient: any; + // account: string; + // recipientAddress: string; }) => { + const { cosmWasmSigner, cosmWasmSignerClient, nymWasmSignerClient, setConnectWithMnemonic } = useWalletContext(); + const [recipientAddress, setRecipientAddress] = useState(''); const [tokensToSend, setTokensToSend] = useState(); + const [sendingTokensLoader, setSendingTokensLoader] = useState(false); + const [log, setLog] = useState([]); + + // Sending tokens + // const doSendTokens = async () => { + // const memo = 'test sending tokens'; + // setSendingTokensLoader(true); + // try { + // console.log('signerCosmosWasmClient', signerCosmosWasmClient); + // const res = await signerCosmosWasmClient.sendTokens( + // account, + // recipientAddress, + // [{ amount: tokensToSend, denom: 'unym' }], + // 'auto', + // memo, + // ); + // setLog((prev) => [ + // ...prev, + //
+ // {new Date().toLocaleTimeString()} + //
{JSON.stringify(res, null, 2)}
+ //
, + // ]); + // } catch (error) { + // console.error(error); + // } + // setSendingTokensLoader(false); + // }; + // End send tokens + + // console.log('signerCosmosWasmClient', signerCosmosWasmClient); + + // useEffect(() => { + // console.log('signerCosmosWasmClient', signerCosmosWasmClient, 'account', account); + // }, [signerCosmosWasmClient, account]); return ( - - - Send Tokens - - setRecipientAddress(e.target.value)} - size="small" - /> - + + + + Send Tokens + setTokensToSend(e.target.value)} + placeholder="Recipient Address" + onChange={(e) => setRecipientAddress(e.target.value)} size="small" /> - + + setTokensToSend(e.target.value)} + size="small" + /> + {/* */} + - - + + + {log.length > 0 && ( + + Transaction Logs: + {log} + + )} + ); -}; \ No newline at end of file +}; From 0baaa2f847b15161a16bea3a3eaf8fdc985839df Mon Sep 17 00:00:00 2001 From: Gala Date: Thu, 5 Oct 2023 19:30:31 +0200 Subject: [PATCH 074/347] wip --- .../docs/components/context/wallet.tsx | 64 ++++++++++++++++++- sdk/typescript/docs/components/wallet.tsx | 38 +++-------- .../docs/components/wallet/connect.tsx | 3 +- .../docs/components/wallet/sendTokens.tsx | 57 ++--------------- 4 files changed, 78 insertions(+), 84 deletions(-) diff --git a/sdk/typescript/docs/components/context/wallet.tsx b/sdk/typescript/docs/components/context/wallet.tsx index 0e63f70905..c7421ca466 100644 --- a/sdk/typescript/docs/components/context/wallet.tsx +++ b/sdk/typescript/docs/components/context/wallet.tsx @@ -62,7 +62,10 @@ interface ApiState { interface WalletState { cosmWasmSigner?: { getAccounts: () => void }; - cosmWasmSignerClient?: { getBalance: (account: string, denom: string) => Coin }; + cosmWasmSignerClient?: { + getBalance: (account: string, denom: string) => Coin; + sendTokens: (account: string, recipientAddress: string, amount: [Coin], type: 'auto', memo: string) => void; + }; nymWasmSignerClient?: ApiState; accountLoading: boolean; account: string; @@ -70,6 +73,11 @@ interface WalletState { setConnectWithMnemonic?: (value: string) => void; balance?: Coin; balanceLoading: boolean; + setRecipientAddress?: (value: string) => void; + setTokensToSend?: (value: string) => void; + sendingTokensLoading: boolean; + log: React.ReactNode[]; + doSendTokens?: () => void; } export const WalletContext = React.createContext({ @@ -77,6 +85,8 @@ export const WalletContext = React.createContext({ account: '', clientsAreLoading: false, balanceLoading: false, + sendingTokensLoading: false, + log: [], }); export const useWalletContext = (): React.ContextType => @@ -92,9 +102,12 @@ export const WalletContextProvider = ({ children }: { children: JSX.Element }) = const [nymWasmSignerClient, setNymWasmSignerClient] = React.useState(); const [balance, setBalance] = React.useState(); const [balanceLoading, setBalanceLoading] = React.useState(false); + const [recipientAddress, setRecipientAddress] = React.useState(''); + const [tokensToSend, setTokensToSend] = React.useState(); + const [sendingTokensLoading, setSendingTokensLoading] = React.useState(false); + const [log, setLog] = React.useState([]); const getSignerAccount = async () => { - console.log('getSignerAccount'); setAccountLoading(true); try { const signer = await signerAccount(connectWithMnemonic); @@ -110,6 +123,7 @@ export const WalletContextProvider = ({ children }: { children: JSX.Element }) = const getClients = async () => { setClientsAreLoading(true); try { + console.log('setCosmWasmSignerClient'); setCosmWasmSignerClient(await fetchSignerCosmosWasmClient(connectWithMnemonic)); setNymWasmSignerClient(await fetchSignerClient(connectWithMnemonic)); } catch (error) { @@ -129,6 +143,33 @@ export const WalletContextProvider = ({ children }: { children: JSX.Element }) = setBalanceLoading(false); }, [account, cosmWasmSignerClient]); + // Sending tokens + const doSendTokens = React.useCallback(async () => { + const memo = 'test sending tokens'; + setSendingTokensLoading(true); + try { + console.log('cosmWasmSignerClient', cosmWasmSignerClient, account, recipientAddress); + const res = await cosmWasmSignerClient.sendTokens( + account, + recipientAddress, + [{ amount: tokensToSend, denom: 'unym' }], + 'auto', + memo, + ); + setLog((prev) => [ + ...prev, +
+ {new Date().toLocaleTimeString()} +
{JSON.stringify(res, null, 2)}
+
, + ]); + } catch (error) { + console.error(error); + } + setSendingTokensLoading(false); + }, [account, cosmWasmSignerClient]); + // End send tokens + React.useEffect(() => { if (connectWithMnemonic) { // when the mnemonic changes, remove all previous data @@ -136,6 +177,15 @@ export const WalletContextProvider = ({ children }: { children: JSX.Element }) = } }, [connectWithMnemonic]); + React.useEffect(() => { + console.log('cosmWasmSignerClient', cosmWasmSignerClient); + }, [cosmWasmSignerClient]); + + React.useEffect(() => { +console.log('tokensToSend', tokensToSend); + + },[tokensToSend]) + React.useEffect(() => { if (account && cosmWasmSignerClient) { if (!balance) { @@ -154,6 +204,11 @@ export const WalletContextProvider = ({ children }: { children: JSX.Element }) = setConnectWithMnemonic, balance, balanceLoading, + setRecipientAddress, + setTokensToSend, + sendingTokensLoading, + log, + doSendTokens, }), [ accountLoading, @@ -164,6 +219,11 @@ export const WalletContextProvider = ({ children }: { children: JSX.Element }) = setConnectWithMnemonic, balance, balanceLoading, + setRecipientAddress, + setTokensToSend, + sendingTokensLoading, + log, + doSendTokens, ], ); diff --git a/sdk/typescript/docs/components/wallet.tsx b/sdk/typescript/docs/components/wallet.tsx index 4ec2d7cb09..88b509de77 100644 --- a/sdk/typescript/docs/components/wallet.tsx +++ b/sdk/typescript/docs/components/wallet.tsx @@ -1,45 +1,27 @@ import React, { useCallback, useEffect, useState, createContext } from 'react'; import Box from '@mui/material/Box'; import Typography from '@mui/material/Typography'; -import { settings } from './client'; import { ConnectWallet } from './wallet/connect'; import { SendTokes } from './wallet/sendTokens'; import { Delegations } from './wallet/delegations'; import { WalletContextProvider } from './context/wallet'; - -export const Wallet = ({ type }: { type: 'connect' | 'sendTokens' | 'delegations' }) => { - const [signerCosmosWasmClient, setSignerCosmosWasmClient] = useState(); - const [signerClient, setSignerClient] = useState(); - const [account, setAccount] = useState(); - return ( - - - {type === 'connect' && ( - - )} - {/* {type === 'sendTokens' && ( - - - - )} - {type === 'delegations' && ( +export const Wallet = ({ type }: { type: 'connect' | 'sendTokens' | 'delegations' }) => ( + + + {type === 'connect' && } + {type === 'sendTokens' && } + {/* {type === 'delegations' && ( )} */} - {/* {log.length > 0 && ( + {/* {log.length > 0 && ( Transaction Logs: {log} )} */} - - - ); -}; + + +); diff --git a/sdk/typescript/docs/components/wallet/connect.tsx b/sdk/typescript/docs/components/wallet/connect.tsx index bfbc5d60c3..a7a6b60368 100644 --- a/sdk/typescript/docs/components/wallet/connect.tsx +++ b/sdk/typescript/docs/components/wallet/connect.tsx @@ -1,5 +1,4 @@ -import React, { useState, useEffect, useCallback } from 'react'; -import { Coin } from '@cosmjs/stargate'; +import React, { useState, useEffect } from 'react'; import Button from '@mui/material/Button'; import Paper from '@mui/material/Paper'; import Box from '@mui/material/Box'; diff --git a/sdk/typescript/docs/components/wallet/sendTokens.tsx b/sdk/typescript/docs/components/wallet/sendTokens.tsx index 6316f91480..eb22032b5d 100644 --- a/sdk/typescript/docs/components/wallet/sendTokens.tsx +++ b/sdk/typescript/docs/components/wallet/sendTokens.tsx @@ -6,55 +6,8 @@ import Typography from '@mui/material/Typography'; import TextField from '@mui/material/TextField'; import { useWalletContext } from '../context/wallet'; -export const SendTokes = ({ - // setRecipientAddress, - // signerCosmosWasmClient, - // account, - // recipientAddress, -}: { - // setRecipientAddress: (value: string) => void; - // signerCosmosWasmClient: any; - // account: string; - // recipientAddress: string; -}) => { - const { cosmWasmSigner, cosmWasmSignerClient, nymWasmSignerClient, setConnectWithMnemonic } = useWalletContext(); - const [recipientAddress, setRecipientAddress] = useState(''); - const [tokensToSend, setTokensToSend] = useState(); - const [sendingTokensLoader, setSendingTokensLoader] = useState(false); - const [log, setLog] = useState([]); - - // Sending tokens - // const doSendTokens = async () => { - // const memo = 'test sending tokens'; - // setSendingTokensLoader(true); - // try { - // console.log('signerCosmosWasmClient', signerCosmosWasmClient); - // const res = await signerCosmosWasmClient.sendTokens( - // account, - // recipientAddress, - // [{ amount: tokensToSend, denom: 'unym' }], - // 'auto', - // memo, - // ); - // setLog((prev) => [ - // ...prev, - //
- // {new Date().toLocaleTimeString()} - //
{JSON.stringify(res, null, 2)}
- //
, - // ]); - // } catch (error) { - // console.error(error); - // } - // setSendingTokensLoader(false); - // }; - // End send tokens - - // console.log('signerCosmosWasmClient', signerCosmosWasmClient); - - // useEffect(() => { - // console.log('signerCosmosWasmClient', signerCosmosWasmClient, 'account', account); - // }, [signerCosmosWasmClient, account]); +export const SendTokes = () => { + const { setRecipientAddress, setTokensToSend, sendingTokensLoading, doSendTokens, log } = useWalletContext(); return ( @@ -75,9 +28,9 @@ export const SendTokes = ({ onChange={(e) => setTokensToSend(e.target.value)} size="small" /> - {/* */} + From 495f2eb54380925023754abb13f8f95ed0afe07a Mon Sep 17 00:00:00 2001 From: Gala Date: Fri, 6 Oct 2023 21:05:52 +0200 Subject: [PATCH 075/347] wip --- .../docs/components/context/wallet.tsx | 35 +++++++------------ 1 file changed, 13 insertions(+), 22 deletions(-) diff --git a/sdk/typescript/docs/components/context/wallet.tsx b/sdk/typescript/docs/components/context/wallet.tsx index c7421ca466..1cb057fba1 100644 --- a/sdk/typescript/docs/components/context/wallet.tsx +++ b/sdk/typescript/docs/components/context/wallet.tsx @@ -71,6 +71,7 @@ interface WalletState { account: string; clientsAreLoading: boolean; setConnectWithMnemonic?: (value: string) => void; + connect?: () => void; balance?: Coin; balanceLoading: boolean; setRecipientAddress?: (value: string) => void; @@ -96,13 +97,13 @@ export const WalletContextProvider = ({ children }: { children: JSX.Element }) = // wallet mnemonic const [connectWithMnemonic, setConnectWithMnemonic] = React.useState(); const [accountLoading, setAccountLoading] = React.useState(false); - const [account, setAccount] = React.useState(); + const [account, setAccount] = React.useState(null); const [clientsAreLoading, setClientsAreLoading] = React.useState(false); - const [cosmWasmSignerClient, setCosmWasmSignerClient] = React.useState(); - const [nymWasmSignerClient, setNymWasmSignerClient] = React.useState(); - const [balance, setBalance] = React.useState(); + const [cosmWasmSignerClient, setCosmWasmSignerClient] = React.useState(null); + const [nymWasmSignerClient, setNymWasmSignerClient] = React.useState(null); + const [balance, setBalance] = React.useState(null); const [balanceLoading, setBalanceLoading] = React.useState(false); - const [recipientAddress, setRecipientAddress] = React.useState(''); + const [recipientAddress, setRecipientAddress] = React.useState(); const [tokensToSend, setTokensToSend] = React.useState(); const [sendingTokensLoading, setSendingTokensLoading] = React.useState(false); const [log, setLog] = React.useState([]); @@ -120,10 +121,10 @@ export const WalletContextProvider = ({ children }: { children: JSX.Element }) = } setAccountLoading(false); }; + const getClients = async () => { setClientsAreLoading(true); try { - console.log('setCosmWasmSignerClient'); setCosmWasmSignerClient(await fetchSignerCosmosWasmClient(connectWithMnemonic)); setNymWasmSignerClient(await fetchSignerClient(connectWithMnemonic)); } catch (error) { @@ -147,8 +148,8 @@ export const WalletContextProvider = ({ children }: { children: JSX.Element }) = const doSendTokens = React.useCallback(async () => { const memo = 'test sending tokens'; setSendingTokensLoading(true); + console.log('cosmWasmSignerClient', cosmWasmSignerClient, account, recipientAddress); try { - console.log('cosmWasmSignerClient', cosmWasmSignerClient, account, recipientAddress); const res = await cosmWasmSignerClient.sendTokens( account, recipientAddress, @@ -170,29 +171,19 @@ export const WalletContextProvider = ({ children }: { children: JSX.Element }) = }, [account, cosmWasmSignerClient]); // End send tokens + + React.useEffect(() => { if (connectWithMnemonic) { - // when the mnemonic changes, remove all previous data Promise.all([getSignerAccount(), getClients()]); } }, [connectWithMnemonic]); React.useEffect(() => { - console.log('cosmWasmSignerClient', cosmWasmSignerClient); - }, [cosmWasmSignerClient]); - - React.useEffect(() => { -console.log('tokensToSend', tokensToSend); - - },[tokensToSend]) - - React.useEffect(() => { - if (account && cosmWasmSignerClient) { - if (!balance) { - getBalance(); - } + if (cosmWasmSignerClient) { + getBalance(); } - }, [account, cosmWasmSignerClient, balance, getBalance]); + }, [cosmWasmSignerClient]); const state = React.useMemo( () => ({ From 7cab3d58a833cf428783f6711991c3be6d826bbd Mon Sep 17 00:00:00 2001 From: Gala Date: Fri, 6 Oct 2023 22:12:05 +0200 Subject: [PATCH 076/347] point to take in count --- .../docs/components/context/wallet.tsx | 160 ++++++++----- sdk/typescript/docs/components/wallet.tsx | 30 ++- .../docs/components/wallet/connect.tsx | 5 +- .../docs/components/wallet/delegations.tsx | 213 ++++++++---------- .../docs/components/wallet/methods.ts | 0 .../docs/components/wallet/sendTokens.tsx | 13 +- 6 files changed, 222 insertions(+), 199 deletions(-) create mode 100644 sdk/typescript/docs/components/wallet/methods.ts diff --git a/sdk/typescript/docs/components/context/wallet.tsx b/sdk/typescript/docs/components/context/wallet.tsx index 1cb057fba1..c74471e075 100644 --- a/sdk/typescript/docs/components/context/wallet.tsx +++ b/sdk/typescript/docs/components/context/wallet.tsx @@ -61,24 +61,20 @@ interface ApiState { */ interface WalletState { - cosmWasmSigner?: { getAccounts: () => void }; - cosmWasmSignerClient?: { - getBalance: (account: string, denom: string) => Coin; - sendTokens: (account: string, recipientAddress: string, amount: [Coin], type: 'auto', memo: string) => void; - }; - nymWasmSignerClient?: ApiState; accountLoading: boolean; account: string; clientsAreLoading: boolean; - setConnectWithMnemonic?: (value: string) => void; - connect?: () => void; + connect?: (mnemonic: string) => void; balance?: Coin; balanceLoading: boolean; setRecipientAddress?: (value: string) => void; setTokensToSend?: (value: string) => void; sendingTokensLoading: boolean; log: React.ReactNode[]; - doSendTokens?: () => void; + sendTokens?: (recipientAddress: string, tokensToSend: string) => void; + delegations?: any; + unDelegateAll?: () => void; + unDelegateAllLoading?: boolean; } export const WalletContext = React.createContext({ @@ -93,28 +89,36 @@ export const WalletContext = React.createContext({ export const useWalletContext = (): React.ContextType => React.useContext(WalletContext); +let cosmWasmSignerClient; +let nymWasmSignerClient; +let account; + export const WalletContextProvider = ({ children }: { children: JSX.Element }) => { - // wallet mnemonic - const [connectWithMnemonic, setConnectWithMnemonic] = React.useState(); const [accountLoading, setAccountLoading] = React.useState(false); - const [account, setAccount] = React.useState(null); + const [delegations, setDelegations] = React.useState(); const [clientsAreLoading, setClientsAreLoading] = React.useState(false); - const [cosmWasmSignerClient, setCosmWasmSignerClient] = React.useState(null); - const [nymWasmSignerClient, setNymWasmSignerClient] = React.useState(null); const [balance, setBalance] = React.useState(null); const [balanceLoading, setBalanceLoading] = React.useState(false); - const [recipientAddress, setRecipientAddress] = React.useState(); - const [tokensToSend, setTokensToSend] = React.useState(); const [sendingTokensLoading, setSendingTokensLoading] = React.useState(false); const [log, setLog] = React.useState([]); + const [unDelegateAllLoading, setUnDelegateAllLoading] = React.useState(false); - const getSignerAccount = async () => { + const Reset = () => { + setAccountLoading(false); + setClientsAreLoading(false); + setBalance(null); + setBalanceLoading(false); + setSendingTokensLoading(false); + setLog([]); + }; + + const getSignerAccount = async (mnemonic: string) => { setAccountLoading(true); try { - const signer = await signerAccount(connectWithMnemonic); + const signer = await signerAccount(mnemonic); const accounts = await signer.getAccounts(); if (accounts[0]) { - setAccount(accounts[0].address); + account = accounts[0].address; } } catch (error) { console.error(error); @@ -122,17 +126,22 @@ export const WalletContextProvider = ({ children }: { children: JSX.Element }) = setAccountLoading(false); }; - const getClients = async () => { + const getClients = async (mnemonic: string) => { setClientsAreLoading(true); try { - setCosmWasmSignerClient(await fetchSignerCosmosWasmClient(connectWithMnemonic)); - setNymWasmSignerClient(await fetchSignerClient(connectWithMnemonic)); + cosmWasmSignerClient = await fetchSignerCosmosWasmClient(mnemonic); + nymWasmSignerClient = await fetchSignerClient(mnemonic); } catch (error) { console.error(error); } setClientsAreLoading(false); }; + const connect = React.useCallback(async (mnemonic: string) => { + getSignerAccount(mnemonic); + getClients(mnemonic); + }, []); + const getBalance = React.useCallback(async () => { setBalanceLoading(true); try { @@ -144,40 +153,63 @@ export const WalletContextProvider = ({ children }: { children: JSX.Element }) = setBalanceLoading(false); }, [account, cosmWasmSignerClient]); - // Sending tokens - const doSendTokens = React.useCallback(async () => { - const memo = 'test sending tokens'; - setSendingTokensLoading(true); - console.log('cosmWasmSignerClient', cosmWasmSignerClient, account, recipientAddress); + const getDelegations = React.useCallback(async () => { + const delegations = await nymWasmSignerClient.getDelegatorDelegations({ + delegator: settings.address, + }); + console.log('delegations', delegations); + setDelegations(delegations); + }, [nymWasmSignerClient]); + + const sendTokens = React.useCallback( + async (recipientAddress: string, tokensToSend: string) => { + const memo = 'test sending tokens'; + setSendingTokensLoading(true); + try { + const res = await cosmWasmSignerClient.sendTokens( + account, + recipientAddress, + [{ amount: tokensToSend, denom: 'unym' }], + 'auto', + memo, + ); + setLog((prev) => [ + ...prev, +
+ {new Date().toLocaleTimeString()} +
{JSON.stringify(res, null, 2)}
+
, + ]); + } catch (error) { + console.error(error); + } + setSendingTokensLoading(false); + }, + [account, cosmWasmSignerClient], + ); + + const undelegateAll = async () => { + if (!nymWasmSignerClient) { + return; + } + setUnDelegateAllLoading(true); try { - const res = await cosmWasmSignerClient.sendTokens( - account, - recipientAddress, - [{ amount: tokensToSend, denom: 'unym' }], - 'auto', - memo, - ); - setLog((prev) => [ - ...prev, -
- {new Date().toLocaleTimeString()} -
{JSON.stringify(res, null, 2)}
-
, - ]); + // eslint-disable-next-line no-restricted-syntax + for (const delegation of delegations.delegations) { + // eslint-disable-next-line no-await-in-loop + await nymWasmSignerClient.undelegateFromMixnode({ mixId: delegation.mix_id }, 'auto'); + } } catch (error) { console.error(error); } - setSendingTokensLoading(false); - }, [account, cosmWasmSignerClient]); - // End send tokens - - + setUnDelegateAllLoading(false); + }; React.useEffect(() => { - if (connectWithMnemonic) { - Promise.all([getSignerAccount(), getClients()]); - } - }, [connectWithMnemonic]); + return () => { + Reset(); + }; + }, []); React.useEffect(() => { if (cosmWasmSignerClient) { @@ -185,36 +217,40 @@ export const WalletContextProvider = ({ children }: { children: JSX.Element }) = } }, [cosmWasmSignerClient]); + React.useEffect(() => { + if (nymWasmSignerClient) { + getDelegations(); + } + }, [nymWasmSignerClient]); + const state = React.useMemo( () => ({ accountLoading, account, clientsAreLoading, - cosmWasmSignerClient, - nymWasmSignerClient, - setConnectWithMnemonic, + connect, balance, balanceLoading, - setRecipientAddress, - setTokensToSend, sendingTokensLoading, log, - doSendTokens, + sendTokens, + delegations, + undelegateAll, + unDelegateAllLoading, }), [ accountLoading, account, clientsAreLoading, - cosmWasmSignerClient, - nymWasmSignerClient, - setConnectWithMnemonic, + connect, balance, balanceLoading, - setRecipientAddress, - setTokensToSend, sendingTokensLoading, log, - doSendTokens, + sendTokens, + delegations, + undelegateAll, + unDelegateAllLoading, ], ); diff --git a/sdk/typescript/docs/components/wallet.tsx b/sdk/typescript/docs/components/wallet.tsx index 88b509de77..0fe3986a4b 100644 --- a/sdk/typescript/docs/components/wallet.tsx +++ b/sdk/typescript/docs/components/wallet.tsx @@ -1,4 +1,4 @@ -import React, { useCallback, useEffect, useState, createContext } from 'react'; +import React from 'react'; import Box from '@mui/material/Box'; import Typography from '@mui/material/Typography'; import { ConnectWallet } from './wallet/connect'; @@ -6,16 +6,24 @@ import { SendTokes } from './wallet/sendTokens'; import { Delegations } from './wallet/delegations'; import { WalletContextProvider } from './context/wallet'; -export const Wallet = ({ type }: { type: 'connect' | 'sendTokens' | 'delegations' }) => ( - +export const Wallet = ({ type }: { type: 'connect' | 'sendTokens' | 'delegations' }) => { + return ( - {type === 'connect' && } - {type === 'sendTokens' && } - {/* {type === 'delegations' && ( - + {type === 'connect' && ( + + + + )} + {type === 'sendTokens' && ( + + + + )} + {type === 'delegations' && ( + - - )} */} + + )} {/* {log.length > 0 && ( Transaction Logs: @@ -23,5 +31,5 @@ export const Wallet = ({ type }: { type: 'connect' | 'sendTokens' | 'delegations )} */} - -); + ); +}; diff --git a/sdk/typescript/docs/components/wallet/connect.tsx b/sdk/typescript/docs/components/wallet/connect.tsx index a7a6b60368..5c86a9a572 100644 --- a/sdk/typescript/docs/components/wallet/connect.tsx +++ b/sdk/typescript/docs/components/wallet/connect.tsx @@ -7,8 +7,7 @@ import TextField from '@mui/material/TextField'; import { useWalletContext } from '../context/wallet'; export const ConnectWallet = () => { - const { balance, balanceLoading, accountLoading, setConnectWithMnemonic, account, clientsAreLoading } = - useWalletContext(); + const { connect, balance, balanceLoading, accountLoading, account, clientsAreLoading } = useWalletContext(); const [mnemonic, setMnemonic] = useState(); const [connectButtonText, setConnectButtonText] = useState('Connect'); @@ -44,7 +43,7 @@ export const ConnectWallet = () => { /> - // - // - // - // - // Your delegations - // - // {!delegations?.delegations?.length ? ( - // You do not have delegations - // ) : ( - // - // - // - // - // MixId - // Owner - // Amount - // Cumulative Reward Ratio - // - // - // - // {delegations?.delegations.map((delegation: any) => ( - // - // {delegation.mix_id} - // {delegation.owner} - // {delegation.amount.amount} - // {delegation.cumulative_reward_ratio} - // - // ))} - // - //
- //
- // )} - //
- // {delegations && ( - // - // - // - // )} - // - // - // - //
- // - // - // ); + useEffect(() => { + console.log('delegations', delegations); + },[delegations]); return ( - Hello - ) + + + Delegations + + + + Make a delegation + + setDelegationNodeId(e.target.value)} + size="small" + /> + + setAmountToBeDelegated(e.target.value)} + size="small" + /> + {/* */} + + + + + Your delegations + + {!delegations?.delegations?.length ? ( + You do not have delegations + ) : ( + + + + + MixId + Owner + Amount + Cumulative Reward Ratio + + + + {delegations?.delegations.map((delegation: any) => ( + + {delegation.mix_id} + {delegation.owner} + {delegation.amount.amount} + {delegation.cumulative_reward_ratio} + + ))} + +
+
+ )} +
+ {delegations && ( + + + + )} + + {/* */} + +
+
+
+ ); }; diff --git a/sdk/typescript/docs/components/wallet/methods.ts b/sdk/typescript/docs/components/wallet/methods.ts new file mode 100644 index 0000000000..e69de29bb2 diff --git a/sdk/typescript/docs/components/wallet/sendTokens.tsx b/sdk/typescript/docs/components/wallet/sendTokens.tsx index eb22032b5d..8a1ee6bbc6 100644 --- a/sdk/typescript/docs/components/wallet/sendTokens.tsx +++ b/sdk/typescript/docs/components/wallet/sendTokens.tsx @@ -1,4 +1,4 @@ -import React, { useState, useEffect } from 'react'; +import React from 'react'; import Button from '@mui/material/Button'; import Paper from '@mui/material/Paper'; import Box from '@mui/material/Box'; @@ -7,7 +7,10 @@ import TextField from '@mui/material/TextField'; import { useWalletContext } from '../context/wallet'; export const SendTokes = () => { - const { setRecipientAddress, setTokensToSend, sendingTokensLoading, doSendTokens, log } = useWalletContext(); + const { sendingTokensLoading, sendTokens, log } = useWalletContext(); + + const [recipientAddress, setRecipientAddress] = React.useState(); + const [tokensToSend, setTokensToSend] = React.useState(); return ( @@ -28,7 +31,11 @@ export const SendTokes = () => { onChange={(e) => setTokensToSend(e.target.value)} size="small" /> - From 42f0337e7f8f1ffa1210dd22659884c7531c544e Mon Sep 17 00:00:00 2001 From: Gala Date: Fri, 6 Oct 2023 23:01:48 +0200 Subject: [PATCH 077/347] conecting things --- sdk/typescript/docs/components/wallet.tsx | 61 +++++---- .../docs/components/wallet/connect.tsx | 2 +- .../docs/components/wallet/delegations.tsx | 85 +++---------- .../docs/components/wallet/index.ts | 3 - .../docs/components/wallet/methods.ts | 0 .../docs/components/wallet/sendTokens.tsx | 2 +- .../utils/wallet.context.tsx} | 118 +++++++++--------- .../components/wallet/utils/wallet.methods.ts | 52 ++++++++ .../docs/pages/playground/wallet.mdx | 13 +- 9 files changed, 175 insertions(+), 161 deletions(-) delete mode 100644 sdk/typescript/docs/components/wallet/index.ts delete mode 100644 sdk/typescript/docs/components/wallet/methods.ts rename sdk/typescript/docs/components/{context/wallet.tsx => wallet/utils/wallet.context.tsx} (72%) create mode 100644 sdk/typescript/docs/components/wallet/utils/wallet.methods.ts diff --git a/sdk/typescript/docs/components/wallet.tsx b/sdk/typescript/docs/components/wallet.tsx index 0fe3986a4b..f99eb321a0 100644 --- a/sdk/typescript/docs/components/wallet.tsx +++ b/sdk/typescript/docs/components/wallet.tsx @@ -4,32 +4,43 @@ import Typography from '@mui/material/Typography'; import { ConnectWallet } from './wallet/connect'; import { SendTokes } from './wallet/sendTokens'; import { Delegations } from './wallet/delegations'; -import { WalletContextProvider } from './context/wallet'; +import { WalletContextProvider, useWalletContext } from './wallet/utils/wallet.context'; -export const Wallet = ({ type }: { type: 'connect' | 'sendTokens' | 'delegations' }) => { +export const Logs = () => { + const { log } = useWalletContext(); return ( - - {type === 'connect' && ( - - - - )} - {type === 'sendTokens' && ( - - - - )} - {type === 'delegations' && ( - - - - )} - {/* {log.length > 0 && ( - - Transaction Logs: - {log} - - )} */} - + log.length > 0 && ( + + Transaction Logs: + {log} + + ) + ); +}; + +export const Wallet = ({ type }: { type: 'connect' | 'sendTokens' | 'delegations' | 'logs' }) => { + const [component, setComponent] = React.useState(); + + React.useEffect(() => { + switch (type) { + case 'connect': + setComponent(); + break; + case 'sendTokens': + setComponent(); + break; + case 'delegations': + setComponent(); + break; + case 'logs': + setComponent(); + default: + null; + } + }, [type]); + return ( + + {component} + ); }; diff --git a/sdk/typescript/docs/components/wallet/connect.tsx b/sdk/typescript/docs/components/wallet/connect.tsx index 5c86a9a572..9b515646c9 100644 --- a/sdk/typescript/docs/components/wallet/connect.tsx +++ b/sdk/typescript/docs/components/wallet/connect.tsx @@ -4,7 +4,7 @@ import Paper from '@mui/material/Paper'; import Box from '@mui/material/Box'; import Typography from '@mui/material/Typography'; import TextField from '@mui/material/TextField'; -import { useWalletContext } from '../context/wallet'; +import { useWalletContext } from './utils/wallet.context'; export const ConnectWallet = () => { const { connect, balance, balanceLoading, accountLoading, account, clientsAreLoading } = useWalletContext(); diff --git a/sdk/typescript/docs/components/wallet/delegations.tsx b/sdk/typescript/docs/components/wallet/delegations.tsx index a13ced1b08..45e13cf585 100644 --- a/sdk/typescript/docs/components/wallet/delegations.tsx +++ b/sdk/typescript/docs/components/wallet/delegations.tsx @@ -4,73 +4,12 @@ import Paper from '@mui/material/Paper'; import Box from '@mui/material/Box'; import { TableBody, TableCell, TableHead, TableRow, TextField, Typography } from '@mui/material'; import Table from '@mui/material/Table'; -import { useWalletContext } from '../context/wallet'; +import { useWalletContext, WalletContextProvider } from './utils/wallet.context'; -export const Delegations = () => { - const { delegations, unDelegateAllLoading, balanceLoading, accountLoading, account, clientsAreLoading } = useWalletContext(); +const DelegationsComponent = () => { + const { delegations, doDelegate, delegationLoader, withdrawLoading, withdrawRewards, unDelegateAll, unDelegateAllLoading } = useWalletContext(); const [delegationNodeId, setDelegationNodeId] = useState(); const [amountToBeDelegated, setAmountToBeDelegated] = useState(); - // const [log, setLog] = useState([]); - // const [delegations, setDelegations] = useState(); - // const [delegationLoader, setDelegationLoader] = useState(false); - // const [withdrawLoading, setWithdrawLoading] = useState(false); - - // Start Delegate - // const doDelegate = async ({ mixId, amount }: { mixId: number; amount: number }) => { - // if (!signerClient) { - // return; - // } - // setDelegationLoader(true); - // try { - // const res = await signerClient.delegateToMixnode({ mixId }, 'auto', undefined, [ - // { amount: `${amount}`, denom: 'unym' }, - // ]); - // console.log('res', res); - // setLog((prev) => [ - // ...prev, - //
- // {new Date().toLocaleTimeString()} - //
{JSON.stringify(res, null, 2)}
- //
, - // ]); - // } catch (error) { - // console.error(error); - // } - // setDelegationLoader(false); - // }; - // End delegate - - // Start Withdraw Rewards - // const doWithdrawRewards = async () => { - // const delegatorAddress = ''; - // const validatorAdress = ''; - // const memo = 'test sending tokens'; - // setWithdrawLoading(true); - // try { - // const res = await signerCosmosWasmClient.withdrawRewards(delegatorAddress, validatorAdress, 'auto', memo); - // setLog((prev) => [ - // ...prev, - //
- // {new Date().toLocaleTimeString()} - //
{JSON.stringify(res, null, 2)}
- //
, - // ]); - // } catch (error) { - // console.error(error); - // } - // setWithdrawLoading(false); - // }; - // End Withdraw Rewards - - // useEffect(() => { - // if (signerClient && !delegations) { - // getDelegations(); - // } - // }, [signerClient, getDelegations, delegations]); - - useEffect(() => { - console.log('delegations', delegations); - },[delegations]); return ( @@ -94,7 +33,7 @@ export const Delegations = () => { onChange={(e) => setAmountToBeDelegated(e.target.value)} size="small" /> - {/* */} + @@ -138,18 +77,26 @@ export const Delegations = () => { {delegations && ( - )} - {/* */} + ); }; + +export const Delegations = () => { + return ( + + + + ); +}; diff --git a/sdk/typescript/docs/components/wallet/index.ts b/sdk/typescript/docs/components/wallet/index.ts deleted file mode 100644 index 89ecc6b6ee..0000000000 --- a/sdk/typescript/docs/components/wallet/index.ts +++ /dev/null @@ -1,3 +0,0 @@ -export { ConnectWallet } from './connect'; -export { SendTokes } from './sendTokens'; -export { Delegations } from './delegations'; \ No newline at end of file diff --git a/sdk/typescript/docs/components/wallet/methods.ts b/sdk/typescript/docs/components/wallet/methods.ts deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/sdk/typescript/docs/components/wallet/sendTokens.tsx b/sdk/typescript/docs/components/wallet/sendTokens.tsx index 8a1ee6bbc6..e2ad6719a1 100644 --- a/sdk/typescript/docs/components/wallet/sendTokens.tsx +++ b/sdk/typescript/docs/components/wallet/sendTokens.tsx @@ -4,7 +4,7 @@ import Paper from '@mui/material/Paper'; import Box from '@mui/material/Box'; import Typography from '@mui/material/Typography'; import TextField from '@mui/material/TextField'; -import { useWalletContext } from '../context/wallet'; +import { useWalletContext } from './utils/wallet.context'; export const SendTokes = () => { const { sendingTokensLoading, sendTokens, log } = useWalletContext(); diff --git a/sdk/typescript/docs/components/context/wallet.tsx b/sdk/typescript/docs/components/wallet/utils/wallet.context.tsx similarity index 72% rename from sdk/typescript/docs/components/context/wallet.tsx rename to sdk/typescript/docs/components/wallet/utils/wallet.context.tsx index c74471e075..dc04552d2c 100644 --- a/sdk/typescript/docs/components/context/wallet.tsx +++ b/sdk/typescript/docs/components/wallet/utils/wallet.context.tsx @@ -1,60 +1,8 @@ import * as React from 'react'; -import { contracts } from '@nymproject/contract-clients'; -import { SigningCosmWasmClient } from '@cosmjs/cosmwasm-stargate'; -import { DirectSecp256k1HdWallet } from '@cosmjs/proto-signing'; -import { Coin, GasPrice } from '@cosmjs/stargate'; -import { settings } from '../client'; +import { Coin } from '@cosmjs/stargate'; +import { settings } from '../../client'; +import { signerAccount, fetchSignerCosmosWasmClient, fetchSignerClient } from './wallet.methods'; -const signerAccount = async (mnemonic: string) => { - // create a wallet to sign transactions with the mnemonic - const signer = await DirectSecp256k1HdWallet.fromMnemonic(mnemonic, { - prefix: 'n', - }); - - return signer; -}; - -const fetchSignerCosmosWasmClient = async (mnemonic: string) => { - const signer = await signerAccount(mnemonic); - - // create a signing client we don't need to set the gas price conversion for queries - const cosmWasmClient = await SigningCosmWasmClient.connectWithSigner(settings.url, signer, { - gasPrice: GasPrice.fromString('0.025unym'), - }); - - return cosmWasmClient; -}; - -const fetchSignerClient = async (mnemonic) => { - const signer = await signerAccount(mnemonic); - - // create a signing client we don't need to set the gas price conversion for queries - // if you want to connect without signer you'd write ".connect" and "url" as param - const cosmWasmClient = await SigningCosmWasmClient.connectWithSigner(settings.url, signer, { - gasPrice: GasPrice.fromString('0.025unym'), - }); - - /** create a mixnet contract client - * @param cosmWasmClient the client to use for signing and querying - * @param settings.address the bech32 address prefix (human readable part) - * @param settings.mixnetContractAddress the bech32 address prefix (human readable part) - * @returns the client in MixnetClient form - */ - - const mixnetClient = new contracts.Mixnet.MixnetClient( - cosmWasmClient, - settings.address, // sender (that account of the signer) - settings.mixnetContractAddress, // contract address (different on mainnet, QA, etc) - ); - - return mixnetClient; -}; - -interface ApiState { - isLoading: boolean; - data?: RESPONSE; - error?: Error; -} /** * This context provides the state for wallet. @@ -75,6 +23,10 @@ interface WalletState { delegations?: any; unDelegateAll?: () => void; unDelegateAllLoading?: boolean; + doDelegate?: ({ mixId, amount }: { mixId: number; amount: number }) => void; + delegationLoader?: boolean; + withdrawLoading?: boolean; + withdrawRewards?: () => void; } export const WalletContext = React.createContext({ @@ -94,6 +46,7 @@ let nymWasmSignerClient; let account; export const WalletContextProvider = ({ children }: { children: JSX.Element }) => { + const [accountLoading, setAccountLoading] = React.useState(false); const [delegations, setDelegations] = React.useState(); const [clientsAreLoading, setClientsAreLoading] = React.useState(false); @@ -101,7 +54,9 @@ export const WalletContextProvider = ({ children }: { children: JSX.Element }) = const [balanceLoading, setBalanceLoading] = React.useState(false); const [sendingTokensLoading, setSendingTokensLoading] = React.useState(false); const [log, setLog] = React.useState([]); + const [delegationLoader, setDelegationLoader] = React.useState(false); const [unDelegateAllLoading, setUnDelegateAllLoading] = React.useState(false); + const [withdrawLoading, setWithdrawLoading] = React.useState(false); const Reset = () => { setAccountLoading(false); @@ -188,7 +143,50 @@ export const WalletContextProvider = ({ children }: { children: JSX.Element }) = [account, cosmWasmSignerClient], ); - const undelegateAll = async () => { + const doDelegate = async ({ mixId, amount }: { mixId: number; amount: number }) => { + if (!nymWasmSignerClient) { + return; + } + setDelegationLoader(true); + try { + const res = await nymWasmSignerClient.delegateToMixnode({ mixId }, 'auto', undefined, [ + { amount: `${amount}`, denom: 'unym' }, + ]); + console.log('res', res); + setLog((prev) => [ + ...prev, +
+ {new Date().toLocaleTimeString()} +
{JSON.stringify(res, null, 2)}
+
, + ]); + } catch (error) { + console.error(error); + } + setDelegationLoader(false); + }; + + const withdrawRewards = async () => { + const delegatorAddress = ''; + const validatorAdress = ''; + const memo = 'test withdraw rewards'; + setWithdrawLoading(true); + try { + const res = await cosmWasmSignerClient.withdrawRewards(delegatorAddress, validatorAdress, 'auto', memo); + setLog((prev) => [ + ...prev, +
+ {new Date().toLocaleTimeString()} +
{JSON.stringify(res, null, 2)}
+
, + ]); + } catch (error) { + console.error(error); + } + setWithdrawLoading(false); + }; + + const undelegateAll = async () => { if (!nymWasmSignerClient) { return; } @@ -237,6 +235,10 @@ export const WalletContextProvider = ({ children }: { children: JSX.Element }) = delegations, undelegateAll, unDelegateAllLoading, + doDelegate, + delegationLoader, + withdrawRewards, + withdrawLoading }), [ accountLoading, @@ -251,6 +253,10 @@ export const WalletContextProvider = ({ children }: { children: JSX.Element }) = delegations, undelegateAll, unDelegateAllLoading, + doDelegate, + delegationLoader, + withdrawRewards, + withdrawLoading ], ); diff --git a/sdk/typescript/docs/components/wallet/utils/wallet.methods.ts b/sdk/typescript/docs/components/wallet/utils/wallet.methods.ts new file mode 100644 index 0000000000..90ff2026b3 --- /dev/null +++ b/sdk/typescript/docs/components/wallet/utils/wallet.methods.ts @@ -0,0 +1,52 @@ +import { contracts } from '@nymproject/contract-clients'; +import { SigningCosmWasmClient } from '@cosmjs/cosmwasm-stargate'; +import { DirectSecp256k1HdWallet } from '@cosmjs/proto-signing'; +import { GasPrice } from '@cosmjs/stargate'; +import { settings } from '../../client'; + +export const signerAccount = async (mnemonic: string) => { + // create a wallet to sign transactions with the mnemonic + const signer = await DirectSecp256k1HdWallet.fromMnemonic(mnemonic, { + prefix: 'n', + }); + + return signer; + }; + + +export const fetchSignerCosmosWasmClient = async (mnemonic: string) => { + const signer = await signerAccount(mnemonic); + + // create a signing client we don't need to set the gas price conversion for queries + const cosmWasmClient = await SigningCosmWasmClient.connectWithSigner(settings.url, signer, { + gasPrice: GasPrice.fromString('0.025unym'), + }); + + return cosmWasmClient; + }; + + +export const fetchSignerClient = async (mnemonic) => { + const signer = await signerAccount(mnemonic); + + // create a signing client we don't need to set the gas price conversion for queries + // if you want to connect without signer you'd write ".connect" and "url" as param + const cosmWasmClient = await SigningCosmWasmClient.connectWithSigner(settings.url, signer, { + gasPrice: GasPrice.fromString('0.025unym'), + }); + + /** create a mixnet contract client + * @param cosmWasmClient the client to use for signing and querying + * @param settings.address the bech32 address prefix (human readable part) + * @param settings.mixnetContractAddress the bech32 address prefix (human readable part) + * @returns the client in MixnetClient form + */ + + const mixnetClient = new contracts.Mixnet.MixnetClient( + cosmWasmClient, + settings.address, // sender (that account of the signer) + settings.mixnetContractAddress, // contract address (different on mainnet, QA, etc) + ); + + return mixnetClient; + }; \ No newline at end of file diff --git a/sdk/typescript/docs/pages/playground/wallet.mdx b/sdk/typescript/docs/pages/playground/wallet.mdx index 7dae8bc60e..8d674f9886 100644 --- a/sdk/typescript/docs/pages/playground/wallet.mdx +++ b/sdk/typescript/docs/pages/playground/wallet.mdx @@ -1,6 +1,6 @@ # Wallet -import { Wallet } from '../../components/wallet'; +import { Wallet, Logs } from '../../components/wallet'; import Box from '@mui/material/Box'; import FormattedWalletConnectCode from '../../code-examples/wallet-connect-code.mdx'; import FormattedWalletSendTokensCode from '../../code-examples/wallet-sendTokens-code.mdx'; @@ -8,12 +8,13 @@ import FormattedWalletDelegationsCode from '../../code-examples/wallet-delegatio Here's a small wallet example using testnet for you to test out! - - + - + - - \ No newline at end of file + + + + From 7e0772408580703d03cc8f5c4969be9c4720e3da Mon Sep 17 00:00:00 2001 From: Gala Date: Mon, 9 Oct 2023 11:17:39 +0200 Subject: [PATCH 078/347] fixing methods --- sdk/typescript/docs/components/wallet.tsx | 13 +- .../docs/components/wallet/delegations.tsx | 159 ++++++++++-------- .../wallet/utils/wallet.context.tsx | 114 ++++++------- .../docs/pages/playground/wallet.mdx | 3 +- 4 files changed, 154 insertions(+), 135 deletions(-) diff --git a/sdk/typescript/docs/components/wallet.tsx b/sdk/typescript/docs/components/wallet.tsx index f99eb321a0..a6086ad272 100644 --- a/sdk/typescript/docs/components/wallet.tsx +++ b/sdk/typescript/docs/components/wallet.tsx @@ -6,8 +6,11 @@ import { SendTokes } from './wallet/sendTokens'; import { Delegations } from './wallet/delegations'; import { WalletContextProvider, useWalletContext } from './wallet/utils/wallet.context'; -export const Logs = () => { +export const LogUI = () => { const { log } = useWalletContext(); + React.useEffect(() => { + console.log('log', log); + }, [log]); return ( log.length > 0 && ( @@ -18,6 +21,12 @@ export const Logs = () => { ); }; +export const Log = () => ( + + + +); + export const Wallet = ({ type }: { type: 'connect' | 'sendTokens' | 'delegations' | 'logs' }) => { const [component, setComponent] = React.useState(); @@ -32,8 +41,6 @@ export const Wallet = ({ type }: { type: 'connect' | 'sendTokens' | 'delegations case 'delegations': setComponent(); break; - case 'logs': - setComponent(); default: null; } diff --git a/sdk/typescript/docs/components/wallet/delegations.tsx b/sdk/typescript/docs/components/wallet/delegations.tsx index 45e13cf585..6adb76680b 100644 --- a/sdk/typescript/docs/components/wallet/delegations.tsx +++ b/sdk/typescript/docs/components/wallet/delegations.tsx @@ -1,4 +1,4 @@ -import React, { useEffect, useState } from 'react'; +import React, { use, useEffect, useState } from 'react'; import Button from '@mui/material/Button'; import Paper from '@mui/material/Paper'; import Box from '@mui/material/Box'; @@ -7,89 +7,110 @@ import Table from '@mui/material/Table'; import { useWalletContext, WalletContextProvider } from './utils/wallet.context'; const DelegationsComponent = () => { - const { delegations, doDelegate, delegationLoader, withdrawLoading, withdrawRewards, unDelegateAll, unDelegateAllLoading } = useWalletContext(); + const { + delegations, + doDelegate, + delegationLoader, + withdrawLoading, + withdrawRewards, + unDelegateAll, + unDelegateAllLoading, + log, + } = useWalletContext(); const [delegationNodeId, setDelegationNodeId] = useState(); const [amountToBeDelegated, setAmountToBeDelegated] = useState(); + useEffect(() => { + return () => { + setDelegationNodeId(''); + setAmountToBeDelegated(''); + }; + }, [delegations]); + return ( - - - Delegations - - - - Make a delegation - - setDelegationNodeId(e.target.value)} - size="small" - /> - + + + + Delegations + + + + Make a delegation + setAmountToBeDelegated(e.target.value)} + placeholder="Mixnode ID" + onChange={(e) => setDelegationNodeId(e.target.value)} size="small" /> - + + setAmountToBeDelegated(e.target.value)} + size="small" + /> + + - - - Your delegations - - {!delegations?.delegations?.length ? ( - You do not have delegations - ) : ( - - - - - MixId - Owner - Amount - Cumulative Reward Ratio - - - - {delegations?.delegations.map((delegation: any) => ( - - {delegation.mix_id} - {delegation.owner} - {delegation.amount.amount} - {delegation.cumulative_reward_ratio} + + Your delegations: + + {!delegations?.delegations?.length ? ( + You do not have delegations + ) : ( + +
+ + + MixId + Owner + Amount + Cumulative Reward Ratio - ))} - -
+ + + {delegations?.delegations.map((delegation: any) => ( + + {delegation.mix_id} + {delegation.owner} + {delegation.amount.amount} + {delegation.cumulative_reward_ratio} + + ))} + + +
+ )} +
+ {delegations && ( + + )}
- {delegations && ( - - - - )} - - -
-
-
+ + {log.length > 0 && ( + + Transaction Logs: + {log} + + )} +
); }; diff --git a/sdk/typescript/docs/components/wallet/utils/wallet.context.tsx b/sdk/typescript/docs/components/wallet/utils/wallet.context.tsx index dc04552d2c..c440bb8089 100644 --- a/sdk/typescript/docs/components/wallet/utils/wallet.context.tsx +++ b/sdk/typescript/docs/components/wallet/utils/wallet.context.tsx @@ -1,9 +1,9 @@ -import * as React from 'react'; +import { createContext, useContext, useState, useCallback, useEffect, useMemo } from 'react'; import { Coin } from '@cosmjs/stargate'; +import { SigningCosmWasmClient } from '@cosmjs/cosmwasm-stargate'; import { settings } from '../../client'; import { signerAccount, fetchSignerCosmosWasmClient, fetchSignerClient } from './wallet.methods'; - /** * This context provides the state for wallet. */ @@ -29,7 +29,7 @@ interface WalletState { withdrawRewards?: () => void; } -export const WalletContext = React.createContext({ +export const WalletContext = createContext({ accountLoading: false, account: '', clientsAreLoading: false, @@ -38,28 +38,27 @@ export const WalletContext = React.createContext({ log: [], }); -export const useWalletContext = (): React.ContextType => - React.useContext(WalletContext); +export const useWalletContext = (): React.ContextType => useContext(WalletContext); -let cosmWasmSignerClient; -let nymWasmSignerClient; -let account; +let cosmWasmSignerClient: SigningCosmWasmClient; +let nymWasmSignerClient: any; +let account: string; export const WalletContextProvider = ({ children }: { children: JSX.Element }) => { - - const [accountLoading, setAccountLoading] = React.useState(false); - const [delegations, setDelegations] = React.useState(); - const [clientsAreLoading, setClientsAreLoading] = React.useState(false); - const [balance, setBalance] = React.useState(null); - const [balanceLoading, setBalanceLoading] = React.useState(false); - const [sendingTokensLoading, setSendingTokensLoading] = React.useState(false); - const [log, setLog] = React.useState([]); - const [delegationLoader, setDelegationLoader] = React.useState(false); - const [unDelegateAllLoading, setUnDelegateAllLoading] = React.useState(false); - const [withdrawLoading, setWithdrawLoading] = React.useState(false); + const [accountLoading, setAccountLoading] = useState(false); + const [delegations, setDelegations] = useState(); + const [clientsAreLoading, setClientsAreLoading] = useState(false); + const [balance, setBalance] = useState(null); + const [balanceLoading, setBalanceLoading] = useState(false); + const [sendingTokensLoading, setSendingTokensLoading] = useState(false); + const [log, setLog] = useState([]); + const [delegationLoader, setDelegationLoader] = useState(false); + const [unDelegateAllLoading, setUnDelegateAllLoading] = useState(false); + const [withdrawLoading, setWithdrawLoading] = useState(false); const Reset = () => { setAccountLoading(false); + setDelegations(null); setClientsAreLoading(false); setBalance(null); setBalanceLoading(false); @@ -92,12 +91,12 @@ export const WalletContextProvider = ({ children }: { children: JSX.Element }) = setClientsAreLoading(false); }; - const connect = React.useCallback(async (mnemonic: string) => { + const connect = async (mnemonic: string) => { getSignerAccount(mnemonic); getClients(mnemonic); - }, []); + }; - const getBalance = React.useCallback(async () => { + const getBalance = useCallback(async () => { setBalanceLoading(true); try { const newBalance = await cosmWasmSignerClient?.getBalance(account, 'unym'); @@ -108,7 +107,7 @@ export const WalletContextProvider = ({ children }: { children: JSX.Element }) = setBalanceLoading(false); }, [account, cosmWasmSignerClient]); - const getDelegations = React.useCallback(async () => { + const getDelegations = useCallback(async () => { const delegations = await nymWasmSignerClient.getDelegatorDelegations({ delegator: settings.address, }); @@ -116,43 +115,37 @@ export const WalletContextProvider = ({ children }: { children: JSX.Element }) = setDelegations(delegations); }, [nymWasmSignerClient]); - const sendTokens = React.useCallback( - async (recipientAddress: string, tokensToSend: string) => { - const memo = 'test sending tokens'; - setSendingTokensLoading(true); - try { - const res = await cosmWasmSignerClient.sendTokens( - account, - recipientAddress, - [{ amount: tokensToSend, denom: 'unym' }], - 'auto', - memo, - ); - setLog((prev) => [ - ...prev, -
- {new Date().toLocaleTimeString()} -
{JSON.stringify(res, null, 2)}
-
, - ]); - } catch (error) { - console.error(error); - } - setSendingTokensLoading(false); - }, - [account, cosmWasmSignerClient], - ); + const sendTokens = async (recipientAddress: string, tokensToSend: string) => { + const memo = 'test sending tokens'; + setSendingTokensLoading(true); + console.log([{ amount: tokensToSend, denom: 'unym' }],) + try { + const res = await cosmWasmSignerClient.sendTokens( + account, + recipientAddress, + [{ amount: tokensToSend, denom: 'unym' }], + 'auto', + memo, + ); + setLog((prev) => [ + ...prev, +
+ {new Date().toLocaleTimeString()} +
{JSON.stringify(res, null, 2)}
+
, + ]); + } catch (error) { + console.error(error); + } + setSendingTokensLoading(false); + }; const doDelegate = async ({ mixId, amount }: { mixId: number; amount: number }) => { - if (!nymWasmSignerClient) { - return; - } setDelegationLoader(true); try { const res = await nymWasmSignerClient.delegateToMixnode({ mixId }, 'auto', undefined, [ { amount: `${amount}`, denom: 'unym' }, ]); - console.log('res', res); setLog((prev) => [ ...prev,
@@ -167,12 +160,11 @@ export const WalletContextProvider = ({ children }: { children: JSX.Element }) = }; const withdrawRewards = async () => { - const delegatorAddress = ''; const validatorAdress = ''; const memo = 'test withdraw rewards'; setWithdrawLoading(true); try { - const res = await cosmWasmSignerClient.withdrawRewards(delegatorAddress, validatorAdress, 'auto', memo); + const res = await cosmWasmSignerClient.withdrawRewards(account, validatorAdress, 'auto', memo); setLog((prev) => [ ...prev,
@@ -203,25 +195,25 @@ export const WalletContextProvider = ({ children }: { children: JSX.Element }) = setUnDelegateAllLoading(false); }; - React.useEffect(() => { + useEffect(() => { return () => { Reset(); }; }, []); - React.useEffect(() => { + useEffect(() => { if (cosmWasmSignerClient) { getBalance(); } }, [cosmWasmSignerClient]); - React.useEffect(() => { + useEffect(() => { if (nymWasmSignerClient) { getDelegations(); } }, [nymWasmSignerClient]); - const state = React.useMemo( + const state = useMemo( () => ({ accountLoading, account, @@ -238,7 +230,7 @@ export const WalletContextProvider = ({ children }: { children: JSX.Element }) = doDelegate, delegationLoader, withdrawRewards, - withdrawLoading + withdrawLoading, }), [ accountLoading, @@ -256,7 +248,7 @@ export const WalletContextProvider = ({ children }: { children: JSX.Element }) = doDelegate, delegationLoader, withdrawRewards, - withdrawLoading + withdrawLoading, ], ); diff --git a/sdk/typescript/docs/pages/playground/wallet.mdx b/sdk/typescript/docs/pages/playground/wallet.mdx index 8d674f9886..6fedda6655 100644 --- a/sdk/typescript/docs/pages/playground/wallet.mdx +++ b/sdk/typescript/docs/pages/playground/wallet.mdx @@ -1,6 +1,6 @@ # Wallet -import { Wallet, Logs } from '../../components/wallet'; +import { Wallet, Log } from '../../components/wallet'; import Box from '@mui/material/Box'; import FormattedWalletConnectCode from '../../code-examples/wallet-connect-code.mdx'; import FormattedWalletSendTokensCode from '../../code-examples/wallet-sendTokens-code.mdx'; @@ -17,4 +17,3 @@ Here's a small wallet example using testnet for you to test out! - From 8fa54c4ad50c0912c3138761a90a27c8f5c6f8a6 Mon Sep 17 00:00:00 2001 From: Gala Date: Mon, 9 Oct 2023 16:10:07 +0200 Subject: [PATCH 079/347] wrapping all wallet comp with wallet provider --- sdk/typescript/docs/components/wallet.tsx | 53 ------------------- .../docs/components/wallet/delegations.tsx | 41 +++++--------- .../docs/components/wallet/sendTokens.tsx | 22 ++++++-- .../wallet/utils/wallet.context.tsx | 43 ++++++--------- .../components/wallet/utils/wallet.methods.ts | 2 +- .../docs/pages/playground/wallet.mdx | 21 +++++--- 6 files changed, 62 insertions(+), 120 deletions(-) delete mode 100644 sdk/typescript/docs/components/wallet.tsx diff --git a/sdk/typescript/docs/components/wallet.tsx b/sdk/typescript/docs/components/wallet.tsx deleted file mode 100644 index a6086ad272..0000000000 --- a/sdk/typescript/docs/components/wallet.tsx +++ /dev/null @@ -1,53 +0,0 @@ -import React from 'react'; -import Box from '@mui/material/Box'; -import Typography from '@mui/material/Typography'; -import { ConnectWallet } from './wallet/connect'; -import { SendTokes } from './wallet/sendTokens'; -import { Delegations } from './wallet/delegations'; -import { WalletContextProvider, useWalletContext } from './wallet/utils/wallet.context'; - -export const LogUI = () => { - const { log } = useWalletContext(); - React.useEffect(() => { - console.log('log', log); - }, [log]); - return ( - log.length > 0 && ( - - Transaction Logs: - {log} - - ) - ); -}; - -export const Log = () => ( - - - -); - -export const Wallet = ({ type }: { type: 'connect' | 'sendTokens' | 'delegations' | 'logs' }) => { - const [component, setComponent] = React.useState(); - - React.useEffect(() => { - switch (type) { - case 'connect': - setComponent(); - break; - case 'sendTokens': - setComponent(); - break; - case 'delegations': - setComponent(); - break; - default: - null; - } - }, [type]); - return ( - - {component} - - ); -}; diff --git a/sdk/typescript/docs/components/wallet/delegations.tsx b/sdk/typescript/docs/components/wallet/delegations.tsx index 6adb76680b..94bace445d 100644 --- a/sdk/typescript/docs/components/wallet/delegations.tsx +++ b/sdk/typescript/docs/components/wallet/delegations.tsx @@ -6,26 +6,22 @@ import { TableBody, TableCell, TableHead, TableRow, TextField, Typography } from import Table from '@mui/material/Table'; import { useWalletContext, WalletContextProvider } from './utils/wallet.context'; -const DelegationsComponent = () => { - const { - delegations, - doDelegate, - delegationLoader, - withdrawLoading, - withdrawRewards, - unDelegateAll, - unDelegateAllLoading, - log, - } = useWalletContext(); +export const Delegations = () => { + const { delegations, doDelegate, delegationLoader, unDelegateAll, unDelegateAllLoading, log } = useWalletContext(); + const [delegationNodeId, setDelegationNodeId] = useState(); const [amountToBeDelegated, setAmountToBeDelegated] = useState(); + const cleanFields = () => { + setDelegationNodeId(''); + setAmountToBeDelegated(''); + }; + useEffect(() => { return () => { - setDelegationNodeId(''); - setAmountToBeDelegated(''); + cleanFields(); }; - }, [delegations]); + }, []); return ( @@ -53,9 +49,8 @@ const DelegationsComponent = () => {